diff --git a/.github/actions/build-push-image/action.yml b/.github/actions/build-push-image/action.yml index fead9cfe336933dbde9a936e49b44fe1cf1396ed..801fdeba42ade623b23a957fd578e439ca4ec873 100644 --- a/.github/actions/build-push-image/action.yml +++ b/.github/actions/build-push-image/action.yml @@ -1,4 +1,4 @@ -name: 'build and push image' +name: "build and push image" inputs: dockerfile: description: "dockerfile to build" @@ -8,14 +8,12 @@ inputs: required: true outputs: branch: - description: 'Branch name for the PR' + description: "Branch name for the PR" value: ${{ steps.branch.outputs.branch }} - runs: using: "composite" steps: - # gcloud # https://github.com/paritytech/ci_cd/wiki/GitHub:-Push-Docker-image-to-GCP-Registry - name: "Set up Cloud SDK" @@ -25,15 +23,14 @@ runs: run: "gcloud info" - name: "Auth in gcloud registry" shell: bash - run: "gcloud auth configure-docker europe-docker.pkg.dev --quiet" + run: "gcloud auth configure-docker europe-docker.pkg.dev --quiet" - name: build shell: bash env: ZOMBIENET_IMAGE: "docker.io/paritytech/zombienet:v1.3.105" run: | - export BRANCH_NAME=${{ github.head_ref || github.ref_name }} - export DOCKER_IMAGES_VERSION=${BRANCH_NAME/\//-} + export DOCKER_IMAGES_VERSION=${{ github.event.pull_request.head.sha }} if [[ ${{ github.event_name }} == "merge_group" ]]; then export DOCKER_IMAGES_VERSION="${GITHUB_SHA::8}"; fi docker build \ --build-arg VCS_REF="${GITHUB_SHA}" \ @@ -44,4 +41,3 @@ runs: -f ${{ inputs.dockerfile }} \ . docker push "${{ inputs.image-name }}:$DOCKER_IMAGES_VERSION" - diff --git a/.github/scripts/release/build-linux-release.sh b/.github/scripts/release/build-linux-release.sh index 874c9b44788b31433ced1d42b2819f8202b66aa2..413a3274edf30a224f4aac1d07f9a3cf29aa175b 100755 --- a/.github/scripts/release/build-linux-release.sh +++ b/.github/scripts/release/build-linux-release.sh @@ -3,7 +3,7 @@ # This is used to build our binaries: # - polkadot # - polkadot-parachain -# - polkadot-omni-node +# - polkadot-omni-node # # set -e @@ -12,7 +12,6 @@ PACKAGE=${2:-$BIN} PROFILE=${PROFILE:-production} ARTIFACTS=/artifacts/$BIN -VERSION=$(git tag -l --contains HEAD | grep -E "^v.*") echo "Artifacts will be copied into $ARTIFACTS" mkdir -p "$ARTIFACTS" @@ -25,10 +24,10 @@ echo "Artifact target: $ARTIFACTS" cp ./target/$PROFILE/$BIN "$ARTIFACTS" pushd "$ARTIFACTS" > /dev/null sha256sum "$BIN" | tee "$BIN.sha256" - -EXTRATAG="$($ARTIFACTS/$BIN --version | +chmod a+x "$BIN" +VERSION="$($ARTIFACTS/$BIN --version)" +EXTRATAG="$(echo "${VERSION}" | sed -n -r 's/^'$BIN' ([0-9.]+.*-[0-9a-f]{7,13})-.*$/\1/p')" - EXTRATAG="${VERSION}-${EXTRATAG}-$(cut -c 1-8 $ARTIFACTS/$BIN.sha256)" echo "$BIN version = ${VERSION} (EXTRATAG = ${EXTRATAG})" diff --git a/.github/workflows/build-publish-eth-rpc.yml b/.github/workflows/build-publish-eth-rpc.yml index a98b3881a14534c8d316f2dcc8b4bae7e05ce707..621ac3cd44c3c49d474f420979f2d318720c18ca 100644 --- a/.github/workflows/build-publish-eth-rpc.yml +++ b/.github/workflows/build-publish-eth-rpc.yml @@ -13,7 +13,6 @@ concurrency: env: ETH_RPC_IMAGE_NAME: "docker.io/paritypr/eth-rpc" - ETH_INDEXER_IMAGE_NAME: "docker.io/paritypr/eth-indexer" jobs: set-variables: @@ -53,15 +52,6 @@ jobs: tags: | ${{ env.ETH_RPC_IMAGE_NAME }}:${{ env.VERSION }} - - name: Build eth-indexer Docker image - uses: docker/build-push-action@v6 - with: - context: . - file: ./substrate/frame/revive/rpc/dockerfiles/eth-indexer/Dockerfile - push: false - tags: | - ${{ env.ETH_INDEXER_IMAGE_NAME }}:${{ env.VERSION }} - build_push_docker: name: Build and push docker images runs-on: parity-large @@ -88,11 +78,3 @@ jobs: tags: | ${{ env.ETH_RPC_IMAGE_NAME }}:${{ env.VERSION }} - - name: Build eth-indexer Docker image - uses: docker/build-push-action@v6 - with: - context: . - file: ./substrate/frame/revive/rpc/dockerfiles/eth-indexer/Dockerfile - push: true - tags: | - ${{ env.ETH_INDEXER_IMAGE_NAME }}:${{ env.VERSION }} diff --git a/.github/workflows/build-publish-images.yml b/.github/workflows/build-publish-images.yml index deb3b3df5ff2f6d0c13e038cb6291e958a9c879a..5ee02151f8dbac55cdfc0c9801eeae6406f01ca4 100644 --- a/.github/workflows/build-publish-images.yml +++ b/.github/workflows/build-publish-images.yml @@ -19,8 +19,6 @@ jobs: # # preflight: - ## TODO: remove when ready - if: contains(github.event.label.name, 'GHA-migration') || contains(github.event.pull_request.labels.*.name, 'GHA-migration') uses: ./.github/workflows/reusable-preflight.yml ### Build ######################## diff --git a/.github/workflows/check-licenses.yml b/.github/workflows/check-licenses.yml index 21e2756e8b7669f60f7615fdb4ffbfb77dcc8d08..9492d06c7fcf93dac1d4741bb2b4580d9e187dee 100644 --- a/.github/workflows/check-licenses.yml +++ b/.github/workflows/check-licenses.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 env: - LICENSES: "'Apache-2.0' 'GPL-3.0-only' 'GPL-3.0-or-later WITH Classpath-exception-2.0'" + LICENSES: "'Apache-2.0' 'GPL-3.0-only' 'GPL-3.0-or-later WITH Classpath-exception-2.0' 'MIT-0' 'Unlicense'" NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout sources @@ -32,21 +32,24 @@ jobs: shopt -s globstar npx @paritytech/license-scanner scan \ --ensure-licenses ${{ env.LICENSES }} \ - -- ./polkadot/**/*.rs + --file-extensions '.rs' \ + -- ./polkadot - name: Check the licenses in Cumulus run: | shopt -s globstar npx @paritytech/license-scanner scan \ - --ensure-licenses ${{ env.LICENSES }} \ - -- ./cumulus/**/*.rs + --ensure-licenses ${{ env.LICENSES }} 'Unlicense' \ + --file-extensions '.rs' \ + -- ./cumulus - name: Check the licenses in Substrate run: | shopt -s globstar npx @paritytech/license-scanner scan \ --ensure-licenses ${{ env.LICENSES }} \ - -- ./substrate/**/*.rs + --file-extensions '.rs' \ + -- ./substrate check-product-references: runs-on: ubuntu-latest @@ -67,18 +70,21 @@ jobs: shopt -s globstar npx @paritytech/license-scanner scan \ --ensure-product 'Polkadot' \ - -- ./polkadot/**/*.rs + --file-extensions '.rs' \ + -- ./polkadot - name: Check the product references in Cumulus run: | shopt -s globstar npx @paritytech/license-scanner scan \ --ensure-product 'Cumulus' \ - -- ./cumulus/**/*.rs + --file-extensions '.rs' \ + -- ./cumulus - name: Check the product references in Substrate run: | shopt -s globstar npx @paritytech/license-scanner scan \ --ensure-product 'Substrate' \ - -- ./substrate/**/*.rs + --file-extensions '.rs' \ + -- ./substrate diff --git a/.github/workflows/release-build-binary.yml b/.github/workflows/release-build-binary.yml new file mode 100644 index 0000000000000000000000000000000000000000..59a8f9da7cc9230016c247192396417ef4133cb4 --- /dev/null +++ b/.github/workflows/release-build-binary.yml @@ -0,0 +1,76 @@ +name: Binary Build +# This workflow can be used to build a binary like polkadot + workers, omninode or polkadot-parachain +# from any branch with release or profuction profile to be later used for testing. +# âš ï¸ IT should not be used for release purposes! + +on: + workflow_dispatch: + inputs: + binary: + required: true + default: "polkadot" + description: "The binary to build" + package: + description: Package to be built, can be polkadot, polkadot-parachain-bin, polkadot-omni-node etc. + required: true + type: string + profile: + required: true + default: "release" + description: "The profile to use for the binary build" + +jobs: + + setup: + # GitHub Actions allows using 'env' in a container context. + # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322 + # This workaround sets the container image for each job using 'set-image' job output. + runs-on: ubuntu-latest + outputs: + IMAGE: ${{ steps.set_image.outputs.IMAGE }} + RUNNER: ${{ steps.set_runner.outputs.RUNNER }} + steps: + - name: Checkout + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + + - name: Set image + id: set_image + run: cat .github/env >> $GITHUB_OUTPUT + + - name: Set runner + id: set_runner + shell: bash + run: | + if [[ "${{ inputs.binary }}" == "polkadot-parachain" ]]; then + echo "RUNNER=parity-large" >> $GITHUB_OUTPUT + else + echo "RUNNER=ubuntu-latest" >> $GITHUB_OUTPUT + fi + + build: + needs: [setup] + runs-on: ${{ needs.setup.outputs.RUNNER }} + container: + image: ${{ needs.setup.outputs.IMAGE }} + steps: + - name: Checkout + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + + - name: Build binary + run: | + git config --global --add safe.directory "${GITHUB_WORKSPACE}" #avoid "detected dubious ownership" error + PROFILE=${{ inputs.profile }} + if [ "${{ inputs.binary }}" = "polkadot" ]; then + for binary in polkadot polkadot-prepare-worker polkadot-execute-worker; do + echo "Building $binary..." + ./.github/scripts/release/build-linux-release.sh $binary ${{ inputs.package }} "${PROFILE}" + done + else + ./.github/scripts/release/build-linux-release.sh ${{ inputs.binary }} ${{ inputs.package }} "${PROFILE}" + fi + + - name: Upload ${{ inputs.binary }} artifacts + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + with: + name: ${{ inputs.binary }} + path: /artifacts/** diff --git a/.github/workflows/zombienet-reusable-preflight.yml b/.github/workflows/zombienet-reusable-preflight.yml index 8e938567d8118ad6d68eb91108281fd20e72b26f..f5ac43741ad62695771b39e09c904798adc62600 100644 --- a/.github/workflows/zombienet-reusable-preflight.yml +++ b/.github/workflows/zombienet-reusable-preflight.yml @@ -20,6 +20,28 @@ on: outputs: changes_substrate: value: ${{ jobs.preflight.outputs.changes_substrate }} + description: | + True iff there are changes in substrate directory or the current workflow + + changes_cumulus: + value: ${{ jobs.preflight.outputs.changes_cumulus }} + description: | + True iff there are changes in cumulus directory or the current workflow + + changes_polkadot: + value: ${{ jobs.preflight.outputs.changes_polkadot }} + description: | + True iff there are changes in polkadot directory or the current workflow + + changes_bridges: + value: ${{ jobs.preflight.outputs.changes_bridges }} + description: | + True iff there are changes in bridges directory or the current workflow + + changes_templates: + value: ${{ jobs.preflight.outputs.changes_templates }} + description: | + True iff there are changes in templates directory or the current workflow ZOMBIENET_IMAGE: value: ${{ jobs.preflight.outputs.ZOMBIENET_IMAGE }} @@ -30,14 +52,18 @@ on: description: | Main runner for zombienet tests. + TEMP_IMAGES_BASE: + value: ${{ jobs.preflight.outputs.TEMP_IMAGES_BASE }} + description: | + Base location for 'temp' images used in tests. + DOCKER_IMAGES_VERSION: value: ${{ jobs.preflight.outputs.DOCKER_IMAGES_VERSION }} description: | Version for temp docker images. - # Global vars (from global preflight) SOURCE_REF_SLUG: - value: ${{ jobs.global_preflight.outputs.SOURCE_REF_SLUG }} + value: ${{ jobs.preflight.outputs.SOURCE_REF_SLUG }} # Zombie vars PUSHGATEWAY_URL: @@ -65,9 +91,6 @@ on: description: "Base memory (request) for pod runner." jobs: - global_preflight: - uses: ./.github/workflows/reusable-preflight.yml - # # # @@ -75,14 +98,22 @@ jobs: runs-on: ubuntu-latest outputs: changes_substrate: ${{ steps.set_changes.outputs.substrate_any_changed || steps.set_changes.outputs.currentWorkflow_any_changed }} + changes_cumulus: ${{ steps.set_changes.outputs.cumulus_any_changed || steps.set_changes.outputs.currentWorkflow_any_changed }} + changes_polkadot: ${{ steps.set_changes.outputs.polkadot_any_changed || steps.set_changes.outputs.currentWorkflow_any_changed }} + changes_bridges: ${{ steps.set_changes.outputs.bridges_any_changed || steps.set_changes.outputs.currentWorkflow_any_changed }} + changes_templates: ${{ steps.set_changes.outputs.templates_any_changed || steps.set_changes.outputs.currentWorkflow_any_changed }} ZOMBIENET_IMAGE: ${{ steps.set_vars.outputs.ZOMBIENET_IMAGE }} ZOMBIENET_RUNNER: ${{ steps.set_vars.outputs.ZOMBIENET_RUNNER }} - DOCKER_IMAGES_VERSION: ${{ steps.set_images_version.outputs.ZOMBIENET_RUNNER }} + TEMP_IMAGES_BASE: ${{ steps.set_vars.outputs.TEMP_IMAGES_BASE }} + + # images versions + DOCKER_IMAGES_VERSION: ${{ steps.set_images_version.outputs.DOCKER_IMAGES_VERSION }} # common vars PUSHGATEWAY_URL: ${{ steps.set_vars.outputs.PUSHGATEWAY_URL }} + SOURCE_REF_SLUG: ${{ steps.set_vars.outputs.SOURCE_REF_SLUG }} DEBUG: ${{ steps.set_vars.outputs.DEBUG }} ZOMBIE_PROVIDER: ${{ steps.set_vars.outputs.ZOMBIE_PROVIDER }} RUST_LOG: ${{ steps.set_vars.outputs.RUST_LOG }} @@ -91,7 +122,6 @@ jobs: KUBERNETES_MEMORY_REQUEST: ${{ steps.set_vars.outputs.KUBERNETES_MEMORY_REQUEST }} steps: - - uses: actions/checkout@v4 # @@ -111,20 +141,31 @@ jobs: files_yaml: | substrate: - 'substrate/**/*' + cumulus: + - 'cumulus/**/*' + polkadot: + - 'polkadot/**/*' + bridges: + - 'bridges/**/*' + templates: + - 'templates/**/*' currentWorkflow: - '${{ steps.current_file.outputs.currentWorkflowFile }}' - '.github/workflows/zombienet-reusable-preflight.yml' - '.github/zombienet-env' - # # Set environment vars (including runner/image) # - name: Set vars id: set_vars shell: bash - run: cat .github/env >> $GITHUB_OUTPUT - + run: | + export SOURCE_REF_NAME=${{ github.head_ref || github.ref_name }} + echo "SOURCE_REF_SLUG=${SOURCE_REF_NAME//\//_}" >> $GITHUB_OUTPUT + # + cat .github/zombienet-env >> $GITHUB_OUTPUT + cat .github/zombienet-env # # @@ -133,8 +174,7 @@ jobs: id: set_images_version shell: bash run: | - export BRANCH_NAME=${{ github.head_ref || github.ref_name }} - export DOCKER_IMAGES_VERSION=${BRANCH_NAME/\//-} + export DOCKER_IMAGES_VERSION=${{ github.event.pull_request.head.sha }} if [[ ${{ github.event_name }} == "merge_group" ]]; then export DOCKER_IMAGES_VERSION="${GITHUB_SHA::8}"; fi echo "DOCKER_IMAGES_VERSION=${DOCKER_IMAGES_VERSION}" >> $GITHUB_OUTPUT @@ -142,4 +182,61 @@ jobs: shell: bash run: | echo "workflow file: ${{ steps.current_file.outputs.currentWorkflowFile }}" - echo "Modified: ${{ steps.set_changes.outputs.modified_keys }}" \ No newline at end of file + echo "Modified: ${{ steps.set_changes.outputs.modified_keys }}" + echo "ZOMBIENET_IMAGE: ${{ steps.set_vars.outputs.ZOMBIENET_IMAGE }}" + + # + # + # + ci-env: + needs: [preflight] + runs-on: ubuntu-latest + steps: + - name: Info vars + run: | + echo "ZOMBIENET_IMAGE: ${{ needs.preflight.outputs.ZOMBIENET_IMAGE }}" + echo "ZOMBIENET_RUNNER: ${{ needs.preflight.outputs.ZOMBIENET_RUNNER }}" + echo "DOCKER_IMAGES_VERSION: ${{ needs.preflight.outputs.DOCKER_IMAGES_VERSION }}" + echo "SOURCE_REF_SLUG: ${{ needs.preflight.outputs.SOURCE_REF_SLUG }}" + echo "PUSHGATEWAY_URL: ${{ needs.preflight.outputs.PUSHGATEWAY_URL }}" + echo "DEBUG: ${{ needs.preflight.outputs.DEBUG }}" + echo "ZOMBIE_PROVIDER: ${{ needs.preflight.outputs.ZOMBIE_PROVIDER }}" + echo "RUST_LOG: ${{ needs.preflight.outputs.RUST_LOG }}" + echo "RUN_IN_CI: ${{ needs.preflight.outputs.RUN_IN_CI }}" + echo "KUBERNETES_CPU_REQUEST: ${{ needs.preflight.outputs.KUBERNETES_CPU_REQUEST }}" + echo "KUBERNETES_MEMORY_REQUEST: ${{ needs.preflight.outputs.KUBERNETES_MEMORY_REQUEST }}" + # + echo "github.ref: ${{ github.ref }}" + echo "github.ref_name: ${{ github.ref_name }}" + echo "github.sha: ${{ github.sha }}" + # + # + # Wait until the 'build and push' image workflow success + wait_build_images: + needs: [ci-env] + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Wait until "Build and push images" workflow is done + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh --version + export SHA=${{ github.event.pull_request.head.sha }} + if [[ ${{ github.event_name }} == "merge_group" ]]; then export SHA="${GITHUB_SHA::8}"; fi + while true; do + STATUS=$(gh run ls -c $SHA -w "Build and push images" --json name,status --jq '.[] | select(.name == "Build and push images") | .status') + echo "CI workflow status: $STATUS" + if [[ $STATUS == "completed" ]]; then + echo "CI workflow is done." + break + fi + if [[ -z "$STATUS" ]]; then + echo "::warning::No CI workflow runs found for this commit" + exit 1 + fi + sleep 10 + done + echo "CI workflow is done." diff --git a/.github/workflows/zombienet_substrate.yml b/.github/workflows/zombienet_substrate.yml index 823679d67d5c0adc204a2fc15360fdab561a4c17..358438caa8afe7ddb65dff67cfc05c869c9742a1 100644 --- a/.github/workflows/zombienet_substrate.yml +++ b/.github/workflows/zombienet_substrate.yml @@ -1,15 +1,28 @@ name: Zombienet Substrate on: - workflow_run: - workflows: [Build and push images] - types: [completed] + push: + branches: + - master + pull_request: + types: [opened, synchronize, reopened, ready_for_review] merge_group: - workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true +env: + RUN_IN_CONTAINER: 1 + FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: 1 + LOCAL_DIR: "./substrate/zombienet" + GHA_CLUSTER_SERVER_ADDR: "https://kubernetes.default:443" + + # DB generated from commit: https://github.com/paritytech/polkadot-sdk/commit/868788a5bff3ef94869bd36432726703fe3b4e96 + # TODO: As a workaround for https://github.com/paritytech/polkadot-sdk/issues/2568 the DB was generated in archive mode. + # After the issue is fixed, we should replace it with a pruned version of the DB. + DB_SNAPSHOT: "https://storage.googleapis.com/zombienet-db-snaps/substrate/0001-basic-warp-sync/chains-9677807d738b951e9f6c82e5fd15518eb0ae0419.tgz" + DB_BLOCK_HEIGHT: 56687 + jobs: preflight: uses: ./.github/workflows/zombienet-reusable-preflight.yml @@ -17,29 +30,109 @@ jobs: zombienet-substrate-0000-block-building: needs: [preflight] # only run if we have changes in ./substrate directory and the build workflow already finish with success status. - if: ${{ needs.preflight.outputs.changes_substrate && github.event.workflow_run.conclusion == 'success' }} - runs-on: ${{ needs.preflight.outputs.ZOMBIENET_RUNNER }} + if: ${{ needs.preflight.outputs.changes_substrate || github.event_name == 'workflow_dispatch' }} + runs-on: ${{ needs.preflight.outputs.ZOMBIENET_RUNNER }} # NOTE: should be zombienet-arc-runner (without quotes) timeout-minutes: 60 container: image: ${{ needs.preflight.outputs.ZOMBIENET_IMAGE }} env: - FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: 1 - LOCAL_DIR: "./substrate/zombienet" + ZOMBIENET_INTEGRATION_TEST_IMAGE: "${{ needs.preflight.outputs.TEMP_IMAGES_BASE }}/substrate:${{ needs.preflight.outputs.DOCKER_IMAGES_VERSION }}" steps: - name: Checkout uses: actions/checkout@v4 - - uses: actions/download-artifact@v4.1.8 + - name: script + run: | + echo "Img: $ZOMBIENET_INTEGRATION_TEST_IMAGE" + export DEBUG=${{ needs.preflight.outputs.DEBUG }} + /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh --local-dir="$(pwd)/$LOCAL_DIR/0000-block-building" --test="block-building.zndsl" + + - name: upload logs + uses: actions/upload-artifact@v4 with: - name: build-linux-substrate-${{ needs.preflight.outputs.SOURCE_REF_NAME }} + name: zombienet-logs-${{ github.job }}-${{ github.sha }} + path: | + /tmp/zombie*/logs/* + + zombienet-substrate-0001-basic-warp-sync: + needs: [preflight] + # only run if we have changes in ./substrate directory and the build workflow already finish with success status. + if: ${{ needs.preflight.outputs.changes_substrate || github.event_name == 'workflow_dispatch' }} + runs-on: ${{ needs.preflight.outputs.ZOMBIENET_RUNNER }} # NOTE: should be zombienet-arc-runner (without quotes) + timeout-minutes: 60 + container: + image: ${{ needs.preflight.outputs.ZOMBIENET_IMAGE }} + env: + ZOMBIENET_INTEGRATION_TEST_IMAGE: "${{ needs.preflight.outputs.TEMP_IMAGES_BASE }}/substrate:${{ needs.preflight.outputs.DOCKER_IMAGES_VERSION }}" + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: script + run: | + echo "Img: $ZOMBIENET_INTEGRATION_TEST_IMAGE" + export DEBUG=${{ needs.preflight.outputs.DEBUG }} + /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh --local-dir="$(pwd)/$LOCAL_DIR/0001-basic-warp-sync" --test="test-warp-sync.zndsl" + + - name: upload logs + uses: actions/upload-artifact@v4 + with: + name: zombienet-logs-${{ github.job }}-${{ github.sha }} + path: | + /tmp/zombie*/logs/* + + zombienet-substrate-0002-validators-warp-sync: + needs: [preflight] + # only run if we have changes in ./substrate directory and the build workflow already finish with success status. + if: ${{ needs.preflight.outputs.changes_substrate || github.event_name == 'workflow_dispatch' }} + runs-on: ${{ needs.preflight.outputs.ZOMBIENET_RUNNER }} # NOTE: should be zombienet-arc-runner (without quotes) + timeout-minutes: 60 + container: + image: ${{ needs.preflight.outputs.ZOMBIENET_IMAGE }} + env: + ZOMBIENET_INTEGRATION_TEST_IMAGE: "${{ needs.preflight.outputs.TEMP_IMAGES_BASE }}/substrate:${{ needs.preflight.outputs.DOCKER_IMAGES_VERSION }}" + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: script + run: | + echo "Img: $ZOMBIENET_INTEGRATION_TEST_IMAGE" + cp --remove-destination ${LOCAL_DIR}/0001-basic-warp-sync/chain-spec.json ${LOCAL_DIR}/0002-validators-warp-sync + export DEBUG=${{ needs.preflight.outputs.DEBUG }} + /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh --local-dir="$(pwd)/$LOCAL_DIR/0002-validators-warp-sync" --test="test-validators-warp-sync.zndsl" + + - name: upload logs + uses: actions/upload-artifact@v4 + with: + name: zombienet-logs-${{ github.job }}-${{ github.sha }} + path: | + /tmp/zombie*/logs/* + + zombienet-substrate-0003-block-building-warp-sync: + needs: [preflight] + # only run if we have changes in ./substrate directory and the build workflow already finish with success status. + if: ${{ needs.preflight.outputs.changes_substrate || github.event_name == 'workflow_dispatch' }} + runs-on: ${{ needs.preflight.outputs.ZOMBIENET_RUNNER }} # NOTE: should be zombienet-arc-runner (without quotes) + timeout-minutes: 60 + container: + image: ${{ needs.preflight.outputs.ZOMBIENET_IMAGE }} + env: + ZOMBIENET_INTEGRATION_TEST_IMAGE: "${{ needs.preflight.outputs.TEMP_IMAGES_BASE }}/substrate:${{ needs.preflight.outputs.DOCKER_IMAGES_VERSION }}" + steps: + - name: Checkout + uses: actions/checkout@v4 - name: script run: | - DEBUG=${{ needs.preflight.outputs.DEBUG }} zombie -p native ${LOCAL_DIR}/0000-block-building/block-building.zndsl + echo "Img: $ZOMBIENET_INTEGRATION_TEST_IMAGE" + cp --remove-destination ${LOCAL_DIR}/0001-basic-warp-sync/chain-spec.json ${LOCAL_DIR}/0003-block-building-warp-sync + export DEBUG=${{ needs.preflight.outputs.DEBUG }} + /home/nonroot/zombie-net/scripts/ci/run-test-local-env-manager.sh --local-dir="$(pwd)/$LOCAL_DIR/0003-block-building-warp-sync" --test="test-block-building-warp-sync.zndsl" - name: upload logs uses: actions/upload-artifact@v4 with: - name: zombienet-logs-scale-net + name: zombienet-logs-${{ github.job }}-${{ github.sha }} path: | /tmp/zombie*/logs/* diff --git a/.github/zombienet-env b/.github/zombienet-env index e6da1a49c4bb38602bdc9d7a21623ed136dee61b..565a91a8d71b8ae0a6693f65b96dba0188c91b3b 100644 --- a/.github/zombienet-env +++ b/.github/zombienet-env @@ -1,9 +1,10 @@ - ZOMBIENET_IMAGE="docker.io/paritytech/zombienet:v1.3.116" - ZOMBIE_RUNNER="zombienet-arc-runner" - PUSHGATEWAY_URL="http://zombienet-prometheus-pushgateway.managed-monitoring:9091/metrics/job/zombie-metrics" - DEBUG="zombie,zombie::network-node,zombie::kube::client::logs" - ZOMBIE_PROVIDER="k8s" - RUST_LOG="info,zombienet_orchestrator=debug" - RUN_IN_CI="1" - KUBERNETES_CPU_REQUEST="512m" - KUBERNETES_MEMORY_REQUEST="1Gi" +ZOMBIENET_IMAGE=docker.io/paritytech/zombienet:v1.3.119 +ZOMBIENET_RUNNER=zombienet-arc-runner +PUSHGATEWAY_URL=http://zombienet-prometheus-pushgateway.managed-monitoring:9091/metrics/job/zombie-metrics +DEBUG=zombie,zombie::network-node,zombie::kube::client::logs +ZOMBIE_PROVIDER=k8s +RUST_LOG=info,zombienet_orchestrator=debug +RUN_IN_CI=1 +KUBERNETES_CPU_REQUEST=512m +KUBERNETES_MEMORY_REQUEST=1Gi +TEMP_IMAGES_BASE=europe-docker.pkg.dev/parity-ci-2024/temp-images diff --git a/.gitlab/pipeline/zombienet.yml b/.gitlab/pipeline/zombienet.yml index c48bca8af48be43c34a5976ea23d6aa8d3ccf761..227787173f8de448cbf2c0d8e1511bbce43985e6 100644 --- a/.gitlab/pipeline/zombienet.yml +++ b/.gitlab/pipeline/zombienet.yml @@ -1,7 +1,7 @@ .zombienet-refs: extends: .build-refs variables: - ZOMBIENET_IMAGE: "docker.io/paritytech/zombienet:v1.3.119" + ZOMBIENET_IMAGE: "docker.io/paritytech/zombienet:v1.3.120" PUSHGATEWAY_URL: "http://zombienet-prometheus-pushgateway.managed-monitoring:9091/metrics/job/zombie-metrics" DEBUG: "zombie,zombie::network-node,zombie::kube::client::logs" ZOMBIE_PROVIDER: "k8s" diff --git a/Cargo.lock b/Cargo.lock index eefa6e11a22182ceca4809c78d36ed499ce94fd6..9a8e3d25559a3fee1e86eaeda596f750774e27f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1125,6 +1125,7 @@ dependencies = [ "pallet-balances 28.0.0", "pallet-collator-selection 9.0.0", "pallet-message-queue 31.0.0", + "pallet-migrations 1.0.0", "pallet-multisig 28.0.0", "pallet-nft-fractionalization 10.0.0", "pallet-nfts 22.0.0", @@ -8673,9 +8674,9 @@ checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" [[package]] name = "httparse" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -8715,9 +8716,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.3.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -8758,7 +8759,7 @@ checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.3.1", + "hyper 1.6.0", "hyper-util", "log", "rustls 0.23.18", @@ -8797,20 +8798,19 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.5" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", "http-body 1.0.0", - "hyper 1.3.1", + "hyper 1.6.0", "pin-project-lite", "socket2 0.5.7", "tokio", - "tower", "tower-service", "tracing", ] @@ -9414,7 +9414,7 @@ dependencies = [ "async-trait", "base64 0.22.1", "http-body 1.0.0", - "hyper 1.3.1", + "hyper 1.6.0", "hyper-rustls 0.27.3", "hyper-util", "jsonrpsee-core", @@ -9453,7 +9453,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.0", "http-body-util", - "hyper 1.3.1", + "hyper 1.6.0", "hyper-util", "jsonrpsee-core", "jsonrpsee-types", @@ -14014,6 +14014,7 @@ dependencies = [ "impl-trait-for-tuples", "log", "parity-scale-codec", + "polkadot-sdk-frame 0.1.0", "pretty_assertions", "scale-info", "sp-api 26.0.0", @@ -14894,6 +14895,7 @@ dependencies = [ "pallet-revive 0.1.0", "pallet-revive-fixtures 0.1.0", "parity-scale-codec", + "pretty_assertions", "rlp 0.6.1", "sc-cli", "sc-rpc", @@ -17902,7 +17904,7 @@ dependencies = [ "futures", "futures-timer", "http-body-util", - "hyper 1.3.1", + "hyper 1.6.0", "hyper-util", "log", "parity-scale-codec", @@ -18125,6 +18127,7 @@ dependencies = [ "sc-consensus-manual-seal", "sc-executor 0.32.0", "sc-network", + "sc-offchain", "sc-rpc", "sc-runtime-utilities", "sc-service", @@ -18132,6 +18135,7 @@ dependencies = [ "sc-telemetry", "sc-tracing", "sc-transaction-pool", + "sc-transaction-pool-api", "scale-info", "serde", "serde_json", @@ -18144,6 +18148,7 @@ dependencies = [ "sp-genesis-builder 0.8.0", "sp-inherents 26.0.0", "sp-keystore 0.34.0", + "sp-offchain 26.0.0", "sp-runtime 31.0.1", "sp-session 27.0.0", "sp-storage 19.0.0", @@ -21339,7 +21344,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.0", "http-body-util", - "hyper 1.3.1", + "hyper 1.6.0", "hyper-rustls 0.27.3", "hyper-util", "ipnet", @@ -23348,7 +23353,7 @@ dependencies = [ "futures", "futures-timer", "http-body-util", - "hyper 1.3.1", + "hyper 1.6.0", "hyper-rustls 0.27.3", "hyper-util", "log", @@ -23458,7 +23463,7 @@ dependencies = [ "governor", "http 1.1.0", "http-body-util", - "hyper 1.3.1", + "hyper 1.6.0", "ip_network", "jsonrpsee", "log", @@ -28682,7 +28687,7 @@ name = "substrate-prometheus-endpoint" version = "0.17.0" dependencies = [ "http-body-util", - "hyper 1.3.1", + "hyper 1.6.0", "hyper-util", "log", "prometheus", diff --git a/README.md b/README.md index 24352cc28a1a98bed2719583ecc0d2a37ae12399..79c1c8ec88468b0e25cb1a3a314ff333e5cc11aa 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,9 @@ curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/paritytec ## 📚 Documentation -* [🦀 rust-docs](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/index.html) +* [Polkadot Documentation Portal](https://docs.polkadot.com) +* [🦀 rust-docs](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/index.html): Where we keep track of +the API docs of our Rust crates. Includes: * [Introduction](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/index.html) to each component of the Polkadot SDK: Substrate, FRAME, Cumulus, and XCM * [Guides](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/guides/index.html), diff --git a/bridges/testing/environments/rococo-westend/bridge_hub_rococo_local_network.toml b/bridges/testing/environments/rococo-westend/bridge_hub_rococo_local_network.toml index f59f689bf6b5c40a09854b93eb7927fc4b5929c9..0d17ccd0f99f5c07d220a5f6675202e1aea27ae4 100644 --- a/bridges/testing/environments/rococo-westend/bridge_hub_rococo_local_network.toml +++ b/bridges/testing/environments/rococo-westend/bridge_hub_rococo_local_network.toml @@ -9,22 +9,19 @@ chain = "rococo-local" [[relaychain.nodes]] name = "alice-rococo-validator" validator = true - rpc_port = 9932 - ws_port = 9942 + rpc_port = 9942 balance = 2000000000000 [[relaychain.nodes]] name = "bob-rococo-validator" validator = true - rpc_port = 9933 - ws_port = 9943 + rpc_port = 9943 balance = 2000000000000 [[relaychain.nodes]] name = "charlie-rococo-validator" validator = true - rpc_port = 9934 - ws_port = 9944 + rpc_port = 9944 balance = 2000000000000 [[parachains]] @@ -37,8 +34,7 @@ cumulus_based = true name = "bridge-hub-rococo-collator1" validator = true command = "{{POLKADOT_PARACHAIN_BINARY}}" - rpc_port = 8933 - ws_port = 8943 + rpc_port = 8943 args = [ "-lparachain=debug,runtime::bridge=trace,xcm=trace,txpool=trace" ] @@ -48,8 +44,7 @@ cumulus_based = true name = "bridge-hub-rococo-collator2" validator = true command = "{{POLKADOT_PARACHAIN_BINARY}}" - rpc_port = 8934 - ws_port = 8944 + rpc_port = 8944 args = [ "-lparachain=debug,runtime::bridge=trace,xcm=trace,txpool=trace" ] @@ -61,8 +56,7 @@ cumulus_based = true [[parachains.collators]] name = "asset-hub-rococo-collator1" - rpc_port = 9911 - ws_port = 9910 + rpc_port = 9910 command = "{{POLKADOT_PARACHAIN_BINARY}}" args = [ "-lparachain=debug,xcm=trace,runtime::bridge=trace,txpool=trace" diff --git a/bridges/testing/environments/rococo-westend/bridge_hub_westend_local_network.toml b/bridges/testing/environments/rococo-westend/bridge_hub_westend_local_network.toml index 6ab03ad5fe2c380ea4201bf8ef2a2cf405fe314b..ce4630cca985e7b60f9357c9a38d59378149fcae 100644 --- a/bridges/testing/environments/rococo-westend/bridge_hub_westend_local_network.toml +++ b/bridges/testing/environments/rococo-westend/bridge_hub_westend_local_network.toml @@ -9,22 +9,19 @@ chain = "westend-local" [[relaychain.nodes]] name = "alice-westend-validator" validator = true - rpc_port = 9935 - ws_port = 9945 + rpc_port = 9945 balance = 2000000000000 [[relaychain.nodes]] name = "bob-westend-validator" validator = true - rpc_port = 9936 - ws_port = 9946 + rpc_port = 9946 balance = 2000000000000 [[relaychain.nodes]] name = "charlie-westend-validator" validator = true - rpc_port = 9937 - ws_port = 9947 + rpc_port = 9947 balance = 2000000000000 [[parachains]] @@ -37,8 +34,7 @@ cumulus_based = true name = "bridge-hub-westend-collator1" validator = true command = "{{POLKADOT_PARACHAIN_BINARY}}" - rpc_port = 8935 - ws_port = 8945 + rpc_port = 8945 args = [ "-lparachain=debug,runtime::bridge=trace,xcm=trace,txpool=trace" ] @@ -48,8 +44,7 @@ cumulus_based = true name = "bridge-hub-westend-collator2" validator = true command = "{{POLKADOT_PARACHAIN_BINARY}}" - rpc_port = 8936 - ws_port = 8946 + rpc_port = 8946 args = [ "-lparachain=debug,runtime::bridge=trace,xcm=trace,txpool=trace" ] @@ -61,8 +56,7 @@ cumulus_based = true [[parachains.collators]] name = "asset-hub-westend-collator1" - rpc_port = 9011 - ws_port = 9010 + rpc_port = 9010 command = "{{POLKADOT_PARACHAIN_BINARY}}" args = [ "-lparachain=debug,xcm=trace,runtime::bridge=trace,txpool=trace" diff --git a/cumulus/client/cli/src/lib.rs b/cumulus/client/cli/src/lib.rs index b08ad75c430d773bac3e16c746363b2d6cdae27e..94ec48a75e430f5f4f2f9645d16958ecfa0cc406 100644 --- a/cumulus/client/cli/src/lib.rs +++ b/cumulus/client/cli/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! Cumulus CLI library. diff --git a/cumulus/client/collator/src/lib.rs b/cumulus/client/collator/src/lib.rs index 91ff913f263d572a747d966e8d3e3f0154db9f26..04b4682bd20b36e7c2267af728ce8f2d8b7382ed 100644 --- a/cumulus/client/collator/src/lib.rs +++ b/cumulus/client/collator/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! Cumulus Collator implementation for Substrate. diff --git a/cumulus/client/collator/src/service.rs b/cumulus/client/collator/src/service.rs index c06be006fc17fd5153f0c0478a6786692f841ecb..2bbd0a833cb9f84cccb767a4d77072c135c30f5a 100644 --- a/cumulus/client/collator/src/service.rs +++ b/cumulus/client/collator/src/service.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! The Cumulus [`CollatorService`] is a utility struct for performing common //! operations used in parachain consensus/authoring. diff --git a/cumulus/client/consensus/aura/src/collator.rs b/cumulus/client/consensus/aura/src/collator.rs index dc830e463a4f5bca1f39ec82a11d5364b148c675..e71379b8591b257aba925e1042f782d1b3c263d3 100644 --- a/cumulus/client/consensus/aura/src/collator.rs +++ b/cumulus/client/consensus/aura/src/collator.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! The core collator logic for Aura - slot claiming, block proposing, and collation //! packaging. diff --git a/cumulus/client/consensus/aura/src/collators/basic.rs b/cumulus/client/consensus/aura/src/collators/basic.rs index d843483b79fa0fd7d3ad577e191b4836c6a5dceb..10ad3a8ff942134c6ad45efefa9ecc2605e748ef 100644 --- a/cumulus/client/consensus/aura/src/collators/basic.rs +++ b/cumulus/client/consensus/aura/src/collators/basic.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! This provides the option to run a basic relay-chain driven Aura implementation. //! diff --git a/cumulus/client/consensus/aura/src/collators/lookahead.rs b/cumulus/client/consensus/aura/src/collators/lookahead.rs index 7723de5a576a2bd87fe46687b2cf33aba2a931bc..8427a40419986ebe4012b86001838718855ea460 100644 --- a/cumulus/client/consensus/aura/src/collators/lookahead.rs +++ b/cumulus/client/consensus/aura/src/collators/lookahead.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! A collator for Aura that looks ahead of the most recently included parachain block //! when determining what to build upon. diff --git a/cumulus/client/consensus/aura/src/collators/mod.rs b/cumulus/client/consensus/aura/src/collators/mod.rs index 4c191c7d8a1a0882905fd77ec1ab0af90b213413..e4f243351be47f3e795bef4f03292b1276ee17e0 100644 --- a/cumulus/client/consensus/aura/src/collators/mod.rs +++ b/cumulus/client/consensus/aura/src/collators/mod.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! Stock, pure Aura collators. //! diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs b/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs index 48287555dea65f3ee6726728dd0ea1522aa2b586..9754f98da4cbbae51d0e8295dc21b44eef51ea87 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use codec::{Codec, Encode}; diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/block_import.rs b/cumulus/client/consensus/aura/src/collators/slot_based/block_import.rs index 9c53da6a6b7d7d63845ebbf8527944da3d8d9d73..27588c661d53373996389630b409277b6e877441 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/block_import.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/block_import.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use futures::{stream::FusedStream, StreamExt}; use sc_consensus::{BlockImport, StateAction}; diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/collation_task.rs b/cumulus/client/consensus/aura/src/collators/slot_based/collation_task.rs index abaeb8319a4028388dfb5a9d2a93067c741b7c89..eb48494cf6dcda718061e8467b64b448da0fad3a 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/collation_task.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/collation_task.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use codec::Encode; diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/mod.rs b/cumulus/client/consensus/aura/src/collators/slot_based/mod.rs index ab78b31fbd802f9a26ea6bbd6d461c345817610f..f72960fe4c2e1ba83638547b85f8873f482b81bd 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/mod.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/mod.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! A collator for Aura that looks ahead of the most recently included parachain block //! when determining what to build upon. diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/relay_chain_data_cache.rs b/cumulus/client/consensus/aura/src/collators/slot_based/relay_chain_data_cache.rs index be30ec2f747da1c66b4241e99cbf1a3a580df44c..b3251cd886efe4f8f375c4c252e3970418fce5ac 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/relay_chain_data_cache.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/relay_chain_data_cache.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! Utility for caching [`RelayChainData`] for different relay blocks. diff --git a/cumulus/client/consensus/aura/src/equivocation_import_queue.rs b/cumulus/client/consensus/aura/src/equivocation_import_queue.rs index a3bc90f53c25d7964556f8ae17fb66092e343ec6..ab0e62ac591d160345246a2d3747891c5e8c2c38 100644 --- a/cumulus/client/consensus/aura/src/equivocation_import_queue.rs +++ b/cumulus/client/consensus/aura/src/equivocation_import_queue.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. /// An import queue which provides some equivocation resistance with lenient trait bounds. /// diff --git a/cumulus/client/consensus/aura/src/import_queue.rs b/cumulus/client/consensus/aura/src/import_queue.rs index cbbfbe8d22230330e5306ed76d31b63eb4cf82e5..bf2bf32e2de61a9f30660422662b1d21f59812d9 100644 --- a/cumulus/client/consensus/aura/src/import_queue.rs +++ b/cumulus/client/consensus/aura/src/import_queue.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! Parachain specific wrapper for the AuRa import queue. diff --git a/cumulus/client/consensus/aura/src/lib.rs b/cumulus/client/consensus/aura/src/lib.rs index ed6f5bdd4d6984350c5f59a3753618c3a038f323..0e404541ab9a6099e8f69fdd38fd5743fa9b3c52 100644 --- a/cumulus/client/consensus/aura/src/lib.rs +++ b/cumulus/client/consensus/aura/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! The AuRa consensus algorithm for parachains. //! diff --git a/cumulus/client/consensus/common/src/import_queue.rs b/cumulus/client/consensus/common/src/import_queue.rs index 488693604fefccbe2c9b37a22c8ee3c4809383f2..f3e60c731805809ef5d9130a00ce2e5c48d1cdec 100644 --- a/cumulus/client/consensus/common/src/import_queue.rs +++ b/cumulus/client/consensus/common/src/import_queue.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! (unstable) Composable utilities for constructing import queues for parachains. //! diff --git a/cumulus/client/consensus/common/src/level_monitor.rs b/cumulus/client/consensus/common/src/level_monitor.rs index fb4b0498f6887f8bea1d3e7ba4e7f4082e2f9747..c00390b0b844cfd87122bae0d25f9d3162169609 100644 --- a/cumulus/client/consensus/common/src/level_monitor.rs +++ b/cumulus/client/consensus/common/src/level_monitor.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use sc_client_api::{blockchain::Backend as _, Backend, HeaderBackend as _}; use sp_blockchain::{HashAndNumber, HeaderMetadata, TreeRoute}; diff --git a/cumulus/client/consensus/common/src/lib.rs b/cumulus/client/consensus/common/src/lib.rs index 6766c2409c385f2cada12ea5da5a81c39fe20205..86d5803ad541635752aac268c4ca8ab9fe7eb07a 100644 --- a/cumulus/client/consensus/common/src/lib.rs +++ b/cumulus/client/consensus/common/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use codec::Decode; use polkadot_primitives::{ diff --git a/cumulus/client/consensus/common/src/parachain_consensus.rs b/cumulus/client/consensus/common/src/parachain_consensus.rs index 861354ed63c30783dc04cb20dd9195caf94096b9..8af8e1ef2bc7aeb9e45c2e2e6daca86d36406ff1 100644 --- a/cumulus/client/consensus/common/src/parachain_consensus.rs +++ b/cumulus/client/consensus/common/src/parachain_consensus.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use sc_client_api::{ Backend, BlockBackend, BlockImportNotification, BlockchainEvents, Finalizer, UsageProvider, diff --git a/cumulus/client/consensus/common/src/parent_search.rs b/cumulus/client/consensus/common/src/parent_search.rs index c371ec62f8455cacc7d6a2d7b1ba71e142661fff..b037fe0dc95836d74fb1d309f12c712be1d87970 100644 --- a/cumulus/client/consensus/common/src/parent_search.rs +++ b/cumulus/client/consensus/common/src/parent_search.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use codec::Decode; use polkadot_primitives::Hash as RelayHash; diff --git a/cumulus/client/consensus/common/src/tests.rs b/cumulus/client/consensus/common/src/tests.rs index 2eff183fc47375e7cff8633798c2d33384b2060e..56e7e927d535e125765f8db646c4b953510c7786 100644 --- a/cumulus/client/consensus/common/src/tests.rs +++ b/cumulus/client/consensus/common/src/tests.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use crate::*; diff --git a/cumulus/client/consensus/proposer/src/lib.rs b/cumulus/client/consensus/proposer/src/lib.rs index 7eb90a5ac02bbbea708406980b9a8c2e06d1708e..4a5a071991e3a662231d0d7e22c75261cbeb087e 100644 --- a/cumulus/client/consensus/proposer/src/lib.rs +++ b/cumulus/client/consensus/proposer/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! The Cumulus [`Proposer`] is a wrapper around a Substrate [`sp_consensus::Environment`] //! for creating new parachain blocks. diff --git a/cumulus/client/consensus/relay-chain/src/import_queue.rs b/cumulus/client/consensus/relay-chain/src/import_queue.rs index 1d6f039da4c123fc79c1132b7b96e93a96c69411..ab2a7de67a73180ac632a807c2529c4dfccade86 100644 --- a/cumulus/client/consensus/relay-chain/src/import_queue.rs +++ b/cumulus/client/consensus/relay-chain/src/import_queue.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use std::{marker::PhantomData, sync::Arc}; diff --git a/cumulus/client/consensus/relay-chain/src/lib.rs b/cumulus/client/consensus/relay-chain/src/lib.rs index fc395a9d9573fe2efd70d8322f64997670b6d8ec..8a23edfb9449e1e5ab004d3e483cf9089c55e4e0 100644 --- a/cumulus/client/consensus/relay-chain/src/lib.rs +++ b/cumulus/client/consensus/relay-chain/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! The relay-chain provided consensus algorithm for parachains. //! diff --git a/cumulus/client/network/src/lib.rs b/cumulus/client/network/src/lib.rs index 3b9c0fc81ecece9567ac51e0652b68838528171c..d6cb4401aaa68cfc654f51a57422f594535e67d0 100644 --- a/cumulus/client/network/src/lib.rs +++ b/cumulus/client/network/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! Parachain specific networking //! diff --git a/cumulus/client/network/src/tests.rs b/cumulus/client/network/src/tests.rs index 3bdcdaae4ef67e679b1655149383e78c8ec03c36..d3407d46a5cd08cfc8283c2f9835c92252723db2 100644 --- a/cumulus/client/network/src/tests.rs +++ b/cumulus/client/network/src/tests.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use super::*; use async_trait::async_trait; diff --git a/cumulus/client/parachain-inherent/src/lib.rs b/cumulus/client/parachain-inherent/src/lib.rs index 0bb436a876b4ff9f80f97a0c3bfbbdbfab8f2796..9861daba347f049dc90ecc73c7ae6d9b44f90afb 100644 --- a/cumulus/client/parachain-inherent/src/lib.rs +++ b/cumulus/client/parachain-inherent/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Client side code for generating the parachain inherent. diff --git a/cumulus/client/parachain-inherent/src/mock.rs b/cumulus/client/parachain-inherent/src/mock.rs index 8dbc6ace0f06cbf426ea33cdf6f832bfcb5670ed..f6aa4a17e5cd91c38355c97e3e456dfb37b0ce93 100644 --- a/cumulus/client/parachain-inherent/src/mock.rs +++ b/cumulus/client/parachain-inherent/src/mock.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{ParachainInherentData, INHERENT_IDENTIFIER}; use codec::Decode; diff --git a/cumulus/client/pov-recovery/src/active_candidate_recovery.rs b/cumulus/client/pov-recovery/src/active_candidate_recovery.rs index 9badc69fe816becaa5d2df3bdbbc50fed68b6ddb..435a7405c7c714fac7757f07d3a9f84c3118b374 100644 --- a/cumulus/client/pov-recovery/src/active_candidate_recovery.rs +++ b/cumulus/client/pov-recovery/src/active_candidate_recovery.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use sp_runtime::traits::Block as BlockT; diff --git a/cumulus/client/pov-recovery/src/lib.rs b/cumulus/client/pov-recovery/src/lib.rs index 87349aef0c93e10e1ad1c87723721a151e8452d6..240c97a1c1af31c057baaf960c249d15c7e65f04 100644 --- a/cumulus/client/pov-recovery/src/lib.rs +++ b/cumulus/client/pov-recovery/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! Parachain PoV recovery //! diff --git a/cumulus/client/pov-recovery/src/tests.rs b/cumulus/client/pov-recovery/src/tests.rs index be890d01dd96721402e00d5eaa07fd763e03079c..a4093c697e928b830d60730e9d6b88134062d167 100644 --- a/cumulus/client/pov-recovery/src/tests.rs +++ b/cumulus/client/pov-recovery/src/tests.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use super::*; use assert_matches::assert_matches; diff --git a/cumulus/client/relay-chain-inprocess-interface/src/lib.rs b/cumulus/client/relay-chain-inprocess-interface/src/lib.rs index e5daf8ee7b5878b5dbae3401b3688f916434ebbe..4f885525fca02e891e65a08bb68f325da6b187f3 100644 --- a/cumulus/client/relay-chain-inprocess-interface/src/lib.rs +++ b/cumulus/client/relay-chain-inprocess-interface/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use std::{ collections::{BTreeMap, VecDeque}, diff --git a/cumulus/client/relay-chain-interface/src/lib.rs b/cumulus/client/relay-chain-interface/src/lib.rs index f1d5e013ba6a21a9f267ef05ea101fddaa973003..3623672c6ee6170d8d6656f7b7c47d8f85c458e0 100644 --- a/cumulus/client/relay-chain-interface/src/lib.rs +++ b/cumulus/client/relay-chain-interface/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use std::{ collections::{BTreeMap, VecDeque}, diff --git a/cumulus/client/relay-chain-minimal-node/src/blockchain_rpc_client.rs b/cumulus/client/relay-chain-minimal-node/src/blockchain_rpc_client.rs index cfd5bd951333dc5436d90ad9c83033a75628debe..a30608224ab9e2c2a31322d7c029719faf0d7fc3 100644 --- a/cumulus/client/relay-chain-minimal-node/src/blockchain_rpc_client.rs +++ b/cumulus/client/relay-chain-minimal-node/src/blockchain_rpc_client.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use std::{ collections::{BTreeMap, VecDeque}, diff --git a/cumulus/client/relay-chain-minimal-node/src/collator_overseer.rs b/cumulus/client/relay-chain-minimal-node/src/collator_overseer.rs index 5acc30537080cb872934de8058282dec65fd3202..e87cd343f1b5286759678c99e519282c863f063e 100644 --- a/cumulus/client/relay-chain-minimal-node/src/collator_overseer.rs +++ b/cumulus/client/relay-chain-minimal-node/src/collator_overseer.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use futures::{select, StreamExt}; use std::sync::Arc; diff --git a/cumulus/client/relay-chain-minimal-node/src/lib.rs b/cumulus/client/relay-chain-minimal-node/src/lib.rs index f70a73a5d5cede48c5af9077728cf907a349e874..7d5d1df6a0758fd2a32fbce5fa5e4ec71b4740e6 100644 --- a/cumulus/client/relay-chain-minimal-node/src/lib.rs +++ b/cumulus/client/relay-chain-minimal-node/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use collator_overseer::NewMinimalNode; diff --git a/cumulus/client/relay-chain-minimal-node/src/network.rs b/cumulus/client/relay-chain-minimal-node/src/network.rs index 6cb0f4590b46b44d5950f13366421163b3f18254..bf21bde9b39a180e848e42b56dc13819ffe4986d 100644 --- a/cumulus/client/relay-chain-minimal-node/src/network.rs +++ b/cumulus/client/relay-chain-minimal-node/src/network.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use polkadot_core_primitives::{Block, Hash, Header}; use sp_runtime::traits::NumberFor; diff --git a/cumulus/client/relay-chain-rpc-interface/src/lib.rs b/cumulus/client/relay-chain-rpc-interface/src/lib.rs index a895d8f3e5f26239eafc40db45d85d5e86a807d7..15fc8024e0b52c78dcd719500a8c8e5def353e29 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/lib.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use async_trait::async_trait; use core::time::Duration; diff --git a/cumulus/client/relay-chain-rpc-interface/src/light_client_worker.rs b/cumulus/client/relay-chain-rpc-interface/src/light_client_worker.rs index 2347dbb85f78ed1d8017ba076f6d77e97664c021..560342f110bed8c023366b19cb56c10a6400eaaa 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/light_client_worker.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/light_client_worker.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! This module contains a backend that sends RPC requests to an //! embedded light client. Even though no networking is involved, diff --git a/cumulus/client/relay-chain-rpc-interface/src/metrics.rs b/cumulus/client/relay-chain-rpc-interface/src/metrics.rs index 4d09464d237c69faffa7f168dd9647c82adba285..3e43df4e8fa33b0cc6de6d268cd0035b9a209a5d 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/metrics.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/metrics.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use prometheus::{Error as PrometheusError, HistogramTimer, Registry}; use prometheus_endpoint::{HistogramOpts, HistogramVec, Opts}; diff --git a/cumulus/client/relay-chain-rpc-interface/src/reconnecting_ws_client.rs b/cumulus/client/relay-chain-rpc-interface/src/reconnecting_ws_client.rs index dc0e9d697b466faf1f7838a055d3732bcdd4d9d7..ae5f1f5c1abb458b5a405fc4a36859d189fc536f 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/reconnecting_ws_client.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/reconnecting_ws_client.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use cumulus_primitives_core::relay_chain::{ Block as RelayBlock, BlockNumber as RelayNumber, Hash as RelayHash, Header as RelayHeader, diff --git a/cumulus/client/relay-chain-rpc-interface/src/rpc_client.rs b/cumulus/client/relay-chain-rpc-interface/src/rpc_client.rs index 1cd9d0c11eeddbca8b02831c89016ac869479073..b2fd5a4e6089c807c1891c8da14db5116f3383d1 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/rpc_client.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/rpc_client.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use futures::channel::{ mpsc::{Receiver, Sender}, diff --git a/cumulus/client/relay-chain-rpc-interface/src/tokio_platform.rs b/cumulus/client/relay-chain-rpc-interface/src/tokio_platform.rs index 75a5604d741b4fe92e55cfe4f55fdaba747e4bb5..adbfd03d226ced81d59b92bf03ae3d4be354d5ce 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/tokio_platform.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/tokio_platform.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. use core::time::Duration; use futures::prelude::*; diff --git a/cumulus/client/service/src/lib.rs b/cumulus/client/service/src/lib.rs index 912109c2ad325ed7118ad2e5faf8a863169afed7..b3a85e6ef3fd5c82ffbbd97dc0f893461111ccea 100644 --- a/cumulus/client/service/src/lib.rs +++ b/cumulus/client/service/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// along with Cumulus. If not, see <https://www.gnu.org/licenses/>. //! Cumulus service //! diff --git a/cumulus/file_header.txt b/cumulus/file_header.txt index 712045bf2ca1506c47abc51d93b8e231133f0011..9bd0414043eb3a910c66a911b0bdafe0846c519d 100644 --- a/cumulus/file_header.txt +++ b/cumulus/file_header.txt @@ -1,15 +1,14 @@ // Copyright (C) Parity Technologies (UK) Ltd. -// This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. diff --git a/cumulus/pallets/aura-ext/src/consensus_hook.rs b/cumulus/pallets/aura-ext/src/consensus_hook.rs index 56966aa0c8f82578dcc3da8294a4299d6a333e23..52a7a500a1f4b4636843c775c451028097cc4c6a 100644 --- a/cumulus/pallets/aura-ext/src/consensus_hook.rs +++ b/cumulus/pallets/aura-ext/src/consensus_hook.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! The definition of a [`FixedVelocityConsensusHook`] for consensus logic to manage //! block velocity. diff --git a/cumulus/pallets/aura-ext/src/lib.rs b/cumulus/pallets/aura-ext/src/lib.rs index 19c2634ca708a063fcefbf6c7405fed0476c93a2..496cbb694a87ff1acb1366d5cc21f642eb31ef94 100644 --- a/cumulus/pallets/aura-ext/src/lib.rs +++ b/cumulus/pallets/aura-ext/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Cumulus extension pallet for AuRa //! diff --git a/cumulus/pallets/aura-ext/src/migration.rs b/cumulus/pallets/aura-ext/src/migration.rs index b580c19fc733cb6e513a756741fcbaba1dbe4e92..c8c9a5fa31d2e9ffeb9c21de525f5b820127c433 100644 --- a/cumulus/pallets/aura-ext/src/migration.rs +++ b/cumulus/pallets/aura-ext/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. extern crate alloc; use crate::{Config, Pallet}; diff --git a/cumulus/pallets/aura-ext/src/test.rs b/cumulus/pallets/aura-ext/src/test.rs index b0099381e682d3805363eec230b57a31fa1c7b51..8ac3c74bddd0d184db0de1f0657e45eb5da39393 100644 --- a/cumulus/pallets/aura-ext/src/test.rs +++ b/cumulus/pallets/aura-ext/src/test.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] extern crate alloc; diff --git a/cumulus/pallets/collator-selection/src/migration.rs b/cumulus/pallets/collator-selection/src/migration.rs index 34f9142970820353bea352a21aab75f99b7827b9..c905ccbbef1aa8839c9e1933ed8db26bfc24de3f 100644 --- a/cumulus/pallets/collator-selection/src/migration.rs +++ b/cumulus/pallets/collator-selection/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! A module that is responsible for migration of storage for Collator Selection. diff --git a/cumulus/pallets/dmp-queue/src/migration.rs b/cumulus/pallets/dmp-queue/src/migration.rs index 1b83fea710a3f344071c8c88e8561dee942fe578..dd2f2e386d208c774d5ddf0b13b264d5ab45c13b 100644 --- a/cumulus/pallets/dmp-queue/src/migration.rs +++ b/cumulus/pallets/dmp-queue/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Migrates the storage from the previously deleted DMP pallet. diff --git a/cumulus/pallets/dmp-queue/src/tests.rs b/cumulus/pallets/dmp-queue/src/tests.rs index 368a1c0b436430495ffd005eb1a632dca16ab249..ba332be58acfd6494fcec4f527f933876448cc17 100644 --- a/cumulus/pallets/dmp-queue/src/tests.rs +++ b/cumulus/pallets/dmp-queue/src/tests.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test the lazy migration. diff --git a/cumulus/pallets/parachain-system/proc-macro/src/lib.rs b/cumulus/pallets/parachain-system/proc-macro/src/lib.rs index f284fbdc64c600f130b0e5bb531021ecfd2e0e73..d3693c970b904410969f8f531cb7e849ebcd8d83 100644 --- a/cumulus/pallets/parachain-system/proc-macro/src/lib.rs +++ b/cumulus/pallets/parachain-system/proc-macro/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use proc_macro2::Span; use proc_macro_crate::{crate_name, FoundCrate}; diff --git a/cumulus/pallets/parachain-system/src/consensus_hook.rs b/cumulus/pallets/parachain-system/src/consensus_hook.rs index 6d65bdc77186f4abf5da06b16ec4c36cf27e5fbb..e4d90fcfd3d030c544cb960c79f685b44b90a7a7 100644 --- a/cumulus/pallets/parachain-system/src/consensus_hook.rs +++ b/cumulus/pallets/parachain-system/src/consensus_hook.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! The definition of a [`ConsensusHook`] trait for consensus logic to manage the backlog //! of parachain blocks ready to submit to the relay chain, as well as some basic implementations. diff --git a/cumulus/pallets/parachain-system/src/lib.rs b/cumulus/pallets/parachain-system/src/lib.rs index 624f91e7fdfb3c03164b1d7e6246df14266ea65e..0a4a29539b2cc799391da0933685f3a0bdb8419e 100644 --- a/cumulus/pallets/parachain-system/src/lib.rs +++ b/cumulus/pallets/parachain-system/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg_attr(not(feature = "std"), no_std)] diff --git a/cumulus/pallets/parachain-system/src/migration.rs b/cumulus/pallets/parachain-system/src/migration.rs index 30106aceab5a442c34360563fdfb096fdc6ac9b1..e985029851da9e7ddbcac76f8f6a5a352f321925 100644 --- a/cumulus/pallets/parachain-system/src/migration.rs +++ b/cumulus/pallets/parachain-system/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{Config, Pallet, ReservedDmpWeightOverride, ReservedXcmpWeightOverride}; use frame_support::{ diff --git a/cumulus/pallets/parachain-system/src/mock.rs b/cumulus/pallets/parachain-system/src/mock.rs index 5b59be0482e7396cddf161889ace0ca726da9fd5..ea0f227d72579d217862bc88a182802418e9d54f 100644 --- a/cumulus/pallets/parachain-system/src/mock.rs +++ b/cumulus/pallets/parachain-system/src/mock.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test setup and helpers. diff --git a/cumulus/pallets/parachain-system/src/relay_state_snapshot.rs b/cumulus/pallets/parachain-system/src/relay_state_snapshot.rs index 323aaf6503808c954300e27179aa16bc531047c9..e82b5c230a04544f76db2a545d03a23a13973473 100644 --- a/cumulus/pallets/parachain-system/src/relay_state_snapshot.rs +++ b/cumulus/pallets/parachain-system/src/relay_state_snapshot.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Relay chain state proof provides means for accessing part of relay chain storage for reads. diff --git a/cumulus/pallets/parachain-system/src/tests.rs b/cumulus/pallets/parachain-system/src/tests.rs index 2b65dd6a921607a13f23ffd1cf613c4e64bd396c..d3b65dcdc639049f46101b43794cf79ef329f528 100755 --- a/cumulus/pallets/parachain-system/src/tests.rs +++ b/cumulus/pallets/parachain-system/src/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/pallets/parachain-system/src/unincluded_segment.rs b/cumulus/pallets/parachain-system/src/unincluded_segment.rs index 814bb83aa1acb0541c9cf73ead07e3e3cca84680..572ef045c4dc21a4bb2da66947e1a851cb926c60 100644 --- a/cumulus/pallets/parachain-system/src/unincluded_segment.rs +++ b/cumulus/pallets/parachain-system/src/unincluded_segment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Primitives used for tracking message queues constraints in an unincluded block segment //! of the parachain. diff --git a/cumulus/pallets/parachain-system/src/validate_block/implementation.rs b/cumulus/pallets/parachain-system/src/validate_block/implementation.rs index 2c531c39accd6058842190f65f2454bdb0a6b003..3f762fcdbe40c46ee3f3c3d4e50065fed98ec387 100644 --- a/cumulus/pallets/parachain-system/src/validate_block/implementation.rs +++ b/cumulus/pallets/parachain-system/src/validate_block/implementation.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! The actual implementation of the validate block functionality. diff --git a/cumulus/pallets/parachain-system/src/validate_block/mod.rs b/cumulus/pallets/parachain-system/src/validate_block/mod.rs index 2d210f4bac2ba85bceab2867ce03676c14ec3c17..8b10d7ca4e50c7fe883783fe0938b6a11e38f423 100644 --- a/cumulus/pallets/parachain-system/src/validate_block/mod.rs +++ b/cumulus/pallets/parachain-system/src/validate_block/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! A module that enables a runtime to work as parachain. diff --git a/cumulus/pallets/parachain-system/src/validate_block/tests.rs b/cumulus/pallets/parachain-system/src/validate_block/tests.rs index 871ce5c1710e8dd6888e58cf075d972b006d2a64..831eebe95883e6d606edeae9cca0826a1c950706 100644 --- a/cumulus/pallets/parachain-system/src/validate_block/tests.rs +++ b/cumulus/pallets/parachain-system/src/validate_block/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use codec::{Decode, DecodeAll, Encode}; use cumulus_primitives_core::{ParachainBlockData, PersistedValidationData}; diff --git a/cumulus/pallets/parachain-system/src/validate_block/trie_recorder.rs b/cumulus/pallets/parachain-system/src/validate_block/trie_recorder.rs index 8dc2f20dd3902e8c523dfb05a7e8a2b0ca040168..09acedf1d983f8dd8492232a96aae2aa79c771b2 100644 --- a/cumulus/pallets/parachain-system/src/validate_block/trie_recorder.rs +++ b/cumulus/pallets/parachain-system/src/validate_block/trie_recorder.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Provide a specialized trie-recorder and provider for use in validate-block. //! diff --git a/cumulus/pallets/parachain-system/src/weights.rs b/cumulus/pallets/parachain-system/src/weights.rs index 5c61879b4d36b903f9f9d81cde76ff3ce42cc747..ba7d8b1e87f6b2faedc4cae80d0e405e7760c40e 100644 --- a/cumulus/pallets/parachain-system/src/weights.rs +++ b/cumulus/pallets/parachain-system/src/weights.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for cumulus_pallet_parachain_system //! diff --git a/cumulus/pallets/solo-to-para/src/lib.rs b/cumulus/pallets/solo-to-para/src/lib.rs index b42cc74f1cf32220f7767f829cd4a65c9e2e0532..f8761e13a0544dbb5f44e13bd0b10c5d4f211724 100644 --- a/cumulus/pallets/solo-to-para/src/lib.rs +++ b/cumulus/pallets/solo-to-para/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg_attr(not(feature = "std"), no_std)] diff --git a/cumulus/pallets/weight-reclaim/src/benchmarks.rs b/cumulus/pallets/weight-reclaim/src/benchmarks.rs index 78bebc967d96bd91ec3f9edd878caf7314523861..1f7a1e8adfc5f26f5a5b1703e9a5e9ee99a07f7d 100644 --- a/cumulus/pallets/weight-reclaim/src/benchmarks.rs +++ b/cumulus/pallets/weight-reclaim/src/benchmarks.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(feature = "runtime-benchmarks")] diff --git a/cumulus/pallets/weight-reclaim/src/lib.rs b/cumulus/pallets/weight-reclaim/src/lib.rs index 7bbd2cf29d831942520dd680eee8ddc9da853b50..8e593816637d8a1cfc108087c2896e0632a87bcf 100644 --- a/cumulus/pallets/weight-reclaim/src/lib.rs +++ b/cumulus/pallets/weight-reclaim/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Pallet and transaction extensions to reclaim PoV proof size weight after an extrinsic has been //! applied. diff --git a/cumulus/pallets/weight-reclaim/src/tests.rs b/cumulus/pallets/weight-reclaim/src/tests.rs index ce647445b33272b71929ad1ac51042f079e75c4e..711faa7eb5081b1aba12bb02698cc21e5fad4006 100644 --- a/cumulus/pallets/weight-reclaim/src/tests.rs +++ b/cumulus/pallets/weight-reclaim/src/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/pallets/weight-reclaim/src/weights.rs b/cumulus/pallets/weight-reclaim/src/weights.rs index e651c8a783185b048f59e284ef957539a0221d2f..9ae7033200fb2c06290d64a8e7fe48a34bb503d4 100644 --- a/cumulus/pallets/weight-reclaim/src/weights.rs +++ b/cumulus/pallets/weight-reclaim/src/weights.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/pallets/xcm/src/lib.rs b/cumulus/pallets/xcm/src/lib.rs index e31df8471c26698d115d798bfc9358dbc4a1b982..e60ff78a8032854c052bda3ed8bf76c235f21b12 100644 --- a/cumulus/pallets/xcm/src/lib.rs +++ b/cumulus/pallets/xcm/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Pallet for stuff specific to parachains' usage of XCM. Right now that's just the origin //! used by parachains when receiving `Transact` messages from other parachains or the Relay chain diff --git a/cumulus/pallets/xcmp-queue/src/lib.rs b/cumulus/pallets/xcmp-queue/src/lib.rs index 91f71558b54a211563015b73d634011c896f442d..08629e6376328e6a3206152bb216ee68e5ed9a72 100644 --- a/cumulus/pallets/xcmp-queue/src/lib.rs +++ b/cumulus/pallets/xcmp-queue/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! A pallet which uses the XCMP transport layer to handle both incoming and outgoing XCM message //! sending and dispatch, queuing, signalling and backpressure. To do so, it implements: diff --git a/cumulus/pallets/xcmp-queue/src/migration.rs b/cumulus/pallets/xcmp-queue/src/migration.rs index 6e41c9d9a8789a742a1abc78d0364bed7916ed92..d3bd15c8aad0ceadb580ac4a85b75a966a7a872d 100644 --- a/cumulus/pallets/xcmp-queue/src/migration.rs +++ b/cumulus/pallets/xcmp-queue/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! A module that is responsible for migration of storage. diff --git a/cumulus/pallets/xcmp-queue/src/migration/v5.rs b/cumulus/pallets/xcmp-queue/src/migration/v5.rs index 0bf3303bd7d00c7518aa66164071a146d2548f1b..4dd2f20fcc6ebb3e1c7e8b92db27f1351df93d51 100644 --- a/cumulus/pallets/xcmp-queue/src/migration/v5.rs +++ b/cumulus/pallets/xcmp-queue/src/migration/v5.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Migrates the storage to version 5. diff --git a/cumulus/parachains/common/src/message_queue.rs b/cumulus/parachains/common/src/message_queue.rs index d6f2118e454fab1c584eefe9db3606480f067474..cd415d6cc22938db89719f6dbe702e2d0d400ef9 100644 --- a/cumulus/parachains/common/src/message_queue.rs +++ b/cumulus/parachains/common/src/message_queue.rs @@ -1,18 +1,18 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Helpers to deal with configuring the message queue in the runtime. diff --git a/cumulus/parachains/pallets/parachain-info/src/lib.rs b/cumulus/parachains/pallets/parachain-info/src/lib.rs index 0aaa7adaa51c0198fa1025337a31ff790df2113b..b7931e352a728454a42d513899617ac0d7c5d2b1 100644 --- a/cumulus/parachains/pallets/parachain-info/src/lib.rs +++ b/cumulus/parachains/pallets/parachain-info/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Minimal Pallet that injects a ParachainId into Runtime storage from diff --git a/cumulus/parachains/pallets/ping/src/lib.rs b/cumulus/parachains/pallets/ping/src/lib.rs index b6423a81db3c9550288ab988d3a0558b94f14c8e..6895b34296cfe00e19d5c8de61c523b9309ac82c 100644 --- a/cumulus/parachains/pallets/ping/src/lib.rs +++ b/cumulus/parachains/pallets/ping/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Pallet to spam the XCM/UMP. diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs index c8f9bb7cd56c3c2d56224aa8043e3817901c18c4..c115dbce7340c16dfbfc7c76f1d08133ad109463 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system.rs index b257c3825a7e756cf5260e3b14e17f78b34d36c8..634e2eae217e72ec7a57df1ad96eaa9891064c35 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system_extensions.rs index a5c9fea3cdf53f3daacd3fb1a223056729d01fcf..3c73137301240f18235fc3a83e0492709d1d0b9e 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system_extensions.rs @@ -1,15 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see <http://www.gnu.org/licenses/>. diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/mod.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/mod.rs index 6893766ac72d2113f993e54d3b28e5e136acac3d..0f02c503a6fc68401e97562b0e8d13b565ad9a2b 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/mod.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. pub mod block_weights; pub mod cumulus_pallet_parachain_system; diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion.rs index ec5a4084361f31b195b1acec747dd4e2fd34567a..96639d2da46f33824f7d042652f8e04fa5a6f7ea 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_conversion` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_ops.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_ops.rs index e85420d32d9c28b3cc781cab6e5ac92bedc8af13..fbaa4e594f05dfab9328304df9ac8bb14f8c8484 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_ops.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_ops.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_conversion_ops` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_tx_payment.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_tx_payment.rs index 0a639b368af2248bdaf1efa7538d58a935dbe2e0..2b5763e3c6e446ed851100a8cd2fc9a6a4421e3b 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_tx_payment.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_tx_payment.rs @@ -1,15 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see <http://www.gnu.org/licenses/>. diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_rewards.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_rewards.rs index 218c93c51035037e5d325dc5b3d31897e164f0ec..9914bf50335a304acfe918aa3b48f591189779bc 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_rewards.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_rewards.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_rewards` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_foreign.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_foreign.rs index c76c1137335a17938e5b409c1642a09ce9824fcd..13f8ddc436ff8c54a97ebb88b3b5c810955313d0 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_foreign.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_foreign.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_assets` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_local.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_local.rs index cf4f60042bc683fa3a161bbf6d0b9695a718b720..adf6d3532bdab49d7c1f8aa197a182c9640a37d4 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_local.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_local.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_assets` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_pool.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_pool.rs index 2cd85de0098952d14e15f9e362e6fbe48d2741e7..2525af7e77314813d1d647ecabe29de1234a56ae 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_pool.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_pool.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_assets` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_balances.rs index 35d7e1985c515879e210ab4ee6cd56c276fbbac2..53f3ea5cea93c41891d36d7e4bbfbda613db20e1 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_collator_selection.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_collator_selection.rs index aeda7bbbb6a7e47d8d1e1f403c7419439f7f5953..f723032f1f87260a67713458a0191ef6e153f4e5 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_collator_selection.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_collator_selection.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_collator_selection` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_multisig.rs index 1192478c90ac483d6b82c4a2704d4b1ba5903fbc..1d9b3dd4575b4f381f413b8b42fd62b6f7b69efe 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nft_fractionalization.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nft_fractionalization.rs index 97cec5d82ecd0635e5032f50a887c6766c80d2a2..6eb46fc276a385519178c61ad09a318d811e29af 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nft_fractionalization.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nft_fractionalization.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_nft_fractionalization` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nfts.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nfts.rs index 277cfd1747bf68a745ee2cd021be05381554ac9a..f9692fd859551742b20c7719e89e23c6cb100ed5 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nfts.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nfts.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_nfts` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs index 0e680011e79b512e123c19345eec8041c87763aa..8b8d3f0461b8464b0861a638fbf18cad3a448572 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_proxy` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_session.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_session.rs index 6cfa66a4bea61e13fb4f176327aacfff800697bb..f179b3be3dd67d941fd0cea99601b00b2664883a 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_session.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_session.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_session` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_timestamp.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_timestamp.rs index 38e1fbd822b2309ee92e57b5599adef0e79d414c..46319bc5b0a9d75e9d40cd48b0cf3f6f4b061eb9 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_timestamp.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_timestamp.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_timestamp` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_transaction_payment.rs index 035f9a6dbe5167cb651736f705b817d4ba9027c4..aa8e41300877cbe7e0199f1b3469af328c106677 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_uniques.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_uniques.rs index c4e220b7facb17d6b8a53a8af195f3d22f14d9ef..ba61417af481752d468cc8cdf366e0dc8441b7f3 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_uniques.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_uniques.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_uniques` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_utility.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_utility.rs index a82115b9d0937f2d224667383569596dbe8a236d..6b107b8d9e581ed5cf0b35d9ca507cd755af8ea0 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_utility.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_utility.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_utility` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm.rs index 8506125d41331c190323adce4fa51d6581e725fe..9a72b334b21462baf0bb531acc5b71ce4ce08867 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm_bridge_hub_router.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm_bridge_hub_router.rs index 9a75428ada8b1c5b6295982c92dfa42058117cd9..dfa3d2f6087a78de94813993128d7567e0212ab9 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm_bridge_hub_router.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm_bridge_hub_router.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_bridge_hub_router` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs index ccf473484cad0c0398ac07cb85af3274b87ab43d..3ba2d494b2cc8bbcef089ca5b137c6b14b10048f 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. mod pallet_xcm_benchmarks_fungible; mod pallet_xcm_benchmarks_generic; diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index a2169e2ea04b1eaea17ad04295efa91e047e2edf..cb22aa228a2c1eb4eb45bfc28259f3ff1ced4ae5 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index d48debef94c88eaf10dd76c92f501e1e856f3868..6b735166012375dc6fada26c3112c4761c64853f 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml index 65ef63a7fb356c1b2c20a9fcddbc4bdc3d3b8bff..f7fb858de62e87c4048ea0cd8f987a9aba550d2e 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/Cargo.toml @@ -36,6 +36,7 @@ pallet-assets-freezer = { workspace = true } pallet-aura = { workspace = true } pallet-authorship = { workspace = true } pallet-balances = { workspace = true } +pallet-migrations = { workspace = true } pallet-multisig = { workspace = true } pallet-nft-fractionalization = { workspace = true } pallet-nfts = { workspace = true } @@ -133,6 +134,7 @@ runtime-benchmarks = [ "pallet-balances/runtime-benchmarks", "pallet-collator-selection/runtime-benchmarks", "pallet-message-queue/runtime-benchmarks", + "pallet-migrations/runtime-benchmarks", "pallet-multisig/runtime-benchmarks", "pallet-nft-fractionalization/runtime-benchmarks", "pallet-nfts/runtime-benchmarks", @@ -177,6 +179,7 @@ try-runtime = [ "pallet-balances/try-runtime", "pallet-collator-selection/try-runtime", "pallet-message-queue/try-runtime", + "pallet-migrations/try-runtime", "pallet-multisig/try-runtime", "pallet-nft-fractionalization/try-runtime", "pallet-nfts/try-runtime", @@ -230,6 +233,7 @@ std = [ "pallet-balances/std", "pallet-collator-selection/std", "pallet-message-queue/std", + "pallet-migrations/std", "pallet-multisig/std", "pallet-nft-fractionalization/std", "pallet-nfts-runtime-api/std", diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs index 3a7e3ef131c3f8c2fc4974c79862f9cf6fd6e17a..f73db17194bcfe4f81eea249e9e84228eec75f9f 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs @@ -40,7 +40,7 @@ use cumulus_pallet_parachain_system::RelayNumberMonotonicallyIncreases; use cumulus_primitives_core::{AggregateMessageOrigin, ClaimQueueOffset, CoreSelector, ParaId}; use frame_support::{ construct_runtime, derive_impl, - dispatch::DispatchClass, + dispatch::{DispatchClass, DispatchInfo}, genesis_builder_helper::{build_state, get_preset}, ord_parameter_types, parameter_types, traits::{ @@ -71,7 +71,9 @@ use sp_api::impl_runtime_apis; use sp_core::{crypto::KeyTypeId, OpaqueMetadata, H160, U256}; use sp_runtime::{ generic, impl_opaque_keys, - traits::{AccountIdConversion, BlakeTwo256, Block as BlockT, Saturating, Verify}, + traits::{ + AccountIdConversion, BlakeTwo256, Block as BlockT, Saturating, TransactionExtension, Verify, + }, transaction_validity::{TransactionSource, TransactionValidity}, ApplyExtrinsicResult, Perbill, Permill, RuntimeDebug, }; @@ -129,7 +131,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: alloc::borrow::Cow::Borrowed("westmint"), impl_name: alloc::borrow::Cow::Borrowed("westmint"), authoring_version: 1, - spec_version: 1_017_006, + spec_version: 1_017_007, impl_version: 0, apis: RUNTIME_API_VERSIONS, transaction_version: 16, @@ -185,6 +187,7 @@ impl frame_system::Config for Runtime { type SS58Prefix = SS58Prefix; type OnSetCode = cumulus_pallet_parachain_system::ParachainSetCode<Self>; type MaxConsumers = frame_support::traits::ConstU32<16>; + type MultiBlockMigrator = MultiBlockMigrations; } impl cumulus_pallet_weight_reclaim::Config for Runtime { @@ -1095,6 +1098,25 @@ impl TryFrom<RuntimeCall> for pallet_revive::Call<Runtime> { } } +parameter_types! { + pub MbmServiceWeight: Weight = Perbill::from_percent(80) * RuntimeBlockWeights::get().max_block; +} + +impl pallet_migrations::Config for Runtime { + type RuntimeEvent = RuntimeEvent; + #[cfg(not(feature = "runtime-benchmarks"))] + type Migrations = pallet_migrations::migrations::ResetPallet<Runtime, Revive>; + // Benchmarks need mocked migrations to guarantee that they succeed. + #[cfg(feature = "runtime-benchmarks")] + type Migrations = pallet_migrations::mock_helpers::MockedMigrations; + type CursorMaxLen = ConstU32<65_536>; + type IdentifierMaxLen = ConstU32<256>; + type MigrationStatusHandler = (); + type FailedMigrationHandler = frame_support::migrations::FreezeChainOnFailedMigration; + type MaxServiceWeight = MbmServiceWeight; + type WeightInfo = weights::pallet_migrations::WeightInfo<Runtime>; +} + // Create the runtime by composing the FRAME pallets that were previously configured. construct_runtime!( pub enum Runtime @@ -1106,6 +1128,7 @@ construct_runtime!( Timestamp: pallet_timestamp = 3, ParachainInfo: parachain_info = 4, WeightReclaim: cumulus_pallet_weight_reclaim = 5, + MultiBlockMigrations: pallet_migrations = 6, // Monetary stuff. Balances: pallet_balances = 10, @@ -1430,6 +1453,7 @@ mod benches { [pallet_asset_conversion_tx_payment, AssetTxPayment] [pallet_balances, Balances] [pallet_message_queue, MessageQueue] + [pallet_migrations, MultiBlockMigrations] [pallet_multisig, Multisig] [pallet_nft_fractionalization, NftFractionalization] [pallet_nfts, Nfts] @@ -1444,7 +1468,6 @@ mod benches { [cumulus_pallet_xcmp_queue, XcmpQueue] [pallet_xcm_bridge_hub_router, ToRococo] [pallet_asset_conversion_ops, AssetConversionMigration] - [pallet_revive, Revive] // XCM [pallet_xcm, PalletXcmExtrinsicsBenchmark::<Runtime>] // NOTE: Make sure you point to the individual modules below. @@ -2194,6 +2217,10 @@ impl_runtime_apis! { Revive::evm_block_gas_limit() } + fn gas_price() -> U256 { + Revive::evm_gas_price() + } + fn nonce(address: H160) -> Nonce { let account = <Runtime as pallet_revive::Config>::AddressMapper::to_account_id(&address); System::account_nonce(account) @@ -2202,18 +2229,19 @@ impl_runtime_apis! { fn eth_transact(tx: pallet_revive::evm::GenericTransaction) -> Result<pallet_revive::EthTransactInfo<Balance>, pallet_revive::EthTransactError> { let blockweights: BlockWeights = <Runtime as frame_system::Config>::BlockWeights::get(); - - let encoded_size = |pallet_call| { + let tx_fee = |pallet_call, mut dispatch_info: DispatchInfo| { let call = RuntimeCall::Revive(pallet_call); + dispatch_info.extension_weight = EthExtraImpl::get_eth_extension(0, 0u32.into()).weight(&call); let uxt: UncheckedExtrinsic = sp_runtime::generic::UncheckedExtrinsic::new_bare(call).into(); - uxt.encoded_size() as u32 + + pallet_transaction_payment::Pallet::<Runtime>::compute_fee( + uxt.encoded_size() as u32, + &dispatch_info, + 0u32.into(), + ) }; - Revive::bare_eth_transact( - tx, - blockweights.max_block, - encoded_size, - ) + Revive::bare_eth_transact(tx, blockweights.max_block, tx_fee) } fn call( diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs index 1573a278e24674344714b1d466e47e723fbaca7b..ef12fd637ccaae1bba6f449d2efec183020a3b3d 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/frame_system_extensions.rs index a1bb92cf7008b99030421ca5fc81e1c5fda6faa8..9fb5b700384da5a1c25fb56e0835d7864404383a 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/mod.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/mod.rs index d653838ad80e61d9dd96a705a1871fe4c4858fa8..86cd12507401f0df64dee2806b51b6e42e8b6a86 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/mod.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/mod.rs @@ -30,6 +30,7 @@ pub mod pallet_assets_pool; pub mod pallet_balances; pub mod pallet_collator_selection; pub mod pallet_message_queue; +pub mod pallet_migrations; pub mod pallet_multisig; pub mod pallet_nft_fractionalization; pub mod pallet_nfts; diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_ops.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_ops.rs index dfe4092c3f023512e54464e3a1ba8443326e5bfc..971c22bd7059824a1507e42aa82edc2acd305e3e 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_ops.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_ops.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_conversion_ops` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_tx_payment.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_tx_payment.rs index 8fe302630fb9510d0e1c01ca9de37a1bd0be3a4f..e431704cb5ceef803bc333e1e669b58827ba22dc 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_tx_payment.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_tx_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_conversion_tx_payment` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_rewards.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_rewards.rs index 3bbc289fec7b61433041c8007cc1d579a74ea7e5..e60f70cf53855efb1491e7e205d8a476d73f8478 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_rewards.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_rewards.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_rewards` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_balances.rs index bb8ae8e5f97e2792df79496a761c173bec6e0d95..b0a8e784d1fb8d3a1584f362f7529609c3e179f5 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_migrations.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_migrations.rs new file mode 100644 index 0000000000000000000000000000000000000000..2ba3630a73fc3dd471f6f07a3ba354495a6715a5 --- /dev/null +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_migrations.rs @@ -0,0 +1,225 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Autogenerated weights for `pallet_migrations` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0 +//! DATE: 2025-01-27, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `17938671047b`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024 + +// Executed Command: +// frame-omni-bencher +// v1 +// benchmark +// pallet +// --extrinsic=* +// --runtime=target/production/wbuild/asset-hub-westend-runtime/asset_hub_westend_runtime.wasm +// --pallet=pallet_migrations +// --header=/__w/polkadot-sdk/polkadot-sdk/cumulus/file_header.txt +// --output=./cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights +// --wasm-execution=compiled +// --steps=50 +// --repeat=20 +// --heap-pages=4096 +// --no-storage-info +// --no-min-squares +// --no-median-slopes + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] +#![allow(missing_docs)] + +use frame_support::{traits::Get, weights::Weight}; +use core::marker::PhantomData; + +/// Weight functions for `pallet_migrations`. +pub struct WeightInfo<T>(PhantomData<T>); +impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { + /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:1) + /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + fn onboard_new_mbms() -> Weight { + // Proof Size summary in bytes: + // Measured: `171` + // Estimated: `67035` + // Minimum execution time: 8_697_000 picoseconds. + Weight::from_parts(8_998_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) + /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) + fn progress_mbms_none() -> Weight { + // Proof Size summary in bytes: + // Measured: `42` + // Estimated: `67035` + // Minimum execution time: 2_737_000 picoseconds. + Weight::from_parts(2_813_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(1)) + } + /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) + /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) + fn exec_migration_completed() -> Weight { + // Proof Size summary in bytes: + // Measured: `129` + // Estimated: `3594` + // Minimum execution time: 6_181_000 picoseconds. + Weight::from_parts(6_458_000, 0) + .saturating_add(Weight::from_parts(0, 3594)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Storage: `MultiBlockMigrations::Historic` (r:1 w:0) + /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) + fn exec_migration_skipped_historic() -> Weight { + // Proof Size summary in bytes: + // Measured: `225` + // Estimated: `3731` + // Minimum execution time: 11_932_000 picoseconds. + Weight::from_parts(12_539_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + } + /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Storage: `MultiBlockMigrations::Historic` (r:1 w:0) + /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) + fn exec_migration_advance() -> Weight { + // Proof Size summary in bytes: + // Measured: `171` + // Estimated: `3731` + // Minimum execution time: 11_127_000 picoseconds. + Weight::from_parts(11_584_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + } + /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Storage: `MultiBlockMigrations::Historic` (r:1 w:1) + /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) + fn exec_migration_complete() -> Weight { + // Proof Size summary in bytes: + // Measured: `171` + // Estimated: `3731` + // Minimum execution time: 12_930_000 picoseconds. + Weight::from_parts(13_272_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Storage: `MultiBlockMigrations::Historic` (r:1 w:0) + /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) + /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) + /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) + fn exec_migration_fail() -> Weight { + // Proof Size summary in bytes: + // Measured: `171` + // Estimated: `3731` + // Minimum execution time: 13_709_000 picoseconds. + Weight::from_parts(14_123_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) + } + fn on_init_loop() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 162_000 picoseconds. + Weight::from_parts(188_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + } + /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) + /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) + fn force_set_cursor() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 2_737_000 picoseconds. + Weight::from_parts(2_919_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) + /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) + fn force_set_active_cursor() -> Weight { + // Proof Size summary in bytes: + // Measured: `0` + // Estimated: `0` + // Minimum execution time: 3_087_000 picoseconds. + Weight::from_parts(3_320_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) + } + /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) + /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) + /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) + fn force_onboard_mbms() -> Weight { + // Proof Size summary in bytes: + // Measured: `147` + // Estimated: `67035` + // Minimum execution time: 6_470_000 picoseconds. + Weight::from_parts(6_760_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(2)) + } + /// Storage: `MultiBlockMigrations::Historic` (r:256 w:256) + /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) + /// The range of component `n` is `[0, 256]`. + fn clear_historic(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `1022 + n * (271 ±0)` + // Estimated: `3834 + n * (2740 ±0)` + // Minimum execution time: 15_864_000 picoseconds. + Weight::from_parts(24_535_162, 0) + .saturating_add(Weight::from_parts(0, 3834)) + // Standard Error: 8_688 + .saturating_add(Weight::from_parts(1_530_542, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 2740).saturating_mul(n.into())) + } + /// Storage: `Skipped::Metadata` (r:0 w:0) + /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[0, 2048]`. + fn reset_pallet_migration(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `1680 + n * (38 ±0)` + // Estimated: `758 + n * (39 ±0)` + // Minimum execution time: 2_168_000 picoseconds. + Weight::from_parts(2_226_000, 0) + .saturating_add(Weight::from_parts(0, 758)) + // Standard Error: 2_841 + .saturating_add(Weight::from_parts(935_438, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 39).saturating_mul(n.into())) + } +} diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_multisig.rs index 737ee0f54df0cc7957a962d8275a6b68d97dcb2f..ef8f17ff12988c7a1b4800e4b83d67018001a281 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_transaction_payment.rs index b4c78a78b489073648156133730bd39cd3c68497..b6deef1cee44275ef35a2818a7c4a2b63e984e90 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_transaction_payment.rs @@ -1,15 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see <http://www.gnu.org/licenses/>. diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm.rs index 93409463d4e507eab4efe674c0bc61a19d2f509f..927b17dcc0f97e1bb8bff88de803a2daf3e0aecb 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm_bridge_hub_router.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm_bridge_hub_router.rs index 78aa839deacd2e529741b99c57c8c134393a830d..79dbd388f29a2f03e50cfafef9f7db9b8d20f9d9 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm_bridge_hub_router.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm_bridge_hub_router.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_bridge_hub_router` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index 97e59c24dd89f9243354e5201ae39ee439408529..d1bdcc0c56c9d2aadf3c59ca969fa6fbd9ae9ac0 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index 0ec2741c0490a5723a3e794cf6f35820e5b98f62..c2f7730ffab1eb85b67d76ae6c44bda4d6baad81 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/assets/test-utils/src/lib.rs b/cumulus/parachains/runtimes/assets/test-utils/src/lib.rs index 877d61780ce71c3d82361ccbfa03f2e3dde67d3c..a84850c652be749a74c1b3deb9ec39869f86fc24 100644 --- a/cumulus/parachains/runtimes/assets/test-utils/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/test-utils/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for `Runtime` with various assets. diff --git a/cumulus/parachains/runtimes/assets/test-utils/src/xcm_helpers.rs b/cumulus/parachains/runtimes/assets/test-utils/src/xcm_helpers.rs index ca0e81fae42eda216f93ed6265dd6dd87f6de538..36c99449500addd6f6e358f8a2231dd12a773260 100644 --- a/cumulus/parachains/runtimes/assets/test-utils/src/xcm_helpers.rs +++ b/cumulus/parachains/runtimes/assets/test-utils/src/xcm_helpers.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Helpers for calculating XCM delivery fees. diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_common_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_common_config.rs index 5dca45d326b83fb188a261d1c09737b828159ebf..3995f520caf04d59129ce4f9e5cbb90f57ff65f9 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_common_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_common_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Bridge definitions that can be used by multiple BridgeHub flavors. //! All configurations here should be dedicated to a single chain; in other words, we don't need two diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs index 1f58e9c2f2bade8cb3992acc9e74f439c0c813ba..78e83451835f7190487e789d152870baff0e5889 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Bridge definitions used on BridgeHubRococo for bridging to Rococo Bulletin. //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_ethereum_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_ethereum_config.rs index be7005b5379a1fa1732cc5b4ae18842c8a9d229a..a6ee891704b72c989b7f53135d8fc87deb8ce2cd 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_ethereum_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_ethereum_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #[cfg(not(feature = "runtime-benchmarks"))] use crate::XcmRouter; diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_westend_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_westend_config.rs index d394af73e7478facb2b58d620b967829bcac451d..b70f8e076057ce972da9a9c7cc6aefd4a9df32ab 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_westend_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_westend_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Bridge definitions used on BridgeHubRococo for bridging to BridgeHubWestend. diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs index 67bc06a9321ece8e8b3684b2ea302b19db24d76a..fdba23a2915f421f608e5d10711f2c885a1a9019 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! # Bridge Hub Rococo Runtime //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs index ca1d8dcbe56782dba07ea4a2bae3a4978394a1f5..9ad5bac66b75a8752ce2b380aae78db47ee5398a 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/frame_system_extensions.rs index 93fb6f3bbbe30706eb278000a66c7e48568cf9e5..c2d079dd8dde9e76b8d2e75d24ea2c84245e617d 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_balances.rs index d67ae4dee92a8a9eec7ebefeda52fda7c08b6fab..7cbba55defd15376b912c69ee517d9510b24deae 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_grandpa.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_grandpa.rs index a9cc2411a9c66be498ff3148500baf82ef6623f9..55a6ab4d7d98da1bdb85a72979edb936bbaa4ef9 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_grandpa.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_grandpa.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_grandpa` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_rococo_bulletin.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_rococo_bulletin.rs index cde511fc749d470d5742768fd7bab6b6ee55adbd..fadae80335a1091283ee50979c55c171ff148f54 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_rococo_bulletin.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_rococo_bulletin.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_messages` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_westend.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_westend.rs index b27bbf4ff6c6323634a05c61690f2ab04edb5f0d..6884f77f4766bb2ef08d7c7676fad0d5cc92659e 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_westend.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_westend.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_messages` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_parachains.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_parachains.rs index 3629d8797bf7fa3fc379864ba1fc4afadd59fc73..0c1ddbf304e80294167f09281d850f26bd419e34 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_parachains.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_parachains.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_parachains` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_relayers.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_relayers.rs index b7318361c7d9e38992cfbaec711ada6cd1f16cff..c30abd093d14bf23f70db551e45cef61641a48ed 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_relayers.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_relayers.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_relayers` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_multisig.rs index 4ee6f6725409b5bc0f0293cac4c8a42920cd0137..6bb15bd06970bd33b7e08f668031d0c1dca61fa1 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_transaction_payment.rs index 71d17e7259f72c023be3d75f37300c1a45c41d6f..add46ce22fea65e940d4d434791f2d3485c7ebff 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_xcm.rs index 0a085b858251d2fab58602a96187df3667543662..478984d9d9f78d5699c491e15eed894129e2b561 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index 4a5623fc8b93ed97d7df8522424adc5560cdf45a..9418d532a3cab17ab91036651b8746b18f6f90ea 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index daf22190a42b639c67a596f553c0b99c4cbed632..ccc21c39acbf6bb381b1b4cf1cdeb1c8c6a19b41 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs index b37945317f6cffe550ac59742e1b2f8fd8749a48..12dc7e5dd7332873418905407be250286b18484b 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::{ AccountId, AllPalletsWithSystem, Balances, BaseDeliveryFee, FeeAssetId, ParachainInfo, diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/snowbridge.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/snowbridge.rs index c40aae5a82a9035c787f391ebc712d356e56afb5..e49f949fdf35a589f483de80a339e6bcfd88436c 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/snowbridge.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/snowbridge.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs index b0f4366e29cf057b7ed6bc6b4c8a97fc46249456..23b85388b0cba82569c3e3fe09e8ce63591291a6 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_common_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_common_config.rs index 0872d0498f85789edb4c105831754f6e0f406bf1..a5ab4e5137853d3b437af9387bc47d4c8ea403d3 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_common_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_common_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Bridge definitions that can be used by multiple BridgeHub flavors. //! All configurations here should be dedicated to a single chain; in other words, we don't need two diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs index 94921fd8af9a36dac8ba781c10a0f50c503153a2..e4b0c4f99b84e944da16ba14a4c2db612cafa682 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #[cfg(not(feature = "runtime-benchmarks"))] use crate::XcmRouter; diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs index a5fb33cf504d50dccd01ef38d6339341c8362f90..cdad13212676a8a0788faebe62b2897968215e52 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Bridge definitions used on BridgeHub with the Westend flavor. diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs index 36b565bdca1c9923cefe6f27617b9c38fc71ce0b..45d08ba8546cded82756786f564d9f888dbd4562 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! # Bridge Hub Westend Runtime //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs index 955b273254562376b7cdcb0c4175648a4de935f2..4a13db871f4374b2565bfa77fe65f35336eea5fb 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system.rs index 7db371d6af93068467cbeafaa454330325da7791..3d416dd60a913630517620b35c143bd36be400cb 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system_extensions.rs index 21cadac25e161565c43e03efc9e0684db1c28bc4..d9c5d89fc0b5db53d0d0aae013d1f10354029042 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_balances.rs index 34ce487216f24f0a93ecec89610f298c4c9eae35..b789583736d4431c2156aeb62c0265f621f72ad3 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_grandpa.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_grandpa.rs index 74bf144ac712fffa2231832d5ed3c382dd0c05af..16eadb342f3fd126a3953747fefdb8c689b05cd8 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_grandpa.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_grandpa.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_grandpa` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_messages.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_messages.rs index 492226d3ec2b50ed9a3f3d42c754b245c5c73629..9f6f2ef5938e9ba3757ce070cadffd63bf0935d9 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_messages.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_messages.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_messages` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_parachains.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_parachains.rs index 87c5057cf9b862a0afe91303b50e9cd7e67dd66b..b87023e12f36fe913e88c2b3d606e4cb17a39d1f 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_parachains.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_parachains.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_parachains` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_relayers.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_relayers.rs index 74be73df14030b7115af80f636ec585139158d59..4127624f1b87c48fb95420334f5b9ff0a46d74b8 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_relayers.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_relayers.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_relayers` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_collator_selection.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_collator_selection.rs index 9dcee77082b99f586707a77a540cf6b13bd2be16..a9bb80d22eb5d1d2d5a3d5343fc87b7c360cd0f2 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_collator_selection.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_collator_selection.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_collator_selection` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_multisig.rs index 599bed182de474b6e5b9d10e052e14ce32db21d0..ba0b15fbafd975088414af07ef16f5d1c06ce966 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_session.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_session.rs index c9d04f9c6df65892243220531ac9d42dc885702d..425aa9ea01f52a92481f39931ef4b801fa257da6 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_session.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_session.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_session` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_timestamp.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_timestamp.rs index 0a5bf9b9f9c1f8c483c2e2f86ae471b28e7f609a..17b13a66a7cb52e8ca8e3e385c6f52529642d1a8 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_timestamp.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_timestamp.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_timestamp` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_transaction_payment.rs index 92c53b918792257ddf932148fa10a4ba8016653f..213e3473386cd4ce3721493e1bd2e2fb6f15e092 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_utility.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_utility.rs index 44cd0cf91e7998cb504587c481d13b110c9db072..96ad9f70dcafd0ff3d5af7f729dae0ad3d45f795 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_utility.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_utility.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_utility` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_xcm.rs index fdae0c9a15229e16833929329ef463f4c9c46162..20f9432c19475b0d48b9211c1b1228981721d2e4 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs index 15a1dae09d9bb6afb3ff4c5babfe2624785826ac..a59038be6a5c1bea4d83b958b8aec9fc3f204222 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. mod pallet_xcm_benchmarks_fungible; mod pallet_xcm_benchmarks_generic; diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index 555303d30b613a68bedd9a55f59c742f7614ef62..d4660ff7e3d9410da5d74a735f69d712b5b58c7a 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index 03cbaa866ad8041d4131477f59fa8dd0a908486d..ead5ec795941f7ddb225714b0a054bf0e43ffe56 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs index befb63ef97098c9ff2c03af3b728bc69281feb9d..1585ef692fd52306a0beb186454eda6278a5ca65 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::{ AccountId, AllPalletsWithSystem, Balances, BaseDeliveryFee, FeeAssetId, ParachainInfo, diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/snowbridge.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/snowbridge.rs index bc570ef7f74bc58495002cb49507304b928a38d6..8e255831c8ce7ff8be4da23a648a5f34f526edcc 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/snowbridge.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/snowbridge.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs index d7e7fbe0c72e56f807c2d488d421519086171a77..c9a97af63461513af201a2357abdb89100d02b18 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/bridge-hubs/common/tests/tests.rs b/cumulus/parachains/runtimes/bridge-hubs/common/tests/tests.rs index 84c135728d5dce17cbc8ef52dc0bedd9b20e304a..439a267d6ec430ac09b48fc7e3e8ddcd1a9de580 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/common/tests/tests.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/common/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] use bridge_hub_common::DenyExportMessageFrom; diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/lib.rs index 240aac6c406350b0f1fbb59ddd3e9315af677099..f74b1f60191c036a8cae7801aa7416d82c7fbd1a 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for "BridgeHub" `Runtime`s. diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_grandpa_chain.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_grandpa_chain.rs index 4a7975b2d9f288b1416e2d678a6af4130ecdfee2..036223759e6550853cc824a58e849d99698fd587 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_grandpa_chain.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_grandpa_chain.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for `Runtime` with bridging capabilities //! with remote GRANDPA chain. diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_parachain.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_parachain.rs index 7e87d703888a374979e174b005d77bda80eca828..4fbfe18b9953f5308427f71388cbb0f0b679a4c8 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_parachain.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_parachain.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for `Runtime` with bridging capabilities //! with remote parachain. diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/helpers.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/helpers.rs index 505babdb64155601eb65e032139c5f463def4c7a..1d6935b843b74dff3b471152bdfa4629253b7284 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/helpers.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/helpers.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains tests code, that is shared by all types of bridges diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs index fa0229ce06881a2193ac36d8e05240dc2e149744..a964cb26da0f2df222e037fb0d9bc3089ecce1c7 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for `Runtime` with bridging capabilities. //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_grandpa_chain.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_grandpa_chain.rs index 37605350b8e643a2de91b88dbfcc3a44d9e2d6da..6811d4a27a6f546ac42295d8eee76cd8218fdecf 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_grandpa_chain.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_grandpa_chain.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Generating test data for bridges with remote GRANDPA chains. diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_parachain.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_parachain.rs index 4d91c8215880037cfb39b4c0fff00046b0e29b9b..6039a6b78ce70b8ee9dc2cacbb622ff69af36155 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_parachain.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_parachain.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Generating test data for bridges with remote parachains. diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/mod.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/mod.rs index cef3c84b8178568e7a0ddb4939f76ca066c52655..2a43f2d7e28a2d6357953a179cd0a403e8300fb1 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/mod.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Generating test data, used by all tests. diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/ambassador/mod.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/ambassador/mod.rs index a052a9d3800cc6880ccee84358883194cb46eb80..8b0842697237fb51b0097b49d8f74b18fab32970 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/ambassador/mod.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/ambassador/mod.rs @@ -154,6 +154,7 @@ impl pallet_referenda::Config<AmbassadorReferendaInstance> for Runtime { type AlarmInterval = AlarmInterval; type Tracks = tracks::TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } parameter_types! { diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs index 1e8212cf6ac280a358fe168fc1e22d1eed6fc274..3fcaeb1dfc4fc6c2a7b6a9c55de9ae50a56fb68d 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! The Westend Technical Fellowship. @@ -106,6 +106,7 @@ impl pallet_referenda::Config<FellowshipReferendaInstance> for Runtime { type AlarmInterval = ConstU32<1>; type Tracks = tracks::TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = crate::System; } pub type FellowshipCollectiveInstance = pallet_ranked_collective::Instance1; diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/origins.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/origins.rs index 5ed2c19f79e6464fc09a349d8dce3c09afad2d55..20476a968e405f208cdb4113053fd1423d2f8772 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/origins.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/origins.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Fellowship custom origins. diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/tracks.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/tracks.rs index 099bdf4cf7539ed27c2c5af4178113d8cbbd2d1e..d7959f7724488edbbf3447447b1167b14284e271 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/tracks.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/tracks.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Track configurations for Fellowship. diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/cumulus_pallet_weight_reclaim.rs index c286ba132022791157e6bd9861375c62156edf61..b2b0f1598212f9c9717e2f3be09a6f3e500174cd 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/frame_system_extensions.rs index 8c2abcd4e8c88fa2e888eb3caca38b57f9bac5eb..721ea54e94a3ee11bfed8c7d58511aaca1bd6732 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_asset_rate.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_asset_rate.rs index 51b0580f8575f643d48f4a094d8a6fb2548acc80..10b460825df3818ccf7bf24b0381b114d5d1314f 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_asset_rate.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_asset_rate.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_rate` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_balances.rs index b100b0f2b1a83f6c939e25c88493814a80d29bd4..59355c8570314ab928280577cc39f584a4248c8b 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_collective.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_collective.rs index d456f5b8c4606d38550408b132e941ce99f82c16..4ddebad9acac06ca115e7a6783f3de6f3e3ccc82 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_collective.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_collective.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_collective` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_ambassador_core.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_ambassador_core.rs index 4d092ec80313bc8fbd7d6efee143342f8ea19580..a124b028a7ee288fb09ef3c26d029678be409fdd 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_ambassador_core.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_ambassador_core.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_core_fellowship` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_fellowship_core.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_fellowship_core.rs index acb1f82985db700ffe4d6f49bf15d85af50fd15a..a707dd34be812471560f49f92cb2dd6e284c8e6a 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_fellowship_core.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_fellowship_core.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_core_fellowship` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_multisig.rs index 5c428bb5e5eacfee1c0a94625d1fa9ab3ec46493..0fe7a9faa19b6664d6961564a30f987967043c13 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_ranked_collective_ambassador_collective.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_ranked_collective_ambassador_collective.rs index 8f6aa583a41c1685ab2d46e14ef1266a79452291..df1865ba7426b506cc9de053cc04bb451be8f83d 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_ranked_collective_ambassador_collective.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_ranked_collective_ambassador_collective.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_ranked_collective` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_referenda_ambassador_referenda.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_referenda_ambassador_referenda.rs index fdc451c5d31ccae8a1195482ef32e99163c22442..7f9a5fc66e3477d8dea8f20fd7e2d4c210c191ce 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_referenda_ambassador_referenda.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_referenda_ambassador_referenda.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_referenda` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_salary_ambassador_salary.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_salary_ambassador_salary.rs index 0522420f2f5172ecc2840b70ecb9c74796bbddc3..ced5b512400dc26a34d2fa25a161efca25a14e82 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_salary_ambassador_salary.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_salary_ambassador_salary.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_salary` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_scheduler.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_scheduler.rs index 42e37b967e4c88acccd13c8cb71bd22b1bc2d3dd..94015445530cd4434ef9c7ebcf47bb6465c71f36 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_scheduler.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_scheduler.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_scheduler` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_transaction_payment.rs index 5d077b89d56421a05cd64bec99ecdad445049528..50ee9e25995be503edf82fa14d361e66bcb91398 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_transaction_payment.rs @@ -1,15 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see <http://www.gnu.org/licenses/>. diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_treasury.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_treasury.rs index 5c513c3754ce84605465aa48ac43e7731e798d2a..cbfaea46b32db44d94e354fd071d4ac521f6d46a 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_treasury.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_treasury.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_treasury` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_xcm.rs index c0389cbcdb42ceea8656d99f53b2eb7ddac2e407..834a008cd3b4bd95053dfb9c89c2454982fb337b 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index f6a140f3157fceb5337c6a26e0d926c7b68b9c4b..991364efbe072a8e0b9910482dcc3e89c483dffb 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index 8e732546437a9ae4993edfe1bd39e8887fafb1d4..c4d6e8b289843b93d13b246147810746857326fe 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/tests/tests.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/tests/tests.rs index c9191eba49f6a57b6bd05069c6287f024429a527..f99bc39fc83444dcaa6a886abcf2dc83db67938b 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/tests/tests.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs index eaaaf0a9a9a7b019f245885e823c6cf635b60551..5ad4026e0b2b4cba04460d285253da42b14b077d 100644 --- a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs +++ b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// http://www.apache.org/licenses/LICENSE-2.0 // -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! # Contracts Parachain //! diff --git a/cumulus/parachains/runtimes/contracts/contracts-rococo/tests/tests.rs b/cumulus/parachains/runtimes/contracts/contracts-rococo/tests/tests.rs index 02c4b7b3963b55c7100436f426062cf7d4e574dc..152c12a7697d34f8c49729dcd8e9244835670604 100644 --- a/cumulus/parachains/runtimes/contracts/contracts-rococo/tests/tests.rs +++ b/cumulus/parachains/runtimes/contracts/contracts-rococo/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs index 35c3dd8836a801448e2e90f2bbc1950a2edc21da..a837b8d25dcf7a1f5b03e598447f8e34c0e0e49c 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs @@ -1,18 +1,18 @@ -// Copyright 2022 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{xcm_config::LocationToAccountId, *}; use codec::{Decode, Encode}; diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_parachain_system.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_parachain_system.rs index 139e37c544898e27e218619918c212742635d97e..60e8a1414e9505863a6fa36cd14c160750244e07 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_parachain_system.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_parachain_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_parachain_system` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_weight_reclaim.rs index 6298fd6e7f69815e659af5a404b1bc2bf0f41d5b..f09ca7079ac35d370df2946e2cc8bbd55850b960 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_xcmp_queue.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_xcmp_queue.rs index efbe7980de281184ecac4c9baf33ac165d41e575..1fa908e877b90105926eaddacf6bfffde87b58b0 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_xcmp_queue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_xcmp_queue` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system.rs index 428976e3e036e5b85a9ac216ffd985b0a2f28692..d494f457709b6a6c53936eb3b7f0163fb382c33a 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system_extensions.rs index 04b695b5769302f51ce764bfff219900bff107eb..2b4bbb426032a54cf05b756532ed00039c90c09f 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_balances.rs index a021d11478480bb941fbd79b85ec85eef25d3a66..f767cf85a513137c29688eb3496b67d678c082db 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_broker.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_broker.rs index 3e4bbf379c3ff9efe276cd2c996bf1863d775746..f83cd5fd0e6f8337d72bc27af6fb5566d2116445 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_broker.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_broker.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_broker` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_collator_selection.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_collator_selection.rs index b62a6c2fce5b83d45d8c60264c0a62421fd445dd..b2ec58ed156bd804f6eab649e0e740a8589f5252 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_collator_selection.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_collator_selection.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_collator_selection` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_message_queue.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_message_queue.rs index 934ab627bc8835f40c53c47c6ec5b3c2ec72320e..2b04ff3da8f7bb978eee28ed4ffafee0fca83836 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_message_queue.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_message_queue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_message_queue` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_multisig.rs index f3ab1b1cac8a50178040be3504bd3fafdb969c0c..81ebf5cb905e89915083ebd0c97404f4bbafbc89 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs index 5f95906f473ec5c887ac2c1648e06b304af357fa..24f593fc976c58681a379b616c1c06a0e5b78c45 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_proxy` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_session.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_session.rs index 409d92be4fcb2eca5d7d9740ef990f2cbf03e79f..576e539d4f6b0b396e496c6bb4d33a67b818d7ed 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_session.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_session.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_session` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_timestamp.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_timestamp.rs index c171353404e0d8f213a17a8bad2100ec9d85280b..cc636ac915b39325415c00b7d6b6335ed218538f 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_timestamp.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_timestamp.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_timestamp` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_transaction_payment.rs index 29d48abab8956c79724b9544b99f06ef9303abaa..3832b2726b3897d8095836df01553e23c44dcca1 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_utility.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_utility.rs index 84eb97838680cfcb2c3aaf24bd90694f60da835d..332aacf48599e5d9af45742074d5bcc9560261a1 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_utility.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_utility.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_utility` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_xcm.rs index b2b8cd6e5349da82003132ef3c5a587943af9595..b14f2fc4778934a3a9afafefa736fd488b5fc3bf 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs index dc21e2ea117fbfd9877e5a1f1c31e41d6d1b8400..5f3abf1ab01dbc55e4729fcfc8177d88d1a59471 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. mod pallet_xcm_benchmarks_fungible; mod pallet_xcm_benchmarks_generic; diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index 0a2d74de0cb8e42a801daeca2470aed82c417dd9..90e0a5c543cfcad0d228b3c6825e42d9035e01d4 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index cdcba6134bf82876d18369bf903ec6c2671edfe8..2e26653cd75e2198820510c823999ce149be514b 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs index 33ad172962a151aa496bce594af0ae1501145a0b..7c3f8a365856cce2f773223a152200abbdd669f1 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs @@ -1,18 +1,18 @@ -// Copyright 2023 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::{ AccountId, AllPalletsWithSystem, Balances, BaseDeliveryFee, Broker, FeeAssetId, ParachainInfo, diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/tests/tests.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/tests/tests.rs index 89a593ab0f576690186d19584c73b10c49717b7c..dea41c093fb36ee86745c91cd258f4799e2a0dd6 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/tests/tests.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs index 985e64fb76f9ab4d177a4d43191b5d1f15429ab3..805861b1f8bdb90acd967e93bdaf198c892ee64c 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs @@ -1,18 +1,18 @@ -// Copyright 2022 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{xcm_config::LocationToAccountId, *}; use codec::{Decode, Encode}; diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_parachain_system.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_parachain_system.rs index 1c9119361985cd541ca42dce6eb8d2f355a29c6c..3dff3998bc24c2cd38042e10769ab6c931f649e0 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_parachain_system.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_parachain_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_parachain_system` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_weight_reclaim.rs index 55d52f4b04c8788f1bc05472516e1de4e6d65c92..b6766c21bd5a38622c6d219e67ad8662f19794b2 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_xcmp_queue.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_xcmp_queue.rs index 0b0524339aa761053a7c559a3a2ab725c0cb6c22..4eb165b7491c89577877172fe19329e122f44b26 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_xcmp_queue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_xcmp_queue` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system.rs index b4b7cbf05a5ec757bc3a60e08ef62678029b47f2..ad8fc21ad4e7e8c42bc1edb7eaf0918b4f052826 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system_extensions.rs index 9527e0c5549a788b5d5995aa65a0ed30c909f426..610d505a8cdfbb1c456bf6602873047cb06e85f2 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_balances.rs index 7024c58d97f961199784890142dbde3558e16ab4..95d1d25fff4868330463e09739cfbccdec239d38 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_broker.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_broker.rs index a0eee2d99efa3c2d84cc8ec5bab3fd4190db51f7..e431ccbbc29fde5f3673318d2925e605f9dd4bbd 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_broker.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_broker.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_broker` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_collator_selection.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_collator_selection.rs index 2341890c314ec422aebf30b27111502a01909c25..39526b27c499e934e449c89c135e3630d052abea 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_collator_selection.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_collator_selection.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_collator_selection` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_message_queue.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_message_queue.rs index e9cdc2478766de88bfd3cc8765ba472bac61db30..ec7db3d260bb749df68a093a651c01146a21b385 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_message_queue.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_message_queue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_message_queue` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_multisig.rs index 044356f1e146728de721c78eba2e7b512d234113..ddb33e4ed8f44131df2b2296c7dc4e687efc0304 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs index d3edc1a8b2008276553dee2cc802c437411b8863..3b7e7968c2449ce960ba71c9360ca4fd62e18fa5 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_proxy` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_session.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_session.rs index b0d993d68a6a4e824c6050a3edef87870438e6b2..b0b77f957502fbcb90caec4bbcf8faa9053cc159 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_session.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_session.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_session` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_timestamp.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_timestamp.rs index ad8924d9ce7374c285ddc662c59d860707443bfc..b8038c348f92835452e896fa2a83714bb7fe253f 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_timestamp.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_timestamp.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_timestamp` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_transaction_payment.rs index f159f877afe77d7b7b98524d726e3867c6f80588..771fa20953e0769cefbde5d2392e00210c94a69e 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_utility.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_utility.rs index 0f5340843bd6481da855cb403b2b7d6442ed0a52..6d30c26dfbe7e8b124eb2be20163fe94724b8b0d 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_utility.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_utility.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_utility` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_xcm.rs index 7659b8a1ac7e1e417db05d43120e16d3912291cc..fbb60034d58ce2f473901ac2cabd4c5631a2bc78 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index 227f3617da00e0b875b48331529b1dea50a632be..9a1a8632c0a265696a86d2905d70b480812484de 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index 2d10ac16ea26b66bd4c5ec9be3f7b4a968985b5b..0a57ff349ff985b917f1103436ddd703310d0718 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs index 8a4879a1506eed39c1728ea62e3754687e75b501..a124c1978309e5ed4aca61f14588473c9eaea4d2 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs @@ -1,18 +1,18 @@ -// Copyright 2023 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::{ AccountId, AllPalletsWithSystem, Balances, BaseDeliveryFee, Broker, FeeAssetId, ParachainInfo, diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/tests/tests.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/tests/tests.rs index 976ce23d6e8741e351a2a7b075f96ab38000350c..f92486f369614a8e4257e404a05c1c924698af99 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/tests/tests.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/cumulus_pallet_parachain_system.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/cumulus_pallet_parachain_system.rs index bc8299ab1bd678e58a7909c1de4b0b55f4e1bedf..063ec0521d56dab820fa62ff0b01bb38fbdcfa44 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/cumulus_pallet_parachain_system.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/cumulus_pallet_parachain_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_parachain_system` //! diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system.rs index b68f16c9865894170b4e8aba3e524e4771fde2fc..311287860898a9f28a9a778adf636e5dab4f20af 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system` //! diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system_extensions.rs index db9a14e2cf242ab40c4fb68aaa1a90fbe4605501..dae0b9befd5068d39a1d5405354bbfcf4a01b002 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_glutton.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_glutton.rs index 9345458a704af3dd86b77b0030ae6861b8b2ed23..43d04a5e17654bd66121526da3faea2fd61830d5 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_glutton.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_glutton.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_glutton` //! diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_message_queue.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_message_queue.rs index eab6c15a40d28019967dd3112b1b2bc037b93106..3e3d5212279690cabb154c985fd6bdbb62009075 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_message_queue.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_message_queue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_message_queue` //! diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_timestamp.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_timestamp.rs index 4218dcc73f4e608e8b40ae5c4fcdd927747a5084..d4da87ab4d6bf3be9c9df38c69635cf23721f15f 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_timestamp.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_timestamp.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_timestamp` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/cumulus_pallet_weight_reclaim.rs index 439855f857192a7c729f5aa49e2b90a1aabd7407..0317a1f4bb3e9024607f235ffb1fffe82b4676fd 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/frame_system_extensions.rs index 3f12b25540ea669dff95ba4e8c9c87429a372af0..854af60e5679b6bc53bc82c3577953d70b881f39 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_balances.rs index 4990e8c12d5aa2f3f3be9ac6fb2181f5f6e80f7a..3a3ee951d3ce2812bdde1acef05b0b59c5f97fd3 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_migrations.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_migrations.rs index 61857ac8202a0383afdbb06198a528886dfbe418..881a830338f40fe172daef2ec1304e7fd6f20cf8 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_migrations.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_migrations.rs @@ -1,4 +1,5 @@ // Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Cumulus. // SPDX-License-Identifier: Apache-2.0 // Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,7 +14,33 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Need to rerun! +//! Autogenerated weights for `pallet_migrations` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0 +//! DATE: 2025-01-27, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `17938671047b`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024 + +// Executed Command: +// frame-omni-bencher +// v1 +// benchmark +// pallet +// --extrinsic=* +// --runtime=target/production/wbuild/people-rococo-runtime/people_rococo_runtime.wasm +// --pallet=pallet_migrations +// --header=/__w/polkadot-sdk/polkadot-sdk/cumulus/file_header.txt +// --output=./cumulus/parachains/runtimes/people/people-rococo/src/weights +// --wasm-execution=compiled +// --steps=50 +// --repeat=20 +// --heap-pages=4096 +// --no-storage-info +// --no-min-squares +// --no-median-slopes +// --genesis-builder-policy=none +// --exclude-pallets=pallet_xcm,pallet_xcm_benchmarks::fungible,pallet_xcm_benchmarks::generic #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -32,22 +59,24 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn onboard_new_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `276` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 7_762_000 picoseconds. - Weight::from_parts(8_100_000, 67035) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 4_483_000 picoseconds. + Weight::from_parts(4_781_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn progress_mbms_none() -> Weight { // Proof Size summary in bytes: - // Measured: `142` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 2_077_000 picoseconds. - Weight::from_parts(2_138_000, 67035) - .saturating_add(T::DbWeight::get().reads(1_u64)) + // Minimum execution time: 864_000 picoseconds. + Weight::from_parts(907_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -55,12 +84,13 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_completed() -> Weight { // Proof Size summary in bytes: - // Measured: `134` - // Estimated: `3599` - // Minimum execution time: 5_868_000 picoseconds. - Weight::from_parts(6_143_000, 3599) - .saturating_add(T::DbWeight::get().reads(1_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `0` + // Estimated: `3465` + // Minimum execution time: 3_978_000 picoseconds. + Weight::from_parts(4_149_000, 0) + .saturating_add(Weight::from_parts(0, 3465)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -68,11 +98,12 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_skipped_historic() -> Weight { // Proof Size summary in bytes: - // Measured: `330` - // Estimated: `3795` - // Minimum execution time: 10_283_000 picoseconds. - Weight::from_parts(10_964_000, 3795) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Measured: `34` + // Estimated: `3731` + // Minimum execution time: 7_432_000 picoseconds. + Weight::from_parts(7_663_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -80,11 +111,12 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_advance() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 9_900_000 picoseconds. - Weight::from_parts(10_396_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 6_915_000 picoseconds. + Weight::from_parts(7_112_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -92,12 +124,13 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_complete() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 11_411_000 picoseconds. - Weight::from_parts(11_956_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 8_561_000 picoseconds. + Weight::from_parts(8_701_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -107,19 +140,21 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_fail() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 12_398_000 picoseconds. - Weight::from_parts(12_910_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 8_998_000 picoseconds. + Weight::from_parts(9_348_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } fn on_init_loop() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 166_000 picoseconds. - Weight::from_parts(193_000, 0) + // Minimum execution time: 145_000 picoseconds. + Weight::from_parts(183_000, 0) + .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -127,9 +162,10 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_686_000 picoseconds. - Weight::from_parts(2_859_000, 0) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 2_137_000 picoseconds. + Weight::from_parts(2_275_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -137,9 +173,10 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_070_000 picoseconds. - Weight::from_parts(3_250_000, 0) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 2_625_000 picoseconds. + Weight::from_parts(2_748_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -147,26 +184,44 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn force_onboard_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `251` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 5_901_000 picoseconds. - Weight::from_parts(6_320_000, 67035) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Minimum execution time: 3_010_000 picoseconds. + Weight::from_parts(3_170_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: `MultiBlockMigrations::Historic` (r:256 w:256) /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) /// The range of component `n` is `[0, 256]`. fn clear_historic(n: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1122 + n * (271 ±0)` + // Measured: `960 + n * (271 ±0)` // Estimated: `3834 + n * (2740 ±0)` - // Minimum execution time: 15_952_000 picoseconds. - Weight::from_parts(14_358_665, 3834) - // Standard Error: 3_358 - .saturating_add(Weight::from_parts(1_323_674, 0).saturating_mul(n.into())) - .saturating_add(T::DbWeight::get().reads(1_u64)) + // Minimum execution time: 15_088_000 picoseconds. + Weight::from_parts(27_216_754, 0) + .saturating_add(Weight::from_parts(0, 3834)) + // Standard Error: 5_635 + .saturating_add(Weight::from_parts(1_399_330, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) .saturating_add(Weight::from_parts(0, 2740).saturating_mul(n.into())) } -} \ No newline at end of file + /// Storage: `Skipped::Metadata` (r:0 w:0) + /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[0, 2048]`. + fn reset_pallet_migration(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `1605 + n * (38 ±0)` + // Estimated: `686 + n * (39 ±0)` + // Minimum execution time: 1_168_000 picoseconds. + Weight::from_parts(1_235_000, 0) + .saturating_add(Weight::from_parts(0, 686)) + // Standard Error: 2_626 + .saturating_add(Weight::from_parts(936_331, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 39).saturating_mul(n.into())) + } +} diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_multisig.rs index 82fcacf64aca642ac892929cb2ac9cc295533053..22d85024a39b47971aa1f0d1c54b21869093ab8c 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs index 264213c94d449a787ce46a6ba962150f2fe813e4..3f3a9176d6b6a3db328f45fde5fc1d8fdf08e7dd 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_proxy` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_transaction_payment.rs index 555fd5a32fa874f3f046cbf819a2a4e938b4926b..4920885aab413f25418c72b118ef6451d6e42fdc 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_xcm.rs index d50afdbee47525c957f5f81291063c5ae8b750fb..77156e35c8dbcc11b71bb3457cf47f7461c11f94 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index f594c45e1cf63c772e7d1ac93a2d80fc675defce..f9e1bf29cf18ee4ad7a2831bb3a1d68ff36a5737 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index caa91650734821681f5d2db4157422794f8e15a6..afff62a1966927ed1b9803cde0638ff2a77419b5 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/tests/tests.rs b/cumulus/parachains/runtimes/people/people-rococo/tests/tests.rs index 00fe7781822ae1cef10258e08c7d1b14be714b32..ba331216db52679e54bf35a557126ea0adde18ce 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/tests/tests.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/cumulus_pallet_weight_reclaim.rs index fd3018ec9740111167a2e66189820aff72765ddd..76498e8cd17ade04cf63710418ad831076c0d4ec 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/frame_system_extensions.rs index 422b8566ad08a58a6f26f7c87e975d235305b3b2..ef1a045343b3318eaad8793a0ff14e0d44916f4d 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_balances.rs index 2649c1557a2f848826175e4b0ec1c30207f4fbb9..96cfe2e51664efb8d4a51d35fb709113f5294bb6 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_migrations.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_migrations.rs index 61857ac8202a0383afdbb06198a528886dfbe418..7f84fad5156fb51a481c9ab61861cda871079371 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_migrations.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_migrations.rs @@ -1,4 +1,5 @@ // Copyright (C) Parity Technologies (UK) Ltd. +// This file is part of Cumulus. // SPDX-License-Identifier: Apache-2.0 // Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,7 +14,33 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Need to rerun! +//! Autogenerated weights for `pallet_migrations` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0 +//! DATE: 2025-01-27, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `17938671047b`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024 + +// Executed Command: +// frame-omni-bencher +// v1 +// benchmark +// pallet +// --extrinsic=* +// --runtime=target/production/wbuild/people-westend-runtime/people_westend_runtime.wasm +// --pallet=pallet_migrations +// --header=/__w/polkadot-sdk/polkadot-sdk/cumulus/file_header.txt +// --output=./cumulus/parachains/runtimes/people/people-westend/src/weights +// --wasm-execution=compiled +// --steps=50 +// --repeat=20 +// --heap-pages=4096 +// --no-storage-info +// --no-min-squares +// --no-median-slopes +// --genesis-builder-policy=none +// --exclude-pallets=pallet_xcm,pallet_xcm_benchmarks::fungible,pallet_xcm_benchmarks::generic #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -32,22 +59,24 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn onboard_new_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `276` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 7_762_000 picoseconds. - Weight::from_parts(8_100_000, 67035) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 4_484_000 picoseconds. + Weight::from_parts(4_646_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn progress_mbms_none() -> Weight { // Proof Size summary in bytes: - // Measured: `142` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 2_077_000 picoseconds. - Weight::from_parts(2_138_000, 67035) - .saturating_add(T::DbWeight::get().reads(1_u64)) + // Minimum execution time: 777_000 picoseconds. + Weight::from_parts(841_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -55,12 +84,13 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_completed() -> Weight { // Proof Size summary in bytes: - // Measured: `134` - // Estimated: `3599` - // Minimum execution time: 5_868_000 picoseconds. - Weight::from_parts(6_143_000, 3599) - .saturating_add(T::DbWeight::get().reads(1_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `0` + // Estimated: `3465` + // Minimum execution time: 3_883_000 picoseconds. + Weight::from_parts(4_097_000, 0) + .saturating_add(Weight::from_parts(0, 3465)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -68,11 +98,12 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_skipped_historic() -> Weight { // Proof Size summary in bytes: - // Measured: `330` - // Estimated: `3795` - // Minimum execution time: 10_283_000 picoseconds. - Weight::from_parts(10_964_000, 3795) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Measured: `34` + // Estimated: `3731` + // Minimum execution time: 7_695_000 picoseconds. + Weight::from_parts(8_015_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -80,11 +111,12 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_advance() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 9_900_000 picoseconds. - Weight::from_parts(10_396_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 6_999_000 picoseconds. + Weight::from_parts(7_323_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -92,12 +124,13 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_complete() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 11_411_000 picoseconds. - Weight::from_parts(11_956_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 8_302_000 picoseconds. + Weight::from_parts(8_589_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -107,19 +140,21 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_fail() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 12_398_000 picoseconds. - Weight::from_parts(12_910_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 9_122_000 picoseconds. + Weight::from_parts(9_541_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } fn on_init_loop() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 166_000 picoseconds. - Weight::from_parts(193_000, 0) + // Minimum execution time: 146_000 picoseconds. + Weight::from_parts(168_000, 0) + .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -127,9 +162,10 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_686_000 picoseconds. - Weight::from_parts(2_859_000, 0) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 2_271_000 picoseconds. + Weight::from_parts(2_367_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -137,9 +173,10 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_070_000 picoseconds. - Weight::from_parts(3_250_000, 0) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 2_653_000 picoseconds. + Weight::from_parts(2_798_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -147,26 +184,44 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn force_onboard_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `251` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 5_901_000 picoseconds. - Weight::from_parts(6_320_000, 67035) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Minimum execution time: 3_084_000 picoseconds. + Weight::from_parts(3_233_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: `MultiBlockMigrations::Historic` (r:256 w:256) /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) /// The range of component `n` is `[0, 256]`. fn clear_historic(n: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1122 + n * (271 ±0)` + // Measured: `960 + n * (271 ±0)` // Estimated: `3834 + n * (2740 ±0)` - // Minimum execution time: 15_952_000 picoseconds. - Weight::from_parts(14_358_665, 3834) - // Standard Error: 3_358 - .saturating_add(Weight::from_parts(1_323_674, 0).saturating_mul(n.into())) - .saturating_add(T::DbWeight::get().reads(1_u64)) + // Minimum execution time: 18_761_000 picoseconds. + Weight::from_parts(22_980_278, 0) + .saturating_add(Weight::from_parts(0, 3834)) + // Standard Error: 5_634 + .saturating_add(Weight::from_parts(1_419_653, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) .saturating_add(Weight::from_parts(0, 2740).saturating_mul(n.into())) } -} \ No newline at end of file + /// Storage: `Skipped::Metadata` (r:0 w:0) + /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[0, 2048]`. + fn reset_pallet_migration(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `1605 + n * (38 ±0)` + // Estimated: `686 + n * (39 ±0)` + // Minimum execution time: 1_174_000 picoseconds. + Weight::from_parts(1_216_000, 0) + .saturating_add(Weight::from_parts(0, 686)) + // Standard Error: 3_009 + .saturating_add(Weight::from_parts(952_922, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 39).saturating_mul(n.into())) + } +} diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_multisig.rs index 5857a140e05e089fd059208372f8d13d8fc18ab9..2bcee64c4868bfc20736e6876a15c40399490372 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs index e962123f216c2d75bdbc9b8a05944ac6ce5e8b26..064786e8e1526208603bc9dff383becf6cf18490 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_proxy` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_transaction_payment.rs index 30e4524e586e24247f604e82c0ea974d43ff060c..62b8af8ea1c3281d7d512c34af58ea6f77a2c50d 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_xcm.rs index f06669209a1873a2d1a697fc46b2e803a9346032..8b00b4ec2b046941d5928f98fd3467309845930e 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index c12da204f35b485e97260c0f9356ed0f648d4655..4572c0685d81938913638bbd178948b983f3e355 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index 3fa51a816b69a9eeaace2da4a91bf8e7b5733e95..3434d46c1bded837dad55dd40346b833951ac8e5 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/tests/tests.rs b/cumulus/parachains/runtimes/people/people-westend/tests/tests.rs index 5cefec44b1cddf19ef2c875c86ff478e379d0f0f..3df1558b6f9d8f211fa0c1a7c21fa6b8e329605a 100644 --- a/cumulus/parachains/runtimes/people/people-westend/tests/tests.rs +++ b/cumulus/parachains/runtimes/people/people-westend/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/test-utils/src/test_cases.rs b/cumulus/parachains/runtimes/test-utils/src/test_cases.rs index 6bdf3ef09d1b8c9b345d77e54a084b166d98dc69..8a7f8d6303c86b1dfe162e54c7bc0167e8e1331d 100644 --- a/cumulus/parachains/runtimes/test-utils/src/test_cases.rs +++ b/cumulus/parachains/runtimes/test-utils/src/test_cases.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for `Runtime` with common functionality. diff --git a/cumulus/parachains/runtimes/testing/penpal/build.rs b/cumulus/parachains/runtimes/testing/penpal/build.rs index e47e483bf9c11300b2a8cb3399fbb0a464882429..16dfb26729e5653a1ca066a33449e38bbe2b9e89 100644 --- a/cumulus/parachains/runtimes/testing/penpal/build.rs +++ b/cumulus/parachains/runtimes/testing/penpal/build.rs @@ -1,18 +1,30 @@ -// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// This is free and unencumbered software released into the public domain. -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to <http://unlicense.org/> #[cfg(feature = "std")] fn main() { diff --git a/cumulus/parachains/runtimes/testing/penpal/src/lib.rs b/cumulus/parachains/runtimes/testing/penpal/src/lib.rs index 38ddf3bc1991b4e9541d111a6ec2c1fcf77dca88..095ae2ed9e962cdeaa7515d0708e13a1e9583e62 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/lib.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/lib.rs @@ -1,18 +1,30 @@ -// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Unlicense + +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to <http://unlicense.org/> //! The PenPal runtime is designed as a test runtime that can be created with an arbitrary `ParaId`, //! such that multiple instances of the parachain can be on the same parent relay. Ensure that you diff --git a/cumulus/parachains/runtimes/testing/penpal/src/weights/block_weights.rs b/cumulus/parachains/runtimes/testing/penpal/src/weights/block_weights.rs index 41e30725e753fef32404b858a873e2456618d56f..d06e885dbadf21304e9b53a1acc9888def39e71c 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/weights/block_weights.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/weights/block_weights.rs @@ -1,19 +1,30 @@ // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to <http://unlicense.org/> pub mod constants { use frame_support::{ diff --git a/cumulus/parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs b/cumulus/parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs index 3bd48f061bba079a76aa8f032ebecd6d40c2156c..9e2296fbacb9872649ab0fbdcc7f48ca7424eb00 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs @@ -1,19 +1,30 @@ // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to <http://unlicense.org/> pub mod constants { use frame_support::{ diff --git a/cumulus/parachains/runtimes/testing/penpal/src/weights/mod.rs b/cumulus/parachains/runtimes/testing/penpal/src/weights/mod.rs index 850dae6fbd06ea95d3c7c87c09325aacb123c0c4..b7fb5673b5d9c199bb1b36da4dec4697dd3b17d8 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/weights/mod.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/weights/mod.rs @@ -1,19 +1,30 @@ // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to <http://unlicense.org/> //! Expose the auto generated weight files. diff --git a/cumulus/parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs b/cumulus/parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs index e0b1985c659c78b66176423f6bcc64d546b39324..899817f4b7a4b5d78fe61580c3d01da5fdc6f64e 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs @@ -1,19 +1,30 @@ // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to <http://unlicense.org/> pub mod constants { use frame_support::{ diff --git a/cumulus/parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs b/cumulus/parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs index c6e91b2fcffbf65e3fdce2bc8fbac19a605d00aa..ca677ff0ce854668c40589e6d4d49baabeb3c5b1 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs @@ -1,19 +1,30 @@ // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to <http://unlicense.org/> pub mod constants { use frame_support::{ diff --git a/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs b/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs index 10481d5d2ebc49f09036f49204c7f107b3b4c696..82db8829e516a547d9bb5b8a1b2713bb0fb7f4ba 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs @@ -1,18 +1,30 @@ -// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Unlicense + +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to <http://unlicense.org/> //! Holds the XCM specific configuration that would otherwise be in lib.rs //! diff --git a/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs index 89cd17d5450ac2af19f6c550e2a4b62abd298dbf..f6b96b28a8dd6eb0716ed9483132ad67a14e82e0 100644 --- a/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg_attr(not(feature = "std"), no_std)] // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. diff --git a/cumulus/polkadot-omni-node/build.rs b/cumulus/polkadot-omni-node/build.rs index 8c498735eae965dfd3686c9031843c2c6d13f992..5b99610e14c7efced38cb5124799d6cddcef11c9 100644 --- a/cumulus/polkadot-omni-node/build.rs +++ b/cumulus/polkadot-omni-node/build.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed}; diff --git a/cumulus/polkadot-omni-node/lib/Cargo.toml b/cumulus/polkadot-omni-node/lib/Cargo.toml index 018fc88a2aeaf2018681e96a7e4baccaa17b2afa..020d980d3d9d6f96ed05f6afa474f695873d40d9 100644 --- a/cumulus/polkadot-omni-node/lib/Cargo.toml +++ b/cumulus/polkadot-omni-node/lib/Cargo.toml @@ -50,6 +50,7 @@ sc-consensus = { workspace = true, default-features = true } sc-consensus-manual-seal = { workspace = true, default-features = true } sc-executor = { workspace = true, default-features = true } sc-network = { workspace = true, default-features = true } +sc-offchain = { workspace = true, default-features = true } sc-rpc = { workspace = true, default-features = true } sc-runtime-utilities = { workspace = true, default-features = true } sc-service = { workspace = true, default-features = true } @@ -57,6 +58,7 @@ sc-sysinfo = { workspace = true, default-features = true } sc-telemetry = { workspace = true, default-features = true } sc-tracing = { workspace = true, default-features = true } sc-transaction-pool = { workspace = true, default-features = true } +sc-transaction-pool-api = { workspace = true, default-features = true } sp-api = { workspace = true, default-features = true } sp-block-builder = { workspace = true, default-features = true } sp-consensus = { workspace = true, default-features = true } @@ -66,6 +68,7 @@ sp-crypto-hashing = { workspace = true } sp-genesis-builder = { workspace = true } sp-inherents = { workspace = true, default-features = true } sp-keystore = { workspace = true, default-features = true } +sp-offchain = { workspace = true, default-features = true } sp-runtime = { workspace = true } sp-session = { workspace = true, default-features = true } sp-storage = { workspace = true, default-features = true } diff --git a/cumulus/polkadot-omni-node/lib/src/cli.rs b/cumulus/polkadot-omni-node/lib/src/cli.rs index 9c4e2561592db6682ea7051dc844465744d0da26..1c47eae57738f41e1ca19f31ba61f3782073930e 100644 --- a/cumulus/polkadot-omni-node/lib/src/cli.rs +++ b/cumulus/polkadot-omni-node/lib/src/cli.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! CLI options of the omni-node. See [`Command`]. diff --git a/cumulus/polkadot-omni-node/lib/src/command.rs b/cumulus/polkadot-omni-node/lib/src/command.rs index fe7f7cac097199c3ec70d9278e9eb63c83b3327f..bf0d264e8c9ca1238c5afa45c2f3f850b35a987b 100644 --- a/cumulus/polkadot-omni-node/lib/src/command.rs +++ b/cumulus/polkadot-omni-node/lib/src/command.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{ cli::{Cli, RelayChainCli, Subcommand}, diff --git a/cumulus/polkadot-omni-node/lib/src/common/aura.rs b/cumulus/polkadot-omni-node/lib/src/common/aura.rs index 9e8837de7f878c0a1566ac5f8aac84ef68b63f71..9ca725ff3279a8b362a3151d68e88af71d04ab84 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/aura.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/aura.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Aura-related primitives for cumulus parachain collators. diff --git a/cumulus/polkadot-omni-node/lib/src/common/chain_spec.rs b/cumulus/polkadot-omni-node/lib/src/common/chain_spec.rs index 974d6ef2b611275735c657674193ef0eae76c9ae..4759ee8586cb08482bb00fe476938bfd7bc42d0e 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/chain_spec.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/chain_spec.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Chain spec primitives. diff --git a/cumulus/polkadot-omni-node/lib/src/common/command.rs b/cumulus/polkadot-omni-node/lib/src/common/command.rs index a60fc9232d91107777c133ff62aee1a2ccd75e06..4db0632e037ac00d1bf4baba2aa7d7bc98d37626 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/command.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/command.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::common::spec::BaseNodeSpec; use cumulus_client_cli::ExportGenesisHeadCommand; diff --git a/cumulus/polkadot-omni-node/lib/src/common/mod.rs b/cumulus/polkadot-omni-node/lib/src/common/mod.rs index 37660a5347a20b8fad5b6452eed331f98806c8d7..af003b87e3d24e19d2c0169b29c10d432359d239 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/mod.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Cumulus parachain collator primitives. @@ -28,6 +28,7 @@ pub mod types; use cumulus_primitives_core::{CollectCollationInfo, GetCoreSelectorApi}; use sc_client_db::DbHash; +use sc_offchain::OffchainWorkerApi; use serde::de::DeserializeOwned; use sp_api::{ApiExt, CallApiAt, ConstructRuntimeApi, Metadata}; use sp_block_builder::BlockBuilder; @@ -65,6 +66,7 @@ pub trait NodeRuntimeApi<Block: BlockT>: + SessionKeys<Block> + BlockBuilder<Block> + TaggedTransactionQueue<Block> + + OffchainWorkerApi<Block> + CollectCollationInfo<Block> + GetCoreSelectorApi<Block> + Sized @@ -77,6 +79,7 @@ impl<T, Block: BlockT> NodeRuntimeApi<Block> for T where + SessionKeys<Block> + BlockBuilder<Block> + TaggedTransactionQueue<Block> + + OffchainWorkerApi<Block> + GetCoreSelectorApi<Block> + CollectCollationInfo<Block> { diff --git a/cumulus/polkadot-omni-node/lib/src/common/rpc.rs b/cumulus/polkadot-omni-node/lib/src/common/rpc.rs index 4879bd1eb7f47d343baa71aedeeb3c1b4760b4f7..d91d9fd1e9b3929af67e1d8f65c728231fe209db 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/rpc.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/rpc.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Parachain-specific RPCs implementation. diff --git a/cumulus/polkadot-omni-node/lib/src/common/runtime.rs b/cumulus/polkadot-omni-node/lib/src/common/runtime.rs index fcc1d7f0643e7702ee7da7687eb28d401a9092c2..420d30bf0ebf8e8a6daad9c21f7c48c401c30bff 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/runtime.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/runtime.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Runtime parameters. diff --git a/cumulus/polkadot-omni-node/lib/src/common/spec.rs b/cumulus/polkadot-omni-node/lib/src/common/spec.rs index 868368f3ca1a7b2179854ad77cbba52bf97ae5a0..b00823eb00c193701ab44dd608e9154cf7aa7a23 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/spec.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/spec.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::common::{ command::NodeCommandRunner, @@ -30,9 +30,11 @@ use cumulus_client_service::{ }; use cumulus_primitives_core::{BlockT, ParaId}; use cumulus_relay_chain_interface::{OverseerHandle, RelayChainInterface}; +use futures::FutureExt; use parachains_common::Hash; use polkadot_primitives::CollatorPair; use prometheus_endpoint::Registry; +use sc_client_api::Backend; use sc_consensus::DefaultImportQueue; use sc_executor::{HeapAllocStrategy, DEFAULT_HEAP_ALLOC_STRATEGY}; use sc_network::{config::FullNetworkConfiguration, NetworkBackend, NetworkBlock}; @@ -41,6 +43,7 @@ use sc_sysinfo::HwBench; use sc_telemetry::{TelemetryHandle, TelemetryWorker}; use sc_tracing::tracing::Instrument; use sc_transaction_pool::TransactionPoolHandle; +use sc_transaction_pool_api::OffchainTransactionPoolFactory; use sp_keystore::KeystorePtr; use std::{future::Future, pin::Pin, sync::Arc, time::Duration}; @@ -303,6 +306,27 @@ pub(crate) trait NodeSpec: BaseNodeSpec { }) .await?; + if parachain_config.offchain_worker.enabled { + let offchain_workers = + sc_offchain::OffchainWorkers::new(sc_offchain::OffchainWorkerOptions { + runtime_api_provider: client.clone(), + keystore: Some(params.keystore_container.keystore()), + offchain_db: backend.offchain_storage(), + transaction_pool: Some(OffchainTransactionPoolFactory::new( + transaction_pool.clone(), + )), + network_provider: Arc::new(network.clone()), + is_validator: parachain_config.role.is_authority(), + enable_http_requests: false, + custom_extensions: move |_| vec![], + })?; + task_manager.spawn_handle().spawn( + "offchain-workers-runner", + "offchain-work", + offchain_workers.run(client.clone(), task_manager.spawn_handle()).boxed(), + ); + } + let rpc_builder = { let client = client.clone(); let transaction_pool = transaction_pool.clone(); diff --git a/cumulus/polkadot-omni-node/lib/src/common/types.rs b/cumulus/polkadot-omni-node/lib/src/common/types.rs index 978368be25847233632bce5c39caf0bc07bdf42f..6915835137f72a7a30cae352952ef31f92d68e1a 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/types.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/types.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_client_consensus_common::ParachainBlockImport as TParachainBlockImport; use cumulus_primitives_core::relay_chain::UncheckedExtrinsic; diff --git a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/mod.rs b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/mod.rs index bd4ff167d8f11e6501933c29235b7cf5bccebea7..f5167e1baa45caa7a0f9a6084998ffc93911a458 100644 --- a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/mod.rs +++ b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! In an ideal world this would be one runtime which would simplify the code massively. //! This is not an ideal world - Polkadot Asset Hub has a different key type. diff --git a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs index 6bfd5f4f4cbd1743782303d0d5f6ab78d16c7b4a..636c845271d548485c7fafa1e290d7bab2c0892d 100644 --- a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs +++ b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. pub(crate) mod imports { pub use cumulus_primitives_core::{ClaimQueueOffset, CoreSelector}; @@ -111,6 +111,12 @@ macro_rules! impl_node_runtime_apis { } } + impl sp_offchain::OffchainWorkerApi<$block> for $runtime { + fn offchain_worker(_: &<$block as BlockT>::Header) { + unimplemented!() + } + } + impl sp_session::SessionKeys<$block> for $runtime { fn generate_session_keys(_: Option<Vec<u8>>) -> Vec<u8> { unimplemented!() diff --git a/cumulus/polkadot-omni-node/lib/src/lib.rs b/cumulus/polkadot-omni-node/lib/src/lib.rs index 92ea3d7d8791f9929dbebdbb9f8d3de897e077f3..eb1371d0dedecb72583b75c1929ff092970c6f83 100644 --- a/cumulus/polkadot-omni-node/lib/src/lib.rs +++ b/cumulus/polkadot-omni-node/lib/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![doc = include_str!("../README.md")] #![deny(missing_docs)] diff --git a/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs b/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs index cd0e35d0d0699d10ba46f15e002da90d59813cbb..0d526b09834e9035ac02faa167cd4f0b6ffaecb1 100644 --- a/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs +++ b/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{ common::{ diff --git a/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs b/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs index f33865ad45cddd5bd9b6b9bb858cb69d86313bda..7c5221632d8987995fc9278a67cb0c04a57ef4be 100644 --- a/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs +++ b/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::common::{ rpc::BuildRpcExtensions as BuildRpcExtensionsT, @@ -21,14 +21,18 @@ use crate::common::{ }; use codec::Encode; use cumulus_client_parachain_inherent::{MockValidationDataInherentDataProvider, MockXcmConfig}; +use cumulus_primitives_aura::AuraUnincludedSegmentApi; use cumulus_primitives_core::{CollectCollationInfo, ParaId}; +use futures::FutureExt; use polkadot_primitives::UpgradeGoAhead; +use sc_client_api::Backend; use sc_consensus::{DefaultImportQueue, LongestChain}; use sc_consensus_manual_seal::rpc::{ManualSeal, ManualSealApiServer}; use sc_network::NetworkBackend; use sc_service::{Configuration, PartialComponents, TaskManager}; use sc_telemetry::TelemetryHandle; -use sp_api::ProvideRuntimeApi; +use sc_transaction_pool_api::OffchainTransactionPoolFactory; +use sp_api::{ApiExt, ProvideRuntimeApi}; use sp_runtime::traits::Header; use std::{marker::PhantomData, sync::Arc}; @@ -117,6 +121,27 @@ impl<NodeSpec: NodeSpecT> ManualSealNode<NodeSpec> { metrics, })?; + if config.offchain_worker.enabled { + let offchain_workers = + sc_offchain::OffchainWorkers::new(sc_offchain::OffchainWorkerOptions { + runtime_api_provider: client.clone(), + keystore: Some(keystore_container.keystore()), + offchain_db: backend.offchain_storage(), + transaction_pool: Some(OffchainTransactionPoolFactory::new( + transaction_pool.clone(), + )), + network_provider: Arc::new(network.clone()), + is_validator: config.role.is_authority(), + enable_http_requests: true, + custom_extensions: move |_| vec![], + })?; + task_manager.spawn_handle().spawn( + "offchain-workers-runner", + "offchain-work", + offchain_workers.run(client.clone(), task_manager.spawn_handle()).boxed(), + ); + } + let proposer = sc_basic_authorship::ProposerFactory::new( task_manager.spawn_handle(), client.clone(), @@ -158,16 +183,24 @@ impl<NodeSpec: NodeSpecT> ManualSealNode<NodeSpec> { .expect("Header lookup should succeed") .expect("Header passed in as parent should be present in backend."); - let should_send_go_ahead = match client_for_cidp + let should_send_go_ahead = client_for_cidp .runtime_api() .collect_collation_info(block, ¤t_para_head) - { - Ok(info) => info.new_validation_code.is_some(), - Err(e) => { - log::error!("Failed to collect collation info: {:?}", e); - false - }, - }; + .map(|info| info.new_validation_code.is_some()) + .unwrap_or_default(); + + // The API version is relevant here because the constraints in the runtime changed + // in https://github.com/paritytech/polkadot-sdk/pull/6825. In general, the logic + // here assumes that we are using the aura-ext consensushook in the parachain + // runtime. + let requires_relay_progress = client_for_cidp + .runtime_api() + .has_api_with::<dyn AuraUnincludedSegmentApi<NodeSpec::Block>, _>( + block, + |version| version > 1, + ) + .ok() + .unwrap_or_default(); let current_para_block_head = Some(polkadot_primitives::HeadData(current_para_head.encode())); @@ -183,8 +216,10 @@ impl<NodeSpec: NodeSpecT> ManualSealNode<NodeSpec> { ), para_id, current_para_block_head, - relay_offset: 1000, - relay_blocks_per_para_block: 1, + relay_offset: 0, + relay_blocks_per_para_block: requires_relay_progress + .then(|| 1) + .unwrap_or_default(), para_blocks_per_relay_epoch: 10, relay_randomness_config: (), xcm_config: MockXcmConfig::new(&*client_for_xcm, block, Default::default()), diff --git a/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs b/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs index 5570170f90b2d55c0caa4627e44a4649c841e32c..de27ce3704fc3a9a8b7af2f015d12ee30b85e209 100644 --- a/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs +++ b/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. pub mod aura; mod manual_seal; diff --git a/cumulus/polkadot-omni-node/lib/src/tests/benchmark_storage_works.rs b/cumulus/polkadot-omni-node/lib/src/tests/benchmark_storage_works.rs index 8502188af511256ee3c66126f98f6f8c9b6a7a13..d0a350697b5c379d2cd1f6723d6319c7feb711ef 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/benchmark_storage_works.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/benchmark_storage_works.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(feature = "runtime-benchmarks")] diff --git a/cumulus/polkadot-omni-node/lib/src/tests/common.rs b/cumulus/polkadot-omni-node/lib/src/tests/common.rs index d3f41fb50bc6f095b245154d310f98261c2d61e8..2e4aeb3b2cf5c98f82004c2cf92ee76f03f0f543 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/common.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/common.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(unix)] diff --git a/cumulus/polkadot-omni-node/lib/src/tests/polkadot_argument_parsing.rs b/cumulus/polkadot-omni-node/lib/src/tests/polkadot_argument_parsing.rs index d1f497c1187a7cc6da300226c8d67b60312e8794..536fe62cea2d89db71e65c30dae1c6cc138063a1 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/polkadot_argument_parsing.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/polkadot_argument_parsing.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use tempfile::tempdir; diff --git a/cumulus/polkadot-omni-node/lib/src/tests/polkadot_mdns_issue.rs b/cumulus/polkadot-omni-node/lib/src/tests/polkadot_mdns_issue.rs index 3b0b08e57f839073f9fd6a0f64cf57c6a3b989a0..2619a996e47d29d21254bcb1e5a8b36e6b44de3f 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/polkadot_mdns_issue.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/polkadot_mdns_issue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use tempfile::tempdir; diff --git a/cumulus/polkadot-omni-node/lib/src/tests/purge_chain_works.rs b/cumulus/polkadot-omni-node/lib/src/tests/purge_chain_works.rs index 65a946e890bd8e32cdc7e497ee729281fcd2655a..2dc7421a3483f1154945ef0d69d5e7e3182f2f3e 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/purge_chain_works.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/purge_chain_works.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use assert_cmd::cargo::cargo_bin; use nix::sys::signal::SIGINT; diff --git a/cumulus/polkadot-omni-node/lib/src/tests/running_the_node_and_interrupt.rs b/cumulus/polkadot-omni-node/lib/src/tests/running_the_node_and_interrupt.rs index a45fd7f4575a056aa135e81475ac7cabc6eaae18..2475613b090888f4e4f2ce4f7e7f7f159ed75ecb 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/running_the_node_and_interrupt.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/running_the_node_and_interrupt.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use tempfile::tempdir; diff --git a/cumulus/polkadot-omni-node/src/main.rs b/cumulus/polkadot-omni-node/src/main.rs index 1183f488df8b1525dbc33384abbb8c637d8c8263..a20073c54c45ed6d17a9837de17b71430af08770 100644 --- a/cumulus/polkadot-omni-node/src/main.rs +++ b/cumulus/polkadot-omni-node/src/main.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! White labeled polkadot omni-node. //! diff --git a/cumulus/polkadot-parachain/build.rs b/cumulus/polkadot-parachain/build.rs index 8c498735eae965dfd3686c9031843c2c6d13f992..5b99610e14c7efced38cb5124799d6cddcef11c9 100644 --- a/cumulus/polkadot-parachain/build.rs +++ b/cumulus/polkadot-parachain/build.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed}; diff --git a/cumulus/polkadot-parachain/src/chain_spec/asset_hubs.rs b/cumulus/polkadot-parachain/src/chain_spec/asset_hubs.rs index ec2afc743de8a9d459787933d5c6276744f03b8f..b3a5bcafcfba82cd4bd711835b1f6678d4c301bc 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/asset_hubs.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/asset_hubs.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use polkadot_omni_node_lib::chain_spec::{Extensions, GenericChainSpec}; use sc_service::ChainType; diff --git a/cumulus/polkadot-parachain/src/chain_spec/bridge_hubs.rs b/cumulus/polkadot-parachain/src/chain_spec/bridge_hubs.rs index 839e93d0a67b316cd95ef56e9b0a67eaa9dc6485..e0c3c58802b6cf43a500d6125251b3273e3c79f6 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/bridge_hubs.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/bridge_hubs.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_primitives_core::ParaId; use polkadot_omni_node_lib::chain_spec::GenericChainSpec; diff --git a/cumulus/polkadot-parachain/src/chain_spec/collectives.rs b/cumulus/polkadot-parachain/src/chain_spec/collectives.rs index 0d2f66b5acc00c14ba660bd8417c264aaddef6f1..464bc810f9bc1380ee8ed8139cd9d63add02faf1 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/collectives.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/collectives.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use polkadot_omni_node_lib::chain_spec::{Extensions, GenericChainSpec}; use sc_service::ChainType; diff --git a/cumulus/polkadot-parachain/src/chain_spec/coretime.rs b/cumulus/polkadot-parachain/src/chain_spec/coretime.rs index fa865d7458cbe941698832dfc388abcf9bbc061d..0b61944444701109cd35c3520591423927fa6275 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/coretime.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/coretime.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_primitives_core::ParaId; use polkadot_omni_node_lib::chain_spec::GenericChainSpec; diff --git a/cumulus/polkadot-parachain/src/chain_spec/glutton.rs b/cumulus/polkadot-parachain/src/chain_spec/glutton.rs index ddfb961370ac7ca66c2e72ce13ce7ff9805ca8c0..5b99ac3ff92b1b11ccbc91630ad8d0d80ecd3021 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/glutton.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/glutton.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_primitives_core::ParaId; use parachains_common::AuraId; diff --git a/cumulus/polkadot-parachain/src/chain_spec/mod.rs b/cumulus/polkadot-parachain/src/chain_spec/mod.rs index 00dceabb006943ff5c4039fd25f2fe3a690f5480..3ca4b169494cb4078d11155c33c559d93499b74c 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/mod.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_primitives_core::ParaId; use polkadot_omni_node_lib::{ diff --git a/cumulus/polkadot-parachain/src/chain_spec/penpal.rs b/cumulus/polkadot-parachain/src/chain_spec/penpal.rs index b60b9982c49e91908ba02972892aaf70b2438713..94e90efb877cd4ba9f091f4994f310ae816c4abc 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/penpal.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/penpal.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::chain_spec::SAFE_XCM_VERSION; use cumulus_primitives_core::ParaId; diff --git a/cumulus/polkadot-parachain/src/chain_spec/people.rs b/cumulus/polkadot-parachain/src/chain_spec/people.rs index 1735a904b8eacc2e9ebddc6f869d24f21fae541c..4a1fae516dc944186f9fbb806759831360e27c38 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/people.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/people.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_primitives_core::ParaId; use parachains_common::Balance as PeopleBalance; diff --git a/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs b/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs index 68383ac5c233d493c06e205f05bbe1637ce394b9..e7b533cceb8a643ddfc4659223abad4ee53cad49 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! ChainSpecs dedicated to Rococo parachain setups (for testing and example purposes) diff --git a/cumulus/polkadot-parachain/src/main.rs b/cumulus/polkadot-parachain/src/main.rs index a84fb0dfb18f8c9f86d3b8c481b682c82ddfec7b..f00a7430fabf847b1d9545c6a2899916821704ea 100644 --- a/cumulus/polkadot-parachain/src/main.rs +++ b/cumulus/polkadot-parachain/src/main.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Polkadot parachain node. diff --git a/cumulus/primitives/aura/src/lib.rs b/cumulus/primitives/aura/src/lib.rs index 4e7d7dc3e79d629f593fa59900021dea6390b0e9..c20aac6869ddd622e5cc9c569f3b0b69d7bfe8a9 100644 --- a/cumulus/primitives/aura/src/lib.rs +++ b/cumulus/primitives/aura/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Core primitives for Aura in Cumulus. //! diff --git a/cumulus/primitives/core/src/lib.rs b/cumulus/primitives/core/src/lib.rs index f88e663db19eef3095fbd2282566f50e9cc6d386..9169c12d8eb133b45b8c3283345ee9b91f574b61 100644 --- a/cumulus/primitives/core/src/lib.rs +++ b/cumulus/primitives/core/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Cumulus related core primitive types and traits. diff --git a/cumulus/primitives/parachain-inherent/src/lib.rs b/cumulus/primitives/parachain-inherent/src/lib.rs index 127a03b6525916069421a8bb18dd6569fd41aecd..4e6e739bb8501ed013de0586fabf7bfc3b7593e7 100644 --- a/cumulus/primitives/parachain-inherent/src/lib.rs +++ b/cumulus/primitives/parachain-inherent/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Cumulus parachain inherent //! diff --git a/cumulus/primitives/proof-size-hostfunction/src/lib.rs b/cumulus/primitives/proof-size-hostfunction/src/lib.rs index f17b3d3f33b473b70347d5f7667b142a8df97b66..0638e5fe538997e299f671e91b25f647c58f105c 100644 --- a/cumulus/primitives/proof-size-hostfunction/src/lib.rs +++ b/cumulus/primitives/proof-size-hostfunction/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Tools for reclaiming PoV weight in parachain runtimes. diff --git a/cumulus/primitives/timestamp/src/lib.rs b/cumulus/primitives/timestamp/src/lib.rs index 5365f83efdf1111eaf727a4a8fe87ec4f2065726..44c12043cf05a949b655107cb2b49ab04fa044d0 100644 --- a/cumulus/primitives/timestamp/src/lib.rs +++ b/cumulus/primitives/timestamp/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Cumulus timestamp related primitives. //! diff --git a/cumulus/primitives/utility/src/lib.rs b/cumulus/primitives/utility/src/lib.rs index 8530f5b87487e0096c7696e3ac9a49a984fed851..83c774312818bae21b741034b9d08d028563100c 100644 --- a/cumulus/primitives/utility/src/lib.rs +++ b/cumulus/primitives/utility/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Helper datatypes for cumulus. This includes the [`ParentAsUmp`] routing type which will route //! messages into an [`UpwardMessageSender`] if the destination is `Parent`. diff --git a/cumulus/primitives/utility/src/tests/mod.rs b/cumulus/primitives/utility/src/tests/mod.rs index 80e72ef2826364fdcd29ffb408f75c69d14c8ddb..a597742793b6f4820ff179e5c573c5e557783536 100644 --- a/cumulus/primitives/utility/src/tests/mod.rs +++ b/cumulus/primitives/utility/src/tests/mod.rs @@ -1,17 +1,17 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. mod swap_first; diff --git a/cumulus/primitives/utility/src/tests/swap_first.rs b/cumulus/primitives/utility/src/tests/swap_first.rs index 69239c552b8ca28be368f6ee3369bd29faf029c6..c3fbbd45856ae2d3a53398037e7455679d526f9f 100644 --- a/cumulus/primitives/utility/src/tests/swap_first.rs +++ b/cumulus/primitives/utility/src/tests/swap_first.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::*; use frame_support::{parameter_types, traits::fungibles::Inspect}; diff --git a/cumulus/test/relay-sproof-builder/src/lib.rs b/cumulus/test/relay-sproof-builder/src/lib.rs index d1016085c8073d67f2b8d50a224dce39711403f3..472ea9ec9e029c335ae0278c6ae6d7e4fef44339 100644 --- a/cumulus/test/relay-sproof-builder/src/lib.rs +++ b/cumulus/test/relay-sproof-builder/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. extern crate alloc; diff --git a/cumulus/xcm/xcm-emulator/src/lib.rs b/cumulus/xcm/xcm-emulator/src/lib.rs index d9b1e7fd9d04cbcf28933e10b91961bf4bdd8432..8fe6181ab237f0a1cf45da4d5cb1a0121ceb38b7 100644 --- a/cumulus/xcm/xcm-emulator/src/lib.rs +++ b/cumulus/xcm/xcm-emulator/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. extern crate alloc; diff --git a/docs/contributor/DEPRECATION_CHECKLIST.md b/docs/contributor/DEPRECATION_CHECKLIST.md index 687c0a7cd7da040f40c120d00d75069db76ba27e..1ffd2b4dae64327936247cc15a7747a150ba1ed3 100644 --- a/docs/contributor/DEPRECATION_CHECKLIST.md +++ b/docs/contributor/DEPRECATION_CHECKLIST.md @@ -38,8 +38,8 @@ when building the code. ## Update examples and tutorials Make sure that the rust docs are updated. -We also need [https://docs.substrate.io/](https://docs.substrate.io/) to be updated accordingly. The repo behind it is -[https://github.com/substrate-developer-hub/substrate-docs](https://github.com/substrate-developer-hub/substrate-docs). +We also need [https://docs.polkadot.com/](https://docs.polkadot.com/) to be updated accordingly. The repo behind it is +[https://github.com/polkadot-developers/polkadot-docs](https://github.com/polkadot-developers/polkadot-docs). ## Announce the deprecation and removal diff --git a/docs/mermaid/IA.mmd b/docs/mermaid/IA.mmd index dcf9806dcb6233af6f3ed762ef97ee3b7df1657e..60a59f6e0ab94ebc9eca90323b32228f0e7c0338 100644 --- a/docs/mermaid/IA.mmd +++ b/docs/mermaid/IA.mmd @@ -1,5 +1,5 @@ flowchart - parity[paritytech.github.io] --> devhub[polkadot_sdk_docs] + dot[docs.polkadot.com] --> devhub[polkadot_sdk_docs] devhub --> polkadot_sdk devhub --> reference_docs diff --git a/docs/sdk/src/external_resources.rs b/docs/sdk/src/external_resources.rs index 939874d12f1371ed5c73432fe10189f34312b40c..dc68ad25badf988b51755ca46f2f518aeedce283 100644 --- a/docs/sdk/src/external_resources.rs +++ b/docs/sdk/src/external_resources.rs @@ -9,6 +9,6 @@ //! //! - [Polkadot NFT Marketplace Tutorial by Polkadot Fellow Shawn Tabrizi](https://www.shawntabrizi.com/substrate-collectables-workshop/) //! - [DOT Code School](https://dotcodeschool.com/) -//! - [Polkadot Developers](https://github.com/polkadot-developers/) +//! - [Polkadot Developers Github Organization](https://github.com/polkadot-developers/) //! - [Polkadot Blockchain Academy](https://github.com/Polkadot-Blockchain-Academy) -//! - [Polkadot Wiki: Build](https://wiki.polkadot.network/docs/build-guide) +//! - [Polkadot Wiki](https://wiki.polkadot.network/) diff --git a/docs/sdk/src/lib.rs b/docs/sdk/src/lib.rs index e2c5fc93479cd8bdea3e8e330a068f045e52488f..d96239ca89424e8a475ab445e488f78ae101aa9e 100644 --- a/docs/sdk/src/lib.rs +++ b/docs/sdk/src/lib.rs @@ -2,8 +2,8 @@ //! //! The Polkadot SDK Developer Documentation. //! -//! This crate is a *minimal*, but *always-accurate* source of information for those wishing to -//! build on the Polkadot SDK. +//! This crate is a *minimal*, *always-accurate* and low level source of truth about Polkadot-SDK. +//! For more high level docs, please go to [docs.polkadot.com](https://docs.polkadot.com). //! //! ## Getting Started //! diff --git a/docs/sdk/src/meta_contributing.rs b/docs/sdk/src/meta_contributing.rs index d68d9bca18b11772016359b56b24af7b4fe9fe6f..663da2cc54b325dc33e9caca7cde214a9dd66bae 100644 --- a/docs/sdk/src/meta_contributing.rs +++ b/docs/sdk/src/meta_contributing.rs @@ -120,12 +120,6 @@ //! //! </details> //! -//! ## `docs.substrate.io` -//! -//! This crate is meant to gradually replace `docs.substrate.io`. As any content is added here, the -//! corresponding counter-part should be marked as deprecated, as described -//! [here](https://github.com/paritytech/polkadot-sdk-docs/issues/26). -//! //! ## `crates.io` and Publishing //! //! As it stands now, this crate cannot be published to crates.io because of its use of diff --git a/polkadot/cli/src/cli.rs b/polkadot/cli/src/cli.rs index 777bb9c60671244e56153cf666d8f4702d1abaf5..6187eb79a362c7a95a0516dcf10234336f6871b8 100644 --- a/polkadot/cli/src/cli.rs +++ b/polkadot/cli/src/cli.rs @@ -18,7 +18,7 @@ pub use polkadot_node_primitives::NODE_VERSION; -use clap::Parser; +use clap::{ArgAction, Parser}; use std::path::PathBuf; #[allow(missing_docs)] @@ -148,9 +148,9 @@ pub struct RunCmd { /// Enable approval-voting message processing in parallel. /// - ///**Dangerous!** This is an experimental feature and should not be used in production, unless - /// explicitly advised to. - #[arg(long)] + /// This is a flag used for gradually enabling approval-voting-parallel in production, + /// should not be used unless explicitly advised to. It will be removed in the future. + #[arg(long, default_value = "true", action=ArgAction::Set)] pub enable_approval_voting_parallel: bool, } diff --git a/polkadot/node/network/bridge/src/rx/mod.rs b/polkadot/node/network/bridge/src/rx/mod.rs index bb99536f78334d024d8fe60974a7303fa783a39a..ba550df8f1a455134b47fcb6fbd90653f67c88e0 100644 --- a/polkadot/node/network/bridge/src/rx/mod.rs +++ b/polkadot/node/network/bridge/src/rx/mod.rs @@ -57,6 +57,7 @@ use polkadot_primitives::{AuthorityDiscoveryId, BlockNumber, Hash, ValidatorInde use std::{ collections::{hash_map, HashMap}, iter::ExactSizeIterator, + u32, }; use super::validator_discovery; @@ -750,7 +751,7 @@ where // This is kept sorted, descending, by block number. let mut live_heads: Vec<ActivatedLeaf> = Vec::with_capacity(MAX_VIEW_HEADS); let mut finalized_number = 0; - + let mut newest_session = u32::MIN; let mut mode = Mode::Syncing(sync_oracle); loop { match ctx.recv().fuse().await? { @@ -775,15 +776,29 @@ where flesh_out_topology_peers(&mut authority_discovery_service, canonical_shuffling) .await; - dispatch_validation_event_to_all_unbounded( - NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { - session, - topology: SessionGridTopology::new(shuffled_indices, topology_peers), - local_index, - }), - ctx.sender(), - approval_voting_parallel_enabled, - ); + if session >= newest_session { + dispatch_validation_event_to_all_unbounded( + NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { + session, + topology: SessionGridTopology::new(shuffled_indices, topology_peers), + local_index, + }), + ctx.sender(), + approval_voting_parallel_enabled, + ); + } else { + dispatch_validation_event_to_approval_unbounded( + &NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { + session, + topology: SessionGridTopology::new(shuffled_indices, topology_peers), + local_index, + }), + ctx.sender(), + approval_voting_parallel_enabled, + ); + } + + newest_session = newest_session.max(session); }, FromOrchestra::Communication { msg: NetworkBridgeRxMessage::UpdatedAuthorityIds { peer_id, authority_ids }, @@ -1123,22 +1138,11 @@ async fn dispatch_collation_event_to_all( dispatch_collation_events_to_all(std::iter::once(event), ctx).await } -fn dispatch_validation_event_to_all_unbounded( - event: NetworkBridgeEvent<net_protocol::VersionedValidationProtocol>, +fn dispatch_validation_event_to_approval_unbounded( + event: &NetworkBridgeEvent<net_protocol::VersionedValidationProtocol>, sender: &mut impl overseer::NetworkBridgeRxSenderTrait, approval_voting_parallel_enabled: bool, ) { - event - .focus() - .ok() - .map(StatementDistributionMessage::from) - .and_then(|msg| Some(sender.send_unbounded_message(msg))); - event - .focus() - .ok() - .map(BitfieldDistributionMessage::from) - .and_then(|msg| Some(sender.send_unbounded_message(msg))); - if approval_voting_parallel_enabled { event .focus() @@ -1152,6 +1156,30 @@ fn dispatch_validation_event_to_all_unbounded( .map(ApprovalDistributionMessage::from) .and_then(|msg| Some(sender.send_unbounded_message(msg))); } +} + +fn dispatch_validation_event_to_all_unbounded( + event: NetworkBridgeEvent<net_protocol::VersionedValidationProtocol>, + sender: &mut impl overseer::NetworkBridgeRxSenderTrait, + approval_voting_parallel_enabled: bool, +) { + event + .focus() + .ok() + .map(StatementDistributionMessage::from) + .and_then(|msg| Some(sender.send_unbounded_message(msg))); + event + .focus() + .ok() + .map(BitfieldDistributionMessage::from) + .and_then(|msg| Some(sender.send_unbounded_message(msg))); + + dispatch_validation_event_to_approval_unbounded( + &event, + sender, + approval_voting_parallel_enabled, + ); + event .focus() .ok() diff --git a/polkadot/node/network/bridge/src/rx/tests.rs b/polkadot/node/network/bridge/src/rx/tests.rs index e3f2715ef2b07fc2738b244a1e92cf672bf5d2a0..4cd903a8b31a0298d59e30954dcbd4fe596e2d90 100644 --- a/polkadot/node/network/bridge/src/rx/tests.rs +++ b/polkadot/node/network/bridge/src/rx/tests.rs @@ -22,9 +22,11 @@ use polkadot_node_subsystem::messages::NetworkBridgeEvent; use assert_matches::assert_matches; use async_trait::async_trait; use parking_lot::Mutex; +use polkadot_overseer::TimeoutExt; use std::{ collections::HashSet, sync::atomic::{AtomicBool, Ordering}, + time::Duration, }; use sc_network::{ @@ -1465,6 +1467,120 @@ fn network_protocol_versioning_view_update() { }); } +// Test rx bridge sends the newest gossip topology to all subsystems and old ones only to approval +// distribution. +#[test] +fn network_new_topology_update() { + let (oracle, handle) = make_sync_oracle(false); + test_harness(Box::new(oracle), |test_harness| async move { + let TestHarness { mut network_handle, mut virtual_overseer, shared } = test_harness; + + let peer_ids: Vec<_> = (0..4).map(|_| PeerId::random()).collect(); + let peers = [ + (peer_ids[0], PeerSet::Validation, ValidationVersion::V2), + (peer_ids[1], PeerSet::Validation, ValidationVersion::V1), + (peer_ids[2], PeerSet::Validation, ValidationVersion::V1), + (peer_ids[3], PeerSet::Collation, ValidationVersion::V2), + ]; + + let head = Hash::repeat_byte(1); + virtual_overseer + .send(FromOrchestra::Signal(OverseerSignal::ActiveLeaves( + ActiveLeavesUpdate::start_work(new_leaf(head, 1)), + ))) + .await; + + handle.await_mode_switch().await; + + let mut total_validation_peers = 0; + let mut total_collation_peers = 0; + + for &(peer_id, peer_set, version) in &peers { + network_handle + .connect_peer(peer_id, version, peer_set, ObservedRole::Full) + .await; + + match peer_set { + PeerSet::Validation => total_validation_peers += 1, + PeerSet::Collation => total_collation_peers += 1, + } + } + + await_peer_connections(&shared, total_validation_peers, total_collation_peers).await; + + // Drain setup messages. + while let Some(_) = virtual_overseer.recv().timeout(Duration::from_secs(1)).await {} + + // 1. Send new gossip topology and check is sent to all subsystems. + virtual_overseer + .send(polkadot_overseer::FromOrchestra::Communication { + msg: NetworkBridgeRxMessage::NewGossipTopology { + session: 2, + local_index: Some(ValidatorIndex(0)), + canonical_shuffling: Vec::new(), + shuffled_indices: Vec::new(), + }, + }) + .await; + + assert_sends_validation_event_to_all( + NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { + session: 2, + topology: SessionGridTopology::new(Vec::new(), Vec::new()), + local_index: Some(ValidatorIndex(0)), + }), + &mut virtual_overseer, + ) + .await; + + // 2. Send old gossip topology and check is sent only to approval distribution. + virtual_overseer + .send(polkadot_overseer::FromOrchestra::Communication { + msg: NetworkBridgeRxMessage::NewGossipTopology { + session: 1, + local_index: Some(ValidatorIndex(0)), + canonical_shuffling: Vec::new(), + shuffled_indices: Vec::new(), + }, + }) + .await; + + assert_matches!( + virtual_overseer.recv().await, + AllMessages::ApprovalDistribution(ApprovalDistributionMessage::NetworkBridgeUpdate( + NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { + session: 1, + topology: _, + local_index: _, + }) + )) + ); + + // 3. Send new gossip topology and check is sent to all subsystems. + virtual_overseer + .send(polkadot_overseer::FromOrchestra::Communication { + msg: NetworkBridgeRxMessage::NewGossipTopology { + session: 3, + local_index: Some(ValidatorIndex(0)), + canonical_shuffling: Vec::new(), + shuffled_indices: Vec::new(), + }, + }) + .await; + + assert_sends_validation_event_to_all( + NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { + session: 3, + topology: SessionGridTopology::new(Vec::new(), Vec::new()), + local_index: Some(ValidatorIndex(0)), + }), + &mut virtual_overseer, + ) + .await; + virtual_overseer + }); +} + #[test] fn network_protocol_versioning_subsystem_msg() { use polkadot_primitives::CandidateHash; diff --git a/polkadot/node/network/gossip-support/src/lib.rs b/polkadot/node/network/gossip-support/src/lib.rs index cd327c11e408c5117f9679938eb157e713b7afd9..dece8fae509392c695cabdde45970f4f7c01e68a 100644 --- a/polkadot/node/network/gossip-support/src/lib.rs +++ b/polkadot/node/network/gossip-support/src/lib.rs @@ -28,6 +28,7 @@ use std::{ collections::{HashMap, HashSet}, fmt, time::{Duration, Instant}, + u32, }; use futures::{channel::oneshot, select, FutureExt as _}; @@ -45,8 +46,8 @@ use polkadot_node_network_protocol::{ }; use polkadot_node_subsystem::{ messages::{ - GossipSupportMessage, NetworkBridgeEvent, NetworkBridgeRxMessage, NetworkBridgeTxMessage, - RuntimeApiMessage, RuntimeApiRequest, + ChainApiMessage, GossipSupportMessage, NetworkBridgeEvent, NetworkBridgeRxMessage, + NetworkBridgeTxMessage, RuntimeApiMessage, RuntimeApiRequest, }, overseer, ActiveLeavesUpdate, FromOrchestra, OverseerSignal, SpawnedSubsystem, SubsystemError, }; @@ -96,6 +97,8 @@ pub struct GossipSupport<AD> { keystore: KeystorePtr, last_session_index: Option<SessionIndex>, + /// The minimum known session we build the topology for. + min_known_session: SessionIndex, // Some(timestamp) if we failed to resolve // at least a third of authorities the last time. // `None` otherwise. @@ -130,6 +133,9 @@ pub struct GossipSupport<AD> { /// Authority discovery service. authority_discovery: AD, + /// The oldest session we need to build a topology for because + /// the finalized blocks are from a session we haven't built a topology for. + finalized_needed_session: Option<u32>, /// Subsystem metrics. metrics: Metrics, } @@ -154,7 +160,9 @@ where resolved_authorities: HashMap::new(), connected_authorities: HashMap::new(), connected_peers: HashMap::new(), + min_known_session: u32::MAX, authority_discovery, + finalized_needed_session: None, metrics, } } @@ -199,7 +207,22 @@ where gum::debug!(target: LOG_TARGET, error = ?e); } }, - FromOrchestra::Signal(OverseerSignal::BlockFinalized(_hash, _number)) => {}, + FromOrchestra::Signal(OverseerSignal::BlockFinalized(_hash, _number)) => + if let Some(session_index) = self.last_session_index { + if let Err(e) = self + .build_topology_for_last_finalized_if_needed( + ctx.sender(), + session_index, + ) + .await + { + gum::warn!( + target: LOG_TARGET, + "Failed to build topology for last finalized session: {:?}", + e + ); + } + }, FromOrchestra::Signal(OverseerSignal::Conclude) => return self, } } @@ -294,9 +317,19 @@ where } if is_new_session { + if let Err(err) = self + .build_topology_for_last_finalized_if_needed(sender, session_index) + .await + { + gum::warn!( + target: LOG_TARGET, + "Failed to build topology for last finalized session: {:?}", + err + ); + } + // Gossip topology is only relevant for authorities in the current session. let our_index = self.get_key_index_and_update_metrics(&session_info)?; - update_gossip_topology( sender, our_index, @@ -314,6 +347,85 @@ where Ok(()) } + /// Build the gossip topology for the session of the last finalized block if we haven't built + /// one. + /// + /// This is needed to ensure that if finality is lagging accross session boundary and a restart + /// happens after the new session started, we built a topology from the session we haven't + /// finalized the blocks yet. + /// Once finalized blocks start to be from a session we've built a topology for, we can stop. + async fn build_topology_for_last_finalized_if_needed( + &mut self, + sender: &mut impl overseer::GossipSupportSenderTrait, + current_session_index: u32, + ) -> Result<(), util::Error> { + self.min_known_session = self.min_known_session.min(current_session_index); + + if self + .finalized_needed_session + .map(|oldest_needed_session| oldest_needed_session < self.min_known_session) + .unwrap_or(true) + { + let (tx, rx) = oneshot::channel(); + sender.send_message(ChainApiMessage::FinalizedBlockNumber(tx)).await; + let finalized_block_number = match rx.await? { + Ok(block_number) => block_number, + _ => return Ok(()), + }; + + let (tx, rx) = oneshot::channel(); + sender + .send_message(ChainApiMessage::FinalizedBlockHash(finalized_block_number, tx)) + .await; + + let finalized_block_hash = match rx.await? { + Ok(Some(block_hash)) => block_hash, + _ => return Ok(()), + }; + + let finalized_session_index = + util::request_session_index_for_child(finalized_block_hash, sender) + .await + .await??; + + if finalized_session_index < self.min_known_session && + Some(finalized_session_index) != self.finalized_needed_session + { + gum::debug!( + target: LOG_TARGET, + ?finalized_block_hash, + ?finalized_block_number, + ?finalized_session_index, + "Building topology for finalized block session", + ); + + let finalized_session_info = match util::request_session_info( + finalized_block_hash, + finalized_session_index, + sender, + ) + .await + .await?? + { + Some(session_info) => session_info, + _ => return Ok(()), + }; + + let our_index = self.get_key_index_and_update_metrics(&finalized_session_info)?; + update_gossip_topology( + sender, + our_index, + finalized_session_info.discovery_keys.clone(), + finalized_block_hash, + finalized_session_index, + ) + .await?; + } + self.finalized_needed_session = Some(finalized_session_index); + } + Ok(()) + } + // Checks if the node is an authority and also updates `polkadot_node_is_authority` and // `polkadot_node_is_parachain_validator` metrics accordingly. // On success, returns the index of our keys in `session_info.discovery_keys`. diff --git a/polkadot/node/network/gossip-support/src/tests.rs b/polkadot/node/network/gossip-support/src/tests.rs index 399f29db67da8c029cab8b151eff220e03398b68..873a1122f2c5e29a50f0ca7e79e034ddc745c711 100644 --- a/polkadot/node/network/gossip-support/src/tests.rs +++ b/polkadot/node/network/gossip-support/src/tests.rs @@ -262,6 +262,38 @@ async fn overseer_recv(overseer: &mut VirtualOverseer) -> AllMessages { msg } +async fn provide_info_for_finalized(overseer: &mut VirtualOverseer, test_session: SessionIndex) { + assert_matches!( + overseer_recv(overseer).await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( + channel, + )) => { + channel.send(Ok(1)).unwrap(); + } + ); + + assert_matches!( + overseer_recv(overseer).await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( + _, + channel, + )) => { + channel.send(Ok(Some(Hash::repeat_byte(0xAA)))).unwrap(); + } + ); + + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + _, + RuntimeApiRequest::SessionIndexForChild(tx), + )) => { + // assert_eq!(relay_parent, hash); + tx.send(Ok(test_session)).unwrap(); + } + ); +} + async fn test_neighbors(overseer: &mut VirtualOverseer, expected_session: SessionIndex) { assert_matches!( overseer_recv(overseer).await, @@ -375,6 +407,7 @@ fn issues_a_connection_request_on_new_session() { assert_eq!(peer_set, PeerSet::Validation); } ); + provide_info_for_finalized(overseer, 1).await; test_neighbors(overseer, 1).await; @@ -527,6 +560,7 @@ fn issues_connection_request_to_past_present_future() { assert_eq!(peer_set, PeerSet::Validation); } ); + provide_info_for_finalized(overseer, 1).await; // Ensure neighbors are unaffected test_neighbors(overseer, 1).await; @@ -607,6 +641,7 @@ fn issues_update_authorities_after_session() { } ); + provide_info_for_finalized(overseer, 1).await; // Ensure neighbors are unaffected assert_matches!( overseer_recv(overseer).await, @@ -878,6 +913,7 @@ fn test_quickly_connect_to_authorities_that_changed_address() { } ); + provide_info_for_finalized(overseer, 1).await; // Ensure neighbors are unaffected assert_matches!( overseer_recv(overseer).await, @@ -1171,6 +1207,7 @@ fn disconnect_when_not_in_past_present_future() { } ); + provide_info_for_finalized(overseer, 1).await; virtual_overseer }, ); @@ -1268,13 +1305,13 @@ fn issues_a_connection_request_when_last_request_was_mostly_unresolved() { assert_eq!(peer_set, PeerSet::Validation); } ); + provide_info_for_finalized(overseer, 1).await; test_neighbors(overseer, 1).await; virtual_overseer }) }; - assert_eq!(state.last_session_index, Some(1)); assert!(state.last_failure.is_some()); state.last_failure = state.last_failure.and_then(|i| i.checked_sub(BACKOFF_DURATION)); @@ -1340,6 +1377,158 @@ fn issues_a_connection_request_when_last_request_was_mostly_unresolved() { assert!(state.last_failure.is_none()); } +// Test that topology is updated for all sessions we still have unfinalized blocks for. +#[test] +fn updates_topology_for_all_finalized_blocks() { + let hash = Hash::repeat_byte(0xAA); + let mock_authority_discovery = + MockAuthorityDiscovery::new(PAST_PRESENT_FUTURE_AUTHORITIES.clone()); + test_harness( + make_subsystem_with_authority_discovery(mock_authority_discovery.clone()), + |mut virtual_overseer| async move { + let overseer = &mut virtual_overseer; + overseer_signal_active_leaves(overseer, hash).await; + let active_session = 5; + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::SessionIndexForChild(tx), + )) => { + assert_eq!(relay_parent, hash); + tx.send(Ok(active_session)).unwrap(); + } + ); + + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::SessionInfo(s, tx), + )) => { + assert_eq!(relay_parent, hash); + assert_eq!(s, active_session); + tx.send(Ok(Some(make_session_info()))).unwrap(); + } + ); + + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::Authorities(tx), + )) => { + assert_eq!(relay_parent, hash); + tx.send(Ok(PAST_PRESENT_FUTURE_AUTHORITIES.clone())).unwrap(); + } + ); + + assert_matches!( + overseer_recv(overseer).await, + AllMessages::NetworkBridgeTx(NetworkBridgeTxMessage::ConnectToResolvedValidators { + validator_addrs, + peer_set, + }) => { + let all_without_ferdie: Vec<_> = PAST_PRESENT_FUTURE_AUTHORITIES + .iter() + .cloned() + .filter(|p| p != &Sr25519Keyring::Ferdie.public().into()) + .collect(); + + let addrs = get_multiaddrs(all_without_ferdie, mock_authority_discovery.clone()).await; + + assert_eq!(validator_addrs, addrs); + assert_eq!(peer_set, PeerSet::Validation); + } + ); + + // Ensure first time we update the topology we also update topology for the session last + // finalized is in. + provide_info_for_finalized(overseer, 1).await; + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::SessionInfo(s, tx), + )) => { + assert_eq!(relay_parent, hash); + assert_eq!(s, 1); + tx.send(Ok(Some(make_session_info()))).unwrap(); + } + ); + // Ensure we received topology for the session last finalized is in and the current + // active session + test_neighbors(overseer, 1).await; + test_neighbors(overseer, active_session).await; + + let mut block_number = 3; + // As finalized progresses, we should update topology for all sessions until we caught + // up with the known sessions. + for finalized in 2..active_session { + block_number += 1; + overseer + .send(FromOrchestra::Signal(OverseerSignal::BlockFinalized( + Hash::repeat_byte(block_number as u8), + block_number, + ))) + .timeout(TIMEOUT) + .await + .expect("signal send timeout"); + provide_info_for_finalized(overseer, finalized).await; + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::SessionInfo(s, tx), + )) => { + assert_eq!(relay_parent, hash); + assert_eq!(s, finalized); + tx.send(Ok(Some(make_session_info()))).unwrap(); + } + ); + test_neighbors(overseer, finalized).await; + + block_number += 1; + overseer + .send(FromOrchestra::Signal(OverseerSignal::BlockFinalized( + Hash::repeat_byte(block_number as u8), + block_number, + ))) + .timeout(TIMEOUT) + .await + .expect("signal send timeout"); + provide_info_for_finalized(overseer, finalized).await; + } + + // No topology update is sent once finalized block is in the active session. + block_number += 1; + overseer + .send(FromOrchestra::Signal(OverseerSignal::BlockFinalized( + Hash::repeat_byte(block_number as u8), + block_number, + ))) + .timeout(TIMEOUT) + .await + .expect("signal send timeout"); + provide_info_for_finalized(overseer, active_session).await; + + // Code becomes no-op after we caught up with the last finalized block being in the + // active session. + block_number += 1; + overseer + .send(FromOrchestra::Signal(OverseerSignal::BlockFinalized( + Hash::repeat_byte(block_number as u8), + block_number, + ))) + .timeout(TIMEOUT) + .await + .expect("signal send timeout"); + + virtual_overseer + }, + ); +} + // note: this test was added at a time where the default `rand::SliceRandom::shuffle` // function was used to shuffle authorities for the topology and ensures backwards compatibility. // diff --git a/polkadot/node/overseer/src/lib.rs b/polkadot/node/overseer/src/lib.rs index 17470d74577d2147bb4faf2461aa2e1faa85ffae..a8d0ab90f6b91d35fe4967960b9e73ec94a0d1db 100644 --- a/polkadot/node/overseer/src/lib.rs +++ b/polkadot/node/overseer/src/lib.rs @@ -615,6 +615,7 @@ pub struct Overseer<SupportsParachains> { NetworkBridgeRxMessage, // TODO <https://github.com/paritytech/polkadot/issues/5626> RuntimeApiMessage, ChainSelectionMessage, + ChainApiMessage, ], can_receive_priority_messages)] gossip_support: GossipSupport, diff --git a/polkadot/node/service/src/lib.rs b/polkadot/node/service/src/lib.rs index 820cce8d083a63903d7887247990545bce114315..ce17ae5f51b9060b030ce9ffa6203f4c1368e29f 100644 --- a/polkadot/node/service/src/lib.rs +++ b/polkadot/node/service/src/lib.rs @@ -759,13 +759,6 @@ pub fn new_full< Some(backoff) }; - // Running approval voting in parallel is enabled by default on all networks except Polkadot - // unless explicitly enabled by the commandline option. - // This is meant to be temporary until we have enough confidence in the new system to enable it - // by default on all networks. - let enable_approval_voting_parallel = - !config.chain_spec.is_polkadot() || enable_approval_voting_parallel; - let disable_grandpa = config.disable_grandpa; let name = config.network.node_name.clone(); diff --git a/polkadot/runtime/rococo/src/governance/fellowship.rs b/polkadot/runtime/rococo/src/governance/fellowship.rs index 27a58a0eebd183bc5d21efa655113cf3a0251cc0..231defab6aa52419b42131a510637e0b1c04c889 100644 --- a/polkadot/runtime/rococo/src/governance/fellowship.rs +++ b/polkadot/runtime/rococo/src/governance/fellowship.rs @@ -308,6 +308,7 @@ impl pallet_referenda::Config<FellowshipReferendaInstance> for Runtime { type AlarmInterval = AlarmInterval; type Tracks = TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } pub type FellowshipCollectiveInstance = pallet_ranked_collective::Instance1; diff --git a/polkadot/runtime/rococo/src/governance/mod.rs b/polkadot/runtime/rococo/src/governance/mod.rs index ef2adf60753d541c44eaf6073a3a012e66bf9f5c..4052dfcdd0bec1aff309db08446bfe5acb765df0 100644 --- a/polkadot/runtime/rococo/src/governance/mod.rs +++ b/polkadot/runtime/rococo/src/governance/mod.rs @@ -47,6 +47,7 @@ impl pallet_conviction_voting::Config for Runtime { type MaxTurnout = frame_support::traits::tokens::currency::ActiveIssuanceOf<Balances, Self::AccountId>; type Polls = Referenda; + type BlockNumberProvider = System; } parameter_types! { @@ -90,4 +91,5 @@ impl pallet_referenda::Config for Runtime { type AlarmInterval = AlarmInterval; type Tracks = TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } diff --git a/polkadot/runtime/rococo/src/lib.rs b/polkadot/runtime/rococo/src/lib.rs index f7716e8b7d9cfa92d19d1f738649b358e72e7b20..f6729dd976257b506976264633387a0de944eb76 100644 --- a/polkadot/runtime/rococo/src/lib.rs +++ b/polkadot/runtime/rococo/src/lib.rs @@ -821,6 +821,7 @@ impl pallet_society::Config for Runtime { type MaxPayouts = ConstU32<8>; type MaxBids = ConstU32<512>; type PalletId = SocietyPalletId; + type BlockNumberProvider = System; type WeightInfo = (); } diff --git a/polkadot/runtime/rococo/src/weights/pallet_migrations.rs b/polkadot/runtime/rococo/src/weights/pallet_migrations.rs index 4fa07a23bb8ab4376d64cb4aa425f1cc515bb4fa..a0623a9c951331a54c036b9a3b2e1fee42df8d70 100644 --- a/polkadot/runtime/rococo/src/weights/pallet_migrations.rs +++ b/polkadot/runtime/rococo/src/weights/pallet_migrations.rs @@ -14,7 +14,31 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see <http://www.gnu.org/licenses/>. -// Need to rerun! +//! Autogenerated weights for `pallet_migrations` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0 +//! DATE: 2025-01-27, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `17938671047b`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024 + +// Executed Command: +// frame-omni-bencher +// v1 +// benchmark +// pallet +// --extrinsic=* +// --runtime=target/production/wbuild/rococo-runtime/rococo_runtime.wasm +// --pallet=pallet_migrations +// --header=/__w/polkadot-sdk/polkadot-sdk/polkadot/file_header.txt +// --output=./polkadot/runtime/rococo/src/weights +// --wasm-execution=compiled +// --steps=50 +// --repeat=20 +// --heap-pages=4096 +// --no-storage-info +// --no-min-squares +// --no-median-slopes #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -33,22 +57,24 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn onboard_new_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `276` + // Measured: `100` // Estimated: `67035` - // Minimum execution time: 7_762_000 picoseconds. - Weight::from_parts(8_100_000, 67035) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 8_300_000 picoseconds. + Weight::from_parts(8_664_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn progress_mbms_none() -> Weight { // Proof Size summary in bytes: - // Measured: `142` + // Measured: `4` // Estimated: `67035` - // Minimum execution time: 2_077_000 picoseconds. - Weight::from_parts(2_138_000, 67035) - .saturating_add(T::DbWeight::get().reads(1_u64)) + // Minimum execution time: 2_017_000 picoseconds. + Weight::from_parts(2_129_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -56,12 +82,13 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_completed() -> Weight { // Proof Size summary in bytes: - // Measured: `134` - // Estimated: `3599` - // Minimum execution time: 5_868_000 picoseconds. - Weight::from_parts(6_143_000, 3599) - .saturating_add(T::DbWeight::get().reads(1_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `96` + // Estimated: `3561` + // Minimum execution time: 6_414_000 picoseconds. + Weight::from_parts(6_644_000, 0) + .saturating_add(Weight::from_parts(0, 3561)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -69,11 +96,12 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_skipped_historic() -> Weight { // Proof Size summary in bytes: - // Measured: `330` - // Estimated: `3795` - // Minimum execution time: 10_283_000 picoseconds. - Weight::from_parts(10_964_000, 3795) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Measured: `154` + // Estimated: `3731` + // Minimum execution time: 11_600_000 picoseconds. + Weight::from_parts(12_137_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -81,11 +109,12 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_advance() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 9_900_000 picoseconds. - Weight::from_parts(10_396_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Measured: `100` + // Estimated: `3731` + // Minimum execution time: 10_944_000 picoseconds. + Weight::from_parts(11_354_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -93,12 +122,13 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_complete() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 11_411_000 picoseconds. - Weight::from_parts(11_956_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `100` + // Estimated: `3731` + // Minimum execution time: 12_525_000 picoseconds. + Weight::from_parts(12_890_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -108,19 +138,21 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_fail() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 12_398_000 picoseconds. - Weight::from_parts(12_910_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `100` + // Estimated: `3731` + // Minimum execution time: 13_749_000 picoseconds. + Weight::from_parts(14_411_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } fn on_init_loop() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 166_000 picoseconds. - Weight::from_parts(193_000, 0) + // Minimum execution time: 174_000 picoseconds. + Weight::from_parts(232_000, 0) + .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -128,9 +160,10 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_686_000 picoseconds. - Weight::from_parts(2_859_000, 0) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 2_906_000 picoseconds. + Weight::from_parts(3_195_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -138,9 +171,10 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_070_000 picoseconds. - Weight::from_parts(3_250_000, 0) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 3_313_000 picoseconds. + Weight::from_parts(3_469_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -148,26 +182,44 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn force_onboard_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `251` + // Measured: `76` // Estimated: `67035` - // Minimum execution time: 5_901_000 picoseconds. - Weight::from_parts(6_320_000, 67035) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Minimum execution time: 5_960_000 picoseconds. + Weight::from_parts(6_262_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: `MultiBlockMigrations::Historic` (r:256 w:256) /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) /// The range of component `n` is `[0, 256]`. fn clear_historic(n: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1122 + n * (271 ±0)` + // Measured: `984 + n * (271 ±0)` // Estimated: `3834 + n * (2740 ±0)` - // Minimum execution time: 15_952_000 picoseconds. - Weight::from_parts(14_358_665, 3834) - // Standard Error: 3_358 - .saturating_add(Weight::from_parts(1_323_674, 0).saturating_mul(n.into())) - .saturating_add(T::DbWeight::get().reads(1_u64)) + // Minimum execution time: 24_007_000 picoseconds. + Weight::from_parts(19_756_256, 0) + .saturating_add(Weight::from_parts(0, 3834)) + // Standard Error: 6_508 + .saturating_add(Weight::from_parts(1_553_207, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) .saturating_add(Weight::from_parts(0, 2740).saturating_mul(n.into())) } -} \ No newline at end of file + /// Storage: `Skipped::Metadata` (r:0 w:0) + /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[0, 2048]`. + fn reset_pallet_migration(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `1676 + n * (38 ±0)` + // Estimated: `754 + n * (39 ±0)` + // Minimum execution time: 2_019_000 picoseconds. + Weight::from_parts(6_578_665, 0) + .saturating_add(Weight::from_parts(0, 754)) + // Standard Error: 5_209 + .saturating_add(Weight::from_parts(894_607, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 39).saturating_mul(n.into())) + } +} diff --git a/polkadot/runtime/westend/src/governance/mod.rs b/polkadot/runtime/westend/src/governance/mod.rs index d027f788d71f6bf255b71157bfe21ba1fdc16f5a..aa4294f033b049a926a8537d0add3766c474197c 100644 --- a/polkadot/runtime/westend/src/governance/mod.rs +++ b/polkadot/runtime/westend/src/governance/mod.rs @@ -44,6 +44,7 @@ impl pallet_conviction_voting::Config for Runtime { type MaxTurnout = frame_support::traits::tokens::currency::ActiveIssuanceOf<Balances, Self::AccountId>; type Polls = Referenda; + type BlockNumberProvider = System; } parameter_types! { @@ -94,4 +95,5 @@ impl pallet_referenda::Config for Runtime { type AlarmInterval = AlarmInterval; type Tracks = TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } diff --git a/polkadot/runtime/westend/src/lib.rs b/polkadot/runtime/westend/src/lib.rs index 51eede7c7342ee1976c0c12cb69d9d395602cd65..7fd2ac53530ac982040bacc6e53bd4ded6fb1748 100644 --- a/polkadot/runtime/westend/src/lib.rs +++ b/polkadot/runtime/westend/src/lib.rs @@ -1534,6 +1534,7 @@ impl pallet_nomination_pools::Config for Runtime { type PalletId = PoolsPalletId; type MaxPointsToBalance = MaxPointsToBalance; type AdminOrigin = EitherOf<EnsureRoot<AccountId>, StakingAdmin>; + type BlockNumberProvider = System; } parameter_types! { diff --git a/polkadot/runtime/westend/src/weights/pallet_migrations.rs b/polkadot/runtime/westend/src/weights/pallet_migrations.rs index 4fa07a23bb8ab4376d64cb4aa425f1cc515bb4fa..f5d4f079ca6d3b509a899ca11ddd041ca7b644fc 100644 --- a/polkadot/runtime/westend/src/weights/pallet_migrations.rs +++ b/polkadot/runtime/westend/src/weights/pallet_migrations.rs @@ -14,7 +14,31 @@ // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see <http://www.gnu.org/licenses/>. -// Need to rerun! +//! Autogenerated weights for `pallet_migrations` +//! +//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0 +//! DATE: 2025-01-27, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! WORST CASE MAP SIZE: `1000000` +//! HOSTNAME: `17938671047b`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: 1024 + +// Executed Command: +// frame-omni-bencher +// v1 +// benchmark +// pallet +// --extrinsic=* +// --runtime=target/production/wbuild/westend-runtime/westend_runtime.wasm +// --pallet=pallet_migrations +// --header=/__w/polkadot-sdk/polkadot-sdk/polkadot/file_header.txt +// --output=./polkadot/runtime/westend/src/weights +// --wasm-execution=compiled +// --steps=50 +// --repeat=20 +// --heap-pages=4096 +// --no-storage-info +// --no-min-squares +// --no-median-slopes #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] @@ -33,22 +57,24 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn onboard_new_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `276` + // Measured: `133` // Estimated: `67035` - // Minimum execution time: 7_762_000 picoseconds. - Weight::from_parts(8_100_000, 67035) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 8_228_000 picoseconds. + Weight::from_parts(8_589_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn progress_mbms_none() -> Weight { // Proof Size summary in bytes: - // Measured: `142` + // Measured: `4` // Estimated: `67035` - // Minimum execution time: 2_077_000 picoseconds. - Weight::from_parts(2_138_000, 67035) - .saturating_add(T::DbWeight::get().reads(1_u64)) + // Minimum execution time: 1_980_000 picoseconds. + Weight::from_parts(2_175_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -56,12 +82,13 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_completed() -> Weight { // Proof Size summary in bytes: - // Measured: `134` - // Estimated: `3599` - // Minimum execution time: 5_868_000 picoseconds. - Weight::from_parts(6_143_000, 3599) - .saturating_add(T::DbWeight::get().reads(1_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `129` + // Estimated: `3594` + // Minimum execution time: 6_390_000 picoseconds. + Weight::from_parts(6_711_000, 0) + .saturating_add(Weight::from_parts(0, 3594)) + .saturating_add(T::DbWeight::get().reads(1)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -69,11 +96,12 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_skipped_historic() -> Weight { // Proof Size summary in bytes: - // Measured: `330` - // Estimated: `3795` - // Minimum execution time: 10_283_000 picoseconds. - Weight::from_parts(10_964_000, 3795) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Measured: `187` + // Estimated: `3731` + // Minimum execution time: 14_970_000 picoseconds. + Weight::from_parts(16_023_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -81,11 +109,12 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_advance() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 9_900_000 picoseconds. - Weight::from_parts(10_396_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Measured: `133` + // Estimated: `3731` + // Minimum execution time: 10_908_000 picoseconds. + Weight::from_parts(11_291_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -93,12 +122,13 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_complete() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 11_411_000 picoseconds. - Weight::from_parts(11_956_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `133` + // Estimated: `3731` + // Minimum execution time: 12_433_000 picoseconds. + Weight::from_parts(12_862_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -108,19 +138,21 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_fail() -> Weight { // Proof Size summary in bytes: - // Measured: `276` - // Estimated: `3741` - // Minimum execution time: 12_398_000 picoseconds. - Weight::from_parts(12_910_000, 3741) - .saturating_add(T::DbWeight::get().reads(2_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Measured: `133` + // Estimated: `3731` + // Minimum execution time: 13_407_000 picoseconds. + Weight::from_parts(13_901_000, 0) + .saturating_add(Weight::from_parts(0, 3731)) + .saturating_add(T::DbWeight::get().reads(2)) + .saturating_add(T::DbWeight::get().writes(1)) } fn on_init_loop() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 166_000 picoseconds. - Weight::from_parts(193_000, 0) + // Minimum execution time: 162_000 picoseconds. + Weight::from_parts(207_000, 0) + .saturating_add(Weight::from_parts(0, 0)) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -128,9 +160,10 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_686_000 picoseconds. - Weight::from_parts(2_859_000, 0) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 2_696_000 picoseconds. + Weight::from_parts(2_867_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -138,9 +171,10 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_070_000 picoseconds. - Weight::from_parts(3_250_000, 0) - .saturating_add(T::DbWeight::get().writes(1_u64)) + // Minimum execution time: 3_232_000 picoseconds. + Weight::from_parts(3_436_000, 0) + .saturating_add(Weight::from_parts(0, 0)) + .saturating_add(T::DbWeight::get().writes(1)) } /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -148,26 +182,44 @@ impl<T: frame_system::Config> pallet_migrations::WeightInfo for WeightInfo<T> { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn force_onboard_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `251` + // Measured: `109` // Estimated: `67035` - // Minimum execution time: 5_901_000 picoseconds. - Weight::from_parts(6_320_000, 67035) - .saturating_add(T::DbWeight::get().reads(2_u64)) + // Minimum execution time: 5_849_000 picoseconds. + Weight::from_parts(6_156_000, 0) + .saturating_add(Weight::from_parts(0, 67035)) + .saturating_add(T::DbWeight::get().reads(2)) } /// Storage: `MultiBlockMigrations::Historic` (r:256 w:256) /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) /// The range of component `n` is `[0, 256]`. fn clear_historic(n: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1122 + n * (271 ±0)` + // Measured: `984 + n * (271 ±0)` // Estimated: `3834 + n * (2740 ±0)` - // Minimum execution time: 15_952_000 picoseconds. - Weight::from_parts(14_358_665, 3834) - // Standard Error: 3_358 - .saturating_add(Weight::from_parts(1_323_674, 0).saturating_mul(n.into())) - .saturating_add(T::DbWeight::get().reads(1_u64)) + // Minimum execution time: 20_906_000 picoseconds. + Weight::from_parts(15_361_535, 0) + .saturating_add(Weight::from_parts(0, 3834)) + // Standard Error: 7_911 + .saturating_add(Weight::from_parts(1_518_172, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads(1)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) .saturating_add(Weight::from_parts(0, 2740).saturating_mul(n.into())) } -} \ No newline at end of file + /// Storage: `Skipped::Metadata` (r:0 w:0) + /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[0, 2048]`. + fn reset_pallet_migration(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `1676 + n * (38 ±0)` + // Estimated: `754 + n * (39 ±0)` + // Minimum execution time: 1_913_000 picoseconds. + Weight::from_parts(1_986_000, 0) + .saturating_add(Weight::from_parts(0, 754)) + // Standard Error: 2_511 + .saturating_add(Weight::from_parts(919_965, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 39).saturating_mul(n.into())) + } +} diff --git a/polkadot/xcm/docs/src/cookbook/mod.rs b/polkadot/xcm/docs/src/cookbook/mod.rs index 1c69bf0ead6f81e4a11010cbf314f9638dda9ccb..ac09e85d1a7d18a5a50bffafef5d668f8d4bd925 100644 --- a/polkadot/xcm/docs/src/cookbook/mod.rs +++ b/polkadot/xcm/docs/src/cookbook/mod.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/mod.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/mod.rs index 279dd71a35f7410b6a6899e5c018c4f55ca18d15..8e63b0fb3c7a341d26adef12bd5caf94e3cefe5f 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/mod.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/mod.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/network.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/network.rs index 71c14f6b241b6f68e501777457f87dd79716f602..7356d8ebcb59310b589c0256b2804d7b1ca12938 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/network.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/network.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/mod.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/mod.rs index 23d6664bdafcbc147f63c3a99ce2d788277679b5..a333d781c08c927dc6c4d118eb59c397c4832b08 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/mod.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/mod.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs index 0180354458ce448b4568a318417c3096644e5b87..59dcc7af0e83b684ad1b3ff2df501ba845d8406d 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/mod.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/mod.rs index cd8701dbbede153a043f28d0579c7090ac1f0746..5060961bf87589b937b3da3388d608ec90025750 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/mod.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/mod.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs index 06b00c39e8a04e72c1dcfaba354ec26dfd4db64e..cf044cd21be639bc15aba9ceda78801856b10f66 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/tests.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/tests.rs index b7fdaa34ec8ca5776a7ce573ab504665905cc213..46c73b37545f47532d307dab1c72d87de05b0b50 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/tests.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/tests.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/fundamentals.rs b/polkadot/xcm/docs/src/fundamentals.rs index 28899df801aa4f533cdfedaea8815804dc8bd7c2..ad365a8a775e253f2ea73b2229bb050911ab6a59 100644 --- a/polkadot/xcm/docs/src/fundamentals.rs +++ b/polkadot/xcm/docs/src/fundamentals.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/glossary.rs b/polkadot/xcm/docs/src/glossary.rs index 6035888ab733b2751a4f24d51336132111d6ef57..61bc3afb93dda7efc284f5ba00a096127bf751ec 100644 --- a/polkadot/xcm/docs/src/glossary.rs +++ b/polkadot/xcm/docs/src/glossary.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/guides/mod.rs b/polkadot/xcm/docs/src/guides/mod.rs index 5af89428d9a4c570831c17f48b5974e5ded5fd58..06d9fe69144bc40a16b8841f468157b4b774e8da 100644 --- a/polkadot/xcm/docs/src/guides/mod.rs +++ b/polkadot/xcm/docs/src/guides/mod.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/lib.rs b/polkadot/xcm/docs/src/lib.rs index 287c97140c91b371765257475b0d7a3ade2e2f06..8d78b9b19452d260c1abbea8f465be71f747213d 100644 --- a/polkadot/xcm/docs/src/lib.rs +++ b/polkadot/xcm/docs/src/lib.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/xcm-builder/src/fee_handling.rs b/polkadot/xcm/xcm-builder/src/fee_handling.rs index 17e9e64e00c9d2aa2cecb73c7355416b2d6ce6ac..f02e6b393c85b34e7aa719b40eea678ea4dea5d6 100644 --- a/polkadot/xcm/xcm-builder/src/fee_handling.rs +++ b/polkadot/xcm/xcm-builder/src/fee_handling.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/xcm-builder/src/fungible_adapter.rs b/polkadot/xcm/xcm-builder/src/fungible_adapter.rs index 25a705a39eb73906ca4c7ececfe4526e7450d712..2da772deb0ed71a45876ba59263139479e62f1de 100644 --- a/polkadot/xcm/xcm-builder/src/fungible_adapter.rs +++ b/polkadot/xcm/xcm-builder/src/fungible_adapter.rs @@ -20,11 +20,7 @@ use super::MintLocation; use core::{marker::PhantomData, result}; use frame_support::traits::{ tokens::{ - fungible, - Fortitude::Polite, - Precision::Exact, - Preservation::{Expendable, Preserve}, - Provenance::Minted, + fungible, Fortitude::Polite, Precision::Exact, Preservation::Expendable, Provenance::Minted, }, Get, }; @@ -64,7 +60,7 @@ impl< .ok_or(MatchError::AccountIdConversionFailed)?; let dest = AccountIdConverter::convert_location(to) .ok_or(MatchError::AccountIdConversionFailed)?; - Fungible::transfer(&source, &dest, amount, Preserve) + Fungible::transfer(&source, &dest, amount, Expendable) .map_err(|error| XcmError::FailedToTransactAsset(error.into()))?; Ok(what.clone().into()) } diff --git a/polkadot/xcm/xcm-builder/src/fungibles_adapter.rs b/polkadot/xcm/xcm-builder/src/fungibles_adapter.rs index a259afc6e682565718b86210a746e39928b140ab..59b4ccb13d0c58c888d73ff3a80a9ad81c5e5c54 100644 --- a/polkadot/xcm/xcm-builder/src/fungibles_adapter.rs +++ b/polkadot/xcm/xcm-builder/src/fungibles_adapter.rs @@ -19,10 +19,7 @@ use core::{marker::PhantomData, result}; use frame_support::traits::{ tokens::{ - fungibles, - Fortitude::Polite, - Precision::Exact, - Preservation::{Expendable, Preserve}, + fungibles, Fortitude::Polite, Precision::Exact, Preservation::Expendable, Provenance::Minted, }, Contains, Get, @@ -58,7 +55,7 @@ impl< .ok_or(MatchError::AccountIdConversionFailed)?; let dest = AccountIdConverter::convert_location(to) .ok_or(MatchError::AccountIdConversionFailed)?; - Assets::transfer(asset_id, &source, &dest, amount, Preserve) + Assets::transfer(asset_id, &source, &dest, amount, Expendable) .map_err(|e| XcmError::FailedToTransactAsset(e.into()))?; Ok(what.clone().into()) } diff --git a/polkadot/xcm/xcm-executor/src/traits/process_transaction.rs b/polkadot/xcm/xcm-executor/src/traits/process_transaction.rs index 22ad8755b9c90fac13fd414c52ee44d6e6792c70..fc388fbca7fa325da36b2cac00f6edd6ce0d8743 100644 --- a/polkadot/xcm/xcm-executor/src/traits/process_transaction.rs +++ b/polkadot/xcm/xcm-executor/src/traits/process_transaction.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/xcm-runtime-apis/src/conversions.rs b/polkadot/xcm/xcm-runtime-apis/src/conversions.rs index 22f0809ea5f926929bad7183f341727391522b52..710181e5b5ca4249eea26c3f2d8c311d63ca9b4e 100644 --- a/polkadot/xcm/xcm-runtime-apis/src/conversions.rs +++ b/polkadot/xcm/xcm-runtime-apis/src/conversions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Contains runtime APIs for useful conversions, such as between XCM `Location` and `AccountId`. diff --git a/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs b/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs index f0a70b0dacfe11773437f8e361d032f237f432bb..7bcc190c98795976e38450b55253c02fd86715ed 100644 --- a/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs +++ b/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. +// SPDX-License-Identifier: Apache-2.0 -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Runtime API definition for dry-running XCM-related extrinsics. //! This API can be used to simulate XCMs and, for example, find the fees diff --git a/polkadot/xcm/xcm-runtime-apis/src/fees.rs b/polkadot/xcm/xcm-runtime-apis/src/fees.rs index 9500a7f7281f42e0c1648a38100300dc3b2e35f4..a0e2dc912934e467aa0570faba1d04078c67a134 100644 --- a/polkadot/xcm/xcm-runtime-apis/src/fees.rs +++ b/polkadot/xcm/xcm-runtime-apis/src/fees.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. +// SPDX-License-Identifier: Apache-2.0 -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Runtime API definition for getting XCM fees. diff --git a/polkadot/xcm/xcm-runtime-apis/src/lib.rs b/polkadot/xcm/xcm-runtime-apis/src/lib.rs index f9a857c7c4cec28c7f973258618c1aedb633c977..c6754ffb2d0cf33645aced4c5d9213619e80173a 100644 --- a/polkadot/xcm/xcm-runtime-apis/src/lib.rs +++ b/polkadot/xcm/xcm-runtime-apis/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Various runtime APIs to support XCM processing and manipulation. diff --git a/polkadot/xcm/xcm-runtime-apis/src/trusted_query.rs b/polkadot/xcm/xcm-runtime-apis/src/trusted_query.rs index a2e3e1625486da363540db21b99832b077a81021..be3e0492f8d5f1f02b1eb3143555c71917fd51b9 100644 --- a/polkadot/xcm/xcm-runtime-apis/src/trusted_query.rs +++ b/polkadot/xcm/xcm-runtime-apis/src/trusted_query.rs @@ -1,18 +1,19 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Runtime API definition for checking if given <Asset, Location> is trusted reserve or teleporter. diff --git a/polkadot/xcm/xcm-runtime-apis/tests/conversions.rs b/polkadot/xcm/xcm-runtime-apis/tests/conversions.rs index c7a1dda0169c875bada9138516d334bb4833c56c..f918c5c7662500bf794e84709766af331fc524fe 100644 --- a/polkadot/xcm/xcm-runtime-apis/tests/conversions.rs +++ b/polkadot/xcm/xcm-runtime-apis/tests/conversions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. +// SPDX-License-Identifier: Apache-2.0 -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. mod mock; diff --git a/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs b/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs index c3046b134d1fe041fcb770a642104b240d35ef55..e1ab1ed1cecfb709235b7a7b3d323845c41a9fcd 100644 --- a/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs +++ b/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. +// SPDX-License-Identifier: Apache-2.0 -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Tests for using both the XCM fee payment API and the dry-run API. diff --git a/polkadot/xcm/xcm-runtime-apis/tests/mock.rs b/polkadot/xcm/xcm-runtime-apis/tests/mock.rs index 18d9dce9245a33d7903084363d6b39f3e66359c9..24e0e3fd4ed271e64e521a30aab2e33df689ed47 100644 --- a/polkadot/xcm/xcm-runtime-apis/tests/mock.rs +++ b/polkadot/xcm/xcm-runtime-apis/tests/mock.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Mock runtime for tests. //! Implements both runtime APIs for fee estimation and getting the messages for transfers. diff --git a/polkadot/xcm/xcm-runtime-apis/tests/trusted_query.rs b/polkadot/xcm/xcm-runtime-apis/tests/trusted_query.rs index 5e3a68b9225bae868064bb3b8dde98ddb53e675a..64f26e6b942b1bf7e8033a9b8533c09218bfc66e 100644 --- a/polkadot/xcm/xcm-runtime-apis/tests/trusted_query.rs +++ b/polkadot/xcm/xcm-runtime-apis/tests/trusted_query.rs @@ -1,15 +1,19 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// SPDX-License-Identifier: Apache-2.0 -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see <http://www.gnu.org/licenses/>. diff --git a/polkadot/xcm/xcm-simulator/src/mock_message_queue.rs b/polkadot/xcm/xcm-simulator/src/mock_message_queue.rs index bf7b0e15967c027738751cff3edaa27c29f41a0c..726af0468acb58a0b57018182d7240185f322947 100644 --- a/polkadot/xcm/xcm-simulator/src/mock_message_queue.rs +++ b/polkadot/xcm/xcm-simulator/src/mock_message_queue.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/prdoc/pr_6338.prdoc b/prdoc/pr_6338.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..68d01904d071975de79188b98ba06cd8aaae8bc7 --- /dev/null +++ b/prdoc/pr_6338.prdoc @@ -0,0 +1,14 @@ +# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0 +# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json + +title: Update Referenda to Support Block Number Provider + +doc: + - audience: Runtime Dev + description: | + This PR makes the referenda pallet uses the relay chain as a block provider for a parachain on a regular schedule. + To migrate existing referenda implementations, simply add `type BlockNumberProvider = System` to have the same behavior as before. + +crates: +- name: pallet-referenda + bump: major \ No newline at end of file diff --git a/prdoc/pr_6621.prdoc b/prdoc/pr_6621.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..c7d9792957eef62a6ab5bbfd5fd685745f4f4ad1 --- /dev/null +++ b/prdoc/pr_6621.prdoc @@ -0,0 +1,14 @@ +# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0 +# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json + +title: Update Conviction Voting Pallet to Support Block Number Provider + +doc: + - audience: Runtime Dev + description: | + This PR makes the block number provider used in the society pallet configurable. Before this PR, society pallet always used the system block number, + with this PR some runtime can opt to use the relay chain block number instead. + +crates: +- name: pallet-conviction-voting + bump: major \ No newline at end of file diff --git a/prdoc/pr_6623.prdoc b/prdoc/pr_6623.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..8e2fd8ddaca8d9a7eaf685dbd0098635181090f8 --- /dev/null +++ b/prdoc/pr_6623.prdoc @@ -0,0 +1,15 @@ +# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0 +# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json + +title: Update Society Pallet to Support Block Number Provider + +doc: + - audience: Runtime Dev + description: | + This PR makes the block number provider in the Society pallet configurable so that runtimes can choose between using the system block number or an alternative source like the relay chain’s block number. + If you want to keep the existing behavior, simply set the provider to System. For scenarios that require a different notion of block number—such as using a relay chain number you can select another provider, + ensuring flexibility in how the Society pallet references the current block. + +crates: +- name: pallet-society + bump: major \ No newline at end of file diff --git a/prdoc/pr_6715.prdoc b/prdoc/pr_6715.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..d7b55509f3f26b4aae7ddcfd4e6810235bcd754b --- /dev/null +++ b/prdoc/pr_6715.prdoc @@ -0,0 +1,14 @@ +# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0 +# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json + +title: Update Nomination Pool Pallet to Support Block Number Provider + +doc: + - audience: Runtime Dev + description: | + This PR makes the block number provider in the Society pallet configurable so that runtimes can choose between using the system block number or an alternative source like the relay chain’s block number. + If you want to keep the existing behavior, simply set the provider to System. For scenarios that require a different notion of block number—such as using a relay chain number you can select another provider, + ensuring flexibility in how the nomination pools pallet references the current block. +crates: +- name: pallet-nomination-pools + bump: major \ No newline at end of file diff --git a/prdoc/pr_6913.prdoc b/prdoc/pr_6913.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..16d2564a6eed86e5b136fc51157dcafcc528b44b --- /dev/null +++ b/prdoc/pr_6913.prdoc @@ -0,0 +1,13 @@ +title: Enable approval-voting-parallel by default on polkadot + +doc: + - audience: Node Dev + description: | + Enable approval-voting-parallel by default on polkadot +crates: + - name: polkadot-network-bridge + bump: minor + - name: polkadot-gossip-support + bump: minor + - name: polkadot-overseer + bump: minor diff --git a/prdoc/pr_7008.prdoc b/prdoc/pr_7008.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..f22528d2f07f39c48833b2c0d16571ce891ebf13 --- /dev/null +++ b/prdoc/pr_7008.prdoc @@ -0,0 +1,25 @@ +# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0 +# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json + +title: 'feat(wasm-builder): add support for new `wasm32v1-none` target' +doc: + - audience: Runtime Dev + description: | + Resolves [#5777](https://github.com/paritytech/polkadot-sdk/issues/5777) + + Previously `wasm-builder` used hacks such as `-Zbuild-std` (required `rust-src` component) and `RUSTC_BOOTSTRAP=1` to build WASM runtime without WASM features: `sign-ext`, `multivalue` and `reference-types`, but since Rust 1.84 (will be stable on 9 January, 2025) the situation has improved as there is new [`wasm32v1-none`](https://doc.rust-lang.org/beta/rustc/platform-support/wasm32v1-none.html) target that disables all "post-MVP" WASM features except `mutable-globals`. + + Wasm builder requires the following prerequisites for building the WASM binary: + - Rust >= 1.68 and Rust < 1.84: + - `wasm32-unknown-unknown` target + - `rust-src` component + - Rust >= 1.84: + - `wasm32v1-none` target + - no more `-Zbuild-std` and `RUSTC_BOOTSTRAP=1` hacks and `rust-src` component requirements! + +crates: +- name: substrate-wasm-builder + bump: minor + validate: false +- name: sp-consensus-beefy + bump: patch diff --git a/prdoc/pr_7230.prdoc b/prdoc/pr_7230.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..027694f604fe907d7781783e70698a0952e27644 --- /dev/null +++ b/prdoc/pr_7230.prdoc @@ -0,0 +1,46 @@ +title: 'revive: Include immutable storage deposit into the contracts `storage_base_deposit`' +doc: +- audience: Runtime Dev + description: |- + This PR is centered around a main fix regarding the base deposit and a bunch of drive by or related fixtures that make sense to resolve in one go. It could be broken down more but I am constantly rebasing this PR and would appreciate getting those fixes in as-one. + + ## Record the deposit for immutable data into the `storage_base_deposit` + + The `storage_base_deposit` are all the deposit a contract has to pay for existing. It included the deposit for its own metadata and a deposit proportional (< 1.0x) to the size of its code. However, the immutable code size was not recorded there. This would lead to the situation where on terminate this portion wouldn't be refunded staying locked into the contract. It would also make the calculation of the deposit changes on `set_code_hash` more complicated when it updates the immutable data (to be done in #6985). Reason is because it didn't know how much was payed before since the storage prices could have changed in the mean time. + + In order for this solution to work I needed to delay the deposit calculation for a new contract for after the contract is done executing is constructor as only then we know the immutable data size. Before, we just charged this eagerly in `charge_instantiate` before we execute the constructor. Now, we merely send the ED as free balance before the constructor in order to create the account. After the constructor is done we calculate the contract base deposit and charge it. This will make `set_code_hash` much easier to implement. + + As a side effect it is now legal to call `set_immutable_data` multiple times per constructor (even though I see no reason to do so). It simply overrides the immutable data with the new value. The deposit accounting will be done after the constructor returns (as mentioned above) instead of when setting the immutable data. + + ## Don't pre-charge for reading immutable data + + I noticed that we were pre-charging weight for the max allowable immutable data when reading those values and then refunding after read. This is not necessary as we know its length without reading the storage as we store it out of band in contract metadata. This makes reading it free. Less pre-charging less problems. + + ## Remove delegate locking + + Fixes #7092 + + This is also in the spirit of making #6985 easier to implement. The locking complicates `set_code_hash` as we might need to block settings the code hash when locks exist. Check #7092 for further rationale. + + ## Enforce "no terminate in constructor" eagerly + + We used to enforce this rule after the contract execution returned. Now we error out early in the host call. This makes it easier to be sure to argue that a contract info still exists (wasn't terminated) when a constructor successfully returns. All around this his just much simpler than dealing this check. + + ## Moved refcount functions to `CodeInfo` + + They never really made sense to exist on `Stack`. But now with the locking gone this makes even less sense. The refcount is stored inside `CodeInfo` to lets just move them there. + + ## Set `CodeHashLockupDepositPercent` for test runtime + + The test runtime was setting `CodeHashLockupDepositPercent` to zero. This was trivializing many code paths and excluded them from testing. I set it to `30%` which is our default value and fixed up all the tests that broke. This should give us confidence that the lockup doeposit collections properly works. + + ## Reworked the `MockExecutable` to have both a `deploy` and a `call` entry point + + This type used for testing could only have either entry points but not both. In order to fix the `immutable_data_set_overrides` I needed to a new function `add_both` to `MockExecutable` that allows to have both entry points. Make sure to make use of it in the future :) +crates: +- name: pallet-revive-fixtures + bump: patch +- name: pallet-revive + bump: patch +- name: pallet-revive-uapi + bump: major diff --git a/prdoc/pr_7243.prdoc b/prdoc/pr_7243.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..c04017c29ce43975e59fe642596fe05a764eb6a0 --- /dev/null +++ b/prdoc/pr_7243.prdoc @@ -0,0 +1,13 @@ +# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0 +# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json + +title: 'transfer function Preservation is changed to Expendable in fungible and fungibles adapter' + +doc: + - audience: Runtime Dev + description: | + The Preservation of transfer method of fungible and fungibles adapters is changed from Preserve to Expendable. So the behavior of the TransferAsset will be consistent with the WithdrawAsset function, as in fungible and fungibles adapter. + +crates: +- name: staging-xcm-builder + bump: patch \ No newline at end of file diff --git a/prdoc/pr_7412.prdoc b/prdoc/pr_7412.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..fd6bbea8654137266f634868e2f11f80117b1f99 --- /dev/null +++ b/prdoc/pr_7412.prdoc @@ -0,0 +1,16 @@ +title: 'Pallet view functions: improve metadata, API docs and testing' +doc: +- audience: Runtime Dev + description: |- + - refactor view functions metadata according to #6833 in preparation for V16, and move them to pallet-level metadata + - add `view_functions_experimental` macro to `pallet_macros` with API docs + - improve UI testing for view functions +crates: +- name: frame-support-procedural + bump: minor +- name: sp-metadata-ir + bump: major +- name: pallet-example-view-functions + bump: patch +- name: frame-support + bump: minor diff --git a/prdoc/pr_7430.prdoc b/prdoc/pr_7430.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..a3258a72c939601ca68011178645f14bbd92428c --- /dev/null +++ b/prdoc/pr_7430.prdoc @@ -0,0 +1,28 @@ +title: '[pallet-revive] fix tracing gas used' +doc: +- audience: Runtime Dev + description: |- + - Charge the nested gas meter for loading the code of the child contract, so that we can properly associate the gas cost to the child call frame. + - Move the enter_child_span and exit_child_span around the do_transaction closure to properly capture all failures + - Add missing trace capture for call transfer +crates: +- name: pallet-revive-fixtures + bump: minor +- name: pallet-revive + bump: minor +- name: pallet-revive-uapi + bump: minor +- name: asset-hub-westend-runtime + bump: minor +- name: pallet-migrations + bump: minor +- name: frame-support + bump: minor +- name: people-rococo-runtime + bump: minor +- name: people-westend-runtime + bump: minor +- name: rococo-runtime + bump: minor +- name: westend-runtime + bump: minor diff --git a/prdoc/pr_7451.prdoc b/prdoc/pr_7451.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..dd8090cdd7cb72ea5b58eaf811e79ccba21e5dbe --- /dev/null +++ b/prdoc/pr_7451.prdoc @@ -0,0 +1,8 @@ +title: 'omni-node: Adjust manual seal parameters' +doc: +- audience: Runtime Dev + description: |- + This PR restores compatibility of older runtimes with the dev mode of omni-node. Before, runtimes built without the changes in https://github.com/paritytech/polkadot-sdk/pull/6825 were failing. +crates: +- name: polkadot-omni-node-lib + bump: patch diff --git a/prdoc/pr_7463.prdoc b/prdoc/pr_7463.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..885fc24efa6b62a8dbbf05d779406287d9db0eed --- /dev/null +++ b/prdoc/pr_7463.prdoc @@ -0,0 +1,17 @@ +title: '[pallet-revive] tx fee fixes' +doc: +- audience: Runtime Dev + description: |- + Apply some fixes to properly estimate ethereum tx fees: + + - Set the `extension_weight` on the dispatch_info to properly calculate the fee with pallet_transaction_payment + - Expose the gas_price through Runtime API, just in case we decide to tweak the value in future updates, it should be read from the chain rather than be a shared constant exposed by the crate + - add a `evm_gas_to_fee` utility function to properly convert gas to substrate fee + - Fix some minor gas encoding for edge cases +crates: +- name: asset-hub-westend-runtime + bump: minor +- name: pallet-revive-eth-rpc + bump: minor +- name: pallet-revive + bump: minor diff --git a/prdoc/pr_7479.prdoc b/prdoc/pr_7479.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..444eaa420a4562ebe2ad0bb298b197fd83e5f036 --- /dev/null +++ b/prdoc/pr_7479.prdoc @@ -0,0 +1,9 @@ +title: 'omni-node: add offchain worker' +doc: +- audience: [ Runtime Dev, Node Dev, Node Operator ] + description: |- + Added support for offchain worker to omni-node-lib for both aura and manual seal nodes. + +crates: +- name: polkadot-omni-node-lib + bump: patch diff --git a/prdoc/pr_7482.prdoc b/prdoc/pr_7482.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..0f548582a21a814d4613791be4080b2931cfab41 --- /dev/null +++ b/prdoc/pr_7482.prdoc @@ -0,0 +1,7 @@ +title: '[pallet-revive] rpc - gas used fixes ' +doc: +- audience: Runtime Dev + description: '#7463 follow up with RPC fixes' +crates: +- name: pallet-revive-eth-rpc + bump: minor diff --git a/prdoc/pr_7488.prdoc b/prdoc/pr_7488.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..55ce87d42d86dff00dca7d1b172fe7bbbf76a589 --- /dev/null +++ b/prdoc/pr_7488.prdoc @@ -0,0 +1,10 @@ +title: Increase litep2p keep-alive to 10 seconds to mirror libp2p + +doc: + - audience: [Node Dev, Node Operator] + description: | + Increase litep2p keep-alive to 10 seconds to mirror libp2p behavior. + +crates: + - name: sc-network + bump: patch diff --git a/prdoc/pr_7493.prdoc b/prdoc/pr_7493.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..e613cb049551ff6357696abd6d55e9749c36a40e --- /dev/null +++ b/prdoc/pr_7493.prdoc @@ -0,0 +1,9 @@ +title: '[pallet-revive] fix eth-rpc indexing' +doc: +- audience: Runtime Dev + description: |- + - Fix a deadlock on the RWLock cache + - Remove eth-indexer, we won't need it anymore, the indexing will be started from within eth-rpc directly +crates: +- name: pallet-revive-eth-rpc + bump: minor diff --git a/prdoc/pr_7504.prdoc b/prdoc/pr_7504.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..3b3a64ffcdc1855c20f5b77a2c991360e0108436 --- /dev/null +++ b/prdoc/pr_7504.prdoc @@ -0,0 +1,11 @@ +title: Enable approval-voting-parallel by default on polkadot + +doc: + - audience: Node Dev + description: | + Enable approval-voting-parallel by default on polkadot +crates: + - name: polkadot-service + bump: patch + - name: polkadot-cli + bump: patch diff --git a/prdoc/pr_7506.prdoc b/prdoc/pr_7506.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..7e41afbb3a5e81fc3a945dc2cf74b440cfd5d3be --- /dev/null +++ b/prdoc/pr_7506.prdoc @@ -0,0 +1,9 @@ +title: '[pallet-revive] Add eth_get_logs' +doc: +- audience: Runtime Dev + description: "Add support for eth_get_logs rpc method" +crates: +- name: pallet-revive-eth-rpc + bump: minor +- name: pallet-revive + bump: minor diff --git a/prdoc/pr_7507.prdoc b/prdoc/pr_7507.prdoc new file mode 100644 index 0000000000000000000000000000000000000000..7f553298b0a8db10b19b76bce7e7379b3e4d9e27 --- /dev/null +++ b/prdoc/pr_7507.prdoc @@ -0,0 +1,9 @@ +title: 'Fix compilation warnings ' +doc: +- audience: Runtime Dev + description: This should fix some compilation warnings discovered under rustc 1.83 +crates: +- name: pallet-example-view-functions + bump: minor +- name: sp-consensus-beefy + bump: minor diff --git a/scripts/generate-umbrella.py b/scripts/generate-umbrella.py index ae3873180553eb6e8de9985927201f290e413a00..388573707822fcd771da6dff779c2dad56d2eff2 100644 --- a/scripts/generate-umbrella.py +++ b/scripts/generate-umbrella.py @@ -75,11 +75,17 @@ def main(path, version): # No search for a no_std attribute: with open(lib_path, "r") as f: - content = f.read() - if "#![no_std]" in content or '#![cfg_attr(not(feature = "std"), no_std)]' in content: + nostd_crate = False + for line in f: + line = line.strip() + if line == "#![no_std]" or line == '#![cfg_attr(not(feature = "std"), no_std)]': + nostd_crate = True + break + elif "no_std" in line: + print(line) + + if nostd_crate: nostd_crates.append((crate, path)) - elif 'no_std' in content: - raise Exception(f"Found 'no_std' in {lib_path} without knowing how to handle it") else: std_crates.append((crate, path)) diff --git a/substrate/bin/node/cli/benches/executor.rs b/substrate/bin/node/cli/benches/executor.rs index 412b7f0ba0fca53221af2e0b803e45744d24a5df..dcbb1580e1b0044a4c9bf86eb35ba0b519aca942 100644 --- a/substrate/bin/node/cli/benches/executor.rs +++ b/substrate/bin/node/cli/benches/executor.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. use polkadot_sdk::*; diff --git a/substrate/bin/node/cli/tests/basic.rs b/substrate/bin/node/cli/tests/basic.rs index 8f1475fce4f89e9a38945eff6c0cf7847037e04e..01ce9ed52fc2d9dce8e42ab4ea8a4e9a1a22306e 100644 --- a/substrate/bin/node/cli/tests/basic.rs +++ b/substrate/bin/node/cli/tests/basic.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. use codec::{Decode, Encode, Joiner}; use frame_support::{ diff --git a/substrate/bin/node/cli/tests/common.rs b/substrate/bin/node/cli/tests/common.rs index 95583395f73403959f20162c543617a84d2741fa..389c872e4fce11d4ceccd62dd0acb43b452e4f22 100644 --- a/substrate/bin/node/cli/tests/common.rs +++ b/substrate/bin/node/cli/tests/common.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. use codec::{Decode, Encode}; use frame_support::Hashable; diff --git a/substrate/bin/node/cli/tests/fees.rs b/substrate/bin/node/cli/tests/fees.rs index da9d2662408eb5986ee4c6bfc790880560987814..673528128ae1bd5f08b6697a4b79134daf88e932 100644 --- a/substrate/bin/node/cli/tests/fees.rs +++ b/substrate/bin/node/cli/tests/fees.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. use codec::{Encode, Joiner}; use frame_support::{ diff --git a/substrate/bin/node/cli/tests/submit_transaction.rs b/substrate/bin/node/cli/tests/submit_transaction.rs index 3672432ae3426294479577e83c4bc93cf3ec9cb4..224569f11c84b3ec2898937bb2926715796dd144 100644 --- a/substrate/bin/node/cli/tests/submit_transaction.rs +++ b/substrate/bin/node/cli/tests/submit_transaction.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. use codec::Decode; use frame_system::offchain::{SendSignedTransaction, Signer, SubmitTransaction}; diff --git a/substrate/bin/node/runtime/src/assets_api.rs b/substrate/bin/node/runtime/src/assets_api.rs index 98187e7391f3e2d316c53da6b52ebdaea97f85fc..852d8abbaec372cc743328848d2ee346e88afd66 100644 --- a/substrate/bin/node/runtime/src/assets_api.rs +++ b/substrate/bin/node/runtime/src/assets_api.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Runtime API definition for assets. diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index 6b9080c773a0473727316243c6cc7e50100f54f1..8986d61da6beda096df2d096ec24b72f96be44ab 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! The Substrate runtime. This can be compiled with `#[no_std]`, ready for Wasm. @@ -41,7 +40,7 @@ use frame_election_provider_support::{ }; use frame_support::{ derive_impl, - dispatch::DispatchClass, + dispatch::{DispatchClass, DispatchInfo}, dynamic_params::{dynamic_pallet_params, dynamic_params}, genesis_builder_helper::{build_state, get_preset}, instances::{Instance1, Instance2}, @@ -89,6 +88,7 @@ use pallet_nomination_pools::PoolId; use pallet_revive::{evm::runtime::EthExtra, AddressMapper}; use pallet_session::historical as pallet_session_historical; use sp_core::U256; +use sp_runtime::traits::TransactionExtension; // Can't use `FungibleAdapter` here until Treasury pallet migrates to fungibles // <https://github.com/paritytech/polkadot-sdk/issues/226> use pallet_broker::TaskId; @@ -990,6 +990,7 @@ impl pallet_nomination_pools::Config for Runtime { EnsureRoot<AccountId>, pallet_collective::EnsureProportionAtLeast<AccountId, CouncilCollective, 3, 4>, >; + type BlockNumberProvider = System; } parameter_types! { @@ -1004,6 +1005,7 @@ impl pallet_conviction_voting::Config for Runtime { type MaxVotes = ConstU32<512>; type MaxTurnout = frame_support::traits::TotalIssuanceOf<Balances, Self::AccountId>; type Polls = Referenda; + type BlockNumberProvider = System; } parameter_types! { @@ -1072,6 +1074,7 @@ impl pallet_referenda::Config for Runtime { type AlarmInterval = AlarmInterval; type Tracks = TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } impl pallet_referenda::Config<pallet_referenda::Instance2> for Runtime { @@ -1092,6 +1095,7 @@ impl pallet_referenda::Config<pallet_referenda::Instance2> for Runtime { type AlarmInterval = AlarmInterval; type Tracks = TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } impl pallet_ranked_collective::Config for Runtime { @@ -1717,6 +1721,7 @@ impl pallet_society::Config for Runtime { type ChallengePeriod = ChallengePeriod; type MaxPayouts = MaxPayouts; type MaxBids = MaxBids; + type BlockNumberProvider = System; type WeightInfo = pallet_society::weights::SubstrateWeight<Runtime>; } @@ -3313,6 +3318,10 @@ impl_runtime_apis! { Revive::evm_block_gas_limit() } + fn gas_price() -> U256 { + Revive::evm_gas_price() + } + fn nonce(address: H160) -> Nonce { let account = <Runtime as pallet_revive::Config>::AddressMapper::to_account_id(&address); System::account_nonce(account) @@ -3321,18 +3330,19 @@ impl_runtime_apis! { fn eth_transact(tx: pallet_revive::evm::GenericTransaction) -> Result<pallet_revive::EthTransactInfo<Balance>, pallet_revive::EthTransactError> { let blockweights: BlockWeights = <Runtime as frame_system::Config>::BlockWeights::get(); - - let encoded_size = |pallet_call| { + let tx_fee = |pallet_call, mut dispatch_info: DispatchInfo| { let call = RuntimeCall::Revive(pallet_call); + dispatch_info.extension_weight = EthExtraImpl::get_eth_extension(0, 0u32.into()).weight(&call); let uxt: UncheckedExtrinsic = sp_runtime::generic::UncheckedExtrinsic::new_bare(call).into(); - uxt.encoded_size() as u32 + + pallet_transaction_payment::Pallet::<Runtime>::compute_fee( + uxt.encoded_size() as u32, + &dispatch_info, + 0u32.into(), + ) }; - Revive::bare_eth_transact( - tx, - blockweights.max_block, - encoded_size, - ) + Revive::bare_eth_transact(tx, blockweights.max_block, tx_fee) } fn call( diff --git a/substrate/client/cli/src/commands/generate.rs b/substrate/client/cli/src/commands/generate.rs index 94769279e21940993785b2a4eeb6fed5d08ddeb6..29ea37372b146d7eed07dcbb4ac7d9b5c40aa71b 100644 --- a/substrate/client/cli/src/commands/generate.rs +++ b/substrate/client/cli/src/commands/generate.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. //! Implementation of the `generate` subcommand use crate::{ diff --git a/substrate/client/cli/src/commands/generate_node_key.rs b/substrate/client/cli/src/commands/generate_node_key.rs index bdb94eec93b4a38797b54a7e7459d91dc88a3794..38435cda4b18210bf8691f4a776bd3c3dae12a2a 100644 --- a/substrate/client/cli/src/commands/generate_node_key.rs +++ b/substrate/client/cli/src/commands/generate_node_key.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. //! Implementation of the `generate-node-key` subcommand diff --git a/substrate/client/cli/src/commands/insert_key.rs b/substrate/client/cli/src/commands/insert_key.rs index 66dbec794865c00bed9e508a44e760299b2bc3ea..08a7b95b95b4f1dfcb91eee52b7d91ba7fe901f2 100644 --- a/substrate/client/cli/src/commands/insert_key.rs +++ b/substrate/client/cli/src/commands/insert_key.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. //! Implementation of the `insert` subcommand diff --git a/substrate/client/cli/src/commands/inspect_key.rs b/substrate/client/cli/src/commands/inspect_key.rs index 5aa8b0bdcaa607ca53f996380a40791a3483584c..b984ccf02afb965fd115b8e2a58df593af03f4da 100644 --- a/substrate/client/cli/src/commands/inspect_key.rs +++ b/substrate/client/cli/src/commands/inspect_key.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. //! Implementation of the `inspect` subcommand diff --git a/substrate/client/cli/src/commands/inspect_node_key.rs b/substrate/client/cli/src/commands/inspect_node_key.rs index 25a0a685650e3d39709e7f8e9af903d7d72070d0..f66ac89d7331582f8e503a329fa82d4e375ff479 100644 --- a/substrate/client/cli/src/commands/inspect_node_key.rs +++ b/substrate/client/cli/src/commands/inspect_node_key.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. //! Implementation of the `inspect-node-key` subcommand diff --git a/substrate/client/cli/src/commands/key.rs b/substrate/client/cli/src/commands/key.rs index 52747b404622691cc0ef572ab91f39e3d23a3eb5..563d45b13477ea74afaf1c3af0e9030aa631fe2e 100644 --- a/substrate/client/cli/src/commands/key.rs +++ b/substrate/client/cli/src/commands/key.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. //! Key related CLI utilities diff --git a/substrate/client/consensus/beefy/src/communication/request_response/incoming_requests_handler.rs b/substrate/client/consensus/beefy/src/communication/request_response/incoming_requests_handler.rs index c473c14bccc3d90beb6fc50e58b95d6d198fa8f2..af66246c7c7794c0eaf30d24c307d553ffababc6 100644 --- a/substrate/client/consensus/beefy/src/communication/request_response/incoming_requests_handler.rs +++ b/substrate/client/consensus/beefy/src/communication/request_response/incoming_requests_handler.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// along with Substrate. If not, see <https://www.gnu.org/licenses/>. //! Helper for handling (i.e. answering) BEEFY justifications requests from a remote peer. diff --git a/substrate/client/consensus/grandpa/src/warp_proof.rs b/substrate/client/consensus/grandpa/src/warp_proof.rs index ada3a45e186e0a48de5f6b1b7e912df7dd5a4c3a..899686355b1ba4272999a3fccae115a91cd78cc6 100644 --- a/substrate/client/consensus/grandpa/src/warp_proof.rs +++ b/substrate/client/consensus/grandpa/src/warp_proof.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// along with Substrate. If not, see <https://www.gnu.org/licenses/>. //! Utilities for generating and verifying GRANDPA warp sync proofs. diff --git a/substrate/client/executor/benches/bench.rs b/substrate/client/executor/benches/bench.rs index 4cde8c2a4a64678bc43b2c6001a105249e94453c..8e460955396c4d45211ae13cccf5333a49efd0ab 100644 --- a/substrate/client/executor/benches/bench.rs +++ b/substrate/client/executor/benches/bench.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. use criterion::{criterion_group, criterion_main, Criterion}; diff --git a/substrate/client/keystore/src/local.rs b/substrate/client/keystore/src/local.rs index 91c52bfcd50a0ff8723b5fcf4e5aed90fc19fdac..180b16720243949af4bcee05de4ffccc07b26ef2 100644 --- a/substrate/client/keystore/src/local.rs +++ b/substrate/client/keystore/src/local.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. // //! Local keystore implementation diff --git a/substrate/client/network/src/bitswap/mod.rs b/substrate/client/network/src/bitswap/mod.rs index e45c95c7d3c84e8950381bacccff8fffb7a4c54f..36c32b4b059eba69dd98404c1b28b8600ce107e0 100644 --- a/substrate/client/network/src/bitswap/mod.rs +++ b/substrate/client/network/src/bitswap/mod.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// along with Substrate. If not, see <https://www.gnu.org/licenses/>. //! Bitswap server for Substrate. //! diff --git a/substrate/client/network/src/litep2p/mod.rs b/substrate/client/network/src/litep2p/mod.rs index fc4cce47628396bd22c8785edd18227c27a7326a..e8e132228ca8f82d1a32ff2508b5fe84efc242ca 100644 --- a/substrate/client/network/src/litep2p/mod.rs +++ b/substrate/client/network/src/litep2p/mod.rs @@ -100,6 +100,9 @@ mod peerstore; mod service; mod shim; +/// Timeout for connection waiting new substreams. +const KEEP_ALIVE_TIMEOUT: Duration = Duration::from_secs(10); + /// Litep2p bandwidth sink. struct Litep2pBandwidthSink { sink: litep2p::BandwidthSink, @@ -566,6 +569,9 @@ impl<B: BlockT + 'static, H: ExHashT> NetworkBackend<B, H> for Litep2pNetworkBac .with_connection_limits(ConnectionLimitsConfig::default().max_incoming_connections( Some(crate::MAX_CONNECTIONS_ESTABLISHED_INCOMING as usize), )) + // This has the same effect as `libp2p::Swarm::with_idle_connection_timeout` which is + // set to 10 seconds as well. + .with_keep_alive_timeout(KEEP_ALIVE_TIMEOUT) .with_executor(executor); if let Some(config) = maybe_mdns_config { diff --git a/substrate/client/network/sync/src/block_relay_protocol.rs b/substrate/client/network/sync/src/block_relay_protocol.rs index 13639d851b27241155701dbfcd5752a7d6b22639..9b8b93612497e47374d9647fa0fef1220c78bde6 100644 --- a/substrate/client/network/sync/src/block_relay_protocol.rs +++ b/substrate/client/network/sync/src/block_relay_protocol.rs @@ -1,5 +1,6 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// along with Substrate. If not, see <https://www.gnu.org/licenses/>. //! Block relay protocol related definitions. diff --git a/substrate/client/network/sync/src/block_request_handler.rs b/substrate/client/network/sync/src/block_request_handler.rs index 80234170bc203a9d6823dc8a5352e3ac51b6abd8..b83aa0b864c880e6be6dbd4afcde5ce28d726131 100644 --- a/substrate/client/network/sync/src/block_request_handler.rs +++ b/substrate/client/network/sync/src/block_request_handler.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// along with Substrate. If not, see <https://www.gnu.org/licenses/>. //! Helper for handling (i.e. answering) block requests from a remote peer via the //! `crate::request_responses::RequestResponsesBehaviour`. diff --git a/substrate/client/network/sync/src/state_request_handler.rs b/substrate/client/network/sync/src/state_request_handler.rs index 36a15f1f42400e5b344e8ae060bd1b10ed5fd090..6ca2f06a71af88ba60f5e13fdef92980975a0a57 100644 --- a/substrate/client/network/sync/src/state_request_handler.rs +++ b/substrate/client/network/sync/src/state_request_handler.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// along with Substrate. If not, see <https://www.gnu.org/licenses/>. //! Helper for handling (i.e. answering) state requests from a remote peer via the //! `crate::request_responses::RequestResponsesBehaviour`. diff --git a/substrate/client/network/sync/src/warp_request_handler.rs b/substrate/client/network/sync/src/warp_request_handler.rs index 8d0b757ff821c47814c505d907268f1aa93f0220..a2627afadecff5d4cec0c8ac21ed45ca8f2fcbb4 100644 --- a/substrate/client/network/sync/src/warp_request_handler.rs +++ b/substrate/client/network/sync/src/warp_request_handler.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// along with Substrate. If not, see <https://www.gnu.org/licenses/>. //! Helper for handling (i.e. answering) grandpa warp sync requests from a remote peer. diff --git a/substrate/client/rpc-spec-v2/src/common/mod.rs b/substrate/client/rpc-spec-v2/src/common/mod.rs index 3167561d649a2f51f24b864ffa581df16b139202..cee43c9cac3de0aa14cdfec8c1cf4e354353205e 100644 --- a/substrate/client/rpc-spec-v2/src/common/mod.rs +++ b/substrate/client/rpc-spec-v2/src/common/mod.rs @@ -1,3 +1,8 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or diff --git a/substrate/client/sync-state-rpc/src/lib.rs b/substrate/client/sync-state-rpc/src/lib.rs index cb737cc6c52b3b362134d8a2291aec9510fb0a9e..da98fde68af4486ec0bb5c2494b40efcd0025b4a 100644 --- a/substrate/client/sync-state-rpc/src/lib.rs +++ b/substrate/client/sync-state-rpc/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! A RPC handler to create sync states for light clients. //! diff --git a/substrate/client/tracing/benches/bench.rs b/substrate/client/tracing/benches/bench.rs index 0f581f6471de7f1d2396f647bc99506db5805c83..df8fc8d9fbff30afeb7b3cfab635ce8a1b9dcea9 100644 --- a/substrate/client/tracing/benches/bench.rs +++ b/substrate/client/tracing/benches/bench.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. use criterion::{criterion_group, criterion_main, Criterion}; use tracing_subscriber::fmt::{ diff --git a/substrate/client/tracing/proc-macro/src/lib.rs b/substrate/client/tracing/proc-macro/src/lib.rs index 8fb01de4036863af50e3a92ca7624500fc98549a..f9ed7d67d829a71225b9cf879eba845fdb74e6db 100644 --- a/substrate/client/tracing/proc-macro/src/lib.rs +++ b/substrate/client/tracing/proc-macro/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use proc_macro::TokenStream; use proc_macro2::Span; diff --git a/substrate/client/tracing/src/block/mod.rs b/substrate/client/tracing/src/block/mod.rs index 01744cd5563bd696196b41340d93dc7d3a606367..3ebbc3d97e1711c8c6e4e45e4611790e185bc97a 100644 --- a/substrate/client/tracing/src/block/mod.rs +++ b/substrate/client/tracing/src/block/mod.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// along with Substrate. If not, see <https://www.gnu.org/licenses/>. //! Utilities for tracing block execution diff --git a/substrate/client/tracing/src/logging/directives.rs b/substrate/client/tracing/src/logging/directives.rs index 811511bb20f5c9aec72c04bce6ff7879fef40d9e..ef6fe9c504a16dca030965dab558759a773afd29 100644 --- a/substrate/client/tracing/src/logging/directives.rs +++ b/substrate/client/tracing/src/logging/directives.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// along with Substrate. If not, see <https://www.gnu.org/licenses/>. use parking_lot::Mutex; use std::sync::OnceLock; diff --git a/substrate/client/utils/src/id_sequence.rs b/substrate/client/utils/src/id_sequence.rs index abb1271c72a0062edfcac00c988ca346735add94..a1799d4e684f86349e7f1a2466484610ec14afd5 100644 --- a/substrate/client/utils/src/id_sequence.rs +++ b/substrate/client/utils/src/id_sequence.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Produce opaque sequential IDs. diff --git a/substrate/client/utils/src/lib.rs b/substrate/client/utils/src/lib.rs index 017fc76207d27c004dbb78e3c1d7c4eef427659f..c09fb60d7c8a9c4ba8fe2e88dcb449079d72b855 100644 --- a/substrate/client/utils/src/lib.rs +++ b/substrate/client/utils/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Utilities Primitives for Substrate //! diff --git a/substrate/client/utils/src/metrics.rs b/substrate/client/utils/src/metrics.rs index 9b6e1e47039e76c55fa1f7bde80bc64da206c7dc..336e772cf2d6b1b26e283567e4c5463694ca65d8 100644 --- a/substrate/client/utils/src/metrics.rs +++ b/substrate/client/utils/src/metrics.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Metering primitives and globals diff --git a/substrate/client/utils/src/mpsc.rs b/substrate/client/utils/src/mpsc.rs index 051cb5b387ca8ac1fd12cffbcec9897d765526d1..369c395ed9c11293e4181f5460444e00b7147630 100644 --- a/substrate/client/utils/src/mpsc.rs +++ b/substrate/client/utils/src/mpsc.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Code to meter unbounded channels. diff --git a/substrate/client/utils/src/notification.rs b/substrate/client/utils/src/notification.rs index 3f606aabe3a156071ad0fbfffc8c5c8fd55728e2..8ddc598c954ac00b6049e316959a117367df6356 100644 --- a/substrate/client/utils/src/notification.rs +++ b/substrate/client/utils/src/notification.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Provides mpsc notification channel that can be instantiated //! _after_ it's been shared to the consumer and producers entities. diff --git a/substrate/client/utils/src/notification/registry.rs b/substrate/client/utils/src/notification/registry.rs index 6f0960ea918bea103ae9325b83a87d4cb9daf589..26658c8829e803e22c74542dd95ead9238156ba3 100644 --- a/substrate/client/utils/src/notification/registry.rs +++ b/substrate/client/utils/src/notification/registry.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use std::collections::HashSet; diff --git a/substrate/client/utils/src/notification/tests.rs b/substrate/client/utils/src/notification/tests.rs index 1afc2307e7b3037e9faf7c22bc3b8db3f18deb7b..d57a0ca806cc100dc51f343cbd421509104bdb6d 100644 --- a/substrate/client/utils/src/notification/tests.rs +++ b/substrate/client/utils/src/notification/tests.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::*; use futures::StreamExt; diff --git a/substrate/client/utils/src/pubsub.rs b/substrate/client/utils/src/pubsub.rs index 5293fa42ed94c94c5f8dd6f65dccbe1079c71d1d..e768028c995fce4a2546dfcf246e5a1efa903371 100644 --- a/substrate/client/utils/src/pubsub.rs +++ b/substrate/client/utils/src/pubsub.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Provides means to implement a typical Pub/Sub mechanism. //! diff --git a/substrate/client/utils/src/pubsub/tests.rs b/substrate/client/utils/src/pubsub/tests.rs index 0d832c7dbd872a06638bb522cafb88292455cb12..ddc9523ec4599771f88aad8a29ffe0f4fdc0cf05 100644 --- a/substrate/client/utils/src/pubsub/tests.rs +++ b/substrate/client/utils/src/pubsub/tests.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use futures::StreamExt; use tokio_test::block_on; diff --git a/substrate/client/utils/src/pubsub/tests/normal_operation.rs b/substrate/client/utils/src/pubsub/tests/normal_operation.rs index a3ea4f7ddee695e5badba93cec8da10da98bf351..ec31c338ab078188390059ec7e80ef38b0aec7a1 100644 --- a/substrate/client/utils/src/pubsub/tests/normal_operation.rs +++ b/substrate/client/utils/src/pubsub/tests/normal_operation.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::*; diff --git a/substrate/client/utils/src/pubsub/tests/panicking_registry.rs b/substrate/client/utils/src/pubsub/tests/panicking_registry.rs index 9f7579e79f479e5ff58bc322ad220ae8f877e7bd..3ce52625d9610922d52c71e5c60a65ef6cbdf70e 100644 --- a/substrate/client/utils/src/pubsub/tests/panicking_registry.rs +++ b/substrate/client/utils/src/pubsub/tests/panicking_registry.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::*; diff --git a/substrate/client/utils/src/status_sinks.rs b/substrate/client/utils/src/status_sinks.rs index 51d78aa4977520dc367fd69d07bb0680ce4946c7..72fa83da11c9902e42dd1d341e807a0ead0903b1 100644 --- a/substrate/client/utils/src/status_sinks.rs +++ b/substrate/client/utils/src/status_sinks.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::mpsc::{tracing_unbounded, TracingUnboundedReceiver, TracingUnboundedSender}; use futures::{lock::Mutex, prelude::*}; diff --git a/substrate/frame/alliance/Cargo.toml b/substrate/frame/alliance/Cargo.toml index 9d21b9e964c9a0346e98933b94391cd3546c7b1e..99eb8ba3a864a1e33c64bba58fdf1c342e5624fd 100644 --- a/substrate/frame/alliance/Cargo.toml +++ b/substrate/frame/alliance/Cargo.toml @@ -4,7 +4,7 @@ version = "27.0.0" authors.workspace = true edition.workspace = true license = "Apache-2.0" -homepage = "https://docs.substrate.io/" +homepage.workspace = true repository.workspace = true description = "The Alliance pallet provides a collective for standard-setting industry collaboration." readme = "README.md" diff --git a/substrate/frame/assets-freezer/src/impls.rs b/substrate/frame/assets-freezer/src/impls.rs index 8c9f148e1e9a4840cc398b01a938b2bbe5d8bc10..49c0748295d72585994d1d6a4eddaffe870cb38f 100644 --- a/substrate/frame/assets-freezer/src/impls.rs +++ b/substrate/frame/assets-freezer/src/impls.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use super::*; use pallet_assets::FrozenBalance; diff --git a/substrate/frame/assets-freezer/src/lib.rs b/substrate/frame/assets-freezer/src/lib.rs index 5f718ed84820f34654eeb2f475faa21982142ba7..61a695a6f5b8111b7f9eb06927655c84e2ef1713 100644 --- a/substrate/frame/assets-freezer/src/lib.rs +++ b/substrate/frame/assets-freezer/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Assets Freezer Pallet //! diff --git a/substrate/frame/assets-freezer/src/mock.rs b/substrate/frame/assets-freezer/src/mock.rs index ad08787aba27d95917fd6ac357a23d318eec28d5..70c77e6bf8beb5bff5d85f99e8f3b3ea33a2b596 100644 --- a/substrate/frame/assets-freezer/src/mock.rs +++ b/substrate/frame/assets-freezer/src/mock.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests mock for `pallet-assets-freezer`. diff --git a/substrate/frame/assets-freezer/src/tests.rs b/substrate/frame/assets-freezer/src/tests.rs index b890dc98b574127fa25c488841236f4fc3a99d4c..41a18e01f8ebb774bd52d59f6dc6f302937015d3 100644 --- a/substrate/frame/assets-freezer/src/tests.rs +++ b/substrate/frame/assets-freezer/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests for pallet-assets-freezer. diff --git a/substrate/frame/bags-list/remote-tests/src/migration.rs b/substrate/frame/bags-list/remote-tests/src/migration.rs index 03475b2358504df8b5de2827496feff6a6758cdc..397ff1000eaa1fdd8d0a26f95a9486d2a50829e2 100644 --- a/substrate/frame/bags-list/remote-tests/src/migration.rs +++ b/substrate/frame/bags-list/remote-tests/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: Apache-2.0 -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test to check the migration of the voter bag. diff --git a/substrate/frame/bags-list/remote-tests/src/snapshot.rs b/substrate/frame/bags-list/remote-tests/src/snapshot.rs index cb23fc6f5817d2c9029a8d29032a0a507f6026a9..5f999aa0b8b752b6144699f6d4ea629606a03b97 100644 --- a/substrate/frame/bags-list/remote-tests/src/snapshot.rs +++ b/substrate/frame/bags-list/remote-tests/src/snapshot.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: Apache-2.0 -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test to execute the snapshot using the voter bag. diff --git a/substrate/frame/bags-list/remote-tests/src/try_state.rs b/substrate/frame/bags-list/remote-tests/src/try_state.rs index d4ce0d4f736ca8804f05fdabe4bd48b914447eed..57dd1305c0030ec3a9cf8e13672597f6cd8f4b6a 100644 --- a/substrate/frame/bags-list/remote-tests/src/try_state.rs +++ b/substrate/frame/bags-list/remote-tests/src/try_state.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test to execute the sanity-check of the voter bag. diff --git a/substrate/frame/balances/src/migration.rs b/substrate/frame/balances/src/migration.rs index 920c6eea56241c0a984677530eb292546571603a..836deb325e6239d4d5198cdc627899c1a277d55a 100644 --- a/substrate/frame/balances/src/migration.rs +++ b/substrate/frame/balances/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see <http://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::*; use frame_support::{ diff --git a/substrate/frame/contracts/mock-network/src/lib.rs b/substrate/frame/contracts/mock-network/src/lib.rs index c918cd39ed915c4f4540f6b15d48810876f2d4fe..f69efa92ea4e23d5baa30456ef44cc6daba7e2a7 100644 --- a/substrate/frame/contracts/mock-network/src/lib.rs +++ b/substrate/frame/contracts/mock-network/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/mocks.rs b/substrate/frame/contracts/mock-network/src/mocks.rs index 6903f01e91a2b5543235fdeddb74f46634855c6b..b02e3bacc495b8c52327e1d3bc52801063a00dc5 100644 --- a/substrate/frame/contracts/mock-network/src/mocks.rs +++ b/substrate/frame/contracts/mock-network/src/mocks.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/mocks/msg_queue.rs b/substrate/frame/contracts/mock-network/src/mocks/msg_queue.rs index 88ab8135ea1297d44b025ddf6d66fafbbe674858..45715d973b5457f650ba3a7aebc59d777916f4be 100644 --- a/substrate/frame/contracts/mock-network/src/mocks/msg_queue.rs +++ b/substrate/frame/contracts/mock-network/src/mocks/msg_queue.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/mocks/relay_message_queue.rs b/substrate/frame/contracts/mock-network/src/mocks/relay_message_queue.rs index 50f0febd2c4403b4981aec0a416b5814f9902df7..8f493c4b46429eac8618afac50e3383adddc51cf 100644 --- a/substrate/frame/contracts/mock-network/src/mocks/relay_message_queue.rs +++ b/substrate/frame/contracts/mock-network/src/mocks/relay_message_queue.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/parachain.rs b/substrate/frame/contracts/mock-network/src/parachain.rs index 6edbfb0e7e86a540e965dca80ebfe4ad01f35abf..3d192bf7b2422e9b9faa5728c0ba6971c092d066 100644 --- a/substrate/frame/contracts/mock-network/src/parachain.rs +++ b/substrate/frame/contracts/mock-network/src/parachain.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/parachain/contracts_config.rs b/substrate/frame/contracts/mock-network/src/parachain/contracts_config.rs index 9ad978bbc0317da57b5c114e193345d4fbf46652..2dbcc18b730a4aa77e0755dbd6a505b68a1ed44c 100644 --- a/substrate/frame/contracts/mock-network/src/parachain/contracts_config.rs +++ b/substrate/frame/contracts/mock-network/src/parachain/contracts_config.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/relay_chain.rs b/substrate/frame/contracts/mock-network/src/relay_chain.rs index 5fed061f80b45aaaad89e3a4ef3b0abef41000d8..221943654c6c9c1895d6e777d4c70857cf6f2160 100644 --- a/substrate/frame/contracts/mock-network/src/relay_chain.rs +++ b/substrate/frame/contracts/mock-network/src/relay_chain.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/conviction-voting/src/lib.rs b/substrate/frame/conviction-voting/src/lib.rs index 31bd6b85ec866303b82e978c939d414cc11999bc..3dd2ad24298d344d4122933546406fd3dc8c9fb9 100644 --- a/substrate/frame/conviction-voting/src/lib.rs +++ b/substrate/frame/conviction-voting/src/lib.rs @@ -37,7 +37,6 @@ use frame_support::{ ReservableCurrency, WithdrawReasons, }, }; -use frame_system::pallet_prelude::BlockNumberFor; use sp_runtime::{ traits::{AtLeast32BitUnsigned, Saturating, StaticLookup, Zero}, ArithmeticError, DispatchError, Perbill, @@ -55,6 +54,7 @@ pub use self::{ vote::{AccountVote, Casting, Delegating, Vote, Voting}, weights::WeightInfo, }; +use sp_runtime::traits::BlockNumberProvider; #[cfg(test)] mod tests; @@ -64,19 +64,22 @@ pub mod benchmarking; const CONVICTION_VOTING_ID: LockIdentifier = *b"pyconvot"; +pub type BlockNumberFor<T, I> = + <<T as Config<I>>::BlockNumberProvider as BlockNumberProvider>::BlockNumber; + type AccountIdLookupOf<T> = <<T as frame_system::Config>::Lookup as StaticLookup>::Source; type BalanceOf<T, I = ()> = <<T as Config<I>>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance; type VotingOf<T, I = ()> = Voting< BalanceOf<T, I>, <T as frame_system::Config>::AccountId, - BlockNumberFor<T>, + BlockNumberFor<T, I>, PollIndexOf<T, I>, <T as Config<I>>::MaxVotes, >; #[allow(dead_code)] type DelegatingOf<T, I = ()> = - Delegating<BalanceOf<T, I>, <T as frame_system::Config>::AccountId, BlockNumberFor<T>>; + Delegating<BalanceOf<T, I>, <T as frame_system::Config>::AccountId, BlockNumberFor<T, I>>; pub type TallyOf<T, I = ()> = Tally<BalanceOf<T, I>, <T as Config<I>>::MaxTurnout>; pub type VotesOf<T, I = ()> = BalanceOf<T, I>; type PollIndexOf<T, I = ()> = <<T as Config<I>>::Polls as Polling<TallyOf<T, I>>>::Index; @@ -94,7 +97,7 @@ pub mod pallet { traits::ClassCountOf, Twox64Concat, }; - use frame_system::pallet_prelude::*; + use frame_system::pallet_prelude::{ensure_signed, OriginFor}; use sp_runtime::BoundedVec; #[pallet::pallet] @@ -109,14 +112,14 @@ pub mod pallet { type WeightInfo: WeightInfo; /// Currency type with which voting happens. type Currency: ReservableCurrency<Self::AccountId> - + LockableCurrency<Self::AccountId, Moment = BlockNumberFor<Self>> + + LockableCurrency<Self::AccountId, Moment = BlockNumberFor<Self, I>> + fungible::Inspect<Self::AccountId>; /// The implementation of the logic which conducts polls. type Polls: Polling< TallyOf<Self, I>, Votes = BalanceOf<Self, I>, - Moment = BlockNumberFor<Self>, + Moment = BlockNumberFor<Self, I>, >; /// The maximum amount of tokens which may be used for voting. May just be @@ -136,7 +139,9 @@ pub mod pallet { /// It should be no shorter than enactment period to ensure that in the case of an approval, /// those successful voters are locked into the consequences that their votes entail. #[pallet::constant] - type VoteLockingPeriod: Get<BlockNumberFor<Self>>; + type VoteLockingPeriod: Get<BlockNumberFor<Self, I>>; + /// Provider for the block number. Normally this is the `frame_system` pallet. + type BlockNumberProvider: BlockNumberProvider; } /// All voting for a particular voter in a particular voting class. We store the balance for the @@ -479,7 +484,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { let unlock_at = end.saturating_add( T::VoteLockingPeriod::get().saturating_mul(lock_periods.into()), ); - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); if now < unlock_at { ensure!( matches!(scope, UnvoteScope::Any), @@ -620,7 +625,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { &class, conviction.votes(balance), ); - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let lock_periods = conviction.lock_periods().into(); prior.accumulate( now.saturating_add( @@ -666,7 +671,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { /// a security hole) but may be reduced from what they are currently. fn update_lock(class: &ClassOf<T, I>, who: &T::AccountId) { let class_lock_needed = VotingFor::<T, I>::mutate(who, class, |voting| { - voting.rejig(frame_system::Pallet::<T>::block_number()); + voting.rejig(T::BlockNumberProvider::current_block_number()); voting.locked_balance() }); let lock_needed = ClassLocksFor::<T, I>::mutate(who, |locks| { diff --git a/substrate/frame/conviction-voting/src/tests.rs b/substrate/frame/conviction-voting/src/tests.rs index b1b1fab5ae50e79bf0fdb2ac36494c51b573167c..8e8b41ba63eb49d60392fb2da8a458249731cf14 100644 --- a/substrate/frame/conviction-voting/src/tests.rs +++ b/substrate/frame/conviction-voting/src/tests.rs @@ -154,6 +154,7 @@ impl Config for Test { type WeightInfo = (); type MaxTurnout = frame_support::traits::TotalIssuanceOf<Balances, Self::AccountId>; type Polls = TestPolls; + type BlockNumberProvider = System; } pub fn new_test_ext() -> sp_io::TestExternalities { diff --git a/substrate/frame/delegated-staking/src/impls.rs b/substrate/frame/delegated-staking/src/impls.rs index a443df7b20f568f6be1b9b0b679d55fff8e0f3c9..8981842b69c613b36d04dbaf7d707710e979ada0 100644 --- a/substrate/frame/delegated-staking/src/impls.rs +++ b/substrate/frame/delegated-staking/src/impls.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Implementations of public traits, namely [`DelegationInterface`] and [`OnStakingUpdate`]. diff --git a/substrate/frame/delegated-staking/src/mock.rs b/substrate/frame/delegated-staking/src/mock.rs index a4546e57dab5e8ebde6bb35bf48b8493c8779757..42b876d049ac338e32f0c3bd88ec3689a6d43352 100644 --- a/substrate/frame/delegated-staking/src/mock.rs +++ b/substrate/frame/delegated-staking/src/mock.rs @@ -161,6 +161,7 @@ impl pallet_nomination_pools::Config for Runtime { type StakeAdapter = pallet_nomination_pools::adapter::DelegateStake<Self, Staking, DelegatedStaking>; type AdminOrigin = frame_system::EnsureRoot<Self::AccountId>; + type BlockNumberProvider = System; } frame_support::construct_runtime!( diff --git a/substrate/frame/delegated-staking/src/types.rs b/substrate/frame/delegated-staking/src/types.rs index 14f49466f0e2867fec4da4a360a53fe816d72d22..781df77e71682af4ef5b11b0d7b33f754f05e222 100644 --- a/substrate/frame/delegated-staking/src/types.rs +++ b/substrate/frame/delegated-staking/src/types.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Basic types used in delegated staking. diff --git a/substrate/frame/election-provider-multi-phase/test-staking-e2e/src/mock.rs b/substrate/frame/election-provider-multi-phase/test-staking-e2e/src/mock.rs index 3a6496436187008352e06f74a1960c5ec92690a2..8118dfa2045cbce80f22058f02e6c91f5284e6e6 100644 --- a/substrate/frame/election-provider-multi-phase/test-staking-e2e/src/mock.rs +++ b/substrate/frame/election-provider-multi-phase/test-staking-e2e/src/mock.rs @@ -277,6 +277,7 @@ impl pallet_nomination_pools::Config for Runtime { type MaxUnbonding = MaxUnbonding; type MaxPointsToBalance = frame_support::traits::ConstU8<10>; type AdminOrigin = frame_system::EnsureRoot<Self::AccountId>; + type BlockNumberProvider = System; } parameter_types! { diff --git a/substrate/frame/examples/authorization-tx-extension/src/extensions.rs b/substrate/frame/examples/authorization-tx-extension/src/extensions.rs index dcbe171c183a7e0893a54bcad6cdc19d2e3f59a8..f4e4719bad7e3899e2f5af45ad7091405e436043 100644 --- a/substrate/frame/examples/authorization-tx-extension/src/extensions.rs +++ b/substrate/frame/examples/authorization-tx-extension/src/extensions.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use core::{fmt, marker::PhantomData}; diff --git a/substrate/frame/examples/authorization-tx-extension/src/lib.rs b/substrate/frame/examples/authorization-tx-extension/src/lib.rs index 9105155a94d0d39ef7d2af234c153ef615419801..4eaf94a5c734fd9656dea657c44385a5143e2b27 100644 --- a/substrate/frame/examples/authorization-tx-extension/src/lib.rs +++ b/substrate/frame/examples/authorization-tx-extension/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Authorization Transaction Extension Example Pallet //! diff --git a/substrate/frame/examples/authorization-tx-extension/src/mock.rs b/substrate/frame/examples/authorization-tx-extension/src/mock.rs index aa70d12d7d84ca9a13742a316e21acc7e1498dd0..a4a76fe207aa068e9ccd93db05252a3cad3b079a 100644 --- a/substrate/frame/examples/authorization-tx-extension/src/mock.rs +++ b/substrate/frame/examples/authorization-tx-extension/src/mock.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use crate::*; pub(crate) use example_runtime::*; diff --git a/substrate/frame/examples/authorization-tx-extension/src/tests.rs b/substrate/frame/examples/authorization-tx-extension/src/tests.rs index 5579e7a98416a4df774cc769018821cdee0be5af..4770f20dfc3276f9d5acd804b6d7a59c1f7ac474 100644 --- a/substrate/frame/examples/authorization-tx-extension/src/tests.rs +++ b/substrate/frame/examples/authorization-tx-extension/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests for pallet-example-authorization-tx-extension. diff --git a/substrate/frame/examples/basic/src/benchmarking.rs b/substrate/frame/examples/basic/src/benchmarking.rs index 65ca3089aba4247cae65932cd4bca9b68d520b75..fc862ba5703a85d4ec773d63646dd62295fdf834 100644 --- a/substrate/frame/examples/basic/src/benchmarking.rs +++ b/substrate/frame/examples/basic/src/benchmarking.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Benchmarking for `pallet-example-basic`. diff --git a/substrate/frame/examples/basic/src/lib.rs b/substrate/frame/examples/basic/src/lib.rs index efdf4332e3296f82f294518afdcbf5448935a59a..7d7f1d838c9f3fd2137e9037fee4d84d3cbdcb91 100644 --- a/substrate/frame/examples/basic/src/lib.rs +++ b/substrate/frame/examples/basic/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Basic Example Pallet //! diff --git a/substrate/frame/examples/basic/src/tests.rs b/substrate/frame/examples/basic/src/tests.rs index 5ec253ebecf4211fb4f4c9b2bc79ab676cd7f9f2..bb50c0f75f835f7e5e38293647178fe89f758865 100644 --- a/substrate/frame/examples/basic/src/tests.rs +++ b/substrate/frame/examples/basic/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests for pallet-example-basic. diff --git a/substrate/frame/examples/basic/src/weights.rs b/substrate/frame/examples/basic/src/weights.rs index dbb9170aa67e0565b91b9bf920435f27c188773d..06b180e9c1c1fc0c1e309d36b16c4013a93b3e45 100644 --- a/substrate/frame/examples/basic/src/weights.rs +++ b/substrate/frame/examples/basic/src/weights.rs @@ -1,19 +1,24 @@ // This file is part of Substrate. -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Autogenerated weights for pallet_example_basic //! diff --git a/substrate/frame/examples/default-config/src/lib.rs b/substrate/frame/examples/default-config/src/lib.rs index f690bffe0998bdef2e8b17a24ad46d2aaf6e363b..cc6e75d5418aab94029c8842fc2af0f152cfb83d 100644 --- a/substrate/frame/examples/default-config/src/lib.rs +++ b/substrate/frame/examples/default-config/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Default Config Pallet Example //! diff --git a/substrate/frame/examples/dev-mode/src/lib.rs b/substrate/frame/examples/dev-mode/src/lib.rs index eb94c024280c7fa96e790e1719b84df263331e16..6c255665891b35e08c80d5faecd184cf24d0ccbc 100644 --- a/substrate/frame/examples/dev-mode/src/lib.rs +++ b/substrate/frame/examples/dev-mode/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! <!-- markdown-link-check-disable --> //! # Dev Mode Example Pallet diff --git a/substrate/frame/examples/dev-mode/src/tests.rs b/substrate/frame/examples/dev-mode/src/tests.rs index 637864b87bc43d9e4e55cd9fe4f054cf5efd1ca8..4c93c631d6930dbbb7d50eaf6045abf1d614aa62 100644 --- a/substrate/frame/examples/dev-mode/src/tests.rs +++ b/substrate/frame/examples/dev-mode/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests for pallet-dev-mode. diff --git a/substrate/frame/examples/frame-crate/src/lib.rs b/substrate/frame/examples/frame-crate/src/lib.rs index 781cba5658d778f991c990634ceff52838be559f..454c8d8d2ad034a30dbbd4c92f78dabc146679f0 100644 --- a/substrate/frame/examples/frame-crate/src/lib.rs +++ b/substrate/frame/examples/frame-crate/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use frame::prelude::*; diff --git a/substrate/frame/examples/kitchensink/src/benchmarking.rs b/substrate/frame/examples/kitchensink/src/benchmarking.rs index 5f1d378e06fe67ee3978124ce7b557ad39b89e0a..4347c8d7cd7e09a8575a8ae5c0f9dee03c50b034 100644 --- a/substrate/frame/examples/kitchensink/src/benchmarking.rs +++ b/substrate/frame/examples/kitchensink/src/benchmarking.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Benchmarking for `pallet-example-kitchensink`. diff --git a/substrate/frame/examples/kitchensink/src/lib.rs b/substrate/frame/examples/kitchensink/src/lib.rs index 442318565426ef4dde7cf8145c42bcecc0f11ee6..1fe6db8f183c2c0fa9cc8fdfb72dfca42f90c2e0 100644 --- a/substrate/frame/examples/kitchensink/src/lib.rs +++ b/substrate/frame/examples/kitchensink/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Kitchensink Example Pallet //! diff --git a/substrate/frame/examples/kitchensink/src/tests.rs b/substrate/frame/examples/kitchensink/src/tests.rs index 7cf95497bf06408b0aae5543513a81a3316ddeaa..fb0766b8293e78586bfb9a431e02cef02f83413f 100644 --- a/substrate/frame/examples/kitchensink/src/tests.rs +++ b/substrate/frame/examples/kitchensink/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests for pallet-example-kitchensink. diff --git a/substrate/frame/examples/kitchensink/src/weights.rs b/substrate/frame/examples/kitchensink/src/weights.rs index 43f48332ae946b684e912286b35705ac26086481..59f510e78e5b5aeb9c1e331667d07040e6f371ca 100644 --- a/substrate/frame/examples/kitchensink/src/weights.rs +++ b/substrate/frame/examples/kitchensink/src/weights.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Autogenerated weights for `pallet_example_kitchensink` //! diff --git a/substrate/frame/examples/offchain-worker/src/lib.rs b/substrate/frame/examples/offchain-worker/src/lib.rs index b3fdb6ea1897ac1471abb66fd676203c58ea0c7a..60322b569dfa5a5a72cef8bc3872747110d3d2fe 100644 --- a/substrate/frame/examples/offchain-worker/src/lib.rs +++ b/substrate/frame/examples/offchain-worker/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! <!-- markdown-link-check-disable --> //! # Offchain Worker Example Pallet diff --git a/substrate/frame/examples/offchain-worker/src/tests.rs b/substrate/frame/examples/offchain-worker/src/tests.rs index df5cf02594f6fd7d78e18656324292972460d162..cc226714e6e9eef106366b8e94b910e97d4f524b 100644 --- a/substrate/frame/examples/offchain-worker/src/tests.rs +++ b/substrate/frame/examples/offchain-worker/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use crate as example_offchain_worker; use crate::*; diff --git a/substrate/frame/examples/single-block-migrations/src/lib.rs b/substrate/frame/examples/single-block-migrations/src/lib.rs index 07c7199b932238b19ede0055503db8ec26965731..e6983ee4d9af719bc81ec9968c064e1b71322b69 100644 --- a/substrate/frame/examples/single-block-migrations/src/lib.rs +++ b/substrate/frame/examples/single-block-migrations/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Single Block Migration Example Pallet //! diff --git a/substrate/frame/examples/single-block-migrations/src/migrations/mod.rs b/substrate/frame/examples/single-block-migrations/src/migrations/mod.rs index 80a33f69941aa1a49563971ab0c9e13a88ecda19..8d8f8a1ec12a190c7e41036bc9072444d771e5ff 100644 --- a/substrate/frame/examples/single-block-migrations/src/migrations/mod.rs +++ b/substrate/frame/examples/single-block-migrations/src/migrations/mod.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. /// Module containing all logic associated with the example migration from /// [`StorageVersion`](frame_support::traits::StorageVersion) V0 to V1. diff --git a/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs b/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs index 922c03afdd1e7405b1927903ddf29197e93b7829..b3e013d09cc351552eef76487b7946b09f26f1c4 100644 --- a/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs +++ b/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use frame_support::{ storage_alias, diff --git a/substrate/frame/examples/single-block-migrations/src/mock.rs b/substrate/frame/examples/single-block-migrations/src/mock.rs index f4cf81ea6474f2971c08b1174e276fe0b7b9a0f0..8c61881429bf2f87c723b5682028afcfda788048 100644 --- a/substrate/frame/examples/single-block-migrations/src/mock.rs +++ b/substrate/frame/examples/single-block-migrations/src/mock.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. #![cfg(any(all(feature = "try-runtime", test), doc))] diff --git a/substrate/frame/examples/split/src/benchmarking.rs b/substrate/frame/examples/split/src/benchmarking.rs index 5a503009372034d67b237fed977a4ad4eb7bb8b8..445f0c18522c218abc20583ff8523a5de3e999c2 100644 --- a/substrate/frame/examples/split/src/benchmarking.rs +++ b/substrate/frame/examples/split/src/benchmarking.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Benchmarking setup for pallet-example-split diff --git a/substrate/frame/examples/split/src/events.rs b/substrate/frame/examples/split/src/events.rs index 7560766bacb33fe32201fe4f2536aa7c3f2f5d01..92eb0e709d79a3024c7ede903b8dc06b913ee181 100644 --- a/substrate/frame/examples/split/src/events.rs +++ b/substrate/frame/examples/split/src/events.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use frame_support::pallet_macros::*; diff --git a/substrate/frame/examples/split/src/lib.rs b/substrate/frame/examples/split/src/lib.rs index 5245d90e390cff1ccab79ecc279fe57188cde030..b1f09226e0072e977fc85fa078a43fafe52a758f 100644 --- a/substrate/frame/examples/split/src/lib.rs +++ b/substrate/frame/examples/split/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Split Example Pallet //! diff --git a/substrate/frame/examples/split/src/mock.rs b/substrate/frame/examples/split/src/mock.rs index 5bf414ee24133c6ca86ed3ff6708e0b2e4f252ee..4b0c75b9d15ecf688f79427beb8d0782789bbc1d 100644 --- a/substrate/frame/examples/split/src/mock.rs +++ b/substrate/frame/examples/split/src/mock.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use crate as pallet_template; use frame_support::{derive_impl, sp_runtime::BuildStorage}; diff --git a/substrate/frame/examples/split/src/tests.rs b/substrate/frame/examples/split/src/tests.rs index 1d4b6dfcff9d5c82ac7fa3efca50a92c1e298803..5820e0699f79b666d8a0d2560b6279e638614c76 100644 --- a/substrate/frame/examples/split/src/tests.rs +++ b/substrate/frame/examples/split/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use crate::{mock::*, Error, Event, Something}; use frame_support::{assert_noop, assert_ok}; diff --git a/substrate/frame/examples/split/src/weights.rs b/substrate/frame/examples/split/src/weights.rs index 58b9e2af43a1c6a1c9447e5962f53f2af331597d..db191eb2aebcc7cb872ab31872cc51b4c526021c 100644 --- a/substrate/frame/examples/split/src/weights.rs +++ b/substrate/frame/examples/split/src/weights.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Autogenerated weights for pallet_template //! diff --git a/substrate/frame/examples/view-functions/Cargo.toml b/substrate/frame/examples/view-functions/Cargo.toml index b52ad4e06e9fa9c32b3f0ad422198789825c4a4e..b159357581df5f84f420f42676ba45423cbce5ca 100644 --- a/substrate/frame/examples/view-functions/Cargo.toml +++ b/substrate/frame/examples/view-functions/Cargo.toml @@ -15,7 +15,7 @@ workspace = true targets = ["x86_64-unknown-linux-gnu"] [dependencies] -codec = { package = "parity-scale-codec", default-features = false, workspace = true } +codec = { default-features = false, workspace = true } frame-metadata = { features = ["current"], workspace = true } log = { workspace = true } scale-info = { default-features = false, features = ["derive"], workspace = true } diff --git a/substrate/frame/examples/view-functions/src/lib.rs b/substrate/frame/examples/view-functions/src/lib.rs index e842a718ad33442b1f83a88963d637b2e6ca77bf..9cad8ab1bcdb0bd54a0f55263efcb1122a8c5c55 100644 --- a/substrate/frame/examples/view-functions/src/lib.rs +++ b/substrate/frame/examples/view-functions/src/lib.rs @@ -63,12 +63,12 @@ pub mod pallet { where T::AccountId: From<SomeType1> + SomeAssociation1, { - /// Query value no args. + /// Query value with no input args. pub fn get_value() -> Option<u32> { SomeValue::<T>::get() } - /// Query value with args. + /// Query value with input args. pub fn get_value_with_arg(key: u32) -> Option<u32> { SomeMap::<T>::get(key) } @@ -101,12 +101,12 @@ pub mod pallet2 { where T::AccountId: From<SomeType1> + SomeAssociation1, { - /// Query value no args. + /// Query value with no input args. pub fn get_value() -> Option<u32> { SomeValue::<T, I>::get() } - /// Query value with args. + /// Query value with input args. pub fn get_value_with_arg(key: u32) -> Option<u32> { SomeMap::<T, I>::get(key) } diff --git a/substrate/frame/examples/view-functions/src/tests.rs b/substrate/frame/examples/view-functions/src/tests.rs index 25f5f094651d6a085c041702118a8e69a5f7e4c1..01a2d15dc6cde67378c5ec597d8f31ad9c33fd65 100644 --- a/substrate/frame/examples/view-functions/src/tests.rs +++ b/substrate/frame/examples/view-functions/src/tests.rs @@ -23,11 +23,14 @@ use crate::{ pallet2, }; use codec::{Decode, Encode}; -use scale_info::{form::PortableForm, meta_type}; +use scale_info::meta_type; use frame_support::{derive_impl, pallet_prelude::PalletInfoAccess, view_functions::ViewFunction}; use sp_io::hashing::twox_128; -use sp_metadata_ir::{ViewFunctionArgMetadataIR, ViewFunctionGroupIR, ViewFunctionMetadataIR}; +use sp_metadata_ir::{ + DeprecationStatusIR, PalletViewFunctionMethodMetadataIR, + PalletViewFunctionMethodParamMetadataIR, +}; use sp_runtime::testing::TestXt; pub type AccountId = u32; @@ -111,8 +114,7 @@ fn metadata_ir_definitions() { new_test_ext().execute_with(|| { let metadata_ir = Runtime::metadata_ir(); let pallet1 = metadata_ir - .view_functions - .groups + .pallets .iter() .find(|pallet| pallet.name == "ViewFunctionsExample") .unwrap(); @@ -137,44 +139,30 @@ fn metadata_ir_definitions() { pretty_assertions::assert_eq!( pallet1.view_functions, vec![ - ViewFunctionMetadataIR { + PalletViewFunctionMethodMetadataIR { name: "get_value", id: get_value_id, - args: vec![], + inputs: vec![], output: meta_type::<Option<u32>>(), - docs: vec![" Query value no args."], + docs: vec![" Query value with no input args."], + deprecation_info: DeprecationStatusIR::NotDeprecated, }, - ViewFunctionMetadataIR { + PalletViewFunctionMethodMetadataIR { name: "get_value_with_arg", id: get_value_with_arg_id, - args: vec![ViewFunctionArgMetadataIR { name: "key", ty: meta_type::<u32>() },], + inputs: vec![PalletViewFunctionMethodParamMetadataIR { + name: "key", + ty: meta_type::<u32>() + },], output: meta_type::<Option<u32>>(), - docs: vec![" Query value with args."], + docs: vec![" Query value with input args."], + deprecation_info: DeprecationStatusIR::NotDeprecated, }, ] ); }); } -#[test] -fn metadata_encoded_to_custom_value() { - new_test_ext().execute_with(|| { - let metadata = sp_metadata_ir::into_latest(Runtime::metadata_ir()); - // metadata is currently experimental so lives as a custom value. - let frame_metadata::RuntimeMetadata::V15(v15) = metadata.1 else { - panic!("Expected metadata v15") - }; - let custom_value = v15 - .custom - .map - .get("view_functions_experimental") - .expect("Expected custom value"); - let view_function_groups: Vec<ViewFunctionGroupIR<PortableForm>> = - Decode::decode(&mut &custom_value.value[..]).unwrap(); - assert_eq!(view_function_groups.len(), 4); - }); -} - fn test_dispatch_view_function<Q, V>(query: &Q, expected: V) where Q: ViewFunction + Encode, diff --git a/substrate/frame/migrations/Cargo.toml b/substrate/frame/migrations/Cargo.toml index 469592780beb8855691ca4a8b1438f5abf4c9d40..f05db314ae57ee201a7d715c4e642a3d06c9e5cf 100644 --- a/substrate/frame/migrations/Cargo.toml +++ b/substrate/frame/migrations/Cargo.toml @@ -18,17 +18,18 @@ impl-trait-for-tuples = { workspace = true } log = { workspace = true, default-features = true } scale-info = { features = ["derive"], workspace = true } +frame = { workspace = true, features = ["runtime"] } frame-benchmarking = { optional = true, workspace = true } frame-support = { workspace = true } frame-system = { workspace = true } sp-core = { workspace = true } +sp-io = { workspace = true } sp-runtime = { workspace = true } [dev-dependencies] frame-executive = { workspace = true, default-features = true } sp-api = { features = ["std"], workspace = true, default-features = true } sp-block-builder = { features = ["std"], workspace = true, default-features = true } -sp-io = { features = ["std"], workspace = true, default-features = true } sp-tracing = { features = ["std"], workspace = true, default-features = true } sp-version = { features = ["std"], workspace = true, default-features = true } @@ -42,9 +43,11 @@ std = [ "frame-benchmarking?/std", "frame-support/std", "frame-system/std", + "frame/std", "log/std", "scale-info/std", "sp-core/std", + "sp-io/std", "sp-runtime/std", ] @@ -52,6 +55,7 @@ runtime-benchmarks = [ "frame-benchmarking/runtime-benchmarks", "frame-support/runtime-benchmarks", "frame-system/runtime-benchmarks", + "frame/runtime-benchmarks", "sp-runtime/runtime-benchmarks", ] @@ -59,5 +63,6 @@ try-runtime = [ "frame-executive/try-runtime", "frame-support/try-runtime", "frame-system/try-runtime", + "frame/try-runtime", "sp-runtime/try-runtime", ] diff --git a/substrate/frame/migrations/src/benchmarking.rs b/substrate/frame/migrations/src/benchmarking.rs index c076d40bb05cddebef31bfed7e597ba607b0de86..f06870fa9502c86c892cff4fdcad5539062ec9ae 100644 --- a/substrate/frame/migrations/src/benchmarking.rs +++ b/substrate/frame/migrations/src/benchmarking.rs @@ -19,8 +19,11 @@ use super::*; +use core::array; use frame_benchmarking::{v2::*, BenchmarkError}; use frame_system::{Pallet as System, RawOrigin}; +use sp_core::{twox_128, Get}; +use sp_io::{storage, KillStorageResult}; use sp_runtime::traits::One; fn assert_last_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) { @@ -204,6 +207,40 @@ mod benches { ); } + #[benchmark(skip_meta, pov_mode = Measured)] + fn reset_pallet_migration(n: Linear<0, 2048>) -> Result<(), BenchmarkError> { + let prefix: [u8; 16] = twox_128(b"__ResetPalletBenchmarkPrefix__"); + + for i in 0..n { + // we need to avoid allocations here + let mut iter = prefix.into_iter().chain(i.to_le_bytes()); + let key: [u8; 20] = array::from_fn(|_| iter.next().unwrap()); + // 32 byte will trigger the worst case where the value is + // no longer stored inline + storage::set(&key, &[0u8; 32]); + } + + let result; + #[block] + { + result = storage::clear_prefix(&prefix, None); + } + + // It will always reports no keys removed because they are still in the overlay. + // However, the benchmarking PoV results are correctly dependent on the amount of + // keys removed. + match result { + KillStorageResult::AllRemoved(_i) => { + // during the test the storage is not comitted and `i` will always be 0 + #[cfg(not(test))] + ensure!(_i == n, "Not all keys are removed"); + }, + _ => Err("Not all keys were removed")?, + } + + Ok(()) + } + fn cursor<T: Config>() -> CursorOf<T> { // Note: The weight of a function can depend on the weight of reading the `inner_cursor`. // `Cursor` is a user provided type. Now instead of requiring something like `Cursor: diff --git a/substrate/frame/migrations/src/lib.rs b/substrate/frame/migrations/src/lib.rs index d9490e7dcfe99fed3cc70560f6f25e61f4fc190f..fef61468e6e4ebe6c70626d13e23800f3e65f84e 100644 --- a/substrate/frame/migrations/src/lib.rs +++ b/substrate/frame/migrations/src/lib.rs @@ -145,6 +145,7 @@ #![cfg_attr(not(feature = "std"), no_std)] mod benchmarking; +pub mod migrations; mod mock; pub mod mock_helpers; mod tests; @@ -298,7 +299,11 @@ type PreUpgradeBytes<T: Config> = pub mod pallet { use super::*; + /// The in-code storage version. + const STORAGE_VERSION: StorageVersion = StorageVersion::new(0); + #[pallet::pallet] + #[pallet::storage_version(STORAGE_VERSION)] pub struct Pallet<T>(_); #[pallet::config(with_default)] diff --git a/substrate/frame/migrations/src/migrations.rs b/substrate/frame/migrations/src/migrations.rs new file mode 100644 index 0000000000000000000000000000000000000000..796ff0f956599d959a78dadcbf65e068ff95b996 --- /dev/null +++ b/substrate/frame/migrations/src/migrations.rs @@ -0,0 +1,135 @@ +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Generic multi block migrations not specific to any pallet. + +use crate::{weights::WeightInfo, Config}; +use codec::Encode; +use core::marker::PhantomData; +use frame_support::{ + migrations::{SteppedMigration, SteppedMigrationError, StoreInCodeStorageVersion}, + traits::{GetStorageVersion, PalletInfoAccess}, + weights::WeightMeter, +}; +use sp_core::{twox_128, Get}; +use sp_io::{storage::clear_prefix, KillStorageResult}; +use sp_runtime::SaturatedConversion; + +/// Remove all of a pallet's state and re-initializes it to the current in-code storage version. +/// +/// It uses the multi block migration frame. Hence it is safe to use even on +/// pallets that contain a lot of storage. +/// +/// # Parameters +/// +/// - T: The runtime. Used to access the weight definition. +/// - P: The pallet to resetted as defined in construct runtime +/// +/// # Note +/// +/// If your pallet does rely of some state in genesis you need to take care of that +/// separately. This migration only sets the storage version after wiping. +pub struct ResetPallet<T, P>(PhantomData<(T, P)>); + +impl<T, P> ResetPallet<T, P> +where + P: PalletInfoAccess, +{ + #[cfg(feature = "try-runtime")] + fn num_keys() -> u64 { + let prefix = P::name_hash().to_vec(); + crate::storage::KeyPrefixIterator::new(prefix.clone(), prefix, |_| Ok(())).count() as _ + } +} + +impl<T, P, V> SteppedMigration for ResetPallet<T, P> +where + T: Config, + P: PalletInfoAccess + GetStorageVersion<InCodeStorageVersion = V>, + V: StoreInCodeStorageVersion<P>, +{ + type Cursor = bool; + type Identifier = [u8; 16]; + + fn id() -> Self::Identifier { + ("RemovePallet::", P::name()).using_encoded(twox_128) + } + + fn step( + cursor: Option<Self::Cursor>, + meter: &mut WeightMeter, + ) -> Result<Option<Self::Cursor>, SteppedMigrationError> { + // we write the storage version in a seperate block + if cursor.unwrap_or(false) { + let required = T::DbWeight::get().writes(1); + meter + .try_consume(required) + .map_err(|_| SteppedMigrationError::InsufficientWeight { required })?; + V::store_in_code_storage_version(); + return Ok(None); + } + + let base_weight = T::WeightInfo::reset_pallet_migration(0); + let weight_per_key = T::WeightInfo::reset_pallet_migration(1).saturating_sub(base_weight); + let key_budget = meter + .remaining() + .saturating_sub(base_weight) + .checked_div_per_component(&weight_per_key) + .unwrap_or_default() + .saturated_into(); + + if key_budget == 0 { + return Err(SteppedMigrationError::InsufficientWeight { + required: T::WeightInfo::reset_pallet_migration(1), + }) + } + + let (keys_removed, is_done) = match clear_prefix(&P::name_hash(), Some(key_budget)) { + KillStorageResult::AllRemoved(value) => (value, true), + KillStorageResult::SomeRemaining(value) => (value, false), + }; + + meter.consume(T::WeightInfo::reset_pallet_migration(keys_removed)); + + Ok(Some(is_done)) + } + + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<alloc::vec::Vec<u8>, sp_runtime::TryRuntimeError> { + let num_keys: u64 = Self::num_keys(); + log::info!("ResetPallet<{}>: Trying to remove {num_keys} keys.", P::name()); + Ok(num_keys.encode()) + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade(state: alloc::vec::Vec<u8>) -> Result<(), sp_runtime::TryRuntimeError> { + use codec::Decode; + let keys_before = u64::decode(&mut state.as_ref()).expect("We encoded as u64 above; qed"); + let keys_now = Self::num_keys(); + log::info!("ResetPallet<{}>: Keys remaining after migration: {keys_now}", P::name()); + + if keys_before <= keys_now { + log::error!("ResetPallet<{}>: Did not remove any keys.", P::name()); + Err("ResetPallet failed")?; + } + + if keys_now != 1 { + log::error!("ResetPallet<{}>: Should have a single key after reset", P::name()); + Err("ResetPallet failed")?; + } + + Ok(()) + } +} diff --git a/substrate/frame/migrations/src/weights.rs b/substrate/frame/migrations/src/weights.rs index 49ae379dba020a39d12c6252c032e8f74ab2f494..10dfd82cbd8132358f82baf17340c62cbd26a5d3 100644 --- a/substrate/frame/migrations/src/weights.rs +++ b/substrate/frame/migrations/src/weights.rs @@ -18,36 +18,38 @@ //! Autogenerated weights for `pallet_migrations` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0 -//! DATE: 2024-11-08, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2025-01-27, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `runner-wiukf8gn-project-674-concurrent-0`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` -//! WASM-EXECUTION: `Compiled`, CHAIN: `Some("dev")`, DB CACHE: `1024` +//! HOSTNAME: `17938671047b`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: `1024` // Executed Command: -// ./target/production/substrate-node +// frame-omni-bencher +// v1 // benchmark // pallet -// --chain=dev +// --extrinsic=* +// --runtime=target/production/wbuild/kitchensink-runtime/kitchensink_runtime.wasm +// --pallet=pallet_migrations +// --header=/__w/polkadot-sdk/polkadot-sdk/substrate/HEADER-APACHE2 +// --output=/__w/polkadot-sdk/polkadot-sdk/substrate/frame/migrations/src/weights.rs +// --wasm-execution=compiled // --steps=50 // --repeat=20 -// --pallet=pallet_migrations +// --heap-pages=4096 +// --template=substrate/.maintain/frame-weight-template.hbs // --no-storage-info -// --no-median-slopes // --no-min-squares -// --extrinsic=* -// --wasm-execution=compiled -// --heap-pages=4096 -// --output=./substrate/frame/migrations/src/weights.rs -// --header=./substrate/HEADER-APACHE2 -// --template=./substrate/.maintain/frame-weight-template.hbs +// --no-median-slopes +// --genesis-builder-policy=none +// --exclude-pallets=pallet_xcm,pallet_xcm_benchmarks::fungible,pallet_xcm_benchmarks::generic,pallet_nomination_pools,pallet_remark,pallet_transaction_storage #![cfg_attr(rustfmt, rustfmt_skip)] #![allow(unused_parens)] #![allow(unused_imports)] #![allow(missing_docs)] -use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; -use core::marker::PhantomData; +use frame::weights_prelude::*; /// Weight functions needed for `pallet_migrations`. pub trait WeightInfo { @@ -63,6 +65,7 @@ pub trait WeightInfo { fn force_set_active_cursor() -> Weight; fn force_onboard_mbms() -> Weight; fn clear_historic(n: u32, ) -> Weight; + fn reset_pallet_migration(n: u32, ) -> Weight; } /// Weights for `pallet_migrations` using the Substrate node and recommended hardware. @@ -74,10 +77,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn onboard_new_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `309` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 9_520_000 picoseconds. - Weight::from_parts(9_934_000, 67035) + // Minimum execution time: 4_422_000 picoseconds. + Weight::from_parts(4_560_000, 67035) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -85,10 +88,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn progress_mbms_none() -> Weight { // Proof Size summary in bytes: - // Measured: `142` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 2_993_000 picoseconds. - Weight::from_parts(3_088_000, 67035) + // Minimum execution time: 678_000 picoseconds. + Weight::from_parts(751_000, 67035) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -97,10 +100,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_completed() -> Weight { // Proof Size summary in bytes: - // Measured: `167` - // Estimated: `3632` - // Minimum execution time: 7_042_000 picoseconds. - Weight::from_parts(7_272_000, 3632) + // Measured: `0` + // Estimated: `3465` + // Minimum execution time: 3_791_000 picoseconds. + Weight::from_parts(3_930_000, 3465) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -110,10 +113,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_skipped_historic() -> Weight { // Proof Size summary in bytes: - // Measured: `363` - // Estimated: `3828` - // Minimum execution time: 16_522_000 picoseconds. - Weight::from_parts(17_082_000, 3828) + // Measured: `34` + // Estimated: `3731` + // Minimum execution time: 7_375_000 picoseconds. + Weight::from_parts(7_630_000, 3731) .saturating_add(T::DbWeight::get().reads(2_u64)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -122,10 +125,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_advance() -> Weight { // Proof Size summary in bytes: - // Measured: `309` - // Estimated: `3774` - // Minimum execution time: 12_445_000 picoseconds. - Weight::from_parts(12_797_000, 3774) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 6_771_000 picoseconds. + Weight::from_parts(6_894_000, 3731) .saturating_add(T::DbWeight::get().reads(2_u64)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -134,10 +137,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_complete() -> Weight { // Proof Size summary in bytes: - // Measured: `309` - // Estimated: `3774` - // Minimum execution time: 14_057_000 picoseconds. - Weight::from_parts(14_254_000, 3774) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 8_223_000 picoseconds. + Weight::from_parts(8_406_000, 3731) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -149,10 +152,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_fail() -> Weight { // Proof Size summary in bytes: - // Measured: `309` - // Estimated: `3774` - // Minimum execution time: 14_578_000 picoseconds. - Weight::from_parts(14_825_000, 3774) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 8_907_000 picoseconds. + Weight::from_parts(9_168_000, 3731) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -160,8 +163,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 169_000 picoseconds. - Weight::from_parts(197_000, 0) + // Minimum execution time: 143_000 picoseconds. + Weight::from_parts(174_000, 0) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -169,8 +172,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_634_000 picoseconds. - Weight::from_parts(2_798_000, 0) + // Minimum execution time: 2_172_000 picoseconds. + Weight::from_parts(2_259_000, 0) .saturating_add(T::DbWeight::get().writes(1_u64)) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) @@ -179,8 +182,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_069_000 picoseconds. - Weight::from_parts(3_293_000, 0) + // Minimum execution time: 2_600_000 picoseconds. + Weight::from_parts(2_728_000, 0) .saturating_add(T::DbWeight::get().writes(1_u64)) } /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) @@ -189,10 +192,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn force_onboard_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `284` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 7_674_000 picoseconds. - Weight::from_parts(8_000_000, 67035) + // Minimum execution time: 2_949_000 picoseconds. + Weight::from_parts(3_106_000, 67035) .saturating_add(T::DbWeight::get().reads(2_u64)) } /// Storage: `MultiBlockMigrations::Historic` (r:256 w:256) @@ -200,17 +203,32 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// The range of component `n` is `[0, 256]`. fn clear_historic(n: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1122 + n * (271 ±0)` + // Measured: `960 + n * (271 ±0)` // Estimated: `3834 + n * (2740 ±0)` - // Minimum execution time: 16_937_000 picoseconds. - Weight::from_parts(15_713_121, 3834) - // Standard Error: 2_580 - .saturating_add(Weight::from_parts(1_424_239, 0).saturating_mul(n.into())) + // Minimum execution time: 15_122_000 picoseconds. + Weight::from_parts(27_397_644, 3834) + // Standard Error: 6_050 + .saturating_add(Weight::from_parts(1_454_904, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) .saturating_add(Weight::from_parts(0, 2740).saturating_mul(n.into())) } + /// Storage: `Skipped::Metadata` (r:0 w:0) + /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[0, 2048]`. + fn reset_pallet_migration(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `1605 + n * (38 ±0)` + // Estimated: `686 + n * (39 ±0)` + // Minimum execution time: 1_128_000 picoseconds. + Weight::from_parts(1_180_000, 686) + // Standard Error: 2_597 + .saturating_add(Weight::from_parts(916_593, 0).saturating_mul(n.into())) + .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 39).saturating_mul(n.into())) + } } // For backwards compatibility and tests. @@ -221,10 +239,10 @@ impl WeightInfo for () { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn onboard_new_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `309` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 9_520_000 picoseconds. - Weight::from_parts(9_934_000, 67035) + // Minimum execution time: 4_422_000 picoseconds. + Weight::from_parts(4_560_000, 67035) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -232,10 +250,10 @@ impl WeightInfo for () { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn progress_mbms_none() -> Weight { // Proof Size summary in bytes: - // Measured: `142` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 2_993_000 picoseconds. - Weight::from_parts(3_088_000, 67035) + // Minimum execution time: 678_000 picoseconds. + Weight::from_parts(751_000, 67035) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -244,10 +262,10 @@ impl WeightInfo for () { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_completed() -> Weight { // Proof Size summary in bytes: - // Measured: `167` - // Estimated: `3632` - // Minimum execution time: 7_042_000 picoseconds. - Weight::from_parts(7_272_000, 3632) + // Measured: `0` + // Estimated: `3465` + // Minimum execution time: 3_791_000 picoseconds. + Weight::from_parts(3_930_000, 3465) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -257,10 +275,10 @@ impl WeightInfo for () { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_skipped_historic() -> Weight { // Proof Size summary in bytes: - // Measured: `363` - // Estimated: `3828` - // Minimum execution time: 16_522_000 picoseconds. - Weight::from_parts(17_082_000, 3828) + // Measured: `34` + // Estimated: `3731` + // Minimum execution time: 7_375_000 picoseconds. + Weight::from_parts(7_630_000, 3731) .saturating_add(RocksDbWeight::get().reads(2_u64)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -269,10 +287,10 @@ impl WeightInfo for () { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_advance() -> Weight { // Proof Size summary in bytes: - // Measured: `309` - // Estimated: `3774` - // Minimum execution time: 12_445_000 picoseconds. - Weight::from_parts(12_797_000, 3774) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 6_771_000 picoseconds. + Weight::from_parts(6_894_000, 3731) .saturating_add(RocksDbWeight::get().reads(2_u64)) } /// Storage: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) @@ -281,10 +299,10 @@ impl WeightInfo for () { /// Proof: `MultiBlockMigrations::Historic` (`max_values`: None, `max_size`: Some(266), added: 2741, mode: `MaxEncodedLen`) fn exec_migration_complete() -> Weight { // Proof Size summary in bytes: - // Measured: `309` - // Estimated: `3774` - // Minimum execution time: 14_057_000 picoseconds. - Weight::from_parts(14_254_000, 3774) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 8_223_000 picoseconds. + Weight::from_parts(8_406_000, 3731) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -296,10 +314,10 @@ impl WeightInfo for () { /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) fn exec_migration_fail() -> Weight { // Proof Size summary in bytes: - // Measured: `309` - // Estimated: `3774` - // Minimum execution time: 14_578_000 picoseconds. - Weight::from_parts(14_825_000, 3774) + // Measured: `0` + // Estimated: `3731` + // Minimum execution time: 8_907_000 picoseconds. + Weight::from_parts(9_168_000, 3731) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -307,8 +325,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 169_000 picoseconds. - Weight::from_parts(197_000, 0) + // Minimum execution time: 143_000 picoseconds. + Weight::from_parts(174_000, 0) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) /// Proof: `MultiBlockMigrations::Cursor` (`max_values`: Some(1), `max_size`: Some(65550), added: 66045, mode: `MaxEncodedLen`) @@ -316,8 +334,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_634_000 picoseconds. - Weight::from_parts(2_798_000, 0) + // Minimum execution time: 2_172_000 picoseconds. + Weight::from_parts(2_259_000, 0) .saturating_add(RocksDbWeight::get().writes(1_u64)) } /// Storage: `MultiBlockMigrations::Cursor` (r:0 w:1) @@ -326,8 +344,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_069_000 picoseconds. - Weight::from_parts(3_293_000, 0) + // Minimum execution time: 2_600_000 picoseconds. + Weight::from_parts(2_728_000, 0) .saturating_add(RocksDbWeight::get().writes(1_u64)) } /// Storage: `MultiBlockMigrations::Cursor` (r:1 w:0) @@ -336,10 +354,10 @@ impl WeightInfo for () { /// Proof: UNKNOWN KEY `0x583359fe0e84d953a9dd84e8addb08a5` (r:1 w:0) fn force_onboard_mbms() -> Weight { // Proof Size summary in bytes: - // Measured: `284` + // Measured: `0` // Estimated: `67035` - // Minimum execution time: 7_674_000 picoseconds. - Weight::from_parts(8_000_000, 67035) + // Minimum execution time: 2_949_000 picoseconds. + Weight::from_parts(3_106_000, 67035) .saturating_add(RocksDbWeight::get().reads(2_u64)) } /// Storage: `MultiBlockMigrations::Historic` (r:256 w:256) @@ -347,15 +365,30 @@ impl WeightInfo for () { /// The range of component `n` is `[0, 256]`. fn clear_historic(n: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1122 + n * (271 ±0)` + // Measured: `960 + n * (271 ±0)` // Estimated: `3834 + n * (2740 ±0)` - // Minimum execution time: 16_937_000 picoseconds. - Weight::from_parts(15_713_121, 3834) - // Standard Error: 2_580 - .saturating_add(Weight::from_parts(1_424_239, 0).saturating_mul(n.into())) + // Minimum execution time: 15_122_000 picoseconds. + Weight::from_parts(27_397_644, 3834) + // Standard Error: 6_050 + .saturating_add(Weight::from_parts(1_454_904, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(n.into()))) .saturating_add(Weight::from_parts(0, 2740).saturating_mul(n.into())) } + /// Storage: `Skipped::Metadata` (r:0 w:0) + /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) + /// The range of component `n` is `[0, 2048]`. + fn reset_pallet_migration(n: u32, ) -> Weight { + // Proof Size summary in bytes: + // Measured: `1605 + n * (38 ±0)` + // Estimated: `686 + n * (39 ±0)` + // Minimum execution time: 1_128_000 picoseconds. + Weight::from_parts(1_180_000, 686) + // Standard Error: 2_597 + .saturating_add(Weight::from_parts(916_593, 0).saturating_mul(n.into())) + .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) + .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(n.into()))) + .saturating_add(Weight::from_parts(0, 39).saturating_mul(n.into())) + } } diff --git a/substrate/frame/nomination-pools/benchmarking/src/mock.rs b/substrate/frame/nomination-pools/benchmarking/src/mock.rs index 7c09cf22ad51e9575780525718d4fdd830bb6ecd..39ff6fb7a09e906b5fa71db70985a96a6f3daa7a 100644 --- a/substrate/frame/nomination-pools/benchmarking/src/mock.rs +++ b/substrate/frame/nomination-pools/benchmarking/src/mock.rs @@ -140,6 +140,7 @@ impl pallet_nomination_pools::Config for Runtime { type PalletId = PoolsPalletId; type MaxPointsToBalance = MaxPointsToBalance; type AdminOrigin = frame_system::EnsureRoot<Self::AccountId>; + type BlockNumberProvider = System; } parameter_types! { diff --git a/substrate/frame/nomination-pools/src/lib.rs b/substrate/frame/nomination-pools/src/lib.rs index 04736e6c1aad1cb04fcfe51c470929bf93f2e307..b45861289a561f2ec33b6f41e225384f83feda89 100644 --- a/substrate/frame/nomination-pools/src/lib.rs +++ b/substrate/frame/nomination-pools/src/lib.rs @@ -368,7 +368,6 @@ use frame_support::{ }, DefaultNoBound, PalletError, }; -use frame_system::pallet_prelude::BlockNumberFor; use scale_info::TypeInfo; use sp_core::U256; use sp_runtime::{ @@ -406,6 +405,7 @@ pub mod migration; pub mod weights; pub use pallet::*; +use sp_runtime::traits::BlockNumberProvider; pub use weights::WeightInfo; /// The balance type used by the currency system. @@ -416,6 +416,9 @@ pub type PoolId = u32; type AccountIdLookupOf<T> = <<T as frame_system::Config>::Lookup as StaticLookup>::Source; +pub type BlockNumberFor<T> = + <<T as Config>::BlockNumberProvider as BlockNumberProvider>::BlockNumber; + pub const POINTS_TO_BALANCE_INIT_RATIO: u32 = 1; /// Possible operations on the configuration values of this pallet. @@ -779,7 +782,7 @@ impl<T: Config> Commission<T> { } else { // throttling if blocks passed is less than `min_delay`. let blocks_surpassed = - <frame_system::Pallet<T>>::block_number().saturating_sub(f); + T::BlockNumberProvider::current_block_number().saturating_sub(f); blocks_surpassed < t.min_delay } }, @@ -892,7 +895,7 @@ impl<T: Config> Commission<T> { /// Updates a commission's `throttle_from` field to the current block. fn register_update(&mut self) { - self.throttle_from = Some(<frame_system::Pallet<T>>::block_number()); + self.throttle_from = Some(T::BlockNumberProvider::current_block_number()); } /// Checks whether a change rate is less restrictive than the current change rate, if any. @@ -1565,7 +1568,9 @@ impl<T: Config> Get<u32> for TotalUnbondingPools<T> { pub mod pallet { use super::*; use frame_support::traits::StorageVersion; - use frame_system::{ensure_signed, pallet_prelude::*}; + use frame_system::pallet_prelude::{ + ensure_root, ensure_signed, BlockNumberFor as SystemBlockNumberFor, OriginFor, + }; use sp_runtime::Perbill; /// The in-code storage version. @@ -1650,6 +1655,9 @@ pub mod pallet { /// The origin that can manage pool configurations. type AdminOrigin: EnsureOrigin<Self::RuntimeOrigin>; + + /// Provider for the block number. Normally this is the `frame_system` pallet. + type BlockNumberProvider: BlockNumberProvider; } /// The sum of funds across all pools. @@ -3143,9 +3151,9 @@ pub mod pallet { } #[pallet::hooks] - impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> { + impl<T: Config> Hooks<SystemBlockNumberFor<T>> for Pallet<T> { #[cfg(feature = "try-runtime")] - fn try_state(_n: BlockNumberFor<T>) -> Result<(), TryRuntimeError> { + fn try_state(_n: SystemBlockNumberFor<T>) -> Result<(), TryRuntimeError> { Self::do_try_state(u8::MAX) } diff --git a/substrate/frame/nomination-pools/src/mock.rs b/substrate/frame/nomination-pools/src/mock.rs index f4552389a267abaacb459ed3b4fea0a82daa1a80..88ef82a1562001b82c5676a262f0795c0575baf1 100644 --- a/substrate/frame/nomination-pools/src/mock.rs +++ b/substrate/frame/nomination-pools/src/mock.rs @@ -477,6 +477,7 @@ impl pools::Config for Runtime { type MaxUnbonding = MaxUnbonding; type MaxPointsToBalance = frame_support::traits::ConstU8<10>; type AdminOrigin = EnsureSignedBy<Admin, AccountId>; + type BlockNumberProvider = System; } type Block = frame_system::mocking::MockBlock<Runtime>; diff --git a/substrate/frame/nomination-pools/test-delegate-stake/src/mock.rs b/substrate/frame/nomination-pools/test-delegate-stake/src/mock.rs index 7aa8019b9c42c957454806431663a41347151cfd..77a57e5a815b113c2e5de07f234c26394e053bf6 100644 --- a/substrate/frame/nomination-pools/test-delegate-stake/src/mock.rs +++ b/substrate/frame/nomination-pools/test-delegate-stake/src/mock.rs @@ -269,6 +269,7 @@ impl pallet_nomination_pools::Config for Runtime { type MaxPointsToBalance = ConstU8<10>; type PalletId = PoolsPalletId; type AdminOrigin = EnsureRoot<AccountId>; + type BlockNumberProvider = System; } parameter_types! { diff --git a/substrate/frame/referenda/src/benchmarking.rs b/substrate/frame/referenda/src/benchmarking.rs index 67ac82787d31d78a859ed0158d7f6be2b1276aea..895f95dbec556e77781f9d46f2cf552ed8cb0956 100644 --- a/substrate/frame/referenda/src/benchmarking.rs +++ b/substrate/frame/referenda/src/benchmarking.rs @@ -33,6 +33,10 @@ use sp_runtime::traits::Bounded as ArithBounded; const SEED: u32 = 0; +fn set_block_number<T: Config<I>, I: 'static>(n: BlockNumberFor<T, I>) { + <T as Config<I>>::BlockNumberProvider::set_block_number(n); +} + fn assert_last_event<T: Config<I>, I: 'static>(generic_event: <T as Config<I>>::RuntimeEvent) { frame_system::Pallet::<T>::assert_last_event(generic_event.into()); } @@ -151,30 +155,28 @@ fn make_failing<T: Config<I>, I: 'static>(index: ReferendumIndex) { fn skip_prepare_period<T: Config<I>, I: 'static>(index: ReferendumIndex) { let status = Referenda::<T, I>::ensure_ongoing(index).unwrap(); let prepare_period_over = status.submitted + info::<T, I>(index).prepare_period; - frame_system::Pallet::<T>::set_block_number(prepare_period_over); + set_block_number::<T, I>(prepare_period_over); } fn skip_decision_period<T: Config<I>, I: 'static>(index: ReferendumIndex) { let status = Referenda::<T, I>::ensure_ongoing(index).unwrap(); let decision_period_over = status.deciding.unwrap().since + info::<T, I>(index).decision_period; - frame_system::Pallet::<T>::set_block_number(decision_period_over); + set_block_number::<T, I>(decision_period_over); } fn skip_confirm_period<T: Config<I>, I: 'static>(index: ReferendumIndex) { let status = Referenda::<T, I>::ensure_ongoing(index).unwrap(); let confirm_period_over = status.deciding.unwrap().confirming.unwrap(); - frame_system::Pallet::<T>::set_block_number(confirm_period_over); + set_block_number::<T, I>(confirm_period_over); } fn skip_timeout_period<T: Config<I>, I: 'static>(index: ReferendumIndex) { let status = Referenda::<T, I>::ensure_ongoing(index).unwrap(); let timeout_period_over = status.submitted + T::UndecidingTimeout::get(); - frame_system::Pallet::<T>::set_block_number(timeout_period_over); + set_block_number::<T, I>(timeout_period_over); } -fn alarm_time<T: Config<I>, I: 'static>( - index: ReferendumIndex, -) -> frame_system::pallet_prelude::BlockNumberFor<T> { +fn alarm_time<T: Config<I>, I: 'static>(index: ReferendumIndex) -> BlockNumberFor<T, I> { let status = Referenda::<T, I>::ensure_ongoing(index).unwrap(); status.alarm.unwrap().0 } diff --git a/substrate/frame/referenda/src/lib.rs b/substrate/frame/referenda/src/lib.rs index e72dd7f11cbb2f8f17f32ec9d9b1768ee015ec2d..e6a895f9c5933961a831525035f7201d9e20cbe3 100644 --- a/substrate/frame/referenda/src/lib.rs +++ b/substrate/frame/referenda/src/lib.rs @@ -82,7 +82,6 @@ use frame_support::{ }, BoundedVec, }; -use frame_system::pallet_prelude::BlockNumberFor; use scale_info::TypeInfo; use sp_runtime::{ traits::{AtLeast32BitUnsigned, Bounded, Dispatchable, One, Saturating, Zero}, @@ -98,14 +97,15 @@ use self::branch::{BeginDecidingBranch, OneFewerDecidingBranch, ServiceBranch}; pub use self::{ pallet::*, types::{ - BalanceOf, BoundedCallOf, CallOf, Curve, DecidingStatus, DecidingStatusOf, Deposit, - InsertSorted, NegativeImbalanceOf, PalletsOriginOf, ReferendumIndex, ReferendumInfo, - ReferendumInfoOf, ReferendumStatus, ReferendumStatusOf, ScheduleAddressOf, TallyOf, - TrackIdOf, TrackInfo, TrackInfoOf, TracksInfo, VotesOf, + BalanceOf, BlockNumberFor, BoundedCallOf, CallOf, Curve, DecidingStatus, DecidingStatusOf, + Deposit, InsertSorted, NegativeImbalanceOf, PalletsOriginOf, ReferendumIndex, + ReferendumInfo, ReferendumInfoOf, ReferendumStatus, ReferendumStatusOf, ScheduleAddressOf, + TallyOf, TrackIdOf, TrackInfo, TrackInfoOf, TracksInfo, VotesOf, }, weights::WeightInfo, }; pub use alloc::vec::Vec; +use sp_runtime::traits::BlockNumberProvider; #[cfg(test)] mod mock; @@ -144,7 +144,10 @@ const ASSEMBLY_ID: LockIdentifier = *b"assembly"; pub mod pallet { use super::*; use frame_support::{pallet_prelude::*, traits::EnsureOriginWithArg}; - use frame_system::pallet_prelude::*; + use frame_system::pallet_prelude::{ + ensure_root, ensure_signed, ensure_signed_or_root, BlockNumberFor as SystemBlockNumberFor, + OriginFor, + }; /// The in-code storage version. const STORAGE_VERSION: StorageVersion = StorageVersion::new(1); @@ -167,12 +170,12 @@ pub mod pallet { type WeightInfo: WeightInfo; /// The Scheduler. type Scheduler: ScheduleAnon< - BlockNumberFor<Self>, + BlockNumberFor<Self, I>, CallOf<Self, I>, PalletsOriginOf<Self>, Hasher = Self::Hashing, > + ScheduleNamed< - BlockNumberFor<Self>, + BlockNumberFor<Self, I>, CallOf<Self, I>, PalletsOriginOf<Self>, Hasher = Self::Hashing, @@ -215,30 +218,35 @@ pub mod pallet { /// The number of blocks after submission that a referendum must begin being decided by. /// Once this passes, then anyone may cancel the referendum. #[pallet::constant] - type UndecidingTimeout: Get<BlockNumberFor<Self>>; + type UndecidingTimeout: Get<BlockNumberFor<Self, I>>; /// Quantization level for the referendum wakeup scheduler. A higher number will result in /// fewer storage reads/writes needed for smaller voters, but also result in delays to the /// automatic referendum status changes. Explicit servicing instructions are unaffected. #[pallet::constant] - type AlarmInterval: Get<BlockNumberFor<Self>>; + type AlarmInterval: Get<BlockNumberFor<Self, I>>; // The other stuff. /// Information concerning the different referendum tracks. #[pallet::constant] type Tracks: Get< Vec<( - <Self::Tracks as TracksInfo<BalanceOf<Self, I>, BlockNumberFor<Self>>>::Id, - TrackInfo<BalanceOf<Self, I>, BlockNumberFor<Self>>, + <Self::Tracks as TracksInfo<BalanceOf<Self, I>, BlockNumberFor<Self, I>>>::Id, + TrackInfo<BalanceOf<Self, I>, BlockNumberFor<Self, I>>, )>, > + TracksInfo< BalanceOf<Self, I>, - BlockNumberFor<Self>, + BlockNumberFor<Self, I>, RuntimeOrigin = <Self::RuntimeOrigin as OriginTrait>::PalletsOrigin, >; /// The preimage provider. type Preimages: QueryPreimage<H = Self::Hashing> + StorePreimage; + + /// Provider for the block number. + /// + /// Normally this is the `frame_system` pallet. + type BlockNumberProvider: BlockNumberProvider; } /// The next free referendum index, aka the number of referenda started so far. @@ -432,9 +440,9 @@ pub mod pallet { } #[pallet::hooks] - impl<T: Config<I>, I: 'static> Hooks<BlockNumberFor<T>> for Pallet<T, I> { + impl<T: Config<I>, I: 'static> Hooks<SystemBlockNumberFor<T>> for Pallet<T, I> { #[cfg(feature = "try-runtime")] - fn try_state(_n: BlockNumberFor<T>) -> Result<(), sp_runtime::TryRuntimeError> { + fn try_state(_n: SystemBlockNumberFor<T>) -> Result<(), sp_runtime::TryRuntimeError> { Self::do_try_state()?; Ok(()) } @@ -462,7 +470,7 @@ pub mod pallet { origin: OriginFor<T>, proposal_origin: Box<PalletsOriginOf<T>>, proposal: BoundedCallOf<T, I>, - enactment_moment: DispatchTime<BlockNumberFor<T>>, + enactment_moment: DispatchTime<BlockNumberFor<T, I>>, ) -> DispatchResult { let proposal_origin = *proposal_origin; let who = T::SubmitOrigin::ensure_origin(origin, &proposal_origin)?; @@ -485,7 +493,7 @@ pub mod pallet { *x += 1; r }); - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let nudge_call = T::Preimages::bound(CallOf::<T, I>::from(Call::nudge_referendum { index }))?; let status = ReferendumStatus { @@ -527,7 +535,7 @@ pub mod pallet { let track = Self::track(status.track).ok_or(Error::<T, I>::NoTrack)?; status.decision_deposit = Some(Self::take_deposit(who.clone(), track.decision_deposit)?); - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let (info, _, branch) = Self::service_referendum(now, index, status); ReferendumInfoFor::<T, I>::insert(index, info); let e = @@ -584,7 +592,7 @@ pub mod pallet { Self::note_one_fewer_deciding(status.track); Self::deposit_event(Event::<T, I>::Cancelled { index, tally: status.tally }); let info = ReferendumInfo::Cancelled( - frame_system::Pallet::<T>::block_number(), + T::BlockNumberProvider::current_block_number(), Some(status.submission_deposit), status.decision_deposit, ); @@ -611,7 +619,7 @@ pub mod pallet { Self::slash_deposit(Some(status.submission_deposit.clone())); Self::slash_deposit(status.decision_deposit.clone()); Self::do_clear_metadata(index); - let info = ReferendumInfo::Killed(frame_system::Pallet::<T>::block_number()); + let info = ReferendumInfo::Killed(T::BlockNumberProvider::current_block_number()); ReferendumInfoFor::<T, I>::insert(index, info); Ok(()) } @@ -627,7 +635,7 @@ pub mod pallet { index: ReferendumIndex, ) -> DispatchResultWithPostInfo { ensure_root(origin)?; - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let mut status = Self::ensure_ongoing(index)?; // This is our wake-up, so we can disregard the alarm. status.alarm = None; @@ -658,7 +666,7 @@ pub mod pallet { let mut track_queue = TrackQueue::<T, I>::get(track); let branch = if let Some((index, mut status)) = Self::next_for_deciding(&mut track_queue) { - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let (maybe_alarm, branch) = Self::begin_deciding(&mut status, index, now, track_info); if let Some(set_alarm) = maybe_alarm { @@ -744,7 +752,7 @@ pub mod pallet { impl<T: Config<I>, I: 'static> Polling<T::Tally> for Pallet<T, I> { type Index = ReferendumIndex; type Votes = VotesOf<T, I>; - type Moment = BlockNumberFor<T>; + type Moment = BlockNumberFor<T, I>; type Class = TrackIdOf<T, I>; fn classes() -> Vec<Self::Class> { @@ -753,12 +761,12 @@ impl<T: Config<I>, I: 'static> Polling<T::Tally> for Pallet<T, I> { fn access_poll<R>( index: Self::Index, - f: impl FnOnce(PollStatus<&mut T::Tally, BlockNumberFor<T>, TrackIdOf<T, I>>) -> R, + f: impl FnOnce(PollStatus<&mut T::Tally, BlockNumberFor<T, I>, TrackIdOf<T, I>>) -> R, ) -> R { match ReferendumInfoFor::<T, I>::get(index) { Some(ReferendumInfo::Ongoing(mut status)) => { let result = f(PollStatus::Ongoing(&mut status.tally, status.track)); - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); Self::ensure_alarm_at(&mut status, index, now + One::one()); ReferendumInfoFor::<T, I>::insert(index, ReferendumInfo::Ongoing(status)); result @@ -772,13 +780,13 @@ impl<T: Config<I>, I: 'static> Polling<T::Tally> for Pallet<T, I> { fn try_access_poll<R>( index: Self::Index, f: impl FnOnce( - PollStatus<&mut T::Tally, BlockNumberFor<T>, TrackIdOf<T, I>>, + PollStatus<&mut T::Tally, BlockNumberFor<T, I>, TrackIdOf<T, I>>, ) -> Result<R, DispatchError>, ) -> Result<R, DispatchError> { match ReferendumInfoFor::<T, I>::get(index) { Some(ReferendumInfo::Ongoing(mut status)) => { let result = f(PollStatus::Ongoing(&mut status.tally, status.track))?; - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); Self::ensure_alarm_at(&mut status, index, now + One::one()); ReferendumInfoFor::<T, I>::insert(index, ReferendumInfo::Ongoing(status)); Ok(result) @@ -800,7 +808,7 @@ impl<T: Config<I>, I: 'static> Polling<T::Tally> for Pallet<T, I> { *x += 1; r }); - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let dummy_account_id = codec::Decode::decode(&mut sp_runtime::traits::TrailingZeroInput::new(&b"dummy"[..])) .expect("infinite length input; no invalid inputs for type; qed"); @@ -828,7 +836,7 @@ impl<T: Config<I>, I: 'static> Polling<T::Tally> for Pallet<T, I> { let mut status = Self::ensure_ongoing(index).map_err(|_| ())?; Self::ensure_no_alarm(&mut status); Self::note_one_fewer_deciding(status.track); - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let info = if approved { ReferendumInfo::Approved(now, Some(status.submission_deposit), status.decision_deposit) } else { @@ -868,7 +876,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { ReferendumInfo::Ongoing(status) => { let track = Self::track(status.track).ok_or(Error::<T, I>::NoTrack)?; let elapsed = if let Some(deciding) = status.deciding { - frame_system::Pallet::<T>::block_number().saturating_sub(deciding.since) + T::BlockNumberProvider::current_block_number().saturating_sub(deciding.since) } else { Zero::zero() }; @@ -889,11 +897,11 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { fn schedule_enactment( index: ReferendumIndex, track: &TrackInfoOf<T, I>, - desired: DispatchTime<BlockNumberFor<T>>, + desired: DispatchTime<BlockNumberFor<T, I>>, origin: PalletsOriginOf<T>, call: BoundedCallOf<T, I>, ) { - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); // Earliest allowed block is always at minimum the next block. let earliest_allowed = now.saturating_add(track.min_enactment_period.max(One::one())); let desired = desired.evaluate(now); @@ -912,8 +920,8 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { /// Set an alarm to dispatch `call` at block number `when`. fn set_alarm( call: BoundedCallOf<T, I>, - when: BlockNumberFor<T>, - ) -> Option<(BlockNumberFor<T>, ScheduleAddressOf<T, I>)> { + when: BlockNumberFor<T, I>, + ) -> Option<(BlockNumberFor<T, I>, ScheduleAddressOf<T, I>)> { let alarm_interval = T::AlarmInterval::get().max(One::one()); // Alarm must go off no earlier than `when`. // This rounds `when` upwards to the next multiple of `alarm_interval`. @@ -931,7 +939,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { result.is_ok(), "Unable to schedule a new alarm at #{:?} (now: #{:?}), scheduler error: `{:?}`", when, - frame_system::Pallet::<T>::block_number(), + T::BlockNumberProvider::current_block_number(), result.unwrap_err(), ); result.ok().map(|x| (when, x)) @@ -946,9 +954,9 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { fn begin_deciding( status: &mut ReferendumStatusOf<T, I>, index: ReferendumIndex, - now: BlockNumberFor<T>, + now: BlockNumberFor<T, I>, track: &TrackInfoOf<T, I>, - ) -> (Option<BlockNumberFor<T>>, BeginDecidingBranch) { + ) -> (Option<BlockNumberFor<T, I>>, BeginDecidingBranch) { let is_passing = Self::is_passing( &status.tally, Zero::zero(), @@ -984,11 +992,11 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { /// /// If `None`, then it is queued and should be nudged automatically as the queue gets drained. fn ready_for_deciding( - now: BlockNumberFor<T>, + now: BlockNumberFor<T, I>, track: &TrackInfoOf<T, I>, index: ReferendumIndex, status: &mut ReferendumStatusOf<T, I>, - ) -> (Option<BlockNumberFor<T>>, ServiceBranch) { + ) -> (Option<BlockNumberFor<T, I>>, ServiceBranch) { let deciding_count = DecidingCount::<T, I>::get(status.track); if deciding_count < track.max_deciding { // Begin deciding. @@ -1023,7 +1031,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { /// overall more efficient), however the weights become rather less easy to measure. fn note_one_fewer_deciding(track: TrackIdOf<T, I>) { // Set an alarm call for the next block to nudge the track along. - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let next_block = now + One::one(); let call = match T::Preimages::bound(CallOf::<T, I>::from(Call::one_fewer_deciding { track, @@ -1045,7 +1053,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { fn ensure_alarm_at( status: &mut ReferendumStatusOf<T, I>, index: ReferendumIndex, - alarm: BlockNumberFor<T>, + alarm: BlockNumberFor<T, I>, ) -> bool { if status.alarm.as_ref().map_or(true, |&(when, _)| when != alarm) { // Either no alarm or one that was different @@ -1090,7 +1098,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { /// `TrackQueue`. Basically this happens when a referendum is in the deciding queue and receives /// a vote, or when it moves into the deciding queue. fn service_referendum( - now: BlockNumberFor<T>, + now: BlockNumberFor<T, I>, index: ReferendumIndex, mut status: ReferendumStatusOf<T, I>, ) -> (ReferendumInfoOf<T, I>, bool, ServiceBranch) { @@ -1102,7 +1110,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { }; // Default the alarm to the end of the world. let timeout = status.submitted + T::UndecidingTimeout::get(); - let mut alarm = BlockNumberFor::<T>::max_value(); + let mut alarm = BlockNumberFor::<T, I>::max_value(); let branch; match &mut status.deciding { None => { @@ -1233,7 +1241,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { }, } - let dirty_alarm = if alarm < BlockNumberFor::<T>::max_value() { + let dirty_alarm = if alarm < BlockNumberFor::<T, I>::max_value() { Self::ensure_alarm_at(&mut status, index, alarm) } else { Self::ensure_no_alarm(&mut status) @@ -1244,11 +1252,11 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { /// Determine the point at which a referendum will be accepted, move into confirmation with the /// given `tally` or end with rejection (whichever happens sooner). fn decision_time( - deciding: &DecidingStatusOf<T>, + deciding: &DecidingStatusOf<T, I>, tally: &T::Tally, track_id: TrackIdOf<T, I>, track: &TrackInfoOf<T, I>, - ) -> BlockNumberFor<T> { + ) -> BlockNumberFor<T, I> { deciding.confirming.unwrap_or_else(|| { // Set alarm to the point where the current voting would make it pass. let approval = tally.approval(track_id); @@ -1307,8 +1315,8 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { /// `approval_needed`. fn is_passing( tally: &T::Tally, - elapsed: BlockNumberFor<T>, - period: BlockNumberFor<T>, + elapsed: BlockNumberFor<T, I>, + period: BlockNumberFor<T, I>, support_needed: &Curve, approval_needed: &Curve, id: TrackIdOf<T, I>, @@ -1377,7 +1385,9 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { if let Some(deciding) = status.deciding { ensure!( deciding.since < - deciding.confirming.unwrap_or(BlockNumberFor::<T>::max_value()), + deciding + .confirming + .unwrap_or(BlockNumberFor::<T, I>::max_value()), "Deciding status cannot begin before confirming stage." ) } diff --git a/substrate/frame/referenda/src/migration.rs b/substrate/frame/referenda/src/migration.rs index 631eb7340e567e8115e1755d513980fb148700c5..c94896649beab7c59a1941755959013480f20475 100644 --- a/substrate/frame/referenda/src/migration.rs +++ b/substrate/frame/referenda/src/migration.rs @@ -25,6 +25,8 @@ use log; #[cfg(feature = "try-runtime")] use sp_runtime::TryRuntimeError; +type SystemBlockNumberFor<T> = frame_system::pallet_prelude::BlockNumberFor<T>; + /// Initial version of storage types. pub mod v0 { use super::*; @@ -37,7 +39,7 @@ pub mod v0 { pub type ReferendumInfoOf<T, I> = ReferendumInfo< TrackIdOf<T, I>, PalletsOriginOf<T>, - frame_system::pallet_prelude::BlockNumberFor<T>, + SystemBlockNumberFor<T>, BoundedCallOf<T, I>, BalanceOf<T, I>, TallyOf<T, I>, @@ -93,6 +95,21 @@ pub mod v1 { /// The log target. const TARGET: &'static str = "runtime::referenda::migration::v1"; + pub(crate) type ReferendumInfoOf<T, I> = ReferendumInfo< + TrackIdOf<T, I>, + PalletsOriginOf<T>, + SystemBlockNumberFor<T>, + BoundedCallOf<T, I>, + BalanceOf<T, I>, + TallyOf<T, I>, + <T as frame_system::Config>::AccountId, + ScheduleAddressOf<T, I>, + >; + + #[storage_alias] + pub type ReferendumInfoFor<T: Config<I>, I: 'static> = + StorageMap<Pallet<T, I>, Blake2_128Concat, ReferendumIndex, ReferendumInfoOf<T, I>>; + /// Transforms a submission deposit of ReferendumInfo(Approved|Rejected|Cancelled|TimedOut) to /// optional value, making it refundable. pub struct MigrateV0ToV1<T, I = ()>(PhantomData<(T, I)>); @@ -137,7 +154,7 @@ pub mod v1 { if let Some(new_value) = maybe_new_value { weight.saturating_accrue(T::DbWeight::get().reads_writes(1, 1)); log::info!(target: TARGET, "migrating referendum #{:?}", &key); - ReferendumInfoFor::<T, I>::insert(key, new_value); + v1::ReferendumInfoFor::<T, I>::insert(key, new_value); } else { weight.saturating_accrue(T::DbWeight::get().reads(1)); } @@ -161,10 +178,125 @@ pub mod v1 { } } +/// Migration for when changing the block number provider. +/// +/// This migration is not guarded +pub mod switch_block_number_provider { + use super::*; + + /// The log target. + const TARGET: &'static str = "runtime::referenda::migration::change_block_number_provider"; + /// Convert from one to another block number provider/type. + pub trait BlockNumberConversion<Old, New> { + /// Convert the `old` block number type to the new block number type. + /// + /// Any changes in the rate of blocks need to be taken into account. + fn convert_block_number(block_number: Old) -> New; + } + + /// Transforms `SystemBlockNumberFor<T>` to `BlockNumberFor<T,I>` + pub struct MigrateBlockNumberProvider<BlockConverter, T, I = ()>( + PhantomData<(T, I)>, + PhantomData<BlockConverter>, + ); + impl<BlockConverter: BlockNumberConversion<T, I>, T: Config<I>, I: 'static> OnRuntimeUpgrade + for MigrateBlockNumberProvider<BlockConverter, T, I> + where + BlockConverter: BlockNumberConversion<SystemBlockNumberFor<T>, BlockNumberFor<T, I>>, + T: Config<I>, + { + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result<Vec<u8>, TryRuntimeError> { + let referendum_count = v1::ReferendumInfoFor::<T, I>::iter().count(); + log::info!( + target: TARGET, + "pre-upgrade state contains '{}' referendums.", + referendum_count + ); + Ok((referendum_count as u32).encode()) + } + + fn on_runtime_upgrade() -> Weight { + let mut weight = Weight::zero(); + weight.saturating_accrue(migrate_block_number_provider::<BlockConverter, T, I>()); + weight + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade(state: Vec<u8>) -> Result<(), TryRuntimeError> { + let on_chain_version = Pallet::<T, I>::on_chain_storage_version(); + ensure!(on_chain_version == 1, "must upgrade from version 1 to 2."); + let pre_referendum_count: u32 = Decode::decode(&mut &state[..]) + .expect("failed to decode the state from pre-upgrade."); + let post_referendum_count = ReferendumInfoFor::<T, I>::iter().count() as u32; + ensure!(post_referendum_count == pre_referendum_count, "must migrate all referendums."); + log::info!(target: TARGET, "migrated all referendums."); + Ok(()) + } + } + + pub fn migrate_block_number_provider<BlockConverter, T, I: 'static>() -> Weight + where + BlockConverter: BlockNumberConversion<SystemBlockNumberFor<T>, BlockNumberFor<T, I>>, + T: Config<I>, + { + let in_code_version = Pallet::<T, I>::in_code_storage_version(); + let on_chain_version = Pallet::<T, I>::on_chain_storage_version(); + let mut weight = T::DbWeight::get().reads(1); + log::info!( + target: "runtime::referenda::migration::change_block_number_provider", + "running migration with in-code storage version {:?} / onchain {:?}.", + in_code_version, + on_chain_version + ); + if on_chain_version == 0 { + log::error!(target: TARGET, "skipping migration from v0 to switch_block_number_provider."); + return weight + } + + // Migration logic here + v1::ReferendumInfoFor::<T, I>::iter().for_each(|(key, value)| { + let maybe_new_value = match value { + ReferendumInfo::Ongoing(_) | ReferendumInfo::Killed(_) => None, + ReferendumInfo::Approved(e, s, d) => { + let new_e = BlockConverter::convert_block_number(e); + Some(ReferendumInfo::Approved(new_e, s, d)) + }, + ReferendumInfo::Rejected(e, s, d) => { + let new_e = BlockConverter::convert_block_number(e); + Some(ReferendumInfo::Rejected(new_e, s, d)) + }, + ReferendumInfo::Cancelled(e, s, d) => { + let new_e = BlockConverter::convert_block_number(e); + Some(ReferendumInfo::Cancelled(new_e, s, d)) + }, + ReferendumInfo::TimedOut(e, s, d) => { + let new_e = BlockConverter::convert_block_number(e); + Some(ReferendumInfo::TimedOut(new_e, s, d)) + }, + }; + if let Some(new_value) = maybe_new_value { + weight.saturating_accrue(T::DbWeight::get().reads_writes(1, 1)); + log::info!(target: TARGET, "migrating referendum #{:?}", &key); + ReferendumInfoFor::<T, I>::insert(key, new_value); + } else { + weight.saturating_accrue(T::DbWeight::get().reads(1)); + } + }); + + weight + } +} + #[cfg(test)] pub mod test { use super::*; - use crate::mock::{Test as T, *}; + use crate::{ + migration::switch_block_number_provider::{ + migrate_block_number_provider, BlockNumberConversion, + }, + mock::{Test as T, *}, + }; use core::str::FromStr; // create referendum status v0. @@ -185,7 +317,6 @@ pub mod test { deciding: None, } } - #[test] pub fn referendum_status_v0() { // make sure the bytes of the encoded referendum v0 is decodable. @@ -214,11 +345,11 @@ pub mod test { // run migration from v0 to v1. v1::MigrateV0ToV1::<T, ()>::on_runtime_upgrade(); // fetch and assert migrated into v1 the ongoing referendum. - let ongoing_v1 = ReferendumInfoFor::<T, ()>::get(2).unwrap(); + let ongoing_v1 = v1::ReferendumInfoFor::<T, ()>::get(2).unwrap(); // referendum status schema is the same for v0 and v1. assert_eq!(ReferendumInfoOf::<T, ()>::Ongoing(status_v0), ongoing_v1); // fetch and assert migrated into v1 the approved referendum. - let approved_v1 = ReferendumInfoFor::<T, ()>::get(5).unwrap(); + let approved_v1 = v1::ReferendumInfoFor::<T, ()>::get(5).unwrap(); assert_eq!( approved_v1, ReferendumInfoOf::<T, ()>::Approved( @@ -229,4 +360,48 @@ pub mod test { ); }); } + + #[test] + fn migration_v1_to_switch_block_number_provider_works() { + ExtBuilder::default().build_and_execute(|| { + pub struct MockBlockConverter; + + impl BlockNumberConversion<SystemBlockNumberFor<T>, BlockNumberFor<T, ()>> for MockBlockConverter { + fn convert_block_number(block_number: SystemBlockNumberFor<T>) -> BlockNumberFor<T, ()> { + block_number as u64 + 10u64 + } + } + + let referendum_ongoing = v1::ReferendumInfoOf::<T, ()>::Ongoing(create_status_v0()); + let referendum_approved = v1::ReferendumInfoOf::<T, ()>::Approved( + 50, //old block number + Some(Deposit { who: 1, amount: 10 }), + Some(Deposit { who: 2, amount: 20 }), + ); + + ReferendumCount::<T, ()>::mutate(|x| x.saturating_inc()); + v1::ReferendumInfoFor::<T, ()>::insert(1, referendum_ongoing); + + ReferendumCount::<T, ()>::mutate(|x| x.saturating_inc()); + v1::ReferendumInfoFor::<T, ()>::insert(2, referendum_approved); + + migrate_block_number_provider::<MockBlockConverter, T, ()>(); + + let ongoing_v2 = ReferendumInfoFor::<T, ()>::get(1).unwrap(); + assert_eq!( + ongoing_v2, + ReferendumInfoOf::<T, ()>::Ongoing(create_status_v0()) + ); + + let approved_v2 = ReferendumInfoFor::<T, ()>::get(2).unwrap(); + assert_eq!( + approved_v2, + ReferendumInfoOf::<T, ()>::Approved( + 50, + Some(Deposit { who: 1, amount: 10 }), + Some(Deposit { who: 2, amount: 20 }) + ) + ); + }); + } } diff --git a/substrate/frame/referenda/src/mock.rs b/substrate/frame/referenda/src/mock.rs index 5d36ce137d46d2308166ed131cdfb8a464a1c661..c46236586f1f74d81dcab2ad5f6c21f18c700959 100644 --- a/substrate/frame/referenda/src/mock.rs +++ b/substrate/frame/referenda/src/mock.rs @@ -206,6 +206,7 @@ impl Config for Test { type AlarmInterval = AlarmInterval; type Tracks = TestTracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } pub struct ExtBuilder {} diff --git a/substrate/frame/referenda/src/types.rs b/substrate/frame/referenda/src/types.rs index e83f28b472cda7fa3dc6329fd026440ec415874d..e97e7cc8df6d880ddc6aa2631878e715ba97344a 100644 --- a/substrate/frame/referenda/src/types.rs +++ b/substrate/frame/referenda/src/types.rs @@ -30,6 +30,10 @@ use sp_runtime::{FixedI64, PerThing, RuntimeDebug}; pub type BalanceOf<T, I = ()> = <<T as Config<I>>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance; + +pub type BlockNumberFor<T, I> = + <<T as Config<I>>::BlockNumberProvider as BlockNumberProvider>::BlockNumber; + pub type NegativeImbalanceOf<T, I> = <<T as Config<I>>::Currency as Currency< <T as frame_system::Config>::AccountId, >>::NegativeImbalance; @@ -43,7 +47,7 @@ pub type PalletsOriginOf<T> = pub type ReferendumInfoOf<T, I> = ReferendumInfo< TrackIdOf<T, I>, PalletsOriginOf<T>, - BlockNumberFor<T>, + BlockNumberFor<T, I>, BoundedCallOf<T, I>, BalanceOf<T, I>, TallyOf<T, I>, @@ -53,19 +57,19 @@ pub type ReferendumInfoOf<T, I> = ReferendumInfo< pub type ReferendumStatusOf<T, I> = ReferendumStatus< TrackIdOf<T, I>, PalletsOriginOf<T>, - BlockNumberFor<T>, + BlockNumberFor<T, I>, BoundedCallOf<T, I>, BalanceOf<T, I>, TallyOf<T, I>, <T as frame_system::Config>::AccountId, ScheduleAddressOf<T, I>, >; -pub type DecidingStatusOf<T> = DecidingStatus<BlockNumberFor<T>>; -pub type TrackInfoOf<T, I = ()> = TrackInfo<BalanceOf<T, I>, BlockNumberFor<T>>; +pub type DecidingStatusOf<T, I> = DecidingStatus<BlockNumberFor<T, I>>; +pub type TrackInfoOf<T, I = ()> = TrackInfo<BalanceOf<T, I>, BlockNumberFor<T, I>>; pub type TrackIdOf<T, I> = - <<T as Config<I>>::Tracks as TracksInfo<BalanceOf<T, I>, BlockNumberFor<T>>>::Id; + <<T as Config<I>>::Tracks as TracksInfo<BalanceOf<T, I>, BlockNumberFor<T, I>>>::Id; pub type ScheduleAddressOf<T, I> = <<T as Config<I>>::Scheduler as Anon< - BlockNumberFor<T>, + BlockNumberFor<T, I>, CallOf<T, I>, PalletsOriginOf<T>, >>::Address; diff --git a/substrate/frame/revive/fixtures/build.rs b/substrate/frame/revive/fixtures/build.rs index eca547bc6ddd0ac6f7856a1ae60804b9013b4dda..fe420ba40da6318e722f608c409de34b414379de 100644 --- a/substrate/frame/revive/fixtures/build.rs +++ b/substrate/frame/revive/fixtures/build.rs @@ -127,6 +127,8 @@ fn invoke_build(current_dir: &Path) -> Result<()> { .env("PATH", env::var("PATH").unwrap_or_default()) .env("CARGO_ENCODED_RUSTFLAGS", encoded_rustflags) .env("RUSTUP_HOME", env::var("RUSTUP_HOME").unwrap_or_default()) + // Support compilation on stable rust + .env("RUSTC_BOOTSTRAP", "1") .args([ "build", "--release", diff --git a/substrate/frame/revive/fixtures/contracts/caller_contract.rs b/substrate/frame/revive/fixtures/contracts/caller_contract.rs index b6a9bf2895fa6d48b3032c5b4e9b3839e93bb6ae..236aec2e863bdfb2a8822dcfb06a34c8d83d9446 100644 --- a/substrate/frame/revive/fixtures/contracts/caller_contract.rs +++ b/substrate/frame/revive/fixtures/contracts/caller_contract.rs @@ -31,7 +31,7 @@ pub extern "C" fn deploy() {} #[no_mangle] #[polkavm_derive::polkavm_export] pub extern "C" fn call() { - input!(code_hash: &[u8; 32],); + input!(code_hash: &[u8; 32], load_code_ref_time: u64,); // The value to transfer on instantiation and calls. Chosen to be greater than existential // deposit. @@ -49,8 +49,9 @@ pub extern "C" fn call() { // Fail to deploy the contract since it returns a non-zero exit status. let res = api::instantiate( - u64::MAX, // How much ref_time weight to devote for the execution. u64::MAX = use all. - u64::MAX, // How much proof_size weight to devote for the execution. u64::MAX = use all. + u64::MAX, /* How much ref_time weight to devote for the execution. u64::MAX = use + * all. */ + u64::MAX, // How much proof_size weight to devote for the execution. u64::MAX = use all. &[u8::MAX; 32], // No deposit limit. &value, &reverted_input_deploy, @@ -62,8 +63,9 @@ pub extern "C" fn call() { // Fail to deploy the contract due to insufficient ref_time weight. let res = api::instantiate( - 1u64, // too little ref_time weight - u64::MAX, // How much proof_size weight to devote for the execution. u64::MAX = use all. + 1u64, // too little ref_time weight + u64::MAX, /* How much proof_size weight to devote for the execution. u64::MAX = + * use all. */ &[u8::MAX; 32], // No deposit limit. &value, &input_deploy, @@ -75,7 +77,8 @@ pub extern "C" fn call() { // Fail to deploy the contract due to insufficient proof_size weight. let res = api::instantiate( - u64::MAX, // How much ref_time weight to devote for the execution. u64::MAX = use all. + u64::MAX, /* How much ref_time weight to devote for the execution. u64::MAX = use + * all. */ 1u64, // Too little proof_size weight &[u8::MAX; 32], // No deposit limit. &value, @@ -90,8 +93,9 @@ pub extern "C" fn call() { let mut callee = [0u8; 20]; api::instantiate( - u64::MAX, // How much ref_time weight to devote for the execution. u64::MAX = use all. - u64::MAX, // How much proof_size weight to devote for the execution. u64::MAX = use all. + u64::MAX, /* How much ref_time weight to devote for the execution. u64::MAX = use + * all. */ + u64::MAX, // How much proof_size weight to devote for the execution. u64::MAX = use all. &[u8::MAX; 32], // No deposit limit. &value, &input_deploy, @@ -118,8 +122,9 @@ pub extern "C" fn call() { let res = api::call( uapi::CallFlags::empty(), &callee, - 1u64, // Too little ref_time weight. - u64::MAX, // How much proof_size weight to devote for the execution. u64::MAX = use all. + load_code_ref_time, // Too little ref_time weight. + u64::MAX, /* How much proof_size weight to devote for the execution. u64::MAX + * = use all. */ &[u8::MAX; 32], // No deposit limit. &value, &INPUT, diff --git a/substrate/frame/revive/fixtures/contracts/create_storage_and_instantiate.rs b/substrate/frame/revive/fixtures/contracts/create_storage_and_instantiate.rs index 3db5ee1c573e1598708edab58ba5e7598484b5c3..0ee0bd70db97c0b85fcd52070b20ec992db124da 100644 --- a/substrate/frame/revive/fixtures/contracts/create_storage_and_instantiate.rs +++ b/substrate/frame/revive/fixtures/contracts/create_storage_and_instantiate.rs @@ -20,7 +20,9 @@ #![no_main] use common::{input, u256_bytes}; -use uapi::{HostFn, HostFnImpl as api}; +use uapi::{HostFn, HostFnImpl as api, StorageFlags}; + +static BUFFER: [u8; 16 * 1024 + 1] = [0u8; 16 * 1024 + 1]; #[no_mangle] #[polkavm_derive::polkavm_export] @@ -35,6 +37,12 @@ pub extern "C" fn call() { deposit_limit: &[u8; 32], ); + let len = u32::from_le_bytes(input.try_into().unwrap()); + let data = &BUFFER[..len as usize]; + let mut key = [0u8; 32]; + key[0] = 1; + api::set_storage(StorageFlags::empty(), &key, data); + let value = u256_bytes(10_000u64); let salt = [0u8; 32]; let mut address = [0u8; 20]; diff --git a/substrate/frame/revive/fixtures/contracts/locking_delegate_dependency.rs b/substrate/frame/revive/fixtures/contracts/locking_delegate_dependency.rs deleted file mode 100644 index 6be5d5c72f9ac7b94cbb191419796c68be4c52cc..0000000000000000000000000000000000000000 --- a/substrate/frame/revive/fixtures/contracts/locking_delegate_dependency.rs +++ /dev/null @@ -1,77 +0,0 @@ -// This file is part of Substrate. - -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//! This contract tests the behavior of locking / unlocking delegate_dependencies when delegate -//! calling into a contract. -#![no_std] -#![no_main] - -use common::input; -use uapi::{HostFn, HostFnImpl as api}; - -const ALICE_FALLBACK: [u8; 20] = [1u8; 20]; - -/// Load input data and perform the action specified by the input. -/// If `delegate_call` is true, then delegate call into the contract. -fn load_input(delegate_call: bool) { - input!( - action: u32, - address: &[u8; 20], - code_hash: &[u8; 32], - ); - - match action { - // 1 = Lock delegate dependency - 1 => { - api::lock_delegate_dependency(code_hash); - }, - // 2 = Unlock delegate dependency - 2 => { - api::unlock_delegate_dependency(code_hash); - }, - // 3 = Terminate - 3 => { - api::terminate(&ALICE_FALLBACK); - }, - // Everything else is a noop - _ => {}, - } - - if delegate_call { - api::delegate_call( - uapi::CallFlags::empty(), - address, - u64::MAX, - u64::MAX, - &[u8::MAX; 32], - &[], - None - ).unwrap(); - } -} - -#[no_mangle] -#[polkavm_derive::polkavm_export] -pub extern "C" fn deploy() { - load_input(false); -} - -#[no_mangle] -#[polkavm_derive::polkavm_export] -pub extern "C" fn call() { - load_input(true); -} diff --git a/substrate/frame/revive/fixtures/contracts/self_destruct.rs b/substrate/frame/revive/fixtures/contracts/self_destruct.rs index 053e545deb19e0c9ecb322ec38f023d566f3b726..eed7f40ddfed7b3518fad29e058c90f457fd2a9e 100644 --- a/substrate/frame/revive/fixtures/contracts/self_destruct.rs +++ b/substrate/frame/revive/fixtures/contracts/self_destruct.rs @@ -25,7 +25,10 @@ const DJANGO_FALLBACK: [u8; 20] = [4u8; 20]; #[no_mangle] #[polkavm_derive::polkavm_export] -pub extern "C" fn deploy() {} +pub extern "C" fn deploy() { + // make sure that the deposit for the immutable data is refunded + api::set_immutable_data(&[1, 2, 3, 4, 5]) +} #[no_mangle] #[polkavm_derive::polkavm_export] diff --git a/substrate/frame/revive/fixtures/contracts/tracing.rs b/substrate/frame/revive/fixtures/contracts/tracing.rs index 9cbef3bbc84355dc89968347248d4daed68aedad..451769b87cefd479fd2b4f3ab4c882c71bf39585 100644 --- a/substrate/frame/revive/fixtures/contracts/tracing.rs +++ b/substrate/frame/revive/fixtures/contracts/tracing.rs @@ -20,7 +20,7 @@ #![no_std] #![no_main] -use common::input; +use common::{input, u256_bytes}; use uapi::{HostFn, HostFnImpl as api}; #[no_mangle] @@ -32,6 +32,18 @@ pub extern "C" fn deploy() {} pub extern "C" fn call() { input!(calls_left: u32, callee_addr: &[u8; 20],); if calls_left == 0 { + // transfer some value to BOB + let _ = api::call( + uapi::CallFlags::empty(), + &[2u8; 20], + u64::MAX, // How much ref_time to devote for the execution. u64::MAX = use all. + u64::MAX, /* How much proof_size to devote for the execution. u64::MAX = use + * all. */ + &[u8::MAX; 32], // No deposit limit. + &u256_bytes(100), // Value transferred + &[], + None, + ); return } diff --git a/substrate/frame/revive/mock-network/src/lib.rs b/substrate/frame/revive/mock-network/src/lib.rs index b8c9bc13aa79629d9f38358fc9435aae6031bd02..3e9d1fe33914e077e610f257edc141e5fde724ed 100644 --- a/substrate/frame/revive/mock-network/src/lib.rs +++ b/substrate/frame/revive/mock-network/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/mocks.rs b/substrate/frame/revive/mock-network/src/mocks.rs index 6903f01e91a2b5543235fdeddb74f46634855c6b..b02e3bacc495b8c52327e1d3bc52801063a00dc5 100644 --- a/substrate/frame/revive/mock-network/src/mocks.rs +++ b/substrate/frame/revive/mock-network/src/mocks.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/mocks/msg_queue.rs b/substrate/frame/revive/mock-network/src/mocks/msg_queue.rs index 88ab8135ea1297d44b025ddf6d66fafbbe674858..45715d973b5457f650ba3a7aebc59d777916f4be 100644 --- a/substrate/frame/revive/mock-network/src/mocks/msg_queue.rs +++ b/substrate/frame/revive/mock-network/src/mocks/msg_queue.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/mocks/relay_message_queue.rs b/substrate/frame/revive/mock-network/src/mocks/relay_message_queue.rs index 50f0febd2c4403b4981aec0a416b5814f9902df7..8f493c4b46429eac8618afac50e3383adddc51cf 100644 --- a/substrate/frame/revive/mock-network/src/mocks/relay_message_queue.rs +++ b/substrate/frame/revive/mock-network/src/mocks/relay_message_queue.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/parachain.rs b/substrate/frame/revive/mock-network/src/parachain.rs index 26a8fdcada27e890e2cee926da9bc0448ac3d2bc..ea9a26e65b0973a2b0677371feea91b8842372a4 100644 --- a/substrate/frame/revive/mock-network/src/parachain.rs +++ b/substrate/frame/revive/mock-network/src/parachain.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/parachain/contracts_config.rs b/substrate/frame/revive/mock-network/src/parachain/contracts_config.rs index a2fa7cbf706811657f35c51dde2d473ff759f652..c2ddb8fb750fedf329a70f6a136e96dd41f4e6c3 100644 --- a/substrate/frame/revive/mock-network/src/parachain/contracts_config.rs +++ b/substrate/frame/revive/mock-network/src/parachain/contracts_config.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/relay_chain.rs b/substrate/frame/revive/mock-network/src/relay_chain.rs index 5fed061f80b45aaaad89e3a4ef3b0abef41000d8..221943654c6c9c1895d6e777d4c70857cf6f2160 100644 --- a/substrate/frame/revive/mock-network/src/relay_chain.rs +++ b/substrate/frame/revive/mock-network/src/relay_chain.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/rpc/.sqlx/query-027a434a38822c2ba4439e8f9f9c1135227c1150f2c5083d1c7c6086b717ada0.json b/substrate/frame/revive/rpc/.sqlx/query-027a434a38822c2ba4439e8f9f9c1135227c1150f2c5083d1c7c6086b717ada0.json deleted file mode 100644 index 016276144901a3a5d85aa1fde5cf6976aa3d2a74..0000000000000000000000000000000000000000 --- a/substrate/frame/revive/rpc/.sqlx/query-027a434a38822c2ba4439e8f9f9c1135227c1150f2c5083d1c7c6086b717ada0.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "\n\t\t\t\tINSERT INTO transaction_hashes (transaction_hash, block_hash, transaction_index)\n\t\t\t\tVALUES ($1, $2, $3)\n\n\t\t\t\tON CONFLICT(transaction_hash) DO UPDATE SET\n\t\t\t\tblock_hash = EXCLUDED.block_hash,\n\t\t\t\ttransaction_index = EXCLUDED.transaction_index\n\t\t\t\t", - "describe": { - "columns": [], - "parameters": { - "Right": 3 - }, - "nullable": [] - }, - "hash": "027a434a38822c2ba4439e8f9f9c1135227c1150f2c5083d1c7c6086b717ada0" -} diff --git a/substrate/frame/revive/rpc/.sqlx/query-29af64347f700919dc2ee12463f332be50096d4e37be04ed8b6f46ac5c242043.json b/substrate/frame/revive/rpc/.sqlx/query-29af64347f700919dc2ee12463f332be50096d4e37be04ed8b6f46ac5c242043.json index 2443035c433d782aee91f404eb142086586871fa..b125d2401d83106bba9404cc4f1632a2cf2fa982 100644 --- a/substrate/frame/revive/rpc/.sqlx/query-29af64347f700919dc2ee12463f332be50096d4e37be04ed8b6f46ac5c242043.json +++ b/substrate/frame/revive/rpc/.sqlx/query-29af64347f700919dc2ee12463f332be50096d4e37be04ed8b6f46ac5c242043.json @@ -6,7 +6,7 @@ { "name": "block_hash", "ordinal": 0, - "type_info": "Text" + "type_info": "Blob" }, { "name": "transaction_index", diff --git a/substrate/frame/revive/rpc/.sqlx/query-76dd0f2460cfc0ffa93dda7a42893cbf05b3451cb8e4c4cb6cf86ec70930a11e.json b/substrate/frame/revive/rpc/.sqlx/query-76dd0f2460cfc0ffa93dda7a42893cbf05b3451cb8e4c4cb6cf86ec70930a11e.json new file mode 100644 index 0000000000000000000000000000000000000000..e8c40966e8395725e1107f26681e65a1dbd555d7 --- /dev/null +++ b/substrate/frame/revive/rpc/.sqlx/query-76dd0f2460cfc0ffa93dda7a42893cbf05b3451cb8e4c4cb6cf86ec70930a11e.json @@ -0,0 +1,12 @@ +{ + "db_name": "SQLite", + "query": "\n\t\t\t\t\tINSERT OR REPLACE INTO logs(\n\t\t\t\t\t\tblock_hash,\n\t\t\t\t\t\ttransaction_index,\n\t\t\t\t\t\tlog_index,\n\t\t\t\t\t\taddress,\n\t\t\t\t\t\tblock_number,\n\t\t\t\t\t\ttransaction_hash,\n\t\t\t\t\t\ttopic_0, topic_1, topic_2, topic_3,\n\t\t\t\t\t\tdata)\n\t\t\t\t\tVALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)\n\t\t\t\t\t", + "describe": { + "columns": [], + "parameters": { + "Right": 11 + }, + "nullable": [] + }, + "hash": "76dd0f2460cfc0ffa93dda7a42893cbf05b3451cb8e4c4cb6cf86ec70930a11e" +} diff --git a/substrate/frame/revive/rpc/.sqlx/query-de639fe0ac0c3cfdfbbfa07e81a61dae3a284ad4f7979dacb0ccff32cdc39051.json b/substrate/frame/revive/rpc/.sqlx/query-de639fe0ac0c3cfdfbbfa07e81a61dae3a284ad4f7979dacb0ccff32cdc39051.json new file mode 100644 index 0000000000000000000000000000000000000000..6df5453213956d44df9cc320d2821e4d3fb73291 --- /dev/null +++ b/substrate/frame/revive/rpc/.sqlx/query-de639fe0ac0c3cfdfbbfa07e81a61dae3a284ad4f7979dacb0ccff32cdc39051.json @@ -0,0 +1,12 @@ +{ + "db_name": "SQLite", + "query": "\n\t\t\t\tINSERT OR REPLACE INTO transaction_hashes (transaction_hash, block_hash, transaction_index)\n\t\t\t\tVALUES ($1, $2, $3)\n\t\t\t\t", + "describe": { + "columns": [], + "parameters": { + "Right": 3 + }, + "nullable": [] + }, + "hash": "de639fe0ac0c3cfdfbbfa07e81a61dae3a284ad4f7979dacb0ccff32cdc39051" +} diff --git a/substrate/frame/revive/rpc/Cargo.toml b/substrate/frame/revive/rpc/Cargo.toml index 014231f7f3e55c9a296e4519e6d9ea95215061bd..76f9be56eb40de681d7908104cab69541b5099ef 100644 --- a/substrate/frame/revive/rpc/Cargo.toml +++ b/substrate/frame/revive/rpc/Cargo.toml @@ -13,10 +13,6 @@ default-run = "eth-rpc" name = "eth-rpc" path = "src/main.rs" -[[bin]] -name = "eth-indexer" -path = "src/eth-indexer.rs" - [[bin]] name = "eth-rpc-tester" path = "src/eth-rpc-tester.rs" @@ -74,6 +70,7 @@ tokio = { workspace = true, features = ["full"] } [dev-dependencies] env_logger = { workspace = true } +pretty_assertions = { workspace = true } static_init = { workspace = true } substrate-cli-test-utils = { workspace = true } subxt-signer = { workspace = true, features = ["unstable-eth"] } diff --git a/substrate/frame/revive/rpc/dockerfiles/eth-indexer/Dockerfile b/substrate/frame/revive/rpc/dockerfiles/eth-indexer/Dockerfile deleted file mode 100644 index 77fa846a145cec4633fabd43a5a53467f8b77d2c..0000000000000000000000000000000000000000 --- a/substrate/frame/revive/rpc/dockerfiles/eth-indexer/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -FROM rust AS builder - -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y \ - protobuf-compiler \ - clang libclang-dev - -WORKDIR /polkadot -COPY . /polkadot -RUN rustup component add rust-src -RUN cargo build --locked --profile production -p pallet-revive-eth-rpc --bin eth-indexer - -FROM docker.io/parity/base-bin:latest -COPY --from=builder /polkadot/target/production/eth-indexer /usr/local/bin - -USER root -RUN useradd -m -u 1001 -U -s /bin/sh -d /polkadot polkadot && \ -# unclutter and minimize the attack surface - rm -rf /usr/bin /usr/sbin && \ -# check if executable works in this container - /usr/local/bin/eth-indexer --help - -USER polkadot - -ENTRYPOINT ["/usr/local/bin/eth-indexer"] - -# We call the help by default -CMD ["--help"] diff --git a/substrate/frame/revive/rpc/examples/js/.prettierrc.json b/substrate/frame/revive/rpc/examples/js/.prettierrc.json index e74ed9ff357859b4fe43a022c49f14813553c400..123daf08ec5d7921159a3040f9ba327767b52648 100644 --- a/substrate/frame/revive/rpc/examples/js/.prettierrc.json +++ b/substrate/frame/revive/rpc/examples/js/.prettierrc.json @@ -1,6 +1,6 @@ { - "trailingComma": "es5", - "tabWidth": 4, - "semi": false, - "singleQuote": true + "trailingComma": "es5", + "tabWidth": 4, + "semi": false, + "singleQuote": true } diff --git a/substrate/frame/revive/rpc/examples/js/contracts/.solhint.json b/substrate/frame/revive/rpc/examples/js/contracts/.solhint.json index ce2220e0b7560eedc6b32ab9f629dbf077c9944c..2614a969da39b62c05822b3bd747854164c99065 100644 --- a/substrate/frame/revive/rpc/examples/js/contracts/.solhint.json +++ b/substrate/frame/revive/rpc/examples/js/contracts/.solhint.json @@ -1,3 +1,3 @@ { - "extends": "solhint:recommended" + "extends": "solhint:recommended" } diff --git a/substrate/frame/revive/rpc/examples/js/package.json b/substrate/frame/revive/rpc/examples/js/package.json index f2c4b8d780932a2b55d7ff7976d814c2f6d47364..e181461cf86152a2250bd5494ebb75e79fb302db 100644 --- a/substrate/frame/revive/rpc/examples/js/package.json +++ b/substrate/frame/revive/rpc/examples/js/package.json @@ -6,7 +6,8 @@ "scripts": { "dev": "vite", "build": "tsc && vite build", - "preview": "vite preview" + "preview": "vite preview", + "prettier": "prettier --write ." }, "dependencies": { "@parity/revive": "^0.0.9", diff --git a/substrate/frame/revive/rpc/examples/js/src/build-contracts.ts b/substrate/frame/revive/rpc/examples/js/src/build-contracts.ts index b162b8be0adfed696d30892247a10ce234482498..17f5dffd9973e1edf0a22ecbb98bf75bef5b1ebf 100644 --- a/substrate/frame/revive/rpc/examples/js/src/build-contracts.ts +++ b/substrate/frame/revive/rpc/examples/js/src/build-contracts.ts @@ -1,4 +1,4 @@ -import { compile } from '@parity/revive' +import { compile, SolcOutput } from '@parity/revive' import { format } from 'prettier' import { parseArgs } from 'node:util' import solc from 'solc' @@ -8,7 +8,7 @@ import { basename, join } from 'path' type CompileInput = Parameters<typeof compile>[0] const { - values: { filter }, + values: { filter, solcOnly }, } = parseArgs({ args: process.argv.slice(2), options: { @@ -16,6 +16,10 @@ const { type: 'string', short: 'f', }, + solcOnly: { + type: 'boolean', + short: 's', + }, }, }) @@ -54,32 +58,23 @@ for (const file of input) { [name]: { content: readFileSync(join(contractsDir, file), 'utf8') }, } - console.log('Compiling with revive...') - const reviveOut = await compile(input) - - for (const contracts of Object.values(reviveOut.contracts)) { - for (const [name, contract] of Object.entries(contracts)) { - console.log(`📜 Add PVM contract ${name}`) - const abi = contract.abi - const abiName = `${name}Abi` - writeFileSync(join(abiDir, `${name}.json`), JSON.stringify(abi, null, 2)) - - writeFileSync( - join(abiDir, `${name}.ts`), - await format(`export const ${abiName} = ${JSON.stringify(abi, null, 2)} as const`, { - parser: 'typescript', - }) - ) + if (!solcOnly) { + console.log('Compiling with revive...') + const reviveOut = await compile(input, { bin: 'resolc' }) - writeFileSync( - join(pvmDir, `${name}.polkavm`), - Buffer.from(contract.evm.bytecode.object, 'hex') - ) + for (const contracts of Object.values(reviveOut.contracts)) { + for (const [name, contract] of Object.entries(contracts)) { + console.log(`📜 Add PVM contract ${name}`) + writeFileSync( + join(pvmDir, `${name}.polkavm`), + Buffer.from(contract.evm.bytecode.object, 'hex') + ) + } } } console.log(`Compile with solc ${file}`) - const evmOut = JSON.parse(evmCompile(input)) as typeof reviveOut + const evmOut = JSON.parse(evmCompile(input)) as SolcOutput for (const contracts of Object.values(evmOut.contracts)) { for (const [name, contract] of Object.entries(contracts)) { @@ -88,6 +83,17 @@ for (const file of input) { join(evmDir, `${name}.bin`), Buffer.from(contract.evm.bytecode.object, 'hex') ) + + const abi = contract.abi + const abiName = `${name}Abi` + writeFileSync(join(abiDir, `${name}.json`), JSON.stringify(abi, null, 2)) + + writeFileSync( + join(abiDir, `${name}.ts`), + await format(`export const ${abiName} = ${JSON.stringify(abi, null, 2)} as const`, { + parser: 'typescript', + }) + ) } } } diff --git a/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts b/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts index 2a4ff2edcdf521e36a3d97ec2f3541affd5a76b6..c6417e3198bdc236951178c8cc5892b52e899559 100644 --- a/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts +++ b/substrate/frame/revive/rpc/examples/js/src/geth-diff.test.ts @@ -6,16 +6,16 @@ import { waitForHealth, polkadotSdkPath, } from './util.ts' -import { afterAll, afterEach, beforeAll, describe, expect, test } from 'bun:test' -import { encodeFunctionData, Hex, parseEther } from 'viem' +import { afterAll, afterEach, describe, expect, test } from 'bun:test' +import { encodeFunctionData, Hex, parseEther, decodeEventLog } from 'viem' import { ErrorsAbi } from '../abi/Errors' -import { FlipperCallerAbi } from '../abi/FlipperCaller' -import { FlipperAbi } from '../abi/Flipper' +import { EventExampleAbi } from '../abi/EventExample' import { Subprocess, spawn } from 'bun' import { fail } from 'node:assert' const procs: Subprocess[] = [] -if (!process.env.USE_LIVE_SERVERS) { +if (process.env.START_GETH) { + process.env.USE_GETH = 'true' procs.push( // Run geth on port 8546 await (async () => { @@ -30,7 +30,12 @@ if (!process.env.USE_LIVE_SERVERS) { await waitForHealth('http://localhost:8546').catch() return proc - })(), + })() + ) +} + +if (process.env.START_SUBSTRATE_NODE) { + procs.push( //Run the substate node (() => { killProcessOnPort(9944) @@ -42,13 +47,19 @@ if (!process.env.USE_LIVE_SERVERS) { '-l=error,evm=debug,sc_rpc_server=info,runtime::revive=debug', ], { - stdout: Bun.file('/tmp/kitchensink.out.log'), - stderr: Bun.file('/tmp/kitchensink.err.log'), + stdout: Bun.file('/tmp/substrate-node.out.log'), + stderr: Bun.file('/tmp/substrate-node.err.log'), cwd: polkadotSdkPath, } ) - })(), - // Run eth-rpc on 8545 + })() + ) +} + +if (process.env.START_ETH_RPC) { + process.env.USE_ETH_RPC = 'true' + // Run eth-rpc on 8545 + procs.push( await (async () => { killProcessOnPort(8545) console.log('Starting eth-rpc') @@ -79,53 +90,49 @@ afterAll(async () => { procs.forEach((proc) => proc.kill()) }) -const envs = await Promise.all([createEnv('geth'), createEnv('kitchensink')]) +const envs = await Promise.all([ + ...(process.env.USE_GETH ? [createEnv('geth')] : []), + ...(process.env.USE_ETH_RPC ? [createEnv('eth-rpc')] : []), +]) for (const env of envs) { describe(env.serverWallet.chain.name, () => { - let errorsAddr: Hex = '0x' - let flipperAddr: Hex = '0x' - let flipperCallerAddr: Hex = '0x' - beforeAll(async () => { - { + const getErrorTesterAddr = (() => { + let contractAddress: Hex = '0x' + return async () => { + if (contractAddress !== '0x') { + return contractAddress + } const hash = await env.serverWallet.deployContract({ abi: ErrorsAbi, bytecode: getByteCode('Errors', env.evm), }) const deployReceipt = await env.serverWallet.waitForTransactionReceipt({ hash }) - if (!deployReceipt.contractAddress) - throw new Error('Contract address should be set') - errorsAddr = deployReceipt.contractAddress - } - - { - const hash = await env.serverWallet.deployContract({ - abi: FlipperAbi, - bytecode: getByteCode('Flipper', env.evm), - }) - const deployReceipt = await env.serverWallet.waitForTransactionReceipt({ hash }) - if (!deployReceipt.contractAddress) - throw new Error('Contract address should be set') - flipperAddr = deployReceipt.contractAddress + contractAddress = deployReceipt.contractAddress! + return contractAddress } + })() - { + const getEventExampleAddr = (() => { + let contractAddress: Hex = '0x' + return async () => { + if (contractAddress !== '0x') { + return contractAddress + } const hash = await env.serverWallet.deployContract({ - abi: FlipperCallerAbi, - args: [flipperAddr], - bytecode: getByteCode('FlipperCaller', env.evm), + abi: EventExampleAbi, + bytecode: getByteCode('EventExample', env.evm), }) const deployReceipt = await env.serverWallet.waitForTransactionReceipt({ hash }) - if (!deployReceipt.contractAddress) - throw new Error('Contract address should be set') - flipperCallerAddr = deployReceipt.contractAddress + contractAddress = deployReceipt.contractAddress! + return contractAddress } - }) + })() test('triggerAssertError', async () => { try { await env.accountWallet.readContract({ - address: errorsAddr, + address: await getErrorTesterAddr(), abi: ErrorsAbi, functionName: 'triggerAssertError', }) @@ -143,7 +150,7 @@ for (const env of envs) { test('triggerRevertError', async () => { try { await env.accountWallet.readContract({ - address: errorsAddr, + address: await getErrorTesterAddr(), abi: ErrorsAbi, functionName: 'triggerRevertError', }) @@ -161,7 +168,7 @@ for (const env of envs) { test('triggerDivisionByZero', async () => { try { await env.accountWallet.readContract({ - address: errorsAddr, + address: await getErrorTesterAddr(), abi: ErrorsAbi, functionName: 'triggerDivisionByZero', }) @@ -181,7 +188,7 @@ for (const env of envs) { test('triggerOutOfBoundsError', async () => { try { await env.accountWallet.readContract({ - address: errorsAddr, + address: await getErrorTesterAddr(), abi: ErrorsAbi, functionName: 'triggerOutOfBoundsError', }) @@ -201,7 +208,7 @@ for (const env of envs) { test('triggerCustomError', async () => { try { await env.accountWallet.readContract({ - address: errorsAddr, + address: await getErrorTesterAddr(), abi: ErrorsAbi, functionName: 'triggerCustomError', }) @@ -219,7 +226,7 @@ for (const env of envs) { test('eth_call (not enough funds)', async () => { try { await env.emptyWallet.simulateContract({ - address: errorsAddr, + address: await getErrorTesterAddr(), abi: ErrorsAbi, functionName: 'valueMatch', value: parseEther('10'), @@ -255,7 +262,7 @@ for (const env of envs) { test('eth_estimate (not enough funds)', async () => { try { await env.emptyWallet.estimateContractGas({ - address: errorsAddr, + address: await getErrorTesterAddr(), abi: ErrorsAbi, functionName: 'valueMatch', value: parseEther('10'), @@ -273,7 +280,7 @@ for (const env of envs) { test('eth_estimate call caller (not enough funds)', async () => { try { await env.emptyWallet.estimateContractGas({ - address: errorsAddr, + address: await getErrorTesterAddr(), abi: ErrorsAbi, functionName: 'valueMatch', value: parseEther('10'), @@ -291,7 +298,7 @@ for (const env of envs) { test('eth_estimate (revert)', async () => { try { await env.serverWallet.estimateContractGas({ - address: errorsAddr, + address: await getErrorTesterAddr(), abi: ErrorsAbi, functionName: 'valueMatch', value: parseEther('11'), @@ -322,7 +329,7 @@ for (const env of envs) { expect(balance).toBe(0n) try { await env.emptyWallet.estimateContractGas({ - address: errorsAddr, + address: await getErrorTesterAddr(), abi: ErrorsAbi, functionName: 'setState', args: [true], @@ -352,10 +359,47 @@ for (const env of envs) { { data, from: env.emptyWallet.account.address, - to: errorsAddr, + to: await getErrorTesterAddr(), }, ], }) }) + + test('logs', async () => { + let address = await getEventExampleAddr() + let { request } = await env.serverWallet.simulateContract({ + address, + abi: EventExampleAbi, + functionName: 'triggerEvent', + }) + + let hash = await env.serverWallet.writeContract(request) + let receipt = await env.serverWallet.waitForTransactionReceipt({ hash }) + const logs = await env.serverWallet.getLogs({ + address, + blockHash: receipt.blockHash, + }) + expect(logs).toHaveLength(1) + expect(logs[0]).toMatchObject({ + address, + data: '0x00000000000000000000000000000000000000000000000000000000000030390000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000b48656c6c6f20776f726c64000000000000000000000000000000000000000000', + transactionHash: hash, + }) + + expect( + decodeEventLog({ + abi: EventExampleAbi, + data: logs[0].data, + topics: logs[0].topics, + }) + ).toEqual({ + eventName: 'ExampleEvent', + args: { + sender: env.serverWallet.account.address, + value: 12345n, + message: 'Hello world', + }, + }) + }) }) } diff --git a/substrate/frame/revive/rpc/examples/js/src/spammer.ts b/substrate/frame/revive/rpc/examples/js/src/spammer.ts index c038afa71f0aa5bb9227a17578e7af68409efe4a..7ebee80278512b441c424cfe14ea3f8e60e0f094 100644 --- a/substrate/frame/revive/rpc/examples/js/src/spammer.ts +++ b/substrate/frame/revive/rpc/examples/js/src/spammer.ts @@ -4,14 +4,13 @@ import { getByteCode, killProcessOnPort, polkadotSdkPath, - timeout, wait, waitForHealth, } from './util' import { FlipperAbi } from '../abi/Flipper' //Run the substate node -console.log('🚀 Start kitchensink...') +console.log('🚀 Start substrate-node...') killProcessOnPort(9944) spawn( [ @@ -20,47 +19,34 @@ spawn( '-l=error,evm=debug,sc_rpc_server=info,runtime::revive=debug', ], { - stdout: Bun.file('/tmp/kitchensink.out.log'), - stderr: Bun.file('/tmp/kitchensink.err.log'), - cwd: polkadotSdkPath, - } -) - -// Run eth-indexer -console.log('🔠Start indexer...') -spawn( - [ - './target/debug/eth-indexer', - '--node-rpc-url=ws://localhost:9944', - '-l=eth-rpc=debug', - '--database-url ${polkadotSdkPath}/substrate/frame/revive/rpc/tx_hashes.db', - ], - { - stdout: Bun.file('/tmp/eth-indexer.out.log'), - stderr: Bun.file('/tmp/eth-indexer.err.log'), + stdout: Bun.file('/tmp/substrate-node.out.log'), + stderr: Bun.file('/tmp/substrate-node.err.log'), cwd: polkadotSdkPath, } ) // Run eth-rpc on 8545 -console.log('💻 Start eth-rpc...') -killProcessOnPort(8545) -spawn( - [ - './target/debug/eth-rpc', - '--dev', - '--node-rpc-url=ws://localhost:9944', - '-l=rpc-metrics=debug,eth-rpc=debug', - ], - { - stdout: Bun.file('/tmp/eth-rpc.out.log'), - stderr: Bun.file('/tmp/eth-rpc.err.log'), - cwd: polkadotSdkPath, - } -) -await waitForHealth('http://localhost:8545').catch() +console.log('🚀 Start eth-rpc...') +if (process.env.START_ETH_RPC) { + console.log('🔠Start eth-rpc...') + killProcessOnPort(8545) + spawn( + [ + './target/debug/eth-rpc', + '--dev', + '--node-rpc-url=ws://localhost:9944', + '-l=rpc-metrics=debug,eth-rpc=debug', + ], + { + stdout: Bun.file('/tmp/eth-rpc.out.log'), + stderr: Bun.file('/tmp/eth-rpc.err.log'), + cwd: polkadotSdkPath, + } + ) + await waitForHealth('http://localhost:8545').catch() +} -const env = await createEnv('kitchensink') +const env = await createEnv('eth-rpc') const wallet = env.accountWallet console.log('🚀 Deploy flipper...') @@ -74,30 +60,32 @@ if (!deployReceipt.contractAddress) throw new Error('Contract address should be const flipperAddr = deployReceipt.contractAddress let nonce = await wallet.getTransactionCount(wallet.account) -let callCount = 0 -console.log('🔄 Starting nonce:', nonce) console.log('🔄 Starting loop...') +console.log('Starting nonce:', nonce) try { while (true) { - callCount++ - console.log(`🔄 Call flip (${callCount})...`) + console.log(`Call flip (nonce: ${nonce})...`) const { request } = await wallet.simulateContract({ account: wallet.account, address: flipperAddr, abi: FlipperAbi, functionName: 'flip', + nonce, }) - console.log(`🔄 Submit flip (call ${callCount}...`) - - await Promise.race([ - (async () => { - const hash = await wallet.writeContract(request) - await wallet.waitForTransactionReceipt({ hash }) - })(), - timeout(15_000), - ]) + const hash = await wallet.writeContract(request) + console.time(hash) + wallet.waitForTransactionReceipt({ hash }).then((receipt) => { + console.timeEnd(hash) + console.log('-----------------------------------') + console.log(`status: ${receipt.status ? '✅' : 'âŒ'}`) + console.log(`block: ${receipt.blockNumber} - hash: ${receipt.blockHash}`) + console.log(`tx: ${hash}`) + console.log('-----------------------------------') + }) + await wait(1_000) + nonce++ } } catch (err) { console.error('Failed with error:', err) diff --git a/substrate/frame/revive/rpc/examples/js/src/transfer.ts b/substrate/frame/revive/rpc/examples/js/src/transfer.ts index aef9a487b0c014c72b2d1b8f6c44796268ec1b00..711e4eb893796fcc6afa19058c63e204920158e1 100644 --- a/substrate/frame/revive/rpc/examples/js/src/transfer.ts +++ b/substrate/frame/revive/rpc/examples/js/src/transfer.ts @@ -6,10 +6,11 @@ try { console.log(`Signer balance: ${await walletClient.getBalance(walletClient.account)}`) console.log(`Recipient balance: ${await walletClient.getBalance({ address: recipient })}`) - await walletClient.sendTransaction({ + let resp = await walletClient.sendTransaction({ to: recipient, value: parseEther('1.0'), }) + console.log(`Transaction hash: ${resp}`) console.log(`Sent: ${parseEther('1.0')}`) console.log(`Signer balance: ${await walletClient.getBalance(walletClient.account)}`) console.log(`Recipient balance: ${await walletClient.getBalance({ address: recipient })}`) diff --git a/substrate/frame/revive/rpc/examples/js/src/util.ts b/substrate/frame/revive/rpc/examples/js/src/util.ts index 2991bdfe6367be7975d337c44e014372294824fb..3a488da67d801b0fd801d4dd9066c2a28124cecd 100644 --- a/substrate/frame/revive/rpc/examples/js/src/util.ts +++ b/substrate/frame/revive/rpc/examples/js/src/util.ts @@ -35,10 +35,10 @@ export function killProcessOnPort(port: number) { } export let jsonRpcErrors: JsonRpcError[] = [] -export async function createEnv(name: 'geth' | 'kitchensink') { +export async function createEnv(name: 'geth' | 'eth-rpc') { const gethPort = process.env.GETH_PORT || '8546' - const kitchensinkPort = process.env.KITCHENSINK_PORT || '8545' - const url = `http://localhost:${name == 'geth' ? gethPort : kitchensinkPort}` + const ethRpcPort = process.env.ETH_RPC_PORT || '8545' + const url = `http://localhost:${name == 'geth' ? gethPort : ethRpcPort}` const chain = defineChain({ id: name == 'geth' ? 1337 : 420420420, name, diff --git a/substrate/frame/revive/rpc/examples/rust/deploy.rs b/substrate/frame/revive/rpc/examples/rust/deploy.rs index b74d7ea18d41f6b5f5bba11a8e1a174de65e2e61..12f539bba42ffed35ecffc11a5403574e84c5f7a 100644 --- a/substrate/frame/revive/rpc/examples/rust/deploy.rs +++ b/substrate/frame/revive/rpc/examples/rust/deploy.rs @@ -19,10 +19,8 @@ use pallet_revive::{ create1, evm::{Account, BlockTag, ReceiptInfo, U256}, }; -use pallet_revive_eth_rpc::{ - example::{wait_for_receipt, TransactionBuilder}, - EthRpcClient, -}; +use pallet_revive_eth_rpc::{example::TransactionBuilder, EthRpcClient}; +use std::sync::Arc; #[tokio::main] async fn main() -> anyhow::Result<()> { @@ -36,43 +34,49 @@ async fn main() -> anyhow::Result<()> { println!("Account:"); println!("- address: {:?}", account.address()); println!("- substrate: {}", account.substrate_account()); - let client = HttpClientBuilder::default().build("http://localhost:8545")?; + let client = Arc::new(HttpClientBuilder::default().build("http://localhost:8545")?); println!("\n\n=== Deploying contract ===\n\n"); let nonce = client.get_transaction_count(account.address(), BlockTag::Latest.into()).await?; - let hash = TransactionBuilder::default() + let tx = TransactionBuilder::new(&client) .value(5_000_000_000_000u128.into()) .input(input) - .send(&client) + .send() .await?; - println!("Deploy Tx hash: {hash:?}"); + println!("Deploy Tx hash: {:?}", tx.hash()); let ReceiptInfo { block_number, gas_used, contract_address, .. } = - wait_for_receipt(&client, hash).await?; + tx.wait_for_receipt().await?; let contract_address = contract_address.unwrap(); assert_eq!(contract_address, create1(&account.address(), nonce.try_into().unwrap())); println!("Receipt:"); - println!("- Block number: {block_number}"); - println!("- Gas used: {gas_used}"); + println!("- Block number: {block_number}"); + println!("- Gas estimated: {}", tx.gas()); + println!("- Gas used: {gas_used}"); println!("- Contract address: {contract_address:?}"); let balance = client.get_balance(contract_address, BlockTag::Latest.into()).await?; println!("- Contract balance: {balance:?}"); + if std::env::var("SKIP_CALL").is_ok() { + return Ok(()); + } + println!("\n\n=== Calling contract ===\n\n"); - let hash = TransactionBuilder::default() + let tx = TransactionBuilder::new(&client) .value(U256::from(1_000_000u32)) .to(contract_address) - .send(&client) + .send() .await?; - println!("Contract call tx hash: {hash:?}"); - let ReceiptInfo { block_number, gas_used, to, .. } = wait_for_receipt(&client, hash).await?; + println!("Contract call tx hash: {:?}", tx.hash()); + let ReceiptInfo { block_number, gas_used, to, .. } = tx.wait_for_receipt().await?; println!("Receipt:"); - println!("- Block number: {block_number}"); - println!("- Gas used: {gas_used}"); - println!("- To: {to:?}"); + println!("- Block number: {block_number}"); + println!("- Gas used: {gas_used}"); + println!("- Gas estimated: {}", tx.gas()); + println!("- To: {to:?}"); Ok(()) } diff --git a/substrate/frame/revive/rpc/examples/rust/rpc-playground.rs b/substrate/frame/revive/rpc/examples/rust/rpc-playground.rs index 64175ca60b5f411a77757a777ac0f886cf0f152c..ea8916b3b993d3365fa5be99b9c56d44fcdad60d 100644 --- a/substrate/frame/revive/rpc/examples/rust/rpc-playground.rs +++ b/substrate/frame/revive/rpc/examples/rust/rpc-playground.rs @@ -17,13 +17,14 @@ use jsonrpsee::http_client::HttpClientBuilder; use pallet_revive::evm::{Account, BlockTag}; use pallet_revive_eth_rpc::EthRpcClient; +use std::sync::Arc; #[tokio::main] async fn main() -> anyhow::Result<()> { let account = Account::default(); println!("Account address: {:?}", account.address()); - let client = HttpClientBuilder::default().build("http://localhost:8545")?; + let client = Arc::new(HttpClientBuilder::default().build("http://localhost:8545")?); let block = client.get_block_by_number(BlockTag::Latest.into(), false).await?; println!("Latest block: {block:#?}"); diff --git a/substrate/frame/revive/rpc/examples/rust/transfer.rs b/substrate/frame/revive/rpc/examples/rust/transfer.rs index 1d67a2dba28f97764e5c36d5df2490c6a407f16d..5f16716760f9ac4affd931f25e746134174e8f1d 100644 --- a/substrate/frame/revive/rpc/examples/rust/transfer.rs +++ b/substrate/frame/revive/rpc/examples/rust/transfer.rs @@ -16,14 +16,12 @@ // limitations under the License. use jsonrpsee::http_client::HttpClientBuilder; use pallet_revive::evm::{Account, BlockTag, ReceiptInfo}; -use pallet_revive_eth_rpc::{ - example::{wait_for_receipt, TransactionBuilder}, - EthRpcClient, -}; +use pallet_revive_eth_rpc::{example::TransactionBuilder, EthRpcClient}; +use std::sync::Arc; #[tokio::main] async fn main() -> anyhow::Result<()> { - let client = HttpClientBuilder::default().build("http://localhost:8545")?; + let client = Arc::new(HttpClientBuilder::default().build("http://localhost:8545")?); let alith = Account::default(); let alith_address = alith.address(); @@ -41,16 +39,15 @@ async fn main() -> anyhow::Result<()> { print_balance().await?; println!("\n\n=== Transferring ===\n\n"); - let hash = TransactionBuilder::default() + let tx = TransactionBuilder::new(&client) .signer(alith) .value(value) .to(ethan.address()) - .send(&client) + .send() .await?; - println!("Transaction hash: {hash:?}"); + println!("Transaction hash: {:?}", tx.hash()); - let ReceiptInfo { block_number, gas_used, status, .. } = - wait_for_receipt(&client, hash).await?; + let ReceiptInfo { block_number, gas_used, status, .. } = tx.wait_for_receipt().await?; println!("Receipt: "); println!("- Block number: {block_number}"); println!("- Gas used: {gas_used}"); diff --git a/substrate/frame/revive/rpc/migrations/0001_create_transaction_hashes.sql b/substrate/frame/revive/rpc/migrations/0001_create_transaction_hashes.sql new file mode 100644 index 0000000000000000000000000000000000000000..8fd6b353faa8230129f6ffe321b88a46b77fedb0 --- /dev/null +++ b/substrate/frame/revive/rpc/migrations/0001_create_transaction_hashes.sql @@ -0,0 +1,22 @@ +-- Useful commands: +-- +-- Set DATABASE_URL environment variable. +-- export DATABASE_URL=sqlite:///$HOME/eth_rpc.db +-- +-- Create DB: +-- cargo sqlx database create +-- +-- Run migration manually: +-- cargo sqlx migrate run +-- +-- Update compile time artifacts: +-- cargo sqlx prepare +CREATE TABLE IF NOT EXISTS transaction_hashes ( + transaction_hash BLOB NOT NULL PRIMARY KEY, + transaction_index INTEGER NOT NULL, + block_hash BLOB NOT NULL +); + +CREATE INDEX IF NOT EXISTS idx_block_hash ON transaction_hashes ( + block_hash +); diff --git a/substrate/frame/revive/rpc/migrations/0002_create_log_table.sql b/substrate/frame/revive/rpc/migrations/0002_create_log_table.sql new file mode 100644 index 0000000000000000000000000000000000000000..4b012e17a38c5db4b56403588bc84360094a7507 --- /dev/null +++ b/substrate/frame/revive/rpc/migrations/0002_create_log_table.sql @@ -0,0 +1,28 @@ +CREATE TABLE IF NOT EXISTS logs ( + block_hash BLOB NOT NULL, + transaction_index INTEGER NOT NULL, + log_index INTEGER NOT NULL, + address BLOB NOT NULL, + block_number INTEGER NOT NULL, + transaction_hash BLOB NOT NULL, + topic_0 BLOB, + topic_1 BLOB, + topic_2 BLOB, + topic_3 BLOB, + data BLOB, + PRIMARY KEY (block_hash, transaction_index, log_index) +); + +CREATE INDEX IF NOT EXISTS idx_block_number_address_topics ON logs ( + block_number, + address, + topic_0, + topic_1, + topic_2, + topic_3 +); + +CREATE INDEX IF NOT EXISTS idx_block_hash ON logs ( + block_hash +); + diff --git a/substrate/frame/revive/rpc/migrations/20241205165418_create_transaction_hashes.sql b/substrate/frame/revive/rpc/migrations/20241205165418_create_transaction_hashes.sql deleted file mode 100644 index 43405bea9d0468c45a7dc5a10ed0571cec9fa163..0000000000000000000000000000000000000000 --- a/substrate/frame/revive/rpc/migrations/20241205165418_create_transaction_hashes.sql +++ /dev/null @@ -1,15 +0,0 @@ --- Create DB: --- DATABASE_URL="..." cargo sqlx database create --- --- Run migration: --- DATABASE_URL="..." cargo sqlx migrate run --- --- Update compile time artifacts: --- DATABASE_URL="..." cargo sqlx prepare -CREATE TABLE transaction_hashes ( - transaction_hash CHAR(64) NOT NULL PRIMARY KEY, - transaction_index INTEGER NOT NULL, - block_hash CHAR(64) NOT NULL -); - -CREATE INDEX idx_block_hash ON transaction_hashes (block_hash); diff --git a/substrate/frame/revive/rpc/revive_chain.metadata b/substrate/frame/revive/rpc/revive_chain.metadata index ff365892a265e1fd9b59f6811ea1c59642b65d91..89476924cf0079c20e9f4542ba4a21eba517f0d4 100644 Binary files a/substrate/frame/revive/rpc/revive_chain.metadata and b/substrate/frame/revive/rpc/revive_chain.metadata differ diff --git a/substrate/frame/revive/rpc/src/block_info_provider.rs b/substrate/frame/revive/rpc/src/block_info_provider.rs index 0e91869cddaa24569fd356cf192a14af9745eb9e..a8b54907ca37c58931b13c96944bfdbfcee3e81f 100644 --- a/substrate/frame/revive/rpc/src/block_info_provider.rs +++ b/substrate/frame/revive/rpc/src/block_info_provider.rs @@ -38,6 +38,11 @@ pub trait BlockInfoProvider: Send + Sync { /// Return the latest ingested block. async fn latest_block(&self) -> Option<Arc<SubstrateBlock>>; + /// Return the latest block number + async fn latest_block_number(&self) -> Option<SubstrateBlockNumber> { + return self.latest_block().await.map(|block| block.number()); + } + /// Get block by block_number. async fn block_by_number( &self, @@ -69,30 +74,23 @@ impl BlockInfoProviderImpl { ) -> Self { Self { api, rpc, cache: Arc::new(RwLock::new(BlockCache::new(cache_size))) } } - - async fn cache(&self) -> tokio::sync::RwLockReadGuard<'_, BlockCache<SubstrateBlock>> { - self.cache.read().await - } } #[async_trait] impl BlockInfoProvider for BlockInfoProviderImpl { async fn cache_block(&self, block: SubstrateBlock) -> Option<H256> { - let mut cache = self.cache.write().await; - cache.insert(block) + self.cache.write().await.insert(block) } async fn latest_block(&self) -> Option<Arc<SubstrateBlock>> { - let cache = self.cache().await; - cache.buffer.back().cloned() + self.cache.read().await.buffer.back().cloned() } async fn block_by_number( &self, block_number: SubstrateBlockNumber, ) -> Result<Option<Arc<SubstrateBlock>>, ClientError> { - let cache = self.cache().await; - if let Some(block) = cache.blocks_by_number.get(&block_number).cloned() { + if let Some(block) = self.cache.read().await.blocks_by_number.get(&block_number).cloned() { return Ok(Some(block)); } @@ -104,8 +102,7 @@ impl BlockInfoProvider for BlockInfoProviderImpl { } async fn block_by_hash(&self, hash: &H256) -> Result<Option<Arc<SubstrateBlock>>, ClientError> { - let cache = self.cache().await; - if let Some(block) = cache.blocks_by_hash.get(hash).cloned() { + if let Some(block) = self.cache.read().await.blocks_by_hash.get(hash).cloned() { return Ok(Some(block)); } @@ -233,6 +230,10 @@ pub mod test { None } + async fn latest_block_number(&self) -> Option<SubstrateBlockNumber> { + Some(2u32) + } + async fn block_by_number( &self, _block_number: SubstrateBlockNumber, diff --git a/substrate/frame/revive/rpc/src/cli.rs b/substrate/frame/revive/rpc/src/cli.rs index b6c57d2c3b0bfcb50f024aee5521d9b1edf4d1c2..e40f3b1d053ce6b782db7ec0699e10c135a7a8e8 100644 --- a/substrate/frame/revive/rpc/src/cli.rs +++ b/substrate/frame/revive/rpc/src/cli.rs @@ -16,9 +16,9 @@ // limitations under the License. //! The Ethereum JSON-RPC server. use crate::{ - client::{connect, Client}, + client::{connect, native_to_eth_ratio, Client, SubscriptionType, SubstrateBlockNumber}, BlockInfoProvider, BlockInfoProviderImpl, CacheReceiptProvider, DBReceiptProvider, - EthRpcServer, EthRpcServerImpl, ReceiptProvider, SystemHealthRpcServer, + EthRpcServer, EthRpcServerImpl, ReceiptExtractor, ReceiptProvider, SystemHealthRpcServer, SystemHealthRpcServerImpl, LOG_TARGET, }; use clap::Parser; @@ -55,10 +55,9 @@ pub struct CliCommand { #[clap(long, env = "DATABASE_URL")] pub database_url: Option<String>, - /// If true, we will only read from the database and not write to it. - /// Only useful if `--database-url` is specified. - #[clap(long, default_value = "true")] - pub database_read_only: bool, + /// If not provided, only new blocks will be indexed + #[clap(long)] + pub index_until_block: Option<SubstrateBlockNumber>, #[allow(missing_docs)] #[clap(flatten)] @@ -94,6 +93,51 @@ fn init_logger(params: &SharedParams) -> anyhow::Result<()> { Ok(()) } +fn build_client( + tokio_handle: &tokio::runtime::Handle, + cache_size: usize, + node_rpc_url: &str, + database_url: Option<&str>, + abort_signal: Signals, +) -> anyhow::Result<Client> { + let fut = async { + let (api, rpc_client, rpc) = connect(node_rpc_url).await?; + let block_provider: Arc<dyn BlockInfoProvider> = + Arc::new(BlockInfoProviderImpl::new(cache_size, api.clone(), rpc.clone())); + + let receipt_extractor = ReceiptExtractor::new(native_to_eth_ratio(&api).await?); + let receipt_provider: Arc<dyn ReceiptProvider> = if let Some(database_url) = database_url { + log::info!(target: LOG_TARGET, "🔗 Connecting to provided database"); + Arc::new(( + CacheReceiptProvider::default(), + DBReceiptProvider::new( + database_url, + block_provider.clone(), + receipt_extractor.clone(), + ) + .await?, + )) + } else { + log::info!(target: LOG_TARGET, "🔌 No database provided, using in-memory cache"); + Arc::new(CacheReceiptProvider::default()) + }; + + let client = + Client::new(api, rpc_client, rpc, block_provider, receipt_provider, receipt_extractor) + .await?; + + Ok(client) + } + .fuse(); + pin_mut!(fut); + + match tokio_handle.block_on(abort_signal.try_until_signal(fut)) { + Ok(Ok(client)) => Ok(client), + Ok(Err(err)) => Err(err), + Err(_) => anyhow::bail!("Process interrupted"), + } +} + /// Start the JSON-RPC server using the given command line arguments. pub fn run(cmd: CliCommand) -> anyhow::Result<()> { let CliCommand { @@ -102,7 +146,7 @@ pub fn run(cmd: CliCommand) -> anyhow::Result<()> { node_rpc_url, cache_size, database_url, - database_read_only, + index_until_block, shared_params, .. } = cmd; @@ -138,48 +182,14 @@ pub fn run(cmd: CliCommand) -> anyhow::Result<()> { let tokio_runtime = sc_cli::build_runtime()?; let tokio_handle = tokio_runtime.handle(); let mut task_manager = TaskManager::new(tokio_handle.clone(), prometheus_registry)?; - let essential_spawn_handle = task_manager.spawn_essential_handle(); - - let gen_rpc_module = || { - let signals = tokio_runtime.block_on(async { Signals::capture() })?; - let fut = async { - let (api, rpc_client, rpc) = connect(&node_rpc_url).await?; - let block_provider: Arc<dyn BlockInfoProvider> = - Arc::new(BlockInfoProviderImpl::new(cache_size, api.clone(), rpc.clone())); - let receipt_provider: Arc<dyn ReceiptProvider> = - if let Some(database_url) = database_url.as_ref() { - log::info!(target: LOG_TARGET, "🔗 Connecting to provided database"); - Arc::new(( - CacheReceiptProvider::default(), - DBReceiptProvider::new( - database_url, - database_read_only, - block_provider.clone(), - ) - .await?, - )) - } else { - log::info!(target: LOG_TARGET, "🔌 No database provided, using in-memory cache"); - Arc::new(CacheReceiptProvider::default()) - }; - - let client = - Client::new(api, rpc_client, rpc, block_provider, receipt_provider).await?; - client.subscribe_and_cache_blocks(&essential_spawn_handle); - Ok::<_, crate::ClientError>(client) - } - .fuse(); - pin_mut!(fut); - - match tokio_handle.block_on(signals.try_until_signal(fut)) { - Ok(Ok(client)) => rpc_module(is_dev, client), - Ok(Err(err)) => { - log::error!("Error initializing: {err:?}"); - Err(sc_service::Error::Application(err.into())) - }, - Err(_) => Err(sc_service::Error::Application("Client connection interrupted".into())), - } - }; + + let client = build_client( + tokio_handle, + cache_size, + &node_rpc_url, + database_url.as_deref(), + tokio_runtime.block_on(async { Signals::capture() })?, + )?; // Prometheus metrics. if let Some(PrometheusConfig { port, registry }) = prometheus_config.clone() { @@ -190,8 +200,25 @@ pub fn run(cmd: CliCommand) -> anyhow::Result<()> { ); } - let rpc_server_handle = - start_rpc_servers(&rpc_config, prometheus_registry, tokio_handle, gen_rpc_module, None)?; + let rpc_server_handle = start_rpc_servers( + &rpc_config, + prometheus_registry, + tokio_handle, + || rpc_module(is_dev, client.clone()), + None, + )?; + + task_manager + .spawn_essential_handle() + .spawn("block-subscription", None, async move { + let fut1 = client.subscribe_and_cache_new_blocks(SubscriptionType::BestBlocks); + if let Some(index_until_block) = index_until_block { + let fut2 = client.cache_old_blocks(index_until_block); + tokio::join!(fut1, fut2); + } else { + fut1.await; + } + }); task_manager.keep_alive(rpc_server_handle); let signals = tokio_runtime.block_on(async { Signals::capture() })?; diff --git a/substrate/frame/revive/rpc/src/client.rs b/substrate/frame/revive/rpc/src/client.rs index 47e439f068513f9ef5184bd40fcc57ffbdc11d46..ae5311deb8e02ab1c7476faefa216e4f1d37b6d5 100644 --- a/substrate/frame/revive/rpc/src/client.rs +++ b/substrate/frame/revive/rpc/src/client.rs @@ -17,18 +17,17 @@ //! The client connects to the source substrate chain //! and is used by the rpc server to query and send transactions to the substrate chain. use crate::{ - extract_receipts_from_block, subxt_client::{ revive::calls::types::EthTransact, runtime_types::pallet_revive::storage::ContractInfo, }, - BlockInfoProvider, ReceiptProvider, TransactionInfo, LOG_TARGET, + BlockInfoProvider, ReceiptExtractor, ReceiptProvider, TransactionInfo, LOG_TARGET, }; use jsonrpsee::types::{error::CALL_EXECUTION_FAILED_CODE, ErrorObjectOwned}; use pallet_revive::{ evm::{ - extract_revert_message, Block, BlockNumberOrTag, BlockNumberOrTagOrHash, - GenericTransaction, ReceiptInfo, SyncingProgress, SyncingStatus, TransactionSigned, H160, - H256, U256, + extract_revert_message, Block, BlockNumberOrTag, BlockNumberOrTagOrHash, Filter, + GenericTransaction, Log, ReceiptInfo, SyncingProgress, SyncingStatus, TransactionSigned, + H160, H256, U256, }, EthTransactError, EthTransactInfo, }; @@ -48,7 +47,7 @@ use subxt::{ Config, OnlineClient, }; use thiserror::Error; -use tokio::{sync::RwLock, try_join}; +use tokio::sync::RwLock; use crate::subxt_client::{self, SrcChainConfig}; @@ -133,6 +132,9 @@ pub enum ClientError { /// The cache is empty. #[error("cache is empty")] CacheEmpty, + /// Failed to filter logs. + #[error("Failed to filter logs")] + LogFilterFailed(#[from] anyhow::Error), } const REVERT_CODE: i32 = 3; @@ -170,6 +172,7 @@ pub struct Client { rpc: LegacyRpcMethods<SrcChainConfig>, receipt_provider: Arc<dyn ReceiptProvider>, block_provider: Arc<dyn BlockInfoProvider>, + receipt_extractor: ReceiptExtractor, chain_id: u64, max_block_weight: Weight, } @@ -180,6 +183,12 @@ async fn chain_id(api: &OnlineClient<SrcChainConfig>) -> Result<u64, ClientError api.constants().at(&query).map_err(|err| err.into()) } +/// Fetch the native_to_eth_ratio +pub async fn native_to_eth_ratio(api: &OnlineClient<SrcChainConfig>) -> Result<u32, ClientError> { + let query = subxt_client::constants().revive().native_to_eth_ratio(); + api.constants().at(&query).map_err(|err| err.into()) +} + /// Fetch the max block weight from the substrate chain. async fn max_block_weight(api: &OnlineClient<SrcChainConfig>) -> Result<Weight, ClientError> { let query = subxt_client::constants().system().block_weights(); @@ -206,12 +215,12 @@ pub async fn connect( (OnlineClient<SrcChainConfig>, ReconnectingRpcClient, LegacyRpcMethods<SrcChainConfig>), ClientError, > { - log::info!(target: LOG_TARGET, "Connecting to node at: {node_rpc_url} ..."); + log::info!(target: LOG_TARGET, "🌠Connecting to node at: {node_rpc_url} ..."); let rpc_client = ReconnectingRpcClient::builder() .retry_policy(ExponentialBackoff::from_millis(100).max_delay(Duration::from_secs(10))) .build(node_rpc_url.to_string()) .await?; - log::info!(target: LOG_TARGET, "Connected to node at: {node_rpc_url}"); + log::info!(target: LOG_TARGET, "🌟 Connected to node at: {node_rpc_url}"); let api = OnlineClient::<SrcChainConfig>::from_rpc_client(rpc_client.clone()).await?; let rpc = LegacyRpcMethods::<SrcChainConfig>::new(RpcClient::new(rpc_client.clone())); @@ -226,6 +235,7 @@ impl Client { rpc: LegacyRpcMethods<SrcChainConfig>, block_provider: Arc<dyn BlockInfoProvider>, receipt_provider: Arc<dyn ReceiptProvider>, + receipt_extractor: ReceiptExtractor, ) -> Result<Self, ClientError> { let (chain_id, max_block_weight) = tokio::try_join!(chain_id(&api), max_block_weight(&api))?; @@ -236,6 +246,7 @@ impl Client { rpc, receipt_provider, block_provider, + receipt_extractor, chain_id, max_block_weight, }) @@ -251,18 +262,18 @@ impl Client { F: Fn(SubstrateBlock) -> Fut + Send + Sync, Fut: std::future::Future<Output = Result<ControlFlow<()>, ClientError>> + Send, { - log::info!(target: LOG_TARGET, "Subscribing to past blocks"); + log::info!(target: LOG_TARGET, "🔠Subscribing to past blocks"); let mut block = self.api.blocks().at_latest().await.inspect_err(|err| { log::error!(target: LOG_TARGET, "Failed to fetch latest block: {err:?}"); })?; loop { let block_number = block.number(); - log::debug!(target: LOG_TARGET, "Processing block {block_number}"); + log::trace!(target: LOG_TARGET, "Processing past block #{block_number}"); let parent_hash = block.header().parent_hash; let control_flow = callback(block).await.inspect_err(|err| { - log::error!(target: LOG_TARGET, "Failed to process block {block_number}: {err:?}"); + log::error!(target: LOG_TARGET, "Failed to process past block #{block_number}: {err:?}"); })?; match control_flow { @@ -294,7 +305,7 @@ impl Client { F: Fn(SubstrateBlock) -> Fut + Send + Sync, Fut: std::future::Future<Output = Result<(), ClientError>> + Send, { - log::info!(target: LOG_TARGET, "Subscribing to new blocks"); + log::info!(target: LOG_TARGET, "🔠Subscribing to new blocks"); let mut block_stream = match subscription_type { SubscriptionType::BestBlocks => self.api.blocks().subscribe_best().await, SubscriptionType::FinalizedBlocks => self.api.blocks().subscribe_finalized().await, @@ -320,7 +331,7 @@ impl Client { }, }; - log::debug!(target: LOG_TARGET, "Pushing block: {}", block.number()); + log::trace!(target: LOG_TARGET, "Pushing block: {}", block.number()); if let Err(err) = callback(block).await { log::error!(target: LOG_TARGET, "Failed to process block: {err:?}"); } @@ -331,55 +342,42 @@ impl Client { } /// Start the block subscription, and populate the block cache. - pub fn subscribe_and_cache_blocks(&self, spawn_handle: &sc_service::SpawnEssentialTaskHandle) { - let client = self.clone(); - spawn_handle.spawn("subscribe-blocks", None, async move { - let res = client - .subscribe_new_blocks(SubscriptionType::BestBlocks, |block| async { - let receipts = extract_receipts_from_block(&block).await?; - - client.receipt_provider.insert(&block.hash(), &receipts).await; - if let Some(pruned) = client.block_provider.cache_block(block).await { - client.receipt_provider.remove(&pruned).await; - } - - Ok(()) - }) - .await; + pub async fn subscribe_and_cache_new_blocks(&self, subscription_type: SubscriptionType) { + let res = self + .subscribe_new_blocks(subscription_type, |block| async { + let receipts = self.receipt_extractor.extract_from_block(&block).await?; - if let Err(err) = res { - log::error!(target: LOG_TARGET, "Block subscription error: {err:?}"); - } - }); - } - - /// Start the block subscription, and populate the block cache. - pub async fn subscribe_and_cache_receipts( - &self, - oldest_block: Option<SubstrateBlockNumber>, - ) -> Result<(), ClientError> { - let new_blocks_fut = - self.subscribe_new_blocks(SubscriptionType::FinalizedBlocks, |block| async move { - let receipts = extract_receipts_from_block(&block).await.inspect_err(|err| { - log::error!(target: LOG_TARGET, "Failed to extract receipts from block: {err:?}"); - })?; self.receipt_provider.insert(&block.hash(), &receipts).await; + if let Some(pruned) = self.block_provider.cache_block(block).await { + self.receipt_provider.remove(&pruned).await; + } + Ok(()) - }); + }) + .await; - let Some(oldest_block) = oldest_block else { return new_blocks_fut.await }; + if let Err(err) = res { + log::error!(target: LOG_TARGET, "Block subscription error: {err:?}"); + } + } - let old_blocks_fut = self.subscribe_past_blocks(|block| async move { - let receipts = extract_receipts_from_block(&block).await?; - self.receipt_provider.insert(&block.hash(), &receipts).await; - if block.number() == oldest_block { - Ok(ControlFlow::Break(())) - } else { - Ok(ControlFlow::Continue(())) - } - }); + /// Cache old blocks up to the given block number. + pub async fn cache_old_blocks(&self, oldest_block: SubstrateBlockNumber) { + let res = self + .subscribe_past_blocks(|block| async move { + let receipts = self.receipt_extractor.extract_from_block(&block).await?; + self.receipt_provider.archive(&block.hash(), &receipts).await; + if block.number() <= oldest_block { + Ok(ControlFlow::Break(())) + } else { + Ok(ControlFlow::Continue(())) + } + }) + .await; - try_join!(new_blocks_fut, old_blocks_fut).map(|_| ()) + if let Err(err) = res { + log::error!(target: LOG_TARGET, "Past Block subscription error: {err:?}"); + } } /// Expose the storage API. @@ -481,7 +479,7 @@ impl Client { pub async fn receipt_by_hash_and_index( &self, block_hash: &H256, - transaction_index: &U256, + transaction_index: usize, ) -> Option<ReceiptInfo> { self.receipt_provider .receipt_by_block_hash_and_index(block_hash, transaction_index) @@ -641,6 +639,13 @@ impl Client { self.block_provider.block_by_number(block_number).await } + pub async fn gas_price(&self, at: &BlockNumberOrTagOrHash) -> Result<U256, ClientError> { + let runtime_api = self.runtime_api(at).await?; + let payload = subxt_client::apis().revive_api().gas_price(); + let gas_price = runtime_api.call(payload).await?; + Ok(*gas_price) + } + /// Get the EVM block for the given hash. pub async fn evm_block( &self, @@ -658,7 +663,7 @@ impl Client { let state_root = header.state_root.0.into(); let extrinsics_root = header.extrinsics_root.0.into(); - let receipts = extract_receipts_from_block(&block).await.unwrap_or_default(); + let receipts = self.receipt_extractor.extract_from_block(&block).await.unwrap_or_default(); let gas_used = receipts.iter().fold(U256::zero(), |acc, (_, receipt)| acc + receipt.gas_used); let transactions = if hydrated_transactions { @@ -683,7 +688,7 @@ impl Client { number: header.number.into(), timestamp: timestamp.into(), difficulty: Some(0u32.into()), - base_fee_per_gas: Some(crate::GAS_PRICE.into()), + base_fee_per_gas: self.gas_price(&block.hash().into()).await.ok(), gas_limit, gas_used, receipts_root: extrinsics_root, @@ -710,4 +715,11 @@ impl Client { pub fn max_block_weight(&self) -> Weight { self.max_block_weight } + + /// Get the logs matching the given filter. + pub async fn logs(&self, filter: Option<Filter>) -> Result<Vec<Log>, ClientError> { + let logs = + self.receipt_provider.logs(filter).await.map_err(ClientError::LogFilterFailed)?; + Ok(logs) + } } diff --git a/substrate/frame/revive/rpc/src/eth-indexer.rs b/substrate/frame/revive/rpc/src/eth-indexer.rs deleted file mode 100644 index 894143be0a525a581a32301dc12070b3bbc9143b..0000000000000000000000000000000000000000 --- a/substrate/frame/revive/rpc/src/eth-indexer.rs +++ /dev/null @@ -1,88 +0,0 @@ -// This file is part of Substrate. - -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -//! The Ethereum JSON-RPC server. -use clap::Parser; -use pallet_revive_eth_rpc::{ - client::{connect, Client, SubstrateBlockNumber}, - BlockInfoProvider, BlockInfoProviderImpl, DBReceiptProvider, ReceiptProvider, -}; -use sc_cli::SharedParams; -use std::sync::Arc; - -// Parsed command instructions from the command line -#[derive(Parser, Debug)] -#[clap(author, about, version)] -pub struct CliCommand { - /// The node url to connect to - #[clap(long, default_value = "ws://127.0.0.1:9944")] - pub node_rpc_url: String, - - /// Specifies the block number to start indexing from, going backwards from the current block. - /// If not provided, only new blocks will be indexed - #[clap(long)] - pub oldest_block: Option<SubstrateBlockNumber>, - - /// The database used to store Ethereum transaction hashes. - #[clap(long, env = "DATABASE_URL")] - pub database_url: String, - - #[allow(missing_docs)] - #[clap(flatten)] - pub shared_params: SharedParams, -} - -/// Initialize the logger -#[cfg(not(test))] -fn init_logger(params: &SharedParams) -> anyhow::Result<()> { - let mut logger = sc_cli::LoggerBuilder::new(params.log_filters().join(",")); - logger - .with_log_reloading(params.enable_log_reloading) - .with_detailed_output(params.detailed_log_output); - - if let Some(tracing_targets) = ¶ms.tracing_targets { - let tracing_receiver = params.tracing_receiver.into(); - logger.with_profiling(tracing_receiver, tracing_targets); - } - - if params.disable_log_color { - logger.with_colors(false); - } - - logger.init()?; - Ok(()) -} - -#[tokio::main] -pub async fn main() -> anyhow::Result<()> { - let CliCommand { - node_rpc_url, database_url, shared_params: _shared_params, oldest_block, .. - } = CliCommand::parse(); - - #[cfg(not(test))] - init_logger(&_shared_params)?; - - let (api, rpc_client, rpc) = connect(&node_rpc_url).await?; - let block_provider: Arc<dyn BlockInfoProvider> = - Arc::new(BlockInfoProviderImpl::new(0, api.clone(), rpc.clone())); - let receipt_provider: Arc<dyn ReceiptProvider> = - Arc::new(DBReceiptProvider::new(&database_url, false, block_provider.clone()).await?); - - let client = Client::new(api, rpc_client, rpc, block_provider, receipt_provider).await?; - client.subscribe_and_cache_receipts(oldest_block).await?; - - Ok(()) -} diff --git a/substrate/frame/revive/rpc/src/eth-rpc-tester.rs b/substrate/frame/revive/rpc/src/eth-rpc-tester.rs index 0ddad6874dfd5b188508d59a4dacf31ee40f85ca..460812602fe20ab20cfe39fc8b389ca33e53d0f5 100644 --- a/substrate/frame/revive/rpc/src/eth-rpc-tester.rs +++ b/substrate/frame/revive/rpc/src/eth-rpc-tester.rs @@ -17,10 +17,8 @@ use clap::Parser; use jsonrpsee::http_client::HttpClientBuilder; use pallet_revive::evm::{Account, BlockTag, ReceiptInfo}; -use pallet_revive_eth_rpc::{ - example::{wait_for_receipt, TransactionBuilder}, - EthRpcClient, -}; +use pallet_revive_eth_rpc::{example::TransactionBuilder, EthRpcClient}; +use std::sync::Arc; use tokio::{ io::{AsyncBufReadExt, BufReader}, process::{Child, ChildStderr, Command}, @@ -32,6 +30,10 @@ const DOCKER_CONTAINER_NAME: &str = "eth-rpc-test"; #[derive(Parser, Debug)] #[clap(author, about, version)] pub struct CliCommand { + /// The eth-rpc url to connect to + #[clap(long, default_value = "http://127.0.0.1:8545")] + pub rpc_url: String, + /// The parity docker image e.g eth-rpc:master-fb2e414f #[clap(long, default_value = "eth-rpc:master-fb2e414f")] docker_image: String, @@ -44,7 +46,11 @@ pub struct CliCommand { #[tokio::main] async fn main() -> anyhow::Result<()> { - let CliCommand { docker_bin, docker_image, .. } = CliCommand::parse(); + let CliCommand { docker_bin, rpc_url, docker_image, .. } = CliCommand::parse(); + + if std::env::var("SKIP_DOCKER").is_ok() { + return test_eth_rpc(&rpc_url).await; + } let mut docker_process = start_docker(&docker_bin, &docker_image)?; let stderr = docker_process.stderr.take().unwrap(); @@ -56,7 +62,7 @@ async fn main() -> anyhow::Result<()> { _ = interrupt() => { kill_docker().await?; } - _ = test_eth_rpc(stderr) => { + _ = wait_and_test_eth_rpc(stderr, &rpc_url) => { kill_docker().await?; } } @@ -103,7 +109,7 @@ async fn kill_docker() -> anyhow::Result<()> { Ok(()) } -async fn test_eth_rpc(stderr: ChildStderr) -> anyhow::Result<()> { +async fn wait_and_test_eth_rpc(stderr: ChildStderr, rpc_url: &str) -> anyhow::Result<()> { let mut reader = BufReader::new(stderr).lines(); while let Some(line) = reader.next_line().await? { println!("{line}"); @@ -112,6 +118,10 @@ async fn test_eth_rpc(stderr: ChildStderr) -> anyhow::Result<()> { } } + test_eth_rpc(rpc_url).await +} + +async fn test_eth_rpc(rpc_url: &str) -> anyhow::Result<()> { let account = Account::default(); let data = vec![]; let (bytes, _) = pallet_revive_fixtures::compile_module("dummy")?; @@ -119,7 +129,7 @@ async fn test_eth_rpc(stderr: ChildStderr) -> anyhow::Result<()> { println!("Account:"); println!("- address: {:?}", account.address()); - let client = HttpClientBuilder::default().build("http://localhost:8545")?; + let client = Arc::new(HttpClientBuilder::default().build(rpc_url)?); let nonce = client.get_transaction_count(account.address(), BlockTag::Latest.into()).await?; let balance = client.get_balance(account.address(), BlockTag::Latest.into()).await?; @@ -127,31 +137,31 @@ async fn test_eth_rpc(stderr: ChildStderr) -> anyhow::Result<()> { println!("- balance: {balance:?}"); println!("\n\n=== Deploying dummy contract ===\n\n"); - let hash = TransactionBuilder::default().input(input).send(&client).await?; + let tx = TransactionBuilder::new(&client).input(input).send().await?; - println!("Hash: {hash:?}"); + println!("Hash: {:?}", tx.hash()); println!("Waiting for receipt..."); let ReceiptInfo { block_number, gas_used, contract_address, .. } = - wait_for_receipt(&client, hash).await?; + tx.wait_for_receipt().await?; let contract_address = contract_address.unwrap(); println!("\nReceipt:"); - println!("Block explorer: https://westend-asset-hub-eth-explorer.parity.io/{hash:?}"); + println!("Block explorer: https://westend-asset-hub-eth-explorer.parity.io/{:?}", tx.hash()); println!("- Block number: {block_number}"); - println!("- Gas used: {gas_used}"); - println!("- Address: {contract_address:?}"); + println!("- Gas used: {gas_used}"); + println!("- Address: {contract_address:?}"); println!("\n\n=== Calling dummy contract ===\n\n"); - let hash = TransactionBuilder::default().to(contract_address).send(&client).await?; + let tx = TransactionBuilder::new(&client).to(contract_address).send().await?; - println!("Hash: {hash:?}"); + println!("Hash: {:?}", tx.hash()); println!("Waiting for receipt..."); - let ReceiptInfo { block_number, gas_used, to, .. } = wait_for_receipt(&client, hash).await?; + let ReceiptInfo { block_number, gas_used, to, .. } = tx.wait_for_receipt().await?; println!("\nReceipt:"); - println!("Block explorer: https://westend-asset-hub-eth-explorer.parity.io/{hash:?}"); + println!("Block explorer: https://westend-asset-hub-eth-explorer.parity.io/{:?}", tx.hash()); println!("- Block number: {block_number}"); - println!("- Gas used: {gas_used}"); - println!("- To: {to:?}"); + println!("- Gas used: {gas_used}"); + println!("- To: {to:?}"); Ok(()) } diff --git a/substrate/frame/revive/rpc/src/example.rs b/substrate/frame/revive/rpc/src/example.rs index aad5b4fbc344d511088d0a73ee99fab3de042749..c8c633a4e982c8c51396dc10961247a49034ab2b 100644 --- a/substrate/frame/revive/rpc/src/example.rs +++ b/substrate/frame/revive/rpc/src/example.rs @@ -20,38 +20,11 @@ use anyhow::Context; use pallet_revive::evm::{ Account, BlockTag, Bytes, GenericTransaction, TransactionLegacyUnsigned, H160, H256, U256, }; - -/// Wait for a transaction receipt. -pub async fn wait_for_receipt( - client: &(impl EthRpcClient + Send + Sync), - hash: H256, -) -> anyhow::Result<ReceiptInfo> { - for _ in 0..30 { - tokio::time::sleep(std::time::Duration::from_secs(2)).await; - let receipt = client.get_transaction_receipt(hash).await?; - if let Some(receipt) = receipt { - return Ok(receipt) - } - } - - anyhow::bail!("Failed to get receipt") -} - -/// Wait for a successful transaction receipt. -pub async fn wait_for_successful_receipt( - client: &(impl EthRpcClient + Send + Sync), - hash: H256, -) -> anyhow::Result<ReceiptInfo> { - let receipt = wait_for_receipt(client, hash).await?; - if receipt.is_success() { - Ok(receipt) - } else { - anyhow::bail!("Transaction failed") - } -} +use std::sync::Arc; /// Transaction builder. -pub struct TransactionBuilder { +pub struct TransactionBuilder<Client: EthRpcClient + Sync + Send> { + client: Arc<Client>, signer: Account, value: U256, input: Bytes, @@ -59,9 +32,51 @@ pub struct TransactionBuilder { mutate: Box<dyn FnOnce(&mut TransactionLegacyUnsigned)>, } -impl Default for TransactionBuilder { - fn default() -> Self { +#[derive(Debug)] +pub struct SubmittedTransaction<Client: EthRpcClient + Sync + Send> { + tx: GenericTransaction, + hash: H256, + client: Arc<Client>, +} + +impl<Client: EthRpcClient + Sync + Send> SubmittedTransaction<Client> { + /// Get the hash of the transaction. + pub fn hash(&self) -> H256 { + self.hash + } + + /// The gas sent with the transaction. + pub fn gas(&self) -> U256 { + self.tx.gas.unwrap() + } + + /// Wait for the receipt of the transaction. + pub async fn wait_for_receipt(&self) -> anyhow::Result<ReceiptInfo> { + let hash = self.hash(); + for _ in 0..30 { + tokio::time::sleep(std::time::Duration::from_secs(2)).await; + let receipt = self.client.get_transaction_receipt(hash).await?; + if let Some(receipt) = receipt { + if receipt.is_success() { + assert!( + self.gas() > receipt.gas_used, + "Gas used should be less than gas estimated." + ); + return Ok(receipt) + } else { + anyhow::bail!("Transaction failed") + } + } + } + + anyhow::bail!("Timeout, failed to get receipt") + } +} + +impl<Client: EthRpcClient + Send + Sync> TransactionBuilder<Client> { + pub fn new(client: &Arc<Client>) -> Self { Self { + client: Arc::clone(client), signer: Account::default(), value: U256::zero(), input: Bytes::default(), @@ -69,9 +84,6 @@ impl Default for TransactionBuilder { mutate: Box::new(|_| {}), } } -} - -impl TransactionBuilder { /// Set the signer. pub fn signer(mut self, signer: Account) -> Self { self.signer = signer; @@ -103,11 +115,8 @@ impl TransactionBuilder { } /// Call eth_call to get the result of a view function - pub async fn eth_call( - self, - client: &(impl EthRpcClient + Send + Sync), - ) -> anyhow::Result<Vec<u8>> { - let TransactionBuilder { signer, value, input, to, .. } = self; + pub async fn eth_call(self) -> anyhow::Result<Vec<u8>> { + let TransactionBuilder { client, signer, value, input, to, .. } = self; let from = signer.address(); let result = client @@ -127,8 +136,8 @@ impl TransactionBuilder { } /// Send the transaction. - pub async fn send(self, client: &(impl EthRpcClient + Send + Sync)) -> anyhow::Result<H256> { - let TransactionBuilder { signer, value, input, to, mutate } = self; + pub async fn send(self) -> anyhow::Result<SubmittedTransaction<Client>> { + let TransactionBuilder { client, signer, value, input, to, mutate } = self; let from = signer.address(); let chain_id = Some(client.chain_id().await?); @@ -153,6 +162,7 @@ impl TransactionBuilder { .await .with_context(|| "Failed to fetch gas estimate")?; + println!("Gas estimate: {gas:?}"); let mut unsigned_tx = TransactionLegacyUnsigned { gas, nonce, @@ -166,23 +176,18 @@ impl TransactionBuilder { mutate(&mut unsigned_tx); - let tx = signer.sign_transaction(unsigned_tx.into()); - let bytes = tx.signed_payload(); + let signed_tx = signer.sign_transaction(unsigned_tx.into()); + let bytes = signed_tx.signed_payload(); let hash = client .send_raw_transaction(bytes.into()) .await .with_context(|| "transaction failed")?; - Ok(hash) - } - - /// Send the transaction and wait for the receipt. - pub async fn send_and_wait_for_receipt( - self, - client: &(impl EthRpcClient + Send + Sync), - ) -> anyhow::Result<ReceiptInfo> { - let hash = self.send(client).await?; - wait_for_successful_receipt(client, hash).await + Ok(SubmittedTransaction { + tx: GenericTransaction::from_signed(signed_tx, Some(from)), + hash, + client, + }) } } diff --git a/substrate/frame/revive/rpc/src/lib.rs b/substrate/frame/revive/rpc/src/lib.rs index fcf93fa6c0d2e3dba86d079e6639a5cdd0942941..0a153afa6ddf24a95656710e787d9200f098c5c5 100644 --- a/substrate/frame/revive/rpc/src/lib.rs +++ b/substrate/frame/revive/rpc/src/lib.rs @@ -17,7 +17,6 @@ //! The [`EthRpcServer`] RPC server implementation #![cfg_attr(docsrs, feature(doc_cfg))] -use crate::runtime::GAS_PRICE; use client::ClientError; use jsonrpsee::{ core::{async_trait, RpcResult}, @@ -42,6 +41,9 @@ pub use block_info_provider::*; mod receipt_provider; pub use receipt_provider::*; +mod receipt_extractor; +pub use receipt_extractor::*; + mod rpc_health; pub use rpc_health::*; @@ -229,12 +231,13 @@ impl EthRpcServer for EthRpcServerImpl { } async fn gas_price(&self) -> RpcResult<U256> { - Ok(U256::from(GAS_PRICE)) + Ok(self.client.gas_price(&BlockTag::Latest.into()).await?) } async fn max_priority_fee_per_gas(&self) -> RpcResult<U256> { // TODO: Provide better estimation - Ok(U256::from(Permill::from_percent(20).mul_ceil(GAS_PRICE))) + let gas_price = self.gas_price().await?; + Ok(Permill::from_percent(20).mul_ceil(gas_price)) } async fn get_code(&self, address: H160, block: BlockNumberOrTagOrHash) -> RpcResult<Bytes> { @@ -248,10 +251,10 @@ impl EthRpcServer for EthRpcServerImpl { async fn get_block_by_number( &self, - block: BlockNumberOrTag, + block_number: BlockNumberOrTag, hydrated_transactions: bool, ) -> RpcResult<Option<Block>> { - let Some(block) = self.client.block_by_number_or_tag(&block).await? else { + let Some(block) = self.client.block_by_number_or_tag(&block_number).await? else { return Ok(None); }; let block = self.client.evm_block(block, hydrated_transactions).await; @@ -284,6 +287,11 @@ impl EthRpcServer for EthRpcServerImpl { Ok(self.client.receipts_count_per_block(&block.hash).await.map(U256::from)) } + async fn get_logs(&self, filter: Option<Filter>) -> RpcResult<FilterResults> { + let logs = self.client.logs(filter).await?; + Ok(FilterResults::Logs(logs)) + } + async fn get_storage_at( &self, address: H160, @@ -299,8 +307,10 @@ impl EthRpcServer for EthRpcServerImpl { block_hash: H256, transaction_index: U256, ) -> RpcResult<Option<TransactionInfo>> { - let Some(receipt) = - self.client.receipt_by_hash_and_index(&block_hash, &transaction_index).await + let Some(receipt) = self + .client + .receipt_by_hash_and_index(&block_hash, transaction_index.as_usize()) + .await else { return Ok(None); }; diff --git a/substrate/frame/revive/rpc/src/receipt_extractor.rs b/substrate/frame/revive/rpc/src/receipt_extractor.rs new file mode 100644 index 0000000000000000000000000000000000000000..6338f42ee0cc7a9e3a60097e0731811b07d412f5 --- /dev/null +++ b/substrate/frame/revive/rpc/src/receipt_extractor.rs @@ -0,0 +1,178 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::{ + client::SubstrateBlock, + subxt_client::{ + revive::{calls::types::EthTransact, events::ContractEmitted}, + system::events::ExtrinsicSuccess, + transaction_payment::events::TransactionFeePaid, + SrcChainConfig, + }, + ClientError, LOG_TARGET, +}; +use futures::{stream, StreamExt}; +use pallet_revive::{ + create1, + evm::{GenericTransaction, Log, ReceiptInfo, TransactionSigned, H256, U256}, +}; +use sp_core::keccak_256; + +/// Utility to extract receipts from extrinsics. +#[derive(Clone, Debug)] +pub struct ReceiptExtractor { + /// The native to eth decimal ratio, used to calculated gas from native fees. + native_to_eth_ratio: u32, +} + +impl ReceiptExtractor { + /// Create a new `ReceiptExtractor` with the given native to eth ratio. + pub fn new(native_to_eth_ratio: u32) -> Self { + Self { native_to_eth_ratio } + } + + /// Extract a [`TransactionSigned`] and a [`ReceiptInfo`] and from an extrinsic. + pub async fn extract_from_extrinsic( + &self, + block: &SubstrateBlock, + ext: subxt::blocks::ExtrinsicDetails<SrcChainConfig, subxt::OnlineClient<SrcChainConfig>>, + call: EthTransact, + ) -> Result<(TransactionSigned, ReceiptInfo), ClientError> { + let transaction_index = ext.index(); + let block_number = U256::from(block.number()); + let block_hash = block.hash(); + let events = ext.events().await?; + + let success = events.has::<ExtrinsicSuccess>().inspect_err(|err| { + log::debug!(target: LOG_TARGET, "Failed to lookup for ExtrinsicSuccess event in block {block_number}: {err:?}") + })?; + let tx_fees = events + .find_first::<TransactionFeePaid>()? + .ok_or(ClientError::TxFeeNotFound) + .inspect_err( + |err| log::debug!(target: LOG_TARGET, "TransactionFeePaid not found in events for block {block_number}\n{err:?}") + )?; + let transaction_hash = H256(keccak_256(&call.payload)); + + let signed_tx = + TransactionSigned::decode(&call.payload).map_err(|_| ClientError::TxDecodingFailed)?; + let from = signed_tx.recover_eth_address().map_err(|_| { + log::error!(target: LOG_TARGET, "Failed to recover eth address from signed tx"); + ClientError::RecoverEthAddressFailed + })?; + + let tx_info = GenericTransaction::from_signed(signed_tx.clone(), Some(from)); + let gas_price = tx_info.gas_price.unwrap_or_default(); + let gas_used = U256::from(tx_fees.tip.saturating_add(tx_fees.actual_fee)) + .saturating_mul(self.native_to_eth_ratio.into()) + .checked_div(gas_price) + .unwrap_or_default(); + + // get logs from ContractEmitted event + let logs = events + .iter() + .filter_map(|event_details| { + let event_details = event_details.ok()?; + let event = event_details.as_event::<ContractEmitted>().ok()??; + + Some(Log { + address: event.contract, + topics: event.topics, + data: Some(event.data.into()), + block_number, + transaction_hash, + transaction_index: transaction_index.into(), + block_hash, + log_index: event_details.index().into(), + ..Default::default() + }) + }) + .collect(); + + let contract_address = if tx_info.to.is_none() { + Some(create1( + &from, + tx_info + .nonce + .unwrap_or_default() + .try_into() + .map_err(|_| ClientError::ConversionFailed)?, + )) + } else { + None + }; + + log::debug!(target: LOG_TARGET, "Adding receipt for tx hash: {transaction_hash:?} - block: {block_number:?}"); + let receipt = ReceiptInfo::new( + block_hash, + block_number, + contract_address, + from, + logs, + tx_info.to, + gas_price, + gas_used, + success, + transaction_hash, + transaction_index.into(), + tx_info.r#type.unwrap_or_default(), + ); + Ok((signed_tx, receipt)) + } + + /// Extract receipts from block. + pub async fn extract_from_block( + &self, + block: &SubstrateBlock, + ) -> Result<Vec<(TransactionSigned, ReceiptInfo)>, ClientError> { + // Filter extrinsics from pallet_revive + let extrinsics = block.extrinsics().await.inspect_err(|err| { + log::debug!(target: LOG_TARGET, "Error fetching for #{:?} extrinsics: {err:?}", block.number()); + })?; + + let extrinsics = extrinsics.iter().flat_map(|ext| { + let call = ext.as_extrinsic::<EthTransact>().ok()??; + Some((ext, call)) + }); + + stream::iter(extrinsics) + .map(|(ext, call)| async move { self.extract_from_extrinsic(block, ext, call).await }) + .buffer_unordered(10) + .collect::<Vec<Result<_, _>>>() + .await + .into_iter() + .collect::<Result<Vec<_>, _>>() + } + + /// Extract receipt from transaction + pub async fn extract_from_transaction( + &self, + block: &SubstrateBlock, + transaction_index: usize, + ) -> Result<(TransactionSigned, ReceiptInfo), ClientError> { + let extrinsics = block.extrinsics().await?; + let ext = extrinsics + .iter() + .nth(transaction_index) + .ok_or(ClientError::EthExtrinsicNotFound)?; + + let call = ext + .as_extrinsic::<EthTransact>()? + .ok_or_else(|| ClientError::EthExtrinsicNotFound)?; + self.extract_from_extrinsic(block, ext, call).await + } +} diff --git a/substrate/frame/revive/rpc/src/receipt_provider.rs b/substrate/frame/revive/rpc/src/receipt_provider.rs index 5c102b3d3d41a8e53d0bfbf5b9a3f7a629c5f896..8f1c20005ef4a75baaf6e5115f184d7e66ca209f 100644 --- a/substrate/frame/revive/rpc/src/receipt_provider.rs +++ b/substrate/frame/revive/rpc/src/receipt_provider.rs @@ -15,23 +15,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -use crate::{ - client::SubstrateBlock, - subxt_client::{ - revive::{calls::types::EthTransact, events::ContractEmitted}, - system::events::ExtrinsicSuccess, - transaction_payment::events::TransactionFeePaid, - SrcChainConfig, - }, - ClientError, LOG_TARGET, -}; -use futures::{stream, StreamExt}; use jsonrpsee::core::async_trait; -use pallet_revive::{ - create1, - evm::{GenericTransaction, Log, ReceiptInfo, TransactionSigned, H256, U256}, -}; -use sp_core::keccak_256; +use pallet_revive::evm::{Filter, Log, ReceiptInfo, TransactionSigned, H256}; use tokio::join; mod cache; @@ -46,14 +31,20 @@ pub trait ReceiptProvider: Send + Sync { /// Insert receipts into the provider. async fn insert(&self, block_hash: &H256, receipts: &[(TransactionSigned, ReceiptInfo)]); - /// Remove receipts with the given block hash. + /// Similar to `insert`, but intended for archiving receipts from historical blocks. + async fn archive(&self, block_hash: &H256, receipts: &[(TransactionSigned, ReceiptInfo)]); + + /// Get logs that match the given filter. + async fn logs(&self, filter: Option<Filter>) -> anyhow::Result<Vec<Log>>; + + /// Deletes receipts associated with the specified block hash. async fn remove(&self, block_hash: &H256); /// Get the receipt for the given block hash and transaction index. async fn receipt_by_block_hash_and_index( &self, block_hash: &H256, - transaction_index: &U256, + transaction_index: usize, ) -> Option<ReceiptInfo>; /// Get the number of receipts per block. @@ -67,19 +58,23 @@ pub trait ReceiptProvider: Send + Sync { } #[async_trait] -impl<Main: ReceiptProvider, Fallback: ReceiptProvider> ReceiptProvider for (Main, Fallback) { +impl<Cache: ReceiptProvider, Archive: ReceiptProvider> ReceiptProvider for (Cache, Archive) { async fn insert(&self, block_hash: &H256, receipts: &[(TransactionSigned, ReceiptInfo)]) { join!(self.0.insert(block_hash, receipts), self.1.insert(block_hash, receipts)); } + async fn archive(&self, block_hash: &H256, receipts: &[(TransactionSigned, ReceiptInfo)]) { + self.1.insert(block_hash, receipts).await; + } + async fn remove(&self, block_hash: &H256) { - join!(self.0.remove(block_hash), self.1.remove(block_hash)); + self.0.remove(block_hash).await; } async fn receipt_by_block_hash_and_index( &self, block_hash: &H256, - transaction_index: &U256, + transaction_index: usize, ) -> Option<ReceiptInfo> { if let Some(receipt) = self.0.receipt_by_block_hash_and_index(block_hash, transaction_index).await @@ -110,131 +105,8 @@ impl<Main: ReceiptProvider, Fallback: ReceiptProvider> ReceiptProvider for (Main } self.1.signed_tx_by_hash(hash).await } -} -/// Extract a [`TransactionSigned`] and a [`ReceiptInfo`] and from an extrinsic. -pub async fn extract_receipt_from_extrinsic( - block: &SubstrateBlock, - ext: subxt::blocks::ExtrinsicDetails<SrcChainConfig, subxt::OnlineClient<SrcChainConfig>>, - call: EthTransact, -) -> Result<(TransactionSigned, ReceiptInfo), ClientError> { - let transaction_index = ext.index(); - let block_number = U256::from(block.number()); - let block_hash = block.hash(); - let events = ext.events().await?; - - let success = events.has::<ExtrinsicSuccess>().inspect_err(|err| { - log::debug!(target: LOG_TARGET, "Failed to lookup for ExtrinsicSuccess event in block {block_number}: {err:?}") - })?; - let tx_fees = events - .find_first::<TransactionFeePaid>()? - .ok_or(ClientError::TxFeeNotFound) - .inspect_err( - |err| log::debug!(target: LOG_TARGET, "TransactionFeePaid not found in events for block {block_number}\n{err:?}") - )?; - let transaction_hash = H256(keccak_256(&call.payload)); - - let signed_tx = - TransactionSigned::decode(&call.payload).map_err(|_| ClientError::TxDecodingFailed)?; - let from = signed_tx.recover_eth_address().map_err(|_| { - log::error!(target: LOG_TARGET, "Failed to recover eth address from signed tx"); - ClientError::RecoverEthAddressFailed - })?; - - let tx_info = GenericTransaction::from_signed(signed_tx.clone(), Some(from)); - let gas_price = tx_info.gas_price.unwrap_or_default(); - let gas_used = (tx_fees.tip.saturating_add(tx_fees.actual_fee)) - .checked_div(gas_price.as_u128()) - .unwrap_or_default(); - - // get logs from ContractEmitted event - let logs = events - .iter() - .filter_map(|event_details| { - let event_details = event_details.ok()?; - let event = event_details.as_event::<ContractEmitted>().ok()??; - - Some(Log { - address: event.contract, - topics: event.topics, - data: Some(event.data.into()), - block_number: Some(block_number), - transaction_hash, - transaction_index: Some(transaction_index.into()), - block_hash: Some(block_hash), - log_index: Some(event_details.index().into()), - ..Default::default() - }) - }) - .collect(); - - let contract_address = if tx_info.to.is_none() { - Some(create1( - &from, - tx_info - .nonce - .unwrap_or_default() - .try_into() - .map_err(|_| ClientError::ConversionFailed)?, - )) - } else { - None - }; - - log::debug!(target: LOG_TARGET, "Adding receipt for tx hash: {transaction_hash:?} - block: {block_number:?}"); - let receipt = ReceiptInfo::new( - block_hash, - block_number, - contract_address, - from, - logs, - tx_info.to, - gas_price, - gas_used.into(), - success, - transaction_hash, - transaction_index.into(), - tx_info.r#type.unwrap_or_default(), - ); - Ok((signed_tx, receipt)) -} - -/// Extract receipts from block. -pub async fn extract_receipts_from_block( - block: &SubstrateBlock, -) -> Result<Vec<(TransactionSigned, ReceiptInfo)>, ClientError> { - // Filter extrinsics from pallet_revive - let extrinsics = block.extrinsics().await.inspect_err(|err| { - log::debug!(target: LOG_TARGET, "Error fetching for #{:?} extrinsics: {err:?}", block.number()); - })?; - - let extrinsics = extrinsics.iter().flat_map(|ext| { - let call = ext.as_extrinsic::<EthTransact>().ok()??; - Some((ext, call)) - }); - - stream::iter(extrinsics) - .map(|(ext, call)| async move { extract_receipt_from_extrinsic(block, ext, call).await }) - .buffer_unordered(10) - .collect::<Vec<Result<_, _>>>() - .await - .into_iter() - .collect::<Result<Vec<_>, _>>() -} - -/// Extract receipt from transaction -pub async fn extract_receipts_from_transaction( - block: &SubstrateBlock, - transaction_index: usize, -) -> Result<(TransactionSigned, ReceiptInfo), ClientError> { - let extrinsics = block.extrinsics().await?; - let ext = extrinsics - .iter() - .nth(transaction_index) - .ok_or(ClientError::EthExtrinsicNotFound)?; - - let call = ext - .as_extrinsic::<EthTransact>()? - .ok_or_else(|| ClientError::EthExtrinsicNotFound)?; - extract_receipt_from_extrinsic(block, ext, call).await + async fn logs(&self, filter: Option<Filter>) -> anyhow::Result<Vec<Log>> { + self.1.logs(filter).await + } } diff --git a/substrate/frame/revive/rpc/src/receipt_provider/cache.rs b/substrate/frame/revive/rpc/src/receipt_provider/cache.rs index 39124929ec07dba8babe69dffd37e78d59eeb744..87947be7c7227c72ee23e933b77e82a59fac9b8e 100644 --- a/substrate/frame/revive/rpc/src/receipt_provider/cache.rs +++ b/substrate/frame/revive/rpc/src/receipt_provider/cache.rs @@ -16,7 +16,7 @@ // limitations under the License. use super::ReceiptProvider; use jsonrpsee::core::async_trait; -use pallet_revive::evm::{ReceiptInfo, TransactionSigned, H256, U256}; +use pallet_revive::evm::{Filter, Log, ReceiptInfo, TransactionSigned, H256}; use std::{collections::HashMap, sync::Arc}; use tokio::sync::RwLock; @@ -35,6 +35,12 @@ impl CacheReceiptProvider { #[async_trait] impl ReceiptProvider for CacheReceiptProvider { + async fn archive(&self, _block_hash: &H256, _receipts: &[(TransactionSigned, ReceiptInfo)]) {} + + async fn logs(&self, _filter: Option<Filter>) -> anyhow::Result<Vec<Log>> { + anyhow::bail!("Not implemented") + } + async fn insert(&self, block_hash: &H256, receipts: &[(TransactionSigned, ReceiptInfo)]) { let mut cache = self.cache.write().await; cache.insert(block_hash, receipts); @@ -48,13 +54,13 @@ impl ReceiptProvider for CacheReceiptProvider { async fn receipt_by_block_hash_and_index( &self, block_hash: &H256, - transaction_index: &U256, + transaction_index: usize, ) -> Option<ReceiptInfo> { let cache = self.cache().await; let receipt_hash = cache .transaction_hashes_by_block_and_index .get(block_hash)? - .get(transaction_index)?; + .get(&transaction_index)?; let receipt = cache.receipts_by_hash.get(receipt_hash)?; Some(receipt.clone()) } @@ -84,7 +90,7 @@ struct ReceiptCache { signed_tx_by_hash: HashMap<H256, TransactionSigned>, /// A map of receipt hashes by block hash. - transaction_hashes_by_block_and_index: HashMap<H256, HashMap<U256, H256>>, + transaction_hashes_by_block_and_index: HashMap<H256, HashMap<usize, H256>>, } impl ReceiptCache { @@ -93,7 +99,9 @@ impl ReceiptCache { if !receipts.is_empty() { let values = receipts .iter() - .map(|(_, receipt)| (receipt.transaction_index, receipt.transaction_hash)) + .map(|(_, receipt)| { + (receipt.transaction_index.as_usize(), receipt.transaction_hash) + }) .collect::<HashMap<_, _>>(); self.transaction_hashes_by_block_and_index.insert(*block_hash, values); diff --git a/substrate/frame/revive/rpc/src/receipt_provider/db.rs b/substrate/frame/revive/rpc/src/receipt_provider/db.rs index 63917d6193ea7e7bbf55e3e8958b8ab9a7b2bd54..0f82f5df1ba7db784d6feb0ade477acc53cb76f8 100644 --- a/substrate/frame/revive/rpc/src/receipt_provider/db.rs +++ b/substrate/frame/revive/rpc/src/receipt_provider/db.rs @@ -16,11 +16,11 @@ // limitations under the License. use super::*; -use crate::BlockInfoProvider; +use crate::{Address, AddressOrAddresses, BlockInfoProvider, Bytes, FilterTopic, ReceiptExtractor}; use jsonrpsee::core::async_trait; -use pallet_revive::evm::{ReceiptInfo, TransactionSigned}; +use pallet_revive::evm::{Filter, Log, ReceiptInfo, TransactionSigned}; use sp_core::{H256, U256}; -use sqlx::{query, SqlitePool}; +use sqlx::{query, QueryBuilder, Row, Sqlite, SqlitePool}; use std::sync::Arc; /// A `[ReceiptProvider]` that stores receipts in a SQLite database. @@ -30,23 +30,24 @@ pub struct DBReceiptProvider { pool: SqlitePool, /// The block provider used to fetch blocks, and reconstruct receipts. block_provider: Arc<dyn BlockInfoProvider>, - /// weather or not we should write to the DB. - read_only: bool, + /// A means to extract receipts from extrinsics. + receipt_extractor: ReceiptExtractor, } impl DBReceiptProvider { /// Create a new `DBReceiptProvider` with the given database URL and block provider. pub async fn new( database_url: &str, - read_only: bool, block_provider: Arc<dyn BlockInfoProvider>, + receipt_extractor: ReceiptExtractor, ) -> Result<Self, sqlx::Error> { let pool = SqlitePool::connect(database_url).await?; - Ok(Self { pool, block_provider, read_only }) + sqlx::migrate!().run(&pool).await?; + Ok(Self { pool, block_provider, receipt_extractor }) } async fn fetch_row(&self, transaction_hash: &H256) -> Option<(H256, usize)> { - let transaction_hash = hex::encode(transaction_hash); + let transaction_hash = transaction_hash.as_ref(); let result = query!( r#" SELECT block_hash, transaction_index @@ -59,7 +60,7 @@ impl DBReceiptProvider { .await .ok()??; - let block_hash = result.block_hash.parse::<H256>().ok()?; + let block_hash = H256::from_slice(&result.block_hash[..]); let transaction_index = result.transaction_index.try_into().ok()?; Some((block_hash, transaction_index)) } @@ -67,45 +68,204 @@ impl DBReceiptProvider { #[async_trait] impl ReceiptProvider for DBReceiptProvider { - async fn insert(&self, block_hash: &H256, receipts: &[(TransactionSigned, ReceiptInfo)]) { - if self.read_only { - return - } + async fn remove(&self, _block_hash: &H256) {} - let block_hash_str = hex::encode(block_hash); + async fn archive(&self, block_hash: &H256, receipts: &[(TransactionSigned, ReceiptInfo)]) { + self.insert(block_hash, receipts).await; + } + + async fn insert(&self, block_hash: &H256, receipts: &[(TransactionSigned, ReceiptInfo)]) { + let block_hash = block_hash.as_ref(); for (_, receipt) in receipts { - let transaction_hash = hex::encode(receipt.transaction_hash); + let transaction_hash: &[u8] = receipt.transaction_hash.as_ref(); let transaction_index = receipt.transaction_index.as_u32() as i32; let result = query!( r#" - INSERT INTO transaction_hashes (transaction_hash, block_hash, transaction_index) + INSERT OR REPLACE INTO transaction_hashes (transaction_hash, block_hash, transaction_index) VALUES ($1, $2, $3) - - ON CONFLICT(transaction_hash) DO UPDATE SET - block_hash = EXCLUDED.block_hash, - transaction_index = EXCLUDED.transaction_index "#, transaction_hash, - block_hash_str, + block_hash, transaction_index ) .execute(&self.pool) .await; if let Err(err) = result { - log::error!( - "Error inserting transaction for block hash {block_hash:?}: {:?}", - err - ); + log::error!("Error inserting transaction for block hash {block_hash:?}: {err:?}"); + } + + for log in &receipt.logs { + let block_hash = log.block_hash.as_ref(); + let transaction_index = log.transaction_index.as_u64() as i64; + let log_index = log.log_index.as_u32() as i32; + let address = log.address.as_ref(); + let block_number = log.block_number.as_u64() as i64; + let transaction_hash = log.transaction_hash.as_ref(); + + let topic_0 = log.topics.first().as_ref().map(|v| &v[..]); + let topic_1 = log.topics.get(1).as_ref().map(|v| &v[..]); + let topic_2 = log.topics.get(2).as_ref().map(|v| &v[..]); + let topic_3 = log.topics.get(3).as_ref().map(|v| &v[..]); + let data = log.data.as_ref().map(|v| &v.0[..]); + + let result = query!( + r#" + INSERT OR REPLACE INTO logs( + block_hash, + transaction_index, + log_index, + address, + block_number, + transaction_hash, + topic_0, topic_1, topic_2, topic_3, + data) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) + "#, + block_hash, + transaction_index, + log_index, + address, + block_number, + transaction_hash, + topic_0, + topic_1, + topic_2, + topic_3, + data + ) + .execute(&self.pool) + .await; + + if let Err(err) = result { + log::error!("Error inserting log {log:?}: {err:?}"); + } } } } - async fn remove(&self, _block_hash: &H256) {} + async fn logs(&self, filter: Option<Filter>) -> anyhow::Result<Vec<Log>> { + let mut qb = QueryBuilder::<Sqlite>::new("SELECT logs.* FROM logs WHERE 1=1"); + let filter = filter.unwrap_or_default(); + + let latest_block = + U256::from(self.block_provider.latest_block_number().await.unwrap_or_default()); + + match (filter.from_block, filter.to_block, filter.block_hash) { + (Some(_), _, Some(_)) | (_, Some(_), Some(_)) => { + anyhow::bail!("block number and block hash cannot be used together"); + }, + + (Some(block), _, _) | (_, Some(block), _) if block > latest_block => { + anyhow::bail!("block number exceeds latest block"); + }, + (Some(from_block), Some(to_block), None) if from_block > to_block => { + anyhow::bail!("invalid block range params"); + }, + (Some(from_block), Some(to_block), None) if from_block == to_block => { + qb.push(" AND block_number = ").push_bind(from_block.as_u64() as i64); + }, + (Some(from_block), Some(to_block), None) => { + qb.push(" AND block_number BETWEEN ") + .push_bind(from_block.as_u64() as i64) + .push(" AND ") + .push_bind(to_block.as_u64() as i64); + }, + (Some(from_block), None, None) => { + qb.push(" AND block_number >= ").push_bind(from_block.as_u64() as i64); + }, + (None, Some(to_block), None) => { + qb.push(" AND block_number <= ").push_bind(to_block.as_u64() as i64); + }, + (None, None, Some(hash)) => { + qb.push(" AND block_hash = ").push_bind(hash.0.to_vec()); + }, + (None, None, None) => { + qb.push(" AND block_number = ").push_bind(latest_block.as_u64() as i64); + }, + } + + if let Some(addresses) = filter.address { + match addresses { + AddressOrAddresses::Address(addr) => { + qb.push(" AND address = ").push_bind(addr.0.to_vec()); + }, + AddressOrAddresses::Addresses(addrs) => { + qb.push(" AND address IN ("); + let mut separated = qb.separated(", "); + for addr in addrs { + separated.push_bind(addr.0.to_vec()); + } + separated.push_unseparated(")"); + }, + } + } + + if let Some(topics) = filter.topics { + if topics.len() > 4 { + return Err(anyhow::anyhow!("exceed max topics")); + } + + for (i, topic) in topics.into_iter().enumerate() { + match topic { + FilterTopic::Single(hash) => { + qb.push(format_args!(" AND topic_{i} = ")).push_bind(hash.0.to_vec()); + }, + FilterTopic::Multiple(hashes) => { + qb.push(format_args!(" AND topic_{i} IN (")); + let mut separated = qb.separated(", "); + for hash in hashes { + separated.push_bind(hash.0.to_vec()); + } + separated.push_unseparated(")"); + }, + } + } + } + + qb.push(" LIMIT 10000"); + + let logs = qb + .build() + .try_map(|row| { + let block_hash: Vec<u8> = row.try_get("block_hash")?; + let transaction_index: i64 = row.try_get("transaction_index")?; + let log_index: i64 = row.try_get("log_index")?; + let address: Vec<u8> = row.try_get("address")?; + let block_number: i64 = row.try_get("block_number")?; + let transaction_hash: Vec<u8> = row.try_get("transaction_hash")?; + let topic_0: Option<Vec<u8>> = row.try_get("topic_0")?; + let topic_1: Option<Vec<u8>> = row.try_get("topic_1")?; + let topic_2: Option<Vec<u8>> = row.try_get("topic_2")?; + let topic_3: Option<Vec<u8>> = row.try_get("topic_3")?; + let data: Option<Vec<u8>> = row.try_get("data")?; + + let topics = [topic_0, topic_1, topic_2, topic_3] + .iter() + .filter_map(|t| t.as_ref().map(|t| H256::from_slice(t))) + .collect::<Vec<_>>(); + + Ok(Log { + address: Address::from_slice(&address), + block_hash: H256::from_slice(&block_hash), + block_number: U256::from(block_number as u64), + data: data.map(Bytes::from), + log_index: U256::from(log_index as u64), + topics, + transaction_hash: H256::from_slice(&transaction_hash), + transaction_index: U256::from(transaction_index as u64), + removed: None, + }) + }) + .fetch_all(&self.pool) + .await?; + + Ok(logs) + } async fn receipts_count_per_block(&self, block_hash: &H256) -> Option<usize> { - let block_hash = hex::encode(block_hash); + let block_hash = block_hash.as_ref(); let row = query!( r#" SELECT COUNT(*) as count @@ -125,12 +285,14 @@ impl ReceiptProvider for DBReceiptProvider { async fn receipt_by_block_hash_and_index( &self, block_hash: &H256, - transaction_index: &U256, + transaction_index: usize, ) -> Option<ReceiptInfo> { let block = self.block_provider.block_by_hash(block_hash).await.ok()??; - let transaction_index: usize = transaction_index.as_usize(); // TODO: check for overflow - let (_, receipt) = - extract_receipts_from_transaction(&block, transaction_index).await.ok()?; + let (_, receipt) = self + .receipt_extractor + .extract_from_transaction(&block, transaction_index) + .await + .ok()?; Some(receipt) } @@ -138,13 +300,16 @@ impl ReceiptProvider for DBReceiptProvider { let (block_hash, transaction_index) = self.fetch_row(transaction_hash).await?; let block = self.block_provider.block_by_hash(&block_hash).await.ok()??; - let (_, receipt) = - extract_receipts_from_transaction(&block, transaction_index).await.ok()?; + let (_, receipt) = self + .receipt_extractor + .extract_from_transaction(&block, transaction_index) + .await + .ok()?; Some(receipt) } async fn signed_tx_by_hash(&self, transaction_hash: &H256) -> Option<TransactionSigned> { - let transaction_hash = hex::encode(transaction_hash); + let transaction_hash = transaction_hash.as_ref(); let result = query!( r#" SELECT block_hash, transaction_index @@ -157,12 +322,15 @@ impl ReceiptProvider for DBReceiptProvider { .await .ok()??; - let block_hash = result.block_hash.parse::<H256>().ok()?; + let block_hash = H256::from_slice(&result.block_hash[..]); let transaction_index = result.transaction_index.try_into().ok()?; let block = self.block_provider.block_by_hash(&block_hash).await.ok()??; - let (signed_tx, _) = - extract_receipts_from_transaction(&block, transaction_index).await.ok()?; + let (signed_tx, _) = self + .receipt_extractor + .extract_from_transaction(&block, transaction_index) + .await + .ok()?; Some(signed_tx) } } @@ -172,14 +340,15 @@ mod tests { use super::*; use crate::test::MockBlockInfoProvider; use pallet_revive::evm::{ReceiptInfo, TransactionSigned}; - use sp_core::H256; + use pretty_assertions::assert_eq; + use sp_core::{H160, H256}; use sqlx::SqlitePool; async fn setup_sqlite_provider(pool: SqlitePool) -> DBReceiptProvider { DBReceiptProvider { pool, block_provider: Arc::new(MockBlockInfoProvider {}), - read_only: false, + receipt_extractor: ReceiptExtractor::new(1_000_000), } } @@ -213,4 +382,137 @@ mod tests { let count = provider.receipts_count_per_block(&block_hash).await; assert_eq!(count, Some(2)); } + + #[sqlx::test] + async fn test_query_logs(pool: SqlitePool) -> anyhow::Result<()> { + let provider = setup_sqlite_provider(pool).await; + let log1 = Log { + block_hash: H256::from([1u8; 32]), + block_number: U256::from(1), + address: H160::from([1u8; 20]), + topics: vec![H256::from([1u8; 32]), H256::from([2u8; 32])], + data: Some(vec![0u8; 32].into()), + transaction_hash: H256::default(), + transaction_index: U256::from(1), + log_index: U256::from(1), + ..Default::default() + }; + let log2 = Log { + block_hash: H256::from([2u8; 32]), + block_number: U256::from(2), + address: H160::from([2u8; 20]), + topics: vec![H256::from([2u8; 32]), H256::from([3u8; 32])], + transaction_hash: H256::from([1u8; 32]), + transaction_index: U256::from(2), + log_index: U256::from(1), + ..Default::default() + }; + + provider + .insert( + &log1.block_hash, + &vec![( + TransactionSigned::default(), + ReceiptInfo { logs: vec![log1.clone()], ..Default::default() }, + )], + ) + .await; + provider + .insert( + &log2.block_hash, + &vec![( + TransactionSigned::default(), + ReceiptInfo { logs: vec![log2.clone()], ..Default::default() }, + )], + ) + .await; + + // Empty filter + let logs = provider.logs(None).await?; + assert_eq!(logs, vec![log2.clone()]); + + // from_block filter + let logs = provider + .logs(Some(Filter { from_block: Some(log2.block_number), ..Default::default() })) + .await?; + assert_eq!(logs, vec![log2.clone()]); + + // to_block filter + let logs = provider + .logs(Some(Filter { to_block: Some(log1.block_number), ..Default::default() })) + .await?; + assert_eq!(logs, vec![log1.clone()]); + + // block_hash filter + let logs = provider + .logs(Some(Filter { block_hash: Some(log1.block_hash), ..Default::default() })) + .await?; + assert_eq!(logs, vec![log1.clone()]); + + // single address + let logs = provider + .logs(Some(Filter { + from_block: Some(U256::from(0)), + address: Some(log1.address.into()), + ..Default::default() + })) + .await?; + assert_eq!(logs, vec![log1.clone()]); + + // multiple addresses + let logs = provider + .logs(Some(Filter { + from_block: Some(U256::from(0)), + address: Some(vec![log1.address, log2.address].into()), + ..Default::default() + })) + .await?; + assert_eq!(logs, vec![log1.clone(), log2.clone()]); + + // single topic + let logs = provider + .logs(Some(Filter { + from_block: Some(U256::from(0)), + topics: Some(vec![FilterTopic::Single(log1.topics[0])]), + ..Default::default() + })) + .await?; + assert_eq!(logs, vec![log1.clone()]); + + // multiple topic + let logs = provider + .logs(Some(Filter { + from_block: Some(U256::from(0)), + topics: Some(vec![ + FilterTopic::Single(log1.topics[0]), + FilterTopic::Single(log1.topics[1]), + ]), + ..Default::default() + })) + .await?; + assert_eq!(logs, vec![log1.clone()]); + + // multiple topic for topic_0 + let logs = provider + .logs(Some(Filter { + from_block: Some(U256::from(0)), + topics: Some(vec![FilterTopic::Multiple(vec![log1.topics[0], log2.topics[0]])]), + ..Default::default() + })) + .await?; + assert_eq!(logs, vec![log1.clone(), log2.clone()]); + + // Altogether + let logs = provider + .logs(Some(Filter { + from_block: Some(log1.block_number), + to_block: Some(log2.block_number), + block_hash: None, + address: Some(vec![log1.address, log2.address].into()), + topics: Some(vec![FilterTopic::Multiple(vec![log1.topics[0], log2.topics[0]])]), + })) + .await?; + assert_eq!(logs, vec![log1.clone(), log2.clone()]); + Ok(()) + } } diff --git a/substrate/frame/revive/rpc/src/rpc_methods_gen.rs b/substrate/frame/revive/rpc/src/rpc_methods_gen.rs index da60360d9e61b70241d08c987bfb8683719d137f..2df644f5692bdc3c058551ca5742f8532f402db8 100644 --- a/substrate/frame/revive/rpc/src/rpc_methods_gen.rs +++ b/substrate/frame/revive/rpc/src/rpc_methods_gen.rs @@ -95,6 +95,10 @@ pub trait EthRpc { #[method(name = "eth_getCode")] async fn get_code(&self, address: Address, block: BlockNumberOrTagOrHash) -> RpcResult<Bytes>; + /// Returns an array of all logs matching filter with given id. + #[method(name = "eth_getLogs")] + async fn get_logs(&self, filter: Option<Filter>) -> RpcResult<FilterResults>; + /// Returns the value from a storage position at a given address. #[method(name = "eth_getStorageAt")] async fn get_storage_at( diff --git a/substrate/frame/revive/rpc/src/tests.rs b/substrate/frame/revive/rpc/src/tests.rs index e64e16d45b2aec2a9c2a2e972684ab03b64df8d2..e1ac274d32ea86cc3a0f83f389a0a05565c8da48 100644 --- a/substrate/frame/revive/rpc/src/tests.rs +++ b/substrate/frame/revive/rpc/src/tests.rs @@ -18,7 +18,7 @@ use crate::{ cli::{self, CliCommand}, - example::{wait_for_successful_receipt, TransactionBuilder}, + example::TransactionBuilder, EthRpcClient, }; use clap::Parser; @@ -29,7 +29,7 @@ use pallet_revive::{ evm::{Account, BlockTag, U256}, }; use static_init::dynamic; -use std::thread; +use std::{sync::Arc, thread}; use substrate_cli_test_utils::*; /// Create a websocket client with a 120s timeout. @@ -117,19 +117,15 @@ macro_rules! unwrap_call_err( #[tokio::test] async fn transfer() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = Arc::new(SharedResources::client().await); let ethan = Account::from(subxt_signer::eth::dev::ethan()); let initial_balance = client.get_balance(ethan.address(), BlockTag::Latest.into()).await?; let value = 1_000_000_000_000_000_000_000u128.into(); - let hash = TransactionBuilder::default() - .value(value) - .to(ethan.address()) - .send(&client) - .await?; + let tx = TransactionBuilder::new(&client).value(value).to(ethan.address()).send().await?; - let receipt = wait_for_successful_receipt(&client, hash).await?; + let receipt = tx.wait_for_receipt().await?; assert_eq!( Some(ethan.address()), receipt.to, @@ -145,7 +141,7 @@ async fn transfer() -> anyhow::Result<()> { #[tokio::test] async fn deploy_and_call() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = std::sync::Arc::new(SharedResources::client().await); let account = Account::default(); // Balance transfer @@ -153,13 +149,9 @@ async fn deploy_and_call() -> anyhow::Result<()> { let initial_balance = client.get_balance(ethan.address(), BlockTag::Latest.into()).await?; let value = 1_000_000_000_000_000_000_000u128.into(); - let hash = TransactionBuilder::default() - .value(value) - .to(ethan.address()) - .send(&client) - .await?; + let tx = TransactionBuilder::new(&client).value(value).to(ethan.address()).send().await?; - let receipt = wait_for_successful_receipt(&client, hash).await?; + let receipt = tx.wait_for_receipt().await?; assert_eq!( Some(ethan.address()), receipt.to, @@ -175,8 +167,8 @@ async fn deploy_and_call() -> anyhow::Result<()> { let (bytes, _) = pallet_revive_fixtures::compile_module("dummy")?; let input = bytes.into_iter().chain(data.clone()).collect::<Vec<u8>>(); let nonce = client.get_transaction_count(account.address(), BlockTag::Latest.into()).await?; - let hash = TransactionBuilder::default().value(value).input(input).send(&client).await?; - let receipt = wait_for_successful_receipt(&client, hash).await?; + let tx = TransactionBuilder::new(&client).value(value).input(input).send().await?; + let receipt = tx.wait_for_receipt().await?; let contract_address = create1(&account.address(), nonce.try_into().unwrap()); assert_eq!( Some(contract_address), @@ -188,12 +180,12 @@ async fn deploy_and_call() -> anyhow::Result<()> { assert_eq!(value, balance, "Contract balance should be the same as the value sent."); // Call contract - let hash = TransactionBuilder::default() + let tx = TransactionBuilder::new(&client) .value(value) .to(contract_address) - .send(&client) + .send() .await?; - let receipt = wait_for_successful_receipt(&client, hash).await?; + let receipt = tx.wait_for_receipt().await?; assert_eq!( Some(contract_address), @@ -206,13 +198,13 @@ async fn deploy_and_call() -> anyhow::Result<()> { // Balance transfer to contract let balance = client.get_balance(contract_address, BlockTag::Latest.into()).await?; - let hash = TransactionBuilder::default() + let tx = TransactionBuilder::new(&client) .value(value) .to(contract_address) - .send(&client) + .send() .await?; - wait_for_successful_receipt(&client, hash).await?; + tx.wait_for_receipt().await?; let increase = client.get_balance(contract_address, BlockTag::Latest.into()).await? - balance; assert_eq!(value, increase, "contract's balance should have increased by the value sent."); Ok(()) @@ -221,17 +213,19 @@ async fn deploy_and_call() -> anyhow::Result<()> { #[tokio::test] async fn revert_call() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = Arc::new(SharedResources::client().await); let (bytecode, contract) = get_contract("Errors")?; - let receipt = TransactionBuilder::default() + let receipt = TransactionBuilder::new(&client) .input(bytecode) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await?; - let err = TransactionBuilder::default() + let err = TransactionBuilder::new(&client) .to(receipt.contract_address.unwrap()) .input(contract.function("triggerRequireError")?.encode_input(&[])?.to_vec()) - .send(&client) + .send() .await .unwrap_err(); @@ -244,17 +238,21 @@ async fn revert_call() -> anyhow::Result<()> { #[tokio::test] async fn event_logs() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = Arc::new(SharedResources::client().await); let (bytecode, contract) = get_contract("EventExample")?; - let receipt = TransactionBuilder::default() + let receipt = TransactionBuilder::new(&client) .input(bytecode) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await?; - let receipt = TransactionBuilder::default() + let receipt = TransactionBuilder::new(&client) .to(receipt.contract_address.unwrap()) .input(contract.function("triggerEvent")?.encode_input(&[])?.to_vec()) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await?; assert_eq!(receipt.logs.len(), 1, "There should be one log."); Ok(()) @@ -263,14 +261,14 @@ async fn event_logs() -> anyhow::Result<()> { #[tokio::test] async fn invalid_transaction() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = Arc::new(SharedResources::client().await); let ethan = Account::from(subxt_signer::eth::dev::ethan()); - let err = TransactionBuilder::default() + let err = TransactionBuilder::new(&client) .value(U256::from(1_000_000_000_000u128)) .to(ethan.address()) .mutate(|tx| tx.chain_id = Some(42u32.into())) - .send(&client) + .send() .await .unwrap_err(); @@ -283,28 +281,32 @@ async fn invalid_transaction() -> anyhow::Result<()> { #[tokio::test] async fn native_evm_ratio_works() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = Arc::new(SharedResources::client().await); let (bytecode, contract) = get_contract("PiggyBank")?; - let contract_address = TransactionBuilder::default() + let contract_address = TransactionBuilder::new(&client) .input(bytecode) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await? .contract_address .unwrap(); let value = 10_000_000_000_000_000_000u128; // 10 eth - TransactionBuilder::default() + TransactionBuilder::new(&client) .to(contract_address) .input(contract.function("deposit")?.encode_input(&[])?.to_vec()) .value(value.into()) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await?; let contract_value = client.get_balance(contract_address, BlockTag::Latest.into()).await?; assert_eq!(contract_value, value.into()); let withdraw_value = 1_000_000_000_000_000_000u128; // 1 eth - TransactionBuilder::default() + TransactionBuilder::new(&client) .to(contract_address) .input( contract @@ -312,7 +314,9 @@ async fn native_evm_ratio_works() -> anyhow::Result<()> { .encode_input(&[Token::Uint(withdraw_value.into())])? .to_vec(), ) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await?; let contract_value = client.get_balance(contract_address, BlockTag::Latest.into()).await?; diff --git a/substrate/frame/revive/src/benchmarking/mod.rs b/substrate/frame/revive/src/benchmarking/mod.rs index 624fa35570d840d5729a7bcfe49dfadf4561b83a..94d8edef7772ba1e2a8156ffea196fd30394008a 100644 --- a/substrate/frame/revive/src/benchmarking/mod.rs +++ b/substrate/frame/revive/src/benchmarking/mod.rs @@ -24,7 +24,7 @@ mod code; use self::{call_builder::CallSetup, code::WasmModule}; use crate::{ evm::runtime::GAS_PRICE, - exec::{Key, MomentOf}, + exec::{Ext, Key, MomentOf}, limits, storage::WriteOutcome, ConversionPrecision, Pallet as Contracts, *, @@ -1073,24 +1073,11 @@ mod benchmarks { } #[benchmark(pov_mode = Measured)] - fn seal_terminate( - n: Linear<0, { limits::DELEGATE_DEPENDENCIES }>, - ) -> Result<(), BenchmarkError> { + fn seal_terminate() -> Result<(), BenchmarkError> { let beneficiary = account::<T::AccountId>("beneficiary", 0, 0); - let caller = whitelisted_caller(); - T::Currency::set_balance(&caller, caller_funding::<T>()); - let origin = RawOrigin::Signed(caller); - let storage_deposit = default_deposit_limit::<T>(); build_runtime!(runtime, memory: [beneficiary.encode(),]); - (0..n).for_each(|i| { - let new_code = WasmModule::dummy_unique(65 + i); - Contracts::<T>::bare_upload_code(origin.clone().into(), new_code.code, storage_deposit) - .unwrap(); - runtime.ext().lock_delegate_dependency(new_code.hash).unwrap(); - }); - let result; #[block] { @@ -1982,43 +1969,6 @@ mod benchmarks { Ok(()) } - #[benchmark(pov_mode = Measured)] - fn lock_delegate_dependency() -> Result<(), BenchmarkError> { - let code_hash = Contract::<T>::with_index(1, WasmModule::dummy_unique(1), vec![])? - .info()? - .code_hash; - - build_runtime!(runtime, memory: [ code_hash.encode(),]); - - let result; - #[block] - { - result = runtime.bench_lock_delegate_dependency(memory.as_mut_slice(), 0); - } - - assert_ok!(result); - Ok(()) - } - - #[benchmark] - fn unlock_delegate_dependency() -> Result<(), BenchmarkError> { - let code_hash = Contract::<T>::with_index(1, WasmModule::dummy_unique(1), vec![])? - .info()? - .code_hash; - - build_runtime!(runtime, memory: [ code_hash.encode(),]); - runtime.bench_lock_delegate_dependency(memory.as_mut_slice(), 0).unwrap(); - - let result; - #[block] - { - result = runtime.bench_unlock_delegate_dependency(memory.as_mut_slice(), 0); - } - - assert_ok!(result); - Ok(()) - } - // Benchmark the execution of instructions. #[benchmark(pov_mode = Ignored)] fn instr(r: Linear<0, INSTR_BENCHMARK_RUNS>) { diff --git a/substrate/frame/revive/src/evm/api/rpc_types_gen.rs b/substrate/frame/revive/src/evm/api/rpc_types_gen.rs index 5d31613ca314baa057fdc52e88fe66be16fc5c58..8fd4c1072a931d5b155a9d135584169c526cb1b9 100644 --- a/substrate/frame/revive/src/evm/api/rpc_types_gen.rs +++ b/substrate/frame/revive/src/evm/api/rpc_types_gen.rs @@ -137,6 +137,44 @@ impl Default for BlockNumberOrTagOrHash { } } +/// filter +#[derive( + Debug, Default, Clone, Encode, Decode, TypeInfo, Serialize, Deserialize, Eq, PartialEq, +)] +pub struct Filter { + /// Address(es) + pub address: Option<AddressOrAddresses>, + /// from block + #[serde(rename = "fromBlock", skip_serializing_if = "Option::is_none")] + pub from_block: Option<U256>, + /// to block + #[serde(rename = "toBlock", skip_serializing_if = "Option::is_none")] + pub to_block: Option<U256>, + /// Restricts the logs returned to the single block + #[serde(rename = "blockHash", skip_serializing_if = "Option::is_none")] + pub block_hash: Option<H256>, + /// Topics + #[serde(skip_serializing_if = "Option::is_none")] + pub topics: Option<FilterTopics>, +} + +/// Filter results +#[derive( + Debug, Clone, Encode, Decode, TypeInfo, Serialize, Deserialize, From, TryInto, Eq, PartialEq, +)] +#[serde(untagged)] +pub enum FilterResults { + /// new block or transaction hashes + Hashes(Vec<H256>), + /// new logs + Logs(Vec<Log>), +} +impl Default for FilterResults { + fn default() -> Self { + FilterResults::Hashes(Default::default()) + } +} + /// Transaction object generic to all types #[derive( Debug, Default, Clone, Encode, Decode, TypeInfo, Serialize, Deserialize, Eq, PartialEq, @@ -326,6 +364,26 @@ impl Default for TransactionUnsigned { /// Access list pub type AccessList = Vec<AccessListEntry>; +/// Address(es) +#[derive( + Debug, Clone, Encode, Decode, TypeInfo, Serialize, Deserialize, From, TryInto, Eq, PartialEq, +)] +#[serde(untagged)] +pub enum AddressOrAddresses { + /// Address + Address(Address), + /// Addresses + Addresses(Addresses), +} +impl Default for AddressOrAddresses { + fn default() -> Self { + AddressOrAddresses::Address(Default::default()) + } +} + +/// hex encoded address +pub type Addresses = Vec<Address>; + /// Block tag /// `earliest`: The lowest numbered block the client has available; `finalized`: The most recent /// crypto-economically secure block, cannot be re-orged outside of manual intervention driven by @@ -353,6 +411,9 @@ pub enum BlockTag { Pending, } +/// Filter Topics +pub type FilterTopics = Vec<FilterTopic>; + #[derive( Debug, Clone, Encode, Decode, TypeInfo, Serialize, Deserialize, From, TryInto, Eq, PartialEq, )] @@ -377,17 +438,17 @@ pub struct Log { /// address pub address: Address, /// block hash - #[serde(rename = "blockHash", skip_serializing_if = "Option::is_none")] - pub block_hash: Option<H256>, + #[serde(rename = "blockHash")] + pub block_hash: H256, /// block number - #[serde(rename = "blockNumber", skip_serializing_if = "Option::is_none")] - pub block_number: Option<U256>, + #[serde(rename = "blockNumber")] + pub block_number: U256, /// data #[serde(skip_serializing_if = "Option::is_none")] pub data: Option<Bytes>, /// log index - #[serde(rename = "logIndex", skip_serializing_if = "Option::is_none")] - pub log_index: Option<U256>, + #[serde(rename = "logIndex")] + pub log_index: U256, /// removed #[serde(skip_serializing_if = "Option::is_none")] pub removed: Option<bool>, @@ -398,8 +459,8 @@ pub struct Log { #[serde(rename = "transactionHash")] pub transaction_hash: H256, /// transaction index - #[serde(rename = "transactionIndex", skip_serializing_if = "Option::is_none")] - pub transaction_index: Option<U256>, + #[serde(rename = "transactionIndex")] + pub transaction_index: U256, } /// Syncing progress @@ -604,6 +665,23 @@ pub struct AccessListEntry { pub storage_keys: Vec<H256>, } +/// Filter Topic List Entry +#[derive( + Debug, Clone, Encode, Decode, TypeInfo, Serialize, Deserialize, From, TryInto, Eq, PartialEq, +)] +#[serde(untagged)] +pub enum FilterTopic { + /// Single Topic Match + Single(H256), + /// Multiple Topic Match + Multiple(Vec<H256>), +} +impl Default for FilterTopic { + fn default() -> Self { + FilterTopic::Single(Default::default()) + } +} + /// Signed 1559 Transaction #[derive( Debug, Default, Clone, Encode, Decode, TypeInfo, Serialize, Deserialize, Eq, PartialEq, diff --git a/substrate/frame/revive/src/evm/gas_encoder.rs b/substrate/frame/revive/src/evm/gas_encoder.rs index 8853e77e958ebd9a959686531c1568c1ce993736..4ea822f30696238968571bad299becda65487999 100644 --- a/substrate/frame/revive/src/evm/gas_encoder.rs +++ b/substrate/frame/revive/src/evm/gas_encoder.rs @@ -91,7 +91,7 @@ where /// - `g...g`: Gas limit, encoded in the highest digits. /// /// # Note - /// - The deposit value is maxed by 2^99 + /// - The deposit value is maxed by 2^99 for u128 balance, and 2^63 for u64 balance. fn encode(gas_limit: U256, weight: Weight, deposit: Balance) -> U256 { let deposit: u128 = deposit.into(); let deposit_component = log2_round_up(deposit); @@ -105,8 +105,8 @@ where let components = U256::from(deposit_component + proof_size_component + ref_time_component); let raw_gas_mask = U256::from(SCALE).pow(3.into()); - let raw_gas_component = if gas_limit < raw_gas_mask.saturating_add(components) { - raw_gas_mask + let raw_gas_component = if gas_limit <= components { + U256::zero() } else { round_up(gas_limit, raw_gas_mask).saturating_mul(raw_gas_mask) }; @@ -122,12 +122,24 @@ where let proof_time = ((gas / SCALE) % SCALE).as_u32(); let ref_time = ((gas / SCALE.pow(2)) % SCALE).as_u32(); - let weight = Weight::from_parts( - if ref_time == 0 { 0 } else { 1u64.checked_shl(ref_time)? }, - if proof_time == 0 { 0 } else { 1u64.checked_shl(proof_time)? }, - ); - let deposit = - if deposit == 0 { Balance::zero() } else { Balance::one().checked_shl(deposit)? }; + let ref_weight = match ref_time { + 0 => 0, + 64 => u64::MAX, + _ => 1u64.checked_shl(ref_time)?, + }; + + let proof_weight = match proof_time { + 0 => 0, + 64 => u64::MAX, + _ => 1u64.checked_shl(proof_time)?, + }; + + let weight = Weight::from_parts(ref_weight, proof_weight); + + let deposit = match deposit { + 0 => Balance::zero(), + _ => Balance::one().checked_shl(deposit)?, + }; Some((weight, deposit)) } @@ -169,12 +181,31 @@ mod test { Default::default(), ); - assert_eq!(encoded_gas, U256::from(1_00_00_00)); + assert_eq!(encoded_gas, U256::from(0)); let (decoded_weight, decoded_deposit) = <() as GasEncoder<u64>>::decode(encoded_gas).unwrap(); assert_eq!(Weight::default(), decoded_weight); assert_eq!(0u64, decoded_deposit); + + let encoded_gas = + <() as GasEncoder<u64>>::encode(U256::from(1), Default::default(), Default::default()); + assert_eq!(encoded_gas, U256::from(1000000)); + } + + #[test] + fn test_encoding_max_values_work() { + let max_weight = Weight::from_parts(u64::MAX, u64::MAX); + let max_deposit = 1u64 << 63; + let encoded_gas = + <() as GasEncoder<u64>>::encode(Default::default(), max_weight, max_deposit); + + assert_eq!(encoded_gas, U256::from(646463)); + + let (decoded_weight, decoded_deposit) = + <() as GasEncoder<u64>>::decode(encoded_gas).unwrap(); + assert_eq!(max_weight, decoded_weight); + assert_eq!(max_deposit, decoded_deposit); } #[test] diff --git a/substrate/frame/revive/src/evm/runtime.rs b/substrate/frame/revive/src/evm/runtime.rs index 09bfbf380c61ca0b16bf41f3ee6004569c2ec683..e593222239e5cbad32932198cc4c99f09ffc26f6 100644 --- a/substrate/frame/revive/src/evm/runtime.rs +++ b/substrate/frame/revive/src/evm/runtime.rs @@ -39,7 +39,7 @@ use sp_runtime::{ TransactionExtension, }, transaction_validity::{InvalidTransaction, TransactionValidityError}, - OpaqueExtrinsic, RuntimeDebug, Saturating, + OpaqueExtrinsic, RuntimeDebug, }; type CallOf<T> = <T as frame_system::Config>::RuntimeCall; @@ -55,7 +55,7 @@ type CallOf<T> = <T as frame_system::Config>::RuntimeCall; /// - Not too high, ensuring the gas value is large enough (at least 7 digits) to encode the /// ref_time, proof_size, and deposit into the less significant (6 lower) digits of the gas value. /// - Not too low, enabling users to adjust the gas price to define a tip. -pub const GAS_PRICE: u32 = 1_000u32; +pub(crate) const GAS_PRICE: u64 = 1_000u64; /// Wraps [`generic::UncheckedExtrinsic`] to support checking unsigned /// [`crate::Call::eth_transact`] extrinsic. @@ -366,29 +366,16 @@ pub trait EthExtra { } }; + let mut info = call.get_dispatch_info(); + let function: CallOf<Self::Config> = call.into(); let nonce = nonce.unwrap_or_default().try_into().map_err(|_| InvalidTransaction::Call)?; + let gas_price = gas_price.unwrap_or_default(); - // Fees calculated with the fixed `GAS_PRICE` - // When we dry-run the transaction, we set the gas to `fee / GAS_PRICE` - let eth_fee_no_tip = U256::from(GAS_PRICE) - .saturating_mul(gas) - .try_into() + let eth_fee = Pallet::<Self::Config>::evm_gas_to_fee(gas, gas_price) .map_err(|_| InvalidTransaction::Call)?; - // Fees calculated from the gas and gas_price of the transaction. - let eth_fee = Pallet::<Self::Config>::convert_evm_to_native( - U256::from(gas_price.unwrap_or_default()).saturating_mul(gas), - ConversionPrecision::RoundUp, - ) - .map_err(|err| { - log::debug!(target: LOG_TARGET, "Failed to compute eth_fee: {err:?}"); - InvalidTransaction::Call - })?; - - let info = call.get_dispatch_info(); - let function: CallOf<Self::Config> = call.into(); - // Fees calculated from the extrinsic, without the tip. + info.extension_weight = Self::get_eth_extension(nonce, 0u32.into()).weight(&function); let actual_fee: BalanceOf<Self::Config> = pallet_transaction_payment::Pallet::<Self::Config>::compute_fee( encoded_len as u32, @@ -405,7 +392,11 @@ pub trait EthExtra { return Err(InvalidTransaction::Payment.into()) } - let tip = eth_fee.saturating_sub(eth_fee_no_tip); + let tip = + Pallet::<Self::Config>::evm_gas_to_fee(gas, gas_price.saturating_sub(GAS_PRICE.into())) + .unwrap_or_default() + .min(actual_fee); + log::debug!(target: LOG_TARGET, "Created checked Ethereum transaction with nonce: {nonce:?} and tip: {tip:?}"); Ok(CheckedExtrinsic { format: ExtrinsicFormat::Signed(signer.into(), Self::get_eth_extension(nonce, tip)), @@ -481,12 +472,20 @@ mod test { } fn estimate_gas(&mut self) { - let dry_run = - crate::Pallet::<Test>::bare_eth_transact(self.tx.clone(), Weight::MAX, |call| { + let dry_run = crate::Pallet::<Test>::bare_eth_transact( + self.tx.clone(), + Weight::MAX, + |call, mut info| { let call = RuntimeCall::Contracts(call); + info.extension_weight = Extra::get_eth_extension(0, 0u32.into()).weight(&call); let uxt: Ex = sp_runtime::generic::UncheckedExtrinsic::new_bare(call).into(); - uxt.encoded_size() as u32 - }); + pallet_transaction_payment::Pallet::<Test>::compute_fee( + uxt.encoded_size() as u32, + &info, + Default::default(), + ) + }, + ); match dry_run { Ok(dry_run) => { @@ -693,9 +692,8 @@ mod test { log::debug!(target: LOG_TARGET, "Gas price: {:?}", tx.gas_price); })) .unwrap(); - - let expected_tip = - tx.gas_price.unwrap() * tx.gas.unwrap() - U256::from(GAS_PRICE) * tx.gas.unwrap(); - assert_eq!(U256::from(extra.1.tip()), expected_tip); + let diff = tx.gas_price.unwrap() - U256::from(GAS_PRICE); + let expected_tip = crate::Pallet::<Test>::evm_gas_to_fee(tx.gas.unwrap(), diff).unwrap(); + assert_eq!(extra.1.tip(), expected_tip); } } diff --git a/substrate/frame/revive/src/exec.rs b/substrate/frame/revive/src/exec.rs index c3adba45403ee6496fe4211bce811bcad4c0f9ce..d7e16dea4564361b0dfa21ab1cea61ea08004e17 100644 --- a/substrate/frame/revive/src/exec.rs +++ b/substrate/frame/revive/src/exec.rs @@ -32,7 +32,6 @@ use core::{fmt::Debug, marker::PhantomData, mem}; use frame_support::{ crypto::ecdsa::ECDSAExt, dispatch::{DispatchResult, DispatchResultWithPostInfo}, - ensure, storage::{with_transaction, TransactionOutcome}, traits::{ fungible::{Inspect, Mutate}, @@ -49,7 +48,7 @@ use frame_system::{ use sp_core::{ ecdsa::Public as ECDSAPublic, sr25519::{Public as SR25519Public, Signature as SR25519Signature}, - ConstU32, Get, H160, H256, U256, + ConstU32, H160, H256, U256, }; use sp_io::{crypto::secp256k1_ecdsa_recover_compressed, hashing::blake2_256}; use sp_runtime::{ @@ -323,6 +322,12 @@ pub trait Ext: sealing::Sealed { <Self::T as Config>::AddressMapper::to_address(self.account_id()) } + /// Get the length of the immutable data. + /// + /// This query is free as it does not need to load the immutable data from storage. + /// Useful when we need a constant time lookup of the length. + fn immutable_data_len(&mut self) -> u32; + /// Returns the immutable data of the current contract. /// /// Returns `Err(InvalidImmutableAccess)` if called from a constructor. @@ -409,51 +414,6 @@ pub trait Ext: sealing::Sealed { /// Sets new code hash and immutable data for an existing contract. fn set_code_hash(&mut self, hash: H256) -> DispatchResult; - /// Returns the number of times the specified contract exists on the call stack. Delegated calls - /// Increment the reference count of a of a stored code by one. - /// - /// # Errors - /// - /// [`Error::CodeNotFound`] is returned if no stored code found having the specified - /// `code_hash`. - fn increment_refcount(code_hash: H256) -> DispatchResult; - - /// Decrement the reference count of a stored code by one. - /// - /// # Note - /// - /// A contract whose reference count dropped to zero isn't automatically removed. A - /// `remove_code` transaction must be submitted by the original uploader to do so. - fn decrement_refcount(code_hash: H256); - - /// Adds a delegate dependency to [`ContractInfo`]'s `delegate_dependencies` field. - /// - /// This ensures that the delegated contract is not removed while it is still in use. It - /// increases the reference count of the code hash and charges a fraction (see - /// [`Config::CodeHashLockupDepositPercent`]) of the code deposit. - /// - /// # Errors - /// - /// - [`Error::MaxDelegateDependenciesReached`] - /// - [`Error::CannotAddSelfAsDelegateDependency`] - /// - [`Error::DelegateDependencyAlreadyExists`] - fn lock_delegate_dependency(&mut self, code_hash: H256) -> DispatchResult; - - /// Removes a delegate dependency from [`ContractInfo`]'s `delegate_dependencies` field. - /// - /// This is the counterpart of [`Self::lock_delegate_dependency`]. It decreases the reference - /// count and refunds the deposit that was charged by [`Self::lock_delegate_dependency`]. - /// - /// # Errors - /// - /// - [`Error::DelegateDependencyNotFound`] - fn unlock_delegate_dependency(&mut self, code_hash: &H256) -> DispatchResult; - - /// Returns the number of locked delegate dependencies. - /// - /// Note: Requires &mut self to access the contract info. - fn locked_delegate_dependencies_count(&mut self) -> usize; - /// Check if running in read-only context. fn is_read_only(&self) -> bool; @@ -776,24 +736,23 @@ where )? { stack.run(executable, input_data).map(|_| stack.first_frame.last_frame_output) } else { + let result = Self::transfer_from_origin(&origin, &origin, &dest, value); if_tracing(|t| { - let address = - origin.account_id().map(T::AddressMapper::to_address).unwrap_or_default(); - let dest = T::AddressMapper::to_address(&dest); - t.enter_child_span(address, dest, false, false, value, &input_data, Weight::zero()); + t.enter_child_span( + origin.account_id().map(T::AddressMapper::to_address).unwrap_or_default(), + T::AddressMapper::to_address(&dest), + false, + false, + value, + &input_data, + Weight::zero(), + ); + match result { + Ok(ref output) => t.exit_child_span(&output, Weight::zero()), + Err(e) => t.exit_child_span_with_error(e.error.into(), Weight::zero()), + } }); - let result = Self::transfer_from_origin(&origin, &origin, &dest, value); - match result { - Ok(ref output) => { - if_tracing(|t| { - t.exit_child_span(&output, Weight::zero()); - }); - }, - Err(e) => { - if_tracing(|t| t.exit_child_span_with_error(e.error.into(), Weight::zero())); - }, - } result } } @@ -914,61 +873,75 @@ where read_only: bool, origin_is_caller: bool, ) -> Result<Option<(Frame<T>, E)>, ExecError> { - let (account_id, contract_info, executable, delegate, entry_point) = match frame_args { - FrameArgs::Call { dest, cached_info, delegated_call } => { - let contract = if let Some(contract) = cached_info { - contract - } else { - if let Some(contract) = - <ContractInfoOf<T>>::get(T::AddressMapper::to_address(&dest)) - { + let (account_id, contract_info, executable, delegate, entry_point, nested_gas) = + match frame_args { + FrameArgs::Call { dest, cached_info, delegated_call } => { + let contract = if let Some(contract) = cached_info { contract } else { - return Ok(None); - } - }; + if let Some(contract) = + <ContractInfoOf<T>>::get(T::AddressMapper::to_address(&dest)) + { + contract + } else { + return Ok(None); + } + }; - let (executable, delegate_caller) = - if let Some(DelegatedCall { executable, caller, callee }) = delegated_call { + let mut nested_gas = gas_meter.nested(gas_limit); + let (executable, delegate_caller) = if let Some(DelegatedCall { + executable, + caller, + callee, + }) = delegated_call + { (executable, Some(DelegateInfo { caller, callee })) } else { - (E::from_storage(contract.code_hash, gas_meter)?, None) + (E::from_storage(contract.code_hash, &mut nested_gas)?, None) }; - (dest, contract, executable, delegate_caller, ExportedFunction::Call) - }, - FrameArgs::Instantiate { sender, executable, salt, input_data } => { - let deployer = T::AddressMapper::to_address(&sender); - let account_nonce = <System<T>>::account_nonce(&sender); - let address = if let Some(salt) = salt { - address::create2(&deployer, executable.code(), input_data, salt) - } else { - use sp_runtime::Saturating; - address::create1( - &deployer, - // the Nonce from the origin has been incremented pre-dispatch, so we - // need to subtract 1 to get the nonce at the time of the call. - if origin_is_caller { - account_nonce.saturating_sub(1u32.into()).saturated_into() - } else { - account_nonce.saturated_into() - }, + ( + dest, + contract, + executable, + delegate_caller, + ExportedFunction::Call, + nested_gas, ) - }; - let contract = ContractInfo::new( - &address, - <System<T>>::account_nonce(&sender), - *executable.code_hash(), - )?; - ( - T::AddressMapper::to_fallback_account_id(&address), - contract, - executable, - None, - ExportedFunction::Constructor, - ) - }, - }; + }, + FrameArgs::Instantiate { sender, executable, salt, input_data } => { + let deployer = T::AddressMapper::to_address(&sender); + let account_nonce = <System<T>>::account_nonce(&sender); + let address = if let Some(salt) = salt { + address::create2(&deployer, executable.code(), input_data, salt) + } else { + use sp_runtime::Saturating; + address::create1( + &deployer, + // the Nonce from the origin has been incremented pre-dispatch, so we + // need to subtract 1 to get the nonce at the time of the call. + if origin_is_caller { + account_nonce.saturating_sub(1u32.into()).saturated_into() + } else { + account_nonce.saturated_into() + }, + ) + }; + let contract = ContractInfo::new( + &address, + <System<T>>::account_nonce(&sender), + *executable.code_hash(), + )?; + ( + T::AddressMapper::to_fallback_account_id(&address), + contract, + executable, + None, + ExportedFunction::Constructor, + gas_meter.nested(gas_limit), + ) + }, + }; let frame = Frame { delegate, @@ -976,7 +949,7 @@ where contract_info: CachedContract::Cached(contract_info), account_id, entry_point, - nested_gas: gas_meter.nested(gas_limit), + nested_gas, nested_storage: storage_meter.nested(deposit_limit), allows_reentry: true, read_only, @@ -1064,23 +1037,33 @@ where let value_transferred = frame.value_transferred; let account_id = &frame.account_id.clone(); - // We need to charge the storage deposit before the initial transfer so that - // it can create the account in case the initial transfer is < ed. + // We need to make sure that the contract's account exists before calling its + // constructor. if entry_point == ExportedFunction::Constructor { // Root origin can't be used to instantiate a contract, so it is safe to assume that // if we reached this point the origin has an associated account. let origin = &self.origin.account_id()?; - frame.nested_storage.charge_instantiate( - origin, - &account_id, - frame.contract_info.get(&account_id), - executable.code_info(), - self.skip_transfer, - )?; + let ed = <Contracts<T>>::min_balance(); + frame.nested_storage.record_charge(&StorageDeposit::Charge(ed)); + if self.skip_transfer { + T::Currency::set_balance(account_id, ed); + } else { + T::Currency::transfer(origin, account_id, ed, Preservation::Preserve)?; + } + + // A consumer is added at account creation and removed it on termination, otherwise + // the runtime could remove the account. As long as a contract exists its + // account must exist. With the consumer, a correct runtime cannot remove the + // account. + <System<T>>::inc_consumers(account_id)?; + // Needs to be incremented before calling into the code so that it is visible // in case of recursion. <System<T>>::inc_account_nonce(caller.account_id()?); + + // The incremented refcount should be visible to the constructor. + <CodeInfo<T>>::increment_refcount(*executable.code_hash())?; } // Every non delegate call or instantiate also optionally transfers the balance. @@ -1097,6 +1080,7 @@ where let contract_address = T::AddressMapper::to_address(account_id); let maybe_caller_address = caller.account_id().map(T::AddressMapper::to_address); + let code_deposit = executable.code_info().deposit(); if_tracing(|tracer| { tracer.enter_child_span( @@ -1131,6 +1115,15 @@ where let frame = self.top_frame_mut(); + // The deposit we charge for a contract depends on the size of the immutable data. + // Hence we need to delay charging the base deposit after execution. + if entry_point == ExportedFunction::Constructor { + let deposit = frame.contract_info().update_base_deposit(code_deposit); + frame + .nested_storage + .charge_deposit(frame.account_id.clone(), StorageDeposit::Charge(deposit)); + } + // The storage deposit is only charged at the end of every call stack. // To make sure that no sub call uses more than it is allowed to, // the limit is manually enforced here. @@ -1140,13 +1133,6 @@ where .enforce_limit(contract) .map_err(|e| ExecError { error: e, origin: ErrorOrigin::Callee })?; - // It is not allowed to terminate a contract inside its constructor. - if entry_point == ExportedFunction::Constructor && - matches!(frame.contract_info, CachedContract::Terminated) - { - return Err(Error::<T>::TerminatedInConstructor.into()); - } - Ok(output) }; @@ -1441,13 +1427,28 @@ where )? { self.run(executable, input_data) } else { - Self::transfer_from_origin( + let result = Self::transfer_from_origin( &self.origin, &Origin::from_account_id(self.account_id().clone()), &dest, value, - )?; - Ok(()) + ); + if_tracing(|t| { + t.enter_child_span( + T::AddressMapper::to_address(self.account_id()), + T::AddressMapper::to_address(&dest), + false, + false, + value, + &input_data, + Weight::zero(), + ); + match result { + Ok(ref output) => t.exit_child_span(&output, Weight::zero()), + Err(e) => t.exit_child_span_with_error(e.error.into(), Weight::zero()), + } + }); + result.map(|_| ()) } }; @@ -1534,6 +1535,9 @@ where return Err(Error::<T>::TerminatedWhileReentrant.into()); } let frame = self.top_frame_mut(); + if frame.entry_point == ExportedFunction::Constructor { + return Err(Error::<T>::TerminatedInConstructor.into()); + } let info = frame.terminate(); let beneficiary_account = T::AddressMapper::to_account_id(beneficiary); frame.nested_storage.terminate(&info, beneficiary_account); @@ -1542,14 +1546,7 @@ where let account_address = T::AddressMapper::to_address(&frame.account_id); ContractInfoOf::<T>::remove(&account_address); ImmutableDataOf::<T>::remove(&account_address); - Self::decrement_refcount(info.code_hash); - - for (code_hash, deposit) in info.delegate_dependencies() { - Self::decrement_refcount(*code_hash); - frame - .nested_storage - .charge_deposit(frame.account_id.clone(), StorageDeposit::Refund(*deposit)); - } + <CodeInfo<T>>::decrement_refcount(info.code_hash)?; Ok(()) } @@ -1655,6 +1652,10 @@ where self.caller_is_origin() && self.origin == Origin::Root } + fn immutable_data_len(&mut self) -> u32 { + self.top_frame_mut().contract_info().immutable_data_len() + } + fn get_immutable_data(&mut self) -> Result<ImmutableData, DispatchError> { if self.top_frame().entry_point == ExportedFunction::Constructor { return Err(Error::<T>::InvalidImmutableAccess.into()); @@ -1671,17 +1672,12 @@ where } fn set_immutable_data(&mut self, data: ImmutableData) -> Result<(), DispatchError> { - if self.top_frame().entry_point == ExportedFunction::Call { + let frame = self.top_frame_mut(); + if frame.entry_point == ExportedFunction::Call || data.is_empty() { return Err(Error::<T>::InvalidImmutableAccess.into()); } - - let account_id = self.account_id().clone(); - let len = data.len() as u32; - let amount = self.top_frame_mut().contract_info().set_immutable_data_len(len)?; - self.top_frame_mut().nested_storage.charge_deposit(account_id.clone(), amount); - - <ImmutableDataOf<T>>::insert(T::AddressMapper::to_address(&account_id), &data); - + frame.contract_info().set_immutable_data_len(data.len() as u32); + <ImmutableDataOf<T>>::insert(T::AddressMapper::to_address(&frame.account_id), &data); Ok(()) } @@ -1806,68 +1802,17 @@ where let code_info = CodeInfoOf::<T>::get(hash).ok_or(Error::<T>::CodeNotFound)?; let old_base_deposit = info.storage_base_deposit(); - let new_base_deposit = info.update_base_deposit(&code_info); + let new_base_deposit = info.update_base_deposit(code_info.deposit()); let deposit = StorageDeposit::Charge(new_base_deposit) .saturating_sub(&StorageDeposit::Charge(old_base_deposit)); frame.nested_storage.charge_deposit(frame.account_id.clone(), deposit); - Self::increment_refcount(hash)?; - Self::decrement_refcount(prev_hash); - Ok(()) - } - - fn increment_refcount(code_hash: H256) -> DispatchResult { - <CodeInfoOf<Self::T>>::mutate(code_hash, |existing| -> Result<(), DispatchError> { - if let Some(info) = existing { - *info.refcount_mut() = info.refcount().saturating_add(1); - Ok(()) - } else { - Err(Error::<T>::CodeNotFound.into()) - } - }) - } - - fn decrement_refcount(code_hash: H256) { - <CodeInfoOf<T>>::mutate(code_hash, |existing| { - if let Some(info) = existing { - *info.refcount_mut() = info.refcount().saturating_sub(1); - } - }); - } - - fn lock_delegate_dependency(&mut self, code_hash: H256) -> DispatchResult { - let frame = self.top_frame_mut(); - let info = frame.contract_info.get(&frame.account_id); - ensure!(code_hash != info.code_hash, Error::<T>::CannotAddSelfAsDelegateDependency); - - let code_info = CodeInfoOf::<T>::get(code_hash).ok_or(Error::<T>::CodeNotFound)?; - let deposit = T::CodeHashLockupDepositPercent::get().mul_ceil(code_info.deposit()); - - info.lock_delegate_dependency(code_hash, deposit)?; - Self::increment_refcount(code_hash)?; - frame - .nested_storage - .charge_deposit(frame.account_id.clone(), StorageDeposit::Charge(deposit)); + <CodeInfo<T>>::increment_refcount(hash)?; + <CodeInfo<T>>::decrement_refcount(prev_hash)?; Ok(()) } - fn unlock_delegate_dependency(&mut self, code_hash: &H256) -> DispatchResult { - let frame = self.top_frame_mut(); - let info = frame.contract_info.get(&frame.account_id); - - let deposit = info.unlock_delegate_dependency(code_hash)?; - Self::decrement_refcount(*code_hash); - frame - .nested_storage - .charge_deposit(frame.account_id.clone(), StorageDeposit::Refund(deposit)); - Ok(()) - } - - fn locked_delegate_dependencies_count(&mut self) -> usize { - self.top_frame_mut().contract_info().delegate_dependencies_count() - } - fn is_read_only(&self) -> bool { self.top_frame().read_only } @@ -1942,7 +1887,7 @@ mod tests { #[derive(Clone)] struct MockExecutable { func: Rc<dyn for<'a> Fn(MockCtx<'a>, &Self) -> ExecResult + 'static>, - func_type: ExportedFunction, + constructor: Rc<dyn for<'a> Fn(MockCtx<'a>, &Self) -> ExecResult + 'static>, code_hash: H256, code_info: CodeInfo<Test>, } @@ -1961,6 +1906,39 @@ mod tests { fn insert( func_type: ExportedFunction, f: impl Fn(MockCtx, &MockExecutable) -> ExecResult + 'static, + ) -> H256 { + Loader::mutate(|loader| { + // Generate code hashes from contract index value. + let hash = H256(keccak_256(&loader.counter.to_le_bytes())); + loader.counter += 1; + if func_type == ExportedFunction::Constructor { + loader.map.insert( + hash, + MockExecutable { + func: Rc::new(|_, _| exec_success()), + constructor: Rc::new(f), + code_hash: hash, + code_info: CodeInfo::<Test>::new(ALICE), + }, + ); + } else { + loader.map.insert( + hash, + MockExecutable { + func: Rc::new(f), + constructor: Rc::new(|_, _| exec_success()), + code_hash: hash, + code_info: CodeInfo::<Test>::new(ALICE), + }, + ); + } + hash + }) + } + + fn insert_both( + constructor: impl Fn(MockCtx, &MockExecutable) -> ExecResult + 'static, + call: impl Fn(MockCtx, &MockExecutable) -> ExecResult + 'static, ) -> H256 { Loader::mutate(|loader| { // Generate code hashes from contract index value. @@ -1969,8 +1947,8 @@ mod tests { loader.map.insert( hash, MockExecutable { - func: Rc::new(f), - func_type, + func: Rc::new(call), + constructor: Rc::new(constructor), code_hash: hash, code_info: CodeInfo::<Test>::new(ALICE), }, @@ -1996,9 +1974,6 @@ mod tests { function: ExportedFunction, input_data: Vec<u8>, ) -> ExecResult { - if let Constructor = function { - E::increment_refcount(self.code_hash).unwrap(); - } // # Safety // // We know that we **always** call execute with a `MockStack` in this test. @@ -2009,10 +1984,10 @@ mod tests { // `E: Ext`. However, `MockExecutable` can't be generic over `E` as it would // constitute a cycle. let ext = unsafe { mem::transmute(ext) }; - if function == self.func_type { - (self.func)(MockCtx { ext, input_data }, &self) + if function == ExportedFunction::Constructor { + (self.constructor)(MockCtx { ext, input_data }, &self) } else { - exec_success() + (self.func)(MockCtx { ext, input_data }, &self) } } @@ -3166,7 +3141,7 @@ mod tests { #[test] fn termination_from_instantiate_fails() { let terminate_ch = MockLoader::insert(Constructor, |ctx, _| { - ctx.ext.terminate(&ALICE_ADDR).unwrap(); + ctx.ext.terminate(&ALICE_ADDR)?; exec_success() }); @@ -3194,7 +3169,10 @@ mod tests { Some(&[0; 32]), false, ), - Err(Error::<Test>::TerminatedInConstructor.into()) + Err(ExecError { + error: Error::<Test>::TerminatedInConstructor.into(), + origin: ErrorOrigin::Callee + }) ); assert_eq!(&events(), &[]); @@ -4706,41 +4684,46 @@ mod tests { } #[test] - fn immutable_data_set_works_only_once() { - let dummy_ch = MockLoader::insert(Constructor, move |ctx, _| { - // Calling `set_immutable_data` the first time should work - assert_ok!(ctx.ext.set_immutable_data(vec![0, 1, 2, 3].try_into().unwrap())); - // Calling `set_immutable_data` the second time should error out - assert_eq!( - ctx.ext.set_immutable_data(vec![0, 1, 2, 3].try_into().unwrap()), - Err(Error::<Test>::InvalidImmutableAccess.into()) - ); - exec_success() - }); - let instantiator_ch = MockLoader::insert(Call, { + fn immutable_data_set_overrides() { + let hash = MockLoader::insert_both( move |ctx, _| { - let value = <Test as Config>::Currency::minimum_balance().into(); - ctx.ext - .instantiate(Weight::MAX, U256::MAX, dummy_ch, value, vec![], None) - .unwrap(); - + // Calling `set_immutable_data` the first time should work + assert_ok!(ctx.ext.set_immutable_data(vec![0, 1, 2, 3].try_into().unwrap())); + // Calling `set_immutable_data` the second time overrides the original one + assert_ok!(ctx.ext.set_immutable_data(vec![7, 5].try_into().unwrap())); exec_success() - } - }); + }, + move |ctx, _| { + assert_eq!(ctx.ext.get_immutable_data().unwrap().into_inner(), vec![7, 5]); + exec_success() + }, + ); ExtBuilder::default() .with_code_hashes(MockLoader::code_hashes()) .existential_deposit(15) .build() .execute_with(|| { set_balance(&ALICE, 1000); - set_balance(&BOB, 100); - place_contract(&BOB, instantiator_ch); let origin = Origin::from_account_id(ALICE); let mut storage_meter = storage::meter::Meter::new(&origin, 200, 0).unwrap(); + let mut gas_meter = GasMeter::<Test>::new(GAS_LIMIT); + + let addr = MockStack::run_instantiate( + ALICE, + MockExecutable::from_storage(hash, &mut gas_meter).unwrap(), + &mut gas_meter, + &mut storage_meter, + U256::zero(), + vec![], + None, + false, + ) + .unwrap() + .0; MockStack::run_call( origin, - BOB_ADDR, + addr, &mut GasMeter::<Test>::new(GAS_LIMIT), &mut storage_meter, U256::zero(), diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs index 74b4b12cce184b0cccb9cc0b5c081878e77649dd..6fcddfae59d3c8918b3e65df289a4621e29696eb 100644 --- a/substrate/frame/revive/src/lib.rs +++ b/substrate/frame/revive/src/lib.rs @@ -42,7 +42,7 @@ pub mod weights; use crate::{ evm::{runtime::GAS_PRICE, GasEncoder, GenericTransaction}, - exec::{AccountIdOf, ExecError, Executable, Ext, Key, Stack as ExecStack}, + exec::{AccountIdOf, ExecError, Executable, Key, Stack as ExecStack}, gas::GasMeter, storage::{meter::Meter as StorageMeter, ContractInfo, DeletionQueueManager}, wasm::{CodeInfo, RuntimeCosts, WasmBlob}, @@ -52,7 +52,7 @@ use codec::{Codec, Decode, Encode}; use environmental::*; use frame_support::{ dispatch::{ - DispatchErrorWithPostInfo, DispatchResultWithPostInfo, GetDispatchInfo, Pays, + DispatchErrorWithPostInfo, DispatchInfo, DispatchResultWithPostInfo, GetDispatchInfo, Pays, PostDispatchInfo, RawOrigin, }, ensure, @@ -70,7 +70,6 @@ use frame_system::{ pallet_prelude::{BlockNumberFor, OriginFor}, Pallet as System, }; -use pallet_transaction_payment::OnChargeTransaction; use scale_info::TypeInfo; use sp_core::{H160, H256, U256}; use sp_runtime::{ @@ -92,7 +91,6 @@ pub use crate::wasm::SyscallDoc; type TrieId = BoundedVec<u8, ConstU32<128>>; type BalanceOf<T> = <<T as Config>::Currency as Inspect<<T as frame_system::Config>::AccountId>>::Balance; -type OnChargeTransactionBalanceOf<T> = <<T as pallet_transaction_payment::Config>::OnChargeTransaction as OnChargeTransaction<T>>::Balance; type CodeVec = BoundedVec<u8, ConstU32<{ limits::code::BLOB_BYTES }>>; type ImmutableData = BoundedVec<u8, ConstU32<{ limits::IMMUTABLE_BYTES }>>; @@ -211,9 +209,8 @@ pub mod pallet { type DepositPerItem: Get<BalanceOf<Self>>; /// The percentage of the storage deposit that should be held for using a code hash. - /// Instantiating a contract, or calling [`chain_extension::Ext::lock_delegate_dependency`] - /// protects the code from being removed. In order to prevent abuse these actions are - /// protected with a percentage of the code deposit. + /// Instantiating a contract, protects the code from being removed. In order to prevent + /// abuse these actions are protected with a percentage of the code deposit. #[pallet::constant] type CodeHashLockupDepositPercent: Get<Perbill>; @@ -493,6 +490,8 @@ pub mod pallet { AccountAlreadyMapped, /// The transaction used to dry-run a contract is invalid. InvalidGenericTransaction, + /// The refcount of a code either over or underflowed. + RefcountOverOrUnderflow, } /// A reason for the pallet contracts placing a hold on funds. @@ -724,7 +723,6 @@ pub mod pallet { #[pallet::compact] storage_deposit_limit: BalanceOf<T>, data: Vec<u8>, ) -> DispatchResultWithPostInfo { - log::info!(target: LOG_TARGET, "Call: {:?} {:?} {:?}", dest, value, data); let mut output = Self::bare_call( origin, dest, @@ -908,8 +906,8 @@ pub mod pallet { } else { return Err(<Error<T>>::ContractNotFound.into()); }; - <ExecStack<T, WasmBlob<T>>>::increment_refcount(code_hash)?; - <ExecStack<T, WasmBlob<T>>>::decrement_refcount(contract.code_hash); + <CodeInfo<T>>::increment_refcount(code_hash)?; + <CodeInfo<T>>::decrement_refcount(contract.code_hash)?; contract.code_hash = code_hash; Ok(()) }) @@ -1019,7 +1017,7 @@ where storage_deposit = storage_meter .try_into_deposit(&origin, storage_deposit_limit.is_unchecked()) .inspect_err(|err| { - log::error!(target: LOG_TARGET, "Failed to transfer deposit: {err:?}"); + log::debug!(target: LOG_TARGET, "Failed to transfer deposit: {err:?}"); })?; Ok(result) }; @@ -1110,24 +1108,21 @@ where /// /// - `tx`: The Ethereum transaction to simulate. /// - `gas_limit`: The gas limit enforced during contract execution. - /// - `utx_encoded_size`: A function that takes a call and returns the encoded size of the - /// unchecked extrinsic. + /// - `tx_fee`: A function that returns the fee for the given call and dispatch info. pub fn bare_eth_transact( mut tx: GenericTransaction, gas_limit: Weight, - utx_encoded_size: impl Fn(Call<T>) -> u32, + tx_fee: impl Fn(Call<T>, DispatchInfo) -> BalanceOf<T>, ) -> Result<EthTransactInfo<BalanceOf<T>>, EthTransactError> where - T: pallet_transaction_payment::Config, <T as frame_system::Config>::RuntimeCall: Dispatchable<Info = frame_support::dispatch::DispatchInfo>, <T as Config>::RuntimeCall: From<crate::Call<T>>, <T as Config>::RuntimeCall: Encode, - OnChargeTransactionBalanceOf<T>: Into<BalanceOf<T>>, T::Nonce: Into<U256>, T::Hash: frame_support::traits::IsType<H256>, { - log::debug!(target: LOG_TARGET, "bare_eth_transact: tx: {tx:?} gas_limit: {gas_limit:?}"); + log::trace!(target: LOG_TARGET, "bare_eth_transact: tx: {tx:?} gas_limit: {gas_limit:?}"); let from = tx.from.unwrap_or_default(); let origin = T::AddressMapper::to_account_id(&from); @@ -1297,19 +1292,12 @@ where let eth_dispatch_call = crate::Call::<T>::eth_transact { payload: unsigned_tx.dummy_signed_payload() }; - - let encoded_len = utx_encoded_size(eth_dispatch_call); - let fee = pallet_transaction_payment::Pallet::<T>::compute_fee( - encoded_len, - &dispatch_info, - 0u32.into(), - ) - .into(); - let eth_gas = Self::evm_fee_to_gas(fee); + let fee = tx_fee(eth_dispatch_call, dispatch_info); + let raw_gas = Self::evm_fee_to_gas(fee); let eth_gas = - T::EthGasEncoder::encode(eth_gas, result.gas_required, result.storage_deposit); + T::EthGasEncoder::encode(raw_gas, result.gas_required, result.storage_deposit); - log::trace!(target: LOG_TARGET, "bare_eth_call: encoded_len: {encoded_len:?} eth_gas: {eth_gas:?}"); + log::trace!(target: LOG_TARGET, "bare_eth_call: raw_gas: {raw_gas:?} eth_gas: {eth_gas:?}"); result.eth_gas = eth_gas; Ok(result) } @@ -1320,7 +1308,7 @@ where Self::convert_native_to_evm(T::Currency::reducible_balance(&account, Preserve, Polite)) } - /// Convert an EVM fee into a gas value, using the fixed `GAS_PRICE`. + /// Convert a substrate fee into a gas value, using the fixed `GAS_PRICE`. /// The gas is calculated as `fee / GAS_PRICE`, rounded up to the nearest integer. pub fn evm_fee_to_gas(fee: BalanceOf<T>) -> U256 { let fee = Self::convert_native_to_evm(fee); @@ -1333,6 +1321,13 @@ where } } + /// Convert a gas value into a substrate fee + fn evm_gas_to_fee(gas: U256, gas_price: U256) -> Result<BalanceOf<T>, Error<T>> { + let fee = gas.saturating_mul(gas_price); + Self::convert_evm_to_native(fee, ConversionPrecision::RoundUp) + } + + /// Get the block gas limit. pub fn evm_block_gas_limit() -> U256 { let max_block_weight = T::BlockWeights::get() .get(DispatchClass::Normal) @@ -1343,6 +1338,11 @@ where Self::evm_fee_to_gas(fee) } + /// Get the gas price. + pub fn evm_gas_price() -> U256 { + GAS_PRICE.into() + } + /// A generalized version of [`Self::upload_code`]. /// /// It is identical to [`Self::upload_code`] and only differs in the information it returns. @@ -1453,6 +1453,9 @@ sp_api::decl_runtime_apis! { /// Returns the free balance of the given `[H160]` address, using EVM decimals. fn balance(address: H160) -> U256; + /// Returns the gas price. + fn gas_price() -> U256; + /// Returns the nonce of the given `[H160]` address. fn nonce(address: H160) -> Nonce; diff --git a/substrate/frame/revive/src/limits.rs b/substrate/frame/revive/src/limits.rs index 61932575a4c10d67ab1e1aaa9c4544f1e7166e64..a4060cf6cc91cf030a869af8abd0bc608b2055ac 100644 --- a/substrate/frame/revive/src/limits.rs +++ b/substrate/frame/revive/src/limits.rs @@ -43,9 +43,6 @@ pub const CALL_STACK_DEPTH: u32 = 5; /// We set it to the same limit that ethereum has. It is unlikely to change. pub const NUM_EVENT_TOPICS: u32 = 4; -/// The maximum number of code hashes a contract can lock. -pub const DELEGATE_DEPENDENCIES: u32 = 32; - /// Maximum size of events (including topics) and storage values. pub const PAYLOAD_BYTES: u32 = 416; diff --git a/substrate/frame/revive/src/storage.rs b/substrate/frame/revive/src/storage.rs index b7156588d44c659243e3bde3a2b8d19968ebe926..a761223aadfdde5e9f8936860d2aa25ba04cfb40 100644 --- a/substrate/frame/revive/src/storage.rs +++ b/substrate/frame/revive/src/storage.rs @@ -22,11 +22,10 @@ pub mod meter; use crate::{ address::AddressMapper, exec::{AccountIdOf, Key}, - limits, storage::meter::Diff, weights::WeightInfo, - BalanceOf, CodeInfo, Config, ContractInfoOf, DeletionQueue, DeletionQueueCounter, Error, - StorageDeposit, TrieId, SENTINEL, + BalanceOf, Config, ContractInfoOf, DeletionQueue, DeletionQueueCounter, Error, TrieId, + SENTINEL, }; use alloc::vec::Vec; use codec::{Decode, Encode, MaxEncodedLen}; @@ -36,18 +35,14 @@ use frame_support::{ weights::{Weight, WeightMeter}, CloneNoBound, DefaultNoBound, }; -use meter::DepositOf; use scale_info::TypeInfo; -use sp_core::{ConstU32, Get, H160}; +use sp_core::{Get, H160}; use sp_io::KillStorageResult; use sp_runtime::{ traits::{Hash, Saturating, Zero}, - BoundedBTreeMap, DispatchError, DispatchResult, RuntimeDebug, + DispatchError, RuntimeDebug, }; -type DelegateDependencyMap<T> = - BoundedBTreeMap<sp_core::H256, BalanceOf<T>, ConstU32<{ limits::DELEGATE_DEPENDENCIES }>>; - /// Information for managing an account and its sub trie abstraction. /// This is the required info to cache for an account. #[derive(Encode, Decode, CloneNoBound, PartialEq, Eq, RuntimeDebug, TypeInfo, MaxEncodedLen)] @@ -70,12 +65,6 @@ pub struct ContractInfo<T: Config> { /// We need to store this information separately so it is not used when calculating any refunds /// since the base deposit can only ever be refunded on contract termination. storage_base_deposit: BalanceOf<T>, - /// Map of code hashes and deposit balances. - /// - /// Tracks the code hash and deposit held for locking delegate dependencies. Dependencies added - /// to the map can not be removed from the chain state and can be safely used for delegate - /// calls. - delegate_dependencies: DelegateDependencyMap<T>, /// The size of the immutable data of this contract. immutable_data_len: u32, } @@ -110,18 +99,12 @@ impl<T: Config> ContractInfo<T> { storage_byte_deposit: Zero::zero(), storage_item_deposit: Zero::zero(), storage_base_deposit: Zero::zero(), - delegate_dependencies: Default::default(), immutable_data_len: 0, }; Ok(contract) } - /// Returns the number of locked delegate dependencies. - pub fn delegate_dependencies_count(&self) -> usize { - self.delegate_dependencies.len() - } - /// Associated child trie unique id is built from the hash part of the trie id. pub fn child_trie_info(&self) -> ChildInfo { ChildInfo::new_default(self.trie_id.as_ref()) @@ -240,58 +223,27 @@ impl<T: Config> ContractInfo<T> { /// Sets and returns the contract base deposit. /// /// The base deposit is updated when the `code_hash` of the contract changes, as it depends on - /// the deposit paid to upload the contract's code. - pub fn update_base_deposit(&mut self, code_info: &CodeInfo<T>) -> BalanceOf<T> { - let info_deposit = - Diff { bytes_added: self.encoded_size() as u32, items_added: 1, ..Default::default() } - .update_contract::<T>(None) - .charge_or_zero(); + /// the deposit paid to upload the contract's code. It also depends on the size of immutable + /// storage which is also changed when the code hash of a contract is changed. + pub fn update_base_deposit(&mut self, code_deposit: BalanceOf<T>) -> BalanceOf<T> { + let contract_deposit = Diff { + bytes_added: (self.encoded_size() as u32).saturating_add(self.immutable_data_len), + items_added: if self.immutable_data_len == 0 { 1 } else { 2 }, + ..Default::default() + } + .update_contract::<T>(None) + .charge_or_zero(); // Instantiating the contract prevents its code to be deleted, therefore the base deposit // includes a fraction (`T::CodeHashLockupDepositPercent`) of the original storage deposit // to prevent abuse. - let upload_deposit = T::CodeHashLockupDepositPercent::get().mul_ceil(code_info.deposit()); + let code_deposit = T::CodeHashLockupDepositPercent::get().mul_ceil(code_deposit); - let deposit = info_deposit.saturating_add(upload_deposit); + let deposit = contract_deposit.saturating_add(code_deposit); self.storage_base_deposit = deposit; deposit } - /// Adds a new delegate dependency to the contract. - /// The `amount` is the amount of funds that will be reserved for the dependency. - /// - /// Returns an error if the maximum number of delegate_dependencies is reached or if - /// the delegate dependency already exists. - pub fn lock_delegate_dependency( - &mut self, - code_hash: sp_core::H256, - amount: BalanceOf<T>, - ) -> DispatchResult { - self.delegate_dependencies - .try_insert(code_hash, amount) - .map_err(|_| Error::<T>::MaxDelegateDependenciesReached)? - .map_or(Ok(()), |_| Err(Error::<T>::DelegateDependencyAlreadyExists)) - .map_err(Into::into) - } - - /// Removes the delegate dependency from the contract and returns the deposit held for this - /// dependency. - /// - /// Returns an error if the entry doesn't exist. - pub fn unlock_delegate_dependency( - &mut self, - code_hash: &sp_core::H256, - ) -> Result<BalanceOf<T>, DispatchError> { - self.delegate_dependencies - .remove(code_hash) - .ok_or(Error::<T>::DelegateDependencyNotFound.into()) - } - - /// Returns the delegate_dependencies of the contract. - pub fn delegate_dependencies(&self) -> &DelegateDependencyMap<T> { - &self.delegate_dependencies - } - /// Push a contract's trie to the deletion queue for lazy removal. /// /// You must make sure that the contract is also removed when queuing the trie for deletion. @@ -367,27 +319,8 @@ impl<T: Config> ContractInfo<T> { } /// Set the number of immutable bytes of this contract. - /// - /// On success, returns the storage deposit to be charged. - /// - /// Returns `Err(InvalidImmutableAccess)` if: - /// - The immutable bytes of this contract are not 0. This indicates that the immutable data - /// have already been set; it is only valid to set the immutable data exactly once. - /// - The provided `immutable_data_len` value was 0; it is invalid to set empty immutable data. - pub fn set_immutable_data_len( - &mut self, - immutable_data_len: u32, - ) -> Result<DepositOf<T>, DispatchError> { - if self.immutable_data_len != 0 || immutable_data_len == 0 { - return Err(Error::<T>::InvalidImmutableAccess.into()); - } - + pub fn set_immutable_data_len(&mut self, immutable_data_len: u32) { self.immutable_data_len = immutable_data_len; - - let amount = T::DepositPerByte::get() - .saturating_mul(immutable_data_len.into()) - .saturating_add(T::DepositPerItem::get()); - Ok(StorageDeposit::Charge(amount)) } } diff --git a/substrate/frame/revive/src/storage/meter.rs b/substrate/frame/revive/src/storage/meter.rs index cd390c86f63ae94a30d065def82e628a0091b653..ddd4a3bae87f0d65614132fde12cd5ee4f301505 100644 --- a/substrate/frame/revive/src/storage/meter.rs +++ b/substrate/frame/revive/src/storage/meter.rs @@ -18,8 +18,8 @@ //! This module contains functions to meter the storage deposit. use crate::{ - storage::ContractInfo, AccountIdOf, BalanceOf, CodeInfo, Config, Error, HoldReason, Inspect, - Origin, Pallet, StorageDeposit as Deposit, System, LOG_TARGET, + storage::ContractInfo, AccountIdOf, BalanceOf, Config, Error, HoldReason, Inspect, Origin, + StorageDeposit as Deposit, System, LOG_TARGET, }; use alloc::vec::Vec; use core::{fmt::Debug, marker::PhantomData}; @@ -404,49 +404,26 @@ impl<T: Config, E: Ext<T>> RawMeter<T, E, Nested> { }; } - /// Adds a deposit charge. + /// Adds a charge without recording it in the contract info. /// /// Use this method instead of [`Self::charge`] when the charge is not the result of a storage - /// change. This is the case when a `delegate_dependency` is added or removed, or when the - /// `code_hash` is updated. [`Self::charge`] cannot be used here because we keep track of the - /// deposit charge separately from the storage charge. + /// change within the contract's child trie. This is the case when when the `code_hash` is + /// updated. [`Self::charge`] cannot be used here because we keep track of the deposit charge + /// separately from the storage charge. + /// + /// If this functions is used the amount of the charge has to be stored by the caller somewhere + /// alese in order to be able to refund it. pub fn charge_deposit(&mut self, contract: T::AccountId, amount: DepositOf<T>) { - self.total_deposit = self.total_deposit.saturating_add(&amount); + self.record_charge(&amount); self.charges.push(Charge { contract, amount, state: ContractState::Alive }); } - /// Charges from `origin` a storage deposit for contract instantiation. + /// Record a charge that has taken place externally. /// - /// This immediately transfers the balance in order to create the account. - pub fn charge_instantiate( - &mut self, - origin: &T::AccountId, - contract: &T::AccountId, - contract_info: &mut ContractInfo<T>, - code_info: &CodeInfo<T>, - skip_transfer: bool, - ) -> Result<(), DispatchError> { - debug_assert!(matches!(self.contract_state(), ContractState::Alive)); - - // We need to make sure that the contract's account exists. - let ed = Pallet::<T>::min_balance(); - self.total_deposit = Deposit::Charge(ed); - if skip_transfer { - T::Currency::set_balance(contract, ed); - } else { - T::Currency::transfer(origin, contract, ed, Preservation::Preserve)?; - } - - // A consumer is added at account creation and removed it on termination, otherwise the - // runtime could remove the account. As long as a contract exists its account must exist. - // With the consumer, a correct runtime cannot remove the account. - System::<T>::inc_consumers(contract)?; - - let deposit = contract_info.update_base_deposit(&code_info); - let deposit = Deposit::Charge(deposit); - - self.charge_deposit(contract.clone(), deposit); - Ok(()) + /// This will not perform a charge. It just records it to reflect it in the + /// total amount of storage required for a transaction. + pub fn record_charge(&mut self, amount: &DepositOf<T>) { + self.total_deposit = self.total_deposit.saturating_add(&amount); } /// Call to tell the meter that the currently executing contract was terminated. @@ -660,7 +637,6 @@ mod tests { storage_byte_deposit: info.bytes_deposit, storage_item_deposit: info.items_deposit, storage_base_deposit: Default::default(), - delegate_dependencies: Default::default(), immutable_data_len: info.immutable_data_len, } } diff --git a/substrate/frame/revive/src/tests.rs b/substrate/frame/revive/src/tests.rs index 366a378cfd112715b80cfcac27bb250ecc2a1a79..6a74660702fa838935431c906358ff0eca89be59 100644 --- a/substrate/frame/revive/src/tests.rs +++ b/substrate/frame/revive/src/tests.rs @@ -28,7 +28,6 @@ use crate::{ evm::{runtime::GAS_PRICE, CallTrace, CallTracer, CallType, GenericTransaction}, exec::Key, limits, - primitives::CodeUploadReturnValue, storage::DeletionQueueManager, test_utils::*, tests::test_utils::{get_contract, get_contract_checked}, @@ -57,7 +56,7 @@ use frame_support::{ weights::{constants::WEIGHT_REF_TIME_PER_SECOND, FixedFee, IdentityFee, Weight, WeightMeter}, }; use frame_system::{EventRecord, Phase}; -use pallet_revive_fixtures::{bench::dummy_unique, compile_module}; +use pallet_revive_fixtures::compile_module; use pallet_revive_uapi::ReturnErrorCode as RuntimeReturnCode; use pallet_transaction_payment::{ConstFeeMultiplier, Multiplier}; use pretty_assertions::{assert_eq, assert_ne}; @@ -100,7 +99,7 @@ macro_rules! assert_refcount { } pub mod test_utils { - use super::{Contracts, DepositPerByte, DepositPerItem, Test}; + use super::{CodeHashLockupDepositPercent, Contracts, DepositPerByte, DepositPerItem, Test}; use crate::{ address::AddressMapper, exec::AccountIdOf, BalanceOf, CodeInfo, CodeInfoOf, Config, ContractInfo, ContractInfoOf, PristineCode, @@ -138,20 +137,26 @@ pub mod test_utils { pub fn get_code_deposit(code_hash: &sp_core::H256) -> BalanceOf<Test> { crate::CodeInfoOf::<Test>::get(code_hash).unwrap().deposit() } - pub fn contract_info_storage_deposit(addr: &H160) -> BalanceOf<Test> { + pub fn lockup_deposit(code_hash: &sp_core::H256) -> BalanceOf<Test> { + CodeHashLockupDepositPercent::get().mul_ceil(get_code_deposit(code_hash)).into() + } + pub fn contract_base_deposit(addr: &H160) -> BalanceOf<Test> { let contract_info = self::get_contract(&addr); let info_size = contract_info.encoded_size() as u64; - let info_deposit = DepositPerByte::get() + let code_deposit = CodeHashLockupDepositPercent::get() + .mul_ceil(get_code_deposit(&contract_info.code_hash)); + let deposit = DepositPerByte::get() .saturating_mul(info_size) - .saturating_add(DepositPerItem::get()); + .saturating_add(DepositPerItem::get()) + .saturating_add(code_deposit); let immutable_size = contract_info.immutable_data_len() as u64; if immutable_size > 0 { let immutable_deposit = DepositPerByte::get() .saturating_mul(immutable_size) .saturating_add(DepositPerItem::get()); - info_deposit.saturating_add(immutable_deposit) + deposit.saturating_add(immutable_deposit) } else { - info_deposit + deposit } } pub fn expected_deposit(code_len: usize) -> u64 { @@ -435,7 +440,7 @@ impl pallet_dummy::Config for Test {} parameter_types! { pub static DepositPerByte: BalanceOf<Test> = 1; pub const DepositPerItem: BalanceOf<Test> = 2; - pub static CodeHashLockupDepositPercent: Perbill = Perbill::from_percent(0); + pub const CodeHashLockupDepositPercent: Perbill = Perbill::from_percent(30); pub static ChainId: u64 = 448; } @@ -1000,6 +1005,7 @@ fn transient_storage_limit_in_call() { fn deploy_and_call_other_contract() { let (caller_wasm, _caller_code_hash) = compile_module("caller_contract").unwrap(); let (callee_wasm, callee_code_hash) = compile_module("return_with_data").unwrap(); + let code_load_weight = crate::wasm::code_load_weight(callee_wasm.len() as u32); ExtBuilder::default().existential_deposit(1).build().execute_with(|| { let min_balance = Contracts::min_balance(); @@ -1027,7 +1033,9 @@ fn deploy_and_call_other_contract() { // Call BOB contract, which attempts to instantiate and call the callee contract and // makes various assertions on the results from those calls. - assert_ok!(builder::call(caller_addr).data(callee_code_hash.as_ref().to_vec()).build()); + assert_ok!(builder::call(caller_addr) + .data((callee_code_hash, code_load_weight.ref_time()).encode()) + .build()); assert_eq!( System::events(), @@ -1197,7 +1205,7 @@ fn transfer_expendable_cannot_kill_account() { assert_eq!( test_utils::get_balance_on_hold(&HoldReason::StorageDepositReserve.into(), &account), - test_utils::contract_info_storage_deposit(&addr) + test_utils::contract_base_deposit(&addr) ); // Some or the total balance is held, so it can't be transferred. @@ -1239,7 +1247,7 @@ fn cannot_self_destruct_through_draining() { // Make sure the account wasn't remove by sending all free balance away. assert_eq!( <Test as Config>::Currency::total_balance(&account), - value + test_utils::contract_info_storage_deposit(&addr) + min_balance, + value + test_utils::contract_base_deposit(&addr) + min_balance, ); }); } @@ -1253,7 +1261,7 @@ fn cannot_self_destruct_through_storage_refund_after_price_change() { // Instantiate the BOB contract. let contract = builder::bare_instantiate(Code::Upload(wasm)).build_and_unwrap_contract(); - let info_deposit = test_utils::contract_info_storage_deposit(&contract.addr); + let info_deposit = test_utils::contract_base_deposit(&contract.addr); // Check that the contract has been instantiated and has the minimum balance assert_eq!(get_contract(&contract.addr).total_deposit(), info_deposit); @@ -2594,7 +2602,7 @@ fn instantiate_with_zero_balance_works() { assert_eq!(<Test as Config>::Currency::free_balance(&account_id), min_balance); assert_eq!( <Test as Config>::Currency::total_balance(&account_id), - min_balance + test_utils::contract_info_storage_deposit(&addr) + min_balance + test_utils::contract_base_deposit(&addr) ); assert_eq!( @@ -2651,7 +2659,7 @@ fn instantiate_with_below_existential_deposit_works() { assert_eq!(<Test as Config>::Currency::free_balance(&account_id), min_balance + value); assert_eq!( <Test as Config>::Currency::total_balance(&account_id), - min_balance + value + test_utils::contract_info_storage_deposit(&addr) + min_balance + value + test_utils::contract_base_deposit(&addr) ); assert_eq!( @@ -2704,7 +2712,7 @@ fn storage_deposit_works() { let Contract { addr, account_id } = builder::bare_instantiate(Code::Upload(wasm)).build_and_unwrap_contract(); - let mut deposit = test_utils::contract_info_storage_deposit(&addr); + let mut deposit = test_utils::contract_base_deposit(&addr); // Drop previous events initialize_block(2); @@ -2766,7 +2774,7 @@ fn storage_deposit_callee_works() { assert_eq!(test_utils::get_balance(&account_id), min_balance); assert_eq!( callee.total_deposit(), - deposit + test_utils::contract_info_storage_deposit(&addr_callee) + deposit + test_utils::contract_base_deposit(&addr_callee) ); }); } @@ -2850,7 +2858,7 @@ fn slash_cannot_kill_account() { // Drop previous events initialize_block(2); - let info_deposit = test_utils::contract_info_storage_deposit(&addr); + let info_deposit = test_utils::contract_base_deposit(&addr); assert_eq!( test_utils::get_balance_on_hold(&HoldReason::StorageDepositReserve.into(), &account_id), @@ -2989,7 +2997,7 @@ fn storage_deposit_limit_is_enforced() { let Contract { addr, account_id } = builder::bare_instantiate(Code::Upload(wasm)).build_and_unwrap_contract(); - let info_deposit = test_utils::contract_info_storage_deposit(&addr); + let info_deposit = test_utils::contract_base_deposit(&addr); // Check that the BOB contract has been instantiated and has the minimum balance assert_eq!(get_contract(&addr).total_deposit(), info_deposit); assert_eq!( @@ -3135,73 +3143,82 @@ fn deposit_limit_in_nested_instantiate() { .data(vec![0, 0, 0, 0]) .build_and_unwrap_contract(); - let callee_info_len = ContractInfoOf::<Test>::get(&addr).unwrap().encoded_size() as u64; - - // We don't set a special deposit limit for the nested instantiation. + // This is the deposit we expect to be charged just for instantiatiting the callee. // - // The deposit limit set for the parent is insufficient for the instantiation, which - // requires: - // - callee_info_len + 2 for storing the new contract info, - // - ED for deployed contract account, + // - callee_info_len + 2 for storing the new contract info + // - the deposit for depending on a code hash + // - ED for deployed contract account // - 2 for the storage item of 0 bytes being created in the callee constructor - // or (callee_info_len + 2 + ED + 2) Balance in total. + let callee_min_deposit = { + let callee_info_len = ContractInfoOf::<Test>::get(&addr).unwrap().encoded_size() as u64; + let code_deposit = test_utils::lockup_deposit(&code_hash_callee); + callee_info_len + code_deposit + 2 + ED + 2 + }; + + // The parent just stores an item of the passed size so at least + // we need to pay for the item itself. + let caller_min_deposit = callee_min_deposit + 2; + + // Fail in callee. // - // Provided the limit is set to be 1 Balance less, - // this call should fail on the return from the caller contract. + // We still fail in the sub call because we enforce limits on return from a contract. + // Sub calls return first to they are checked first. let ret = builder::bare_call(addr_caller) .origin(RuntimeOrigin::signed(BOB)) - .storage_deposit_limit(DepositLimit::Balance(callee_info_len + 2 + ED + 1)) - .data((&code_hash_callee, 0u32, &U256::MAX.to_little_endian()).encode()) + .storage_deposit_limit(DepositLimit::Balance(0)) + .data((&code_hash_callee, 100u32, &U256::MAX.to_little_endian()).encode()) .build_and_unwrap_result(); assert_return_code!(ret, RuntimeReturnCode::OutOfResources); // The charges made on instantiation should be rolled back. assert_eq!(<Test as Config>::Currency::free_balance(&BOB), 1_000_000); - // Now we give enough limit for the instantiation itself, but require for 1 more storage - // byte in the constructor. Hence +1 Balance to the limit is needed. This should fail on - // the return from constructor. + // Fail in the caller. + // + // For that we need to supply enough storage deposit so that the sub call + // succeeds but the parent call runs out of storage. let ret = builder::bare_call(addr_caller) .origin(RuntimeOrigin::signed(BOB)) - .storage_deposit_limit(DepositLimit::Balance(callee_info_len + 2 + ED + 2)) - .data((&code_hash_callee, 1u32, U256::from(0u64)).encode()) - .build_and_unwrap_result(); - assert_return_code!(ret, RuntimeReturnCode::OutOfResources); + .storage_deposit_limit(DepositLimit::Balance(callee_min_deposit)) + .data((&code_hash_callee, 0u32, &U256::MAX.to_little_endian()).encode()) + .build(); + assert_err!(ret.result, <Error<Test>>::StorageDepositLimitExhausted); // The charges made on the instantiation should be rolled back. assert_eq!(<Test as Config>::Currency::free_balance(&BOB), 1_000_000); - // Now we set enough limit in parent call, but an insufficient limit for child - // instantiate. This should fail during the charging for the instantiation in - // `RawMeter::charge_instantiate()` + // Fail in the callee with bytes. + // + // Same as above but stores one byte in both caller and callee. let ret = builder::bare_call(addr_caller) .origin(RuntimeOrigin::signed(BOB)) - .storage_deposit_limit(DepositLimit::Balance(callee_info_len + 2 + ED + 2)) - .data((&code_hash_callee, 1u32, U256::from(callee_info_len + 2 + ED + 1)).encode()) + .storage_deposit_limit(DepositLimit::Balance(caller_min_deposit + 1)) + .data((&code_hash_callee, 1u32, U256::from(callee_min_deposit)).encode()) .build_and_unwrap_result(); assert_return_code!(ret, RuntimeReturnCode::OutOfResources); // The charges made on the instantiation should be rolled back. assert_eq!(<Test as Config>::Currency::free_balance(&BOB), 1_000_000); - // Same as above but requires for single added storage - // item of 1 byte to be covered by the limit, which implies 3 more Balance. - // Now we set enough limit for the parent call, but insufficient limit for child - // instantiate. This should fail right after the constructor execution. + // Fail in the caller with bytes. + // + // Same as above but stores one byte in both caller and callee. let ret = builder::bare_call(addr_caller) .origin(RuntimeOrigin::signed(BOB)) - .storage_deposit_limit(DepositLimit::Balance(callee_info_len + 2 + ED + 3)) // enough parent limit - .data((&code_hash_callee, 1u32, U256::from(callee_info_len + 2 + ED + 2)).encode()) - .build_and_unwrap_result(); - assert_return_code!(ret, RuntimeReturnCode::OutOfResources); + .storage_deposit_limit(DepositLimit::Balance(callee_min_deposit + 1)) + .data((&code_hash_callee, 1u32, U256::from(callee_min_deposit + 1)).encode()) + .build(); + assert_err!(ret.result, <Error<Test>>::StorageDepositLimitExhausted); // The charges made on the instantiation should be rolled back. assert_eq!(<Test as Config>::Currency::free_balance(&BOB), 1_000_000); // Set enough deposit limit for the child instantiate. This should succeed. let result = builder::bare_call(addr_caller) .origin(RuntimeOrigin::signed(BOB)) - .storage_deposit_limit((callee_info_len + 2 + ED + 4 + 2).into()) - .data((&code_hash_callee, 1u32, U256::from(callee_info_len + 2 + ED + 3 + 2)).encode()) + .storage_deposit_limit((caller_min_deposit + 2).into()) + .data((&code_hash_callee, 1u32, U256::from(callee_min_deposit + 1)).encode()) .build(); let returned = result.result.unwrap(); + assert!(!returned.did_revert()); + // All balance of the caller except ED has been transferred to the callee. // No deposit has been taken from it. assert_eq!(<Test as Config>::Currency::free_balance(&caller_id), ED); @@ -3211,17 +3228,12 @@ fn deposit_limit_in_nested_instantiate() { // 10_000 should be sent to callee from the caller contract, plus ED to be sent from the // origin. assert_eq!(<Test as Config>::Currency::free_balance(&callee_account_id), 10_000 + ED); - // The origin should be charged with: - // - callee instantiation deposit = (callee_info_len + 2) - // - callee account ED - // - for writing an item of 1 byte to storage = 3 Balance - // - Immutable data storage item deposit + // The origin should be charged with what the outer call consumed assert_eq!( <Test as Config>::Currency::free_balance(&BOB), - 1_000_000 - (callee_info_len + 2 + ED + 3) + 1_000_000 - (caller_min_deposit + 2), ); - // Check that deposit due to be charged still includes these 3 Balance - assert_eq!(result.storage_deposit.charge_or_zero(), (callee_info_len + 2 + ED + 3)) + assert_eq!(result.storage_deposit.charge_or_zero(), (caller_min_deposit + 2)) }); } @@ -3238,7 +3250,7 @@ fn deposit_limit_honors_liquidity_restrictions() { let Contract { addr, account_id } = builder::bare_instantiate(Code::Upload(wasm)).build_and_unwrap_contract(); - let info_deposit = test_utils::contract_info_storage_deposit(&addr); + let info_deposit = test_utils::contract_base_deposit(&addr); // Check that the contract has been instantiated and has the minimum balance assert_eq!(get_contract(&addr).total_deposit(), info_deposit); assert_eq!( @@ -3277,7 +3289,7 @@ fn deposit_limit_honors_existential_deposit() { let Contract { addr, account_id } = builder::bare_instantiate(Code::Upload(wasm)).build_and_unwrap_contract(); - let info_deposit = test_utils::contract_info_storage_deposit(&addr); + let info_deposit = test_utils::contract_base_deposit(&addr); // Check that the contract has been instantiated and has the minimum balance assert_eq!(get_contract(&addr).total_deposit(), info_deposit); @@ -3311,7 +3323,7 @@ fn deposit_limit_honors_min_leftover() { let Contract { addr, account_id } = builder::bare_instantiate(Code::Upload(wasm)).build_and_unwrap_contract(); - let info_deposit = test_utils::contract_info_storage_deposit(&addr); + let info_deposit = test_utils::contract_base_deposit(&addr); // Check that the contract has been instantiated and has the minimum balance and the // storage deposit @@ -3338,195 +3350,11 @@ fn deposit_limit_honors_min_leftover() { }); } -#[test] -fn locking_delegate_dependency_works() { - // set hash lock up deposit to 30%, to test deposit calculation. - CODE_HASH_LOCKUP_DEPOSIT_PERCENT.with(|c| *c.borrow_mut() = Perbill::from_percent(30)); - - let (wasm_caller, self_code_hash) = compile_module("locking_delegate_dependency").unwrap(); - let callee_codes: Vec<_> = - (0..limits::DELEGATE_DEPENDENCIES + 1).map(|idx| dummy_unique(idx)).collect(); - let callee_hashes: Vec<_> = callee_codes - .iter() - .map(|c| sp_core::H256(sp_io::hashing::keccak_256(c))) - .collect(); - - let hash2addr = |code_hash: &H256| { - let mut addr = H160::zero(); - addr.as_bytes_mut().copy_from_slice(&code_hash.as_ref()[..20]); - addr - }; - - // Define inputs with various actions to test locking / unlocking delegate_dependencies. - // See the contract for more details. - let noop_input = (0u32, callee_hashes[0]); - let lock_delegate_dependency_input = (1u32, callee_hashes[0]); - let unlock_delegate_dependency_input = (2u32, callee_hashes[0]); - let terminate_input = (3u32, callee_hashes[0]); - - // Instantiate the caller contract with the given input. - let instantiate = |input: &(u32, H256)| { - let (action, code_hash) = input; - builder::bare_instantiate(Code::Upload(wasm_caller.clone())) - .origin(RuntimeOrigin::signed(ALICE_FALLBACK)) - .data((action, hash2addr(code_hash), code_hash).encode()) - .build() - }; - - // Call contract with the given input. - let call = |addr_caller: &H160, input: &(u32, H256)| { - let (action, code_hash) = input; - builder::bare_call(*addr_caller) - .origin(RuntimeOrigin::signed(ALICE_FALLBACK)) - .data((action, hash2addr(code_hash), code_hash).encode()) - .build() - }; - const ED: u64 = 2000; - ExtBuilder::default().existential_deposit(ED).build().execute_with(|| { - let _ = Balances::set_balance(&ALICE_FALLBACK, 1_000_000); - - // Instantiate with lock_delegate_dependency should fail since the code is not yet on - // chain. - assert_err!( - instantiate(&lock_delegate_dependency_input).result, - Error::<Test>::CodeNotFound - ); - - // Upload all the delegated codes (they all have the same size) - let mut deposit = Default::default(); - for code in callee_codes.iter() { - let CodeUploadReturnValue { deposit: deposit_per_code, code_hash } = - Contracts::bare_upload_code( - RuntimeOrigin::signed(ALICE_FALLBACK), - code.clone(), - deposit_limit::<Test>(), - ) - .unwrap(); - deposit = deposit_per_code; - // Mock contract info by using first 20 bytes of code_hash as address. - let addr = hash2addr(&code_hash); - ContractInfoOf::<Test>::set(&addr, ContractInfo::new(&addr, 0, code_hash).ok()); - } - - // Instantiate should now work. - let addr_caller = instantiate(&lock_delegate_dependency_input).result.unwrap().addr; - let caller_account_id = <Test as Config>::AddressMapper::to_account_id(&addr_caller); - - // There should be a dependency and a deposit. - let contract = test_utils::get_contract(&addr_caller); - - let dependency_deposit = &CodeHashLockupDepositPercent::get().mul_ceil(deposit); - assert_eq!( - contract.delegate_dependencies().get(&callee_hashes[0]), - Some(dependency_deposit) - ); - assert_eq!( - test_utils::get_balance_on_hold( - &HoldReason::StorageDepositReserve.into(), - &caller_account_id - ), - dependency_deposit + contract.storage_base_deposit() - ); - - // Removing the code should fail, since we have added a dependency. - assert_err!( - Contracts::remove_code(RuntimeOrigin::signed(ALICE_FALLBACK), callee_hashes[0]), - <Error<Test>>::CodeInUse - ); - - // Locking an already existing dependency should fail. - assert_err!( - call(&addr_caller, &lock_delegate_dependency_input).result, - Error::<Test>::DelegateDependencyAlreadyExists - ); - - // Locking self should fail. - assert_err!( - builder::bare_call(addr_caller) - .origin(RuntimeOrigin::signed(ALICE_FALLBACK)) - .data((1u32, &addr_caller, self_code_hash).encode()) - .build() - .result, - Error::<Test>::CannotAddSelfAsDelegateDependency - ); - - // Locking more than the maximum allowed delegate_dependencies should fail. - for hash in &callee_hashes[1..callee_hashes.len() - 1] { - call(&addr_caller, &(1u32, *hash)).result.unwrap(); - } - assert_err!( - call(&addr_caller, &(1u32, *callee_hashes.last().unwrap())).result, - Error::<Test>::MaxDelegateDependenciesReached - ); - - // Unlocking all dependency should work. - for hash in &callee_hashes[..callee_hashes.len() - 1] { - call(&addr_caller, &(2u32, *hash)).result.unwrap(); - } - - // Dependency should be removed, and deposit should be returned. - let contract = test_utils::get_contract(&addr_caller); - assert!(contract.delegate_dependencies().is_empty()); - assert_eq!( - test_utils::get_balance_on_hold( - &HoldReason::StorageDepositReserve.into(), - &caller_account_id - ), - contract.storage_base_deposit() - ); - - // Removing a nonexistent dependency should fail. - assert_err!( - call(&addr_caller, &unlock_delegate_dependency_input).result, - Error::<Test>::DelegateDependencyNotFound - ); - - // Locking a dependency with a storage limit too low should fail. - assert_err!( - builder::bare_call(addr_caller) - .storage_deposit_limit((dependency_deposit - 1).into()) - .data((1u32, hash2addr(&callee_hashes[0]), callee_hashes[0]).encode()) - .build() - .result, - Error::<Test>::StorageDepositLimitExhausted - ); - - // Since we unlocked the dependency we should now be able to remove the code. - assert_ok!(Contracts::remove_code(RuntimeOrigin::signed(ALICE_FALLBACK), callee_hashes[0])); - - // Calling should fail since the delegated contract is not on chain anymore. - assert_err!(call(&addr_caller, &noop_input).result, Error::<Test>::CodeNotFound); - - // Add the dependency back. - Contracts::upload_code( - RuntimeOrigin::signed(ALICE_FALLBACK), - callee_codes[0].clone(), - deposit_limit::<Test>(), - ) - .unwrap(); - call(&addr_caller, &lock_delegate_dependency_input).result.unwrap(); - - // Call terminate should work, and return the deposit. - let balance_before = test_utils::get_balance(&ALICE_FALLBACK); - assert_ok!(call(&addr_caller, &terminate_input).result); - assert_eq!( - test_utils::get_balance(&ALICE_FALLBACK), - ED + balance_before + contract.storage_base_deposit() + dependency_deposit - ); - - // Terminate should also remove the dependency, so we can remove the code. - assert_ok!(Contracts::remove_code(RuntimeOrigin::signed(ALICE_FALLBACK), callee_hashes[0])); - }); -} - #[test] fn native_dependency_deposit_works() { let (wasm, code_hash) = compile_module("set_code_hash").unwrap(); let (dummy_wasm, dummy_code_hash) = compile_module("dummy").unwrap(); - // Set hash lock up deposit to 30%, to test deposit calculation. - CODE_HASH_LOCKUP_DEPOSIT_PERCENT.with(|c| *c.borrow_mut() = Perbill::from_percent(30)); - // Test with both existing and uploaded code for code in [Code::Upload(wasm.clone()), Code::Existing(code_hash)] { ExtBuilder::default().build().execute_with(|| { @@ -3560,33 +3388,34 @@ fn native_dependency_deposit_works() { let addr = res.result.unwrap().addr; let account_id = <Test as Config>::AddressMapper::to_account_id(&addr); - let base_deposit = test_utils::contract_info_storage_deposit(&addr); + let base_deposit = test_utils::contract_base_deposit(&addr); let upload_deposit = test_utils::get_code_deposit(&code_hash); let extra_deposit = add_upload_deposit.then(|| upload_deposit).unwrap_or_default(); - // Check initial storage_deposit - // The base deposit should be: contract_info_storage_deposit + 30% * deposit - let deposit = - extra_deposit + base_deposit + lockup_deposit_percent.mul_ceil(upload_deposit); - - assert_eq!(res.storage_deposit.charge_or_zero(), deposit + Contracts::min_balance()); + assert_eq!( + res.storage_deposit.charge_or_zero(), + extra_deposit + base_deposit + Contracts::min_balance() + ); // call set_code_hash builder::bare_call(addr) .data(dummy_code_hash.encode()) .build_and_unwrap_result(); - // Check updated storage_deposit - let code_deposit = test_utils::get_code_deposit(&dummy_code_hash); - let deposit = base_deposit + lockup_deposit_percent.mul_ceil(code_deposit); - assert_eq!(test_utils::get_contract(&addr).storage_base_deposit(), deposit); + // Check updated storage_deposit due to code size changes + let deposit_diff = lockup_deposit_percent + .mul_ceil(test_utils::get_code_deposit(&code_hash)) - + lockup_deposit_percent.mul_ceil(test_utils::get_code_deposit(&dummy_code_hash)); + let new_base_deposit = test_utils::contract_base_deposit(&addr); + assert_ne!(deposit_diff, 0); + assert_eq!(base_deposit - new_base_deposit, deposit_diff); assert_eq!( test_utils::get_balance_on_hold( &HoldReason::StorageDepositReserve.into(), &account_id ), - deposit + new_base_deposit ); }); } @@ -4195,15 +4024,21 @@ fn immutable_data_works() { .data(data.to_vec()) .build_and_unwrap_contract(); + let contract = test_utils::get_contract(&addr); + let account = <Test as Config>::AddressMapper::to_account_id(&addr); + let actual_deposit = + test_utils::get_balance_on_hold(&HoldReason::StorageDepositReserve.into(), &account); + + assert_eq!(contract.immutable_data_len(), data.len() as u32); + // Storing immmutable data charges storage deposit; verify it explicitly. + assert_eq!(actual_deposit, test_utils::contract_base_deposit(&addr)); + + // make sure it is also recorded in the base deposit assert_eq!( - test_utils::get_balance_on_hold( - &HoldReason::StorageDepositReserve.into(), - &<Test as Config>::AddressMapper::to_account_id(&addr) - ), - test_utils::contract_info_storage_deposit(&addr) + test_utils::get_balance_on_hold(&HoldReason::StorageDepositReserve.into(), &account), + contract.storage_base_deposit(), ); - assert_eq!(test_utils::get_contract(&addr).immutable_data_len(), data.len() as u32); // Call the contract: Asserts the input to equal the immutable data assert_ok!(builder::call(addr).data(data.to_vec()).build()); @@ -4459,7 +4294,7 @@ fn skip_transfer_works() { ..Default::default() }, Weight::MAX, - |_| 0u32, + |_, _| 0u64, ), EthTransactError::Message(format!( "insufficient funds for gas * price + value: address {BOB_ADDR:?} have 0 (supplied gas 1)" @@ -4474,7 +4309,7 @@ fn skip_transfer_works() { ..Default::default() }, Weight::MAX, - |_| 0u32, + |_, _| 0u64, )); let Contract { addr, .. } = @@ -4493,7 +4328,7 @@ fn skip_transfer_works() { ..Default::default() }, Weight::MAX, - |_| 0u32, + |_, _| 0u64, ), EthTransactError::Message(format!( "insufficient funds for gas * price + value: address {BOB_ADDR:?} have 0 (supplied gas 1)" @@ -4510,7 +4345,7 @@ fn skip_transfer_works() { ..Default::default() }, Weight::MAX, - |_| 0u32 + |_, _| 0u64, ) .is_err(),); @@ -4518,7 +4353,7 @@ fn skip_transfer_works() { assert_ok!(Pallet::<Test>::bare_eth_transact( GenericTransaction { from: Some(BOB_ADDR), to: Some(addr), ..Default::default() }, Weight::MAX, - |_| 0u32, + |_, _| 0u64, )); // works when calling from a contract when no gas is specified. @@ -4530,7 +4365,7 @@ fn skip_transfer_works() { ..Default::default() }, Weight::MAX, - |_| 0u32, + |_, _| 0u64, )); }); } @@ -4610,20 +4445,19 @@ fn tracing_works_for_transfers() { } #[test] -#[ignore = "does not collect the gas_used properly"] fn tracing_works() { use crate::evm::*; use CallType::*; let (code, _code_hash) = compile_module("tracing").unwrap(); let (wasm_callee, _) = compile_module("tracing_callee").unwrap(); ExtBuilder::default().existential_deposit(200).build().execute_with(|| { - let _ = <Test as Config>::Currency::set_balance(&ALICE, 1_000_000); + let _ = <Test as Config>::Currency::set_balance(&ALICE, 100_000_000); let Contract { addr: addr_callee, .. } = builder::bare_instantiate(Code::Upload(wasm_callee)).build_and_unwrap_contract(); let Contract { addr, .. } = - builder::bare_instantiate(Code::Upload(code)).build_and_unwrap_contract(); + builder::bare_instantiate(Code::Upload(code)).value(10_000_000).build_and_unwrap_contract(); let tracer_options = vec![ ( false , vec![]), @@ -4721,6 +4555,15 @@ fn tracing_works() { to: addr, input: (0u32, addr_callee).encode(), call_type: Call, + calls: vec![ + CallTrace { + from: addr, + to: BOB_ADDR, + value: U256::from(100), + call_type: CallType::Call, + ..Default::default() + } + ], ..Default::default() }, ], diff --git a/substrate/frame/revive/src/wasm/mod.rs b/substrate/frame/revive/src/wasm/mod.rs index 527cf16309540c3edacf626bb7e222f82677f3d9..30418cf84b24c36d60de7adfc0bf057e00ef9143 100644 --- a/substrate/frame/revive/src/wasm/mod.rs +++ b/substrate/frame/revive/src/wasm/mod.rs @@ -115,6 +115,11 @@ impl<T: Config> Token<T> for CodeLoadToken { } } +#[cfg(test)] +pub fn code_load_weight(code_len: u32) -> Weight { + Token::<crate::tests::Test>::weight(&CodeLoadToken(code_len)) +} + impl<T: Config> WasmBlob<T> where BalanceOf<T>: Into<U256> + TryFrom<U256>, @@ -214,15 +219,11 @@ impl<T: Config> CodeInfo<T> { } /// Returns reference count of the module. + #[cfg(test)] pub fn refcount(&self) -> u64 { self.refcount } - /// Return mutable reference to the refcount of the module. - pub fn refcount_mut(&mut self) -> &mut u64 { - &mut self.refcount - } - /// Returns the deposit of the module. pub fn deposit(&self) -> BalanceOf<T> { self.deposit @@ -232,6 +233,47 @@ impl<T: Config> CodeInfo<T> { pub fn code_len(&self) -> u64 { self.code_len.into() } + + /// Returns the number of times the specified contract exists on the call stack. Delegated calls + /// Increment the reference count of a stored code by one. + /// + /// # Errors + /// + /// [`Error::CodeNotFound`] is returned if no stored code found having the specified + /// `code_hash`. + pub fn increment_refcount(code_hash: H256) -> DispatchResult { + <CodeInfoOf<T>>::mutate(code_hash, |existing| -> Result<(), DispatchError> { + if let Some(info) = existing { + info.refcount = info + .refcount + .checked_add(1) + .ok_or_else(|| <Error<T>>::RefcountOverOrUnderflow)?; + Ok(()) + } else { + Err(Error::<T>::CodeNotFound.into()) + } + }) + } + + /// Decrement the reference count of a stored code by one. + /// + /// # Note + /// + /// A contract whose reference count dropped to zero isn't automatically removed. A + /// `remove_code` transaction must be submitted by the original uploader to do so. + pub fn decrement_refcount(code_hash: H256) -> DispatchResult { + <CodeInfoOf<T>>::mutate(code_hash, |existing| { + if let Some(info) = existing { + info.refcount = info + .refcount + .checked_sub(1) + .ok_or_else(|| <Error<T>>::RefcountOverOrUnderflow)?; + Ok(()) + } else { + Err(Error::<T>::CodeNotFound.into()) + } + }) + } } pub struct PreparedCall<'a, E: Ext> { @@ -287,15 +329,6 @@ impl<T: Config> WasmBlob<T> { Error::<T>::CodeRejected })?; - // This is checked at deploy time but we also want to reject pre-existing - // 32bit programs. - // TODO: Remove when we reset the test net. - // https://github.com/paritytech/contract-issues/issues/11 - if !module.is_64_bit() { - log::debug!(target: LOG_TARGET, "32bit programs are not supported."); - Err(Error::<T>::CodeRejected)?; - } - let entry_program_counter = module .exports() .find(|export| export.symbol().as_bytes() == entry_point.identifier().as_bytes()) @@ -309,11 +342,6 @@ impl<T: Config> WasmBlob<T> { Error::<T>::CodeRejected })?; - // Increment before execution so that the constructor sees the correct refcount - if let ExportedFunction::Constructor = entry_point { - E::increment_refcount(self.code_hash)?; - } - instance.set_gas(gas_limit_polkavm); instance.prepare_call_untyped(entry_program_counter, &[]); diff --git a/substrate/frame/revive/src/wasm/runtime.rs b/substrate/frame/revive/src/wasm/runtime.rs index ad92e5fecee2b8d4542f676d6816725149643c71..279d72b97ee1a546bed2c517ac3a5a0f4ba9229f 100644 --- a/substrate/frame/revive/src/wasm/runtime.rs +++ b/substrate/frame/revive/src/wasm/runtime.rs @@ -339,8 +339,8 @@ pub enum RuntimeCosts { GasLimit, /// Weight of calling `seal_weight_to_fee`. WeightToFee, - /// Weight of calling `seal_terminate`, passing the number of locked dependencies. - Terminate(u32), + /// Weight of calling `seal_terminate`. + Terminate, /// Weight of calling `seal_deposit_event` with the given number of topics and event size. DepositEvent { num_topic: u32, len: u32 }, /// Weight of calling `seal_set_storage` for the given storage item sizes. @@ -395,10 +395,6 @@ pub enum RuntimeCosts { SetCodeHash, /// Weight of calling `ecdsa_to_eth_address` EcdsaToEthAddress, - /// Weight of calling `lock_delegate_dependency` - LockDelegateDependency, - /// Weight of calling `unlock_delegate_dependency` - UnlockDelegateDependency, /// Weight of calling `get_immutable_dependency` GetImmutableData(u32), /// Weight of calling `set_immutable_dependency` @@ -491,7 +487,7 @@ impl<T: Config> Token<T> for RuntimeCosts { Now => T::WeightInfo::seal_now(), GasLimit => T::WeightInfo::seal_gas_limit(), WeightToFee => T::WeightInfo::seal_weight_to_fee(), - Terminate(locked_dependencies) => T::WeightInfo::seal_terminate(locked_dependencies), + Terminate => T::WeightInfo::seal_terminate(), DepositEvent { num_topic, len } => T::WeightInfo::seal_deposit_event(num_topic, len), SetStorage { new_bytes, old_bytes } => { cost_storage!(write, seal_set_storage, new_bytes, old_bytes) @@ -529,8 +525,6 @@ impl<T: Config> Token<T> for RuntimeCosts { ChainExtension(weight) | CallRuntime(weight) | CallXcmExecute(weight) => weight, SetCodeHash => T::WeightInfo::seal_set_code_hash(), EcdsaToEthAddress => T::WeightInfo::seal_ecdsa_to_eth_address(), - LockDelegateDependency => T::WeightInfo::lock_delegate_dependency(), - UnlockDelegateDependency => T::WeightInfo::unlock_delegate_dependency(), GetImmutableData(len) => T::WeightInfo::seal_get_immutable_data(len), SetImmutableData(len) => T::WeightInfo::seal_set_immutable_data(len), } @@ -1142,15 +1136,6 @@ impl<'a, E: Ext, M: ?Sized + Memory<E::T>> Runtime<'a, E, M> { Err(err) => Ok(Self::exec_error_into_return_code(err)?), } } - - fn terminate(&mut self, memory: &M, beneficiary_ptr: u32) -> Result<(), TrapReason> { - let count = self.ext.locked_delegate_dependencies_count() as _; - self.charge_gas(RuntimeCosts::Terminate(count))?; - - let beneficiary = memory.read_h160(beneficiary_ptr)?; - self.ext.terminate(&beneficiary)?; - Err(TrapReason::Termination) - } } // This is the API exposed to contracts. @@ -1493,9 +1478,10 @@ pub mod env { out_ptr: u32, out_len_ptr: u32, ) -> Result<(), TrapReason> { - let charged = self.charge_gas(RuntimeCosts::GetImmutableData(limits::IMMUTABLE_BYTES))?; + // quering the length is free as it is stored with the contract metadata + let len = self.ext.immutable_data_len(); + self.charge_gas(RuntimeCosts::GetImmutableData(len))?; let data = self.ext.get_immutable_data()?; - self.adjust_gas(charged, RuntimeCosts::GetImmutableData(data.len() as u32)); self.write_sandbox_output(memory, out_ptr, out_len_ptr, &data, false, already_charged)?; Ok(()) } @@ -1970,20 +1956,6 @@ pub mod env { Ok(self.ext.is_contract(&address) as u32) } - /// Adds a new delegate dependency to the contract. - /// See [`pallet_revive_uapi::HostFn::lock_delegate_dependency`]. - #[mutating] - fn lock_delegate_dependency( - &mut self, - memory: &mut M, - code_hash_ptr: u32, - ) -> Result<(), TrapReason> { - self.charge_gas(RuntimeCosts::LockDelegateDependency)?; - let code_hash = memory.read_h256(code_hash_ptr)?; - self.ext.lock_delegate_dependency(code_hash)?; - Ok(()) - } - /// Stores the minimum balance (a.k.a. existential deposit) into the supplied buffer. /// See [`pallet_revive_uapi::HostFn::minimum_balance`]. fn minimum_balance(&mut self, memory: &mut M, out_ptr: u32) -> Result<(), TrapReason> { @@ -2051,20 +2023,6 @@ pub mod env { } } - /// Removes the delegate dependency from the contract. - /// see [`pallet_revive_uapi::HostFn::unlock_delegate_dependency`]. - #[mutating] - fn unlock_delegate_dependency( - &mut self, - memory: &mut M, - code_hash_ptr: u32, - ) -> Result<(), TrapReason> { - self.charge_gas(RuntimeCosts::UnlockDelegateDependency)?; - let code_hash = memory.read_h256(code_hash_ptr)?; - self.ext.unlock_delegate_dependency(&code_hash)?; - Ok(()) - } - /// Retrieve and remove the value under the given key from storage. /// See [`pallet_revive_uapi::HostFn::take_storage`] #[mutating] @@ -2084,7 +2042,10 @@ pub mod env { /// See [`pallet_revive_uapi::HostFn::terminate`]. #[mutating] fn terminate(&mut self, memory: &mut M, beneficiary_ptr: u32) -> Result<(), TrapReason> { - self.terminate(memory, beneficiary_ptr) + self.charge_gas(RuntimeCosts::Terminate)?; + let beneficiary = memory.read_h160(beneficiary_ptr)?; + self.ext.terminate(&beneficiary)?; + Err(TrapReason::Termination) } /// Stores the amount of weight left into the supplied buffer. diff --git a/substrate/frame/revive/src/weights.rs b/substrate/frame/revive/src/weights.rs index 6fee4995c186bacd5ca602a3c683c3e9ff912202..42b8a9e5e722f8aaaf2d8302d870bba0ba9d9da2 100644 --- a/substrate/frame/revive/src/weights.rs +++ b/substrate/frame/revive/src/weights.rs @@ -18,9 +18,9 @@ //! Autogenerated weights for `pallet_revive` //! //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0 -//! DATE: 2025-01-29, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` +//! DATE: 2025-02-04, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]` //! WORST CASE MAP SIZE: `1000000` -//! HOSTNAME: `eacb3695a76e`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` +//! HOSTNAME: `11670a4f427b`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz` //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: `1024` // Executed Command: @@ -48,6 +48,7 @@ #![allow(unused_parens)] #![allow(unused_imports)] #![allow(missing_docs)] +#[allow(dead_code)] use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; use core::marker::PhantomData; @@ -99,7 +100,7 @@ pub trait WeightInfo { fn seal_call_data_load() -> Weight; fn seal_call_data_copy(n: u32, ) -> Weight; fn seal_return(n: u32, ) -> Weight; - fn seal_terminate(n: u32, ) -> Weight; + fn seal_terminate() -> Weight; fn seal_deposit_event(t: u32, n: u32, ) -> Weight; fn get_storage_empty() -> Weight; fn get_storage_full() -> Weight; @@ -131,8 +132,6 @@ pub trait WeightInfo { fn seal_ecdsa_recover() -> Weight; fn seal_ecdsa_to_eth_address() -> Weight; fn seal_set_code_hash() -> Weight; - fn lock_delegate_dependency() -> Weight; - fn unlock_delegate_dependency() -> Weight; fn instr(r: u32, ) -> Weight; } @@ -145,8 +144,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 690_000 picoseconds. - Weight::from_parts(743_000, 1485) + // Minimum execution time: 695_000 picoseconds. + Weight::from_parts(750_000, 1485) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) @@ -156,10 +155,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `230 + k * (69 ±0)` // Estimated: `222 + k * (70 ±0)` - // Minimum execution time: 10_913_000 picoseconds. - Weight::from_parts(11_048_000, 222) - // Standard Error: 972 - .saturating_add(Weight::from_parts(1_172_318, 0).saturating_mul(k.into())) + // Minimum execution time: 10_509_000 picoseconds. + Weight::from_parts(10_896_000, 222) + // Standard Error: 2_549 + .saturating_add(Weight::from_parts(1_264_033, 0).saturating_mul(k.into())) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(k.into()))) .saturating_add(T::DbWeight::get().writes(2_u64)) @@ -169,7 +168,7 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Storage: `Revive::AddressSuffix` (r:2 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:1 w:0) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:1 w:0) @@ -179,14 +178,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Storage: `System::Account` (r:1 w:1) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) /// The range of component `c` is `[0, 262144]`. - fn call_with_code_per_byte(c: u32, ) -> Weight { + fn call_with_code_per_byte(_c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1195` - // Estimated: `7135` - // Minimum execution time: 83_080_000 picoseconds. - Weight::from_parts(89_270_264, 7135) - // Standard Error: 0 - .saturating_add(Weight::from_parts(3, 0).saturating_mul(c.into())) + // Measured: `1194` + // Estimated: `7134` + // Minimum execution time: 84_008_000 picoseconds. + Weight::from_parts(91_138_296, 7134) .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -197,7 +194,7 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Timestamp::Now` (r:1 w:0) /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`) /// Storage: `System::Account` (r:1 w:1) @@ -210,10 +207,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `93` // Estimated: `6033` - // Minimum execution time: 171_761_000 picoseconds. - Weight::from_parts(158_031_807, 6033) - // Standard Error: 11 - .saturating_add(Weight::from_parts(4_536, 0).saturating_mul(i.into())) + // Minimum execution time: 172_907_000 picoseconds. + Weight::from_parts(153_592_465, 6033) + // Standard Error: 12 + .saturating_add(Weight::from_parts(4_544, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(6_u64)) } @@ -224,7 +221,7 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Timestamp::Now` (r:1 w:0) /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`) /// Storage: `System::Account` (r:1 w:1) @@ -236,17 +233,17 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `987` // Estimated: `4452` - // Minimum execution time: 143_210_000 picoseconds. - Weight::from_parts(121_908_111, 4452) - // Standard Error: 15 - .saturating_add(Weight::from_parts(4_467, 0).saturating_mul(i.into())) + // Minimum execution time: 143_169_000 picoseconds. + Weight::from_parts(120_653_436, 4452) + // Standard Error: 16 + .saturating_add(Weight::from_parts(4_444, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(4_u64)) } /// Storage: `Revive::AddressSuffix` (r:2 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:1 w:0) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:1 w:0) @@ -257,10 +254,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) fn call() -> Weight { // Proof Size summary in bytes: - // Measured: `1195` - // Estimated: `7135` - // Minimum execution time: 136_689_000 picoseconds. - Weight::from_parts(145_358_000, 7135) + // Measured: `1194` + // Estimated: `7134` + // Minimum execution time: 138_392_000 picoseconds. + Weight::from_parts(143_329_000, 7134) .saturating_add(T::DbWeight::get().reads(7_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -271,14 +268,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Storage: `Revive::PristineCode` (r:0 w:1) /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) /// The range of component `c` is `[0, 262144]`. - fn upload_code(c: u32, ) -> Weight { + fn upload_code(_c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 43_351_000 picoseconds. - Weight::from_parts(44_896_319, 3465) - // Standard Error: 0 - .saturating_add(Weight::from_parts(1, 0).saturating_mul(c.into())) + // Minimum execution time: 43_420_000 picoseconds. + Weight::from_parts(45_143_767, 3465) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(3_u64)) } @@ -292,21 +287,21 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `181` // Estimated: `3646` - // Minimum execution time: 36_034_000 picoseconds. - Weight::from_parts(36_595_000, 3646) + // Minimum execution time: 35_828_000 picoseconds. + Weight::from_parts(36_853_000, 3646) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(3_u64)) } /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:2 w:2) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) fn set_code() -> Weight { // Proof Size summary in bytes: - // Measured: `425` - // Estimated: `6365` - // Minimum execution time: 19_484_000 picoseconds. - Weight::from_parts(20_104_000, 6365) + // Measured: `424` + // Estimated: `6364` + // Minimum execution time: 19_678_000 picoseconds. + Weight::from_parts(21_266_000, 6364) .saturating_add(T::DbWeight::get().reads(3_u64)) .saturating_add(T::DbWeight::get().writes(3_u64)) } @@ -318,8 +313,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 37_066_000 picoseconds. - Weight::from_parts(37_646_000, 3465) + // Minimum execution time: 37_024_000 picoseconds. + Weight::from_parts(37_440_000, 3465) .saturating_add(T::DbWeight::get().reads(2_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -331,8 +326,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `56` // Estimated: `3521` - // Minimum execution time: 31_604_000 picoseconds. - Weight::from_parts(32_557_000, 3521) + // Minimum execution time: 31_228_000 picoseconds. + Weight::from_parts(32_183_000, 3521) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(2_u64)) } @@ -344,8 +339,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 6_070_000 picoseconds. - Weight::from_parts(6_246_000, 3465) + // Minimum execution time: 6_241_000 picoseconds. + Weight::from_parts(6_467_000, 3465) .saturating_add(T::DbWeight::get().reads(2_u64)) } /// The range of component `r` is `[0, 1600]`. @@ -353,33 +348,33 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_471_000 picoseconds. - Weight::from_parts(7_724_355, 0) - // Standard Error: 245 - .saturating_add(Weight::from_parts(165_331, 0).saturating_mul(r.into())) + // Minimum execution time: 6_397_000 picoseconds. + Weight::from_parts(7_159_300, 0) + // Standard Error: 173 + .saturating_add(Weight::from_parts(167_265, 0).saturating_mul(r.into())) } fn seal_caller() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 239_000 picoseconds. - Weight::from_parts(278_000, 0) + // Minimum execution time: 267_000 picoseconds. + Weight::from_parts(296_000, 0) } fn seal_origin() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 234_000 picoseconds. - Weight::from_parts(264_000, 0) + // Minimum execution time: 227_000 picoseconds. + Weight::from_parts(252_000, 0) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) fn seal_is_contract() -> Weight { // Proof Size summary in bytes: // Measured: `202` // Estimated: `3667` - // Minimum execution time: 6_508_000 picoseconds. - Weight::from_parts(6_715_000, 3667) + // Minimum execution time: 6_591_000 picoseconds. + Weight::from_parts(6_770_000, 3667) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) @@ -388,80 +383,80 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `144` // Estimated: `3609` - // Minimum execution time: 6_190_000 picoseconds. - Weight::from_parts(6_413_000, 3609) + // Minimum execution time: 6_182_000 picoseconds. + Weight::from_parts(6_372_000, 3609) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) fn seal_code_hash() -> Weight { // Proof Size summary in bytes: - // Measured: `299` - // Estimated: `3764` - // Minimum execution time: 7_547_000 picoseconds. - Weight::from_parts(7_742_000, 3764) + // Measured: `298` + // Estimated: `3763` + // Minimum execution time: 7_327_000 picoseconds. + Weight::from_parts(7_612_000, 3763) .saturating_add(T::DbWeight::get().reads(1_u64)) } fn seal_own_code_hash() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 251_000 picoseconds. - Weight::from_parts(274_000, 0) + // Minimum execution time: 232_000 picoseconds. + Weight::from_parts(287_000, 0) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:1 w:0) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) fn seal_code_size() -> Weight { // Proof Size summary in bytes: - // Measured: `369` - // Estimated: `3834` - // Minimum execution time: 10_825_000 picoseconds. - Weight::from_parts(11_185_000, 3834) + // Measured: `368` + // Estimated: `3833` + // Minimum execution time: 10_918_000 picoseconds. + Weight::from_parts(11_323_000, 3833) .saturating_add(T::DbWeight::get().reads(2_u64)) } fn seal_caller_is_origin() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 325_000 picoseconds. - Weight::from_parts(352_000, 0) + // Minimum execution time: 310_000 picoseconds. + Weight::from_parts(340_000, 0) } fn seal_caller_is_root() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 245_000 picoseconds. - Weight::from_parts(282_000, 0) + // Minimum execution time: 257_000 picoseconds. + Weight::from_parts(292_000, 0) } fn seal_address() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 251_000 picoseconds. - Weight::from_parts(274_000, 0) + // Minimum execution time: 240_000 picoseconds. + Weight::from_parts(249_000, 0) } fn seal_weight_left() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` // Minimum execution time: 599_000 picoseconds. - Weight::from_parts(675_000, 0) + Weight::from_parts(645_000, 0) } fn seal_ref_time_left() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 245_000 picoseconds. - Weight::from_parts(263_000, 0) + // Minimum execution time: 208_000 picoseconds. + Weight::from_parts(244_000, 0) } fn seal_balance() -> Weight { // Proof Size summary in bytes: // Measured: `102` // Estimated: `0` - // Minimum execution time: 4_613_000 picoseconds. - Weight::from_parts(4_768_000, 0) + // Minimum execution time: 4_534_000 picoseconds. + Weight::from_parts(4_689_000, 0) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) @@ -471,8 +466,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `160` // Estimated: `3625` - // Minimum execution time: 8_513_000 picoseconds. - Weight::from_parts(8_765_000, 3625) + // Minimum execution time: 8_640_000 picoseconds. + Weight::from_parts(8_971_000, 3625) .saturating_add(T::DbWeight::get().reads(2_u64)) } /// Storage: `Revive::ImmutableDataOf` (r:1 w:0) @@ -482,10 +477,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `134 + n * (1 ±0)` // Estimated: `3599 + n * (1 ±0)` - // Minimum execution time: 4_870_000 picoseconds. - Weight::from_parts(6_309_018, 3599) + // Minimum execution time: 4_875_000 picoseconds. + Weight::from_parts(6_212_863, 3599) // Standard Error: 7 - .saturating_add(Weight::from_parts(645, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(671, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } @@ -496,67 +491,67 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_754_000 picoseconds. - Weight::from_parts(1_939_099, 0) - // Standard Error: 1 - .saturating_add(Weight::from_parts(581, 0).saturating_mul(n.into())) + // Minimum execution time: 1_678_000 picoseconds. + Weight::from_parts(1_883_150, 0) + // Standard Error: 2 + .saturating_add(Weight::from_parts(579, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().writes(1_u64)) } fn seal_value_transferred() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 243_000 picoseconds. - Weight::from_parts(292_000, 0) + // Minimum execution time: 238_000 picoseconds. + Weight::from_parts(273_000, 0) } fn seal_minimum_balance() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 254_000 picoseconds. - Weight::from_parts(284_000, 0) + // Minimum execution time: 244_000 picoseconds. + Weight::from_parts(260_000, 0) } fn seal_return_data_size() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 242_000 picoseconds. - Weight::from_parts(257_000, 0) + // Minimum execution time: 249_000 picoseconds. + Weight::from_parts(265_000, 0) } fn seal_call_data_size() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 241_000 picoseconds. - Weight::from_parts(261_000, 0) + // Minimum execution time: 243_000 picoseconds. + Weight::from_parts(269_000, 0) } fn seal_gas_limit() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 265_000 picoseconds. - Weight::from_parts(290_000, 0) + // Minimum execution time: 228_000 picoseconds. + Weight::from_parts(268_000, 0) } fn seal_gas_price() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 225_000 picoseconds. - Weight::from_parts(249_000, 0) + // Minimum execution time: 222_000 picoseconds. + Weight::from_parts(251_000, 0) } fn seal_base_fee() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 246_000 picoseconds. - Weight::from_parts(266_000, 0) + // Minimum execution time: 226_000 picoseconds. + Weight::from_parts(250_000, 0) } fn seal_block_number() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 247_000 picoseconds. - Weight::from_parts(267_000, 0) + // Minimum execution time: 228_000 picoseconds. + Weight::from_parts(270_000, 0) } /// Storage: `Session::Validators` (r:1 w:0) /// Proof: `Session::Validators` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) @@ -564,8 +559,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 13_503_000 picoseconds. - Weight::from_parts(13_907_000, 1485) + // Minimum execution time: 13_597_000 picoseconds. + Weight::from_parts(13_770_000, 1485) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `System::BlockHash` (r:1 w:0) @@ -574,127 +569,121 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 2_251_000 picoseconds. - Weight::from_parts(2_370_000, 3465) + // Minimum execution time: 2_199_000 picoseconds. + Weight::from_parts(2_402_000, 3465) .saturating_add(T::DbWeight::get().reads(1_u64)) } fn seal_now() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 237_000 picoseconds. - Weight::from_parts(264_000, 0) + // Minimum execution time: 230_000 picoseconds. + Weight::from_parts(256_000, 0) } fn seal_weight_to_fee() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_238_000 picoseconds. - Weight::from_parts(1_311_000, 0) + // Minimum execution time: 1_214_000 picoseconds. + Weight::from_parts(1_283_000, 0) } /// The range of component `n` is `[0, 262140]`. fn seal_copy_to_contract(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 380_000 picoseconds. - Weight::from_parts(524_789, 0) + // Minimum execution time: 376_000 picoseconds. + Weight::from_parts(569_136, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(237, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(236, 0).saturating_mul(n.into())) } fn seal_call_data_load() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 248_000 picoseconds. - Weight::from_parts(267_000, 0) + // Minimum execution time: 243_000 picoseconds. + Weight::from_parts(260_000, 0) } /// The range of component `n` is `[0, 262144]`. fn seal_call_data_copy(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 230_000 picoseconds. - Weight::from_parts(207_234, 0) + // Minimum execution time: 231_000 picoseconds. + Weight::from_parts(379_088, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(150, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(148, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262140]`. fn seal_return(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 267_000 picoseconds. - Weight::from_parts(357_669, 0) + // Minimum execution time: 227_000 picoseconds. + Weight::from_parts(400_572, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(238, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(237, 0).saturating_mul(n.into())) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::DeletionQueueCounter` (r:1 w:1) /// Proof: `Revive::DeletionQueueCounter` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`) - /// Storage: `Revive::CodeInfoOf` (r:33 w:33) + /// Storage: `Revive::CodeInfoOf` (r:1 w:1) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) /// Storage: `Revive::DeletionQueue` (r:0 w:1) /// Proof: `Revive::DeletionQueue` (`max_values`: None, `max_size`: Some(142), added: 2617, mode: `Measured`) /// Storage: `Revive::ImmutableDataOf` (r:0 w:1) /// Proof: `Revive::ImmutableDataOf` (`max_values`: None, `max_size`: Some(4118), added: 6593, mode: `Measured`) - /// The range of component `n` is `[0, 32]`. - fn seal_terminate(n: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `218 + n * (88 ±0)` - // Estimated: `3684 + n * (2563 ±0)` - // Minimum execution time: 14_314_000 picoseconds. - Weight::from_parts(15_353_516, 3684) - // Standard Error: 10_720 - .saturating_add(Weight::from_parts(4_159_489, 0).saturating_mul(n.into())) + fn seal_terminate() -> Weight { + // Proof Size summary in bytes: + // Measured: `215` + // Estimated: `3680` + // Minimum execution time: 14_216_000 picoseconds. + Weight::from_parts(14_533_000, 3680) .saturating_add(T::DbWeight::get().reads(3_u64)) - .saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(T::DbWeight::get().writes(4_u64)) - .saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(n.into()))) - .saturating_add(Weight::from_parts(0, 2563).saturating_mul(n.into())) } /// The range of component `t` is `[0, 4]`. - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_deposit_event(t: u32, n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_968_000 picoseconds. - Weight::from_parts(3_902_423, 0) - // Standard Error: 2_379 - .saturating_add(Weight::from_parts(199_019, 0).saturating_mul(t.into())) - // Standard Error: 24 - .saturating_add(Weight::from_parts(945, 0).saturating_mul(n.into())) + // Minimum execution time: 3_877_000 picoseconds. + Weight::from_parts(3_856_832, 0) + // Standard Error: 2_622 + .saturating_add(Weight::from_parts(201_206, 0).saturating_mul(t.into())) + // Standard Error: 28 + .saturating_add(Weight::from_parts(1_128, 0).saturating_mul(n.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) fn get_storage_empty() -> Weight { // Proof Size summary in bytes: - // Measured: `584` - // Estimated: `584` - // Minimum execution time: 5_980_000 picoseconds. - Weight::from_parts(6_250_000, 584) + // Measured: `552` + // Estimated: `552` + // Minimum execution time: 5_806_000 picoseconds. + Weight::from_parts(6_037_000, 552) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) fn get_storage_full() -> Weight { // Proof Size summary in bytes: - // Measured: `10594` - // Estimated: `10594` - // Minimum execution time: 39_415_000 picoseconds. - Weight::from_parts(40_109_000, 10594) + // Measured: `10562` + // Estimated: `10562` + // Minimum execution time: 39_517_000 picoseconds. + Weight::from_parts(40_698_000, 10562) .saturating_add(T::DbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) fn set_storage_empty() -> Weight { // Proof Size summary in bytes: - // Measured: `584` - // Estimated: `584` - // Minimum execution time: 6_844_000 picoseconds. - Weight::from_parts(7_017_000, 584) + // Measured: `552` + // Estimated: `552` + // Minimum execution time: 6_747_000 picoseconds. + Weight::from_parts(7_003_000, 552) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -702,85 +691,85 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) fn set_storage_full() -> Weight { // Proof Size summary in bytes: - // Measured: `10594` - // Estimated: `10594` - // Minimum execution time: 39_496_000 picoseconds. - Weight::from_parts(41_428_000, 10594) + // Measured: `10562` + // Estimated: `10562` + // Minimum execution time: 40_158_000 picoseconds. + Weight::from_parts(41_394_000, 10562) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// The range of component `n` is `[0, 448]`. - /// The range of component `o` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. + /// The range of component `o` is `[0, 416]`. fn seal_set_storage(n: u32, o: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `152 + o * (1 ±0)` // Estimated: `151 + o * (1 ±0)` - // Minimum execution time: 6_400_000 picoseconds. - Weight::from_parts(7_358_548, 151) - // Standard Error: 67 - .saturating_add(Weight::from_parts(659, 0).saturating_mul(n.into())) - // Standard Error: 67 - .saturating_add(Weight::from_parts(1_273, 0).saturating_mul(o.into())) + // Minimum execution time: 6_360_000 picoseconds. + Weight::from_parts(7_335_152, 151) + // Standard Error: 80 + .saturating_add(Weight::from_parts(716, 0).saturating_mul(n.into())) + // Standard Error: 80 + .saturating_add(Weight::from_parts(1_127, 0).saturating_mul(o.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(o.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_clear_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 6_090_000 picoseconds. - Weight::from_parts(7_308_548, 151) - // Standard Error: 113 - .saturating_add(Weight::from_parts(1_456, 0).saturating_mul(n.into())) + // Minimum execution time: 5_980_000 picoseconds. + Weight::from_parts(7_164_266, 151) + // Standard Error: 130 + .saturating_add(Weight::from_parts(1_893, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_get_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 5_649_000 picoseconds. - Weight::from_parts(7_096_122, 151) - // Standard Error: 120 - .saturating_add(Weight::from_parts(2_127, 0).saturating_mul(n.into())) + // Minimum execution time: 5_823_000 picoseconds. + Weight::from_parts(7_045_557, 151) + // Standard Error: 123 + .saturating_add(Weight::from_parts(2_222, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_contains_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 5_261_000 picoseconds. - Weight::from_parts(6_552_943, 151) - // Standard Error: 117 - .saturating_add(Weight::from_parts(1_585, 0).saturating_mul(n.into())) + // Minimum execution time: 5_349_000 picoseconds. + Weight::from_parts(6_506_216, 151) + // Standard Error: 127 + .saturating_add(Weight::from_parts(1_605, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_take_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 6_374_000 picoseconds. - Weight::from_parts(7_739_700, 151) - // Standard Error: 122 - .saturating_add(Weight::from_parts(2_264, 0).saturating_mul(n.into())) + // Minimum execution time: 6_151_000 picoseconds. + Weight::from_parts(7_812_180, 151) + // Standard Error: 159 + .saturating_add(Weight::from_parts(2_277, 0).saturating_mul(n.into())) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) @@ -789,92 +778,94 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_371_000 picoseconds. - Weight::from_parts(1_446_000, 0) + // Minimum execution time: 1_344_000 picoseconds. + Weight::from_parts(1_462_000, 0) } fn set_transient_storage_full() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_663_000 picoseconds. - Weight::from_parts(1_786_000, 0) + // Minimum execution time: 1_680_000 picoseconds. + Weight::from_parts(1_785_000, 0) } fn get_transient_storage_empty() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_352_000 picoseconds. - Weight::from_parts(1_425_000, 0) + // Minimum execution time: 1_380_000 picoseconds. + Weight::from_parts(1_502_000, 0) } fn get_transient_storage_full() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_499_000 picoseconds. - Weight::from_parts(1_569_000, 0) + // Minimum execution time: 1_506_000 picoseconds. + Weight::from_parts(1_604_000, 0) } fn rollback_transient_storage() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_038_000 picoseconds. - Weight::from_parts(1_091_000, 0) + // Minimum execution time: 972_000 picoseconds. + Weight::from_parts(1_054_000, 0) } - /// The range of component `n` is `[0, 448]`. - /// The range of component `o` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. + /// The range of component `o` is `[0, 416]`. fn seal_set_transient_storage(n: u32, o: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_108_000 picoseconds. - Weight::from_parts(2_300_363, 0) - // Standard Error: 13 - .saturating_add(Weight::from_parts(242, 0).saturating_mul(n.into())) - // Standard Error: 13 - .saturating_add(Weight::from_parts(374, 0).saturating_mul(o.into())) + // Minimum execution time: 2_048_000 picoseconds. + Weight::from_parts(2_304_120, 0) + // Standard Error: 17 + .saturating_add(Weight::from_parts(254, 0).saturating_mul(n.into())) + // Standard Error: 17 + .saturating_add(Weight::from_parts(321, 0).saturating_mul(o.into())) } - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_clear_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_822_000 picoseconds. - Weight::from_parts(2_150_092, 0) - // Standard Error: 16 - .saturating_add(Weight::from_parts(394, 0).saturating_mul(n.into())) + // Minimum execution time: 1_790_000 picoseconds. + Weight::from_parts(2_141_874, 0) + // Standard Error: 31 + .saturating_add(Weight::from_parts(378, 0).saturating_mul(n.into())) } - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_get_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_675_000 picoseconds. - Weight::from_parts(1_873_341, 0) - // Standard Error: 12 - .saturating_add(Weight::from_parts(273, 0).saturating_mul(n.into())) + // Minimum execution time: 1_662_000 picoseconds. + Weight::from_parts(1_938_172, 0) + // Standard Error: 14 + .saturating_add(Weight::from_parts(316, 0).saturating_mul(n.into())) } - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_contains_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_555_000 picoseconds. - Weight::from_parts(1_690_236, 0) - // Standard Error: 10 - .saturating_add(Weight::from_parts(185, 0).saturating_mul(n.into())) + // Minimum execution time: 1_570_000 picoseconds. + Weight::from_parts(1_769_617, 0) + // Standard Error: 13 + .saturating_add(Weight::from_parts(152, 0).saturating_mul(n.into())) } - /// The range of component `n` is `[0, 448]`. - fn seal_take_transient_storage(_n: u32, ) -> Weight { + /// The range of component `n` is `[0, 416]`. + fn seal_take_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_278_000 picoseconds. - Weight::from_parts(2_522_598, 0) + // Minimum execution time: 2_266_000 picoseconds. + Weight::from_parts(2_497_430, 0) + // Standard Error: 21 + .saturating_add(Weight::from_parts(38, 0).saturating_mul(n.into())) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:0) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:1 w:0) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:1 w:0) @@ -885,12 +876,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// The range of component `i` is `[0, 262144]`. fn seal_call(t: u32, i: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1164 + t * (206 ±0)` - // Estimated: `4629 + t * (2417 ±0)` - // Minimum execution time: 30_631_000 picoseconds. - Weight::from_parts(31_328_855, 4629) - // Standard Error: 36_031 - .saturating_add(Weight::from_parts(5_665_922, 0).saturating_mul(t.into())) + // Measured: `1163 + t * (206 ±0)` + // Estimated: `4628 + t * (2417 ±0)` + // Minimum execution time: 30_368_000 picoseconds. + Weight::from_parts(31_023_429, 4628) + // Standard Error: 43_250 + .saturating_add(Weight::from_parts(5_949_452, 0).saturating_mul(t.into())) // Standard Error: 0 .saturating_add(Weight::from_parts(2, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().reads(4_u64)) @@ -899,17 +890,17 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { .saturating_add(Weight::from_parts(0, 2417).saturating_mul(t.into())) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:1 w:0) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:1 w:0) /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) fn seal_delegate_call() -> Weight { // Proof Size summary in bytes: - // Measured: `1109` - // Estimated: `4574` - // Minimum execution time: 25_423_000 picoseconds. - Weight::from_parts(25_957_000, 4574) + // Measured: `1108` + // Estimated: `4573` + // Minimum execution time: 24_707_000 picoseconds. + Weight::from_parts(25_410_000, 4573) .saturating_add(T::DbWeight::get().reads(3_u64)) } /// Storage: `Revive::CodeInfoOf` (r:1 w:1) @@ -917,18 +908,18 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { /// Storage: `Revive::PristineCode` (r:1 w:0) /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `System::Account` (r:1 w:1) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) /// The range of component `i` is `[0, 262144]`. fn seal_instantiate(i: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1093` - // Estimated: `4571` - // Minimum execution time: 108_874_000 picoseconds. - Weight::from_parts(98_900_023, 4571) + // Measured: `1094` + // Estimated: `4579` + // Minimum execution time: 107_232_000 picoseconds. + Weight::from_parts(94_844_854, 4579) // Standard Error: 10 - .saturating_add(Weight::from_parts(4_183, 0).saturating_mul(i.into())) + .saturating_add(Weight::from_parts(4_159, 0).saturating_mul(i.into())) .saturating_add(T::DbWeight::get().reads(4_u64)) .saturating_add(T::DbWeight::get().writes(3_u64)) } @@ -937,64 +928,64 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 627_000 picoseconds. - Weight::from_parts(3_385_445, 0) - // Standard Error: 3 - .saturating_add(Weight::from_parts(1_419, 0).saturating_mul(n.into())) + // Minimum execution time: 617_000 picoseconds. + Weight::from_parts(3_460_054, 0) + // Standard Error: 2 + .saturating_add(Weight::from_parts(1_374, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_keccak_256(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_035_000 picoseconds. - Weight::from_parts(3_723_700, 0) - // Standard Error: 3 - .saturating_add(Weight::from_parts(3_637, 0).saturating_mul(n.into())) + // Minimum execution time: 1_040_000 picoseconds. + Weight::from_parts(3_026_644, 0) + // Standard Error: 2 + .saturating_add(Weight::from_parts(3_607, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_blake2_256(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 626_000 picoseconds. - Weight::from_parts(2_822_237, 0) + // Minimum execution time: 633_000 picoseconds. + Weight::from_parts(3_375_104, 0) // Standard Error: 2 - .saturating_add(Weight::from_parts(1_552, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(1_494, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_blake2_128(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 554_000 picoseconds. - Weight::from_parts(3_287_817, 0) - // Standard Error: 3 - .saturating_add(Weight::from_parts(1_542, 0).saturating_mul(n.into())) + // Minimum execution time: 601_000 picoseconds. + Weight::from_parts(3_802_060, 0) + // Standard Error: 2 + .saturating_add(Weight::from_parts(1_493, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 261889]`. fn seal_sr25519_verify(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 42_532_000 picoseconds. - Weight::from_parts(27_976_517, 0) - // Standard Error: 11 - .saturating_add(Weight::from_parts(5_453, 0).saturating_mul(n.into())) + // Minimum execution time: 42_419_000 picoseconds. + Weight::from_parts(26_760_986, 0) + // Standard Error: 12 + .saturating_add(Weight::from_parts(5_421, 0).saturating_mul(n.into())) } fn seal_ecdsa_recover() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 45_970_000 picoseconds. - Weight::from_parts(47_747_000, 0) + // Minimum execution time: 48_672_000 picoseconds. + Weight::from_parts(49_840_000, 0) } fn seal_ecdsa_to_eth_address() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 12_550_000 picoseconds. - Weight::from_parts(12_706_000, 0) + // Minimum execution time: 12_307_000 picoseconds. + Weight::from_parts(12_500_000, 0) } /// Storage: `Revive::CodeInfoOf` (r:1 w:1) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) @@ -1002,30 +993,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `196` // Estimated: `3661` - // Minimum execution time: 10_229_000 picoseconds. - Weight::from_parts(10_530_000, 3661) - .saturating_add(T::DbWeight::get().reads(1_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) - } - /// Storage: `Revive::CodeInfoOf` (r:1 w:1) - /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) - fn lock_delegate_dependency() -> Weight { - // Proof Size summary in bytes: - // Measured: `234` - // Estimated: `3699` - // Minimum execution time: 9_743_000 picoseconds. - Weight::from_parts(10_180_000, 3699) - .saturating_add(T::DbWeight::get().reads(1_u64)) - .saturating_add(T::DbWeight::get().writes(1_u64)) - } - /// Storage: `Revive::CodeInfoOf` (r:1 w:1) - /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `MaxEncodedLen`) - fn unlock_delegate_dependency() -> Weight { - // Proof Size summary in bytes: - // Measured: `234` - // Estimated: `3561` - // Minimum execution time: 8_717_000 picoseconds. - Weight::from_parts(9_129_000, 3561) + // Minimum execution time: 10_142_000 picoseconds. + Weight::from_parts(10_458_000, 3661) .saturating_add(T::DbWeight::get().reads(1_u64)) .saturating_add(T::DbWeight::get().writes(1_u64)) } @@ -1034,10 +1003,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 8_332_000 picoseconds. - Weight::from_parts(9_985_610, 0) - // Standard Error: 187 - .saturating_add(Weight::from_parts(73_915, 0).saturating_mul(r.into())) + // Minimum execution time: 7_893_000 picoseconds. + Weight::from_parts(9_362_667, 0) + // Standard Error: 84 + .saturating_add(Weight::from_parts(74_272, 0).saturating_mul(r.into())) } } @@ -1049,8 +1018,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 690_000 picoseconds. - Weight::from_parts(743_000, 1485) + // Minimum execution time: 695_000 picoseconds. + Weight::from_parts(750_000, 1485) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) @@ -1060,10 +1029,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `230 + k * (69 ±0)` // Estimated: `222 + k * (70 ±0)` - // Minimum execution time: 10_913_000 picoseconds. - Weight::from_parts(11_048_000, 222) - // Standard Error: 972 - .saturating_add(Weight::from_parts(1_172_318, 0).saturating_mul(k.into())) + // Minimum execution time: 10_509_000 picoseconds. + Weight::from_parts(10_896_000, 222) + // Standard Error: 2_549 + .saturating_add(Weight::from_parts(1_264_033, 0).saturating_mul(k.into())) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(k.into()))) .saturating_add(RocksDbWeight::get().writes(2_u64)) @@ -1073,7 +1042,7 @@ impl WeightInfo for () { /// Storage: `Revive::AddressSuffix` (r:2 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:1 w:0) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:1 w:0) @@ -1083,14 +1052,12 @@ impl WeightInfo for () { /// Storage: `System::Account` (r:1 w:1) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) /// The range of component `c` is `[0, 262144]`. - fn call_with_code_per_byte(c: u32, ) -> Weight { + fn call_with_code_per_byte(_c: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1195` - // Estimated: `7135` - // Minimum execution time: 83_080_000 picoseconds. - Weight::from_parts(89_270_264, 7135) - // Standard Error: 0 - .saturating_add(Weight::from_parts(3, 0).saturating_mul(c.into())) + // Measured: `1194` + // Estimated: `7134` + // Minimum execution time: 84_008_000 picoseconds. + Weight::from_parts(91_138_296, 7134) .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -1101,7 +1068,7 @@ impl WeightInfo for () { /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Timestamp::Now` (r:1 w:0) /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`) /// Storage: `System::Account` (r:1 w:1) @@ -1114,10 +1081,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `93` // Estimated: `6033` - // Minimum execution time: 171_761_000 picoseconds. - Weight::from_parts(158_031_807, 6033) - // Standard Error: 11 - .saturating_add(Weight::from_parts(4_536, 0).saturating_mul(i.into())) + // Minimum execution time: 172_907_000 picoseconds. + Weight::from_parts(153_592_465, 6033) + // Standard Error: 12 + .saturating_add(Weight::from_parts(4_544, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(6_u64)) } @@ -1128,7 +1095,7 @@ impl WeightInfo for () { /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Timestamp::Now` (r:1 w:0) /// Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`) /// Storage: `System::Account` (r:1 w:1) @@ -1140,17 +1107,17 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `987` // Estimated: `4452` - // Minimum execution time: 143_210_000 picoseconds. - Weight::from_parts(121_908_111, 4452) - // Standard Error: 15 - .saturating_add(Weight::from_parts(4_467, 0).saturating_mul(i.into())) + // Minimum execution time: 143_169_000 picoseconds. + Weight::from_parts(120_653_436, 4452) + // Standard Error: 16 + .saturating_add(Weight::from_parts(4_444, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(4_u64)) } /// Storage: `Revive::AddressSuffix` (r:2 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:1 w:0) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:1 w:0) @@ -1161,10 +1128,10 @@ impl WeightInfo for () { /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) fn call() -> Weight { // Proof Size summary in bytes: - // Measured: `1195` - // Estimated: `7135` - // Minimum execution time: 136_689_000 picoseconds. - Weight::from_parts(145_358_000, 7135) + // Measured: `1194` + // Estimated: `7134` + // Minimum execution time: 138_392_000 picoseconds. + Weight::from_parts(143_329_000, 7134) .saturating_add(RocksDbWeight::get().reads(7_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -1175,14 +1142,12 @@ impl WeightInfo for () { /// Storage: `Revive::PristineCode` (r:0 w:1) /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) /// The range of component `c` is `[0, 262144]`. - fn upload_code(c: u32, ) -> Weight { + fn upload_code(_c: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 43_351_000 picoseconds. - Weight::from_parts(44_896_319, 3465) - // Standard Error: 0 - .saturating_add(Weight::from_parts(1, 0).saturating_mul(c.into())) + // Minimum execution time: 43_420_000 picoseconds. + Weight::from_parts(45_143_767, 3465) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(3_u64)) } @@ -1196,21 +1161,21 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `181` // Estimated: `3646` - // Minimum execution time: 36_034_000 picoseconds. - Weight::from_parts(36_595_000, 3646) + // Minimum execution time: 35_828_000 picoseconds. + Weight::from_parts(36_853_000, 3646) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(3_u64)) } /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:2 w:2) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) fn set_code() -> Weight { // Proof Size summary in bytes: - // Measured: `425` - // Estimated: `6365` - // Minimum execution time: 19_484_000 picoseconds. - Weight::from_parts(20_104_000, 6365) + // Measured: `424` + // Estimated: `6364` + // Minimum execution time: 19_678_000 picoseconds. + Weight::from_parts(21_266_000, 6364) .saturating_add(RocksDbWeight::get().reads(3_u64)) .saturating_add(RocksDbWeight::get().writes(3_u64)) } @@ -1222,8 +1187,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 37_066_000 picoseconds. - Weight::from_parts(37_646_000, 3465) + // Minimum execution time: 37_024_000 picoseconds. + Weight::from_parts(37_440_000, 3465) .saturating_add(RocksDbWeight::get().reads(2_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -1235,8 +1200,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `56` // Estimated: `3521` - // Minimum execution time: 31_604_000 picoseconds. - Weight::from_parts(32_557_000, 3521) + // Minimum execution time: 31_228_000 picoseconds. + Weight::from_parts(32_183_000, 3521) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(2_u64)) } @@ -1248,8 +1213,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 6_070_000 picoseconds. - Weight::from_parts(6_246_000, 3465) + // Minimum execution time: 6_241_000 picoseconds. + Weight::from_parts(6_467_000, 3465) .saturating_add(RocksDbWeight::get().reads(2_u64)) } /// The range of component `r` is `[0, 1600]`. @@ -1257,33 +1222,33 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 6_471_000 picoseconds. - Weight::from_parts(7_724_355, 0) - // Standard Error: 245 - .saturating_add(Weight::from_parts(165_331, 0).saturating_mul(r.into())) + // Minimum execution time: 6_397_000 picoseconds. + Weight::from_parts(7_159_300, 0) + // Standard Error: 173 + .saturating_add(Weight::from_parts(167_265, 0).saturating_mul(r.into())) } fn seal_caller() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 239_000 picoseconds. - Weight::from_parts(278_000, 0) + // Minimum execution time: 267_000 picoseconds. + Weight::from_parts(296_000, 0) } fn seal_origin() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 234_000 picoseconds. - Weight::from_parts(264_000, 0) + // Minimum execution time: 227_000 picoseconds. + Weight::from_parts(252_000, 0) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) fn seal_is_contract() -> Weight { // Proof Size summary in bytes: // Measured: `202` // Estimated: `3667` - // Minimum execution time: 6_508_000 picoseconds. - Weight::from_parts(6_715_000, 3667) + // Minimum execution time: 6_591_000 picoseconds. + Weight::from_parts(6_770_000, 3667) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) @@ -1292,80 +1257,80 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `144` // Estimated: `3609` - // Minimum execution time: 6_190_000 picoseconds. - Weight::from_parts(6_413_000, 3609) + // Minimum execution time: 6_182_000 picoseconds. + Weight::from_parts(6_372_000, 3609) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) fn seal_code_hash() -> Weight { // Proof Size summary in bytes: - // Measured: `299` - // Estimated: `3764` - // Minimum execution time: 7_547_000 picoseconds. - Weight::from_parts(7_742_000, 3764) + // Measured: `298` + // Estimated: `3763` + // Minimum execution time: 7_327_000 picoseconds. + Weight::from_parts(7_612_000, 3763) .saturating_add(RocksDbWeight::get().reads(1_u64)) } fn seal_own_code_hash() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 251_000 picoseconds. - Weight::from_parts(274_000, 0) + // Minimum execution time: 232_000 picoseconds. + Weight::from_parts(287_000, 0) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:1 w:0) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) fn seal_code_size() -> Weight { // Proof Size summary in bytes: - // Measured: `369` - // Estimated: `3834` - // Minimum execution time: 10_825_000 picoseconds. - Weight::from_parts(11_185_000, 3834) + // Measured: `368` + // Estimated: `3833` + // Minimum execution time: 10_918_000 picoseconds. + Weight::from_parts(11_323_000, 3833) .saturating_add(RocksDbWeight::get().reads(2_u64)) } fn seal_caller_is_origin() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 325_000 picoseconds. - Weight::from_parts(352_000, 0) + // Minimum execution time: 310_000 picoseconds. + Weight::from_parts(340_000, 0) } fn seal_caller_is_root() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 245_000 picoseconds. - Weight::from_parts(282_000, 0) + // Minimum execution time: 257_000 picoseconds. + Weight::from_parts(292_000, 0) } fn seal_address() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 251_000 picoseconds. - Weight::from_parts(274_000, 0) + // Minimum execution time: 240_000 picoseconds. + Weight::from_parts(249_000, 0) } fn seal_weight_left() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` // Minimum execution time: 599_000 picoseconds. - Weight::from_parts(675_000, 0) + Weight::from_parts(645_000, 0) } fn seal_ref_time_left() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 245_000 picoseconds. - Weight::from_parts(263_000, 0) + // Minimum execution time: 208_000 picoseconds. + Weight::from_parts(244_000, 0) } fn seal_balance() -> Weight { // Proof Size summary in bytes: // Measured: `102` // Estimated: `0` - // Minimum execution time: 4_613_000 picoseconds. - Weight::from_parts(4_768_000, 0) + // Minimum execution time: 4_534_000 picoseconds. + Weight::from_parts(4_689_000, 0) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) @@ -1375,8 +1340,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `160` // Estimated: `3625` - // Minimum execution time: 8_513_000 picoseconds. - Weight::from_parts(8_765_000, 3625) + // Minimum execution time: 8_640_000 picoseconds. + Weight::from_parts(8_971_000, 3625) .saturating_add(RocksDbWeight::get().reads(2_u64)) } /// Storage: `Revive::ImmutableDataOf` (r:1 w:0) @@ -1386,10 +1351,10 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `134 + n * (1 ±0)` // Estimated: `3599 + n * (1 ±0)` - // Minimum execution time: 4_870_000 picoseconds. - Weight::from_parts(6_309_018, 3599) + // Minimum execution time: 4_875_000 picoseconds. + Weight::from_parts(6_212_863, 3599) // Standard Error: 7 - .saturating_add(Weight::from_parts(645, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(671, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } @@ -1400,67 +1365,67 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_754_000 picoseconds. - Weight::from_parts(1_939_099, 0) - // Standard Error: 1 - .saturating_add(Weight::from_parts(581, 0).saturating_mul(n.into())) + // Minimum execution time: 1_678_000 picoseconds. + Weight::from_parts(1_883_150, 0) + // Standard Error: 2 + .saturating_add(Weight::from_parts(579, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().writes(1_u64)) } fn seal_value_transferred() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 243_000 picoseconds. - Weight::from_parts(292_000, 0) + // Minimum execution time: 238_000 picoseconds. + Weight::from_parts(273_000, 0) } fn seal_minimum_balance() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 254_000 picoseconds. - Weight::from_parts(284_000, 0) + // Minimum execution time: 244_000 picoseconds. + Weight::from_parts(260_000, 0) } fn seal_return_data_size() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 242_000 picoseconds. - Weight::from_parts(257_000, 0) + // Minimum execution time: 249_000 picoseconds. + Weight::from_parts(265_000, 0) } fn seal_call_data_size() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 241_000 picoseconds. - Weight::from_parts(261_000, 0) + // Minimum execution time: 243_000 picoseconds. + Weight::from_parts(269_000, 0) } fn seal_gas_limit() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 265_000 picoseconds. - Weight::from_parts(290_000, 0) + // Minimum execution time: 228_000 picoseconds. + Weight::from_parts(268_000, 0) } fn seal_gas_price() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 225_000 picoseconds. - Weight::from_parts(249_000, 0) + // Minimum execution time: 222_000 picoseconds. + Weight::from_parts(251_000, 0) } fn seal_base_fee() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 246_000 picoseconds. - Weight::from_parts(266_000, 0) + // Minimum execution time: 226_000 picoseconds. + Weight::from_parts(250_000, 0) } fn seal_block_number() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 247_000 picoseconds. - Weight::from_parts(267_000, 0) + // Minimum execution time: 228_000 picoseconds. + Weight::from_parts(270_000, 0) } /// Storage: `Session::Validators` (r:1 w:0) /// Proof: `Session::Validators` (`max_values`: Some(1), `max_size`: None, mode: `Measured`) @@ -1468,8 +1433,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `1485` - // Minimum execution time: 13_503_000 picoseconds. - Weight::from_parts(13_907_000, 1485) + // Minimum execution time: 13_597_000 picoseconds. + Weight::from_parts(13_770_000, 1485) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `System::BlockHash` (r:1 w:0) @@ -1478,127 +1443,121 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `3465` - // Minimum execution time: 2_251_000 picoseconds. - Weight::from_parts(2_370_000, 3465) + // Minimum execution time: 2_199_000 picoseconds. + Weight::from_parts(2_402_000, 3465) .saturating_add(RocksDbWeight::get().reads(1_u64)) } fn seal_now() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 237_000 picoseconds. - Weight::from_parts(264_000, 0) + // Minimum execution time: 230_000 picoseconds. + Weight::from_parts(256_000, 0) } fn seal_weight_to_fee() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_238_000 picoseconds. - Weight::from_parts(1_311_000, 0) + // Minimum execution time: 1_214_000 picoseconds. + Weight::from_parts(1_283_000, 0) } /// The range of component `n` is `[0, 262140]`. fn seal_copy_to_contract(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 380_000 picoseconds. - Weight::from_parts(524_789, 0) + // Minimum execution time: 376_000 picoseconds. + Weight::from_parts(569_136, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(237, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(236, 0).saturating_mul(n.into())) } fn seal_call_data_load() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 248_000 picoseconds. - Weight::from_parts(267_000, 0) + // Minimum execution time: 243_000 picoseconds. + Weight::from_parts(260_000, 0) } /// The range of component `n` is `[0, 262144]`. fn seal_call_data_copy(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 230_000 picoseconds. - Weight::from_parts(207_234, 0) + // Minimum execution time: 231_000 picoseconds. + Weight::from_parts(379_088, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(150, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(148, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262140]`. fn seal_return(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 267_000 picoseconds. - Weight::from_parts(357_669, 0) + // Minimum execution time: 227_000 picoseconds. + Weight::from_parts(400_572, 0) // Standard Error: 0 - .saturating_add(Weight::from_parts(238, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(237, 0).saturating_mul(n.into())) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::DeletionQueueCounter` (r:1 w:1) /// Proof: `Revive::DeletionQueueCounter` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`) - /// Storage: `Revive::CodeInfoOf` (r:33 w:33) + /// Storage: `Revive::CodeInfoOf` (r:1 w:1) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) /// Storage: `Revive::DeletionQueue` (r:0 w:1) /// Proof: `Revive::DeletionQueue` (`max_values`: None, `max_size`: Some(142), added: 2617, mode: `Measured`) /// Storage: `Revive::ImmutableDataOf` (r:0 w:1) /// Proof: `Revive::ImmutableDataOf` (`max_values`: None, `max_size`: Some(4118), added: 6593, mode: `Measured`) - /// The range of component `n` is `[0, 32]`. - fn seal_terminate(n: u32, ) -> Weight { - // Proof Size summary in bytes: - // Measured: `218 + n * (88 ±0)` - // Estimated: `3684 + n * (2563 ±0)` - // Minimum execution time: 14_314_000 picoseconds. - Weight::from_parts(15_353_516, 3684) - // Standard Error: 10_720 - .saturating_add(Weight::from_parts(4_159_489, 0).saturating_mul(n.into())) + fn seal_terminate() -> Weight { + // Proof Size summary in bytes: + // Measured: `215` + // Estimated: `3680` + // Minimum execution time: 14_216_000 picoseconds. + Weight::from_parts(14_533_000, 3680) .saturating_add(RocksDbWeight::get().reads(3_u64)) - .saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(n.into()))) .saturating_add(RocksDbWeight::get().writes(4_u64)) - .saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(n.into()))) - .saturating_add(Weight::from_parts(0, 2563).saturating_mul(n.into())) } /// The range of component `t` is `[0, 4]`. - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_deposit_event(t: u32, n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 3_968_000 picoseconds. - Weight::from_parts(3_902_423, 0) - // Standard Error: 2_379 - .saturating_add(Weight::from_parts(199_019, 0).saturating_mul(t.into())) - // Standard Error: 24 - .saturating_add(Weight::from_parts(945, 0).saturating_mul(n.into())) + // Minimum execution time: 3_877_000 picoseconds. + Weight::from_parts(3_856_832, 0) + // Standard Error: 2_622 + .saturating_add(Weight::from_parts(201_206, 0).saturating_mul(t.into())) + // Standard Error: 28 + .saturating_add(Weight::from_parts(1_128, 0).saturating_mul(n.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) fn get_storage_empty() -> Weight { // Proof Size summary in bytes: - // Measured: `584` - // Estimated: `584` - // Minimum execution time: 5_980_000 picoseconds. - Weight::from_parts(6_250_000, 584) + // Measured: `552` + // Estimated: `552` + // Minimum execution time: 5_806_000 picoseconds. + Weight::from_parts(6_037_000, 552) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) fn get_storage_full() -> Weight { // Proof Size summary in bytes: - // Measured: `10594` - // Estimated: `10594` - // Minimum execution time: 39_415_000 picoseconds. - Weight::from_parts(40_109_000, 10594) + // Measured: `10562` + // Estimated: `10562` + // Minimum execution time: 39_517_000 picoseconds. + Weight::from_parts(40_698_000, 10562) .saturating_add(RocksDbWeight::get().reads(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) fn set_storage_empty() -> Weight { // Proof Size summary in bytes: - // Measured: `584` - // Estimated: `584` - // Minimum execution time: 6_844_000 picoseconds. - Weight::from_parts(7_017_000, 584) + // Measured: `552` + // Estimated: `552` + // Minimum execution time: 6_747_000 picoseconds. + Weight::from_parts(7_003_000, 552) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -1606,85 +1565,85 @@ impl WeightInfo for () { /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) fn set_storage_full() -> Weight { // Proof Size summary in bytes: - // Measured: `10594` - // Estimated: `10594` - // Minimum execution time: 39_496_000 picoseconds. - Weight::from_parts(41_428_000, 10594) + // Measured: `10562` + // Estimated: `10562` + // Minimum execution time: 40_158_000 picoseconds. + Weight::from_parts(41_394_000, 10562) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// The range of component `n` is `[0, 448]`. - /// The range of component `o` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. + /// The range of component `o` is `[0, 416]`. fn seal_set_storage(n: u32, o: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `152 + o * (1 ±0)` // Estimated: `151 + o * (1 ±0)` - // Minimum execution time: 6_400_000 picoseconds. - Weight::from_parts(7_358_548, 151) - // Standard Error: 67 - .saturating_add(Weight::from_parts(659, 0).saturating_mul(n.into())) - // Standard Error: 67 - .saturating_add(Weight::from_parts(1_273, 0).saturating_mul(o.into())) + // Minimum execution time: 6_360_000 picoseconds. + Weight::from_parts(7_335_152, 151) + // Standard Error: 80 + .saturating_add(Weight::from_parts(716, 0).saturating_mul(n.into())) + // Standard Error: 80 + .saturating_add(Weight::from_parts(1_127, 0).saturating_mul(o.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(o.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_clear_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 6_090_000 picoseconds. - Weight::from_parts(7_308_548, 151) - // Standard Error: 113 - .saturating_add(Weight::from_parts(1_456, 0).saturating_mul(n.into())) + // Minimum execution time: 5_980_000 picoseconds. + Weight::from_parts(7_164_266, 151) + // Standard Error: 130 + .saturating_add(Weight::from_parts(1_893, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_get_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 5_649_000 picoseconds. - Weight::from_parts(7_096_122, 151) - // Standard Error: 120 - .saturating_add(Weight::from_parts(2_127, 0).saturating_mul(n.into())) + // Minimum execution time: 5_823_000 picoseconds. + Weight::from_parts(7_045_557, 151) + // Standard Error: 123 + .saturating_add(Weight::from_parts(2_222, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_contains_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 5_261_000 picoseconds. - Weight::from_parts(6_552_943, 151) - // Standard Error: 117 - .saturating_add(Weight::from_parts(1_585, 0).saturating_mul(n.into())) + // Minimum execution time: 5_349_000 picoseconds. + Weight::from_parts(6_506_216, 151) + // Standard Error: 127 + .saturating_add(Weight::from_parts(1_605, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) } /// Storage: `Skipped::Metadata` (r:0 w:0) /// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`) - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_take_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `152 + n * (1 ±0)` // Estimated: `151 + n * (1 ±0)` - // Minimum execution time: 6_374_000 picoseconds. - Weight::from_parts(7_739_700, 151) - // Standard Error: 122 - .saturating_add(Weight::from_parts(2_264, 0).saturating_mul(n.into())) + // Minimum execution time: 6_151_000 picoseconds. + Weight::from_parts(7_812_180, 151) + // Standard Error: 159 + .saturating_add(Weight::from_parts(2_277, 0).saturating_mul(n.into())) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) .saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into())) @@ -1693,92 +1652,94 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_371_000 picoseconds. - Weight::from_parts(1_446_000, 0) + // Minimum execution time: 1_344_000 picoseconds. + Weight::from_parts(1_462_000, 0) } fn set_transient_storage_full() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_663_000 picoseconds. - Weight::from_parts(1_786_000, 0) + // Minimum execution time: 1_680_000 picoseconds. + Weight::from_parts(1_785_000, 0) } fn get_transient_storage_empty() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_352_000 picoseconds. - Weight::from_parts(1_425_000, 0) + // Minimum execution time: 1_380_000 picoseconds. + Weight::from_parts(1_502_000, 0) } fn get_transient_storage_full() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_499_000 picoseconds. - Weight::from_parts(1_569_000, 0) + // Minimum execution time: 1_506_000 picoseconds. + Weight::from_parts(1_604_000, 0) } fn rollback_transient_storage() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_038_000 picoseconds. - Weight::from_parts(1_091_000, 0) + // Minimum execution time: 972_000 picoseconds. + Weight::from_parts(1_054_000, 0) } - /// The range of component `n` is `[0, 448]`. - /// The range of component `o` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. + /// The range of component `o` is `[0, 416]`. fn seal_set_transient_storage(n: u32, o: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_108_000 picoseconds. - Weight::from_parts(2_300_363, 0) - // Standard Error: 13 - .saturating_add(Weight::from_parts(242, 0).saturating_mul(n.into())) - // Standard Error: 13 - .saturating_add(Weight::from_parts(374, 0).saturating_mul(o.into())) + // Minimum execution time: 2_048_000 picoseconds. + Weight::from_parts(2_304_120, 0) + // Standard Error: 17 + .saturating_add(Weight::from_parts(254, 0).saturating_mul(n.into())) + // Standard Error: 17 + .saturating_add(Weight::from_parts(321, 0).saturating_mul(o.into())) } - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_clear_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_822_000 picoseconds. - Weight::from_parts(2_150_092, 0) - // Standard Error: 16 - .saturating_add(Weight::from_parts(394, 0).saturating_mul(n.into())) + // Minimum execution time: 1_790_000 picoseconds. + Weight::from_parts(2_141_874, 0) + // Standard Error: 31 + .saturating_add(Weight::from_parts(378, 0).saturating_mul(n.into())) } - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_get_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_675_000 picoseconds. - Weight::from_parts(1_873_341, 0) - // Standard Error: 12 - .saturating_add(Weight::from_parts(273, 0).saturating_mul(n.into())) + // Minimum execution time: 1_662_000 picoseconds. + Weight::from_parts(1_938_172, 0) + // Standard Error: 14 + .saturating_add(Weight::from_parts(316, 0).saturating_mul(n.into())) } - /// The range of component `n` is `[0, 448]`. + /// The range of component `n` is `[0, 416]`. fn seal_contains_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_555_000 picoseconds. - Weight::from_parts(1_690_236, 0) - // Standard Error: 10 - .saturating_add(Weight::from_parts(185, 0).saturating_mul(n.into())) + // Minimum execution time: 1_570_000 picoseconds. + Weight::from_parts(1_769_617, 0) + // Standard Error: 13 + .saturating_add(Weight::from_parts(152, 0).saturating_mul(n.into())) } - /// The range of component `n` is `[0, 448]`. - fn seal_take_transient_storage(_n: u32, ) -> Weight { + /// The range of component `n` is `[0, 416]`. + fn seal_take_transient_storage(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 2_278_000 picoseconds. - Weight::from_parts(2_522_598, 0) + // Minimum execution time: 2_266_000 picoseconds. + Weight::from_parts(2_497_430, 0) + // Standard Error: 21 + .saturating_add(Weight::from_parts(38, 0).saturating_mul(n.into())) } /// Storage: `Revive::AddressSuffix` (r:1 w:0) /// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:0) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:1 w:0) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:1 w:0) @@ -1789,12 +1750,12 @@ impl WeightInfo for () { /// The range of component `i` is `[0, 262144]`. fn seal_call(t: u32, i: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1164 + t * (206 ±0)` - // Estimated: `4629 + t * (2417 ±0)` - // Minimum execution time: 30_631_000 picoseconds. - Weight::from_parts(31_328_855, 4629) - // Standard Error: 36_031 - .saturating_add(Weight::from_parts(5_665_922, 0).saturating_mul(t.into())) + // Measured: `1163 + t * (206 ±0)` + // Estimated: `4628 + t * (2417 ±0)` + // Minimum execution time: 30_368_000 picoseconds. + Weight::from_parts(31_023_429, 4628) + // Standard Error: 43_250 + .saturating_add(Weight::from_parts(5_949_452, 0).saturating_mul(t.into())) // Standard Error: 0 .saturating_add(Weight::from_parts(2, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().reads(4_u64)) @@ -1803,17 +1764,17 @@ impl WeightInfo for () { .saturating_add(Weight::from_parts(0, 2417).saturating_mul(t.into())) } /// Storage: `Revive::ContractInfoOf` (r:1 w:0) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `Revive::CodeInfoOf` (r:1 w:0) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) /// Storage: `Revive::PristineCode` (r:1 w:0) /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) fn seal_delegate_call() -> Weight { // Proof Size summary in bytes: - // Measured: `1109` - // Estimated: `4574` - // Minimum execution time: 25_423_000 picoseconds. - Weight::from_parts(25_957_000, 4574) + // Measured: `1108` + // Estimated: `4573` + // Minimum execution time: 24_707_000 picoseconds. + Weight::from_parts(25_410_000, 4573) .saturating_add(RocksDbWeight::get().reads(3_u64)) } /// Storage: `Revive::CodeInfoOf` (r:1 w:1) @@ -1821,18 +1782,18 @@ impl WeightInfo for () { /// Storage: `Revive::PristineCode` (r:1 w:0) /// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`) /// Storage: `Revive::ContractInfoOf` (r:1 w:1) - /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(1779), added: 4254, mode: `Measured`) + /// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`) /// Storage: `System::Account` (r:1 w:1) /// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`) /// The range of component `i` is `[0, 262144]`. fn seal_instantiate(i: u32, ) -> Weight { // Proof Size summary in bytes: - // Measured: `1093` - // Estimated: `4571` - // Minimum execution time: 108_874_000 picoseconds. - Weight::from_parts(98_900_023, 4571) + // Measured: `1094` + // Estimated: `4579` + // Minimum execution time: 107_232_000 picoseconds. + Weight::from_parts(94_844_854, 4579) // Standard Error: 10 - .saturating_add(Weight::from_parts(4_183, 0).saturating_mul(i.into())) + .saturating_add(Weight::from_parts(4_159, 0).saturating_mul(i.into())) .saturating_add(RocksDbWeight::get().reads(4_u64)) .saturating_add(RocksDbWeight::get().writes(3_u64)) } @@ -1841,64 +1802,64 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 627_000 picoseconds. - Weight::from_parts(3_385_445, 0) - // Standard Error: 3 - .saturating_add(Weight::from_parts(1_419, 0).saturating_mul(n.into())) + // Minimum execution time: 617_000 picoseconds. + Weight::from_parts(3_460_054, 0) + // Standard Error: 2 + .saturating_add(Weight::from_parts(1_374, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_keccak_256(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 1_035_000 picoseconds. - Weight::from_parts(3_723_700, 0) - // Standard Error: 3 - .saturating_add(Weight::from_parts(3_637, 0).saturating_mul(n.into())) + // Minimum execution time: 1_040_000 picoseconds. + Weight::from_parts(3_026_644, 0) + // Standard Error: 2 + .saturating_add(Weight::from_parts(3_607, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_blake2_256(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 626_000 picoseconds. - Weight::from_parts(2_822_237, 0) + // Minimum execution time: 633_000 picoseconds. + Weight::from_parts(3_375_104, 0) // Standard Error: 2 - .saturating_add(Weight::from_parts(1_552, 0).saturating_mul(n.into())) + .saturating_add(Weight::from_parts(1_494, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 262144]`. fn seal_hash_blake2_128(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 554_000 picoseconds. - Weight::from_parts(3_287_817, 0) - // Standard Error: 3 - .saturating_add(Weight::from_parts(1_542, 0).saturating_mul(n.into())) + // Minimum execution time: 601_000 picoseconds. + Weight::from_parts(3_802_060, 0) + // Standard Error: 2 + .saturating_add(Weight::from_parts(1_493, 0).saturating_mul(n.into())) } /// The range of component `n` is `[0, 261889]`. fn seal_sr25519_verify(n: u32, ) -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 42_532_000 picoseconds. - Weight::from_parts(27_976_517, 0) - // Standard Error: 11 - .saturating_add(Weight::from_parts(5_453, 0).saturating_mul(n.into())) + // Minimum execution time: 42_419_000 picoseconds. + Weight::from_parts(26_760_986, 0) + // Standard Error: 12 + .saturating_add(Weight::from_parts(5_421, 0).saturating_mul(n.into())) } fn seal_ecdsa_recover() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 45_970_000 picoseconds. - Weight::from_parts(47_747_000, 0) + // Minimum execution time: 48_672_000 picoseconds. + Weight::from_parts(49_840_000, 0) } fn seal_ecdsa_to_eth_address() -> Weight { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 12_550_000 picoseconds. - Weight::from_parts(12_706_000, 0) + // Minimum execution time: 12_307_000 picoseconds. + Weight::from_parts(12_500_000, 0) } /// Storage: `Revive::CodeInfoOf` (r:1 w:1) /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) @@ -1906,30 +1867,8 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `196` // Estimated: `3661` - // Minimum execution time: 10_229_000 picoseconds. - Weight::from_parts(10_530_000, 3661) - .saturating_add(RocksDbWeight::get().reads(1_u64)) - .saturating_add(RocksDbWeight::get().writes(1_u64)) - } - /// Storage: `Revive::CodeInfoOf` (r:1 w:1) - /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`) - fn lock_delegate_dependency() -> Weight { - // Proof Size summary in bytes: - // Measured: `234` - // Estimated: `3699` - // Minimum execution time: 9_743_000 picoseconds. - Weight::from_parts(10_180_000, 3699) - .saturating_add(RocksDbWeight::get().reads(1_u64)) - .saturating_add(RocksDbWeight::get().writes(1_u64)) - } - /// Storage: `Revive::CodeInfoOf` (r:1 w:1) - /// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `MaxEncodedLen`) - fn unlock_delegate_dependency() -> Weight { - // Proof Size summary in bytes: - // Measured: `234` - // Estimated: `3561` - // Minimum execution time: 8_717_000 picoseconds. - Weight::from_parts(9_129_000, 3561) + // Minimum execution time: 10_142_000 picoseconds. + Weight::from_parts(10_458_000, 3661) .saturating_add(RocksDbWeight::get().reads(1_u64)) .saturating_add(RocksDbWeight::get().writes(1_u64)) } @@ -1938,9 +1877,9 @@ impl WeightInfo for () { // Proof Size summary in bytes: // Measured: `0` // Estimated: `0` - // Minimum execution time: 8_332_000 picoseconds. - Weight::from_parts(9_985_610, 0) - // Standard Error: 187 - .saturating_add(Weight::from_parts(73_915, 0).saturating_mul(r.into())) + // Minimum execution time: 7_893_000 picoseconds. + Weight::from_parts(9_362_667, 0) + // Standard Error: 84 + .saturating_add(Weight::from_parts(74_272, 0).saturating_mul(r.into())) } } diff --git a/substrate/frame/revive/uapi/src/host.rs b/substrate/frame/revive/uapi/src/host.rs index 08806f11c9c5096b1d7570210295d6a527f8dba1..8e14eefc636455c6280208b1ec94586bd5ab7cbb 100644 --- a/substrate/frame/revive/uapi/src/host.rs +++ b/substrate/frame/revive/uapi/src/host.rs @@ -621,18 +621,6 @@ pub trait HostFn: private::Sealed { #[unstable_hostfn] fn is_contract(address: &[u8; 20]) -> bool; - /// Lock a new delegate dependency to the contract. - /// - /// Traps if the maximum number of delegate_dependencies is reached or if - /// the delegate dependency already exists. - /// - /// # Parameters - /// - /// - `code_hash`: The code hash of the dependency. Should be decodable as an `T::Hash`. Traps - /// otherwise. - #[unstable_hostfn] - fn lock_delegate_dependency(code_hash: &[u8; 32]); - /// Stores the minimum balance (a.k.a. existential deposit) into the supplied buffer. /// /// # Parameters @@ -723,17 +711,6 @@ pub trait HostFn: private::Sealed { #[unstable_hostfn] fn terminate(beneficiary: &[u8; 20]) -> !; - /// Removes the delegate dependency from the contract. - /// - /// Traps if the delegate dependency does not exist. - /// - /// # Parameters - /// - /// - `code_hash`: The code hash of the dependency. Should be decodable as an `T::Hash`. Traps - /// otherwise. - #[unstable_hostfn] - fn unlock_delegate_dependency(code_hash: &[u8; 32]); - /// Stores the amount of weight left into the supplied buffer. /// The data is encoded as Weight. /// diff --git a/substrate/frame/revive/uapi/src/host/riscv64.rs b/substrate/frame/revive/uapi/src/host/riscv64.rs index 620c2a9e1f5c90a4c954f3ff7e5515d299a152bc..588579dc83ebfb7287f516e324a0e792f9c4d181 100644 --- a/substrate/frame/revive/uapi/src/host/riscv64.rs +++ b/substrate/frame/revive/uapi/src/host/riscv64.rs @@ -147,8 +147,6 @@ mod sys { pub fn set_code_hash(code_hash_ptr: *const u8); pub fn ecdsa_to_eth_address(key_ptr: *const u8, out_ptr: *mut u8) -> ReturnCode; pub fn instantiation_nonce() -> u64; - pub fn lock_delegate_dependency(code_hash_ptr: *const u8); - pub fn unlock_delegate_dependency(code_hash_ptr: *const u8); pub fn xcm_execute(msg_ptr: *const u8, msg_len: u32) -> ReturnCode; pub fn xcm_send( dest_ptr: *const u8, @@ -551,11 +549,6 @@ impl HostFn for HostFnImpl { ret_val.into_bool() } - #[unstable_hostfn] - fn lock_delegate_dependency(code_hash: &[u8; 32]) { - unsafe { sys::lock_delegate_dependency(code_hash.as_ptr()) } - } - #[unstable_hostfn] fn minimum_balance(output: &mut [u8; 32]) { unsafe { sys::minimum_balance(output.as_mut_ptr()) } @@ -608,11 +601,6 @@ impl HostFn for HostFnImpl { panic!("terminate does not return"); } - #[unstable_hostfn] - fn unlock_delegate_dependency(code_hash: &[u8; 32]) { - unsafe { sys::unlock_delegate_dependency(code_hash.as_ptr()) } - } - #[unstable_hostfn] fn weight_left(output: &mut &mut [u8]) { let mut output_len = output.len() as u32; diff --git a/substrate/frame/society/src/benchmarking.rs b/substrate/frame/society/src/benchmarking.rs index dc8e3cab775f57c011afb94b5ba80e622349ad3e..cf23e608fc7fbde438431d8b6f859eefc5bdd485 100644 --- a/substrate/frame/society/src/benchmarking.rs +++ b/substrate/frame/society/src/benchmarking.rs @@ -29,6 +29,10 @@ use sp_runtime::traits::Bounded; use crate::Pallet as Society; +fn set_block_number<T: Config<I>, I: 'static>(n: BlockNumberFor<T, I>) { + <T as Config<I>>::BlockNumberProvider::set_block_number(n); +} + fn mock_balance_deposit<T: Config<I>, I: 'static>() -> BalanceOf<T, I> { T::Currency::minimum_balance().saturating_mul(1_000u32.into()) } @@ -352,9 +356,7 @@ mod benchmarks { let _ = Society::<T, I>::insert_member(&skeptic, 0u32.into()); Skeptic::<T, I>::put(&skeptic); if let Period::Voting { more, .. } = Society::<T, I>::period() { - frame_system::Pallet::<T>::set_block_number( - frame_system::Pallet::<T>::block_number() + more, - ); + set_block_number::<T, I>(T::BlockNumberProvider::current_block_number() + more) } #[extrinsic_call] diff --git a/substrate/frame/society/src/lib.rs b/substrate/frame/society/src/lib.rs index b893bb6fba7d33a1cbfd24efbdb114c7f6633d0c..39aa6bf3566b2950248254fea242154a1ccebfb7 100644 --- a/substrate/frame/society/src/lib.rs +++ b/substrate/frame/society/src/lib.rs @@ -271,7 +271,9 @@ use frame_support::{ }, PalletId, }; -use frame_system::pallet_prelude::*; +use frame_system::pallet_prelude::{ + ensure_signed, BlockNumberFor as SystemBlockNumberFor, OriginFor, +}; use rand_chacha::{ rand_core::{RngCore, SeedableRng}, ChaChaRng, @@ -289,6 +291,10 @@ use sp_runtime::{ pub use weights::WeightInfo; pub use pallet::*; +use sp_runtime::traits::BlockNumberProvider; + +pub type BlockNumberFor<T, I> = + <<T as Config<I>>::BlockNumberProvider as BlockNumberProvider>::BlockNumber; type BalanceOf<T, I> = <<T as Config<I>>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance; @@ -423,7 +429,7 @@ impl<AccountId: PartialEq, Balance> BidKind<AccountId, Balance> { } pub type PayoutsFor<T, I> = - BoundedVec<(BlockNumberFor<T>, BalanceOf<T, I>), <T as Config<I>>::MaxPayouts>; + BoundedVec<(BlockNumberFor<T, I>, BalanceOf<T, I>), <T as Config<I>>::MaxPayouts>; /// Information concerning a member. #[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo, MaxEncodedLen)] @@ -443,7 +449,7 @@ pub struct PayoutRecord<Balance, PayoutsVec> { pub type PayoutRecordFor<T, I> = PayoutRecord< BalanceOf<T, I>, - BoundedVec<(BlockNumberFor<T>, BalanceOf<T, I>), <T as Config<I>>::MaxPayouts>, + BoundedVec<(BlockNumberFor<T, I>, BalanceOf<T, I>), <T as Config<I>>::MaxPayouts>, >; /// Record for an individual new member who was elevated from a candidate recently. @@ -491,7 +497,7 @@ pub mod pallet { type Currency: ReservableCurrency<Self::AccountId>; /// Something that provides randomness in the runtime. - type Randomness: Randomness<Self::Hash, BlockNumberFor<Self>>; + type Randomness: Randomness<Self::Hash, BlockNumberFor<Self, I>>; /// The maximum number of strikes before a member gets funds slashed. #[pallet::constant] @@ -504,23 +510,23 @@ pub mod pallet { /// The number of blocks on which new candidates should be voted on. Together with /// `ClaimPeriod`, this sums to the number of blocks between candidate intake periods. #[pallet::constant] - type VotingPeriod: Get<BlockNumberFor<Self>>; + type VotingPeriod: Get<BlockNumberFor<Self, I>>; /// The number of blocks on which new candidates can claim their membership and be the /// named head. #[pallet::constant] - type ClaimPeriod: Get<BlockNumberFor<Self>>; + type ClaimPeriod: Get<BlockNumberFor<Self, I>>; /// The maximum duration of the payout lock. #[pallet::constant] - type MaxLockDuration: Get<BlockNumberFor<Self>>; + type MaxLockDuration: Get<BlockNumberFor<Self, I>>; /// The origin that is allowed to call `found`. type FounderSetOrigin: EnsureOrigin<Self::RuntimeOrigin>; /// The number of blocks between membership challenges. #[pallet::constant] - type ChallengePeriod: Get<BlockNumberFor<Self>>; + type ChallengePeriod: Get<SystemBlockNumberFor<Self>>; /// The maximum number of payouts a member may have waiting unclaimed. #[pallet::constant] @@ -532,6 +538,8 @@ pub mod pallet { /// Weight information for extrinsics in this pallet. type WeightInfo: WeightInfo; + /// Provider for the block number. Normally this is the `frame_system` pallet. + type BlockNumberProvider: BlockNumberProvider; } #[pallet::error] @@ -757,8 +765,8 @@ pub mod pallet { StorageDoubleMap<_, Twox64Concat, RoundIndex, Twox64Concat, T::AccountId, Vote>; #[pallet::hooks] - impl<T: Config<I>, I: 'static> Hooks<BlockNumberFor<T>> for Pallet<T, I> { - fn on_initialize(n: BlockNumberFor<T>) -> Weight { + impl<T: Config<I>, I: 'static> Hooks<SystemBlockNumberFor<T>> for Pallet<T, I> { + fn on_initialize(n: SystemBlockNumberFor<T>) -> Weight { let mut weight = Weight::zero(); let weights = T::BlockWeights::get(); @@ -1018,9 +1026,9 @@ pub mod pallet { Error::<T, I>::NoPayout ); let mut record = Payouts::<T, I>::get(&who); - + let block_number = T::BlockNumberProvider::current_block_number(); if let Some((when, amount)) = record.payouts.first() { - if when <= &<frame_system::Pallet<T>>::block_number() { + if when <= &block_number { record.paid = record.paid.checked_add(amount).ok_or(Overflow)?; T::Currency::transfer(&Self::payouts(), &who, *amount, AllowDeath)?; record.payouts.remove(0); @@ -1397,11 +1405,11 @@ pub enum Period<BlockNumber> { impl<T: Config<I>, I: 'static> Pallet<T, I> { /// Get the period we are currently in. - fn period() -> Period<BlockNumberFor<T>> { + fn period() -> Period<BlockNumberFor<T, I>> { let claim_period = T::ClaimPeriod::get(); let voting_period = T::VotingPeriod::get(); let rotation_period = voting_period + claim_period; - let now = frame_system::Pallet::<T>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let phase = now % rotation_period; if phase < voting_period { Period::Voting { elapsed: phase, more: voting_period - phase } @@ -1728,7 +1736,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { }); NextHead::<T, I>::put(next_head); - let now = <frame_system::Pallet<T>>::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let maturity = now + Self::lock_duration(MemberCount::<T, I>::get()); Self::reward_bidder(&candidate, candidacy.bid, candidacy.kind, maturity); @@ -1890,7 +1898,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { candidate: &T::AccountId, value: BalanceOf<T, I>, kind: BidKind<T::AccountId, BalanceOf<T, I>>, - maturity: BlockNumberFor<T>, + maturity: BlockNumberFor<T, I>, ) { let value = match kind { BidKind::Deposit(deposit) => { @@ -1927,7 +1935,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { /// /// It is the caller's duty to ensure that `who` is already a member. This does nothing if `who` /// is not a member or if `value` is zero. - fn bump_payout(who: &T::AccountId, when: BlockNumberFor<T>, value: BalanceOf<T, I>) { + fn bump_payout(who: &T::AccountId, when: BlockNumberFor<T, I>, value: BalanceOf<T, I>) { if value.is_zero() { return } @@ -2010,7 +2018,7 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> { /// /// This is a rather opaque calculation based on the formula here: /// https://www.desmos.com/calculator/9itkal1tce - fn lock_duration(x: u32) -> BlockNumberFor<T> { + fn lock_duration(x: u32) -> BlockNumberFor<T, I> { let lock_pc = 100 - 50_000 / (x + 500); Percent::from_percent(lock_pc as u8) * T::MaxLockDuration::get() } diff --git a/substrate/frame/society/src/migrations.rs b/substrate/frame/society/src/migrations.rs index 396ed787c784c5a73aaccbd90b3df3dcc6cb3b25..45bd977535d5f2b4a1f6e3a6f18d938056ad849d 100644 --- a/substrate/frame/society/src/migrations.rs +++ b/substrate/frame/society/src/migrations.rs @@ -170,7 +170,7 @@ pub(crate) mod v0 { Pallet<T, I>, Twox64Concat, <T as frame_system::Config>::AccountId, - Vec<(frame_system::pallet_prelude::BlockNumberFor<T>, BalanceOf<T, I>)>, + Vec<(BlockNumberFor<T, I>, BalanceOf<T, I>)>, ValueQuery, >; #[storage_alias] diff --git a/substrate/frame/society/src/mock.rs b/substrate/frame/society/src/mock.rs index 63fc5059279b15625447a3d38b643c897e63df5d..d19bac27a7d4f0b20b468d5f9c893bea3de5312c 100644 --- a/substrate/frame/society/src/mock.rs +++ b/substrate/frame/society/src/mock.rs @@ -83,6 +83,7 @@ impl Config for Test { type MaxPayouts = MaxPayouts; type MaxBids = MaxBids; type WeightInfo = (); + type BlockNumberProvider = System; } pub struct EnvBuilder { diff --git a/substrate/frame/support/procedural/src/construct_runtime/expand/metadata.rs b/substrate/frame/support/procedural/src/construct_runtime/expand/metadata.rs index d246c00628640d8dfd27a133a2c06637b3953eb8..be5678f4e5d291774b69619175e5af2feca75842 100644 --- a/substrate/frame/support/procedural/src/construct_runtime/expand/metadata.rs +++ b/substrate/frame/support/procedural/src/construct_runtime/expand/metadata.rs @@ -45,6 +45,7 @@ pub fn expand_runtime_metadata( let index = &decl.index; let storage = expand_pallet_metadata_storage(&filtered_names, runtime, decl); let calls = expand_pallet_metadata_calls(&filtered_names, runtime, decl); + let view_functions = expand_pallet_metadata_view_functions(runtime, decl); let event = expand_pallet_metadata_events(&filtered_names, runtime, decl); let constants = expand_pallet_metadata_constants(runtime, decl); let errors = expand_pallet_metadata_errors(runtime, decl); @@ -59,6 +60,7 @@ pub fn expand_runtime_metadata( index: #index, storage: #storage, calls: #calls, + view_functions: #view_functions, event: #event, constants: #constants, error: #errors, @@ -70,20 +72,6 @@ pub fn expand_runtime_metadata( }) .collect::<Vec<_>>(); - let view_functions = pallet_declarations.iter().map(|decl| { - let name = &decl.name; - let path = &decl.path; - let instance = decl.instance.as_ref().into_iter(); - let attr = decl.get_attributes(); - - quote! { - #attr - #path::Pallet::<#runtime #(, #path::#instance)*>::pallet_view_functions_metadata( - ::core::stringify!(#name) - ) - } - }); - quote! { impl #runtime { fn metadata_ir() -> #scrate::__private::metadata_ir::MetadataIR { @@ -156,10 +144,6 @@ pub fn expand_runtime_metadata( event_enum_ty: #scrate::__private::scale_info::meta_type::<RuntimeEvent>(), error_enum_ty: #scrate::__private::scale_info::meta_type::<RuntimeError>(), }, - view_functions: #scrate::__private::metadata_ir::RuntimeViewFunctionsIR { - ty: #scrate::__private::scale_info::meta_type::<RuntimeViewFunction>(), - groups: #scrate::__private::sp_std::vec![ #(#view_functions),* ], - } } } @@ -216,6 +200,15 @@ fn expand_pallet_metadata_calls( } } +fn expand_pallet_metadata_view_functions(runtime: &Ident, decl: &Pallet) -> TokenStream { + let path = &decl.path; + let instance = decl.instance.as_ref().into_iter(); + + quote! { + #path::Pallet::<#runtime #(, #path::#instance)*>::pallet_view_functions_metadata() + } +} + fn expand_pallet_metadata_events( filtered_names: &[&'static str], runtime: &Ident, diff --git a/substrate/frame/support/procedural/src/construct_runtime/expand/view_function.rs b/substrate/frame/support/procedural/src/construct_runtime/expand/view_function.rs index 094dcca4a5b5249cfe3026790d9938a84f5649fe..df6b4c42a9b053018cfa90c4de5ec9a6eed5d25f 100644 --- a/substrate/frame/support/procedural/src/construct_runtime/expand/view_function.rs +++ b/substrate/frame/support/procedural/src/construct_runtime/expand/view_function.rs @@ -62,7 +62,7 @@ pub fn expand_outer_query( } impl #runtime_name { - /// Convenience function for query execution from the runtime API. + /// Convenience function for view functions dispatching and execution from the runtime API. pub fn execute_view_function( id: #scrate::view_functions::ViewFunctionId, input: #scrate::__private::Vec<::core::primitive::u8>, diff --git a/substrate/frame/support/procedural/src/lib.rs b/substrate/frame/support/procedural/src/lib.rs index 26703a2438ef9ad368c3718bc497c9563bb407fe..3a106aa05d51c23303100b59ebd34906cb9e5bb7 100644 --- a/substrate/frame/support/procedural/src/lib.rs +++ b/substrate/frame/support/procedural/src/lib.rs @@ -1091,6 +1091,16 @@ pub fn validate_unsigned(_: TokenStream, _: TokenStream) -> TokenStream { pallet_macro_stub() } +/// +/// --- +/// +/// Documentation for this macro can be found at +/// `frame_support::pallet_macros::view_functions_experimental`. +#[proc_macro_attribute] +pub fn view_functions_experimental(_: TokenStream, _: TokenStream) -> TokenStream { + pallet_macro_stub() +} + /// /// --- /// diff --git a/substrate/frame/support/procedural/src/pallet/expand/view_functions.rs b/substrate/frame/support/procedural/src/pallet/expand/view_functions.rs index 587e74a2ac182f2dc817db9bb6058e2c93611bc2..5838db9d89ddcf5dbae38fa9fcd2d42ad54df99f 100644 --- a/substrate/frame/support/procedural/src/pallet/expand/view_functions.rs +++ b/substrate/frame/support/procedural/src/pallet/expand/view_functions.rs @@ -20,14 +20,10 @@ use proc_macro2::{Span, TokenStream}; use syn::spanned::Spanned; pub fn expand_view_functions(def: &Def) -> TokenStream { - let (span, where_clause, view_fns, docs) = match def.view_functions.as_ref() { - Some(view_fns) => ( - view_fns.attr_span, - view_fns.where_clause.clone(), - view_fns.view_functions.clone(), - view_fns.docs.clone(), - ), - None => (def.item.span(), def.config.where_clause.clone(), Vec::new(), Vec::new()), + let (span, where_clause, view_fns) = match def.view_functions.as_ref() { + Some(view_fns) => + (view_fns.attr_span, view_fns.where_clause.clone(), view_fns.view_functions.clone()), + None => (def.item.span(), def.config.where_clause.clone(), Vec::new()), }; let view_function_prefix_impl = @@ -39,7 +35,7 @@ pub fn expand_view_functions(def: &Def) -> TokenStream { let impl_dispatch_view_function = impl_dispatch_view_function(def, span, where_clause.as_ref(), &view_fns); let impl_view_function_metadata = - impl_view_function_metadata(def, span, where_clause.as_ref(), &view_fns, &docs); + impl_view_function_metadata(def, span, where_clause.as_ref(), &view_fns); quote::quote! { #view_function_prefix_impl @@ -201,7 +197,6 @@ fn impl_view_function_metadata( span: Span, where_clause: Option<&syn::WhereClause>, view_fns: &[ViewFunctionDef], - docs: &[syn::Expr], ) -> TokenStream { let frame_support = &def.frame_support; let pallet_ident = &def.pallet_struct.pallet; @@ -211,14 +206,14 @@ fn impl_view_function_metadata( let view_functions = view_fns.iter().map(|view_fn| { let view_function_struct_ident = view_fn.view_function_struct_ident(); let name = &view_fn.name; - let args = view_fn.args.iter().filter_map(|fn_arg| { + let inputs = view_fn.args.iter().filter_map(|fn_arg| { match fn_arg { syn::FnArg::Receiver(_) => None, syn::FnArg::Typed(typed) => { let pat = &typed.pat; let ty = &typed.ty; Some(quote::quote! { - #frame_support::__private::metadata_ir::ViewFunctionArgMetadataIR { + #frame_support::__private::metadata_ir::PalletViewFunctionMethodParamMetadataIR { name: ::core::stringify!(#pat), ty: #frame_support::__private::scale_info::meta_type::<#ty>(), } @@ -230,33 +225,34 @@ fn impl_view_function_metadata( let no_docs = vec![]; let doc = if cfg!(feature = "no-metadata-docs") { &no_docs } else { &view_fn.docs }; + let deprecation = match crate::deprecation::get_deprecation( + "e::quote! { #frame_support }, + &def.item.attrs, + ) { + Ok(deprecation) => deprecation, + Err(e) => return e.into_compile_error(), + }; + quote::quote! { - #frame_support::__private::metadata_ir::ViewFunctionMetadataIR { + #frame_support::__private::metadata_ir::PalletViewFunctionMethodMetadataIR { name: ::core::stringify!(#name), id: <#view_function_struct_ident<#type_use_gen> as #frame_support::view_functions::ViewFunction>::id().into(), - args: #frame_support::__private::sp_std::vec![ #( #args ),* ], + inputs: #frame_support::__private::sp_std::vec![ #( #inputs ),* ], output: #frame_support::__private::scale_info::meta_type::< <#view_function_struct_ident<#type_use_gen> as #frame_support::view_functions::ViewFunction>::ReturnType >(), docs: #frame_support::__private::sp_std::vec![ #( #doc ),* ], + deprecation_info: #deprecation, } } }); - let no_docs = vec![]; - let doc = if cfg!(feature = "no-metadata-docs") { &no_docs } else { docs }; - quote::quote! { impl<#type_impl_gen> #pallet_ident<#type_use_gen> #where_clause { #[doc(hidden)] - pub fn pallet_view_functions_metadata(name: &'static ::core::primitive::str) - -> #frame_support::__private::metadata_ir::ViewFunctionGroupIR - { - #frame_support::__private::metadata_ir::ViewFunctionGroupIR { - name, - view_functions: #frame_support::__private::sp_std::vec![ #( #view_functions ),* ], - docs: #frame_support::__private::sp_std::vec![ #( #doc ),* ], - } + pub fn pallet_view_functions_metadata() + -> #frame_support::__private::Vec<#frame_support::__private::metadata_ir::PalletViewFunctionMethodMetadataIR> { + #frame_support::__private::vec![ #( #view_functions ),* ] } } } diff --git a/substrate/frame/support/procedural/src/pallet/parse/view_functions.rs b/substrate/frame/support/procedural/src/pallet/parse/view_functions.rs index 766bcb13da8b3cbddc164a8fdd2a2ecab066f6d4..469ee0fe5b795953177a668955cf69b04b10e22f 100644 --- a/substrate/frame/support/procedural/src/pallet/parse/view_functions.rs +++ b/substrate/frame/support/procedural/src/pallet/parse/view_functions.rs @@ -25,8 +25,6 @@ pub struct ViewFunctionsImplDef { pub where_clause: Option<syn::WhereClause>, /// The span of the pallet::view_functions_experimental attribute. pub attr_span: proc_macro2::Span, - /// Docs, specified on the impl Block. - pub docs: Vec<syn::Expr>, /// The view function definitions. pub view_functions: Vec<ViewFunctionDef>, } @@ -67,7 +65,6 @@ impl ViewFunctionsImplDef { view_functions, attr_span, where_clause: item_impl.generics.where_clause.clone(), - docs: get_doc_literals(&item_impl.attrs), }) } } diff --git a/substrate/frame/support/src/lib.rs b/substrate/frame/support/src/lib.rs index 97d16e2a06d23349fe4ea653be73428dde976a68..cd3312ebfd860b03d99e1f1b6fac87bb81af4052 100644 --- a/substrate/frame/support/src/lib.rs +++ b/substrate/frame/support/src/lib.rs @@ -1709,6 +1709,61 @@ pub mod pallet_macros { /// in the future to give information directly to [`frame_support::construct_runtime`]. pub use frame_support_procedural::validate_unsigned; + /// Allows defining view functions on a pallet. + /// + /// A pallet view function is a read-only function providing access to the state of the + /// pallet from both outside and inside the runtime. It should provide a _stable_ interface + /// for querying the state of the pallet, avoiding direct storage access and upgrading + /// along with the runtime. + /// + /// ## Syntax + /// View functions methods must be read-only and always return some output. A + /// `view_functions_experimental` impl block only allows methods to be defined inside of + /// it. + /// + /// ## Example + /// ``` + /// #[frame_support::pallet] + /// pub mod pallet { + /// use frame_support::pallet_prelude::*; + /// + /// #[pallet::config] + /// pub trait Config: frame_system::Config {} + /// + /// #[pallet::pallet] + /// pub struct Pallet<T>(_); + /// + /// #[pallet::storage] + /// pub type SomeMap<T: Config> = StorageMap<_, Twox64Concat, u32, u32, OptionQuery>; + /// + /// #[pallet::view_functions_experimental] + /// impl<T: Config> Pallet<T> { + /// /// Retrieve a map storage value by key. + /// pub fn get_value_with_arg(key: u32) -> Option<u32> { + /// SomeMap::<T>::get(key) + /// } + /// } + /// } + /// ``` + /// + /// + /// ## Usage and implementation details + /// To allow outside access to pallet view functions, you need to add a runtime API that + /// accepts view function queries and dispatches them to the right pallet. You can do that + /// by implementing the + /// [`RuntimeViewFunction`](frame_support::view_functions::runtime_api::RuntimeViewFunction) + /// trait for the runtime inside an [`impl_runtime_apis!`](sp_api::impl_runtime_apis) + /// block. + /// + /// The `RuntimeViewFunction` trait implements a hashing-based dispatching mechanism to + /// dispatch view functions to the right method in the right pallet based on their IDs. A + /// view function ID depends both on its pallet and on its method signature, so it remains + /// stable as long as those two elements are not modified. In general, pallet view + /// functions should expose a _stable_ interface and changes to the method signature are + /// strongly discouraged. For more details on the dispatching mechanism, see the + /// [`DispatchViewFunction`](frame_support::view_functions::DispatchViewFunction) trait. + pub use frame_support_procedural::view_functions_experimental; + /// Allows defining a struct implementing the [`Get`](frame_support::traits::Get) trait to /// ease the use of storage types. /// diff --git a/substrate/frame/support/src/traits/hooks.rs b/substrate/frame/support/src/traits/hooks.rs index 012a74d0ae92f1dcc9c3797f62d2ffc9d137485c..51209cb542467822c51465b6fe4c779aedaf4246 100644 --- a/substrate/frame/support/src/traits/hooks.rs +++ b/substrate/frame/support/src/traits/hooks.rs @@ -584,6 +584,10 @@ pub trait BuildGenesisConfig: sp_runtime::traits::MaybeSerializeDeserialize { fn build(&self); } +impl BuildGenesisConfig for () { + fn build(&self) {} +} + /// A trait to define the build function of a genesis config, T and I are placeholder for pallet /// trait and pallet instance. #[deprecated( diff --git a/substrate/frame/support/src/view_functions.rs b/substrate/frame/support/src/view_functions.rs index dd23fad94a4fd578bdc3d63f86bcb1a1750fe064..cba451b554eb67513a0ae56da1f63af581abadf6 100644 --- a/substrate/frame/support/src/view_functions.rs +++ b/substrate/frame/support/src/view_functions.rs @@ -63,6 +63,12 @@ impl From<codec::Error> for ViewFunctionDispatchError { /// Implemented by both pallets and the runtime. The runtime is dispatching by prefix using the /// pallet implementation of `ViewFunctionIdPrefix` then the pallet is dispatching by suffix using /// the methods implementation of `ViewFunctionIdSuffix`. +/// +/// In more details, `ViewFunctionId` = `ViewFunctionIdPrefix` ++ `ViewFunctionIdSuffix`, where +/// `ViewFunctionIdPrefix=twox_128(pallet_name)` and +/// `ViewFunctionIdSuffix=twox_128("fn_name(fnarg_types) -> return_ty")`. The prefix is the same as +/// the storage prefix for pallets. The suffix is generated from the view function method type +/// signature, so is guaranteed to be unique for that pallet implementation. pub trait DispatchViewFunction { fn dispatch_view_function<O: Output>( id: &ViewFunctionId, diff --git a/substrate/frame/support/test/compile_pass/src/lib.rs b/substrate/frame/support/test/compile_pass/src/lib.rs index 31f3126b8dd5938ddc490e374b0039da3fc22ec2..5bb79a95ca7767ab66df3838c909b19294666a2e 100644 --- a/substrate/frame/support/test/compile_pass/src/lib.rs +++ b/substrate/frame/support/test/compile_pass/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test that `construct_runtime!` also works when `frame-support` or `frame-system` are renamed in //! the `Cargo.toml`. diff --git a/substrate/frame/support/test/tests/construct_runtime_ui/deprecated_where_block.stderr b/substrate/frame/support/test/tests/construct_runtime_ui/deprecated_where_block.stderr index faa9cb558c262f09111a488a4e2f4bf114a74375..444096bd9a5b895649c1228144525074e063977e 100644 --- a/substrate/frame/support/test/tests/construct_runtime_ui/deprecated_where_block.stderr +++ b/substrate/frame/support/test/tests/construct_runtime_ui/deprecated_where_block.stderr @@ -620,7 +620,7 @@ note: the trait `Config` must be implemented | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0599]: the variant or associated item `event_metadata` exists for enum `Event<Runtime>`, but its trait bounds were not satisfied +error[E0599]: the function or associated item `pallet_view_functions_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1 | 20 | construct_runtime! { @@ -634,7 +634,7 @@ error[E0599]: the variant or associated item `event_metadata` exists for enum `E ... | 27 | | } 28 | | } - | |__^ variant or associated item cannot be called on `Event<Runtime>` due to unsatisfied trait bounds + | |__^ function or associated item cannot be called on `Pallet<Runtime>` due to unsatisfied trait bounds | = note: the following trait bounds were not satisfied: `Runtime: Config` @@ -645,7 +645,7 @@ note: the trait `Config` must be implemented | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0599]: the function or associated item `pallet_constants_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied +error[E0599]: the variant or associated item `event_metadata` exists for enum `Event<Runtime>`, but its trait bounds were not satisfied --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1 | 20 | construct_runtime! { @@ -659,7 +659,7 @@ error[E0599]: the function or associated item `pallet_constants_metadata` exists ... | 27 | | } 28 | | } - | |__^ function or associated item cannot be called on `Pallet<Runtime>` due to unsatisfied trait bounds + | |__^ variant or associated item cannot be called on `Event<Runtime>` due to unsatisfied trait bounds | = note: the following trait bounds were not satisfied: `Runtime: Config` @@ -670,7 +670,7 @@ note: the trait `Config` must be implemented | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0599]: the function or associated item `error_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied +error[E0599]: the function or associated item `pallet_constants_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1 | 20 | construct_runtime! { @@ -695,7 +695,7 @@ note: the trait `Config` must be implemented | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0599]: the function or associated item `pallet_documentation_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied +error[E0599]: the function or associated item `error_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1 | 20 | construct_runtime! { @@ -720,7 +720,7 @@ note: the trait `Config` must be implemented | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0599]: the function or associated item `pallet_associated_types_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied +error[E0599]: the function or associated item `pallet_documentation_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1 | 20 | construct_runtime! { @@ -745,7 +745,7 @@ note: the trait `Config` must be implemented | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info) -error[E0599]: the function or associated item `pallet_view_functions_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied +error[E0599]: the function or associated item `pallet_associated_types_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1 | 20 | construct_runtime! { diff --git a/substrate/frame/support/test/tests/pallet_ui/pass/view_function_valid.rs b/substrate/frame/support/test/tests/pallet_ui/pass/view_function_valid.rs new file mode 100644 index 0000000000000000000000000000000000000000..a4c3a6eb9baf563994c49046c0c3cbd79f429f51 --- /dev/null +++ b/substrate/frame/support/test/tests/pallet_ui/pass/view_function_valid.rs @@ -0,0 +1,39 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#[frame_support::pallet] +mod pallet { + use frame_support::pallet_prelude::*; + + #[pallet::config(with_default)] + pub trait Config: frame_system::Config {} + + #[pallet::pallet] + pub struct Pallet<T>(_); + + #[pallet::storage] + pub type MyStorage<T> = StorageValue<_, u32>; + + #[pallet::view_functions_experimental] + impl<T: Config> Pallet<T> { + pub fn get_value() -> Option<u32> { + MyStorage::<T>::get() + } + } +} + +fn main() {} diff --git a/substrate/frame/support/test/tests/pallet_ui/view_function_invalid_item.rs b/substrate/frame/support/test/tests/pallet_ui/view_function_invalid_item.rs new file mode 100644 index 0000000000000000000000000000000000000000..81a794d9b0d6bd9c9bf3efb13c8dc8f8a9743e2b --- /dev/null +++ b/substrate/frame/support/test/tests/pallet_ui/view_function_invalid_item.rs @@ -0,0 +1,34 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#[frame_support::pallet] +mod pallet { + use frame_support::pallet_prelude::*; + + #[pallet::config(with_default)] + pub trait Config: frame_system::Config {} + + #[pallet::pallet] + pub struct Pallet<T>(_); + + #[pallet::view_functions_experimental] + impl<T: Config> Pallet<T> { + pub const SECONDS_PER_MINUTE: u32 = 60; + } +} + +fn main() {} diff --git a/substrate/frame/support/test/tests/pallet_ui/view_function_invalid_item.stderr b/substrate/frame/support/test/tests/pallet_ui/view_function_invalid_item.stderr new file mode 100644 index 0000000000000000000000000000000000000000..6afdf707fce60c933bcb30c1c0c6c396f56c545f --- /dev/null +++ b/substrate/frame/support/test/tests/pallet_ui/view_function_invalid_item.stderr @@ -0,0 +1,5 @@ +error: Invalid pallet::view_functions_experimental, expected a function + --> tests/pallet_ui/view_function_invalid_item.rs:30:3 + | +30 | pub const SECONDS_PER_MINUTE: u32 = 60; + | ^^^ diff --git a/substrate/frame/support/test/tests/pallet_ui/view_function_no_return.rs b/substrate/frame/support/test/tests/pallet_ui/view_function_no_return.rs new file mode 100644 index 0000000000000000000000000000000000000000..3356e354ca72cad0c0a648b52016c1347ce86d14 --- /dev/null +++ b/substrate/frame/support/test/tests/pallet_ui/view_function_no_return.rs @@ -0,0 +1,39 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#[frame_support::pallet] +mod pallet { + use frame_support::pallet_prelude::*; + + #[pallet::config(with_default)] + pub trait Config: frame_system::Config {} + + #[pallet::pallet] + pub struct Pallet<T>(_); + + #[pallet::storage] + pub type MyStorage<T> = StorageValue<_, u32>; + + #[pallet::view_functions_experimental] + impl<T: Config> Pallet<T> { + pub fn get_value() { + MyStorage::<T>::set(0); + } + } +} + +fn main() {} diff --git a/substrate/frame/support/test/tests/pallet_ui/view_function_no_return.stderr b/substrate/frame/support/test/tests/pallet_ui/view_function_no_return.stderr new file mode 100644 index 0000000000000000000000000000000000000000..689253e1c6e7023bc82c7ae1db7afe65830f3700 --- /dev/null +++ b/substrate/frame/support/test/tests/pallet_ui/view_function_no_return.stderr @@ -0,0 +1,5 @@ +error: view functions must return a value + --> tests/pallet_ui/view_function_no_return.rs:33:7 + | +33 | pub fn get_value() { + | ^^ diff --git a/substrate/frame/support/test/tests/pallet_ui/view_function_not_public.rs b/substrate/frame/support/test/tests/pallet_ui/view_function_not_public.rs new file mode 100644 index 0000000000000000000000000000000000000000..e6611013335c628f5e736ad7c3ad9142d5ff7ac0 --- /dev/null +++ b/substrate/frame/support/test/tests/pallet_ui/view_function_not_public.rs @@ -0,0 +1,39 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#[frame_support::pallet] +mod pallet { + use frame_support::pallet_prelude::*; + + #[pallet::config(with_default)] + pub trait Config: frame_system::Config {} + + #[pallet::pallet] + pub struct Pallet<T>(_); + + #[pallet::storage] + pub type MyStorage<T> = StorageValue<_, u32>; + + #[pallet::view_functions_experimental] + impl<T: Config> Pallet<T> { + fn get_value() -> Option<u32> { + MyStorage::<T>::get() + } + } +} + +fn main() {} diff --git a/substrate/frame/support/test/tests/pallet_ui/view_function_not_public.stderr b/substrate/frame/support/test/tests/pallet_ui/view_function_not_public.stderr new file mode 100644 index 0000000000000000000000000000000000000000..7b0688af07974d8476f869bb6aa01747886cd1bb --- /dev/null +++ b/substrate/frame/support/test/tests/pallet_ui/view_function_not_public.stderr @@ -0,0 +1,5 @@ +error: Invalid pallet::view_functions_experimental, view function must be public: `pub fn` + --> tests/pallet_ui/view_function_not_public.rs:33:3 + | +33 | fn get_value() -> Option<u32> { + | ^^ diff --git a/substrate/primitives/consensus/aura/src/digests.rs b/substrate/primitives/consensus/aura/src/digests.rs index 13484da2a2955095e8558561e91724104cf141ac..a12988dfd1a4696d7398eef5a34829683250a89c 100644 --- a/substrate/primitives/consensus/aura/src/digests.rs +++ b/substrate/primitives/consensus/aura/src/digests.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Aura (Authority-Round) digests //! diff --git a/substrate/primitives/consensus/beefy/src/payload.rs b/substrate/primitives/consensus/beefy/src/payload.rs index 9e792670fef5a70b58fa0e5a8a64dd066e5ed86f..2bc96548bdfff345292e8b9e12f735581a965828 100644 --- a/substrate/primitives/consensus/beefy/src/payload.rs +++ b/substrate/primitives/consensus/beefy/src/payload.rs @@ -60,7 +60,7 @@ impl Payload { pub fn get_all_raw<'a>( &'a self, id: &'a BeefyPayloadId, - ) -> impl Iterator<Item = &Vec<u8>> + 'a { + ) -> impl Iterator<Item = &'a Vec<u8>> + 'a { self.0 .iter() .filter_map(move |probe| if &probe.0 != id { return None } else { Some(&probe.1) }) diff --git a/substrate/primitives/io/build.rs b/substrate/primitives/io/build.rs index 8a9c0b6420b29833d95f7bcf7dc6d91a65f3b53c..d82115522d4aaa0a6c1abbc73e4c33e51966dbdf 100644 --- a/substrate/primitives/io/build.rs +++ b/substrate/primitives/io/build.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #[rustversion::before(1.68)] fn main() { diff --git a/substrate/primitives/metadata-ir/src/lib.rs b/substrate/primitives/metadata-ir/src/lib.rs index e048010a34b75a7facb2cd0abe019eb305734096..dc01f7eaadb3337f1a4ff42322417d2e353ba299 100644 --- a/substrate/primitives/metadata-ir/src/lib.rs +++ b/substrate/primitives/metadata-ir/src/lib.rs @@ -122,7 +122,6 @@ mod test { event_enum_ty: meta_type::<()>(), error_enum_ty: meta_type::<()>(), }, - view_functions: RuntimeViewFunctionsIR { ty: meta_type::<()>(), groups: vec![] }, } } diff --git a/substrate/primitives/metadata-ir/src/types.rs b/substrate/primitives/metadata-ir/src/types.rs index 0617fc7dfb94f7d8c397d4ccbcd4219d400c488d..986925e6f516804d5f6028aaeec2fc3965a0f2b1 100644 --- a/substrate/primitives/metadata-ir/src/types.rs +++ b/substrate/primitives/metadata-ir/src/types.rs @@ -41,8 +41,6 @@ pub struct MetadataIR<T: Form = MetaForm> { pub apis: Vec<RuntimeApiMetadataIR<T>>, /// The outer enums types as found in the runtime. pub outer_enums: OuterEnumsIR<T>, - /// Metadata of view function queries - pub view_functions: RuntimeViewFunctionsIR<T>, } /// Metadata of a runtime trait. @@ -120,83 +118,52 @@ impl IntoPortable for RuntimeApiMethodParamMetadataIR { } } -/// Metadata of the top level runtime view function dispatch. +/// Metadata of a pallet view function method. #[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] -pub struct RuntimeViewFunctionsIR<T: Form = MetaForm> { - /// The type implementing the runtime query dispatch. - pub ty: T::Type, - /// The view function groupings metadata. - pub groups: Vec<ViewFunctionGroupIR<T>>, -} - -/// Metadata of a runtime view function group. -/// -/// For example, view functions associated with a pallet would form a view function group. -#[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] -pub struct ViewFunctionGroupIR<T: Form = MetaForm> { - /// Name of the view function group. - pub name: T::String, - /// View functions belonging to the group. - pub view_functions: Vec<ViewFunctionMetadataIR<T>>, - /// View function group documentation. - pub docs: Vec<T::String>, -} - -impl IntoPortable for ViewFunctionGroupIR { - type Output = ViewFunctionGroupIR<PortableForm>; - - fn into_portable(self, registry: &mut Registry) -> Self::Output { - ViewFunctionGroupIR { - name: self.name.into_portable(registry), - view_functions: registry.map_into_portable(self.view_functions), - docs: registry.map_into_portable(self.docs), - } - } -} - -/// Metadata of a runtime view function. -#[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] -pub struct ViewFunctionMetadataIR<T: Form = MetaForm> { - /// Query name. +pub struct PalletViewFunctionMethodMetadataIR<T: Form = MetaForm> { + /// Method name. pub name: T::String, - /// Query id. + /// Method id. pub id: [u8; 32], - /// Query args. - pub args: Vec<ViewFunctionArgMetadataIR<T>>, - /// Query output. + /// Method parameters. + pub inputs: Vec<PalletViewFunctionMethodParamMetadataIR<T>>, + /// Method output. pub output: T::Type, - /// Query documentation. + /// Method documentation. pub docs: Vec<T::String>, + /// Deprecation info + pub deprecation_info: DeprecationStatusIR<T>, } -impl IntoPortable for ViewFunctionMetadataIR { - type Output = ViewFunctionMetadataIR<PortableForm>; +impl IntoPortable for PalletViewFunctionMethodMetadataIR { + type Output = PalletViewFunctionMethodMetadataIR<PortableForm>; fn into_portable(self, registry: &mut Registry) -> Self::Output { - ViewFunctionMetadataIR { + PalletViewFunctionMethodMetadataIR { name: self.name.into_portable(registry), id: self.id, - args: registry.map_into_portable(self.args), + inputs: registry.map_into_portable(self.inputs), output: registry.register_type(&self.output), docs: registry.map_into_portable(self.docs), + deprecation_info: self.deprecation_info.into_portable(registry), } } } -/// Metadata of a runtime method argument. +/// Metadata of a pallet view function method argument. #[derive(Clone, PartialEq, Eq, Encode, Decode, Debug)] -pub struct ViewFunctionArgMetadataIR<T: Form = MetaForm> { - /// Query argument name. +pub struct PalletViewFunctionMethodParamMetadataIR<T: Form = MetaForm> { + /// Parameter name. pub name: T::String, - /// Query argument type. + /// Parameter type. pub ty: T::Type, } -impl IntoPortable for ViewFunctionArgMetadataIR { - type Output = ViewFunctionArgMetadataIR<PortableForm>; +impl IntoPortable for PalletViewFunctionMethodParamMetadataIR { + type Output = PalletViewFunctionMethodParamMetadataIR<PortableForm>; fn into_portable(self, registry: &mut Registry) -> Self::Output { - ViewFunctionArgMetadataIR { + PalletViewFunctionMethodParamMetadataIR { name: self.name.into_portable(registry), ty: registry.register_type(&self.ty), } @@ -212,6 +179,8 @@ pub struct PalletMetadataIR<T: Form = MetaForm> { pub storage: Option<PalletStorageMetadataIR<T>>, /// Pallet calls metadata. pub calls: Option<PalletCallMetadataIR<T>>, + /// Pallet view functions metadata. + pub view_functions: Vec<PalletViewFunctionMethodMetadataIR<T>>, /// Pallet event metadata. pub event: Option<PalletEventMetadataIR<T>>, /// Pallet constants metadata. @@ -237,6 +206,11 @@ impl IntoPortable for PalletMetadataIR { name: self.name.into_portable(registry), storage: self.storage.map(|storage| storage.into_portable(registry)), calls: self.calls.map(|calls| calls.into_portable(registry)), + view_functions: self + .view_functions + .into_iter() + .map(|view_functions| view_functions.into_portable(registry)) + .collect(), event: self.event.map(|event| event.into_portable(registry)), constants: registry.map_into_portable(self.constants), error: self.error.map(|error| error.into_portable(registry)), diff --git a/substrate/primitives/metadata-ir/src/unstable.rs b/substrate/primitives/metadata-ir/src/unstable.rs index d46ce3ec6a7d470abca872501fad3c7d0632ad32..412cb78ce84f14cf7f805446d99e210514daef1a 100644 --- a/substrate/primitives/metadata-ir/src/unstable.rs +++ b/substrate/primitives/metadata-ir/src/unstable.rs @@ -85,6 +85,8 @@ impl From<PalletMetadataIR> for PalletMetadata { name: ir.name, storage: ir.storage.map(Into::into), calls: ir.calls.map(Into::into), + // TODO: add with the new v16 release of frame-metadata + // view_functions: ir.view_functions.into_iter().map(Into::into).collect(), event: ir.event.map(Into::into), constants: ir.constants.into_iter().map(Into::into).collect(), error: ir.error.map(Into::into), diff --git a/substrate/primitives/metadata-ir/src/v15.rs b/substrate/primitives/metadata-ir/src/v15.rs index 7bc76f22b58d004507c900bd139c9c58f1e8dbf3..64bc3e843ab5898b6fb8b6b16e41944d00c4c035 100644 --- a/substrate/primitives/metadata-ir/src/v15.rs +++ b/substrate/primitives/metadata-ir/src/v15.rs @@ -23,9 +23,9 @@ use super::types::{ }; use frame_metadata::v15::{ - CustomMetadata, CustomValueMetadata, ExtrinsicMetadata, OuterEnums, PalletMetadata, - RuntimeApiMetadata, RuntimeApiMethodMetadata, RuntimeApiMethodParamMetadata, - RuntimeMetadataV15, SignedExtensionMetadata, + CustomMetadata, ExtrinsicMetadata, OuterEnums, PalletMetadata, RuntimeApiMetadata, + RuntimeApiMethodMetadata, RuntimeApiMethodParamMetadata, RuntimeMetadataV15, + SignedExtensionMetadata, }; use scale_info::{IntoPortable, Registry}; @@ -39,15 +39,7 @@ impl From<MetadataIR> for RuntimeMetadataV15 { let apis = registry.map_into_portable(ir.apis.into_iter().map(Into::<RuntimeApiMetadata>::into)); let outer_enums = Into::<OuterEnums>::into(ir.outer_enums).into_portable(&mut registry); - - let view_function_groups = registry.map_into_portable(ir.view_functions.groups.into_iter()); - let view_functions_custom_metadata = CustomValueMetadata { - ty: ir.view_functions.ty, - value: codec::Encode::encode(&view_function_groups), - }; - let mut custom_map = alloc::collections::BTreeMap::new(); - custom_map.insert("view_functions_experimental", view_functions_custom_metadata); - let custom = CustomMetadata { map: custom_map }.into_portable(&mut registry); + let custom = CustomMetadata { map: Default::default() }; Self { types: registry.into(), pallets, extrinsic, ty, apis, outer_enums, custom } } diff --git a/substrate/primitives/runtime/src/traits/mod.rs b/substrate/primitives/runtime/src/traits/mod.rs index 8f5b484e4e3f5b84401ec5c0567bbfc83a853bf3..46f17a0fcc6337a9973b13ca03604c9c115f441e 100644 --- a/substrate/primitives/runtime/src/traits/mod.rs +++ b/substrate/primitives/runtime/src/traits/mod.rs @@ -2351,7 +2351,8 @@ pub trait BlockNumberProvider { + Debug + MaxEncodedLen + Copy - + EncodeLike; + + EncodeLike + + Default; /// Returns the current block number. /// diff --git a/substrate/scripts/ci/node-template-release/Cargo.toml b/substrate/scripts/ci/node-template-release/Cargo.toml index 5b90044d44dd14dd22a5e3607fa5f4c0622779b9..2de00e40b8f1b055978e6b047d87b4793c361e68 100644 --- a/substrate/scripts/ci/node-template-release/Cargo.toml +++ b/substrate/scripts/ci/node-template-release/Cargo.toml @@ -3,7 +3,7 @@ name = "node-template-release" version = "3.0.0" authors.workspace = true edition.workspace = true -license = "GPL-3.0 WITH Classpath-exception-2.0" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" homepage.workspace = true publish = false diff --git a/substrate/test-utils/cli/build.rs b/substrate/test-utils/cli/build.rs index c63f0b8b66744738df18d99a274632cb1ecef980..3cc0d1cab79c8bab2c113af4870335e4b65a96b4 100644 --- a/substrate/test-utils/cli/build.rs +++ b/substrate/test-utils/cli/build.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use std::env; diff --git a/substrate/test-utils/cli/src/lib.rs b/substrate/test-utils/cli/src/lib.rs index 70d68f6f18359460724baad23b259160cf106db5..a77b01da6ba12816b201d9a3b6f70bf0a4a93bb1 100644 --- a/substrate/test-utils/cli/src/lib.rs +++ b/substrate/test-utils/cli/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(unix)] diff --git a/substrate/utils/wasm-builder/src/builder.rs b/substrate/utils/wasm-builder/src/builder.rs index 5bdc743eac314ba8c24e841c75a07de02130e8a7..1d4182d625769b61c1c336cee0848f6c052f06a0 100644 --- a/substrate/utils/wasm-builder/src/builder.rs +++ b/substrate/utils/wasm-builder/src/builder.rs @@ -166,7 +166,7 @@ impl WasmBuilder { /// Enable exporting `__heap_base` as global variable in the WASM binary. /// - /// This adds `-Clink-arg=--export=__heap_base` to `RUST_FLAGS`. + /// This adds `-C link-arg=--export=__heap_base` to `RUST_FLAGS`. pub fn export_heap_base(mut self) -> Self { self.export_heap_base = true; self @@ -239,7 +239,7 @@ impl WasmBuilder { if target == RuntimeTarget::Wasm { if self.export_heap_base { - self.rust_flags.push("-Clink-arg=--export=__heap_base".into()); + self.rust_flags.push("-C link-arg=--export=__heap_base".into()); } if self.import_memory { @@ -265,7 +265,7 @@ impl WasmBuilder { target, file_path, self.project_cargo_toml, - self.rust_flags.into_iter().map(|f| format!("{} ", f)).collect(), + self.rust_flags.join(" "), self.features_to_enable, self.file_name, !self.disable_runtime_version_section_check, @@ -353,7 +353,7 @@ fn build_project( let cargo_cmd = match crate::prerequisites::check(target) { Ok(cmd) => cmd, Err(err_msg) => { - eprintln!("{}", err_msg); + eprintln!("{err_msg}"); process::exit(1); }, }; diff --git a/substrate/utils/wasm-builder/src/lib.rs b/substrate/utils/wasm-builder/src/lib.rs index ce90f492e08fa1c94df30e80686c537b88120650..47c156e5907f3e0b0bcc5dae235f71e8e1f3d419 100644 --- a/substrate/utils/wasm-builder/src/lib.rs +++ b/substrate/utils/wasm-builder/src/lib.rs @@ -63,6 +63,9 @@ //! //! By using environment variables, you can configure which Wasm binaries are built and how: //! +//! - `SUBSTRATE_RUNTIME_TARGET` - Sets the target for building runtime. Supported values are `wasm` +//! or `riscv` (experimental, do not use it in production!). By default the target is equal to +//! `wasm`. //! - `SKIP_WASM_BUILD` - Skips building any Wasm binary. This is useful when only native should be //! recompiled. If this is the first run and there doesn't exist a Wasm binary, this will set both //! variables to `None`. @@ -78,14 +81,15 @@ //! - `WASM_TARGET_DIRECTORY` - Will copy any build Wasm binary to the given directory. The path //! needs to be absolute. //! - `WASM_BUILD_TOOLCHAIN` - The toolchain that should be used to build the Wasm binaries. The -//! format needs to be the same as used by cargo, e.g. `nightly-2020-02-20`. +//! format needs to be the same as used by cargo, e.g. `nightly-2024-12-26`. //! - `WASM_BUILD_WORKSPACE_HINT` - Hint the workspace that is being built. This is normally not //! required as we walk up from the target directory until we find a `Cargo.toml`. If the target //! directory is changed for the build, this environment variable can be used to point to the //! actual workspace. -//! - `WASM_BUILD_STD` - Sets whether the Rust's standard library crates will also be built. This is -//! necessary to make sure the standard library crates only use the exact WASM feature set that -//! our executor supports. Enabled by default. +//! - `WASM_BUILD_STD` - Sets whether the Rust's standard library crates (`core` and `alloc`) will +//! also be built. This is necessary to make sure the standard library crates only use the exact +//! WASM feature set that our executor supports. Enabled by default for RISC-V target and WASM +//! target (but only if Rust < 1.84). Disabled by default for WASM target and Rust >= 1.84. //! - `WASM_BUILD_CARGO_ARGS` - This can take a string as space separated list of `cargo` arguments. //! It was added specifically for the use case of enabling JSON diagnostic messages during the //! build phase, to be used by IDEs that parse them, but it might be useful for other cases too. @@ -99,18 +103,21 @@ //! ## Prerequisites: //! //! Wasm builder requires the following prerequisites for building the Wasm binary: +//! - Rust >= 1.68 and Rust < 1.84: +//! - `wasm32-unknown-unknown` target +//! - `rust-src` component +//! - Rust >= 1.84: +//! - `wasm32v1-none` target //! -//! - rust nightly + `wasm32-unknown-unknown` toolchain -//! -//! or -//! -//! - rust stable and version at least 1.68.0 + `wasm32-unknown-unknown` toolchain -//! -//! If a specific rust is installed with `rustup`, it is important that the wasm target is -//! installed as well. For example if installing the rust from 20.02.2020 using `rustup -//! install nightly-2020-02-20`, the wasm target needs to be installed as well `rustup target add -//! wasm32-unknown-unknown --toolchain nightly-2020-02-20`. - +//! If a specific Rust is installed with `rustup`, it is important that the WASM +//! target is installed as well. For example if installing the Rust from +//! 26.12.2024 using `rustup install nightly-2024-12-26`, the WASM target +//! (`wasm32-unknown-unknown` or `wasm32v1-none`) needs to be installed as well +//! `rustup target add wasm32-unknown-unknown --toolchain nightly-2024-12-26`. +//! To install the `rust-src` component, use `rustup component add rust-src +//! --toolchain nightly-2024-12-26`. + +use prerequisites::DummyCrate; use std::{ env, fs, io::BufRead, @@ -162,7 +169,7 @@ const FORCE_WASM_BUILD_ENV: &str = "FORCE_WASM_BUILD"; /// Environment variable that hints the workspace we are building. const WASM_BUILD_WORKSPACE_HINT: &str = "WASM_BUILD_WORKSPACE_HINT"; -/// Environment variable to set whether we'll build `core`/`std`. +/// Environment variable to set whether we'll build `core`/`alloc`. const WASM_BUILD_STD: &str = "WASM_BUILD_STD"; /// Environment variable to set additional cargo arguments that might be useful @@ -327,6 +334,27 @@ impl CargoCommand { // Check if major and minor are greater or equal than 1.68 or this is a nightly. version.major > 1 || (version.major == 1 && version.minor >= 68) || version.is_nightly } + + /// Returns whether this version of the toolchain supports the `wasm32v1-none` target. + fn supports_wasm32v1_none_target(&self) -> bool { + self.version.map_or(false, |version| { + // Check if major and minor are greater or equal than 1.84. + version.major > 1 || (version.major == 1 && version.minor >= 84) + }) + } + + /// Returns whether the `wasm32v1-none` target is installed in this version of the toolchain. + fn is_wasm32v1_none_target_installed(&self) -> bool { + let dummy_crate = DummyCrate::new(self, RuntimeTarget::Wasm, true); + dummy_crate.is_target_installed("wasm32v1-none").unwrap_or(false) + } + + /// Returns whether the `wasm32v1-none` target is available in this version of the toolchain. + fn is_wasm32v1_none_target_available(&self) -> bool { + // Check if major and minor are greater or equal than 1.84 and that the `wasm32v1-none` + // target is installed for this toolchain. + self.supports_wasm32v1_none_target() && self.is_wasm32v1_none_target_installed() + } } /// Wraps a [`CargoCommand`] and the version of `rustc` the cargo command uses. @@ -371,8 +399,7 @@ fn get_bool_environment_variable(name: &str) -> Option<bool> { Some(false) } else { build_helper::warning!( - "the '{}' environment variable has an invalid value; it must be either '1' or '0'", - name + "the '{name}' environment variable has an invalid value; it must be either '1' or '0'", ); std::process::exit(1); } @@ -404,9 +431,14 @@ impl RuntimeTarget { } /// Figures out the target parameter value for rustc. - fn rustc_target(self) -> String { + fn rustc_target(self, cargo_command: &CargoCommand) -> String { match self { - RuntimeTarget::Wasm => "wasm32-unknown-unknown".to_string(), + RuntimeTarget::Wasm => + if cargo_command.is_wasm32v1_none_target_available() { + "wasm32v1-none".into() + } else { + "wasm32-unknown-unknown".into() + }, RuntimeTarget::Riscv => { let path = polkavm_linker::target_json_32_path().expect("riscv not found"); path.into_os_string().into_string().unwrap() @@ -415,25 +447,34 @@ impl RuntimeTarget { } /// Figures out the target directory name used by cargo. - fn rustc_target_dir(self) -> &'static str { + fn rustc_target_dir(self, cargo_command: &CargoCommand) -> &'static str { match self { - RuntimeTarget::Wasm => "wasm32-unknown-unknown", + RuntimeTarget::Wasm => + if cargo_command.is_wasm32v1_none_target_available() { + "wasm32v1-none".into() + } else { + "wasm32-unknown-unknown".into() + }, RuntimeTarget::Riscv => "riscv32emac-unknown-none-polkavm", } } /// Figures out the build-std argument. - fn rustc_target_build_std(self) -> Option<&'static str> { - if !crate::get_bool_environment_variable(crate::WASM_BUILD_STD).unwrap_or(true) { + fn rustc_target_build_std(self, cargo_command: &CargoCommand) -> Option<&'static str> { + if !crate::get_bool_environment_variable(crate::WASM_BUILD_STD).unwrap_or_else( + || match self { + RuntimeTarget::Wasm => !cargo_command.is_wasm32v1_none_target_available(), + RuntimeTarget::Riscv => true, + }, + ) { return None; } // This is a nightly-only flag. - let arg = match self { - RuntimeTarget::Wasm => "build-std", - RuntimeTarget::Riscv => "build-std=core,alloc", - }; - Some(arg) + // We only build `core` and `alloc` crates since wasm-builder disables `std` featue for + // runtime. Thus the runtime is `#![no_std]` crate. + + Some("build-std=core,alloc") } } diff --git a/substrate/utils/wasm-builder/src/prerequisites.rs b/substrate/utils/wasm-builder/src/prerequisites.rs index 9abfd1725237d6be416e322835282f3879de7615..727197f9a5ca32b6be9ad0eecfe32bde69a9f501 100644 --- a/substrate/utils/wasm-builder/src/prerequisites.rs +++ b/substrate/utils/wasm-builder/src/prerequisites.rs @@ -68,45 +68,83 @@ pub(crate) fn check(target: RuntimeTarget) -> Result<CargoCommandVersioned, Stri )); } - let dummy_crate = DummyCrate::new(&cargo_command, target); + let dummy_crate = DummyCrate::new(&cargo_command, target, false); let version = dummy_crate.get_rustc_version(); Ok(CargoCommandVersioned::new(cargo_command, version)) }, } } -struct DummyCrate<'a> { +pub(crate) struct DummyCrate<'a> { cargo_command: &'a CargoCommand, temp: tempfile::TempDir, manifest_path: PathBuf, target: RuntimeTarget, + ignore_target: bool, } impl<'a> DummyCrate<'a> { /// Creates a minimal dummy crate. - fn new(cargo_command: &'a CargoCommand, target: RuntimeTarget) -> Self { + pub(crate) fn new( + cargo_command: &'a CargoCommand, + target: RuntimeTarget, + ignore_target: bool, + ) -> Self { let temp = tempdir().expect("Creating temp dir does not fail; qed"); let project_dir = temp.path(); fs::create_dir_all(project_dir.join("src")).expect("Creating src dir does not fail; qed"); let manifest_path = project_dir.join("Cargo.toml"); - write_file_if_changed( - &manifest_path, - r#" - [package] - name = "dummy-crate" - version = "1.0.0" - edition = "2021" - - [workspace] - "#, - ); + match target { + RuntimeTarget::Wasm => { + write_file_if_changed( + &manifest_path, + r#" + [package] + name = "dummy-crate" + version = "1.0.0" + edition = "2021" - write_file_if_changed( - project_dir.join("src/main.rs"), - "#![allow(missing_docs)] fn main() {}", - ); - DummyCrate { cargo_command, temp, manifest_path, target } + [lib] + crate-type = ["cdylib"] + + [workspace] + "#, + ); + + write_file_if_changed( + project_dir.join("src/lib.rs"), + r#" + #![no_std] + + #[panic_handler] + fn panic(_: &core::panic::PanicInfo<'_>) -> ! { + loop {} + } + "#, + ); + }, + RuntimeTarget::Riscv => { + write_file_if_changed( + &manifest_path, + r#" + [package] + name = "dummy-crate" + version = "1.0.0" + edition = "2021" + + [workspace] + "#, + ); + + write_file_if_changed( + project_dir.join("src/main.rs"), + "#![allow(missing_docs)] fn main() {}", + ); + }, + } + + DummyCrate { cargo_command, temp, manifest_path, target, ignore_target } } fn prepare_command(&self, subcommand: &str) -> Command { @@ -114,9 +152,11 @@ impl<'a> DummyCrate<'a> { // Chdir to temp to avoid including project's .cargo/config.toml // by accident - it can happen in some CI environments. cmd.current_dir(&self.temp); - cmd.arg(subcommand) - .arg(format!("--target={}", self.target.rustc_target())) - .args(&["--manifest-path", &self.manifest_path.display().to_string()]); + cmd.arg(subcommand); + if !self.ignore_target { + cmd.arg(format!("--target={}", self.target.rustc_target(self.cargo_command))); + } + cmd.args(&["--manifest-path", &self.manifest_path.display().to_string()]); if super::color_output_enabled() { cmd.arg("--color=always"); @@ -160,6 +200,13 @@ impl<'a> DummyCrate<'a> { .map(|s| s.to_string()) } + pub(crate) fn is_target_installed(&self, target: &str) -> Option<bool> { + let sysroot = self.get_sysroot()?; + let target_libdir_path = + Path::new(sysroot.trim()).join("lib").join("rustlib").join(target).join("lib"); + Some(target_libdir_path.exists()) + } + fn try_build(&self) -> Result<(), Option<String>> { let Ok(result) = self.prepare_command("build").output() else { return Err(None) }; if !result.status.success() { @@ -172,18 +219,21 @@ impl<'a> DummyCrate<'a> { fn check_wasm_toolchain_installed( cargo_command: CargoCommand, ) -> Result<CargoCommandVersioned, String> { - let dummy_crate = DummyCrate::new(&cargo_command, RuntimeTarget::Wasm); + let target = RuntimeTarget::Wasm; + let rustc_target = target.rustc_target(&cargo_command); + + let dummy_crate = DummyCrate::new(&cargo_command, target, false); + let toolchain = dummy_crate.get_toolchain().unwrap_or("<unknown>".to_string()); if let Err(error) = dummy_crate.try_build() { - let toolchain = dummy_crate.get_toolchain().unwrap_or("<unknown>".to_string()); let basic_error_message = colorize_error_message( &format!("Rust WASM target for toolchain {toolchain} is not properly installed; please install it!") ); return match error { None => Err(basic_error_message), - Some(error) if error.contains("the `wasm32-unknown-unknown` target may not be installed") => { - Err(colorize_error_message(&format!("Cannot compile the WASM runtime: the `wasm32-unknown-unknown` target is not installed!\n\ - You can install it with `rustup target add wasm32-unknown-unknown --toolchain {toolchain}` if you're using `rustup`."))) + Some(error) if error.contains(&format!("the `{rustc_target}` target may not be installed")) => { + Err(colorize_error_message(&format!("Cannot compile the WASM runtime: the `{rustc_target}` target is not installed!\n\ + You can install it with `rustup target add {rustc_target} --toolchain {toolchain}` if you're using `rustup`."))) }, // Apparently this can happen when we're running on a non Tier 1 platform. Some(ref error) if error.contains("linker `rust-lld` not found") => @@ -203,7 +253,7 @@ fn check_wasm_toolchain_installed( let target = RuntimeTarget::new(); assert!(target == RuntimeTarget::Wasm); - if target.rustc_target_build_std().is_some() { + if target.rustc_target_build_std(&cargo_command).is_some() { if let Some(sysroot) = dummy_crate.get_sysroot() { let src_path = Path::new(sysroot.trim()).join("lib").join("rustlib").join("src").join("rust"); @@ -217,5 +267,13 @@ fn check_wasm_toolchain_installed( } } + if cargo_command.supports_wasm32v1_none_target() && + !cargo_command.is_wasm32v1_none_target_installed() + { + build_helper::warning!("You are building WASM runtime using `wasm32-unknown-unknown` target, although Rust >= 1.84 supports `wasm32v1-none` target!"); + build_helper::warning!("You can install it with `rustup target add wasm32v1-none --toolchain {toolchain}` if you're using `rustup`."); + build_helper::warning!("After installing `wasm32v1-none` target, you must rebuild WASM runtime from scratch, use `cargo clean` before building."); + } + Ok(CargoCommandVersioned::new(cargo_command, version)) } diff --git a/substrate/utils/wasm-builder/src/wasm_project.rs b/substrate/utils/wasm-builder/src/wasm_project.rs index 6530e4c22fb9cdfa1395ae5af4887f3a001a7304..89b8f27212d675119c558d877374b6334f4cb39c 100644 --- a/substrate/utils/wasm-builder/src/wasm_project.rs +++ b/substrate/utils/wasm-builder/src/wasm_project.rs @@ -676,13 +676,13 @@ fn create_project( RuntimeTarget::Wasm => { write_file_if_changed( wasm_project_folder.join("src/lib.rs"), - "#![no_std] pub use wasm_project::*;", + "#![no_std] #![allow(unused_imports)] pub use wasm_project::*;", ); }, RuntimeTarget::Riscv => { write_file_if_changed( wasm_project_folder.join("src/main.rs"), - "#![no_std] #![no_main] pub use wasm_project::*;", + "#![no_std] #![no_main] #![allow(unused_imports)] pub use wasm_project::*;", ); }, } @@ -846,9 +846,23 @@ fn build_bloaty_blob( let mut rustflags = String::new(); match target { RuntimeTarget::Wasm => { - rustflags.push_str( - "-C target-cpu=mvp -C target-feature=-sign-ext -C link-arg=--export-table ", - ); + // For Rust >= 1.70 and Rust < 1.84 with `wasm32-unknown-unknown` target, + // it's required to disable default WASM features: + // - `sign-ext` (since Rust 1.70) + // - `multivalue` and `reference-types` (since Rust 1.82) + // + // For Rust >= 1.84, we use `wasm32v1-none` target + // (disables all "post-MVP" WASM features except `mutable-globals`): + // - https://doc.rust-lang.org/beta/rustc/platform-support/wasm32v1-none.html + // + // Also see: + // https://blog.rust-lang.org/2024/09/24/webassembly-targets-change-in-default-target-features.html#disabling-on-by-default-webassembly-proposals + + if !cargo_cmd.is_wasm32v1_none_target_available() { + rustflags.push_str("-C target-cpu=mvp "); + } + + rustflags.push_str("-C link-arg=--export-table "); }, RuntimeTarget::Riscv => (), } @@ -859,7 +873,7 @@ fn build_bloaty_blob( build_cmd .arg("rustc") - .arg(format!("--target={}", target.rustc_target())) + .arg(format!("--target={}", target.rustc_target(&cargo_cmd))) .arg(format!("--manifest-path={}", manifest_path.display())) .env("RUSTFLAGS", rustflags) // Manually set the `CARGO_TARGET_DIR` to prevent a cargo deadlock (cargo locks a target dir @@ -904,6 +918,15 @@ fn build_bloaty_blob( build_cmd.arg("--offline"); } + // For Rust >= 1.70 and Rust < 1.84 with `wasm32-unknown-unknown` target, + // it's required to disable default WASM features: + // - `sign-ext` (since Rust 1.70) + // - `multivalue` and `reference-types` (since Rust 1.82) + // + // For Rust >= 1.84, we use `wasm32v1-none` target + // (disables all "post-MVP" WASM features except `mutable-globals`): + // - https://doc.rust-lang.org/beta/rustc/platform-support/wasm32v1-none.html + // // Our executor currently only supports the WASM MVP feature set, however nowadays // when compiling WASM the Rust compiler has more features enabled by default. // @@ -914,7 +937,12 @@ fn build_bloaty_blob( // // So here we force the compiler to also compile the standard library crates for us // to make sure that they also only use the MVP features. - if let Some(arg) = target.rustc_target_build_std() { + // + // So the `-Zbuild-std` and `RUSTC_BOOTSTRAP=1` hacks are only used for Rust < 1.84. + // + // Also see: + // https://blog.rust-lang.org/2024/09/24/webassembly-targets-change-in-default-target-features.html#disabling-on-by-default-webassembly-proposals + if let Some(arg) = target.rustc_target_build_std(&cargo_cmd) { build_cmd.arg("-Z").arg(arg); if !cargo_cmd.supports_nightly_features() { @@ -940,7 +968,7 @@ fn build_bloaty_blob( let blob_name = get_blob_name(target, &manifest_path); let target_directory = project .join("target") - .join(target.rustc_target_dir()) + .join(target.rustc_target_dir(&cargo_cmd)) .join(blob_build_profile.directory()); match target { RuntimeTarget::Riscv => { diff --git a/templates/parachain/dev_chain_spec.json b/templates/parachain/dev_chain_spec.json index 0650d0cbdcdb837e6b247c26e196ccd30a7f68b6..e114204ebdc517431e0c7faffc11af73d020f29b 100644 --- a/templates/parachain/dev_chain_spec.json +++ b/templates/parachain/dev_chain_spec.json @@ -4,7 +4,7 @@ "codeSubstitutes": {}, "genesis": { "runtimeGenesis": { - "code": "0x52bc537646db8e0528b52ffd0058acbb05de71072a1750106868947468aa038157644bd8ada3180b1f7c6900a17c97643f148b47a13c9cccc36f5c256c578e62213a2ec291fee88cdbbd6c0497005907dd7edab3978cf6e001fe2322ad114208d964efbde596016d1a7e15e515a7f77eba7ef3184d3b564f31deaaa7574f3a6e5d7bd77ec2aed5538cf929def41d7ed2be433dc9c83c473de538457d473dc9ec780e2ac777f889fa0ef5b4a37a3b7eaa72ea15a5987a8a798e1cbf89c991a35e07cbfa0e1d96755915cd513303f3348a2b6be6cd2b4724d188f1ac8121f1a494f6348bca71456ca6666652124cb4aaea5d1a950306d3662aac0686e2c91689c61c2fe6a87953c7877631895e0700cc0e968e4e4ccdf52a93e927bec954cdccd497b4f912e6c3c74fd67df8a014457abd09b36e8aa5d24ff4259dd224e5d05eefa306e63e0e809f660e0093e9a7eba61d4c07c04f55d4d1b9e8eb4b31c74baca3a3e3e327ea3eea494707e61d003beca0e327ec3aaad79b765c870e3300b8e9a79a9b4aa51edfa19e4ad761879b7eb2aec34f5acd794c0cd7bc5e47878eebb063c76fae4387ebf809e63ae675cec34fa4f3e080e01c003f910e0097731d00701e7e9ab90e3fcd9b4a3838f538a6e3fc448fe37eba8ef31d6e6eaec38e7ad2514f3aaec36f76fce627ec37eea7f81d5efa497bc9f5d0f989ba4e3df5d079ada71edfb1e3a59fdeeb4fd579a8271f3e9e534f37f574f39898e3d4938dcd6fea09e73131bff929c76feac9e6e6363f61b5674dee3907800e188eeba8279b7ab2b98e63d8eb4fd66b3de1d0e1f5a7ab3ab126771c07c04f567d624dee00a8271ff50a67babe433d59d665ea49e6d70ebf7eaaaa11573d59d771eac93a561dfb895622d6e48ef3538e1ac49adc4bf5a493e33deaa9d653fd0ef439f5a4c35feb69c9f0a40d657c81c11a2980e243a360c51428b8010d2fa0220a3e54d0f7d4d4b926775a4faf9fa9bb26771e759f69bf4347cd71eae986e636f53424841e9461cb1935b8c11384e0533394851458408111aed08633b6f0a9f909a6d2acc9bda69e68ea3e530f752bf5fe44aada9adc73a8f399f6333fbdbac49adc67ea2947bdc2f9500173997a223da65e01c4878a771cf504333aa99e866870050e5768e0061b664883cfdb2c78e9c10c5090851b4668830f15efa49fb4fac39adc49f534aafb4c01a8db0fbd3f5115c89adcb34af34cfb13d723d6e48ed5d355af28f950216fd5d301c010e30c3a60630a5e70e053d52bee43058f22acc1076360a10a3794c1870a3ef5d3aca535b953f524eb3ed38fba01e9fd29d6afc91d56ed99f6fba12764e21f5f98879c63c0b523d0b6a80a2f7a8b9ea0d11ba9f95b85dea2276af445e2d2369bbfccb36ce2ef2f973d21a3a9cb33f5f84dd2c925fea4904b7c0168d4b75916a1aa7c0fbb2cfe729874cd59fcf5dcf28877e4f99077e6f993a2db97a4db93babea2939fbf2675fdb259e5f6f0a4f297a4410ea888d6f29c05b12d2bc62517eb36d471ca4937d8db7bd06bea9b0989efe1ebda8c085537d8d4ab4fbabde725ddb66d934b38b13dd1f3cba5f99e5751a053c34fbae13445b725850d815ec36f260456c8a547974beed341135ccb67d0f6ee6b5d405807837189864beeb1b7e8c9172dc325f7adc9842c97701c74ce3977f8e8de9de3bbc711c2cf86f5c6483c7cac9b6b3eac41aef98fc850735d2ead8bce09e15ade81f19be44b3a1bf24efcfe8ad435a4db42e023bd81770d7fb94c08c3efc20c81862af190fa0043938f7f7799905721dd8e741983741966083470c1a56dbecd106c20da1fdb2f13c2df4cd6cd84402ebd2c8815e2dec392c28e741b52d743cfb92ed7fea0b9efaf05a26db6efe18db936677bf3f7cb3bee7ba6d70e40d3b8f48e71e97d3321934bef3d4c006d93e977771ade817fbf6478071e8777e2df2f8741babd597c0ff73053273cbac9d06cf7d9aede18e1bbf35d0d721d2ba4aeaf1d80b6bdcd75e3bbf7f0e6bce79c109e70d1dbecbdc63cd067a7c0d27b8c775cef6978677bbf395b7fdeabc3907306b87648dba2299e5ceb88b42d92828ddea6e19dadd47c7ee9f1bcf37198c7f9f035369a2fc33b3c041ba2d81fdb3dfce8932c18efecf99bc3ce4a18514019d2f8dbec778d77b6f7fbfb1fcf932ceff0efa5c7f324cb06fb1dd62aee9325f6bb0cf3b0cffbe49d2d2242a3df31de79fdbebcb37f87bce3febe39affe00e9d541c80d395ee2dade9c4d6bfee5fedc37acf9db7beecffd671de5a28cb1c93b9bebf7fd6e101fb4fd6644964bfb577bf862cc51d8d80661e2bc3410d54e7090ae8739fa3a7322312eed041b6d10268ea88114d0eefccd8e4022a276ef619715d188da1de39d6dfe66451c516f0ed71fad578721760c85ebb96fefbdef373bc2ff79757269bf5cdaf7f090730cb8ae5d9821d050854bdb904bfbcd842c97f63dbc38970634f72d2222eafd45da9ebcb3f1ddf7363ec0d0f8ef9b3be4d2fe727472692f008defbedfec0857c825fe8fab934bfbe5d2fed1e512d7e592bbcbf897c31e75cd74dbd1c9a53d67fcebb9e511e4927b0ff7700ff730538c4bee43ecdc141f2f705fa0c20a2c1f577cdcc0070e7cb4c007161f547cd8c007163eaef001c587153eaaf021c507153e4ce0a3043ea2f878e2e3043e48e0630a1f44193095c1f486e90c262f263498cc6052c34406931a4c6e98d8604a83690da6361c0e4c6c98d630713191618282a98b690ba6334c523089c1c40553164c5330a1618a82a90c93134c4d308d6162820909a6239894603282a908a624988a4c5a4c58309961da62da81890aa62b987460fa812907a62a98bc3049516aa30446e907a52194805012a32484920f4a442841a1548552144a572849a18485d21925344a59283da164855251c909252da5314a53289551a242a909252594cc2831a11446694b29083db694b628e5a0a445e94ac9052515f4d042c74a0f30e8a4a1a3c60e6ce8a441e70b3a5c7452a033039d2c3a5ce89c4027063db6e891860e174a547464a0f34407073d9ee8a8a0c71b3a527a84a1071b3a5de821061d283dd4a0a3049d2d3a51d059828e161d27e82041470a3d9ca043450f37e858d1c3043a52f40082ce143a28e861a5470e7ac8a054a5470c4a2b28a540a78a1e5df46081ce1374c8d081820e137492a073049d26e894b1c31a3ba861072f3bbc6187364a524a534a2cd8c18d1dd6507a410905a52c766043a9053ba4a1471a74bad0d1420f327aeca0c71a3a43d0f1410f23e80041a7073a42e8c1861e41d0d9828e183a60f4c0418f317ab4d1234b0f1de8044107063a68e884a153d4a3a8c7107688c30e6ff4c842670c1d12e87ca143041d2ce878a173831e44d0c14227073a45d0f981ce153dc4d031428f23e86421c78d9c3572d8c8f192a3869c34e47c21a70c396ae42421e7083964e42021078b9c16e4b02067053928c89192a3859c14e440c939410e969c2a392ec8997228e4709133839c1ae4a820e78a1c13e46441add02de80ea8175407340734091409940caa058501ad42b3a02fa02ea054680b280be80f680fa80fe81794075406340694097409540b55023d02c542b9a033a046a045a045740c4a043a042a0615020d0205020d8382414f40b1a051a8144a027ac5d9f81aa8148fc3bfdc0d77e36f502bce064a44a3a053bc0dfae460f812ce846b39962be137380e7ee549380f8e84dbe05d1c069fc165f02acfc275f1177c0b0783ed52be824fe111061e62e0b1051e5ce0c1041e61dc3ce1260a3765dc3461c7971b29f020da11871d6ff0b0c18e37f0c0526382992976c021e607365dd860b1d9c2060736576c642003071c41b0c962d3021b1dd868617303386507155005335b5c1b5719aa2e465f8839818c16150e2e335c6ae8c802e78c1d5e70ce8063061c2ae0a001c70b4e156ee53ac3e5e539c0b142056a54f0183ccb2bc30b03ce131c2970a0e05c8163050e163855e09800a704375b8cd2b8de70b961b486eb8d1a146862a059c3b586111b68de7073e5a6063737b041824d126cc8b05182cd116ccab069820d510d1c627240a282b9c0a60b365cb0d1420d0d6c7e10d385cc1b18093d5c4042416506520a749c81ad60a60995171b29551aaa33602ca8d080b5408715b0292429334cb031414d1162a6d44841d2414d09b434c4a8a0064a8c944b0d346cc4b880b4039217338d992755969a2968d240fa4253a3e6494d153bd240ca81e685182a3129a8b9c10e3668bcdcb0a0868a1d6aa821aab9a2260a8d1b6aaed464a9c152e3458d0b2618646a7093c5cd0a6a56a0ad2166053bdc5023e55a63871b3762d4d8a006063bda40d3069a366e865033a54607352da0d92293031b16d8d4808609344b8869814c1a64bacc9c4087183a863073c54c17332d98d162a6ca0c0e666430d383191eccec6026cb8c0e66bc98c9c18c95192e665e3073650606333498a1325383991bccc46006cbcc1639ce90438d1c66c85186992c666630e382992f666c20b3860c1b326ab881c20c949b2d332598f1c18d143753cc5861d3868d1a6cd6b06163a60a1c2a70a6b001834d1a3358d840b1a1a2c60c356ccc98c0a5c0a120a709333fc8a1450e18d8d020c70974def81a325fc8f4204608314190f102270a3558cc4441c3861a2b64c070c304191e686190f1828c169c163365ecb0c28e2c9058109365e483982e3161a041834d0e766021a60b3161d49020860b8d0d1a1c342f5a170d0cda19b43168696865d0ded0bea0b9413383b686d6060d0d3130d8c1869819c468e1d6a809438d186ad6509346cd1b6abcd490a1860b5a117894e1c63063859928e048c38e2ad8b80087186a7080c30a374ec031851d61d80106d8c50e2ae0e8010e1bc0e0408b030c1660aa80b1028c1530558021018c09604a0033049813686d6864d0d880014373e3460b4d0d30593429c8cc60071a68de80e982a4829119485e483db0f102e907a434b82fa42ca42ef8046c022e0147611230167c0543612bb80aa6829ff0142c0547c1442e0e0e0eee0df706e7061e63701aa4292331d07ca93901098b511a466cd0a881260e2335466a188161d4069a354665b881c1680c232fa42b646e20138398178cd040b26204071215a32f242837536e5e10c3829b2aa337485590a220118de2b0630da333e4b401c260140556c20e34465f8c92f03366c0e02d9c841928ecf802a6021b18e8b8820d159b2c3026604bc0b4c8c952b951bda172035665860c3365b0e9418c17551bb02c482b90c9727d1985e1a605571c2e36466f18b9e16a6386614486cb8d8b0d3159d0b871b50123c2b0b871c10d951d6be048810718d8932b0d3bdaa849c1c88d0b0d171c645c30f2c2f5852a0c9517302bae2e3c964002838712ae2ec8bc31fac1a8078f02298b1d62d891c68e2e231ecc483113849c17ec88028c22e70d58458e17bc363c37d8d82047971c2d90d181ab62bd5113858d159b2a6f8b8e169519151572745031a1ca41a5831b21d87031f3859925b014645620d3821929cc7061a60b395acca451a96193029a028a82192e3628c86923e74a5586981dbccbc76033a58a42b5a5820246254706d80b9e466584e986d986d9c6688dd9250605a336261b530c323290b1810c0ee61a325bc85c91e1428606da1b465d68e0105345060b8907325664bab089a2668d1a37d4a06163458d1a3653d49cc18604355ab0795283869a376ac06053450d1b6ad45093869a38d84851f3851a376abed494a1a68d9a36d46ca1660c3657d474a1c60b355c6ca2d86051d3c5f4c514c5c482f625e6063361c400616a617e317b607a438f2aa4168ca610f36464059215d20b64884665e4c080bf2013850e2c8ca4f0d0808308a326c8b0c066059715d7183359187121071b72682013a507514c16e00a74aed0230e31698ca0f0283154d8a8c066063367c84c993163460b3353a8c8786ec84851ad51b1015b503a410c16b02b395bc8908014831e5f7a64a1b483ab08980d7af48007144653d8c400c710302cd7153c9e50a9e19181a3b0630c334e98a9c2d130e385992bf4a042678d992dd010a1470b4a55cc60a1c71370ec600737906640d282b40549062418f4f801a90a8e27603dd08922668a1e5ef4e0410f2a3da0307aa29385ce0e669e7012cc50c1fa82cd0b66d0284da1a3031d229d2a324f7a487115fd0a9b13e8c4a1c4831e2fe8b1860b4a8f2fd00c81e482111839d67035f48043b586aa0dcb0b3a6ae8e106dc01fc026281368042803180348037f0210564c1b1802680258051a0146f0d8f8dc786b7c66be3757963804f3ec553e399e181e1a5f1bc90f30636039781c9c058e02bf018380b3964602e2c060e0357e155b0193c90c050602af0147824e1569c0a2683ab3836b835700fd80bde01eb80bbe02c9c031e5c9c1918081c06f38087131c1b3cb4300c38082c857dc05a3832b82e3cba70282e0b0e0b6e0b0e0d1682b381b3e2b6702470519628712a40e2441317f080048a8800041ea080230e18a20146882812c410210c58804f27806707882005702f2801c087c9b272b95e27b345c52f4913243680c40924922c8104c9e59e124b92204162fdf8a17531d26eb04d9278008925486e341b6c50922649983881242849076a342c9b240889a0264d9868926449122236da95249034c1812545942869620141492451a2a489050040ab01108d064a942091841225482c808b25823ab0248992196c92241c40d2441092a0253ac04412109834196c13254c20119444092449927040478bc136c181254c20090193241f000a0112445cb3b2499258d2c41224482061c2894e92c492261c10b4e4034d249144ebd0b650a289249228c143d3629b8420c90f92264d4290c4c892269868d2244904a806830501134e3493243f4c9aa0c011aa55d924414828c18412249c2049f281241f7840114a24e94007902802005a16dbe42789244b24e1826d12b4240993244b2c61e21a95254c70e0466bc126c14493254c30097a220992102871c20924903049a28412263ee0f39344134a7c7034166c131b6d058b04121c6dca7a000912414828814450922160341588800925483011c4c41226726829d89f249a50b2012449823e9044922792e0d050b04c9a5800a649d9254d38f101244a2861e2031b40b20489249030e144072d49e2810e248980124994f88092249630b144024830f940eb6827d826499808628249134b047d008918cd04bba40926829060f20125900435a1a40912269c6824987ca073ac4ba2640348042df90007900425918409134a2c610209929a3ad5a0ac38810d557a87ae2d22226a37f46aa415032b06ce0947411c381c0e1c6e06c70c0e37338343c6f7aaf79e7c0fc6482db552be286516474f071d59e4f738c237619c713492353570882ac66a5d15abb82f4a19af78c55d1e6fce18ad68c518ab5d1821001edc18a17bf2c569cdb915dc2897b7aade7b55ac36ee5efbe29311422937325f96acde5b19256fdcc7114227217c33ceb952c278ed2edcb72f6e55c9b7d735a7b4acf72c4bca4aca4abe2729f8284bca48cd27234319253679e19b1624cd595df03db9f1bd8d7137462bbe387763dc061881d1c57531ca171df638ca7dd045c71ce3d2e878d1c118df684679cdddb86bbdf7de7b1762475c2877376edca54f2e8cee392961ac62dce91c49ee1659de48ad06dfc6ec8e95d130b9fb56ca988d0b0363bdf7e6b4a6355d5555525a18c7aa0aa2aaac0763bd175dc59615a394d07a2b1f9cb02656cc1cdd6426226d6c6c6ca27bd1bde71c84efc9f7a494529268dcdbb9fb6074704aea3dde7590079eaf46ae83724238e19c12cab970230f6f61deab647ccf91de93ee41685996dc186384bb9079e7db392b78e1c0f9a0744fbe2921e9c9f7e67b32c6dd3724becbc1402865f5a0940f3e3892f24129e5830fc607a5e48d713f1a45e89cdb7555dc8d52c6eb8a2bdf1b3d2c0a99918f012528618c3ee27737aee427e5c605bc08af17a384524ec9f2bdc703c2b911be95efbd7d715f7cfcf6bdbd9e842fe2ec24ed257d64b55bc98652bab70ba165cd39e79413c2eb82d705e1b3acf7a69c70c239a584f34d4b5670c6a86341f8668cf0c11877df655da427574ab92b5f26b3ecbdc71c23748e39ee4219df7bf0c1dddd18472feeaeec910b97c7db179f93efc927a58cbccb8ff7da477af15911c65dea8da8f876219c1cb99a0badc9d34929f9addc1df168659edcf1de933ade7b239a916904001f23687afc56eeee3e2abe958f92f2c5dd7d31be1737ee7b72658c711fbbf79e943ce77cefc9dd0865b4e68472e3c27d3b63946b4db8313e29a5dc95b2a480f7deabe4ce28e56309df8310caf9ac673d381f7cf04db812f29c8f6384735f5c5e8efbde7b706e8c31c6f8762bf8762194f0bdb7fbaeeb9af34929f9f125df7bd255154b693df99e65bd7d524a28e5d3e4be5db82b9f7c1b17eec6dd5df87657be75d1c10917ce39777777caea494bbe77c19df0aa26b44893a22829e7d35e94d082d2c1ddf8a0f55e7c6f77df7b12ce39ada7f3de23c928233b860ca384f13928a3847277a58450caf7deb3de84ef714e8c71c604f4e8e1d8314c74314604c88d314ab91ba33cc084735e534af976a9b903103b902e9e30ca18638c2e0631c00f393c2e3a989de8a28c05883e448a25845042082d2819422863b446d1bd17e32e7c927a52cae836fa78818f2a4f6639044c9af040120fc801e8b002084282499225493ac064876c0790a44993244c9cf0401349206192c44913492461820489264a24910489007e760a3000279248d284a772800926499c203180000a5080012891044913414e848049123a788089a0251f6052653810f4011d49964012b48409264e2049a209131ec02180124998245182491348760a3080244c3009f2c10489209d1a6af39304121b50a2a4091f03b0b9d971539303875ad20413414920d16409124c82900431e1010f3451caa1dec42c49e2841348e0f8b0a3e389264010b463a70003c8f1c30004806400497e9050b201241d58c2c4124d9058e2d80a208993244a903c81840778d074a00925483ab084890e74a0092535ec811d9b840907903069220889249a50a204099c98cb3c914489254c2059c204124b24c1010e345109a04409133f4004d04407c80e20a889267a500289244c4a2148f28324e889244b78c8212849077402b0026812d484892792f8f8b1037882090e2461e2049018264824519284124a9858220924414a3e80040792288124e8892426274b923c6d05806449134c346192c449121130d10409079a688289134892740009264d04354112f4441202385992e499b22d784f7cc490131a12b28e58212121292434343485844e436f8786acec882137e448470c392121f88e187a43424242427c84901312127a51484848e83a0dc1d3d03c62c80d39a12177c40e0d09090d0dc9235668a83a42c809b9237648486868e8bd2384dc9090d0103c62c8b9235648888f58212121a1a178c490131a9a47ac90d0d0103c42c8ed1075c40ec92386dc503c62f7f1113b343434048fd8a1213e62c80db92386dcd0d0d03b6287dc110e8850dcee3a0f34416203a45f11bb487408ee9c093144b4eacf6e915ca6c5d5f757514bd7f25594bba2904bf34e34eaf2ef405c0ff33c7069bec4a5f9f9abf4787c60d3fcdc7ce8f96df656ea26251fb8346f8516e7371f86f0b08aba66d77b25082d5bfe72fcdc1b6d437d53e431bde13ba11ac8113576d716bde1df58ae6fac2ac45063f58a150af0c9be4557c2e82dba0284aeaeba0975f51eae1ba4fafc7c3ca4cf6b8fc7f9ccd33c1e98cfdf01617dfe82a1cec7a21b089cd0d6152c3570a36bd0e56116ddacdf5c0741190d822674459bb8bea21d86de5c773eec43a237577dc024bd0ae743faaf971101f32b621585ed322144c0fc9258455f6f06011808accf08864eb15fdcc8aed1299c0fa9de581588f4a5af40f1c127fb14a438f854e17cb23f99444444a33a05f5c527fb05b18a726f8684cbe810dc5d368436c46bea330e458e67b89afa7e1d10ae1d10fc6d7431fd7977ed853498e3b7a8065c7a8b6ad085e6cfba29c19abafc80d64114852de56bb0a5065dd4a04a0da218a1a4fccaaf9459116e285dcb5343c4a6a8a0811b5d7b8b6860060dc8681ebd4534e08206539af61671b1465f24d85ba9e3731c10ebdeebcf3b7ffbe385d21b4ec76f728877ae3fd910fcfa473ee2747cc7a21a5cd1340e086e47b95d06bfef9bd6f19377f8f19803628bf05f7daedf1d103cc41b0248effe70cf0b291dadd00f06444d9b7f91805c475737e73223f05c372db8e86c88fbeb68857687f487bf35196af778a0fdf2e54b158ed4498e1ef2e6472bb4a34e72f47209d65783d8c85d3f3efca33f5c6f8ab8c7f3377763c4c51a74350cac7410f7ab1bdf89ebf79e47fb51da1c74f57e283a7642165ef4bb258b3a7e79c751eb6ca5df2debc8bb75973580aa1fd07a8344441d64591603e1ec88f5cdf58fbb352d96d2ef2f03dadcf93a7ccb2320f7a5e55df6ead9794b7455ac38ce18f955e7d73ccb6eb2d8d2efd66f9e6551d4ef2fc3b063d908bbae1b1d3b5e84a46307c9797193655996d19bd1cc6e5efde6a68ad1c166e8b8b9b9b9b9a13a34a9e333d7d105efe878fc25c3e3e6b971c303cb6230c83bd68fcdad03e9cde636b7dec33033f26efddaebe1f850b38e533ab2e7f0ec57466fbae09d9bc75399100cc370dec33a30caa408b6e318e9d88e8a91b0ecbab939cecdb123dcf25847989bc39bec34cf7ec176d3d5d0cdb5cd373b62eacc86d6d4d0e44023152ec5cfd0c7069760e8766a1c743b69743b8de8766a17a9f08e7b6e74bc7b6cb0191d33abde1479ff91777f87a7be591012be0bdec91e7f655976cefe1e76747477d35ba4842db2e09285972c885ee0e5055c2e4c83729f63bf75ebf5740c735df0ce767c96bd87abeaa3571f8d1e7f8d46a3d165591809c3ae59944911cbba3e6f59b7ac0b73d4024a408fbe6d8d4e815c8f46cf8e987a546f8c6477cfaaeb824bf13fb5dec34ffcf5b456a29fd27947a7b34eb3c84fe76226648ba698d1ae88a95d956270299eb321aab6ea0682b67e2d2780e897a3422defe8f644bb9fba57711f2884e87fa2874619a610f9bc3e592ec07c15f7f967dde0e9fac8cb6fb1cac4eae6aa5bf4fda2db135d7db3214a5dbd8865d1772906ef548f5bacd2f115e52d5c8a1bd6d179d1d151d1e2798bf322ba2f3aca74bcf66fc7bb2e1e8f7102fe08b322e8ff9715f19fea5fe963fd916fe8864b5fb8d66151645969789befa7038232e245bfdbd08dfbe6a36f76e4ddc6070fb49b03e98d026920bdd98d009a05d09bd9f0409307d22e3b62f38d3b73edeae69a7f6d36c400bdfb63ded1ac6e437c495d3644d2a176f4e623bad99c87f8e83c78f0e0f1c783c7af87f1e0f11ed6b41d3b76fc72984677ec386742768c461886612eb0827387e988c2a6b728095dfab2c16ae689c83aeb503bba9d36f7d125dddcb38f9e1a988c519c0d2491b0933221add1edeb0673993bcee53207c4cb20e249f30d0be7391ce739e0e0e0e05838d7a10307e73d7c1c1c9c89536f8cf038761e187691488e0b1bbab9be39b5e3d87760df0db201699c6f37e75fd990f71bd7389fa4a70609c3300ca33a6276c494c3753c87ebd858878cc148510a49870e4c870e1d9464e9f8cb8e985a47bd314273d2694efa854399c0c63909ca60f20b8c442291dec3a39615e9a47a63a4e6a3d760c7a1b39d15dec172e86832d4926ed419f019753dc2b06d1d14c835f60c732d8f43b7dd2fec37d4e63dcf866ed750ca0c2ec1d350e90597e073a0310a75c676b2e876ea2d4a31526aacde1899f9e83375bac125f851cdf17aa3ce68f8e90675860c7554346eca0cde71f28b18eaa868aea517bc33daa29486bf5e17de8181b1ac67434a6d75e11deb9099b558e74c88752683779cd3344dfb663dac5def619be3a2b5bf4c887647b7618e985aab4c0697e09d95abaa5c75585da177b487ddd76171dd0552fa476f11152e2f80d23cbd452ed8f2822dbdd35bf4022a54b650f9a2a970d13a7a8ba83ce916b0d18233fac281517473d7856d36eb76ea794737addd2985721f8a395a4ff44296cf7201e6fc7561147eba0bc3aaeaf1f237eedb437d63645e9ec8acdb53a3e1dde6ea766af7a1768f0671bbcfec88e9fae8d7473546e112bc0e7ff516c47dcd6c48a9af6f26e472f22ebbe392ab41dc236c5449db6cf98c3229927dbe088e675f2645e6615e44fb7c5637791c75b9943dab1b6c98ba01b9ce3eebb65c92d7468e66749b448112d0a3edeb3ddcd7951d31f5556f8c58af6ed5d7854bf0d5ad2abc531d5a69f86dbed1f0157556b8047fd930d1809830d15ca5be54b49ff9ededa9c15a6c1c15cd1d7e56f70f681da4b5ac57a0dce7c45f5871420c887c84609722bcc0083e5084e034e493732b80f85401c4278b7b8cc23b4f0dde715da5b7b7e7a5594bc373193abc2e3ab0164e800e9be3a2e11d96ca6454c70527a03a2abdbdcd8687bc73237f05ca7de8b7e19d15deb991b5088d9edb2580d2b81edc23b5591edc633684d6ef302ba29efe65459c9eb307ac8f0e557b2677973d607d6a9dcfe468dd6772b7acf4ea20048774700f5e48fb9b2e3cea2d5a8117bd44546fd10aa6f416ade0c96d9c0b34ee2d9af246efb58ba933dd2094fb501845d51375218ada96a2d4977bdf82b8df9052bf5f99ef61a69b09894938a34bfd4e0dcf745228f799d884721f7959379880594ff342d4970bc0f08d66ba9f747d363bf29a5f811e45970bb06dd1942e3a889badf0cef61153bfeaac7005a2dab141054f36a0c18d30189764dee3d985140af4817fb408cd077ef77d5b2bf43b1320fd2a10a9afc067d2c2e51ca5d980b677bf96c2ceb091131ca4acb10db2bbbbe7f3deed570893a5cbccc5f5741a3efe674fda1ffc6deb687f30fcc5eecc51f47289efaaa6039d9b72c1daf1d279d1fc7937c49dcf775903985d038cf0e7af7554685b94022b3dfabcc32e87bd4c08567fae67b7e8c627d54947bf46f4a60824226ad261bf5ed247949bf41e1e51d717ff073b09ab91bacbd6c18c2ac625f98dff336f7d9bdfc75f30dbaa8fb2067cb346a3f7f0053322eef357c45c36e77c0fbfcc88f5f933da1fefa4fdf1881aee8f87010d1245d1a46fb037d8a3932813a0f54244d441385a7b10d6dab1c7244836c6047b906ced9b1941d2a4738fae51201e4d3a468114e030128954777918d10b624c37ebd8afcd8830f621b5497759111783a1289a5499e97646378cba5f74ffe3be3de94618aa6a5c92b5761c39d9c6b5010df616a5c0051bd0626f510aa6ecfed021cbb20cfbf52ccbb2ec9b93bde1baaeebbaaeebfae65c6c545555cd53afaaaaaabe399519a85f4ba76897b116295a864bfca5b3fd41319d5ca2eea82f75337033d0e0df21ef6c53cf3688103e451ddb20d437870ac3b527fd52c21b2da30438b40cac934b24ea9ac83690fb92ed0f12b63f46cf8efdb25e7d9eb27131d0e4e3369b74d2b10dc2273ddb20dba433cd2189e18a7fac6f976c23a0ba9c966c1acd503861b5f5aa6e423dbfd990eadbec1f25565b758935eb06bf4de643c8fc1ea6cef4820e722932ff1262648b9aebd6d3fcabc2d6c1c06f516f9114337a5f84e60ab91429bac196745382357cac33b8e2a3c63bb308fcc558a4102aa1f1259f864bbb17c4e4abf73c476568e205a913d7913a712da3754865fd9197b06e410d37ace3af34fafa6beeeba6c83e414a5f8f0dbbf455d9f510e3b9147fade37da3753dc407a912ccc99f8a02694b46aa84e62ec3258b52afe8bccb8066e3ec8ffdac5b619d5ce21d58b1472116ae2211c6d8c370be8721753d2f4f9d332193d2685774e2e023c3fa03ff3e87807f93427a48dd3d1ece393f2b7ccf03c29a214b860cf98e0f492bf328f5cb6544f8d42fc65c46dd5136458e68f8bacbc31c123f65a5e846fd077efe827f4ef091237abe8737d770d65d1e6036241ed6f99ee74eedc6774c609dd24532bce8b2f7cb658f43d8e7da86da9d54445e3aec11bb85bdba6551195a49eac4b513d7187649b72f5eb70c47ae7e7f488ad51ff94ae39deb14c9f5b599908d301a97ac0369ec2e13e2ea36d48e6eae7fe4ab6f10d714fdfed86bbc03a4f717d5b8b4b32923f2d545b2b0bb0c8979abd270698f5599e5d2baaa6e435d1da38edebde76174b35e5975836dfdbaa38f37d7d8372186c6e85d1eb0ba591408b3e8b67b15057afdbe59b4a731106cea92748b779ff4c65520d75405405f0e9bf4475314874bfbf8cddc2917e1e0be391b907ebf9c83ff1128ebf6969f5cb7a0d7cba5ea32bc63fd9dc6baaeba5daf7e51f43af5f7eba2ae2fec2e835caa7ed16d8c5e8ed7bd91dba6e872a944c3030e8ed6ae6ef2cf3949b72b3a15408362bb2ac32596757b826eb3776e8429e570e99dfab9f47ade524837d740eecb972f5f5ad2a0d77b472797b6625ce26f16abc6253e26f39c12ef6c3f1cde79bff3b0415e0f592e46b934a0ed65b48b8c7552685b34a54a5bed7e3d77416c3788236a1d682e038244719f200488e572a1c29868546958d83a205c17347acf8e677df69603025e98b5418258bdae876df6f2486702c2ada18dde867a63347a739fd911a1e6ea84bb034c5cbb5732967661d8cc9cc0d1b6452aa8d240a4767f276d908543bf4b07c4f6dbb837d9ef5426e4039a3bc5a7b22292c8fd5aca39e7e6730eb2734e9646eed4936b770847d4af6e8ea8373ba235fca34e60c3f7ddb74bb71fddfdb1775b5c51ca11da4fbc4e6f71fb57a4db49aeec87360c77dfadb23ea9e2878f3c94181f7778178577641adec6070fb44d49c703e94da6b705c303d6e789bc8bc2257823b4cd450143c39ff6da33b551058c2dc0f0820b11918fbcfb25e9fa384a047160821948218321f83ca9e2878f3b94181f479f54c13ed4a124c0c75d522809f0396529c2fd44c433c1bb2da72c455097f5d4f34cf0543d652942ded5d39f095e5620fb4cdbec6d8b8adcb7ddb26bb0620957cc80851b74410a6f781f3ad0d6676805650c410b2d8a70060fd6f0599ffd06a4881311f9b828bca3d3f04e0a33cce2b2c033e5904246e3f41649c1d2419800196a78f78bc47f5911ab81de7b146a18d3e85781a8cb6f42bdbdbb537589ac3f4aea92cb6fb06ea77e8f541e1ed927486959afcc78287f946c1a2d1f97ec13a474fcc60d655db269745c828027451deb1528847ab082117ab08211eaf644bf3bbadfcc023d58c108dba8e123bd0285d0a6e1537d81de972f7d854847096830c50aef6045075a88a0139b465f21eac10a4620920878523489f609522c29360d9faa126d1a3efb0d6bf85d20767bd8b6c8045c3ac8f515a2992dec608a311011f96c85426856a23dacdb7b7573a25f11305dd8420de2f0648898e6f7b0100f459636b8de3767db2dcdbf1e75bd4525f84143aa6e434d5d0f7b450ce407ded934de79e76b8f679e7f00206634df07de71fd32211ad0e2e179670302e407e639111111910fbf8779eec30f827766f31bb0415ef3714a5046f3657278c775f5e54203b92fbd1dd12f1bb268f4fbf530a8056251080d7f454c664280d0f017854930967518bd9336c8abbb3f5c45a23d4b6f47974bbb0e46568c4bb1d270c995e08b8655864bcef56ee9d54188872443225ceba2d0b6a8045c74ec2d8a42462f0e2b0ec23aebe63c105c43f61262bfa418a3acaeb7b8f8ed04b4cd84186a08abfbe5e810d7d351d743cee900048ed4f717d30dde3dd21b23113e521445b9531445d50d9ee3292a9d8cb16eefb0fe9020ca18a59452ca28e5a57ba43faefa18e30848ac4879d7ee396bc050ffec7ee3bbd51c11ae27bfcdc74bfa332fffe88d91fa33ffbefd3049df1dbd58ca5f525e0f73d48362bb5f90dad9e4f9ee30de0971ebea36cfd5496cea3d7c45cc51ea91727c747b9ff5279e4f49f9d6703948b77878476f8cb8cbcbfa13efbe7d316502a4a3e58362f365847818c63b40543be196e72fefcc1fea70d6cd9d3a5fe31dd77c97096199e6acc81611111135d72d9eaa4e62cb5f117bd49da9fc6644e0d9b9babdc7fa03393a9612c54a6f1109cce88dd4f000e82d22411af0f192f42d97dc726983cd97741b6aaed326c65f314621ef3d1ca9ebcb6136778f94c28c88ebf81e9ebc7333c4757cacb37f7c8c112b9050b383f54733c2fea0610dfb22c1e8de6194e7df701dc27f7ff22efee7c94fdee19658f7700f0f39e7b45c3b01ed2245f1023660c8d5c92578f88b440448a8e1e1ddd735ac1bb896afed8517c63b3746de972ffdfe13c4dd012756bfbb285a473f17c5b5bcf3ee030ced9d0fdfe12f485dbb0cbef71e76bdd97b0f27b9de975e9bb36d51bf93a0ca7b0fc801fa3d5efd7e001c1244e907bfcddef870f2ce0f7f7e994763d3e3c3bacddeb47e5f08b35c82875c72dfb43ec4dc36db39f7222cb8f0389f3de632fe6643f8b04e8c77788b98390957b0b1ee04da1699604b3ba2fee66c8ea8f9178fc3961ea1fdbc6f6f8e887b8b4c5046bb76e7cc8823eaad9b23eaf76b3321f04b9dc0de435a44ebfda3db50bfef06b9296235fcb656687826401a562052efb7fdd2db3bbfe7d1656ca9cb427377bd5c80bdcb80deef9b0169fd2a0e97dc7bd811b114cc6878c9b3641011f9ec892ec83bf2fb297a7fed0619fdba86b08fe8ee0fac6ed781b8e5afba715f77c7e826d498ebd1d644a8afc35bdf0d527db43f4675bbfe9ebda2bb3fb2ba617fdb8e02515fbe7c8943c363741b1ae21abe872fba6dd11f589db8962fc22dff3223f05cb7a1e66f5f777473edfeb221f2a35ff4a6486f9208f6dd1fee3daf87310ae4bef4fc88de6444a85775735ddda29b6beb97a49b6bf9ec303b022fbf9910ec3d7cadc342dba22bd26878f96b2fc6362392fdaa1becebb193d9a38faacb8ac096bfaecd46751bead131ea6436f68b6eaeafef06c1ea865d4990defd71fd7acfbbe845df371b55a0d719dde4df3733022f970c2229fa222def5cdf43deb1be771911f7a5b1bafb63bb2a90fbd2d7e3afbacb43f52c77a2fd114fd14d0e554e3eb9fe78a820fd5fea54cc5cfe079f8a9a8f1e80772aae70a7790fdfc743454d3de1f8b339153c7e7d3f1f0f1540a8c8e135dfd33c1e2a66ea69e624d26b604ea29ff969a69e60725ef3d3ccb1934ec5aba739afd59376eafdf4ea69d62bdc4ff33b0ef3ec7bedf15061d59375e65f35f5544fe9709d33f59a9ff835f514e3b57ab2aefd54f3eb54c0dbd4938ccc71d4d37b554fd5e9f513fd550315ddb0aeae51c8a6ead75d36847af5cbade337c2dec318bd343ad9e46e514d86a2388fd622100bd7c3fbbba4db504b7808f45ae80d659c9de10b5dda476fd117c4e88bb4f0bab05b14420c62188659e7209656851083c7ac28ef143b2c6e61241289e44624128659cfb2ba5cc2ac03bd265da87fb05fd7b2acd6cd310cc9b96ac1bb91d36a1037a96e4d86b6e532a2cba5ac5ae75f565dad6eee4d6289052f44716ee383b8e525e51b5d30a30b64f4007a8bba2045d6b7f26b8483b272bfcd91ba7cbd35664386a07b757b2defa8f0142951dad520eead46f00e94cd49a9402ffb7eb3986519a5f131469c357b863ddec607183fb26eae3734784897d7aa1cd520ee0b0d1256835e5f751bb2aa59a70c9631e5822e107139a32f12e44728da69699dde222e5ca434017a8bb880465f7bc1de5cdde0d24deba1933bb537c29ddad78ffe009d9afaf6f26156e435a4eae61a7ebfb9ba7c9909a18450df4ca3e112cc3779fe765d3b7518ba6ca2b2635fdeb13eba46974d5bd023d1e5d2a8cebac5ab6e56bcac3fafbe334ffe71978f97b1625cc2feea88e30e28ea9377a6ab2c59b722f0f2f2ce0879aabac8f33023423dc2530e8b4fea030c6de3c32dde825cb2ea16f42aba5c8a7cce8850ff99959275d6c31bd1c35cd7726f0c2786247d3f5d5394bb6bea18801991f907b7aba6b6a9bb28bc539dfacb84506234acfb1c2e49798cf2c02579ce84505586d2388a734d08215c08a957d5e8148418a4a81105435130108632320f198e6064240527cf5314ab1b2472690d27f55965888ad0949eee1856a5380a56f3eecedd49e19d577d7352da7d7353da61c05594bba03b452b633fd0369910c0cb639a9cd829ba69fdf8f4c4a4d21b3c4551231c1407843b7527a5ab1ea6b22358ddd845e90d7ec3f10ae655fdc8c5d49f79ead5371c7594bdaaea06ab6f5684fa84a9233827e5a0b81ea8bf8cc87ce50eab115ca22e8d5983d162ae8d60707c145361ace380d17e552e4ac3a64ea2aaaa5edfa86f41afb153dfeaaa3fd6e7ab6fd7af0ad3e83c896e63e18098f390775e5bf318e01dfe1ccd5f6ef4cdac096444d9b8a813192df12082d831b60d10364a4ef020028d8e4ec2c2f530ba45b710b4259bfa88fee00690201f4260610e0b07046cea93c27ed4ddb65e9afab6689c4bd42faa844bd4b19ca62e1d160e8859b711f4f20e0f318fd5caaab36e8b46539675231c16948b6255b33a2c5c0f94ac3f4066ac70e149635d6d218d2d88d1f35cfae1cddf80f4ee7bd478e7a9ba1599a74edd6547e6a9f88afa05a90f3034ea2f1e6644aa5ff5873afcabe2ff788878263e9067e297686898fa9bdfac58e7dfe3392332ff5355971dc17a9e88eb7c20d5f9aad42d1a9a0a4855b7779e548d3d0ce9e31291a005290da4b7080d2eada561a361850b6574017a8bb830a51d978e553b771a1a588577dca5944e1e6644f8d6b7270b2015de9942a4168b422ebdba177507f2789c142748cf59a1ae8ba755b7454ab6313b6954379aabbeeab870d7c5efbdb7d77bf273ca77d51f9e90050e88d1a524bd27df7ba4bff7e47bef91e69f7cefd54dbef7de2b6481a4ce8a7c4f4e2832bea454654ae4dab47e2ccf5886b810b2d27c28058a96a76a95e607fba240d49737e6835578e7ba93771bacd2ee1bb4d2ee8e9d73ceb9b773ceb9731acc0384b9f00e75c7aec696d461f942db9c952d04fd6878475e12db8c88a32ee9a6f5e3d3135b5073c1455e5b433d1d6c79288577a63820dcb9c22aaf02bdde5c5b47a8ba412abdbdbf6f93a9f43bd6f3707e7e9b6ff2e5a7bb1a3c409e297ee3347a7e79879afc37e733f53c53fc3c5bcc7f5991d853bec329ae07f9e72cba69bd392b9b33a3e3ab500a972490c7b33d8f47bb80587f45db1649acd2ee32224f107d1fcf11dae371626ef3d54deb4ddb68b86e34bd691d7f695a36d22ccbb2b2ecd64833523dab97f64ba3f2189dd516d8e8eb070d5269d8178569d43a56551b7b69cbb22c6bbb6559d637bbaccb0718daf68aacea9b2baa2a2cb149a3ac8a4545b129fabcf8c28a08c4687952182d3ff2a2e5332c2d5f69343b0659e07ac85ed12d045dfd925bb2caa5e5dd29fa8ac8280a4119676cd1d2f2d7c48e783c4e8a138fc75979a6f8a871217da3197dbd3c53f66dc296dbf3a2a50f30b4cd59690a9ba2cf0a97e46176046beb4ecae3795cb0c9cae371446b928f56dd46d077af8b96d7a450697952dd68a4b4fca86eda3e07a5e5b36aa5e32f0cc328e4927cdf984bf337eed25ce52fd85775fe1604dbe2d2d2c6c7185a50ecabfe54a73ebf05c5b6e6d4b48da6e77779764d3c0475ab6e41b1ab3a7f317c3cda46d0d55d562476752805b2c001b1421ca452d1398b5c4d55c802d7837498d361c3b5391b900d321f4ff5628c91eb3674ca125f7cd72902d16d107ec091176311ab630fcf7d26f848e13913c2142d723952c7338dbfa4db20af5748137ef5aba27926788b6acf04b586a73221f1d3ba29b20d6dd17c6983e6cae42d3fd472af0a83220b5fc87a65244b1577a06dd11965f41b1201eb5585a2ba7509ac4f55b3f023cd206085027cac5a7a26f82b3bf2ce752362de0a05f854af6ebd49b3bc5f9c1581698c69bccc8ac0f4fb55614cb5213717c845bafb037ba34d021daf11e6f83d8c81de2ed00ff2dcc1b5ce0bcdba7648736c05335c0e34ced25b6406199aadf4164981095dea2d8a821b8a044de1a5b72131646f1f4041127a492e07da33426fd113c26847466f51196c340fbd456554711911cb095c1ae8082f5a3490d0a8b7202f6c81d45b10962d6264d05bd00c647079a1b720127821f6d6e40a3ee83d0280206ce9ad49185b7a2711d1977ef3950bc835f52b9ea24d5c53aefef0dd1635e18ddeb8e3993271fb233e6836d07ee9ec969571ddfd112d47f717dde4a32c232b234a67b77e456b7f0c355b7f5936641ebba3d82d9a9d3323d59ddbb8bafde16e1da31b5f4e6603bd3810f57ed2cdf510e5580dd7fcdcf80b9b1fbbbabde7019dda7d3a77e70e8413c59776c214e41253ce01b9375a1e5277a2b5124814456f7c20ea8d28beb493d9fc8a6e51fefdbaab4cb18db9f281e61329a268264e645777427593a1aeea72c9c1f3064479e9f820067a2deb4d1157d4ef5c3927dcf017f3f2c0afde976e15e59899eb567defaa53cffac3df5375c89e5f0436ac3fefd59f3defdd9d1cc3e5ae68ebdc90e3035c0e8bc687bfa2b9241460b3e38532e02ce00703e237c080f8cd38b0803e420878b8102d03621d638afdf2e58df1ea3e530d34ec0160efb8e47e622137e49ebb428c86b7a4e8a2e12b2ce0e512a2b4fca56509551afecabe97a1c1794e8977e4e16155617f18f6896140a7c6ae6f5fa4ebe7c608f5788aa25ed56c888bb246d4e7afcafa7665d521f3d52bec93ba96ce7af5e39ab2ac2a3b026fd59ff80dbec950cbcfec087c85fd471e9eaa9b3c56ab0f75a4d92d3ad4d75063242ae976fd55f4273bac4ea24f9e3c79427a15bb0270dcf2cea78a5d016caf65753e3d6f7d2ebabd0d613e88a0657f2f2b725dd62dfb556fae53cfeacd55e725b54e4dea670ef12635ab7a5592de547548fcf5ab36f6ebc7fa268f5c75f74705725faabfaba5ebedb88f677da2e8ed3d101f7e3800ef6c0bb9218baf375c1ad0dc977f91dc16dab6731811177be977e612024d364c6f54bf3797f6c280e5b25bfe8406617a232d979e59d4f08f26a16dd30b1168b0b749d4f0efd38b59a480072175548cf2ef548c51529cf8a4657a9826c2cb8ac3a55817c20799cbb8dce7dc20ef425cb53ff62e23e2e09b6e6e90b7e1f4bb7bf34ffec9bfff30e5fb7bf2ef5d526a21da28efe46fe05d73dfc02ff2913a59e15cc2c5871b84dde10671d5b9ba40ee0bc7fdb1707fec14d73e1e6e10f97ddc20ae7de052bc1b1a0897e2377b1bb605d61bd691c77afc0136c8f7c77cfc0fa6f91ce6996c9adb8d0f66f0c8b0693efe6683b88e574571b834ffd8d0c371fedd4d25b4d1f337d40d457d8b94e0a5b748096bb40c755d551c2e4d8ac6fdb13f5cbf1a5c1b61b40fb1daf1dbc743ec8e5ccb646bb42ebff4a24386ccff4cacb748096a74dc1f923fbf946fd1c9a7a8ef7b78eb46fdfac55bb75f8c5dd4ea573b04f6adeeba2a5093a1cebe81e00d70f8d24d760b9629587456afbaed6e4fb46504abdb136d7d7faaefd6ea7a8eb32156effee87910a3a833d556fda1ce1b457dd26d6a2e1cba1cccc12581211f3e14ef54bc6a85027cf82cc4ee2b0008757a6bd771ab8a58f1cadc2f74ac57269d8f74023d58a1085f7cf6305e8142689f20c56756a27d8294edd4b1eaa7d397db2748f1d9ebf4e63c285c3b7256fad5c5c2fa15b19115318ba5fc9cb7ac596a6b52778b62979492bf2c1aaba43b633624bbf547e7317abde7cdeb57108fe8e682b879beaaeeaa754767dde072c90d916fdbd1ec55f557b7eb7a947a474afdea167f69efe187d5edd498f5b4e50468f52444fa69b900efdadf6176a4d46eefe8758cf235ba3e249a05c3e872a9ca8648eb179def79d63c64ba05b1cb8e983a461f3cd09c955e6705636982a1a68282b8dd1fdd4e4c9cccbf07c14bce8e947a13eab83d01c4e34894420952f436147f458c8a2fea7414f2aa9359291aff32233afd2a69237c91b703e2d1eed56da8e325dd4e2dcf99119dde9edcf8ef711fc42f3312db226af717866b4fe4d5cd7516c4f62e0ffbc4fa932cef5745b788f9626cb9640d80d991b73e7cc56521864ed0f30890f5e2809e9e24de5d17479b9094207a7a06d1436449030915c1780831b445cf2143561ae808c7cc3c1a6d42562675d4c4ac59d1f5b92acca2eb53d1f5b9ac4da88fe08596d72a7aa222f0afbe0ce88927524441d44ceaf6383b02815eff3caa7e80a683685abebbf7e30e74eaeddd18d942d0fcedd806100d68fb08dd66ee172fc5b8b4e7a2018d279fa93355f9348fe74916c7c798e7f9f0952046330d97f6586fd111cc00c256bcf78e5046bfcbbc0a1c00bd4547d0a297f41e841072e9412ec011aabcb5829023b41f081ffcf5a8135a046e3c1d23849c0979408f3fc8b20435a898d0006264c7fd3db42bb5bb0cf3b822840164d48222443142180e7ed5681e028de6bfa2379aff487473d6abc37878981de1bf430a81b4f56e39eb45eb597fd8b177cbfabba893d904e6a198158a4b622f333231974d605aa00ae7330f4515ce47ca43218d9887621a314f41f7aa5c65f4fb49664562f4fb8bb72e610e7349a798978f54c8f289df0d425d5621cb477e73471e1150aac7489d4f45b30029c05da159af827a96eb44964f3c3ce9db455df475d125565fc768116b74980d71c7817da33f4aae63cffeb22174c9f5ec38e836d430ee24d2358a7db306b84a721fd19b2b1b838d31a28c9146e7f4168d5134861737a32c93d9cd35a2375716332a3392bd88a883d888d5efb24e31eb69c8c7aa5550773e31a357a05058bdded3b19e643cf54a56a1182f7f129a9715ca7de4a1dca7aa4233c6c753f25df1371714d2e6497b22d69beb31deb97a73c53a64a53913f2ee629c42926717aecdb9987421237cb409641792611cd971e0a87926bf9911d971506c7e6fc4090a9f1d8a601f0d761150e470ec5068cfe19b1591c3b17a1a5d8bdfcc08ed39bc87d5e877370434fa7db198155173986334fb884251f3d16366019b6797b4889ac3d4d3e832d5af883de7a791cdb37aaa3936a2eb4343a1c06ef31c0a85cd6b2e43a13861af7945b7a1de1c14da160da18cbe225d6215b13a46ec32bf2e9759607499932814a3930e434fa3c35ca3a7d1b56f66811a197a223de7181deaebd62f0a8b9b59e004f3ec27d269be591135b7a927ed190c85c2e650d443417f128282c7715ce627ed3027d1d37fb2a93fd5d3d350284e27ecd94f390e534f343fcd3ce6eb9343a1389db26b279cef38fbc4ac88d1611e3323b4d7d4d3900fe939d093f321d5488b18c5c35428b4c3fca2b0974d00bb4d8522fbe854266b113587023be938e829fba80a4191c3738cc0ea1436c74eaa42960fcc332a64f968bb4162dd80f41528a36355c8f2c12e0f4349d768f69e9751e73301ad9eb067b58ad1b3c8faa324beba3ccc7bf8aa1b90ae6ed58d2bbae4b9296c0e534fce67870ac5e9e6271d3fe17cc7733e29758c4e61f39ce7404f34cfe1972c8195de27489125b0d2f2b1a110bee88d42bb29b42d628297de681a1e7ed3e099c0650965f410c418429416e30d31ca20c217437883086f10810c31c410c38a185284e045085c8440465f1816e90d558d542defda6aaa4b6f1a5497969b464b043c29825ec842d4f254cbbe4658a437f114bd89b5c843a30c53885abeead99b15e9c10a4620c2b222087852d4f2095246cfa927e773d2a166a75a85b22af313ad50ee43aa423c8efd558847155014e043c5900fe9a4cbbc871dbd41bbefa050ee03731d14870a6597f94d15d22ea3695528ab50eea31dbb0d3d0df9d40029a07fb6753d6c5be4059676ce878642b9cf699e7e82721fa1d1b1c33c077a9aa942a33a0549e6a71c5508c7652a94fb648fa950ee035385705428f7191dab5390ea3ed3b6455e58695783e046a15df580f684dee2152f5ac96ee90f59e92a8300f6ecdae3c92a94eca35a4556a75080cf681fcfe1670681ec30d71e0f4c8532ba56ab18d52cf2d9e1a9ac01432d63fd91c0900f897d468742da3c392222ed892dba891fbd8afb8c2ebf39d1b2dec45a84e6be1dd18f27ab5064c70e3f1d10ae5e6616385176ec2f2b02fba89e46c74619663334591b835b374583bfd649d1b6c88b282dcf9308cc8823609634601bf174f0e4757c0948c7d512448c2722a7638f8e37a2b443c71f613d7e89c7f3248b55a34fcc01191def03efc48ee78177e24b977befafcab73fde3ef95dca044801cdfbe33d48f6bacee11d20f7a5dd2365b20f92469000f168f7a5400a68b73f9eabbb3ceccb86c48c88bbcb84a0e83682963f410185d0147aefbc55ddde7f66dde410792ec27583a2dfb765dd5cbff71e66ea7edea13742f09fcb8cbcbb3f2334bc433d1e075edeb5a4eb4ed12dca22464b1a5be39d95757370681987e561efbe2c0f7b29c4d018cd44cbc3be8765118e825fe4e9866b5d151afc6acf69ea411001b354814dfdf1736e5a6f6f4a7edb339afa11bcb3fdd0d4a9ff40d314f51e2a88c7f324cbacd495609ee743dd882e4d1d03bcf396f2c2e5a0296e9a2e9a5a8d77dea9cbf00e3c45ad9767c5b5ee8906ffb6a88b2abdcd8e5fc75a1751f8d1d0e04ce6813eeff0f5e3bfe36c90ed771d1bc4fd3d085c4bbbd0f6ee7c1c0784e3efd37abf696d648bc3419476ce7d73dcce0db8d8c00cf88da6637c3c90a943c7ffa075ac1d9fc33cec134f83c58d8ec7d16478e73dc6f82d12c19546efd05b84458c7e5503ac5715880bc07c0f0769d62b8b3a289a556f8a301151bf0b111175e58391f8aa6e39da096c25d56f82d8aeaaf5d841ddc317df7510e03ec6fe1aab40ee4b76d7d77565234cc38103064b170c731c9aa67146048e5f10c7af8883846374186d34228d7ebd2138c9541497f5e51decf37b6cd2e944ab3e2dd7ec3a081a95e192751068d5e7b353dfb4ac01d7376bc0557b5c00ac0370c93a457fe092f5eb87c7c3003659b77e68eb87b6be1903b864d1b4f56dc968ebd7c320efdcbc63e1a2b708cb959e9fbc73f32a9010db41b87eed7ac239e7af65b7d95f6715c87d19dd35866123d25537a1be3e800d72ddb2fec7e37cac971e4fccad03714060b77ec550e78361c732a503d05b74258d36e30a1910c3e886fd26bb703c86de6430f426838181191131bf2476c5fca2b02b468bc101536f3012490b144b1a2e51929d12b4ed4d513fef6c323cf00ef59c920c751c29a59414109ea2ba24a0111f199a0c84103a2ef009da26d35006f283d7608c31c226382b681bd6525e5e93a1c1b9dc4b1f605077ee55986fca577f1e9fb27ec5aa386c9a385c9a308a39e79c734eaeaa0ac8962b461a1a24685b4ece83ec1c33f3813837b8b4f185196d70c1861b7df1b27b232920e0daa2f1785a92a082b6cd7ef32111df7382b6c9748cc7a1d178071e0a7786b6bde60de2fe736571df1cc74697bee92d62a38cde6c32415b2794a14a6fb357c8b504cd7d896cbb76750a9afb0ae07a18971e14b0fe66ae091aece1236b44514395be489bc3cec60718da4d11f82dd69b22f1f5ca95592511e8a2e0043374e90d6a4e8c6b3906da16b12106b3f1850cb42d5ae38d866ccc40dba2358a7a8d301a16c16b5cdacb6ceb311f44d0e2619d5c7a6c826b73b648d4ef970f17687c771e98e749162cfb3bcd658d1e7b7f3546af909e915ed49b63a39fd67323f2ce4e9db30a9f18eb04fb2b2ae38c34bcbc37a04cb1d24518646c41a30b6483449f6499f04f0cde817ffc99865f10e36c08eab06eb51f16b119b3392b9809c1ea6e0fdb65848d4031ff3e37334219795ff33ac44699911746dd6438d38ab42706ef5cf585c1253544697e1ad4687ecc8a68314688b9ccaa40ce48ac4f0c5e76551ccd5714c8f1ee1b6d50f4acaf687fbcd347c62bc2fe78672adaf6bee8f7febe7861f08e189108e3f9dd20bbf4bd1f5c3b00cdb5bb30e75c334481f6367877be0f688664b0062edcb0862f5851042fc028aec0862b98210c2dbac023450b3229b8d081a2284a0a28a44745f186a6b2a61e95f516a50107d28bab372c0a2f5714695404e82df2e2861731c480d45be4e50c2019ce0f349c8bafc9c46845ebd6377315886acbda660fcdec930981c77e5dd7e2854a933ea22e1332faf53221977522d92d5859da377b151deaa791ee28e93d8f44e34714c3e816f4e094f272517a1e10d54fa8ab49b7a514f7ead61f75b7de2b38efe87b9f936ebf37dfb32a10d5b392af287509abc6a51f08498e5a8308da666d179d6d51ac2baaf519bca081e8cb177d456cbf704f51a6f9fcacdbcc693ed43dec054afbd05b8406297d51981c62d69b2235cfe1351f6ac99910995f4ee6f866947c3828e932745455cf81ced0e51266d1f8186a553c1af4a9aaaafac55845b7a0d707e012bc0f5c82323ed036996df7927678add4f0380eff18ba8d43866e432d23c35c6f88b8f3877ad20dceae28ba9d964b33c7505334883b078e4fba2d1a8de315dd9e681cef793214e312ac649806e7bc1373f81cdeb170d4ebbaae3b47b5bb36290f43e51f1522ab11a7dbb361e6a41a06e6f5758aba3f0af3cd845c9990ec3defd2641a9e444794c8b6bbc625868ebe86120e1999751de5b6e8ec8a627d5384fa7ea8a518da1432354d6e73c6615c5c7b5d14c5204d5b7f7f0f02fb861528c1085108020a78b0059fea9b41a00238c812c614607cd184377c2c9aaee87c26f949b5679243a88a09bd216687e58a2cf4f811ba2dc65f247704cd09378c7ce5226dfc6d067a5fde28c2443fd85dae086422cf2468b6db1ee083681ef38f40b725f8d87004cd45226c499d70f35b38da85ef8b0b1e6aa9a265b8b4157289e3e7fee0ef6d1c0db42d72634b6f58f3ab0db254741296fca0e407222cf96179c741e924f6cfa33ecfd5af49b131fede90a713d7ee5588f109aedd207cc2428a2074f185286198c2e7a500063a2863074668c2143e3bbd27c2881f5e108f67faecf7025b78d0acc9f1f4cc4a079a1c1c9ae3e4f470c931804b058003290b7556253f3445331d17b0447105175fc8421184f0a40554c8a8c1159420062014a0095a162a0ecd15ebf33d4cf378acda23af276f30420ac800842eaef8e28a1bc880069114a440c387f2618a2874a6c0a243dd94fcd0f30cd8a21e1e1a023495465358535278690ac687a2661dc2862ca0c002327421862e3ed4e7e319fa410d8a70250b3710010c67f0a12a0e4d457d00721c9af978727808a287e6a599de223350a137209329225c313cd892960788db13b19167e6b041b1e1354ca6084461344c6fd117327ad5d0349a1d2092fac0a52a8cea4655253fb4bc0fae08da06a481544ce39d01b43c0def6c11a45042cbe3f00ea9e5cf3b5b8428ccd0f239ccf37ce479601ee823bf35468c1c7ca1680b94275d7ce4e7e34940165a0085229ca0094bb0828fac5a1134ac447364348a7189864deeeeedcaa0fd0084799c8f23723eee383781b60dcd60a575e82d52030ebde5501c2324b2446680831e08410b21bb4160ef5d7c26990ce18e17223713128fb33f98470f1c6f30c50d48700315dc208be8de102e669ee87056004c9b7568be8e2dc006c168ce7000de89f1f2e71247aa637b6086949b864bfcf800cddfb09d6dcf20e2000ce09ded870630ffd0cc4260c9624d3b8389857bb0a685fc043eb1d2efd7328f93f24cefdbfce100381b647e7fb341aaef6b1608eb7b9a0d727defaa304f0f9bde31363d8d67eb61dba1978b7eaeea2c8ff3a2637918ca8b81c984605c7a0ce88981714ee6f02028a785a933608b7aa81a84d3e2b4382d4e8bd342513339b43315dea9c23bf231973339b41c6810378e071171e0f8e5b01edec1f177066c86831473970981b910d235da73368492b90cceb71f6ebe09c0e69ba961cd37daf035ef7074f8b8417e78e980e0f11d3abec3e1693608cd61ddb4226dc3b02a33c4fe78e7411de07a78df4189e0d2bb0eba0335824def34f18f47c7e3d48dc74ddd686c686a2a374d3d627fbc8f6803f6c7bbf302171b84298f33b4cd4929cab90ecfe1fb78ea67be8f873ec77b9e48ea5a0e15c20653e440b7a90315c2062458d3f60cad54081ba8604ddb39e846d3940a61832cd6b45d58ed9c092159b23993d0080c143264a0e4000d2b06ec8f87c5e06098da7384264c210b900134082e916a8feb82f60e8b30a68231957e672a3358d3e260f6c08a0d84c043bbbe1863ac6a598455a6e3488e4e8d7ebdd15f26044a39da884508588e80a50958a600e5ec7d7411eeee3322b0a9eaa8c8c843c32cac69bf30cba0ad41c3230496d2eec4431eba877b38527eb2dbd379793cebb33eef6dc15f74f707758bbaed817a45dffed81fd49d97c74362288f27ae89fafb6e4c44dd4bbfafcb9a3a947ef209971ed5d1088f765428133765b66b41bfbb156c0fef0c0fab93e2a2540785071a1a1146f0ce110d28827736e70506b6c7453f216cf085356d19e61adafb3e1e216cf086356d6f0e4bbf477ec25676f05d706dcee68a1afe7ae2c43c4344effca4fa00435b37ee88de84a24971547a082f537a8bd410a3b720de9c9ab6d1fca5d26e40e01034b84156882929959617566f82d8c64e641bfbfbd2307a9dab6ff6e4a3936a8cf13bd68d660c5681b6fdd0f0f03f3cf8e72a079510bf321b44a7e3371f7a7f6c3be808e2446bf91ccb339f295253730b84fc9ed9a2da6b78b73d703ba6dc8f72cfc793634dd0079d1f0dbf7d87863a1afe7a42dc1ff7c5ee923a99fd3edf9c1790c7b332cabae568f822741d8fb8caec0ff82dc15714dbb9704bf08fee96e0a6a49f8635c3e60a74ea577fe05264e2c3fe88dffd5180edc1b9baa50a1b847b2f64ef7679280ad904ff983c99af62fa50da0a209ea24f9e54719f5d026c393abe0a203ebb02d872e878982d40fc059b1d1ab48da6636512349b4990267764b814b5fd11ef28ccf610cf311dbfafe2407b3ff3d3e2da9c0d16f18ef59cefaf1c6afde22fb48db5b475f7caaaa8e51cdd6cde92185c1f2cd0ae79654228ecda20dcd14bac2a07ef68754889b857905ab884addf380a7c858edfe52e7484505eac7583521ed48246af844bf14b70295e864bd7a516e621624df5712b336ad5c23b6554f48c86f678d612cf654cdec23bd6e3d90c3e8377de671a9a1ada376683ca9814a16d3dc7a94c08bd454b6e1e5ea39beb3a6b0e97eaaf875d9863ec8d767fd45bb4c25cc65ab80c2e68d7e5b7edc25ab25aafbfe7a0db0e46e392abc2a54869bd92f37e6f10f1ce9b53d36868be6d976dbbe4d40d08e5814b8ee693e693e652664278fcda2d9dd171575b9e20a0b43b74c77e9709e1f1201c10d6e385d820d5e38dec4e7dccf9367976f8a605c1f15d1e6a4df3385ee9dbd2bc45777b98873c7a7e871c7a3e87d473e39e2e9b13328443de7056b0d4ee99a03c9a9206a14c086556e786063fe976dd7af54b5253871d74a8f55b6155555575e21ad66ddefd5cd2a29f5c85adc8508bea40390c2ec5ef40590c364548e78e237d1259ef8df7867b6f70291e4ee9f846c74328bc53cf93f3783805528155a015c805c402bb805e54080542815178474a55372598bb13d8f340a49e35876fdbe508e9b33a717ded310f7ae2c43bf07979a648dfa587775cddacf9431fe4badeaa3e60a0f530a5cf8d0a854dee0a1a759cebf83bc7f8a0277887e6f1a7270e0acee39d141f30d0b61f3afec75dfbcf73834bf141ae1f1b5785c52b71023e761b47d67b98720e652fd814b1748e6facc5119db8145fd127b814ffbc48ea6507dd5cefb0ea12f3ffcd6dbe04f30c111111114121222292c227de09def9e38376a7d633343df3dd996f26c4e63d7c0aa34c0aa554189cd58e7817c433c54f58b7a969b3f2a8100a97e271aee31b84d2f117d0fc12bc53931da1f9bccc8cd07c09dea979bc122736c876fccc8cd000557583f9b503e737d4a6862ebc92f319ba6939e8e69e74bc0cddb018bad1c4e3a04ca8de568b46835c93ea01b8141f441c552d99164c4b4e8ddfabbeb869eeed3eebf6523b201b1059e29d2d71c91d16f1e01da25c9bb3b197965fd7fb2874e2f1cc5ce6d8f7f1e4f8553343dd9ade73c0f4bb0cdd356d55bfe7638a76ed2547df2f84d1b814e1d9ca0661cacd64f0ced372f95881e6983a31a833e5bb217c776ec050337461f0cee3182c8ff64cf23436f80e5a9680d0f2ee69f2736ada3e203213c2bf98ba6e1cbf1e763deac470d13111133111136de9113d1e6c4def32501a87a5e45099167ce7183706c7b56f3cf43b323a8eeac4754c8d54b8f4fec3a72054c3c29c143240e991a384508cb953d4e3e2b870e1726de93d1ecd75f1d2a57e8e4b76511411eedd1faf6e4a72fa06c835df09ec7720526f407a74579d383e75ec5127854b7209dee1bab95a0497de596ea16da5898da813834bf2401e8f2b6293bc3c8386467b674a64fb55178616341fb8f40e844b0fe670632b64848165836cf3c85c9ebbf082bfe03078470c2ee21d35786703c265308fa3c297672dbc333a4d1a1a1a2d1d15335a5e8612f14cf2d488feb05bfa81cae339c09adecdf0627358968c7e98f3814bd4663eac681be4a246179b0b238cc7f324cb1695c14b57719f2c3f5a9ebb601ee723cf5678678bd4e0e29ad8e32a180bef54977fef3313c2af62605d848fd7e1385b91672e78677749773880b4ab18c85c3629366160be4564a0d2f22e0c34c4f052c43bdb6e2183773627a5b5f0cee6a6b095c7e3c433c96327693c8577328d5e9139896eb337b612e47a549590229d783c734deff2fb36ed34f2473c1e998a818a42221e55e5d9cb8871c870fddacb61bb9a36b701bcb3cd20ae1351841118601e9a67ba7e7d99268d921a7d01e96bd7ad40dba2314ce955a3b7a80b969e3d0f3748bd79c5e7386e94a39b22b2dd21552f8c4bd777c2c86f519729bd1da0af5f3f00ef5c6700eff0af07817d9b94169a79ac6e73ce6f9aab1b4d4f9abebed0369abece1911d7fbdda96d34db7966bbadeab65a82b8de00de79bf4e04efc05f3d7c9d86fa7519de99bfbe39173ba9c6b53f68d46111942ebd4555141555b1a59dd0254aaf13c2c0a501d0eb843078e9ebe1e4f41e5b9e5daa25111151143ef057cc84c04a6d571bed5cc56870769908d420a4e2da9ced796996424b185d1d3ae10b58ba3a9caf68bef48ab6bca2c7e3d26013cbba957a7b45b16eefed15d138359a5fbda2e65f1083991078ae81b6c166347a486cc7854b6e68548dd8ecadbee150df647836ac6fde1d9767e2bb1ed6b8bc330d5537ed2dfce5c6b041809c17782ebc43b9ae0ef92e0dd765836c73857189aa33c2e7452ae17259d0aa6b5614750a1312a9ea0e48c3be1648dba22e4fbafafb8218e41deaeb8870dce8f94da6292f3dbf613c4b3cd33c4545531490259e46c1cc51d42b99b92a5244d5e79d087ae2c43c3f3cd37cd1132d3d774bcf6f6e4a1fc1a5798a2ac1a5798e15035c9a5f08537d9399ff81fa55a7b6f2072c23f2ae7e5198ab7eeddb2e4b3ce979254ef00e1472053b0f8ea20e448679969f53e29d88d559d5d9f39b33eb8fb322db8052728114d1fe6017e17b0f3ee886b4bec1be30ecb22a3831ed979366689132caf7de838f0ddff9eafb7876a128a65172b9f4de63f898bfb0f1205c5e47064dd27507c0364af9227c6f578361808eb9896be805c207e183900c65805a3be62156a3352e31f3ab0bdf7bccec1c848f9d73ecb8bc4975d19232713d3fefe61fdd221214f5f528f547a1c486509fbb1007ca23c059f1a5a42ea5ac7642c806694b13d220b24db4fbe3c908218cd00dfc625c09537d837ceb70323cf50b5e105e867722df511f60682ec60b89d59ccb0c1ff365139c93526a5c7a6e9d73f03133919cedbb314a186a93e9278888647c80a1f177001a478e183d23c69510c208b17e0fbea88518296a2119ad7129aea4a08c10c208d57832422825453d1c1c33a0e47e11bef7b8259e5f85b082e9f7625c18e3e156ecbd0b7931beb7709f4cefb1dddd7dcb6a705c7250cab91366b9b4955ae3123c8452c6287abf59741242b8418a92f03d0fd23cb80630bcd1d782410d314ce96b5d09b42d12c393bed69940dba230b001618c736243a6dc0ba68cde7867a8e3658661311312376e8c77285969306a52aa6251e392a37a5ea4325c72bdc9f04c9ebc33041766e7e4928b3026e17a62613f1ec82622f2b0e3163f9d11b40d12d92d51b0a9bac5cfbb9f78c218efbe7cc964bd29c2b13ae186fc842066222222a2203682737cc7fcde61bf7a6304fe1dd6cdb9e8989d730e3e0add019aef200de22e0203858c1934bca44a0e000f1bd61b21b6f9eba47345088a2722220a8ace0d61b6921f1ac2bf2e82838b25a840c90f1deb8d11d8ee10d625502110dedd3d0cd2342e693d41f51c7251b834445da8f9b15aab3aeb9755d52346b8730e97e0a9ca43a43414874bf0929e4bf04c4b42d0a6c63c2727888888887caab88fc3c211c01d1e3bd5e8805eb35053db100b415b78485538345d44c116bad802942c40e98b342fe918f210a498c3c054390546d6cd3ab5382c0be60e0a4c8e53168efae31ef31e7651fe32223f328fb9d446d5cce3130c0c8cf59e6705e5701898ea38602ad0eb1ff999f7700e309f99c901c7ad8a43c2bcd24ea2913945a391bee5a839642ea91c2c98cf54eb389e832e9770583586c6d04d9309030ced477bec6d65aa5661de80228688c0c0114ae0b80cd54ea2d6294a8aa91b8eeaea8977acead5477f7702866e07f10ee9ef4f3822de71ee8914f7c441e11d47fa48a38e54ab3b3aca2eabaa8b7626e82df24295be18cb285c20fde45d1840240378c75527e5407ce01d6a7b82e09dec19a40e081b65c43dd20d0ced6dae37d7c3e71daa6e433439251e7827bb16dce86dbbf4bb13bcb3b92a41ccb33eef4bf0ce1669c14bbf2be11db759551d14d7037c0f6fce082e419849b84d190feb564579aa14ebccc1233158e9f716a1e1c5f2a38b02b1d165dd82de93429c33224a29448ad1f36026c419e1b088512ec83bb0de0807c508dec1c245e14cc83b725523b8b44dafc07c44af40b90fcc2fea17495ec18daee92d3a038dbe1e16adc02a8f0a4f89d549e1d27b8fb1ba285c7a16f6f81eabbf3d150f13f991f4ec9adb468f7fd407185a55835e67eef214f50186b6d522550ad64c5697d437ac52f2f22a52d59ff7d859e5ea2f3b12fbc9ead1fa90abaa1bd6526a14e6b2e75d0f939846379aae70bca294bc46717cb32157cdde38240543b567f4fa15a7b8a8142ad44a84a11c2539c614a2a1190d0248431460304820140b0724125514861f14800db0ba4a521d8ad32007520a21648c3144404000000440442421016d747caabf79b6e2f9215acdcec28f42b7b6b49587506530ba256ed8377e4f34254995fe253a84176ab659bb5169865ffe52cb7877633c3387cfd24d618da3cb7736473bdd004496f45eb6288a99e169e94d2325192b52352483481ada88a4fe87e8e14678352ffbf7215663587fa24acecacf854a63507655b7adabf8567e4c3ea388f32d70f26cf18c0ecd7de17628b175326de0ba356818ab7e4fe075ea483a53b655580b5fbf6da94d5ba86cf74251aff5a4f915c3dea156a29af9a426d41d4d7647495a909a763fb8d0a5a911772ec561f6b0d1b035846f314d52f6db0a16ada0633d070cee899eec892afae1c383d677741967d0135a38faa78de37490c56de708261d23f68edbdef61d310e27acbee8f3726f95049f7ec2d9141fb2f627df95bf1043853ea337771e6b087d3960e8acbdb4620aebdafd23c39d508294cf97acb0416818b680db66530fd290cc4e98e81066a8363716895b5ca03de82edc880e3ea0ce6b78617b9f567ce40689763505b0321664646111ceb8a57107f04f4303563981a789c8ae5217f25d6fe8f5bc352dd6774cedd0c9588b471fa8ac4ca6453c9848f057fbd0221caaf612094f30438c698f70dc6563fcaf87249dce84310baafc46b883694ac0bc310e9e0746d70613106b0a097905c8b0f5d5fa30d9ab42ee76055d2d6fa1829572d9850a54965db6f4efd5d983ff485b312ac04cf0710048305e1f0131574ed2fdef8c41b83c42dfb4924da07e38642be92ad34171c394e5eef045d87e19448b7e95db33f0f17b283f9deec9ddf019d1b5c8434286737060e05262abc698492d855e012367b43a0733dbc4817168e7a19b84ce0a58c66d248f6d743c782a4454f1487d18b0d87584f0caafded4a73e88a0ae8d225dc086180a21b7647d2d8aa0cb6a686423cac2fbd93d7b105b4221c30e1cad5b2152b0b77b46c36b4c4f1c927524425b0d1e13dd31f372560b9f7ffad726584b86eb3da780a1ccce3cdafc94b7723745c1d597ffb28ce5c85622a79c2db5697609f4a3db0cac4dd86cddce0bad803017197591bb81ce8e34fc521bf41412f80cfb8161e0c69f55d713a80701bfe90761472e68beb2688dc10e0e5cf5324389e1440f04ccc545abcfd153299ee833e658bc73c1b9a3ed367c78db0d058b74f0f258b8ece5a72c7ade62bbd3805a94b251ea846729edef10e53075149389093c15d465bf258b2ee7f7434047e90072fc17fe49120b561dc3caf0718b2f81f2cacfdf9c9b7269841b51a3c85021036a2ee7bc22fda6f19fc6de01ce4adef956df0c3fbd918e80e08843a6b3fcc644b528122ac3b2d7c2b46e39e4e51f7b7d725091c8db9f5a1405248ec358355b9f1b3480c1dc598efff8f81ad104173a9f63d680cee535d517e353f46f4c44ff96ca6bac81e48c9da4629ef853e31a69728964d319160e0ee38bd82d93c64082ebafd093571dfe1d93924d57527439dc5e8beec76454b851fd7eff260659a4d4c44372e3cca720e54cc15bf33adbdb050ec29937d0c2f695c31c9e9e5dd131d65121f94aaaeded14f004badb3687736b30dd2645624bde0da5d5cce3e163ac0abaa07403e74f37084670adb9d8c7523942d69adb10429111cd0bca35d30e6e8cca9b874ab7d5053e1bd0ceaa3b85d04860f71ac34c0a0b9d8d1a8f501e7ca49d50572c956d5a44bd6c4a5ce13e486aa7de8f9d966b79ff57709f1d52c79a016727f1d4745e883b03780e99a82c8e41fa38267817e36dcff788a104624dd238e876aee9e38aa53ca5dbc2ceee93dabee80484de40c92acaf806d50712ebfc3a2a0bec5849cbc7e65d5aeeaed448718a5e9d0e105dc0336eaa5a8acd0c19f72071e70434a54b15a047154c34ae522fe79206e66d957918dd830345093ce9f090d76cc1b90b6942fda32b80048e4e34f9661588552a72fb0a51c69f6d821a5645e17b443031647621145505a2bb07b4c9b3e17d58e261fa1238d149703b424d35a853e6df7124ee499477099ae5bad6f6aa2895a82830f2bf6e52bd838eb6c189f7c97e462042265eb7b0119443a928425c57612a3b7f8923a2f81aafde1fe1440a5a8f2bdaf3aaa803c39a03aa326256e2b852a6c2005760b46e0ba901c5035865b81e229c4e218ccfcd0424c472464d814fe6c66065b3ff79e2c24ec4dcb4e4da62c5cda5adbca41313c4866ceb1238239824725fa60a0eeca742d249e2b14c44973aa2ee6a36033f861a39bca65be695e7d7cd175d9b39ae774479d3b8521175b13277258df14d915e9146534631599231d6ac258f1433ab5b032da296dcff98ea1eeb3b2dd24953cb967764111f005df04e5874aea718f24536791620c388658db57b1486a0d5bdd9820122e9c292a9e081a34b916d0f22ea1a3189a581709506e3a4a1e0302a961ca29b5cba362a6498f3f0efd8539643dc175463a8512dd898bef3f4342f166cd763b1efecf7e2b33ff0302c2690fc75ab9c1e3b9f9af9e6e532bb03a6e30e0cd76f01ea6dbecf6e9687c5ba321d8bd06ff0db672450355c100b76fec956136d1b81e4337a79ea6dd205c6586f037d93ef42058a259f617e574703f2f19ce2237562c941d11c0243929f685c455a54a83f3a15f87cc4064fdd6702b54696dde0048579c8c89c6a699bfca4d064994c4317bdd2592c5e0a2b7ccab28611964a599e108b65c2f4b671fc7c3938badf049d0d37f160dabac2c10ad05575664fa9b714b2b17ae2cb9e7226edff4a930e7d000fd01cd140307abd64f49c75dde82e02558b27a7f41c7fce6a806504831011077ebe36930f730adafe7283fe387fab1617d6a35d5534920840ed7e237ebd188eef3fb2a4268ee754d81a81eed2b7123872f896d730f293fac77dd3fa1c6848bb4172f62bac5db3a522a3ca7b8db767810817bc1b0537a8cbe3dc7256e6063540a08ba0920b44cc2943f13922e35025fba821fc3ecab8959d59aa0301c8c75501f23e12380c4a2b85d100e06f231cfefbac44a8c7695cfac7a1955337493c8d7dcb8f073d6f80a9a00d07e3b0c0fd405a3e0ef8f462a9beebb19f11f6b41dade4e911cc2e4e61b11d871229b799d5165198d087924e0c02b739e3f189c1f49a8c0afe0459af4af2231b50611647a3af73ed16e0487c8569bfcc7eb1fa6413f98839aa6d74b732291c79124a45292b3c90e2b8af2fd3b32739c44db9460f74a0ecc7fab74b0fd58cc2e4a8178d965bfd787123ea4dfa88365d52a8200d2a4bb807e80b232ceb73f3a88505bade0d7f203f7d10e942138d1f184f1b789f5e4bf03cf74c7b494677eac2499d1629ed8b30d1f33135e856a1fc75b9e57b6aa77120d1da3536eafd39defd3a3f3486a607d29253198e2ab25b04d4365f94175d6b1bf7269ac9aeb2a7297e760c5e25da94dc91a9bf1978d3311c7af88d61f8fc183270f0ea1b68d0bd8703a0b3c66a7f73ce608944bfa3de7ddf94cdd2afc314028b819a99d2b407a12cb4e7132ebee2b913330d3f6724ac2139cd61963b4279137c076e692e2f486d8080511383dc95be3d03173eed32faa8d08783c032b0668edec92a76153a1068c41474ec91e5e0843cafca5572559c90885882912ab84a2f12a9f4f2993a8ebeb3db5cdaa153e6286c4925e5ba7388f1db14c224db8851454686dc73ac1bad240efc72810e5052481fc1c4db6e3072b6d5f746a7b527783fec0c9ade24c03254f2776debbac45d57012ae8ff80567943cf1320010afb823bdbdfe66bb77418e05d3a9f9a93eab866cb7fcb3aedc9b614bcbfa84f5132a468b4098fa74ed8a5459d940186768dd993f91c1d0e1b3242bdff0f6c319b0dcc4a0efaaf36d0c1a7212c1276fd210b7d578e8836709e94f21dc08373878797766dbb0fe0555c7a503c3953aea54c0e5cf878292d801b9d6c0fdc6b03f277b47f9d95992c859cc5bea1815b32f6c80bfe246e816f7214ed3ea2a635328eb09688c1270e432b9d0873451a77598617a789c96ce10d8d92facb49ed8a6a87bd5256be734b7fa8d8b6f5ada1dae4575330041a4b2170205e1104dee902b3c2c8ce0baf83d6f180759b1eb6a1cef58b44c37b86f8e4e46529d58978059f15d5df0d7c2670b112f708edff0958511f6579ad3051ea49c3f80ff9ea0e8a017e7710a443ad3c3db2b4c51969b1b0e26913a114d3e5caa4ee0c86a7866f2c673a0d5cd795a3b080f2429810b04b302ddabe49b83b80e48e8e06e04fd7005083454f664aea3af06ba4466bfa8cc1741518ad0492b2203d3cfb6d0de3588903ef3a9dfaecaab5258ed7df1b573fca615083ec7842e3f1ef1a0e69a6d3e812a9535e839e118428c6799307faebfac95af6e89fc9d1f28b682e81eb05d63bfdb2f26b395a6dd7ad1f6526ca31cae2a857f85e159b0d1f2eca7a585347accb9153eb5377794a214a6a2270a886a32abd80aad67eaa3270aaf569aaccf48fb5959bf24323e09926b11ded0743f27546bb2a63b2fcf72a52f440ef4163e18347d6254cf8851d56c8f70a542ae48e8d6f0a701e8ac25d21c9481000b426be6de4a11f7f2ffa8650a68a5d8846ce02feff051f8b47788423ac0f254aa0187eee792e9d691cb33d0fd8f45bffd2a7fd8257ef2340af7643c818c00e55c0c1146fe9fc97fb7bea7143e9c12d6b2a685d3186b3600ef9aa21562d380b742bb66598d02701529160aea8df49d641d310b6ed3836b004478e33c136fd2e770e5d63ece13705693a5900b4a87ad50054b617f55ba65101152e58661f69ebc6633d1a0eb282875c8cd66602ae132d70da3cb7b0a82309bc66c26cd7c10f133ae7b10a02b2afc3dcd9d8a04d56025dcd6ba988a215932996b420aa76e4d247923ae78d91ff9e38e182ebab0bd1c880dd476c3a781ad91d6449b9ad98190f3861e0227007384fcac11742008121d7d5a4d741799b6dc1cd92bccd18dc6c1e72ef36dfe3f25db6a929accdc9119ff4ffedd8f7c57b624ccd9f7cf0c88433daf5882b929ae46f709b8aab9043afd320e153ff07ff197cb02508525a203fc5e4f68ea0433ee8edda62c5e24e0b7d57b8eb7d9c36efbf779e94399a0c7a9feacfd76d41dfa6f1b9db11af99b4b055c6c53a0ef969e5c18414dbf33364902d84b91b5e59e1f091e4091e9a3f1d03fae2f5562ee4f22512afb6a90767b951aaa12bfc85bd477ed5ec416b46720a40590d49b8581123d16a079eb0c1c85dc0900c56fb99e20226daabea63d79c8a2896632da5adde5a81688db995ea54b0548e458ea3c346b3441498ba0a414e291a4ced41c7001490dc9d7d1aaed39631714640884dbfca240364a212312573c6e42ff02a70c8a576147023efaa2c0cb8df68a75990c2d1c8af846b594dd94509d1fbfced6aaf2f21352f6ace16d3b182deb5ae1f96d1d216d517317b2f6dec7ef4ad8233fa9a670187d8a82c2c927d6a184c4a2c2caa7f8cee9642e58c352eb1bb1dcb3e4a5d6edec821c0fe69a31cc840f143bd3f09747297141ce9985fd70e120dd68069c093e92900c0e62be2e2c48209dca3a511b9e5f29aec0c2985b850c500973b6f66e6ae6eff8c1ca6ddfc21e9ea642af66840bca6b358026b91f9f37fc1a6c577f98003372065fd5298fc0af614e09dbe20d824306defe5af2e96afdb670fc5f28502af7ee72d463cad8b8af80ceeb9cfbab30f6cc12330ed9cbdf5890e1678f4af499bdeeda98b0813f4e7e6260bab85215f3ddd8c07fd48c285bb6896e361e00dd2979c7a704eb3e1b6cf8f29e89c487603a86786b0e4e2cef7e7d085db587a2a0ad8fa216c2041fa7c714fddc066c8c2cd8d062eac3687538475cb147f65c9e8ad05f195ee8c177e0ffa7bd2d1d2729b2dd7f8e28a0cded5e8676031a83fadaa790a35ace81d8daf8ba79bc574eb0d3f8bcc813c3aabd88e284fb3196287a2ae76a3858cb38171a61956bfa4d211d80a8454d5151be86f0c3b183298075a6b77ee038abb380c9897c31c464eb4035c217a031bab6c967611f359c686c6567a43c1e3c692331b87246449d06efaf08da3c857b350a7085f31e4c45070f6dda1e54aa172d6cfbc2f0dcc8b158e9aa270b2420248f9c391224df8537ea8e665330895dc6afeac6786292a5bc714ce4e25c21900e64f8a363b800e6b99dfba4a68d32c516ac085b6809509d78764d002a20a77194aee48901a5a3ca41c64c041c90f13ec8d5e137808d106d2a9bf437a67f3c6b08f2130fdf87092be0f4cb01f83b88c2bb681f0bd9b2970175c863c1f707b659ef90b2d040ab9fbdb802f6047aba87361be1b3892eabc4888a226a35a31c166d119de2c54344cc77bc037401c6efb4d86fedeb26c7134674c66f372e33bcc1bcf18f66cb128527d0130f4b994e5f905e642355949c06f7660376bf96b3f1158e8b7459b900ced0eed29c7af221c10c9afdc1981b20ad1193f767eca175f42c79a7bc676f048e275921dbd022350c014fc07bee7609a26986adff8a8389f7c563e6ba29bd7987cd81ed931696fc38804951fd4f5d9c7195152f8d36289061d24b16ff0f2b8ef3dac153661db9ef117265a2f681ccc54c12595a2a56a7eecfc8b355029cf080cc8d81691946c421492055705150c2c52aaa74c03da0f97d9a927715f03099ea84a2b1051f628b88be5642ae1d5880b82787ac1ad98f03aaa5e685e2b001b3566a34b711de255ad45966100818ce26fca564f6dc88430331e218784479817e10040ba8350dc60f2060856bf97af57cd872ae70e3c8083f8406d28c05ef8ce0c16ca9b72d75eeddf86ae31b6a0b3ce60c1a0dd7bd520a585df6e28fe1a9d65d8d80a2b519a37cad0ebbdf96e79e28daeeaa57154cfa69915d54e2895aa276c72ebf6b772f3b90a20bb1e91481d0872e812f0e7ae56ac0a58ec70cceb1780cd381e8992a7d9ba2812baf784393cc95c5023cb7d2cead801d99bec0ea1b34b708ced4e72f2b88b6cc1caa601148a7efd1313c0b84e7c4310c0f15f08fe8084f21df64299ba7534299b93dbd1613b5be4c001a66bbb809781b6dab07b51d501f4f1bf262f0a2a523c48a51a7f0d251bb87a9c72e35052de4bfa0a8c5df04ee528d55555e1f98fac82a69ffbd7f01868cbce60b7ac63f0f877d53338c4aa46b5f07e3301569e214ecc8e79fa1342f99cf450d478106c6cb3a4d839a1ef304b89bcf578ceb3ab078eee2e60e943ddbf1f9b0667d348fd913cf8770577cc87060849719758d641dfa0fa50a6cde99221f7418c64eb809aa3f41ee122c79d598859a80056d48f46419c6bfdb3fee45abcd2cbb955b0b569ab972839856a6f3491c6bc08bf6a7c39aec0250599eebe57e6ebd5c5b7833c85aa29cb9b805d14cbc14ef13de5f229f156134b3b05a1b3e8c5855e89aa078bc9d6eb3fd84e1f9ad05e6a30ef4c944c21f0b9e60e47b80d7f1aa8d7cee5b8291a3ae13471863a9b47999dd94945b1bfb1f6061608ad6881883afb24c12f52dba75bbec8ed4fc783c558118671de5ba53d85eeefcd0a34064550ebdc6764fb2e77b54cffdfcc9245455505b18fbd4bde15103abdb6887bd9731c5c138b5ee8f08956a7e39c90d219f632cb87e683540cb036b9bd95c25f26bb22e24a1f090d52ce666ba789377d35822f3df53ec57deb4a8895f71251f6e754702c838aa442e3cf2447872cea0f265432b0b83ad7704325968b88c8b0765dbfd78e23d40f66c4d2980823dab1b6dafdffa64bba038ba39ecfa26d870909cf8742fc3c352124ad89812f6a91719b3c5b74d48805c6854d903b415fec0f59fd27266a739a43002a67bf342cabbd80e251cb556d4091d86bc57e432ef76af8216bbe3aa5489ce97617118a4e9bf7919efe0a3a9e554fa4fc183c233aba217247d1c7ef3bc79ea29c9abab93b74e65fe5bba5d07eae9d1d94138ebc917f6eac3b9b9239f710736aa43fc7a5d44416317d127a4e8259ec8f48b6b794cba869914c49118c46b7194be24ab09aba7db0a49bebac458eb97aca986ea92e42aa58216b9ad37bac9884b6b16f871231a326dcb558f49c54519133e168111154404407aad4d18ec939bd6dc552a3dd960f9b02a6293031de867e0a310114ddc51c9bea05f7eb7b7357b78e6e75b780607bd51788449c5143ee2a5370427b4ecdee9ce4056d9640571c59584e83fde48f8b3cddfa152be925eb03b988bf4462c79a06bfaec20fad06f206c2a815a93c81c02e6518d62f9118fd2abf295011ba6d909d85a08be14920db7bdc85faaf84f25ee3915835c5f97622078e11591c27e298b20aadf2cf6afd086feed330a0b02da13bc9d48b8fb416cafd2341cc4999258cd8ad2aec66313c0237232b2a4448483d7095ce1064b3022588a48c06e7acba529e52c76d29d1fc012544b9dbeff0729f48752da7e9a30cd6606b1784957bfa94f9199e4e380a4c8f230a570d1b33d5e0ee034b6d782fcea90751210eb0d28a60375434cb063e973195542ad7c9e6babeab19477a55333e1298c889fe4578349215ee661f7b4a2a616077016ee26c81b9fe06c184650d2caa5d9dc2cb701192fc39e7eb9d3ba9ff13e883fa8509d37c744b4395cc7189d73b2f015d10fa19918a4c9b29d78052d1ab891ea98d0278c1fafa27f19d726b1f64f3e9ca9f977ded883989265aace1319d72906348521a2dd78368e4da957a4993ac78e6e764ae7419dc713def91a79cc08922beff70d19b7a053bbe8dc231ae895ae304750151ffdd94c853983921819250fef069a993513d4ddb2d0ea999e9f3a970c1a029fbb14a9a3bc12c2b9f9d8e0c94e6be4a8651253793b75c93f8667ebe4f6589fe14d051f771034e297fa430fe81138ea5830c7ed1969936e1fd65b5f74d3aa1c650d27d370e2a0641e10688622e6e8f32e7d49357f258aa25723904f6c0e236eb6b23fe12879db2260d03819607e39f4df4cb2f0990079e3d0daf3e08c85d0b0eec5cfa0058544fb2117f12db6a16fab49f8a7ee528414f5bc18931df77814e4968fb8518b7b8501616e75c399ee32f33ae1b0603d1bd9d3a4aa23febd7bf2112b0f196bb8b68a3c06c8b0c0e08a6831c3f22beee3b873c46a711115383aac79a73bb18d03e782d13d493389c778093334f1641a2e553a7f45d636c83a494d36a31886ddf35429a9a01c80fea6a1f8ef3ac442b5280afd83f4b975e25f93ad61c109b0a73c25ad7193c40ea660ac542afb734f55653e85cd75b388bbb88a70beee1b1feecd11acc0192bab54fb9917ab6d9b61ced26b2edad32112fbaf405adbb75a96c90b70795c785aff3ba66ad8f4f9e3ab1e41bc282e31d502eda0e1c834078c41221b68a68ccb64df72ea6a2233b8e44ea0d5e28afc19edbf0d1934b7de0b4229510b638f835b7c39149e34c87222e63060ee2de62f02a59db3ce646d4451bbaff1824e5d76ccb204e081dda1aa9e279291efae4049a831d4ed5c42556482ea2391bff6fd40b1ef891a99a5a52ecdeede36c94804fb19b604a58a601eab8840741b8bf60702dc53f12ad23a1f9ea813f3091ec187c50b501a0592ba52afbc789927f7f7f4d10ba8608c1548d81dc710c9bc22c5096cb3350cdf288320a7b291918a7ff97c7de4b6f50ae77ee7bfd25014a7c811289b13f9fe5820596dc8a839d5285ed8ca7d6a97f2d08ca54a482f7b6498b7eba5fda872e907928bed4daa5840037a7e94bdb7f379fecc4483a54ea28d28f60811fbdcaf82aabda01eb6ded9de4da4345c66424be00104304756db9db375fa21cbfd3582143c8d3401cda58acca6d557cf89131eb3b977644ca1fc89b2ed931f392b96684f1e06803ae45fc4984697684fcf55b0c5bccebef93ba637c7992d814693d88c80014dbefcb993bd30db1d9a53d3ff510dbefc6ed974ecb4de260a3a2a418b38c0d55b695194e10b5e49e2ffd448c800c5499023b92551fa240974b5ea0bdbd2e907d5b2679aa90358f97ebf2c61a7f92b14897f819bd2abc7a423e3d782fe6d8ebe2a02cc6ac60edc2c7522f8d0e41e35e18fa6ec681879f2f13c5d17ef44e755f98641aeb0d760338a9727040257af1d79e716dbe00b28cd70775843e80743b8ba460c8e063f6736012d7c1bf8a2d00832b9ab93b63cb6bc54e93e886897a31d7b07d5bad71234c83fdc31db2d30bdbba7271a2e9ae3c72fc6c5b057641c8d8caedf7fd04ffc72d347efe566501f86bd1cfb329d2f2f019d92034ec9dbf3392f44b1484516a48e7081b486fbd9f83048a58432124a32ad0eac08d2e4461df8934dcb84610c13da6de5473624fd9334eb42d0cd32b5ba9348e6343b79b02dfcad82d2c94767a391d64bcf8df092e26b4594493840d2121cd6199655bba79a5a16895398961228a735a15a06f2f3d5f150bb38a6d34fc69953bdcf44c296e2ec401ab068aed556cd47d2b5214f52727e45a31d0e964b09a3b00c987473f255a186ac10c66cad87bca8ecd6f2e2066b8ccae9533f28589351010469365e2d3cd366603fb2c4d99288d589329891664b0f62740cbab97dba811cd86a98df3703da6f1f37dd474074d4c27f68d9b781a298bfb4268483f040418641d566f59d03034c0678e18218eb748e212d7cb6543376dc9d41dd9c7021f0e807e12ea9509dbc87162b6472fd302d7f1f90bb2dfc6aa8f7d5b9f181828f762cce6f15cc7288cd88d1e168dbd5b316421b617297110686fa46322ce6453d628aba0916e347cc738727f54a0cf1935e25e0eaa2fadd59b6ac2689bac70fc1229a28875e5905bd3ce96d805a47651287a00cd66e970a6c5e4da8d9276ab720aced82b8ab6dedea8090dff8fd2be46d606caec4f7aba992ed0e8459155536a0a5d862a34ebb0caf6f6283f8a9c0317423c351d1415981ca66f664f4da5a2a6815c1938210739b38abf34ed6521ea5c6567fa33680ef7866ee87e64a9ae52841bad283914f94064715a4afe9b0886bfa27405698f94fbb934c6a80b908922c54b05c9d0d05820e6e862f9e70da5f648c08156b06a431f480acb2a140e16c78f00dc12d4686cb07a9e4863da6ebb6c4ff7270ab5bf9c8ec538511f4343f1d50796fd68286ea5055b8980f6d15d777f872b4bcd8aadbb0baf6170fbf6cb017d6f01ffc8ce582a928d7d7f24810eae35f2c9f1e54fa283e636f8c21a4f2b854ac0d245b1a152ccbc3fba7c104bd6582f0ee96ac511ff10fc69533151928c58c1d44ac1b7114ee28a5ee65a438eaf9f435c896336f82d20c6eb170e591c66775f993b96155396aec3bc0610780eda1e5db073119647cd39b62256be6eaf94ac91d5f68e4e106ebf77751c4b45d93d5682f8e3d1bcbe2f26e5dda2030ccfbea49c9ffaff99c5af808834763bf9cc958810f988a81481a3bfd2f022aacd1b4526871eeaf714f88b6ddd4a5952f6402dc9a8490ba87afbfe5c319e07637e1db95ec45620afc073dd77a2b288f54024799e7f1036d32c6ed8500e4b583bfeab6565beb421439802c79ec5cfec2a86efe0015c8f72e56c3dd14fde520227589e6b3384b6d8ffcdf7f543847889c8f4ac26e806afb2b9739e70fd07dbc72a9040f50bbfd08bae3c21967d4727db515fad5a6991c1e75297fa9a373bd9d62d7e57894b91778d623e2616e7c8f2c54dc896f28cf4a07987b18afe17816ec840ccb2f323c449e095eee9537bb83ae0c5beb37408ef7322fffccf223e3b26c593a6c2c7932d2d4a5fef5249133c2481db05010f8f65f08f2422023360888c444543a5e0558cf85e302399faf1bc2d6192b6e57fcbdbf8b4aac1e38a24e45408c7bd819bc20079bc85bacbaa00c333a40b547a754c24ad89523bf564f282522077b1ae46161363d6f7b00c84f7e78e12abcefbe61c9b2b081f4b121da328deca77c326da33e0aae8c77a8c8e638f58ac334a8400d94f5086e09b5e151adef77e8ecd2404842dc5728df970f2b93341a73d432f730c7e4d1375829ef0f93e2c556d9db5a0c9d7f88cb24cfa76fbb82c62ea9d95226a34e80567bdf8c84fbb74b3a571a00dd93935080750e1c1070db53e918bb678c5eff33c0793148c7f484a01cc39bdeb46dde6442b1eb399189da609c6e1cf11316d06a3b8791ab24d330b355c453606608a30642626c163939199342aaf56dbe5123ea60a4185e5de4862a6a311a9378eb328f4b39b2124ff95c3c8958ae2f6cdb858d4f970b72886b988ad691cb6aa5b7fe9cf3ac09ec80d6e7cfa5159aca51f89663bff25c499e9d05ddcf5938556650bcede37d926ab38bfd4c4829bd28a8216f37a73148581160b951559ef7d169d999e05e13b1a33ad1004350c67a1fc3fd20f7416f743e452b85469646416913d85111180c1148e2ea5e8e28bb8a93802cd5c0a72ea0a76eda5201d3ebca6fed442cb6a5302f04dd698c458812bae919fe5ab2bea519723b903aa933d30b33f2f89271b5e94cd57aae85d9cc489486837981966c9efcc94754d17f2eb2a33ddb9ce8cf87ba2cb2c4342fff9ec2f7c17cd16a79272920e26f1e6bb5e73fe94edb018ca94404a0055d828789d512edc62930e5a97dda2da7663634a4383e598af308e03286d988174d4a541d26e8d8b1937b2cdcb5f8b10b20999b12880bc52e54f0e56b0a66b2405e748b73cb1fb9fe608496389351ade22639d6dc0bdb9ab59ca3dee8a979e290c404add05e9d8b86987ab032ffcc7dc5678453348287842e6405977e5c164a04674612d32877190e61c94dd7fdfd123c688d82de784e82c719825b2df724a7803bdc820bc2474fbb46d433ea06faa959eac8a18a95f4403f1e51c9d4ebee7790483a743d22c6bfac155128faa57077ac5955206d370ae072e3c2b770783b3539a6a8a1e439f4087cb225ace65b0e26605ec0cca66c63642b75a6a913362447d2d17ea44a1753b6d94f01819fbecba019474f364b710cdfc9fd75d31caab1918d3074b907e44312214b280eb4e0a0667cf4f385c7db38dab8b5daeddf0e01842c0ded4fb023bc22ce54b8e93d0b28621b26189aa326347a6bbb9860e3e467395c889266252b7df0c93a3ce4e60840b17c3c867e107e65ceaf070f3db76211528b41a46e0e8be26796f930856ee5650909c7bd0e671125e3ceae4dbc917a092d89dd9268e20212f52b7ff060527a1e6cef6e0acc331222ac151414434e99dc5e09976aedc404810e0f24c948c149612a6403b594ae8bcd2918645a9a70142a15a7d36647897e7055b32c42b97d698c6b6d521ebc42037e3c69a1162d4ff1ae4af29b9f34c0440ab179be766a7d44aaa13c3b306f8358a61b1b769dadfec950e3357271bea6f99e79e4b774ee77fa28ca03b9bfd83d8dcc523b88e03ccf08169fb8a965d0b7b35318e9d9b47bbac4d390b7020247294904b8549996b29e9ac267b97269906103bed083caebafab7ccbb954f508942ed5129091b242cd140d7ddc507e34085c34afda3d03aaf8aae893c0f9eb766ec176b1f8494d9ae120a6903f6dcf1b7401306e788133c4a5512225c3ca87b7568109c7b37cfdea4aeb94c38cabbe0ec56aa2f2573855e441a5c803da683ca772688ed73b839f1adae706dc3ec4f3b10594020afb078b965d53d4890007d66a0945e13b675a0e26c2c5a0cd18abc6ea598105cd2f6f870e0ff48063b40c26475dab7d6c6533396f5c10259dbd28d6b7ef8be3a2e98d0c3f09dd8d2872f5454fa40860b6fb9b0e1850d69577d95b75952f0e964a5c99a2b2cd91e3f83803f8f34c9ab9dd0de6e689829727f008c5a6e0447fcdd70fd5c0acf297e923a4f318467c346a74d6f4ed47b00d690a246e52d7c74625aa68d3b8d0893c8adfc57bb8f075239be2800857970cdf45d23301aef3b28bc7d315557ee42ea6d4d3ce5f122c25643382908f14325b85bcd66eb0d00ceb28681efdfdc5cb7f851b88906d8ddf16d550f26b4765da1ca7951dbeed96ce48ea295e6cf041f175e11f592056580c053e02133dfc4c6d77359c32b80098e37958fd23c348a819b280e44d2ea9332cea8ee188af16f6f5a296e723ac9a086adb44275ba17675bf35378290b811d6670109356d238c7b271702c3617c00339e9d5c6dfc4817705fdd1751841b3d796be907ffc96e7b3a4c8b9babbc20e3f45691cfe86ea486b4d1b504de1bb19542e68287e0639ec7658a7238248a25a87f7b8b0b5988af217d443bb83ac4919d594d3d310681b104b768efcdf2f6505c5f5ec4abac010256e8e43a852b877516f374501606efa80264da82c9954dd89e661a6ca9f2e8fd195530ec24b73a4f6dda6c833adbc014b6e946cb60556b903ad7b74305d10a70c4c1994b89ed95d89ebfbea79e208d0412d9ec768b5f25c58f7f57a4f616aeb63b64f7a7407cf605d03339a20cf38a7d5f61608ed8533100f4f44ae4293bef1f4b1fbd6e2b48848aff3e8b2e4961414882c5749b175bd72c1b929c939695e1b62fe6a679afff877174ea6a85742510905ebd6c6273d4c86a3163cc50195df9056d3d37474e3f41a0a0caece713aa73186184381c8746d451c9982cb8c0394a05a5eb410dff4bebd49c700ac05651515f9cf1ac44f02197f18224008738a53b2a0842f5d5289443d220e5b98800eaafdf34ce380dad1b680a1384571449cf40a4f038ec8e0313a50b04d8114b46d74bc54fbed36af3c5362d53e883571783452cc46c8faf88d8eb693194a430876b8d0bd7ce22545d143f54eb204dfb97d174f23cd2ad9b4f368d2474e7e51e3241c584733052911b9d0b4cdc6c2e10f64550f3afa5d3647fe7cd397f98f012e99b54bcdf91f1c31a50145451ffb2984f0523279307ad3a93ee8de8deda792e37892dc066d64e1a8ea682b1a010aa66e6d63c49808210f6802fe9933cda692e26578739aee53b73428a0c136ccbbe01ad1c4da52e46dabcbe609a41325c9dc608780a20d49ffd684a2cef8373eeebbf78c2a9a1251e31d63d8f1a19b180f31443069610878b13dfda6f87df763bb8edbd9e7b21e30338a6aa5a6661c5e43c7a93e9c36c81276a0a37f88109e91838743352f2a6715aefbb057f8355ce7effc4da113bff6f84c2a1dc624070550fe02508ad927e683c0f7cf04114d5338b0484adedfb3079ecc208fbe9e65ab7c88f6c91a221330011feb79d34f49126bdd9340585a236014a4a56b1e17e4eb6a51634a5d7de4c068e86fded6a38feffee4f17275983cd4c0cc33890ecbe76cbf68e13abcd1c2e426d312c93613289573099ec3226a9838212d0703bcceeb253f7e380d6ca98ada34be507166b4f66e2ea11a2051c20b2d8f13d6c1e96655d547892ddf6ff27d485099d14b2b3ca4ba762fd67defcca2af236c9c7e5c38f3deb2bd889ff77016c27945aa8fa487b6cf5e09e5c42890794137cbc33e9101c77311b12aae6bc98c145bf7b5ee9607ada67715c95371f2a1b0415f9626c6a19fa4c7a14281d4a98db50b6c1c5bb4501c286b3e896d103e0ab6abd8288e38b2956449484a7eaf8158cd29f6af42f46aedf5c7468109c9f498069cc7e3fa40be4fa8002690976d5678d3a0e49d6f518ff8643edb135001b870fcc9409f84c2bae23c1550008225448244ea51d6ed0c70c72e9804fbc3b140f227a98dd5ecbb37899b1209da0583b3d0798413bdb0a8e65bc2e500d1773ba4deb6f9bdcfb80cce86ec820964570d52b0d3f5415bc6f945cce4a7976b80492ec03d956140ce4c99b23c45e84967ec4dace7b76012dc81b68c590da455edf2e3c298ea688d43184499f443025992f85eadc8df9159a9af10489f8902d340a443c735c16e5823bed962ed7c5f496da9ecfe9a85919246fb7c11e352e4b4b9cf88c1f56bcc662b8c7159761d8d8c1b8c9dbf085686d26c65a0a3840d8d925329654a3d1d1f6c6907ee45ba8d85b0f1c573612c5b007ab460fd27070a5843a60554cb86fbb3ff2cecfe9dd826a396383413dd8fce51a571dfa5ba74695689afe418ff0415334eacfcc43134de5f3ff0b7008257678ca71c21de251180bf41b13f856b5c32b8e4cc1b65342e258233a878a982c31dd7f607f492b6d03edb54d99a80566c288248c0905ec100fdfedf36e7ca26bbac5e5035ff97a6c16b6f14939fd29db65f8dc97788a65cec9429c00e57c33bce7e645faf802c363ed88a5c95b9ef548057e5dccb4071d971a258610bc6947a2a273bb7189aa6e067a66a6acb374fb2fbab0d0b7386691f842c4005532ed2df61aa4b5e3d11e16e262f6b6dd9927447eea0b0ff9b001fe2dfc391233efea1edd4741ffbf80813cd607bb7bf69c2148f44079892266a179c30484b050417536c6f50b381eaeaeb52f6b1477e20f01d7dae0a6927df8baa454b54167f77c2637ec278a6accd3add36c152b4a9f69f6043815c7e9ef88e434077664707b9995b90f11bf12a8a1c48150300bc045b3d1e8b54ca5ed56fd412cc8845b4261d2407c6106fa47453d5c5f0f234584d391661586d6a32eeab54862a6c268752e8b81f44543e43017e7f163c8916cf8240ad5a8ada5f08bd435675e235224c90953e64c7a82f3467797d4a168b4a2de3f8f637d3f86f8b38b77efad5381c6a8b1c1c77c244b1b496c63eebbbf145bc90f4f86cce5fc8da5c3ff65aedd2f187223d43b0114a648c878c1bf08308ece8f696117dfcb14de4463465d52aa9000628a8efb590aa8936d7eaa44d58f51b585774d38a6ee1bd6e5c068635bdbf4d185bdd440f1e08f960e77d130b1ce6624b1b66ea7159fa79912c80cc931c623cc8d2b724ac68caf075facda6eda848ae684cda6567ac42b085124881f92d2ed11a89abf2e7973934e40777c877ee82dfa719d02526cdfc4685eb88e9043d8fdede75a226195edc27aaf379180ec7ac12d9d75428d5a70a8a5c7329eb6027f744b039e6bad55e980f9cad2dc76b2e2a0bd3846c6c0750410aae226ce0ff22769e1d4ea928fc2f90b1a0e459ebf446c95c8a26c98279c19fdd50e8c92435c758ded934dc378b1e6c5db26cd666cb5444ba07a2502aa514559ea65dc3f0e3111c15001bbf2e363caa358ca6cf33e9bf3f15774c4332da04aa4735e99cf9284393686881436b334e0ae09720f88cf1c4833e9d3ecfee81febb15c6f327ddef864128ecef05a064f91f66caa336cfd30a6aec5c55e5e637159ac02d95dd64ad344c1c7d581a4c6972d060b25745ee65babc350f0b21e0f126c6f61b881700d669739e51388ba194fe1293c534e7bdc902f72407336e77357b4d58fa974eba5d232e4c9e48777026108620826486104d58a0ddc2378fd7356bf28ff38106c79657c30473f754972324d5e663f0567cf4e0b5033590c9808c84385964978169f129482138931360fe46d62adb8b54e94eb08b89cfa73f4f0a123753e048fa9ac26220a39c45eade882232d5e56b165bf4af7738642fea88d5fe9a39dc846515246e85b1870eb1f28000c100e600129e970b9a045dcd31c0944ab40a7d3277e8a76160854af1e839d860d9d60b61bb2584cd39c4a0632c5c590731004e4d4ace91d29ae7dc3d959e1411d2057c6dc8facd52b30c85ec3e35d95afadb043418dbaa680c0260f35a186a102c76152b2dc4776d99bbcd984c08b773c91976438fc383db4a64dbfc982d8e858b16986fcc1fa7c5fd1170ff01c65a12f3d92accb14d93f71e22932e1d61300040611af60de2126c765ee132f92865d15c68318762fc1d0a4ad0429602ceb4bc1859e31ed3f7cbd5ceaaf1c3da24f190653d1dc486026b5dd1d946cc85eb81928083eee8481bb66bf144043b161338f6ed10664bb56bd9e9fc03ee2710f7c505b7191b88f8560bfef221f53c39f9379d8071495d6d238046dca083f5bdf50d76a2bc784370f30e6d0b25a5783b15880ba49b610c61e1cea994baf31e58dd71c6dcffb3f7576f87b07e5017a833caf383507edd48a0ee75da01b0fa22628697d34ded6a03aa28a55f55399914cb42dc5aac4cf5e3326196a021acf6775d5507d1f92154fd9a1bceb1d8bc7fbc2366973f775fa729c9173bbdff7c8d14a082a40dcea71738c161dc7612fe6b0469662981caf9883c702cc8693512d52e5df18fcbee04d05887db0269e4e3818ae53c5281482ef2da5a13d560b798e48052b1a34e4f223a6002c06d5d6b43a8a03c17ef2192711aabae0eef76f658485fdac14124ca500d0c60b13bcc3ddc12b529d1602c25dd358ecce9232ac6b1f5c5405004110ec8412067b37ebf3b9b9695c727164789a413c80f7b09d9f8d07557506368fdfa433323e4de8c569130471ed5aaae819279740102c39342977752fc33455af01a76ec0dd3de4a0871156a95aa08e9c1aa0925331958426e4de214b7e52ca105adcb342b970f4f051b10b46fe85d16b04ef0020c7cb714202570fbeb913b478f7dd1b30a5bcc8129eb44f12b3a9d93a00449ec7e345c7b304cc2dfae2ffa91421695da4b55a78b020366530a1fdc654b70bf22b2f078f9ca14ab7fcb4fb18e3bd208dbf87c5fca81bbc1c53366be8228e14682fb53e09d49d17d5cbd0b026d42167b8283e1e2f64f2ae7a2c4a06ab50661b4a05014a682a6860e5bc85abb1a0f7d4e7cb05efc6b25545fb640b49cd5610b0a448b44a7239ba723234b1cf0cdd1d4a5cc90f33ed4c290942565e01e87b78945d42b08681269e65316a66fc9bf95a6d9b4651b584c86eb3f2017167fe21e3aa56e542149088c01be219958e0aeab39936557f42ff6b37063f0e069f2ca1366aaf10c15c34bf807cc53b09487c2a26d41b1c706895bcd0a108684622e8afd0e9e7a1e8a9590c0eecdaa152a944bf8555888f505abb6095982a4cf54f94346fe4609b8657d705e168ea71df4ad348d038da04941ea11823f286450880da7cfe2975aef13db45ec65892f137459dc47e3af57aa39909808d1816c0a034f8bbfbc74ec36a60141333f8ac2dd044783d86f910409c4e6f53a1ce39d0fec4c47a7537a0b3c5453479589cacc5ef7c1202f01294471307f83047649872d4560bf8dcccacf206e39e9c0c39501f3a09b3284efc9b91cc6e21a0269c8fbcda36d5b640fd4587839076d0c87cb19f8b11bc14b1aaf6de407c14ffe9ed43c6386f8c571c877fc1dabc4ed2f69fdc0137779ea93c70ef7b4c9f778689a36bec6de3800bf6e1ffe9a82cf70a392ef28e6f49825dea02646f886031e0161a392acdb231fd5b634c1bcb37159a434cdc6d73a8a9e045ab746037d7bb350c15100cff802cc7a99cb3b6233416c7005169969207f578e4c8e832304278a8c58635828af5de6bc22a2bbe19f048c6bbea0c68741ae9f6e0ca4028419a2fff6338102192f69df02e9ee9727e54c3db8fbebc45500d136697a48a596a829c0d1db0d8e83b3244bf01758dc082d69de8f16f40d36a26479698acce0a8b2a09284067a40447706c3152a2153c01c3ee38b63ddf9c7cde007a19a95c4727db0e9015a08b264f9e22a3c5b3d92a05185303207f034c3ae43dc2f4fa0f00d4174eb2de51c1d4b72f7c0bdde7e6b817b7bbb0901f3a4f1ebc0708c09a68a81e74135c336000a00ef41dac857947accd1ceb25144addd5d25c68585cf28199842caccfbd0cf16b3438f6fe2268b9626d00f8f33f61d30777c5b23e772a4afdb54ee923a192d626ec6bb44168efd609f7e8e538307ca0c54b0ed3547e05b1fd72a37829cff49b3518441ba9f690640ee2af846cd07c705797220619f3fefcd58dd9ac3bb9ef6e79f14e639403d4beb48cd596bf9fe3a9fdb571695d2d76af619e28b2f07d8bd59a218ff8300cab447fdb83d48b092a95803598a3ab3765dbf02a306d775ccdc185fddbd994b015e8bdd69821cc86dad344a2082a307c1a1ec07caa1b9c543829ca501b9e18ce818d940d4e132d0092d4aa19a00c441f8c3270eb607125199ccab15d0258b0f78cc68dd14922bd297f07ac4f66bce0629502db1f2fdc77d144e18f70169a8441be6e3cf4bee1f34a4b0a84da5a8b3d5df2e11876f248068211d350faf991a7cb6ea55d7080164980e782a5fa5e3aa540509e6255a674ffd434480dd572d7a595932454262221cb6ad66e10343c3214dcede051410a3bf5c5e9feb05369e3459dc0c240334faeedc625297a9f1c3e72478dc548a8227881f9ae3913415497746f64958e3597ae2c4c69c0728ac9220501da99a9ea93b383dcdb5856f98092b07044b1c33c35974229b2d6efc9054501f3c1875683e5694df301da6d093766f5a0955586801c3fb783d69e604584f06231ab067e9e43e843df22dd1166649e1b482a35700cc70ce433befd522fbdd37b270de386376e867d646ef9f93541bd55c177f5513dcef023bf87623e67cb8a13e6e4011b4fd2d46c1e9367951007a9eefcb1b1f714b0d60c1cd032053cbb5c7844b0e7341c8ff8953fdbcea625b0f3c8bc33cf23d9a565a328b1c89549c0e01cb177e95445cb2f0739615033de43432e122d565c365f5bc6d827a524415acd63c88ae9ab96ed1e6d87cc0a87066851763b0a0a64c474566a75780bef4ea1b02419cfbb0871be1ebdd85c4cc8d3779756ec888e5c70b590db8bbc2655abeac642a91346b5d01ebd941a14c29a922d4985022ade5a465eea0929a74e1b9c3952181920e59588e21d9fa26b7afe39dab0e8e16a8c4d7e03e28b5afa63bc5f8b8da964256d54c17318c546ca4d49c7ee5dcee8a803dd8ed5ec1a897ed1e1b1d3e81eb92d12095944ff8f937a91295f941daaea84e68ccbab3c41c0dcd2e92dd0a527dd86105def3cc426a0b68b3ebb08df68eae13d21da512b019df63ce573c61353ea029860358bb8b477069b35a0acf66bd7900ca65b4a6ade12c83cad700fe9b09e14ce7aef49fd4b25dc6ea1a31cf4df72c9443e9c6297ae40adb1cfbae2b39eede0248691161ae141ff84b44a874cf358906cf440069667d16e4bdf90f1837fc57cad32e03eff4fec2a5bc7d638597015df8cd9839014976f4bda5512732607b077546b57ab243762323397d47a16f80f8ebf029b54355e7b506d39b46e69c5c4375f21a5c23a866f35d890c51200ced73a51756fc5be881337ef401f973748e3ee5b802a4a2b3ea0203ef6cb8728ac3646a8b43aed98020ee92c0998e65895f07500a0d2e2b54a6605fe1cab1a8f5a70124d92959b04e0f1c80405181a593e3db51de6d262cfd1003c2ae9c8b08b1a3034b064262f31bb35e15e97b2883e935daca1ae04c83bc44a9765d86d46e2bc3196c1256da9cc7f83226e3dd1a1b95bdf7c0bd3326c726c8f0ff1dd94a465e4659fbcce65ae649a08eda0d48b2d10f77087c13a309b7a257e59d000fcc4e715e9a448bb4d8a42629c7a642e557bc90b271044dac22c6a2b4a14a412756a5f2fed2856831f3214b997b45a807cb6dd085b80d55471b27524832a693bc01aa85e3aa47b19a4804e06800d94d199bcd5c7466222a92e2de3a92c7ec2d11b9931092a629f1ce5c28d5ac1725983ad812082d3cc4671b78f1d057c34322dcd838dd7edf921d478e6f6b72dedb3c416077f04a4f3a02d05921d2750d993880c845a6dab14304bf43bc5c0348fb775ae3045b7cbb70ca6460e0fd5eecbae7f2232d5dd7e79d1e45e4498076f3f36ad1c349f9a54a2e8a899349e7f867e60a5e0f458e012a9474fa6542d7389355b3afb66a34753b206b30bfa7c63366046c623ae00f6b66ca81a3977768f1fb425216435e7def1b4638494a9a0344b7948d0deacd055cd0cb1cbb26cdf79323e1ef4d58f089fd3dd0526c10f0f80fe19695d4f5c4015d3225ed9b22720ad062ef7044534a91e8cf55f8ecdd8af25d2678c88345cd9b49373522db8c26b9040db829bdcdfd67892a12af18f52f844bfbaa258884c9e108e34e71a13681b19904fcc52f3f9123b4c766f20ceb77338352d54b8d038553b8306a02eeb8aa3e47eab8a42127d6ad3ce2ffccb841b43db956a8e247d5bb6465cb2d8da71cbddd66d01dd4ad9ebef4dbbbc2afd5c320115afe7c8e1ecef978b672aacbfb5f41418071cf414989452c704cc262e9dc30132530b8d1f9d724f4a7542e0c7ab84a336c0886f820d85b86766e68bf8d3c9396c31a56a5e98dba0010a20c90c5133c3cca92eab080141b6342032656a91a079a3ed6ea8206ef27958116cc33ca276fe225f02009489c715c0f5df3f495b716338b0683629617b89dc1ebbfde41d19a3beaadb7728b69cd77de8ba2f44acac0826692911624648214404b6dc06840ff044a307c75de4c2ad6a7786e882d827c06c958a18a56c4d7f1d973e89bb25e46fea3a5b131c7934418ffd1c372503938045e27713f47bd4bf990f8590f59c1b5c387b3630c78705e60447c97de09d615c9e83e16ae77ac53d8cea36ace7db40b881e98c8d3a6df6441602cc693ebb27bb6f788a58b76ae42ae5a3e29d0ed409d4e477681074727ec5bba666222002b72bec7c3bda6fe73d59a92d3cff3706a26e61030d64bd3af7501420301a3cec2e7a5dfc9e3280f209d447386a4b65c603971d0f34fb4d2e71935b83cf82f7db9a48302e1ae7098f57948e90d018645e1bb1300df90aaf2c845624e9164f2fa7b26bbe8d5c7395f629650539572dd083cc776f94aea3dd7c590a88af53c289383c80ce7aa92d16d15ae860de8d2fe87e48260727a0846b97e143c6e9a50aa864934d090d2fc0a0f09ce68fba8b3d45e36155b12f9dea92161f1180afa9d6bd1f51346bb009172e58c10bf57a8a64caa5304a2c0aa6a58f184185a81afd53e6a56dbc585f422def85ce8b9b96fb52bc1514b21200ee70e96ee6c4a0d0cd32bd858c8f694549e76ed57e3baebb9805eebf70160ec8812820a6f1498be3d3839effcb380b840759ece77264c7e8fd6dca7541659a5c017bb9e77d00ac375efc8895af4030d325218d40c52a7211481b61aecd36e6ae6416a32f174cbdd27a844305577cd95869e8e0d4538967e259e355b0e6da27689763128f14e690e48da6861b59ade51d8ed46201f944a2be550587d455393f7345eec3ce624ed970c197bbe9469c864b4972667842b89679072a896ae03d9310b17050817b211b36f841c5cc08f129b7a847f12aa55aa78da3c4b55e9c01bf81b8b1fab4788ea46f7cd23176c90a576919d055ea5bb4e20bd0ea00f727f6a044cfe92c366ac4ef037d931fc67abbe570a0ab8f861b050d9021b86842bd8d122c9278f8a0359015b2afdf8dffba66e1996347dc3825ecf6cc24e74688ae44f75fbad06060c26d34820882b8de4dd9c764a08f4029ad14d20ea5500e0b1126c3db9811157f06c52265ece1a066047744142c8ad1c73a185e4d51c7b7bdfcec8aed96f938d07a5b813ebd694a46c8de32d096a458e8873d1bc177069f0eb6d84b1bcfe6f4e90f7296c4b200ebb6c41b7d836b25807006aee4a3bb4d6c616bc10d724556ac413ced8fbce49d7a45d5220e3a181b1839c4785c99eefbd165881952c2d0d62b3281c2805e858e6320b7105ce0ec9defb31780b2ba43c240fab868ad2120697006754e407d3e0d6b76b0a9a0ae176f5521c30e8c151ba7d73ed31579c480395d7cad2dc4dec534124384cd6bce02069ddbd73e6e68ee6849440c4db29213ebb1c37dc4048ab1a0e85072842be06ccdaa411b07ee68905ce7420dedaa97b9d4deaec425243899ffdaccdc16d7953461d498039c42bbb7feac88f984ba391148a3addce08141020d8f82522a03f8b08c035ea1c36d1e60b79af9869bec180a2a536a98ae86b252b45eccc829ac0860013d58e9183569468f57913ef3415809e12868bdcff4adc8ec02fc524062f47e1805768a61cd93a52cf22b7796b8696a990d474c4708848a2ece07da5a5c62b32390b93c078f249c24a232e55025718f3832f20cc0349b31476479e7862e943600c8f872bbbd2172ada8d64ec4014b9ac8eb47c1a0437827b98d124faa549feb2a9ca020a6e3c1ee34680629c52e063b849abc20c22fd19a49455ba51524a35d0e399e93234cdc74f6b0f1915db745e327b392fb7d548c53454ef9858400d1575d7d1634f1043f77032dec99fb48787758096e17b7843028d1b945c6fbf0c002cb68abd5acf4dacc7c319247f1ba3dc443b86825ef168e9cdbe8875cbb3589d9e564d18b78ef6c06256d512a829dda7d217d6ca2c817ecae6f69b29fd403ef17a478dd511c9dcb91d08f42431c8db31b9b7ff273dff6099165403787e3ea46f7f27bba07006c2ed582f8732aacde030e8375e5e034d79874b61acc97bc573617434af8bc252af07f161866b91882b6e8a04252e6cefd1858242e62bcd598dcae0b8ab3982dfe1432bf506cb544979b4924dc049b4eea7d1226d76850925e6d6c7752a53aa7c4ef65d0ee9aec1a7afb38acbc9c8f51d453e504ca7734f70d3633f222bbaaedf0476cef43e562864852e6f885cb4e2bbcb24c334cec13c4d2e13b7dcdfca00835d1c3680fb1f2ee689df6c89894051bda614a55d872fb9749e231053d608098467375141a3e60426098c7a8df994b5ae88a8a7dc99df9abdec059f18d6c151849719a0adc07c3119d199ba51223106e681efdd4c48884987d63fb7d9024da8f2fc2166a960aaaed7536db49b78982ebf0de63f05016696e5ec9c703cdbe06658395172063c3c7df3956aee5dd466935714f4457b8c10749c6651b45331787a1c6ceb3729c7536083d447258770c4f2a1c271bed82e4599747f5c81debcb8ca8880903a22ce282c5650f297841465603f853ea73e91a8167b005d1d4c6b4eb71538aea30d1190e41335ba858dad315c678a3cab54c3247fb84b7fc40c6a85bffa684c02ec60a7176c03eaf12df7478b2ea7a8d0adc6355950f15cacbbba5f359f43eaea0899270ee589fcca3efa0eb324fdf0ce95f0da8dcd06769463735650463c143698ceab9732d70fb85f6751b9c586d6e5861460fb7da43b0f47ccd3386df07f473410a5319dcc52f5f1817db43cfa00901514b492c287d311ce10180f53dce6cd9b677070b51c817f539cc8aefdd800f01dc6b4d7db3e4f4fa0d9f848b44e73b16c0dd2bac24732281d4fd7ea99a0a1e331461a827a05eb602b6b96e617ce8011afd3bb3dc942b1888b1b1e79fccbad4ed7714b730b03076ee3ad295fb6c7390cfc4d7041681545e03104141a219deb04ceb65c583f891db56776063521cb33f5d2f89ddc36a4a3367d5602e5d8b150de0f4839e8ec1dd7afd27a2162acf8e40eb89bdbdf523cf0ff3a00c9e5edf39125bb466121ca67ec905593852ae6b79fcb02fa20fe44ecd9f8eb010be8c1157b06e07eb9dc736590c2fccec0af8afe8f7c6bc6d818ed002843b8145a246047732b04415a318906800083c452e9ef2975fc8c3b38f7d79e19d063b7fbeda2dd129bf857d5f3136f1f943bfd3ac95baf4f24a17a451fa711ac94a568cccf8c247fdc964af19c4023f7c8a498dd84aa51d4b9e5e3e19e328d6e6ec5a407265966eb1b3223bfcac91e32f101da601907d9b34191317883b3188e543bf0239ba57cf9cb609b71768de95f2085398b7d8f628e07e68c8772c1f78a6400d30a2303982f51c0c6d7927a461d3192882256d75faeb4f3ad6cb2ba6a7d87b4d5145ab532836543ee0463e41a3a7929a5c80d37a03662f5dedc1509f6bf0a6f440beaec1bbea0f62df8ddec8d07df4df8e651af723b8a15c9bca8a1fb31c6a93c3767cfd751c6c9d67e1911772068ecc980745a71b2acf0c0fef0613327576bcb7cb7cd61a33cc9c0f6f984136363fd8d67c681cf80da6823d0761c6f2353b73ccc6287be7017d982bdb6d0e176c69338bb111cdd920ef91dda30eea172f44836898f9f214ed5269382b3e86141cbf45096d830ae31efffbe5ba48318bddd8556e89613cf91bf9362a3177583217bc19fa1c8147db4a5d91d086c803f033aacea4ed0ea4ffa7f4927b32b0578228284f24b1709e2e0ce009582b71d8324ef671f6d7d27bcdcd7c325ddc61f4fea0d19eeeb67283c7cfea86f9d51fa04030e04c2f399b36d3ec4ae7df48c1a979a6734fcdb11719d3f304bb7cc0549d377bac76e01fb254c6b5b864d3a95066fb4faa8c064b26766b4a0ca3ef44eec47b4d29a169e5c8fe8f69ea7398d4db00a945bd61da929387244ffe1a62ba28fbcd9ef4b507eb0493c1e9e5693e0578cf0bba287776cdc64b8934bf7b01710801ebb4bdce811fcca629375bb9034536a06008a4e5f2bbd861b33a75185239aadf71bf9a3c29676c08d844a6b57271724fb3e4e0a649e2493028264907b10db7bd5fc1684b9bc2542bfe5ba20cdd541bff21663e40fb4820c6053b2734a818c09052e7b0b7b2f37f2eaf5e5f82d8744de3a7c3a7125a526ade45b16b4f2dafe026e11f1cdc4de1275a905319683d71248cea2b8a61c4925cf7700ed0bb93f6d33fac4958d7606d4b1dd8a0142f3de46532eaaac2914177640863d436865177ead0401882680ee5b5c125ab55a080deb91f139164b4cca3230f3870efaa82dac42d546de35239402317b066a01eecdddd2ab475b484e2e70a8d2cc7aeef4915fad82a4a8b4c936989b200bb6cc2142bf6783fad5a78b86072c2cccbf395400fc782ce255489cb7244c868f8b6370278a8d70d14e2de3ed341ec2ed26cb866a486d9e69c0e9c90c56d23a7b0f4b349b6e1b3048ca0546c6988c721c244a8dd042165e47c2a253c3fec10fe2844ce1802028b4bcd95dd8610e65d0dad9c436d332a6318c317e82586565a397f0ba4b789ac11edb475862bbf5bb6917c9c96b04164d3d6292c330837a834a6e2f7b57d8771858475b21f775f023bfd536a26463a61a87498d20e50e3eed2a0067797508a4f54549a87f3be837f0a1057df718c62a6ca61561e39dabca8d7c3a5d792c7834b4a212366fd7d5be5ea3c3aa22190534f0250d713aa3fed7050155df8e8aac6beeb9b467e6508bdd6d86a58972f7ca6c84f10fd7c768f988de46d71b651a3a2269df917d81490df14a3da2c85f38d29d6f090c9576ec5185bb13b9054befed9fe75ec15dc1ca92b7b6fde2f518e82dc15684e12882beb8e21ae586a0d580089b2767166696879cfb41ea6ee5398df1b85fb1e019657c8c96279488d3eff0246e928fa51d41140b4e5671ffa5b717e094ccb9493077e8436980ef410a963433a89a519556477fe33f044c62588e8b35ed4b551ffc2cd395883665015cac01f214618f4f222e88dd58e6a6621f9bf8b4a83b69cd769ba7578005fd04295212c4699a41ca3320216ef2fe42df4d9a2f3e0f5db8f38d3b6ee6ae0d41ee8189b0c1f77bb3f1a470a629909c90b3e4aacb50bc364f1d5a5931286bf29e5dacf442e428cf6548acc0260c2b08eef9ef9bcdadc2937b1868f113be22e5ba03bd590a03c6fb39339a6bc3083002a59b49744442d922abbe90beffb304d2f067039c09819f412c860638401696fb5304179e6b0862ad49446ce8e3eb152c3a0ec5fa527a4d958d0828ebd6b07f7eed2ea258eba43e0caa3b65a8300e34a1c5b262c8cf9912f957267cd5cb4a8533db128ed4ae4b8079d9e5811640517718f900df7dab14232fac0cfc0e13409664fdb5632d6f1fc0920024dfb00d1100531a72eaecc558287fedc8b7ebe7b5814c3160232974a4b0b693ac2e50f97d961d603b80d21c105a99dbe8787800274b58ac13ed633746820d7e71f0012926e118fcdc00f38f3e3de40b2cc745295a329813c0570d750cd38a8bfbc948abb4ae600ee29fc45780fa98f65bf22f68a4b71883d92a31cf7d7daca5e87fd90db8eab790cdaf5656cfb7b3a2986e9bf70f5c7dc5baa382b6ff916bb096e38594bd5ad36e98cd375baa3282cb3a0b92fd1fb28cb7a7b8363c88dc5ab28549a1d4a5be0d266dd2ce572268c15af13124dabb5ea606773be0188a9f2e5618fdbc151177ce6683d0d1b721f183140832bffffad1885f690aa20e46ece3466cb3f320bee8dc4039015e40a7cbae7dc6319f7974efb604d2bb2e050c346e55743d0aaf074141507a74df037d8e9d3d4542f401669c15ae5fac77a8bb96ea0b17852e11aaff88c1de5cc4d8e4cd48ef350069183f189b7b277232c881a7f80f39745d9da32857cf50df53fd736b86aa76a12e4c85a591a41ea4896ba4441df56c715d910c0e80d4e2a1bbba16dd53788eea52bc31a9ce086f1b300b0a8d119370437151530b2e6d6b3318d9f17834b38013165258b98b707b8a94999701adac3a27280a9eab39d3ddbb271a43825013e209c68c59aa5eb3b83ee510b2e9667ea86bfff5ac36a7bc1ad57a1eb37d783377c0496fbe63c4c64243b9cbcd48890b308b2ad60ce7ae29a79b79d60674eb583a19d291c6ef09e3e2de24d585aae84421ccd46a91c7e30ee02a900941f5b3aeb421019ebf1da8c5078c0d80c0d80f8a708408ba062b0d5a465635b4b961ca9eabdad8c58b51c080ad8b5f0c27b4bb7fe85319565bb6c6e5bbd6b2aec39e610dc035c208e129b0d35425dea1e6d61ce9d52ad66266e951fdcadf876f38f1830c67a1ea60665d307469d87ed90876772787b894208730d8b056369dd65d948d29d7a28a61f6abb35ca556c2ca845532660a134cbc825107c732b72162d309f029abe5938d40411ef9ac45aa68b1590691ccc0136909830dd4140091c927fd72534cce04f448c1b5cf216fd4188344832dee3b5fba0520eb22ec4380f018055733ab1f71e294c9b49764cee7d637d45173060491484543b23a831f0ded02f52cd10e1aa38e97749166d6b0b522657678d88d16b6617881663d8d1dc5d48f79c4864811da3396505991f10fd480a44cad4d1c1f1b4c817954af87262cdfbc0046f1d4539f05c3ad1ae9b6b9672eec20393e4b6a82895f7d8ac4f61e0f6ad04e438861afe115b0029c50e0b31282bcb455972686635972b37979d946dbc9fa4e6a5436f78ee64f6de93589fc703dfe90a06b72c0cd5eab9b20c43bda164706db613482ddb64a5607f93a128921d54873dd167f4a876c29c308ffe9879714fc7a913adf082c253be2d538648062c8d16eb97ab09e475c8ebfece837f251c35bb493a5fdb3a157869e0ec0e6f09f301f15fa4c8d29ac71177df9f91da6289c40f4aad75b5f6e40ed41d9de80ba3a1c85554ec7c6fe494b361885938d95e17e7ba30e28ff8625f9c5ddf882be7e282669250ecdd9fa7c9e72e7fd419510c895b12968d60507e130daec06a3423c277249af5f80429c8ac2bdaba2e2956e99c59115c6372bfc1fae5c0f6e1896ac0cf4b1b373a0788b680421418341d76986761e221083e2fec2dc10e9cce25f215837940578ed00dbeda0dd09823cb9d76ba6d2d24025caffb880eb06693f3c48f7d6ee978c701dd24d1601c183d58962fc588bea7f00b57e828ea4a74f4a90a88b23d2f9c0d6cd0f04111c0c6c316fc698db72a6ef005e2182945c0bfe3414427e03960bd985222f39dd44a8cb3bb31a87e5031c5c4828f5134b4274fcde13ec128e1458f2038927b322948dbac38d76f84d5d77584a150c10388722a78fc7f90e04f1dc4693664ee1f46b403a7c988d1980a6960ee939613a0f1be330435336c9ff093669a2353d69c0b2c8b2fca074f804b0f6dacc8bc403b750ff17b524183fe534d1d6c2aad06a9f5d8776b8b2f1fbfa65d3f491d6246078c85fb74076e72cd4db78ca9f1958bc8074a1e6d6f146f3ae9f88652bd77aadd7af11aedbc7028480927aaa8a237c4dd76fd6501536605927b945ecc4ffb5554ecf167d5a8f58724c8f98c5da6fe6985e3a6e7cb449e99075cfbd6f9c8f2cae047ce3b20efdb3744ae93d891c0be7168365b7ef4fec4bfd8c26654ae7c79b370e9edfe19383c4bc5ed4a41c9ae3a9f92de6f895eabf217cc5eae830bc0c67d606d8fcb5268b8b3b81b4a025d2516e55b52c6f30db25432a2eea21a8729c055375e7537d47f069dd81393719f256b80cda8405a325974bf803c3e5efc522fac037ab6d5c32399006772a40ccece3954a0add0feb620665336d5d5358a979987445b81dfdb3f2c82b3903165d0bb7a2b54f99dd445618be3e5c04cd98527483f930f92a70299afb94c10d66c2d015e1e66807294637cf0e83ac84abd15a53c86e3e03265d1d2e47439932dd645618be32dc048d3dc5ec467261f3ba702bca7de119577e3e0cb2265c46639a323b5fa01c0e90af818b8a3e173dcd30f50ff2d15ce406a69ea72c7c2ea5448b9ab9ee0c2d79ef02d2504d2095ba94080baf4946bfaeab2525aada13fd4a589584a5eb162e5eca02d53bf1d67773893640636491bce42c10a540c59fbe109a5767b9158897b240ad879c05305f09d9868b82aa36d3e953de496cd3c2a2658fab4c7a3818189e0a6c968e96d1e91f4154a645a2d3881dfb9e13012d5220c56a3158253c1dc175e77d0d5ce5b5d959606fb291d09295448b1ec48779bf0de38275f31577c624dffaec620387ac8f3f18d5b967d45becce68a010a223a3d0994cdeb240543de1c856b81753f91e61b78c08b35f854518ce7a40bce7c683362e6165d0851da4cda8ab97fec566f7853f883f683e05bf1825b657863205e2f41bb92fecf57907f37c1cc2387d692a5d1f8e8f33f90bf0eb243b2ab96713b9bcc0da6e22135c8b53e1ae2d2780a3dfab836362476df5d263dd062bdff0780216985a464c8b49127925bae0c9bbc485473944f23ffd915111914df5498b6c679c40ea96ccb7286d78da14a6d1a92d6f233d975e3d90be0d8ea04666ce746819d5866807543ef3adefa80b8379bfd353132914b89cfa73ad0e244e7b3438312d32f8bf926ecd27ba299efc97bd5baca0e0d7f0d387c044277aba218a02eef1791ee1faa3651dbd2648ef0319bbe0857277a09c5870bfcb9c3c75c932358ac02e1a576d40f7829a6dd7dc228e36c1c0967726455465c2028752fffe9515ec33822e4cd6ba99de0ccb0868e432a6eb2f4ac11b59dc3b21933c6ee72d3ac19c2721652595d1cfaea995c1db53211aaf491bbe0e049c15175103e4608f24403bc404336edcee67e61e4be8ff76a5031f379e72c64e02358f5d3c8387639815c7a5d0a5eba6d8c3445068dc195a36d05cf02c282822275e31b4b58ec981ec01e373d1a7aa8741b5e1a383b1e50c8a0990d30ad6a07f98e80d80db060931c97f327b7c9cc3d89e2db529c0244bf4940b869716b9d2ecfa4aab88862c7b0784f86a411ea6a01b381aa6fab28d9b24510224191c91980fff9f0a8a8f55d772100cdd8118f0d8ad58ac6edcb6fc4b6055f87a87f0994d47301595e1962074e18e4fd788334df417e9284c5c75fb6c395d9f465aae6e525272e2c0fb2f2d6dc5aab352bc89a2620061195561d7b018bc4748600a5dc268eb5673555240427d2ea4f7a4b656521d2785065aa7adcbe55bfe65c5f7a763a0dd65f1d81421c8ad571ee4c07a9d5c128b60aeef69a6c21f25f33dea1bc0c3bfa59cb33e8bdbe33db1173caee0e4f7a38ff9ad70759e30367eb4859ccc590e264e70adead1cddfe1a868fe053c5e30e8fb5201d8d093fd00b29eac1f2e43ab1401e1b1c47ac80c1699254f3adad9bf7aad6c7f7e10056fc0731c75a90fc30efa0e69276707b5690e5c138eb1ff42dc8d444533768c22ef03125054e53437513e46fcec70443dbea7809da404339474f6e7e3740c6ad8a98cf9fc6447543df771e2bd98a684abf93a7dfe91635ca8c430d313b9eaeddd234c407d77a806b3c562a10d83c51d8638b35acef24e91944894716ece6302859b1153e23483c2899b137ddee4e48d010986987914ab8b45988299c9684e96281445afc93687ec06958af154bcb3e1788b91005cb2e0f850a12e7eb704ba4476a1a04abc82a00f685098456f168fcf0f7b3281c7ee1d8134d3f198575aa83d3c122ea641c9b917440c384801636046d9379fe07f4ce9fe23cc80e21465b3950a39ffa19e7cbbbf81e8a597e0b909ffa18ed87327eb6d790023c403649a1ea0e4242c3930b7bf4923c4840a72f7aa69f23ebe3c0a928bf949b1208d4cde3c9e9360d31aa937118aafa5cfd18c7d23ee19e2422274fae23eb3ca388a57422bec448b810a48d730024716ca221554f3262870135984a1d7dd2ae35bb8e868c2860fca38fc917b342938951398a41ad9d9d0518166db87c789c84ad46923b49f621db24e02666add6da0216c17961bd10cb817873a78a8dc3a673f18f3d28a60219ffdd44c994cf24083d0c6261b535cd3244fa6a322505e24e05695c535b7f1d2d2ae7a518d930a6772858f9f54096bce3d91b65008e87ec05bf9e3587aace5fd441786c4cf03ebdd0122f8f95cf38a5eed00be2e193319f52f0bddc9c464dd0e391fbb8e65189b371969b9c0cf69f5a442477d0377e10392c002bd4116ce81a557492bd4475527e51aefd58c246713536601a27dc3020c7465433b33e19c32ad54fbc939d7286f0d67f665649f8f0f6827ea2ec74b9e725bcd57b166fd623793c87cda8c40f6b77c9eea008da8080447b163c4071a1ed1ac5f6a18bc0d20b2c5d237216d080c65a439342005566365837a56e1dea4cc27c5da22e49acba20ae184647ee53d0dfe4976a0ac80dd81acb552fc2b566badf49e98add5ea7bc65fcf993f7704db9e5e311f20915966c34952a33cc5497f2bc2f46f70c899624bf365d1ed03858d5c94ccdc45b33ae9faf75bd707926237809581322b7ddf2ab122ef67106ec9a7f4b31128cdb3662dbc7dd44b52da30f62657a04aac136f93829fe699645aaecdc40d30af06670d7d887b862be268ca022f3df01741501deef93df3c6f5e4f72ee22efaa0c110fe550fbacc9eb4ca9eff6c52048abeb7bc5c3054324a3a8a9c6a866752ee2b87d2e5a56f9aa09996d60fe472df3bf78a981c104106d055bab645e32a7c6990030339c3868cac0f117f8f0f99c2bb01f04f02828fc5bae5a781ad6c7204cb28ff6fadb5dd1a2184904dc8de5bee1d6e0b400c5d0bd8bbaeba66cf60990f0784cd1c1ee306ce2870377054c1166a0fecaf5e9c2b7d7bd787c3f41bb881e7ed89ef9905849738da55354e8591c86614deea9b0b3b56eba5ccbe19d19140305c730df892d8bb2bc8573779cc8b4211852ae59b68871d056291880079ed36d16ccf70b1b61c022cba30557cb61ba80115269c68c1028ad1ceea5f3b60085baa484194273ec8c14eab5a2a2fdebcb28145b826277fb86b60b52b3490c0b0a8075b312c4223c9d534896dcb1bee0c348156d89a0a9bb92dde02365bdc378d67164ec02b709f83f0c8082b539c24f922e405a2b21c810b3661587404237833c518638c32ceda4cacfc9c39362a9967c1f32d9a2f5d302c3a43a80342a08da6c1195e80e69569c50913224112496a219a92044977e9a4a32b509c0811895b225211919224427e78eca8a1e9a32b509c4ca149640b52119154229378e982e5280a9436d2425cb654298a4bfa533244480f1ecd84ad6122767fe2beb9061c2fc7a59d58f8ad5bc2396789855b4a596235ee3b8390a0f8648bdfb4b7d7c2d86bc5b2c455cec43c17d08a28c4e78831ecdc9b09cb5d3484b08d8d512716fb16b76e296789c543b17689b59ba7c4f95a71013956b172cf8d730bc76fd7056863477ff15f7c8eb8000851c81e57b8de74f3aa7637666f256cbfb51b24e20caf5cc13e2d4c7f79ac162ca6b798de3a2f4ca25736d8caa663595de97c03c3db348e4ecfe4586badc531df2f61c67833be60f9d32b1737c7681ccd48cff46b173bbfac8868468c6852703f5324185e23a231313131313131313131e9191313274553b044c9e2040a57b3608947fd458d48c39ed81c8f302e1a297df94a5f5efa622252fad2334d4b5f4c41a624a6a168c52414642232bd139eb0f3c62bfd59e92fbe67d11136d32b589aaef4d7c4fef44da65784f44d365df1d13779fa54c1f1fd1fa62b7d73852621997269096262051b63484a96fa6549159842e37ec605a6d0f44a7ffddaa53f9ffe70e8959ee963a9b139ab22dae5c8a7bf964c0fb4d1cfd80f0a17a0011fd0465fa75b893ebd82a321c4821bcea8e015dca71d0bd71205431874d105677a450b11bcc11cad8b74e322952af91396b0794ed930d212341d9d94e892707ffb76f20a4769a39cb2af29a92ceab70a37bdf993932ac113633895502438d7aa65858ae59545b2ca1236c72db8bb6ea9fd757f716b4e3ebf060e6c0ce1270f5f2584284829bba40b88213382906c8655f03c8723870baa9eb7c9b9d137d94d6972cf3478721c9e1c57a27f7ff19dd7f23e2df3f20a03a960673178248b30c29011829292bc206d2608af5871c28448109216a229499074493aba02c58910912d4845444a9208f9e1b1a386660c8a24aa7074058a932934896c412a22924a64122f5db01c4581d2465a88cb962a457149543244480f1ed0063cac8136a08d6f474bb1b25bc2f3cc609afee0c41047204a3b76586cdb120ba7922f5eb2609112450e49236370b15285492fe9a02f5ab24c911287927c72b4b65e62e39d1146485570801300e10511119e0821070600e930041d9200a38c140451a4e2bed9c00a678b57567a5c9295cf6f1c2f0eba48d1650a234bccf8b2937f03e70ff7111c8c8aa0b1c31726453bfd2a7118e08225d2188211906e10849d05e00c88b10313297af001d1183bdd3571ca065bf0063940c2880d9268418427845041061940e0a045288914c4b01516d9e0108bb1a05d7b5f42ad65768ea5c3be748859dd21f6362fffe0eda6cd7459dde5b1b7b495381d296fc6bc2cb3bcf907fb486a2a79f907972a8eea723b0fecaf1ef3342f7358eb2466af79a5abbcd9334d54d76979b19f2e51b75e77b37cbfe471f8e461a6cbc2b494f4b06bde4f63ecd24e793d97c4c1e13b4e5c28afe226c26688bd9fb126c2ca9bb19b65d7a3bc895b32fb766cf57c2c39ee74d3ed4bd7ec65d5b3b263d7cedde4b13256e5b8cbb3340cb234f9567fb2bb3ead7aee98f6ec72d32e6bd38eb1b6cbec37b3b07ee66076e1e5b0c6d184e363b6389a5a4bda3638c46eb15b4187f62c670e6796848faf919747bbf0b2341a1cdf8294c6dfd02e4f56eba9ccb09576f8b8c5e7d82e2bbb3c955e968eec956e87f807cbcbd2ae431eacedf264b7c6cb82f76a8197553f0fb140facc4a151eeeda0d5c73593947c279169587f5d6dce80f9e452f4f8efee079f407e5cd352ddc9775651adc5f61df542cecf268e7b0377659f5f418e7b1aeb3eab1cbcf6b97552f0febba3caceb2dbcc2f072fe66d675795afdc1af700bc3539e792107a4c52ac6c69a81e762cdc073f1cc0b6f3ff610563ed3eb03b160797d6ab0bc34c80a246314c1c6ba4e2f0ec21466ad2d84959a09ddb16082095aec56b018484cc2f5402212ae990d1b97ebb56fdd454b749a387aedd2cbb0fcd46e8e9d0e7a0760d8b5409f9b0507e07a813800d76f7693516b394b3334a6e1c2f5986c81de692f2fae303182afb35ab8a894b93efbb63517bb17aec71cd3c0350d9c613aaed357cf84af3bfbab2c98f0bc404c40588c5436d8ca7d84af6fb1f4cd3be589afe7d376f2b8d4392ff59317f1867941222ee104296ccfe9a89f8efde495f015cc31d44fa7735ee630972be6583097c7ded3b173257c6beee49570d89daed3251cf593977ff0e9ddada0c35e75ec3147c13c577c82b9ac98cb63551775b19b7f30f6d375e4c9ab71d8e95065d44bb8a7b350e78eddd365a12e8feaf6aadb1309df2267ff191a807f22ce40908855aa731c09df82603f9d849bed555d1a223ea5aed33cdd6fee232b2f9f0e5fc3cba7ac49076eb8133d34c41a643e84759dd8ee44de4e43c4a56fa8f70fa8cbe23946fd18f5d37f2266f1a05e8f7a0d12f14fc429d53da10e1b87f598989b2746dd9ee5c19eb1374f7c3aec1b7b14eaa7ef947f54477d4379d987c33daa4b03ce3e1c4efdf4adb954ea30ef8ea73ef52de5a1be6d3a5499c3a7a31aa7626ebdccf1a81e73617f8dad97edb5cf6e85c6a8a7bcc6b083395d75b9fe4ed7e994873aaa1e757bb6c793972d7c0bdb63d4911c96571862160f2cc2d8ed8934608fffc12e0d11f79ce736e0f820d6873880759d88471a943717583e08dbe78146387efea22dc4275c3ce102c7f3340d583c5f9627387e06116df0831f3da4c93cb07cb4aa95cc5b1f4ddf945a5f8f92f7160c9d27f318b05cc9c880a56ae5034babf2c93ccefec0b2723f58ce083f4ae5235017a5103a08f7eaff6a6a6e148ac2e6283405c90a16dcda6b8d566a4fe1b25a592be51ba971e2949ee94bf93964afd3710a51dfa0dea7f763152112a7c6dbbe1fa344297d13f37e14ea9bcb48e3f488481a270639d3efbb412f356e86bd40f1428451cf42701e82e3e9a56fd2fbc1a74379ad7dcacb4038f50de362bcd2619732994c670162d3351d0847af243d9397e5edb7e64a9eeab063411e06973c200ca3b28ff63a32e5d98bb3f6723d244e0e9ce9d79c63fae91275daa98092cf399d0af62754614f5fc1744f270cb17ccec1fddaa73e9d4e5cf6e1bace769dc99a4c5d3ce7994a2593e912964c9cc98461eea5ee264fbee4759d0731972dd63c25b8a1e05641e2c49dbecacb153c2fd4e90e82e9d216dbb6f50ff6fa53dfa00e0f6f34f52224c151077714771813c77147c19c3b6d9c973afcd63df6748f87a9ced46d5b9b3a2f6fef3853d7d2d19da5ba3a58dbd501fbcb38d3b76f26cd43dd7c2a8210ce2b9cb9535484208c5de6eb4d03ca3a1562ba9b1b77573df3f2ca07d6b20a6733d480bb9f9e6b56e3ddeb551e901a22ea308ff162cff67818ef04292ceafa7030be66d72e5471dd37edaa504f3dbbb906abbed1944a25556bc755dd55aad20a0655577a77962afbc0dabb7498bdb49dd55d9ed69162b5803a0830ea10b7e69d6eb6d787c3f15b0bb2d341b9639ce96e80c33d186b069ed2b37767cdc053e2de5d1eee66176a87ef216c76eddb8b7c6a342ffb402c38bb34481cdf41d8eb11ffe02ec25e97f770c44eb194c506fb666a8f8f18d64120ce9ef3568d76d7b66d6701e2ed4058f3f2b11683f6ae875da4cf3c201cab164ce9a37cb2c1aed0d2a055f18acd5856e196524a89c1141e58ab3fec50e6eb0fa3e90f6bf964d92a4fdc72d20b33c916581cb3d51f5da9563236187bc572b8f0b5a4159b73708c715e213f3e60cdbc5c83e157b36230fadc1fd00a0e187230fccf8f168e41861a9afea80b5491c837e8c520207805c357085544faa38f423006f9c425120d1bbfc18a5d74ca8eb5948560568e5b9ce13d818d8707aa114584cca271384e6661f38adecc5a800a10857e26a185230dd66ea6361e08e7648ecbb183478fcb836166e802dc2ef4d7cf2bdcfdd56ab5dabe7d6ee7b6b9ada08d7ee6dd6b7dfdf537e9219e17fdc4f4b2e681f0c4f2cac82b6ca43d6c120bae7d30fd41b3105983606bf2c4dd5fc7ec422e5fdf878c1d57f19a114b8f0647cf76cfca69da6bdf34ce764da35e24d233fd13b878c205ae9acf0a6797d5c2c4f513d7cba207c2ef0f0b1b0fbb7a1fc2fa90383a72a69fc485de9c1b3dfa6b231baf2d36a44bcb2ad6ba71e3c60ddc974dec8d9e53b6ac19320508603869e5607a912e2dab5896e5f4e8997eadd66689720496be8448b50fa4808c2e9660ea93733424955c5a56b1494f90c2c22af8f45209bb7dc171beb5db4ccb6ae821872bbcf8c02a78566c03d00ba637163512137776e5e0597ad4cebddbce95e6fc36a7366776ceb39b767f26ccc13df34eae481ad9605fcaac68e6772dc7751c9088e975b34f0b6fdad7df3cdd9a7a2d4c8f29bd5e6bc01448a4e96fbea6bfd97346484bad39614e176909da26870d4ef7b6691bdcef21b7daf2340f76d88fbb66b5b51ce2a83ab1310857088fb018ad6c3999a6b339fad39ef274e48c7694972367b4fb9038a7ab7d87c4b11786ab5d8d8bf69fbef1e1d337ddb5ffe89bd2b50be99becda4b1e4d7fda3bafc6b3e94ffb2667b413a4b0f008cbfa9cae650bb61c18600aa90f5f2617fa663b0c8ecfb6bcb9e633dd7c180c268888ea30d95bda0da9c62071ec86a421994a5e703fbb90be29bd3fa46fbab7e512e3f1e84fc21003b4814307cecaf597c31e69d28b4dced0652469bbf4b65f5e6ee515be724a572c26e539a9bd6ff26c3c9a9ccefb1036bb66b35ab369875570b74a2d633094e3922489c462cd850b1697c8211864975ec669af583f12a148bbbc6cb7cb0f91b90f61ebb35789b3dd96b2a5c4a4ac38d7e05c715fc861decfccbab780b0c6a557e39797e1157c7d469a1a7cd9e02b27dfc0d7956115d6f5fcc93c1fc75ca8e7aa7ae6b0c5325787842bafc8d037f947e2124ec29b0412de8fa16f56f5fd4d6a4512cbc1320bceaaa8f338ef43d80cb3f4e81beedd989ce912cbfb8136e44bf07e90e0f9783efa83a167e46bdc0cbd60197361bc1eaa94b7c3851cfdc95b93a703bde9d595c4b1724666dacd1667c13ef00a9d972ba1af28e0af7c7d5eb79ac0f6337769fe99f82b00c2ea042e9ed06095655996cd1eeaba1eeaa2da38a9639a147cf511a13ed2432dd4477a286b232dd437b0878afa4896b55066e54599cc2552492789f8ba8d44a88ddc1eea0f7b093d94b97b6197da7573e9d8755d4f4d6bbaea32dd4c4bf767ced9dd1f89b1be2cf4c44f8cdd9e8c8bd247b863e76e4f3cc518bd97c679e9cd3d84af3e1251b82eedeb6ffaacf075cc870c784634726b85b30f3c0f24e27837b0c2f3f660cf0ead7ca78276d9e41401a1ef9caebaec5650713d535b94ab12e774799b1d6b823af59aa09ef26ccfd06f1ea75d47795a2b4379a76b5ebc8eb434d7c9ab7246d65aadad3dd4474a7d7ab2c5c8872ad7afc6f9e40cd7e9d8307693f0c4bd44629fd8e7c490be884957a7c295f42f92662fc1ae2f72240e0a75639033bfaebc9ae94af087a1910f5d7ec0820780a1d10f508c7c90324404de2447894c8cdd0e925f1a63377ae96f22ddd82522dd98d41f7d8e49d84f677ab189e3ebcda6d333f7922af57a1487f251c1fa7ef753d68e7517f64caeb7bbd94785eb3bd3f551616e7bb7bdb3779f98bb3d1be7a3ca3e2a4c0f6ff71cb7503c1fbf880be04e319769f4ba3409638f5f441430f8fe647c772b488961e3a05eeb515eed19ecd19b327d735d791983c4415d5294077b4662eedbe6c19e2b6819f5ea94b56229a5bcd3bb3a92cea42f2810892935b549081b44c1c249a36ddb9faa3ff9d933af6a0756464e3ae79c387a398e5f5cc518e361152e4d7e68e207650871c616062022230729507491044507105e93b616057c81850aa22843a8c2041224c38995a020d060280850ec747ba1c5511845c0e0a8084ac230c10c92d03285952bb6ecc01c0c25191ac268684887631cb3638735de791368707ca5ade6fae6463e67c7be651ed759f6d91f775cdfd95ef2d9cdf59a40c51e439c27a4375b2c57f27d83757adec048563119c92aa6234de4e09c83e15563acc1af5e20994952d92707d363d7a6bf786b381eb0106cf4b6fa5b1d0901de70bf1e60751e7c8051181af190055bb1417833e76fcef0f1664ed9328d3416d0dd13246298461a38857e869f2650b1af0e6819250e4d6794179d737e65349443b6334f736dabbf99be3b0801e7160ab609250ed01354e0400854f4c0871d8481831e5e90eac18b19201bb448c208084f6450451173de264058614406972dacd0d2c311a71ea2b0229130b64829438a19536c6edc15f4208ba1297c2082085d1c31c2a9872230540728d882031758b2e0410a3248d28509bcd8e20724768088886ca1011713d8e0cb961b1c99c1912f6ae4d07c363760150086463b6881613034da610a9cbf224ac61746bc18192132bb7910e27840422f02786882041eaa441e8448f1f024eae0150b0f2cd87838aa3a3880147d8b80293b2cd941079c3f4c89ce417f919383831a83725a61e000890894747122a984a4289840019431bcb8c206305c11860c5a904608d08842c60598e0106505383041d00bb254a0d5d262c2a256c300d2791d422e7248638a20453d9b9b43971ccee82cae19b30c8e463be4d032adbe812b0c8d8afc00a730342aa205d39e30f811c30b308a66b0e58b0f7e52e0c30ac4388285cb0a6a00037d81133e5c09010f64f000c2e009237cb8820b1f6ad0050db6f4d00315419092f403282b94f1841256b440083082d8815c54e088a5aa017170c02a26d420f71196972f38220b1b8848820766f0b0937b09169cdbc91738779496a2831838f794ba939ba80a96ef2412e78671451130ba443186103bf2dea0785eca4507a2920e59ac90e63c800e46b074982247a70530906e7842045bae08c20c84b8081d2100402938420e51b8a0044690a8418e0e04e3892d704002285104310219085191123a5a012101060f5dd8f0054b0dc4d891f7468e0e10910f529018e2614a0f44d8915f12276a60851734f8418a1db9859012935013a81bfdc59c1a9a9cc689413a5d0c70a639aa37d8600bc379159bce4b29e57c81c530342a62a5c815970b39a49445aac0524a9ba21dd5d6c0d0a84893223ee05c8354a4480872d86294c3d19178f44c9411c38223870b7d13b3d8bcc231fab4e2bcd15fd4f17060612786463aa0b163cea98319784e3ce775c18acdd00af66c7a263ec78e2ae3bcf2e66aa48311fab6bf7aebc2d0480721e05c8334872e4af194b229150a02534a841b7b98426c61acdedc562c9c5fa00049891b987012c5931dfa2a7126f00222b8702246098696ecd0dbbe59fd93f435b7b3b0795a235c915e82b0f31e40a874839407b8a1cbe906692a62dac088881148b924f100e7e845c3397ee9a026d24690269e770221c84a0e403803ca1435d8c9314a0c708e53b2e01c8bb0c439560143eee478050b968f4e248e0a38fcb04596242c402c212550145fcc48810d4e54a182c64e865eb4c03906b900e7288425ced108169ce310921f12e707891da2dc00891e8824697c154dd1022124509818ed4018e00cad40911962c1810ace304bb793a1961c89e301a41e90184561e2c350af404a898309b094382c71edcc9d15c4a0982e8c30737062900b376cc1270c8d6ed88206cb1d0805e71b386bd9cc6b7303ca1d224fb0bccc610a30beafb0d986c6a6631109181a11b90277181a114101ce1f963b5c6d445b58660a10b6f8b4f03571bc8282be3c750ca198670605d1d010a210670cc2406e10ec3f9507042dd0cb2b25f882250b40f8e2e46d1a1a6311bb6e7ca16508e0c4d9878b462e4a2fd803ec3127a53a72420abd6824c6791867cfd95e14ea41299df013c2f9c5b66db0fbd03ca45bbee04d7231c6fc33f135b1538c520f52f8ebd1bbee1c8abfbc203c8885f493f4178160d8ab97fec0044babe508eb8e7aad94d2d9b1d0a348a742affa9397b1c1d8b3ca9abcd23b8fdbbc1c8d703dfad14813d96cd24ab19fde7067a865762a4c1baf22208406e86283f726607b06f6070b6003d99ffd51a197f9ac3773b862385ae670ec9b7f02b7ef2f1b908023c14dceee4f63f89e0c1ae1922829225424264942a7d8e173421b990a6787312976f92222c1f8454c9a5e4cca6a0caa60a320b0e0cd540452aa51af87e67c0d953612085fe1b3cf36125198b45301de16c20e7560c77aa8bf4931ec51856bd2490222a1294453685205f6ba4adbb6148cc93ef372cd0ecc959ebfaf52cf2b9c7119d7a95e6f351893d6b36da66dd3346dd301a18dcc9a5237abaecf2a7eab11537ae6edc05b96ad32bb71f9f4fa92c6a934edf1302a2de5c5671c972a3dbbddb56756cbce71a594673ab7d2744068c3da95dde4119b0e5394404ee124157b1dfb3ca18c8058924aa568666d2aa5699afd29954ad1db6ce25087cfb89e2e76967ac771dccdacd47d0010e6b8a7386dd3ac77bad9747d569b111043464008718f4fddf4ad71eaaa6f5ee7e51db8b3db56034e7ddbb6adc653b984e252271487f27ab893b7c2db09f5edd260024ebde35297a5eaaeea9eeab69b7d608b3a1d7e3b79d9ad678a3f8759dd7bb86fefb86fe7364dde2c97d8eb32071f72ca4654b3bdeb38ae765c677af7f6583a4a3f6de7bcccb287d807e6e4eb65d9cb53baa7bb9d335d1e2dbbfdeee64e65519ac9cb3eb0e99bead9467a59df411b99e55e6be79dce79a6af244e8433f234dbae3aec74f8c0a5bac168b7d74f9ebd59ae304c87baaceed853bfba6f2aaf5655ee0ebbced1c96e7bcd732e8bfbe9a6afec519712421ba7cbcaced2de7d7bbdf520b46182d046775696e9a8df58997c0e6843be0673f5aea08dd2f559e538ca5edfbde6b2b86b975f6d10dad02e2fabd32e2bab677197efae566f66d58ebb3c1b8f96dd15b4512f4f0e68a3a60bc1065fe5ab0ef97eb69d7cbf4a0f426e0620bc9dbbdc2e074ca8d9ebdbebae7b0010565d562ab5c973efb60de63e000867aa6fcf54dfaeda6a8599cbdccd3eb0cfa5977de05abaf5b20f6c8ffa16f36cb195331486cb590e2839ee3bb03ccc555e5e61d53b2ffbc0dde9b06341f56ccb3eb2772ad4ad543de60140b73bf7ae3b07739bd4b84eab6eb6352e77d3e5cddcf559e154ea74f30a9bbc2c75942e8beb4e2fee1dd7833d3ec3acadf5b07b622985ad979752d83ecc595e9f156e81a2ba86b1d55fcfa1979f5fd1ed3d5a84f0b2b05b2d636167d537abd60a31ecfaacb0bcacf91ef9be7e7999751d5ac135997561efb94e8fdd13aaa014d66068a52f9016e7123ae890430e52283e9142908b275c34b18a4da8a00081e3555080c8117790f89fc9e2819797f00699d80756c1124248bd9686332c81b0d0934e60587e17dee885d52c92b10561a9c599d2274c92099b395c92dde4e8766958a69add91cb9ccce5541577e3cce1e66a36557d333184373ea6bc2c9ef92ba3b0f140787b82524a4be0054228693e176a6a72e0a83a1459d856f01605becad7b28136609423288ee61230d4e74b31f7789fc59be9731f086797c5a33d7b965dd36ad7bd7655c77b555d970b58c5eacd31715cd7756b66d3c8392fe7fd2e4cfbb61a0375715e89fd8cc988c9431d29eb849e183930cc49027a3e3918429885cef45495526a616831699dabb3091b4f5bad1b3957172d847968a38188609527b04ac7c00598c2101a21fd459c1f7226d6d8dcd0c191a3041b6ca9685632ef1b088b60dffa68669d70be55b304c378601bc530add6d8c014380ceb30ae5a8cc3d80ab460ddc7fa10d71f585fec1a426b3ec487b0f41206d885fcf4cdb13b7fcc0f61a54e7689b0d963ddf767fae8af6390a1bfb652aaa91ae7f9401bfd1aec587fc19e7f7cf8fce81b6e49764c3bf683e10e494c8271d7071ee1eeddc41987c11dec34314a4dc1065b3a30851fd0866a55eaeccd4c65daad7811c3d037387258d19161330277cac1dbeb162c33050860b47cfa93c187adc1d13734351267a523b78869fa46d5dfea93d06e29cf870c66d81c836052d0189148148a468670c1db7ffc0891c1874f4e8f1860e0b123870bb631215be76556494008211216caac5ea0b275ae6c6a68b8d84c1b58e11ec83aeb92bfe4b79fce102f2b7b8f6461c7eef6f84dbbf097079f7937566904f58148d3cb3ed10996598c60401bf088238e20b2b1ce82f37066c76638eb7a0fbdfc75e9e5b30bb10ba511d2086944740291e21897f9301c2f292f006883ce2172c2f929e594526230b48ab8620c2782ce4b292576d15a6a411bf03fec103f936219c3306c5e727b023384104ad56338113f14534a655653aeebbaa48450fa607db03e9870cec9d5cec1884c1a43844425d006bc8f150fab1f3e5558815570e4c83922430cfdc1d7d014d1c82a6c6c9a5573b24080e7bc30bd2a29987ececb1e6ca4340a4522fd0dc5a0fee06f4c129198b4a0c24698054bbb6093c4c6851c5d6ca4f9ac9873ce534fa606243c97081197a8b62d079e979e5462e3e573f0ac436c2c9e9f89e195e166192f8b275e16cf65f5cd135f1ddeb0cbc25e6f90897d7270f5b1c1d981301006c21be5b853eef6e80f7a3afdc16b5ee6b9502f7950fa49ef8e88b7186d3c16cf84dd0b308d34b0945c943b888225cce1ed4fe3c41c7e488529f8689c1c7246a20e9f03070cdddf969b13ce6a15b7401bf1d58bf162959e41ea2f1ec68b59e44cbcca8b477226feeb1b1a228da33a7c34d2374311097d33e933b62d5583eb99b49366c261dcf559c5a29417a744a21c9bb229a42c5852a829f6084be30c992271628846b644225ab84c49b222a4bf78e14fe2e4f41138cc6eaf18c7611c876282c50f984f0e26c57a114a94d5aaeba2442791c9290a759ec4714964d2382ef48c90c4a9d1220562895084724c92a3bf2871e2183d23b79247b1ac32461be99bedb2007165d5436c2b3684045bb279e99b18244b2c1ec9dd0c02bcbd3ff9c90f21f18fbed964ba87a469b56a95126f77d55fbc70e75d78537937bc9c21d81cbf60f91cbf745013e9d237d9077ac1dbb9f4cd181b77799deedc378eebbac3ae858ee8480cbc5da7391f78056fdb8d4bfa8bd149641295f41793c42124fdc57794539faab0e92f5e47ce441c1a2883e1558d53a50d4d8daaafdb45b035363937faa67f5dd84abbb96a3e1cae59bd5f7fefaf8514055ff030340e0cbd83478f1c9c9a9ee91d3d731deb0ee157d7e1b9eb496c865c7c489c5aad95135f135f2cd0122f0bac1f3ff191081d5253e7e50b84f48d8f0d8ec7d13987081ac795b8aa993e31ec34d3fd99b8eee8af73f47324ce8d9ee95f55ae7f122722692fd74fdf5cf7e1f3a36fb6254ca29308a56fb24fe482b9d773bf1e93f4cd4582af2886b882399fb86462cd9bf83ab76a1cb873c528b568ce39e79c331681c3d087cb028a8dcf3418d2e739e79cd4cb016d401c3a5a64569209482985f273b6e59a48ee60e3bc19a3973d724e7a3f6883876cbc4c7ff0f491d2793adf43e7ade90fd2c820c34b78fa2c25bc84ef9131cacffe0e69ed1b7921ce524a19638e18f6fc01ca4c3f630f8d3176454305aa739eaa0676d4b1d331af84d33d61d8392faf30c7711886612be888b9fde92898a3b054ccb517421ba8a3eee9ae522b8c9d2e96ba7daa86548154412a55e366ab524915a0542a14cad640a17e3aab464cccb5d5aa6056ab98ab2e8436ec6354d0c6e9aabb82366ab62244444444924a8d735e0d18eea72dc6c3ce79aa9370ecda63a773a8738ff1f20ac7c4c4a06c0a8b5171dc75da07e6dedd0a31c7ecb19f683001a37e4a71a9679bba2c7b1f0084519765df837aea363531eca7733f79d9073e1df3b20f8cad0e3b1da7abee0952d8d3f55961eeacd3638e5deeb24e972775d453477130920a0af5ecb3c2a9c7482aa9189d8e81e1606e46a5b81a354858ad581f5242cc2595981a3703e11a3f7979854f8fb90a9f54313fa96eb6f8747b986c71cc515ecc61e394707bd838b5040ff60ceaeac8182ffba871d537554f8d55d7dd03806a740d2f62d5633cfb1a5e5ee11a971dcc7b626e0f1373fb98d738cc55b7468deee6809855e33da9c7bcc63da10acbe2493de6a90bfb8bb9a7c35cd89feae6155ed9f8082aa104557345db9645e7c6ac3a382ef3b56c6a6c726a8e54b65e66b5b564fac3b04f48512a038d2dc3e7dcd7756954e6a8b0a346cec84f4a79b9da6846bd69e9d4e8f46495333ba09c8971879ce9a141e2261dc09e61d8f1e011838276301eb06807bb39e40c91098a26b57309173c41e38631ce48e3074f1c81e71349c0009dc048680c29b64ce922cbce54616864821be00d432313c4c0057d9986cd15f7148993452b590765595a0829bbe21439d3df62f0f1233a8951603777629033ad1dbbe6c51dccdba15dbb20c88eddaf7a3d2e4b021808b663b76607ee6c5105b9a3ca99d70fa9e1d6901df38638218158060ab208dad98e7d480db786ec20a841c38ef592762271b086d209c8b2231ec99976d25f7c0c8a4272a6770891337d96046a763f9604b0ecd6c899de7139d34bbc762267fab976141fb60a5388bd03bf994a38410adb4e700c02a4c7e9f53daea3ae4293eeb0831d762c1661c7e294180575e391970eea6eb4526fcc9284c4c5470c3dfab307dad9e6bb2b644974327fc420ebc52451682808902012381dbb04ae776701e226f5417a0ce1aefdf41e434cdf7e7db3a7f6f441e4810491004b0299f6ec70a7f4203b4ad7ca99780ab024503aeaa80b82eda5c39d21403b2c249133f127af97c89978ebb17636e94500ee10c95efa163b09f4d87a703d4cb785e44c7ce9b2e4bbfb1e9233f19b9743ee9033f199c7927747c5ee7779d463f5dd512367e281766a2801c9bebe4c1d5a5328829106dc81429145ce225f9ad690f352deb00107453a4ca1c49323951646b058c28a1ea680a20c28cc882282d3b4a9996440d1050745187242231881d18327380c0931831d7ca48c2394b0924391d08ebcf66b411103e716942d3665a1d1c2591e0a0e4a3e2d3cafb2d7e7756d1aca165c94cfd9c1661b9b1b47b0250c8da0ac00670b8b28864650aac0f9c371f60462eb4b9e31e9e79c2f10713122881f9e0c71b143801e6c11060f5ab498a28b31ae542c93ce89c9a41e3099810e6c388108766692171011850e9840b2818a9d290686820a1456e0d9edcc49299d5048c173b200cf6b674e3a390c8da09c000a12948a235734c1c4e419f2ba949248765d997a59916cf29a457cf0c491eb091ea27c95572606d16b53535b404e424065882836d8c11747809a48a20a108e94a00649a2f8004a116c31346ac28c8b8aeb00473a11a261b32db2c1bc1b5fecc4d0a80922d8d8268230af1d6c0543a6d5c418387f2470a28b133a28aa615310c7065ed08625cfc836385e2563ebec410d9c5755c4da0fcae078d98418d0054b4411060ac8c0028b1fecc01958b101d20faaf08208507a20d392181a35c1e5cb065b2cf0d891c5f6b71879f4b7a33f187c86f40df61efdcd1864f0f1e34748df6097477ff377477f2ee068526fab67e66bb76c0b0c9b393ce7b7bebe5dd761875d17ec1a0619b175a1a563b0c1d69c5a7c901a1c2f10138ecf40b02c9eb8a406b81fa406f7a561da901308964e79bdd6983b48ed7e8d4062a489ef470ec3b9ff13f194509ad0a23691c50c0086464d34698208f916ee96a7c8bae087d8fe58d75da1f1159fa37164517f070f3370bf470c52705f8614ecf47d7c801b1a3d61821be3f44eff82f1bb512371883891630f61e0be4cb2181a3dd901e71bf8852208dd26587f25b17b9d5e28034a7f320923268898500707133a9ca8ceaa992042e74ad2c06a181a393103eb481c797fb071c172909980a19193229c72e2123ab255ce6b25c3246b19ec14bb3a72265e3a1902cf3971c0229dfee29c4e4680e785e79cf3caace49da97182c310dcacb1e92f263184c497262e88d826d7d4f41739d9a48a8c4116075fabbf263f682206cead279757ab7761f39a57371246ae26b0d65a6bad59a6655ec45acd32ae3f4ae3d5a9209b762ac8d7caddda1fadb5d29b7f66bdb24ccb328d5e5b9c58ad57bd31ca75cc9bd7e7ecebaa4d54b18b5e1737ebfb83efa8910003f6c26c18b075aaece39ca899a1ea9c3608b65439bbbde2a86eab67faddaf557261b30d2cd2c19123a73f1b4dd334086d640e67d44f2a4824db7d7b4e3d7b76eb658b6d2a762ba0aebde93af274e7cfc4a55bb3f66d6e55d3146073b59d1de6fd1c1227e66dd4e40a6e6dd3b458b30b6bfaa6ce396394a93aec28d0542202e6556fa222e244aee10186f17680551caa2b16769e5e28030bd7371908cad30b6518e90f6279b2fdb192e066cdbb42e37968748228586636ac7004b013df3ac2f19f0a76a2d1123b08e0061a296105c7df88c731bd178a40447a2f88a1c57b410ca48ea7f10b4510ea0fe22bcbb0290c8d9864c1474ab6ebdb15e487c3401c80e30f1c038670eb5800c2e2290167a02380c01c60fa8dd64b5a8fd1eb34d6ffb930d641b04a8f35a5f44248d32b4898033cbd79af4b4929fccf85e97307a1d73c8540621a78ba00e3d09c739bf3d22eedd22e4d9bd183f53a26df52e219f1d4e475acf6f4a516e51958cc1b10c91b10e5c0e616f696b20b4b995869213b8f767ab3f61ef98bcad9237f95a08aaa71e64e9f9b82b39a6535e3a9ef91ef91e7e4abd733b97a795c578304841042284303a584524a08614d92ad0636762a74a7c20c43866665556fd1396909421bfd1ac536a9cc610a12d39b7d5ab8e2c0568973d30228bc30e3065e7248b243c14862496acb0b7e10820d8e8ac460477a31cf98df7a42f843215713f577358d58ab71bacfaf240ef7b9f54b3be4cc843dd337ffcc8cd273374729f41ebd391ef37a4a44a11f9b3e7a4d25a2d0d7e6dea05e4e7ff33b244eab67e669f0cc15572c4da5a9482cb5af1e30c11e864645040d91046f261aa33411d69d6e317bb395ae62b18addacbd6a1a8655fb6aba3db1897a503f1d2b71b287586bdb0a96b256d3b29b4c16bbea3a9db257a94ca96ba99b75da51afdae312a9953af9544aab267bd535694f3d2e91dab567c76eaea7d76f26efe4e5d251df2e4eca600bdb533ac519a2ea4bffe99b6ab992a71de595de79d8abd79d6ed6b06359f638d437dda592be894b9c4059c2c4749b0ad63d7637d3911c966544464640c113d2605206344de576517f31bed26ddba89c81cdf6aabfae2d6c8d3f97556e9b1111494446430835959e1251a08f51faa318467934ce457354ec12bb6ebdf0a2a255e2082ff8040c8d8eb8224bdf3c4a4bb4542a9524dcb6535aa22fcd6dbe624de51bf792972d963d4448d7e5eda6ee6620dc954adb6dbc2d5d4796b65267afd3a6d239eea78b70d7ddfc33658cd9e2bedbbb084d9d29e6198070e95cbcc914df44b77697e7bca61251d8346fde8c234685114ae6f59fc61886196184045b301623122cc12ed090287d33055e1d89c92bce9bad74951c715113494cc326f6d94538cb09adbdacb5275851eded4b38410a79ea8e851eec521c986376621d0ca6eab0ee98ea6d2a5d552a3d65afa9d4615cdeeecfcc541caa6b0b4830a4844b5fd7ac4d84b3bc8ad0823f0c8d8a9092c548491423254b8c8a18c3cb1668488d517a4a9d5542dc4470361196b556550aabb0ca4b1cd5adf6a6a7dea8d353a76f5eada89b23113eddecc3616b2add2eddfc33bb8b492efb7019767bb4994529985ebea9c405d4db835df4e6f8799b4a4441de9a535f36883c1a67ee089145882a497cc036954c121daa8c41ab0080a1911063e089a191105c70aed781d4225e34d09b9f8fa97df65ed1cb10d84c43536393c3fd06e755b8ea996be67ab6755bb1c1beb9bae7bc5876737bf978ce7e1f83b8bfe0ce80484c6990775eae9b6c1bb0c13d4476e2b75f9e0d4ee9f49f76d3a90c0eea16e7744aed65a50d36cbe07ec75defdea7e99beaad54fd5dd74f5eed99ebf6268fa6e4bd67ae4f1b4ca1576bb8ee206cdb062fd9b3e74cbaaeeb925daecbebf2225244614e3aafeb535e179d74ced958a43fd84e3d0cf3b08b1e620c266148b16318f6eba2f473687af2f2178533497f545e52d6da55c22c5e452449a224094c4aeaf20512fc2249a88df4d0111410f9018c5fac3056331c1f61dcae86fdf44d9f410d05dc29b8e1e886ad2fd35f92cd325fe3e89bbe4c0bf591a8d35b5ee1facde2678fdb27c7f9e078edf13ef0b65da7bf7dd6bfb178eddb8dd71e351f983ef3f20a4f29561e06c600b71581fd7f4cadd866df48381b273bcc1c9eef6caa629788046312d69714dbe990947db3cf87672665045cf026b99652ca9ef4537ab39bf661ddb6799d96724e2018f7bea1f43d93f4d7a792f36a07a696a8d40bb7d5911c758a6864000000a314002028140c88c542b17048a84d7e14800b9bb0485c409609a32489511032c610638c21001862c088c01041db00d2ce0db5aab155e92e0f0cd6f8d23335ee6b69d5bd553daa0d0008fc2f5ca24db56abe6804e036f44b99abee4f39365145bcefb86defc23b24edbbb357874bb506da41306b49afb34c1ece1f9dc9e16f6871870edb00bd1111ff56cf55e383c6dfac49eb2b6cb541ec77dba89c5b8bda6763f33b9480706191310eb137d41a097afbced082d914197d01a38da76e4833917f0b15348e8c66eadd3b13639a1db0de347ac074c5b5b3451acd5d8b9ee623ae0ede1038c3d229648c0835cf5fc04628fa0e668bf2d883e257060281a0537ab82bc64a86bb9cce58e1068f161de23e1bf7040d8a2442d5bc8e45ab2d90bb4b824a33253e63b8d43be4b8034e280bad54d826f6d6251a914fef4eff0479f86246f196daa64e521d5337c567064fabdcd16222deb249a6dc5f405585bec4ca7daf8cc4b81f63e1461f23ba41c7f64851ec988968aa7276ea17b24f326a02b2195c7121d42a1309e48b9ddf43977e26ea04987ddc942157954e16ee68fc9d01ba5a9a93f6b30c058c1eb6f46d68a774318630b5984819955002c6bbae05c045426634569b94371c4d8b94cf840110af23f5949379aed832fab5f15a9a3f42c66792bb3f5c0c0b7ec5359761b74d3e3c5f23f97f008717f06df2813ef7bf92cf17f6b6ca94eb6fd0024a231a5ec1232c22ad3f5b7994a539d4080f137d892fe1157cb026be48af7fb1c2709f7f995ee5dbaa43f41f85d2beb817deaa61df6da351aab23b090037fef154b1f1c307d57fb3027c54dac5b470f48da3116ac0a1b8c3ce037d5bcca89fa335f2adc01074603373c6c465b4a4750ae9e0d57e65d5962131a2b6e448dacd682551df840bd91f0393e547d4bf971e22dfffad2ca5c8b98f0e96feda664dad3a03333b9813e01f20d39006b310aa72f2217eb088e09d8e4e35d44a9f7fe1057457447b9607147bcca5d7492e7568a8bcee48bd2016efd87e784c562e131f1e5b26b064b352506a0ed95d296a70c1b6e5e1544736703df1215d699c13d5c2505b662c81a0b144eca40b831eab3dd1db831c713fb894ffa65c764b486a4e5733652235a843fed13d49d7e357501dfe22471e002e42971afea815f8a880254e0c24b12b3c73060902172fe305e35c3c21f07803148b4be8cf84ca255fd76331859c75bf340bd601b7187d524430471eee0a8ce793cf01d926ec5da21c00397303c85d1d3c3ce98d9f24d083cb1425ee4ad050a0c4ecf61785d83c3f77ec38e5b3037eca8da95075f556af40934e8370b8e71d8c12cb9926249d6c5621e1c74d8c6818e33de9c14aa1ad6779371b2704a630e7e16645fc0f7480ac8e1c98a43ee090fc756421e201136a7a294be90fc314ae45916f9e31e31a9235338dcf50f5b7a594540d0278c8348a0401dcedd00f316e4e846af93999e551c707868534300fef41b0d0dd52b54e975b4066e29e9e08ca69c4c683ae989c5747a05078423d4f2796a7348a968459022d0a7f2798a62c5763b9d5b724f6b1c0e75a002fc0232634d0cf0306630142113750808eff39e5537d2a50ad72e3514046c12385fccfc61a05bf6a89faf2565eec891993bdccf6cff993200d587baaa0a7d05e36060e65c286a77d248aa95ec69d1cea1039b800def51e198f68a9d0ed9fded2668bfbf2e6d7d9646b60c4c338c92f9c211aa4bf700924f02f03aea0d88ebed02f15e85bfbe694faa60fc02ca9dc26654b1ebaf2fa113ac638b6081726236f8b289957d3bb138cba221edb6f4f7e712797bf83bf4cfe2fd20d40b9d35e4cc632f3e88d8af93e5a43d4d053d3668536daabc1c624e0b5aa0e0ce1d8a2bf3628ee8a52b070491144e1d3739064bc372d7f908a248ec970eeacaa8e1d11a3fc5febd0883d0eb9b88096140fc7925b0af015167b0d79b38981907a497d2e269a881282aa48de90e75f79010d2d6f088b09f0417655545a5ab4bb8f256dc65c733e5fd0bac8cedc86a7d162f3f6e69bc034f7b8065c4421194bf9a664d6623dda844ade3c45665dab34d68bcc75cc3a7a1773d87e41bef7faa0f0ca163c7bbf9ddaf1f45480e728a09e44827d3865a78b8734ef8592383cf7876a7012eb2512b2c069a9b1a98702aae0cc4d2b10331080f1eba6fb3728e904b0a86e33da06957a5584b4e5f9b0ae4d3d4c00ae210b55b0e64fb7b78d44091cd18a8f055e1bda4ecfa6cfe47506409402c9907cc4192c92902c71d095c16a93e658c91e63d5c66e3c9c8bb028172ddac509bc13e377c8082c9236412578ae1b66f59a1af99f3e501cc793044514ab574fe2bd3121ed62b526df0474b90ffa489692dae934429e9cc8ac998ec46c57f1adbb3b9346766c378665026e4b2016a5740c1ed8da0889976610b1f341c5a04cf8af04be98a10e703ca7b591ff92e8f783016f08ed00a452a272878dbf038a490355b7836051d9d0c2e55aa1ac0ab63222a0e446c3cdfb1e0cd6104675bdce01018688484c3c1a49d34c2a6a441a497f94a3a30060a5f187aeb8488fd6ae638b6c135cb26c2442e963a42d840df0ddbe1a0e9c2f1e7c7c651d71c7fcd283fda16ad1c68988787503b7dff0cf31d2b34add687c15a4e28f8810bd81ad49af059927af51ed1041721d2f64e83e7e50435bded2adb5d88c4cdb0efcf34d77302a69f1cd7e6de14d65c5b3320177c5fc43e87b5918afddf7e6d8dcad83f7d1898e8d536b9c3831f0ddf1341e511058001959fe3660f02a31a473437d9efa75bb3740d0e49037e21ad0aa1aaf56c33220411ad4e608c315dc208f6acbf7e244f114aef5f6c4818a21054da146331c93a261c7089ebac90e881be8ad9260e055acfd22635057abeac062b5a52aba76df04ff0122ab59b358b3927cc5124d0c10f6d15fedd16ebfaa62f690aad93f0bdec9db139c7f6da21ae6342d05b11bb5a43231e316bf5c459b8b76d3cdf186ae6071c0dded54bc0f2eda50e3002c74a0e1b10986407d876c761431d8ababe722bbd79074afc94c18af377431dda60ee5dcae2ea54567acbc925a22af11bef69536d5c0520fffc772df80ff9d378c7f893a52f814cfb02128a9f988f7c6b6efcc1a64b5907fd1de2e4a3781f90e93a3a0bd3f9dc184edf7ef82e6fe9076bb447985bd37bfda0f7469b04021f5863d22b3222f83a85986644c029c5aaa533af14d738266b486802c77ce6f36b4f88ea183207a6e73f2d68ce651cfabf7195406dc8d42ea4c50872bc732357c900e6174cff6016acec61f7750cdb29b4dca5d48e5c8634c09d6486504de643aa98cf753523920f2052f4a3d612a235d2388d881b8539444e15f677d8473a06f942e08cd8afde6312e95a65344e1fac77dcf80b5bcf804d642189d8bc8a07d5d397eb093294c7d484c761e6e543db798c2ece5e4e12065034fed2f4de00e0d40545e379e88585175dde8cfe4efe54025a5fc86e2c1a5e958ca8f8921b5468151a419659e0de68f5c19510f1e521b781e77716131554f10ee642697f0af8eae0049c30dceb3b53c8b4075a522c0ef67b93b0d82fd6c64cb9c03146920123917b31c1b87a4807427b02c5b17c1746bacfb1046da0b15873e22be8647d950550d9c9cc33ddae3010f5dafbfd554737cfe5bea6f93323100d77233ed7fc36a093a37f6726e8ce5b73d7693bde4b7d1d05de6be7d1f5c88005c865921bd433499d18f8a621b60030cad06b5d61065274a6bda7bfed73dbd313b57140c4c2b6dcd904caa1731ac235ba885176e19e2cbaf9efc795e7e86221cfbdcc1456e1c9bf4abbf8610c2801ef9a481f3f4e365d5d5d9bad37f67c82ca08beb8579696a1d829d96bc6acb5cba1c5f522eb63bbe30019cdccee52650c079a2a5c14c568c369556f407e93f03381f3043b6a55f04ff44bf186641df16deeb075520dc0b5e55e7432fd7840a8a361e74b732487c9a6fad7a60b61e0fdb23bbb4417d02b8e69d09a8dce3b567a9b9b46c27b55cad41a3e15430a7d81e6904a8ddf37c13d2379e6f4ae947f388bc8f4a60627ea520dfacf8ea5a949f516674871d23b78a7f43f275819bdf91e68f32ccfffba34ccad8b3ceaaa17739e1da9746e49a10a81b954a310b3438d1ac3e1891fd01d4e0508537dd513245ef5337ced9f6db9e3fc58efbfb51c88373b216091d4273f67bcbe66733e4a20a47e4ea0de0998080ad7ab78ea151170b9966dc6930395895b3df0d67b3fd382b67e5cbe902326a55ac8a22f540eba6e38d2bf3ce023baf64247209bde24b0bb007c09862df00c7650f085b5c8d1b7f90fe00d862d1372dd282a3c64827f3fd69d744ac639359b983ae1c53d6ff2674321fdd1e16c546b35972a3bd782e8bc2d08227bec559d864b33003b674e5c6171c60a5dc2595cca5cc4dc7561ef68c2e34dba9665faf14ff780f668be0fc8ac5f37ead312b6c50d2ea3eab3f683e6c32535581fac42a6ca45027b00b249253f132bf022a70e3b485609c07c5d03c63c04e4e1b73371363313c5566482387f0fec15711264825e52b5c49e79086faa69f80712b2c9a2b99559260a183e734ddfccd34bab50a2e5a45a3968e611c3d181702894548792fd0189806429ac32829c968d04011a96991a7ce5ab5611e06c091f3ff63ed627757502ff05724d799503a86aa16db362e6362aeabb45a12e53aa1889405e932df3aed0666a772340a8543743f761d30b4535791610ce43d5920773a48b936753644db7ee019ee675e76494783b9980105c1699eef7bb56290bb6dca1a80430d70a4ffe1b802d02e578af0789b65fe09d521d15712b41a4be2a479ca7a6aa109dbd2f8fe41fa8b789345fb468822dda7de8ee8e682b93e7adbe51fdd4e194f13788238ee505bbba6f3426c81390a926c2a78e7ac9a4405a29f53e08f25a19930761c398af8b9f7dbde213fe1430965b6096af7ca93a05f1984ff7e149b80ac9104c6afe1500ea002f419b6ee825a3e002c5b6c68121cbe8d01afd1607d4cd55a59d82a1def194967819302a4bcb9462fa287115c3da0463ab8932403352d9a0722c1943e616d1c84ef9fe4e351b1ae94b3d1fde6d11b1b01516e828b74379602ab118e75610e99f90c719e2f7e4a2035cf38100f03cccf4877b91abba904cacd1358c925f78a2da571a4818996cbb01ccd8046e33e6db34650a053dd6c21e415a0d5ae34d312146cffe435ceb4e876aa32937a6492067ec099b1bd69f6d82607d844e9a17b67cf3d105635bcb496ded220bb07e66cf1165fe5b8dd5ca05666f224acecb9819821284e4e644af0185fef1a13a6d0dbbff40d3677605b880b06bf6b3ff59860df7199dad28eecdcd408bd6d88ee424114b344ff06da38b8933ea756cdcd579c9b9318f5d54c9cfd9bee3325039cd43c3630f765920bff43956d6e20cee36a778a53dc380c88cd0d124e53f232fc2efbc932eaacbda93662ddff843e8187131d49fd3bad9cd7d879aea5655d11e5888a082a951d8414bd2d165efb31aae18f72e7497e60e7b252ffbd83797f1c0591fb8bfc6373a511f5fbdaa6c3ce972c5e235a9572c81ca66b54f4b2a6f389bc6d9eda76b8cd0cc554d40f961ae8e6ce11c0daac92d5b911f2d08dcfdf4601ba119b51c38dd5b342e2ae5b12b9cca0e8d834ec6095003725e4201e88b42ed4574d5da3e2620fe7323a4c42e1a6d4f1d4da7f160446cc2647040e1dea45826ece31db83b5e856195905e5e694126e72dd7ab1d40ed04ab8292350a484795e6ee88668830251b4009de9521197276549c747317af27345e324abfafaaf562d752ae1866e216dc64f6d87b5bc56fd964466850587b2d10d28df54d1b643385c2abf584a103f71106304306c52ade5179226d4efc2c14dc24e4894fcd7268c41020d6e12f66744339b3605c4b01b71ad15cff82f4573217bfcccde031e256d231b5b924087b01f801bad7bd805588ec2d773ca31a45fed3b334c96f6fb97fbc770bd950c98f64ff87e8843aa12432896010e59a3d0da0a2a0400701dbaa5e195a2788a5a1ce62899fc8ab5ccec289783e3202f3500c4c361ead610bd81e04c4bf1db62a6632b871980c0e50789fb9800d5572132885a63a6d3244c7b01cc8c9da0eb10ed1ab00bdfe985904c09bc917899cc3811f4e308bfd571c701b0bfa2b337893f86633a9d62eec5425b9f012a3d220dc29bf1dad8d5ac5dbd000e1dd5e00168b96f40cdf434a8635bde8783e7d2ba2542e9d96cf8389d76fa49037f078756735b8f3c754e8aa689765a64c4de25f49d7b6a9af4f931ac2d81aaba9e46c8a6e6d492793a467122d157fef943fc197e70813195f97e6ce3aa5ec2a4dd2f32e0585e841944f6c0c22f262c9967297e804b903342f599882b18cddae8acfaed673b44bb78a83d8361204ede0a93d4631aa64e663f8033d3fa23a4657f3511d3e8e42d718116eeb35c1a9dd8dd080ad49fe97090f49995b0910aa7c360f30b27cce8bd3f1315640eba19549c584c50191d13bb17a69c61acc2757840d1c36903e0e417979c59181dde9c56ebd925c4be76b17645b78e97e49d0de9062eb58509074e133fef7950a34e8fbc88408c7927f936f22ff8cc07a300dcb680ac41da83a696d3d68057e331b87b1fa2710804fedb79790d4cf7859ad4377e9c514f99b94f3dd6378f6b56e216642fbb17e73166d3912b20342aec4bd0218cec1436db7a5468e966949457fd9183fef8162552f9a56ee00c6f5016c055f5eb51518a23a7142c4fe0391cbceff5722af3a58f55afa9753e51f5ce61bde31458877fe8a603eaf3ce31f03a93b7264a7f24f351c98dd53a8f072d7e6cd231e59073e7d08027f214c287910dbeb73d1facc4ca1e64b62412241296cde98e6242d0f4ba28845589528b424ff9a9ba3623c4e76fdef20e3059f3f41fe9c951d6248a35f7766c06f99403c8c16c82e0fd7ddb1acb2460a5cf79787fc21ccc6a243fadf34687ddea6ddfae9339223e0f0fc3e310473b5fb538e9d2e69b0dd263f5b2a56e45da52e658d0736c29736aed48a7a3d7eb21d0c742ccc9c176ad658c162fd06f30c0864eff5946d76d7cd54c336c5f579b6514709cb1e6311210cb58d4b823af231428ccad6907d37d7c8047c5a2407b241525259402bcce908e77782e44abc551a67fb0d9f08a9565731605dfa11f8845298107aa9dfe32e9e0051d8214ee0076b57718dd09b731bb383ccf7a9633ad47d941c1129c745abadbedaad04cd9e3ea8d7a6470bb5a73603354a604e9136fb4d8f087c15b8c1414394d66bbb1ec92facf6609eb5539a244e3ff1b57aed52e45721d9ad14f077a3e672c777f840435b5f0cc034ae4e8069789fec8d934d9a13ec808d588e663a10ff3b4a0efdac515a1436db1105163d22319cad8ada5187a53147a4dc2c6def433702b42c034757208211dd3de5bfc82ca2117c416a2a4e24ed284aa974c2d0cea89909c291e54ac1844ef8e552c52e27e2b04f2d395481860c1257fed87ba05c3ba88c89910f637bbfa53cc34ccda2dff4427956e9d746825dd93b087f75c6f9cc5f6ad383f39aa0fdc607d0ac76ee7dac82a628fa52df85807e3e3c7b9641f52fdc84ff13eec7d77fc640fb7f21172eeabfdc35fbd99a15effc6f9d88726f8a5165ae0ff128ad1b0b215484f9a542d6698e1a6b60b3bc70664e7f6c60eb8c5bbc042a06d2f1005b719768e0e72ddeb33d7d6f1c85e82b0b77b44b70fc4b75a54babb93ffe1a37420913fc669e3ba5f0c780f1743c399790f575bab863b5a66c98a43d7bfbd4c2e0a22bb24cb0214bc5e45c200e042b4b502574af270660eeb77dfe2dcc26435459ea96c983f04b60425a923774c26050516def34667efd6d5f70155ca6ac34b9746a021da8135923553fd67e1049e645572c77403a78311782ea14a5dc882fbb00285adc824e7c734d6e31065225b5a8e45dc5ba6f44b5324338f6f91bd498fe369b9de367b21593bf21c44d2b1f21ac30ed55886c88ff83a5eed5eb8549244e02b1204e66b96665010e7f8009336177ed002e79df513a539b3bb121e6edf15a502defbd4bd5f995e3a99cc6ae2c9f47f40434e39bff0717b47979698ddb8b6c8fcf35fb8f31d3c5a21aa3da621bceae901afa819f991e4deec5d9409a55d2ed9a8b2e29cf072eea9c4b7dc5c23eee1012078c0666905bcb37553d9330d98964c99a0073afa82a4af2dc5cdd951342ac264b53b42a26cc95d17ae446fb0fc919a7d38ab8339cca39d3494ba98825c289c4806e6bc1e7c94bff2ec6c5a1dbc2bd0f9d49befbe17eee8e013cb141f845a532ec23e537c8ebcdcc87be830989b9a18378bfbd15c290fc9c0a03013c1e5c886bbba29ca2d32a0b67e6d6f0420547295f5e545fe992d83d853d8801b891e88397f4558b026a5ea02aec45c4d81fca66cc50c84db5ac69ced8851351653e9af13bcecf473c94fad69bf1abb5080e7ab2d50c52c80f887835dade0d52848bcdb0392dd8ea682e3ca4293c116a3b2441a275b7b65a140592a49359cd17ababf15dbc9bd3771cd8955b423aec4702e6e02c5c49deb5373c24eb6a27f8f81adde6a29e6d885eacfba863318077287bdb04b0a850c6d07ec96b1bad29115ba8453676b1d116461845de66c7ce4b092fe275b4f48d34808948812f41a9b71df6493076c2475cc0dfae1e8de9454cc8464e1bac9be24b7536ea3b622c9c1fd3419eba134268f86e828eeba825861dc2b69a572f1437b6b8c4537bba5fd336be395ec9b42eb4da134bb88a657f181cde432b2d1391c420d9b1fb29336cf35a16d0f21f70fa199ccee3a5294f1cb3810682ffd9c3625fb6249743c8c48b18972aaca70b0a91a8975c474b03347d7792f63c1bf4a6d4fbf62e4b6349910c141bc8861e7e9ec91c6901d4640b45cbae4e95c7d090aa809243bb675dc6928ec1e226d2a921debe877a3804dffffa063d9e1f70c85ecf7ed95bade7b0fee958a3095c98aca7cd221f845399aef64207f9bb3e21b061502958004d953b018ce179bf6553f208302fe1562bbbb313db653c60fea7925317a0a7763e082755830c3a4f6d9b7326a392dd8df7ff70b948950d8cb966bf64e01f686e143dc59581ac0d5b12211b27983e08ce321155bed6282f459f9ec729f2404cd43a03059b790199f03b99f2699aa55572e7a6e30ab40e8efd4d06f23fbeed8919ab0041c2a67dff3b8f9b4bd2f4bb5c929dbc8b13afbba90d145eb2595ccd6805fd5bc63689e63d535d7da3c4b5913b5fc975f21fe2b04ee76cbd71ceb657da2732263a29f8230c4d388d8699dfa8a7ef07e4c5e6f98188b01a9b015a15074e9032be23eeac4a49abb0da786c8c634ae486fb16410d5fac740fc7fd8af207046cce167d67f080804a272147fc0250c1095516164546a254d34c4b05cab6cca1a8739e8b52c08e598e2c4543477aada006914fe71a5f61bced74905762bf8d7c09ca000f72911fef335dae66ac3a1e560cc0902f0338be2c62362f79964c13b5009b8fe870907a83dcb8c96bd1d07dc4399044ecb72ca34e12d6327a310fe1a7af34481811eac097e0758ca6c72d2f6c96b9f0a352ecb812f2756baa0e5969f028da2f6a5cff0ffed1e0446ffc974988e2be37ae0be9e94e018b58bb4450c2b43d1f7bfa306ad693221241632e97cbc831155068b9a8dffa8b27c3f4aeda1764821b1845568fd05c7132b083099781ec15a425af29366b714aade531800a58cda57d098526536871f5d1a2c8d35156af53f185573337d50de0d4540d5f86c58c000c7900cbb1619abd7c8f55cc51c60ae3b63d81b5a8a7fb1fea68d313eda207f6212e62c1b630e00c55dae23840cbd56cc9c7dded19dfc43ac540af83af0d77e7d397a06d9970e1990ebaf641f0cc5230c635c236c60fb53ef99636ca223495cd4aabc452e0f646f5390e5fba5eae50d4ac601f6826cb7bc890c7ec975106d41f6dd0cf3293897e7bd3297924247c587e0d626af4c5aaec79ab904c618ac22c6a379926a5580f20a9700aaf8a4646672a54a0d8e98b0608fec76726181531da34343b79d5c239657c61f706fd14928ca1921e663fc7f49729d5ca552f10b38e5a6cde2a93dee269c3c2eb0415079f3b9f8d74ce3b63a3ce312c429a9005c2a0a5eeaa6af2bb6dc22cd2013771e5d59f784c1e58fdaba6a08a5d3729ed3d3df11164026f3539b092813c808f58fae92427fc8207facd7fc74c214e9be411e85d952c9dcd4a590c3afa98f1693192c01bced73923f6397e339bb363a35249ad4ba953110ca2fd84fb552561320edf5cbcd0af89718d0b53024779510f8a97a40201de62a5e77ccfc3d740d8da941d83d50e302bc6ce48906193ecfacc72ae6eecf812a4c8a519b3e2465b8a9a4005e289c70b9222cafba0c07fb25d92177013951e4785869f9e5d09f9a62c6332d9ade0dcaefaf321f732f1a859e90ea52c759303a5e5d7d8e8992526f51e2a27f6d1b698c140457e07bf6a5d5f59bdd4dad759c454be0605a9c284757b128659273be6076e5be95424c8587e2c1fb5468fc57840e35e64cd4e26b0563074e1df4ce75b0bbff6dda037eb68055c4e7824539ad95a7a29365b0c95570879d6d674a75232769d67f9b85eaf7146021cba0a003e9f8f717ba3c139e46b1d78112b7bc38f2e2d2a116878c45bfd4fb8f8f08a04e8c95fee6a2cf3e7896716f71b53066167cbe35bec6b5997d3f9c73fb56f15884c5856e243e21ba428be66229cbae109c3d6f481d9c235364dc8acc5d3c4452c8aaab7ef51833d2364aa1c9a9091f2f369ffd50a8450beb79606f5648ec03f820890d66c5f134f8d31ca51e79452e11a2e7f13c027dd6c6c52d4b9f437ccc1174d5a5263d372bd1f7c0c9579f81253331c91a41afc0e01d07df4e6d6317ba7058328fc1aba14238d57528e644e51084e3a6c9c98d702052d0b0113cff1ad150446919ea02e635cbe7663c4530bed97c9a430ecf2f2c23dd3a78dbe98537f48d37c2be1d2c443db6685df049b1588d1ba86456aa796c61416739fed66cc35a8ea9170489402bd80c1335656564fdc2812e18d83534aba1e10aca2442a8e039b6d52e991bb8d3ee838fea127be6a3bc925a2c46cc8dc80e8bc7508359b9fe8360b59b3045bac727bf4466503d724c46c70b04a4dc786215320e120d718073009538a681844c0d7afbf108174f7c2ecd6d9d50fdd4717331d3cfe101864965471acfb2c94cc9b7e1c514337f5696ad8a40cb297ec9a7c9e8f01dee04d38aab6a3826cf314299471ef21ac81c1d8ed92625d08cd263487dfac694d4223954c088561e244510e0108fe933b5253d3f402d810908ed9808557c93320a51178750a7b15c9b00804e328583ff90416a10eaa6f719a04c11a159507fe1a8c497dbb29fe23ef3e46c1cb9a658fc337c0df32c084902600c1500925bfaf93b4f51701142856fdd564eadd11e4d1f141f9a44ef98911e4b0a6752b07adf718a197e6262f27536d1078ee247b8e68ae892379cd40b6ade53aa5784bcfac088f48c0f44ea874f1a7d8d40429156e63068a575a0ce6422a4490aacf08bb3b637bbb540da9d8c0b30682025d2e597e8569c8575eb0ed62cf4bbd4dbda8f11a44908be2fa554f65bc6674d913a9fb088b636f0b8dd7112b4608e453d89d0d08814b80a9f3a2b65cc4a1193a05564b6f6d6acbcb5776c7ea1db5b0935f8158c02c116fa461cfe97e3ce98145ee281c1ebc41c0353846482230c05879afcf65fb5fb7a83ceb31ebb4f801d0f855cd9812f3ebf6cee7c59a3a3165891b8871ced779cb247008dbf93f16213cae38a67f57ed3ad5c6f5eabf79bceea7de35abdfa065a448e0adc5c624bc0562fc171772a8620c1166718d9921d34229d3264e17a15324070d20a7f5f52ced0a50cb6389606678ef7ea0c0af542a0299d4270c63d8a9b88f76ade0c9ad30dcffc0e01d93c36abcaa679414a2990b2cc1d988b496d02c58c6b29341756d344bfea7bc5288dac64b14bfc83f52bc6fb75dc28bf5aee41ef8d4adecdb9649df82706c4cf3207550411034bf9835e3d68b6b29fb83666f782f3f38f50d259e717d13318ab5f64342af530f6abcd8888aa0e04ff5536dce8ea1ab5aea20bd1b01440c3e2fcbf73a4ebaeaf7ebb24447ea0bde724a175d51c27f81538b1f7eeb86e4a4031633c199cc93493c62931d3d4cd1cc968c252a29b94706c13e40495399f4d4e6a71f32ddfa03e8d9a10ec3219a76032f03677b0d9659b76a2a295830c0f487720b54ffc84c050f5d29d753c1adfcaddff8d84cc41b8a5a0f674966660a262b75482ecefb7e6deac2b8248a44d537077c1780acf34f94a11a0ce33a1aec02dc0a9c6c4265c2befb5d964f5526ad4ac745050278e9585f4b65b35987dc38556e8a85533139cac82d26ac3f344c90365ae48336168a0271fbea5f65c066401cdbb0d6a578df4a3e7c66e0ca93b282ebced72a253c2a5c3e965926f011a401c5a73feb23d10e957049cf7f8f7a28416bb91a10d08cd6b98b782d3c6e54c30d47dbc228c7a65b58f4db1a052463a65ba55d91e3c4488e84831794cafff056a184a15abb5045814de0167e8f25baa3b9e08aa6c2fe0f8fe51dec9c29f9a103417311efa474f95b2bb11529ab619d8affa06b23c3a7bfe40ca5710b1f28f70371608b54e46c001d1777510400f0660e7a86c9218747b907d0ecf31c18e9538140bbefc2b6cb80c7ca9eba361ec1799bb2343847c71fbc462b969d5e8601a6507c697a8c34504a674bfd8c3f2dbd7f4d2c25e63981118e5a9b5148cab4c0dba60ac527272451725796714f28ba29dd1e87494805039310179b5a6d28f2387c63ea876fe0f30a22bca682d2b38a61f4963314367c0933246fe0dd20b0ea2fa4980ddf7dff60224000394712827635052c6818aa377a90f94f176a72b99af0db2e42345eaea33a05383ba35e07a60a2ec9e8d42f53fae7d71295b3d304ea81b2ca6bd3555ad3e9a41041023b439ce1306832eeb516114821740433ffac2087587e441d1620e7304a8c98d16ec574b36a8ca9facbe005746fb15a20cf64db3b8baf99bfdfcc5e288f168c7440687b7d016c47f31b43a34acffb8b6cedb3fcacf3ee8f7daf9120da0110d38c9bd7b7949228f80f10faadf0b739db80b448c972b71c6c8c6ee70688a2271e103b59e7d26319becd1d4beb3d3fa4d53b2dbdc7e89df1aca6d6df804b61fe4600187511680842d2093ccfdc55f0d6dbf0306169b1a8e05a5494cf87b75a79a3c1eb4af3a20ef5b481ab899ed939dd981d2b634c5dca8b575b46e729964a36e44f6f2021d45dfd74f98e0d377c936d18e7d049f1034304b95ff2f4a3386bf8cb5caf1eb5407a289143cea9119cd910cb80b352143ac74e51010f32c43a9405be971207e8d5ea5d90a4def7c639164f6a08113782c9765ad45bd2529640ee440a0483e47bb7632e27fbadf54d647166185087f853a8e85ac59a89c162ab82d54592e54e84255ea85fa4456876f9b4eabbf4dc2d65aa7973de39c24758b35b6d2955655a2d8f009344608c6166d8db37150cbbfe6564678ad9d9167497c41eb65a5f505a7514d4976d9cddc2b84d1e2389a052e6714ba49e2911493d04faaf6c7e2f0fc6b8a21928b1e11e160ed61ba99fe6bb13222c4b775c9f6455ff56309483953c06fc773f24e342a4322754b2d8ba12587979048c5bb816e93cc14bbeb20e2d283cec318a228319a3dc377bccbe03a501d1ee7a262b101da978a0d429ec75fd28e8680ca4e072c6e2ca39c86fa2a2e56ee8679a83341fc3a57bb5fe3b792574f7d3acc85a58ad063cb6ddefacd40816e0692f38ab55ffa095034afa139fd9aac0185e901e18b4090cbd2cd11b78042930b8b87a7dbc6e15f19e086a6afaac4a8f972043e2bfc1ea938d4ef54e744e6a68b0e1021dcbded9ccf16d60023c0ec6339d8dc5b2465ad39ab64c98598640de5236d2fbad0a0a37590f40bec5289e8a6f0f9e3790b689e689cee33756e5a402fa922501b5dd50259a6a47b51c81460f8285bdd8f4eac4387c646a23fa7f001b5de99062dd06f91b40ce51a961c8d013f95cd7dbcc4df9b9386f3a34ac93a9bd541be1b5c6984cb03c93c6a89df540380abbf0295826eaa5d75578e324f56033c1ccfb42d55671b464d1894150b11d9049d84face17f1f95d9fd51da25c535a144f9d34ebccb8ba53f85c9f3e21026184fa6107c38afb059308e2bfb58d82ea1075bb130d4b9592c4a666da1e77c681785dee78820110590a4a7d28714af3e28687feee51d66430c91321586ba880b4de7a424046e7553b4d0a508654e0ab390432ac8ea61adf80498b1a75b590e47e9b91d519897addffe55fb848538e6b86981b17c5c0de8953828b27e3001051f5ec9876d3bf2445abd520dff466d46eeb53c51b715aba61d31b6f6952434d7d4a4615cd6dee56f51647a7a227d54984ff7a0307c1b5fe66ea05fb94c028b55355723d54bf88e6ab76fa451f1cac0cdb8157a8986adc86ba60ad9c980c4d3dd841448ab489ffdb857a13f5aba98f257c26a2834d6273c6c9dff4d672fdd447a66dbbe7f1f6875892046c552b1484a4b79086b26bc4b275182f7b4af0342fd7ad09c5382592f3a71c0fa587392d06c8b0ec706f59521c465bad305813ab4709ad1b50a76280d886dc42b2a1dbf25a3a96801d8f87094b29fcfa1cbc3fc29e064c8f297b6edf45c7771e81efa3ee5baa545e6ad2df4497940e161b8e84789e423d4f7b1383ca7972719664a242090113a3e655105f88c63b23c95442aadcabf125c37c308e65f50e6dd0983aa521bcfe520216947e040ead640cf4f74e1b36d43b92dd7d7c54d724bf6be03267bee39047a34d565d839ef7d1ca4e3d316f455b2fc37c314d98c4422499d9ae44b83a162bdec1cd74af6b57737278624234bf0b6fa401866d41cfdb2a04ac79013bc4c1543a42c2dc8f5d0b9750b2d9aa31b7bc2cd1b5b36bec5d83fc43a7d8180cca436c02239fce09828e26dc57840b8ac7f8b11374f10bf8e372aa47ff5b98808e4406ccd51962f50215ef69c4c9faeba627f466ee847dbafa206d5ba4be65dc3c4d5033680bc5033e8b5a8e50b4b6d4e14fa681b9f6bd904e249d1b976b68ca7d85ce1a9a28e79cdf540f2ade4572e76242a778aab564bfe4c2f6b46c5f96e01c78f8a9c0d1a5f2158f45e778aa0f777f6a5de4be39f4981848879e3972a92dc7630cfd1a77f81a272549fefbe0b37d0ef2e243887f81b7852a79e5e697683956c8e1a946c8efcc982144d0b773a436056a2400f751d0f90ca16677f75f3edc328543ba3fcc1b8f4fc6cbff0edbcc9076e9b8d76d6cc7cc9c3ee2b6d495963a53e840f37ec065e37b27c6ec5a6d7d9d3c1182d5aabea8118413c97527b1a535b67332b092f9b42873955da61e19aec2890f70714d4af3beb345793d58ce498305800cc72b80481098c4710e16e3f4c170aaf954792322a4f8dd9b806cbeae5c43d75c8d59463b4f305bb8e4ca48c78d4ae91b166344b5963cb885d67f694d86c4572c844f02495bf1f904c4cc8906ef90c7f5ad8e13746011314d3884787b9258a2b7219926e5e1183f99a315409246f9f02bcab85fe31db59555587ca2e98887ffea0c80a4727b0488321d0ffe6f44eed2aa4358b224172923821f93aa8842aa668740ae12389ee8476b971384b316e0dfe9016122d240c0dac34864485ad45c5b4a818770238a91b6b0ac873b20941aebc153a8fb2b165b49d08a7967efb6dca7dac2c5e06b27f2709013dbaf07518aa3d905d2d0ba239374c75f5a63aa1a62b110cc4b4c40e50481ab9984a6caef63d4b82ac55ddb6dd012271144cf2a1bbd1861821d429d54957433c0fd6485afc08f582be8fa36dc28daafc18be1ce94b1df06f924d0c66f30ce7864a94c2459d04ba35c3218148293de1e31cdbef3aa56c3fc084542dd0eda828c7fa3009c3a9cf38d7b0ab0f86409edceefb1e99ad5a30591af98efc1eae92be8b0bc9542c84a01995fdc11f9bdde35a3cea2edc3e01db9c2722011acba7aca22cec02038519f01f917a332a0d60a1f78741eba4093acd20c8ec80044a567b5203615ca9a4a762c7a0cfd3b30f0667bab213202c019ccccb8c1f065b3fedb4de92abfd2a9b8664e015000f79f0b6fb7676f857da0f58530d48403671cb2b2d39c9dfe79ff66ba07a9266a76b0f4de766fb8697883a2e5411a98492cb96834acb17104b497872053efe0d4775e1d240131d87fd5225a3e12447d111810607caea7e3e7a856f1148b1986cdf15748a216568fbc730f2ba21b4a6af6680a68c761f183aecde7b6e798c35e64d4b1f52e0e6b5f19c42593c81847787498ff53ee90e7f7148b5d395572cb42d0d6ae63968dddbda6d8c31937436a0022b292aa9050899b5a80efc33e23f5fd2011e96f28d136a0fa8ea5fcc934921ced468fc60c2c0f2c0866577b7c59757348052253cc7d0829fb511b9f89a7b5728f571d67bc37cd00379c6e55abbee81503c44e600db401e1fcc39338fa574a0bfd0f7fcc1304ad296a836ce571649d135c0d91f38b1befaa655ef0b57ded4e589e7672fc03abd75fcd51a2c2f4962ddc155f1c257fc2e9a55a05f561774e71b30d60eda3f0f5360d649e2e83fdeb6916347bb617eb4838a08d0de83a1400eed347f43ea2aa7ca58fd39099e83a6a122ee41794721241ed4ab1cc7b4c1cfc28cd469a0b8bac0577961da4eedc3167a6a5617b77c99cd499631f66f9f1fc6e0f4b76174a0c7533fad3dc58f71d67370318a11e0821a1ba0d51d17be575a9ed440fd4b395301bff43b044d5953a15e8a1f4c2eb8c2e2b9448c0bb7a6ca08170029b203062879c84bef8bdb43c76f554791462a807bb2b2aaa4f479c2cebd1b263785ddfaf760a7a4e4c003397492d41db5b9ff67dd36875f464d9766666659e2c98da089fa9ac3e1c4c0f3542b830c8d1826291f5e5f8a15b2ed95a574a798460e765b2def2654882ab6483221c5a1268976c1eab7d6d35936cfb555f357e26590fa83b22bf87d6d47a775764b90dac9a5e71b64dd10410f2abae58a17a3785690898f1e2231cab7b95d5a3a8b809de0c6c22e864b73bbefa1f9a0cd494268ed2e0baebb549dd31006b7827b1bf9f498128c4fd5632c8132e9e85d3b0f1bc3f69cb9f8e661a68b15b56d69ede8c1f3a290b515362a1654d44ed382905e24e74cb1bc3aa893d35c3d8ad3941199167ca857547d4943e2f85312a32af2a0064125b99b6c865e42c13b7e05756ca2c2d41f353dc95f3c82bd5713ea5d05d86639043d3471bdecb0a831ce534ad4b3d7364891035fc2533c5e4849db9c08877fe28686644df6517ae81a3e32501ff8761d1ed6ee5a5afa3688b3253fda82f048f04d89cff7da309358c2918cd23fa273d4d649e65bb9e65e601bc313e5fcc23063bd907544e0a8d94ae02df1cac9106ba62e1e95734988aada9f55de4b257eccd6106f10e1833eaa1778fe327e8913e994fa2d7dd1ea0e348241f2d205c38ae67dd8ffccd4d438d2c235fe84ece28b80964e7b35720131882e8d9126f8f036315c4cc0b00b4a00455074ca61f402f64cd3f6b65d55e2e353bc4c1f36f327e0b8f2373739d00024def7805e21aa4a0fc366a667b14502660c844a5b4facbbf06041524a074eaa784fdc0a19c736e5f5c0208c3793120df347e1f3e0537cceca74101383967a877c0eb5b5fb7d8d2a14d68d2e5fa66f62782b0b429d4d83e318cdcbd16a2cb75379a7d1444996c0e239ebe264fe03b851536bb788b5cf3381289de0c3aeef6a77dce82c08825610593d62c026056610a2b0183f82a5a658375cf1ca0229b30e750dae4d253648dac9a45f1840548deb594874580e81515552ec91f27a072dd6afa5959bd21b9dbfb15a744d3fcb8e91b1dd3129f1a1244e20a2417801bbc7ff777057319fb4f97b935b56fe7ed640e79008380a0ccc45eeda420333be3ddf5475d37373c09273fca51496f16822980553395028cf1038c19350dd3a634b97312dc34bb1a21232aefb076285c52851ef5cbfaa44c80a926d5372c59eb0ad05d4e9e87a118d22b9c85fc366da09d347820fb025dd10c1a1e7f15d53b415a39ebb95ed57a589a2ef6a7f3b65db7983083117cdc784efcdadc3e772d661f0b91ad7d29f44a1ed97220297aee38501c010299826a55738f2a809f6cd1dba3f58b82d3671d040fc55b9421d9fce1451cbe9e1f2dd35c58ad1137a3bab3514ad4548bd36cd6f62404fa5a607c5df2eaac2f2011a4b54ee841d14da68735acceaa4019a2ef0c79a361aaabd3a588c36e9ba1a91e436e124b5bba5c30a3d8f4e5bdb4c89c3f58b1c659504ecdd392aa85e384ccab4b24ecedaa81319d394bde15bbdaeaed8e970dd0e9291a54e55a3c3a1250f26e9859ae178822db16d66f06f371cce9fb529f059731297ccf055b9fd7e377f3315cdd817a5f6bd3011bf1d668db8afd300e27a214b44b00b0923f660d92d67e2010a69e8310e433b049901c8c5d4b1294139ea8864b230a5b8994dd783127b96696e36c8e59db9e408952475176c9bed567bd40c174ea5c71c120d31da67b7302497d4e04278c058672b75e287fd0ca3f14284201902cddecfe6a1fd60c395e21d3383466aa0bbf0db657bfd5e76576a3d1b76b3d6feca5a1e5201d44ce72dd028c0c5a1e65db16da90e47f9ac05c3e87f0e609197a42256b7004ad10b01526a8ffb03714c4fb35e2ab4ee8251d387224493a9e6ee45b5c5b52330202625f056df65401502bf309f16569f4d256f597b3483ecfa8060c63706e1a40a894064ac38f7f90383c54e37c7cec80b50618c862606bde7d5005f78803766b8369b7ba8b2a3d771f18e28e2568144dd3ac579952fe36ccc55391660dcd90aae7531f492bdb12fffb05d94b6731230256c8b705b7d078ac54201bebd34e9a2442dbe01417dadc43492c05200577f88eed43559771ac72bfcb360e02c67aca52f40e476c11867633a167b4374581606d424d9d6e3738f4ad56c1e2c1acf86e458dfa6b8e98a58567f565dc7a03b6b383261934e664f8b3c106a447ac46f59222165e86cbe885425da08db1567fde61e5a1fe4fde6739ab5b7263449eb2226de31222fdfb9292eed64e09685922eeb5d9e07b0f5455198e00fc73cb8b84f903605339aea2d3327f72f234b51b36d538a43965cf99e19bc6e6d5f77973f0d50b8dc9155977aab6185ea7744b37ec009c6b7444e6da92b3763fe7b380920b0fd76299dae3e56617cc5727cdcb6869d4d4014d6e2deca011a179dbcaf4b6f33bad37345e4db66dea30187a6f2c4f740c45a0cc54187f836f92647b10181392b910c292758f24125a770eef307d84c80c5884c31879e78467b3ab92e3c80f479881aa1fb56a8c0d941d4f271d174131bf88d8f20bca741d3807054c3c2f56ee0939b8bf7b37f5fc1adb5a16409bcae4b29cb3e6c07e84456b505893d10ba935f8c376289141fe6660b3061ed52788b9959ac9ff7cc3ae292319f65dcf8269a1638532ccaba9daa84cb3c1e4248bd602feaf513255d963883741806929baa9b35f0203137264d45cb4a7682537924d25c45f4d6f55d98a8e9617501c1541a3950be569685f0223cec8ea3773407efa5a8d9971016258bab401f2b06cc7b79cf06833c5ae510941662c3f8398fc6b8ba76ee1042ee4edaf383100781457d4ab2f70a9d8a43a1f3092f504d4e2836a1fe9c5fb6eb86c40650f037db7a783819adfb833fb6b7ee4d8ca6ca887f54582fa6c6382d25c957a065f199db63483690802e9f4e60b11ae8150f3e630f13b1b5375e32db4df24af4900e87f4dae13822da7f78e7a3a83696e7b868aaf2884c0216351069dfd4bef9617883487d468296ad555285a354df279fd5549b82832c1fec8b511be1ce90353122e7c3ca5995d5ced2419d06e5436bd43672967494cbfd3280e59f8cb36a7e8d4f73433c87efff10144b394484b316df19764916a1ccdc1c1ae3f059685c864f2f744c62dcb92b1e356f88b3730dbe292c7fb24fd3ec87b89d697727f06c9900ac982184271a9487efd16caa93237107d2bb849d1a5b91a031fc004499c5fa9cc8de898ec2503c000c36a80100c2ee280715fc754e47db9b3106c3900e0de1a017e239b01989c12a922d474aade8c1c70cea148d9587aff3757f552eb65b59a2d011d664a6760477787fec6f9f9aea11bc8bdf464a11833097f832c46888accd952213f1a6fd7e714cb591e673b5b5298fddf9ea0153c29f13935f285bb1fd46c4c317cf87d125e852c105b90116990c4eb2ea240f8b08dfd9482c6bb9292a2a69edc22fdbd6599d3a4c7e7fa3c1ff0a00c7910b4693d51326e61ec946be68315294dbeb0641a2d09b3605d1969508e209d232e6353282f21d20f63ce3b6d0918d333d74107808864965729e6e0108ea031220fe7e8ddfcded47ad1cf5bb1e3298daaea49d14c30505b6a12667a2067299bf9f9dc88385d13b93f57602c3ebb52e4fa39cf6e2cd8b2a8ed51636b55024c98dba3c6eb26ca1f8605f706488874b7edf91beb0c3684f4f3f8eb94a5c4627479580edcedf4570ebd3b15b5153d6e8703dd3674f5dc6041abf861cfa7fb41cf91671a586f17945b109912aa49bcbc46c1ed96305b2c34b6b8ea1938ff9563e781f47e4581fc58bb0ead8c0f25f033a3e58a71fc067776f69f48b915a37ad45c9db3e2c5b6ddd05f300bb9d0a733874b1b5177b2c30282888c94dac659b10c5891d2b801932c135f56054b3ece596cc70ebfcc2d50385652018cf285e8a8a06eca8b955172b260d44f115d1e7181b529b806c14c821cee2fed528f3aefe5dbf5368a2f9770d8634fdb92634ea4df6fad11ffbc7e993d5bdc5aef566367ef6e5509df1c68a7d4abddf25703aa1132fd8b52ebcf092fd2e22307539d86afceceed2185bde4cc192147227cdb31d72f662106c067d713b463ad848a4612da6ee52cb48b68fe764e56f3a78e0841ed76d1fda4235b4206ef5d043b7c5be328b2dd32ee990c321c1991a19f62eeed3cfc6033d1fb3583056b1dd299a9f3836e1f5a94022db283c641687e2c883695b6cf410c48a1ab01b9f43a3c35283004d23c403d1174b2b0b14273d2426dcaf98509a60cc579edcdca763fcc4351f468efd2af1f278cf66340463bff77e31a29ca941ceda44b92fbded3dbd64e13d0182e1746a3722d84f77d493c174fbe4f540e0742f1df8e15006842e640c2e193416e0f4c242a95d55fb73e6e34a8c1596a49af917fdec01b9f1fbb492069dd8db601bf01bf0c90093e4b8b172780ecacc7f9e1bc14c0c601ad92dfa420a7f8b1b93f138f5906ba86a996c3b02c40a50d369de3c1050677391921c49d8a1d672237ba4c9bb9a2f4303dd478f0b9b1c362b701b3dd3aa68553728b2d121142fdd1e0f97163860e9a11accfe590b43f5f0cc9e16d5624b58bac21804fc316f7d0dd78c06315e9e48bb3686e619df2709bf6b76b79e95a0b3fd604bafddb37ff942bd2b0b78c363cdc34b4904307a87234f81be56b748b03e8dce1042529353c98a65cea3a828a20cb4ada0facccceeea8875bd03d8808863b5c41b42731892ae313fc12ea99eff2cba1f0465e0dbe9fa54fbeeb8e30d69985882df3f16f753ae72dcf11fb475877b7ab30c6552b45562d4224875c22ddf68c113f9e2b74090766d5ac3e5c87124ffb5340817d417ed3e7872a8579fea415eecbe3edf6e6a512d00d635d333c0317a65cf0a60c903a2277c0046219b04f45381700e98b0b0834c4a20e2160b2b5432e3aa9aad003f32b3c6c4e2a469f5011382a90b53ab5349458a7baa8e2ad0dd7b4aeeb68361024ccaf8f1ddd8ce4c346125e826cc5e62ad554cc435b98adfcc444cbe48c229d3c56067410f9b5fd367fcf371c70e65b240d1584b2a81a5c00c140ae84cde4c061bb6890290f65b722c4526193a2cdfb6455c42acf0ba8f08634641bf0599f807d73120ac546fb81657b42083c77eba098e76fa3cb805b6c5a8b9feb4c36dd7809c53239e2235c1279c81a31816d632d496b4d7ff15a64aaff33665556a4ef37bb0f4631e0db0438e03654743162d1cbe0a28f87053e5c8350a5b5037dacfb10c11fd5681e4faf2177e2e42c7d0d5f0a3e37e70d908ae01a65371d313bb0329adf03e28634c0b95929bc186f318234c2e3cdc42a1f9e9bc1b22012882bb58036d3405ff20290ec696638b94131242c79ab0405cd07b60977cd294ac51bd522d574dba5106535308d4d21a8dcef5b06db8bd70ee49b21faec706cb4f5e1019784b306ecd7f6ce3d8b2de1fed3cf3482be3cc367753c255eace856f31a6fcd49a0d4f4dae42a2c991595a7bb5fc63e306a82dc9713adc6469eef85412e2c0e7c377b2f40f581728174337b69f723651a17c0098e71516a9afbbb97f00bb600b98da8d4cf1fd632da7e5ec404d7980c9864d6ac99be756643c6dc1b2e562909bb25311a4a1467a541c29207bb11911b2d1a7a7aba693dc4ba36c6c1e0aba705c3d702e2fab6ac9bb6fa85fadc63dd179d80b0a9f5f5065498815ced5838a148d7e582a83b03e5c84ba790708173441797e64d028e2dcf746be419133b90add304424ad611c246420c72d271dee61a71d96671398aa190a05ed48766b6fa33b1d690e4bf59c34dd4bb36ab53908e932086d360d94d2f89a464fd5abc1f292c9e90a5ff09452117501466f67f1b0a3b33e9a08df165ab8db33da24450054ae3a0a18d827533865694f5fcb7399eb4806368a7ec0b8b735779abf09865e56f8288af8f781e0235c2726226c7c5abdc90e847c74a54e59c967a65f4194c2c7aa7e68c4abf44080fd0d824c9454fc6cb592359a89b2c83433809277c56a01ef560bf64dc10336aeaede376bd5af40acd9b863d1d936a1c5558b8c5e9e35bc7011f0a64e2f9a16b28cb0c6b049c13cf6037046964216b249ac9d272faff3896a5b38a3664dd28be5de35c4683dc1a9d9a545dc926a5844fb11eb025dfc4b37ef768260268adec8fa95f1e4554daea3b0fbef727e061dcfce51ebf1f9ba745e2b5b4222bc36d6de6a09beab3f8826b8bc3db8b2844868acb1248252292081e5e4c1b7a956f945e55a40c44ba1440ef970722c6b50fa77a3099682a83482b0941338da02fb8daaee8f0d6442d41e5a0d7ce3c288ca418478264f8115e5e71fa6967064a879220a43806cff42e9512c1d65d6684e0cf07b5ed83b0be9c028253c35eb5cb1d60facfb6533c46e66ff31b91f952e28112b4efd99b964b3f4cda53857294ee88a8da29dbf8947e0bc881f68061aa8046284af26efbd5997876507b0785b9fe90bd02f263710cab6c245a8f170990a1379142c122f6aa1fc76508257e19c3b3fa85467051e6e3c5c63b42ad2cafc8457af34116f6d9f71225f4b14a1056922fa0569ea56c2b8e6254cf3cfdad854299961ad33d82f013ad179f2585f5dcf725eeb758fbca472dc2337c7fa3b05417f52acf57e6667b94f9fd3aed7b09656ae5ec1ad43af930c34e4ff25567d3ea6fe7fbff3142338ed443ff82c782e20d4a5de3e29512868d40e9ed76255cef5937c4b61270f6ad467d33be64d2e9ac9aa37fff655608d1f3a74b60a9357a9c28fc7d447d2628422b7e48ec8ab5a7aef917b5eca9abb52f48beb75f417ff19217e35b66b4e8a533376fc78e3ea7f0e353493e17d13f5aad7fa788fdbc42df850a10f8e85ee8558bec46754249526542f5e0a62d1418d319b67b94686e479701b57cc6e36bcf40e3487aed90b16e953503c8d340a0446a1cc85606054c82e8c8029e4cb832a0347319e0aabd168a6798872735c519c46a76d23153bb61f00d3b994404993010d636ba5f9e70e7e7dc6aba7f0095ad48253201658090fc7129fbc26cd581f2b9fcd9c92f74adf6e0acd6af7e9102760d4506237057f5c9b338daca81e094030de19d561c492989fbcfd873bdbc8fe4d749b0fd419ec4ccecba35fc51b4c411e095a1bca21f0c046ae4becf8e534ba2ab5623fdc34579daadaea5fb759ac84bc3ed26eabfe23cbf520e8a55860375b2b0e083aa16df2076891d2091cc8afb0939bed4957a5f502964fbe29207e8fb71e7b302f230c152e3692edeeaa8f9a54b9371d4a7e51329d0d47e064c1e42ad8eac309791af4af55030a4acf87672a00b9814afa19c0631af86a13cb30153fd118d309f2666c47d2466d5e61bd3cbdff416417583277361f7eaa1678d5b9d00c461be1db3541b18024f20192efbfb64289128a994968e030f73df5808185082e01f8636bafbd4fa3a17779c37f75d0d00f285245224bb3d0c8fae3527ab25c001da1219f6112d25ea33874f9d38340b2b4e04e26012c15c6b3cad144eaa5ace620703a7ca353523b1221659affcfd1c8ffd166721c49390f1fcf95995975bde33cf61f61be19d02b23c29bfef2cd583305baa2e3b0ce58b50f70d76d7155367e60a339112d31f2c13a013e2eeb73d03e2e9e5443117570d4c731dd5f9683d9420203d341dd03e4bfdbb3aec08aa1285b87076c781ac384e320d3073855587acfaff3d3a36ca86886ab085ed5ebfca6730427d945b140d54b59a635fdc0ccb55362f294c56d06e2ff362c5a8a61512d242bd41d081b3938ef96abfb6ca527a294070a2a71e38280306c9a6cc602ece4f68fc6f304222119ddfb8217891a30c0a855b1d81030e3cecaa9f79811691565f9953d2fe6efc8a65626ec5994cc1403c0ad6f6b51e7eaaed543fbee0135a04996074aa6ae6a6df419782f64b646228dc097e953bd8ab3ee19acb2d0505208095ba8913bf1aa765da839ac17b105252fdac531174bb6e9ec26f334fa8a50553a4025385ecaa6515edec8091bdb8198d0724240281e82ada8871533327d563b5e397340e485210a00d8dc57df84d09332b87d03ee24db295cf2dc6c5f0cb09cf26e6f453548042e80a1e85f77a8e48ce70c84d067daf5d9a459992e6b46a9402f245abb05f002be2b70fd44a79d5090d4c281512fc132cfed754724024c49af2579a5771766fd3d50e1d9a6fffe5157df7d33c88d1a99e9334db9441af298669cd46d116534d5f0e89c326b918ec32119e686b99aa880f63279bd813a1f134dd7ca4e32f716f1ad479e39de953da3f937c326b107cfad9af8293937dde593e73084450b7269fa5ea5a6142d50357417eff649ff7fe30d2fd0a8d4fcc4053a779f6e3bf3fb4a3b35ec20184969a03e10d513d4aa4505ecf6a5ad8f2f3eb51dea20a1d01be3583e9597b06094b22a5490f7cc15c959140bd18331c269e8ccce71bc25e0ac3cdc31783603afa69518876237ab8d5e333d122e36379f0c2e719682899d402e6ad93a13122d211b0a313467f72cae60c63415d4a0bfa87da4a57d201ef8e919d5dc7ffb03e2506819cfd5d9119600af0048b34e3f9974e084853813b52ab91d7b8582a1690fdfc522419a33b8b37cd4c4ed0d92627320108dd70a7f6c890961aea82d33a215f7c36472cc2fffda86ee15cf3255abc2f4306205290e999e6326dedc1a45855104ca5ab98a47a722979faf69a1cee86405e7ef7cab790a9e59a7ed7a2ed1421eb5e29b114a7b3a6a0b54104c10dc74e042da942b3db2dd16e244c4b48e45e08cec1981b4adc40254e10f79a7733ebe01d675ebfadc3ee035a1a48a3180c9908f13c0b690edecf659729528ab4699a1d2646385fce27cff922160ba1d8474b0f0193b9f079ccbd73d16890f83b43e4c9631a33ef26ed246da045fe6871f8a3df82c1a611e87a574d325c6f6a82eb7f675cd5daefef8b2722e1b4a973b1d61b77e389b455e3971cbec645d8508d2e83ba6e917b6a4b0ef926675796a5d43fc9b3c05ee60e181368d945871faf5c0d9226c34448919405ff55ce10da4c72328a363080be8179a85e48221cb323195dca7a3c943dd9d17b3437ad48c4a1fdc79c9cdc2c498f29ebd57d3794b7da66cfc453796fb7b8f766f6fc030fcd9a1fd88bfc756f424e63cb007c01ccba462cd9f77f4cc359e2d833720f586b689b8104e94d3f21be0fe70cc1837137c043f805cd7de17928dc9394b6cee51101fde896d3257d99260afb3cc3db770242122627117d4a72c004a5b001780a0ada5ee309de6c4f2d37b64000ac24ab9ecc8df49577b241482eb332031253c0473b0121e5326972c44616cdb5436f79802f3b0607ddcef6809e13e0084788bfe0ce38bf148b42601f65e60f68b5c542e311b2e78d04e7ddbd0147567762d0cad656431994573649c36c42f22adf9affff911918d484058147b1c0b3cc6b74fa4caa81291bf7de1543d9ff133d4177ff045e5cecc455a4ac29cb75279b92a2fb816f8ed52503948e994b8ecd90ce53efaea5702270d29ec0a3e60b40a49c89f3326c93de11ca53e00973541ecd35ef47c63dd5b567ecbb04a08cf343d959192d7e5d3b8b680758d51b92249373109e9de2f00e06b3073e37a225d4a428d002379f86abfd60d0007347267ec11583b6a0443cdad021a2453877bcd989da5d623930418917c11b56df9fc0560159dbec313804133ea812940d5117ba4228ee106b340396743f7da72b37501f93b78572fff2d600ddcc4aeb4ec821ac5536fe31253113f918801132387c0c7c2d19db59a53cd1061855c3825b4502e5d4185acefb2212fc8cbdee898c59c017c9dd3ee07843ad8d0400e509565c817f3b71c3fd57e2795983286a292ea75c27d4d4f8309e4abcc06c8f78dd640b775b205a0d78ace853c0a01f44cca6817db76203a0b8cd4c0248d5ccb6f63ade3576321b08a739e36fbcbd8e1a328bdd63e02ecf4308f3b89e34f082756bf27bdc91f7fd08ee1d3c791787212156cc4fb3b3da0f44dad632fbf29f8baab082593c7a9d9035887f04ef2eabd14507fa3367df365059ff70780a39083631d247ad713c025cd1ef2f4063a0a5bc48c7c8ee66ceb8808190dbc1963664d71b6378a3830b3a140c0213cc0e1356c02682091f6fbacf84c524d027bd2638cf555f9b5dafc74ad1c52b766aff7956cc7ccf7e6176967387b25b4b397728fb0e62578b72ee58f60ee5dcf9ccd35ad69d5a462bc6ca6d261271938fc05e8bac635bdc604edc374a0c23986ebf142defce6793d632ee54ee9d67ad1665df99fc9dcab9c359d5a28c3b473936ed18ddd8c04de2185acf98aa347b6cd7401186ec5fbe2d5556e08ac618052c1731780a8f95014955eecc29a4f77db61188105198611016554a075bdc57f2ed1c889c696e8e126fcf8a2b65957535657c8f6901bd9a71d59462278d1796baf412c73bc9d6a59f6c4892f5f1367585f7911b9198e585c330af30b610dd1b00c3c5a615e360196c42a03ffe377b4dea7594c778aadde76494b9151dee18b57c43f457982bfcec3af3c08b1a0bce6e8d3610a749685a67e05e07c60e88508acce7f7e62a32b705b2fbe7833cbac5bf6abcfca43cad87980c9d2895ee9be9ff9993b2d9d86ea570d916102a39255e69f6dcca7fae5d23e5b47bd93356fe323cd515c99fcb1177700db97254b3908e0febe1ee38c2870f77b772b8dee0c8905fac19cf9b98b048152cbd8d7653c7fb119dcd9fefbb4cc97dfcba79c348ca87059eeee317746a4f867dd3c49a1ebe217f0e186d89bed16176a644c82242460139133c98ce9df4209aad7f67898afbd599a2a2fa7201b2cc655cd0ce0bc31d6ba2b20c4cb1bcb16a22edf0ec87a4b998c136db72361775c6a1f0e90cdca853f996c5786802b52cd2355005c8464cda84f00ef7f9d3b94a29f1019d9e340a399d60b782fde28e7895f024e07c5d36fe46601295007a0127390d49a4696fd11bfed6d3d8907434785978401d9b91316edd8a3d8e9e681b338098b027838cf1324c457e8519d3614b0d1d6233b2c4df3fb189d2b12708617120e11b78ecad69b118f2c0f908ddfb3fee2fb21183652f324678ae9bd08721a3a8032409a6c1a0e24a62c70403862f6011579993faa7841c2e4aa27833d0cf58d113809a31d00a8a54a59c6c6cd274fe94aa143d2fb9bdee4d1aa86f56d4e91fc676ab2994afb5a24352c7f36726cc89446a548c944fe835c7b4138690a6a270d81f8a458c60c0c04fcd880f39ed33a50f5358639fac8d18d0ead7cf3320d1858f27a244626b5547bf52dd9092b260786dfc15578318d407b4c88019617dd5954585c51542900f02c6aac3727c62d176c55f0be2132d342dd1aab5efde42e18f21b3658363194daea9cd16d75f0ed09e3aeec5c20b5724c4d7940780ede321fbbb67196766f1f25c21d451772de219e2fedc66c9e8c4da42ab8e6659650648f0ab21d20e6f8952a2b01f5085db3d4cfe9b7abe7417f196f8ab281d8a2b0bc906e1786c09aec384c0ddc2dcf6ecc55b20a4bfa0d8994711d88efd0d215f69048d4b2ab8bda9869dcb90a1bf4d14fabadc68d66056e7d8bf2ae79309aa10455e0e5b1ff18671872d0a2a95c8a15333fd9003fcaf4fef5deec851bf767702e54c2ada59af2cc87506b323620284503f7046d270e7909aea324f9c497199e60fe76cdc021a9ebbe3ea593c41914f2079a1478eb70418b4facccdb282f3e75723aedf4a18416b1eb5567baab4d09cc09b2ae441a9260ec6ff87c551053aa3a7b05098ac306f1c7a07502114cb586292650bd2c6626a11df5b6e153958a78356951ce43f808b37e727a54cbb147da39297e6b894125262ec206a9ae2ca648562098bfe093dc6bad24fbfb9444c0cdeb7f1e7506fcdae321fb609e3d80bf1a15bbddfa0ee5fade06dd2d70f58229f38de99c6102077d750bda66e99c92d34658b4d6fa9095b6ca2164dd95253b76cca969adc42a65bd4d416eef65610431e2442c389902838642987985883102b4979896d165aba6cc80aaeeea6b5c02e7ae3d8b336b165edb2778d9d5d535bd8744bd949ef1e6bd6c1e4b5161d945db0de0772482388b419d21c263e6538a370db26e4abb06b2062c3f2e52ef480c4f595bddc771db53b8a9102757137cf1530657d126aa447ecb30981d92e70cad6598ad72225210e8c87618241686536266ed1a5056b5d20968af623713fb29b9152af0d0c6fb3b8368cf199eb6be6783606cc6b6c6a9f23d26e9480446f70d2ae88e8aa080db6e513ad1e151e646e81c2784f0c3adbd1ebd9a7b33627a35f4ffdfb56f1c94cf5f072e1b90147870914872d15c9b8c5a94c17203752cdcf0e8901c0932804963c00f378028639d33c59ebd146339be0b7af823cfdbb8d38df57c46b5e513478d896633305407e4c896a6cecfeedc3a25df19023b088c751b5fc9cd5bc45d835a8a77a4ed4cc9b34a229f046c432ea78ed1cc4db8499866ce3aa8f2099a62000d9f3a451558322076783d98a751e1b44ed03a0c8ce0a1730290dc4bc40bc323d5b22e06354f753d4edec4c406ee01486f172ed7a0ac48976057ebf0bda769ba36f7d73700b5a1abbcda086a8e51f7cc6d6b1b10e17620eabbbf792069fd8881f80ec3f2755cc29e0cfdee7262db854812765740b09c77756c9ebe10590ab5725e32cb7a9558c95d4bdb8d223fffda05c3a1d41baf99ee3c1322a2e15725d701cb0852ae53eaa07346d8e9c09f802265d149d114084620558d356c44684fdaea7560978d283031a0714061bfddddfa75f2f2cca77e5fda687f905d12d53979458179dec9032084663857cfc5d94ead50b07bd457403258c4eedbac802511b1d2c1d431ad0dbf65599c9f8043f6594a2b81fbf1cf3524cd2e6709a13f19c429333a42d25ff19abada451ad2e850f5cddd74108f12996b25ba545fc1cdb1f0b6e19b741f38ddb7ad27845af29b681324212ead56cd633f169f8f6a5b5704183a529bed3e1839daae99840fbcf98235a56a887cd9677714a7203bdc3147a6a83b271e6da8f7bc521972c70bc8f4bfe9b7de3d2a971219c700175d298b63e49829b919194ad5f6adc2b38d2dc98a318b9f4988fcc30440da14caf2326018a46af2ba117a4f7ad7278af77b109d61dfb474f67e29bc355cdd33e5147f0de82f5264cd0c4fc5327806ed781aaf0ecf9a16f66f07c5180be4b2d6e39927f58845ce3eff308a5cddcda4c285ba833af8288655b177ba0a24e0104fc79fcdade916b45bf11cc6be8513c09476941c63cfc42c22b0155530fbff00af36784a1116451dc1c9f11fe28592460aded951691b361b7aee5dbbcb31532f365362a8fb6a53fe5fed02088ccb647938fb5235d2573b3a0832067ee5f6ed036893fcc2c1ef440eef7a812829f2cc2da79015a1d23e407cbc6a9933442dcb72ede6a3bbca421742191350fe50d254524f084d274b1263f454cccfa670708d0e63da65d4ff3ecf954dba451496c94143ff4b1ed4009686b017e5b9d296876ca6bff62c6ff9d813b9cd1467aac1a574647b9166e224df09148f1a007938b5633c1d3504d4967de541077e1c4c629b7cfe6a27c8f1f3d315ecd426093a6d90f5571727c505f6cd71cae5cf6ecf73dc14c7e7664d81f5df884e88dc08816f461178dab5242fed90dfb551acc7885163d4c835ef7036c7770128bf31db345bc2dda1a7475cc47205d46b6ceb05df801ed84a6f99eb7dcd420c3c996fc19ac8b8c6022c099707d523f4e65810168d8bac3a88fc6fa2e8d8aac1aecbc307a9ad66d0aefd19f56fa1803b791c8ade7222329ae4f424eedd20433aa47a544d358256165475ba9f0dc24f00267d4b01616f557559cd286b4b3ad0c48ba555c160fd2d1a567bfc7cb44af3e99fb2dfb05faa777f2df3f3a09b9716f906a765d85482afc7adbc495b3a1bce65ac1a3e6e3c816555c602ceeda6fa5df9a803c764016cca082ecece7efc3b42d2a3218520b32e93882c6ff61504f559488c47f62891450ffe94500d89e701bc7427a4a92623e1c1524b8771cc1bfded191543dd5834cb4c4a8b7f1a8f9903d6699f7748deafff51b3443c0f3bfcf65fbf144b089f00c91dc16c666ee0c2eb5cb2c7fc6686182fffa37a558ab00618d4e2ac6471b3b93375f4509b8b7fee67e037cbeba78442eaf0e1995efffc244e656a3faaa808cc0139826357d193c0bac56f42a9cea8981729ada1b966668dc426b8aea33c150f9592179a2d0fc968ba75ae7bca49a5241c6615481dd5877316f7463fcb42470ab09c293150292b981923a6424b25ed561784689aad08026bba99eb159a91c498d391ec7eac41040b862d4ec4aaff7aefd4ee5a4d5267c46ddf5c7425e646c898987bd226b3ae46c80ad4f72af3524279ae4c4a82dff41eece7feae8fc5950e08833d50bd8591e2fffa80aaa21cc1dfcfef4895d42c2916708c3877dd47f6a02a3b131cedd41e57b29f17a99725697abeaf05d2feacb51b2f60f6d333fa41f052331812e9c2e9563ad410ba82c68a52a62629b8b7b7394c6e11867cbcd1d7c977f54dd9ecf6a5bea17575de48b585f59c418c88655d6bb9cc392a3f6bfe309ef9f1c0c0fba7364308ea502ca918e19807720f0c91a44736b125357526c50ee20c9553d5ad941641443684c281d58dfa5cfc4113ecae6dcd801816cc1306487f8a6dde755e8531bb1de3e42ba6e37dfeb1bf67c0198017aad051b0fe9a45ec06f31f9206c3ca14df322079f4e4b7dc744e27369c774ecf3b445236706aec11a1df8264e75ec1333934e955d459a0c1a013049f55d3e2a47fbe8025aa9e2712e263b880320f025f5c96debd2e09b7c48f91ffc738c9b9124cc504227763edcf5eb4618d31969e7bcf154249415b0d808a60fea442fbb1ac8f6546f0d2bc7156ae3a52477c1ed8bd09f852117738ef9a60af5c02cf4d99dc696be266120f4601cd7312a7da2e4ae073986bf98fa4042033d69faaba2042a002de1bcd02576f3c1984544d8110076632e005422c76c237078985cb7381114b9e8e5065ab19bbbcbea368ec713de90e180bd9c9d28c247c021c29b3df89575943993c7d8395d536dd29e88e7bfdb5a935ba44bea82f8d7042b559d434af043fb79c546744a119ca1ae1ae8947228ba055d24d03f8eb79a443545c52973b1543f27350f5c2aa2db0a60b481ec00c8e44fcdb18953a0e017014ffb476a1d10db0b0bf742767bd94300c345f3705bb1a292447ec037334e62fb39e9460a0f752ce43a80651c1a8f2b319880d439f72eca04094e70f6376ccb6e9af0a82304c7ea3bdc21b3211342e109cf7118bc90cf36e17be998da3b541697c3a63b6f423538d2474b78f43becc134bc4a82d8f904a07176ba614b6d49765bd9e9b013f4e53965a23712429024c8c493eeb4d3b2b611d24d31e96c7859d42558d6c88e2470fd1836722b84b92b945e34285638f3e243f1ec01ed2c6d273b49422143bf96f1296862bd7a8ee810ea099b9c79cfe2ff153451449190cefd00b8ef982532671ced6e32fde9ac5b4d61c23e30030019e3186ce997a4d29a55318e0b87d817a8b3d7e5576bbe9bbb59842d244fb31362f5a2b4dc6d2271960ba10e2a7c89831d47e70d565cbc1884a4c6ec2a9e0074929ab9ae4459c8663fb38ca05d3d652c6f63f9d01363841fb81f96a3f3f57d42141c5a2750c38df76f603a80df6c0350717f0ec89afe7c229b6e25a9c6b0f3c7adcc9a567450d6c1451d2cd1fcada7a2687c00a301a6c8b2ea069aab560dcc489320e54104c13e44761a8d8399fd39036efb97e37724f540c6ae92380c346eb9a28854ee49ce6c4c8071e20a4390bd8a962112a83a57cd5d21768025e9be9e3337b51bdf2104dd0c2282b2cbec8af543d4f88f37dfb38f50c322eea7e6872cd1b107c1f715634f3ddf082da87f6e514247bd618729b85803989bddaa14ed50931db0b0f4464b0b7f16d2f430f0cc381bce47e58abe3d667e640d82800c4cfa2346f809d14facdf017a7511555430d0ccab0340206d840932a159614e6ac9cb8d47604e6f685706e4cc84082bb1122b9468b6b0433d18df71353057c342ac414585252c340c15c7072388397dc8fe00c7ad4a3f04ef8451362252ca24534a52ca1401054f054705b5088dbee67cd7ba5cba17a4f7febe1a380041fddfe14967256a84e334faabbb09ddc5e2e85e8604a2c0cde808ae6dcc434d736ec172c48990ea12c9a7046d5841014c687454ce35a3a000d40089ae1a0742e68d6925914a0b694d0052c5f2251462c4c66de1802d9a95dc8e9c5d19d55a3f7bdfb9ebe70b8d0f2ad0be024cde7fe3ddd0b0839ca6bb2baabfa45987993912474021e4784844cebe5a6894fb725cb01d9ce3078639780790e7c856d31d5356b1f65c602048663c5024a8da871cbbb816853bf38a2e99cb2052c6202f658626d380876f86c4879b17a9dacbf9289d8af4a82fb5e7a8e892650e13736c8e073c5717e6dd5fa057eec3be33cbb22f2f1a9362d9b11034cbb29f65ba30cbfec8276c0005b68475cc696f6635f07a4c89f6e87859de9694c49378cbe3e2a2aca63df23af3c8ebcc39e77cef9673cee78d9d803d73ce79b1ff3e73ce2f2e2c6c685bce39d7698de475defbff95cf1b385f393cdab635927fbbae3c676700a65db0fed1806e39807ff0fbb98efbdbcefade3be79ccf7f7fb70deef9f7d973f4ce3d34f6cc393cfaec670cdf9f60991228318127b76547535677be31a08aed1c7b03912215d3f696fc987b7ce9a35d7bb7d2b262563d09a06df907f982de515543b446abc184b62a06009c49d50700ce6c5aa372a33d323c91d6b9a5d78ea4b7dcca4b799d5b16b07de57801bb726060d3f25e57966d5bce7bf7de75ffafb0b26cdb72debbf7aecb9be41770da430303edfb2b68b01d2b7be10220d02e00c1430574cbc19dddc88d723b77235b0210ef469add1170ee0860e8c8df176f77b37bcfeb1cb3db04d60217fcbc47ded9dd10fe7a07ef46c986da1d299940edce425effb9e5b8e0393ce0ce9b0e815cffdefb9f3d3ad0adc7faf141ff0d7763b71b9de55a5c49d96a60008d9dd485e9a86cab514003b11c0981c5c717f325ddcedf8d6e67b725d2edec7b956e67deb21c29af159cf3b66d59beba7f7c6d59bef7de1edce30379cede7bc77c6fb6e36347e05d3febb69ef7bd7dcb733a5f77c79e3dfaec7bf79ceffdc215fa1d5806a427eda101457b7c8d0f42b8e08177de34bcf113cfbfd5e0728c946ca8df39e610fefabffcc79ddb0d8f165c68e71c6ca8da06ee6c833f37802e81f3969de776beb0393cf0e796e303bbfe1cbb0df2290721ef2826241dc504444731152f42c07ed47f8e37452bfcf59f7ffeecb167cfe7cd76ac35a0f9bc59100396e61c16e812386fd9f6ef4f02ed0b567afffdd56e3b7becbdf78e014bffb8f3a61041056a9763b7c11dc26c6206314db037ccb997df0880de51cc28fde91dc5d4b2f91b36ec284ef44aa73229d39c8e3709f2cfe0f2f5cb2158b7eb35cc2cad54843b6a648f10e8b5c80637ed2e81d8a02bd37e83f32572e904e41cdc83bcce9b5622b6c14f9bc0aec15559a694d21e1a19daeadab26c4f4efda6bfa192417b6fefd9f315426af286839bad17a1ad16116979344f7a721798de51491d659b049544b49f5b7ad3a29024f217d9c301499996bf80f8a35d7a4781a8d21e1d76433e5c3bdbceb4eb67a07ca131cf7d1e2103ab01a88162eeb309ac860a321bdc730fee99620338c7c1cf21fb16845b8f42e2a3fb2ccf1fb028f1664db8c9d5fee00568caab2c199d931daca554c9e2d3533daa3342798d6036d48c405e2a6f0206f6f1b83def15792103ac88ecb1a55c44de7307ba03bd7274a0e3b66d8b9c13d775d8d9cec10a9b9bc4e7bd15f156e87db7e50d437c54399159bbad29e4043583f2c1d17dc8a2f820adc00632185b964b12ae25bbe68a32b557b95b89ea51e9289147b38b2394c505cf784974f44e8379b0b011394c45232c66eef06eef631ec39e05939069c84494bbf71e8a43fb0bdacb7ccb1d7a247fefbdf7de7fff36ec1ed0f0ecc12a8292bc0ee91df5d634dcafe7de1bbf2ab47ccb23d03afa39cda88991a8fd120c914a9ccbc7d25ced8d68ef8d4617719cf1811f4132bcd7d2f0beb76edb954ab84a7cee72c475357c2fb1e07b8f7b1711059d8f63369eddd9b5e3bf771eba1bf3e8de7f8d7ff9802546c01990effa09b545b562b304c1dabba97b1134047a7271022392112b3acd2ca6f503feaf17d3f262512f36f5626bdecfc00efc30a0da2acb9a4a0193a9bb089be7dd4c5b945bdd89e8cec750307c77488c4417c15a975a74ad78335277b5658d1e12f3ae68ce5b101ed99e58763cc692da73519d31269e479c5568ac849fb9598061af46756618e97c10d526a6fac0bbcc8a6b6b8bcd04540cd622b9837321eac979594158b54d8f7a6c274620170f2552e29a67550f26667aa27afa40b88e2b21483fde05724a133b4c23c7103e7f032b4f422b423c7f781e289243b2727291f2f23952e02904e3833504c3547734a1e6732a7367b4c23d887defbdf7d88826426167d18562c235d5fb0bf23a801d920bd9b755ede9bd473601b5abce2d24c98a490542a255b5a6c8eeaa6744e8a9e69942d7b2a307a44453e1537e4879fe8e4f43897be0be5ea43e9c4d9fdae360216b687aa4c4920b904950f5b9db79cef5f9d47dced24b8382f568157b8a526772bc3be87c588e402a135a4beaa4e0ca49f6b4e95ac2d9d0bbebbe5a406c70239750ce67ad25fdafebf6de7befdf65fadd06832bdc4ac9e2923bba5973a866171efa68b0925d3cce1ebf0c3cbaa4b619b6b1293a9cd704088427ae65c4c915ff20bd9c6fddde27c5de6ef46ef225e9deb79bf00399d45cb5ebc959f71ba93191b679c35222c236959a294949c2ea27b0b8edaabe1db562da5309d3a6c905049c6a81ab50c15b9b1e5a0a635cc9b5ffdea1dc0319938fb2488e7882d17c9509756528b1d6eac23ee0157d4016730cc2514e8dc1d54875f1d1dd7837b226d78464346681074678e44683f6242284a829d5489c0a8ab4eec4230df0d843039df2be530289d7ac795ab171805b12c88c4e1288504bab8316b92812506b2fd399173ebbba77bc3f2b313ca6f2ed2fde23d44864927c446871322518350061b654bcd2c13b8143d4e4e1600dd1aac998a91b1e0c24b48c72275653ad112a60f9c27b4f7b1876d2d5ce6a975927ccc6f1067bc2019f5016e639fdcf353727aeaaefa445450833c2d4c34bce90dadb51ee518e162da7a2f56651adecf2339cd8bd78a186702f3a57dadd23fbbe7115ed8c5dc6febe8945871a135a2479375f7552f3d465ab256484b46de629f0bb61d8e87c5f786e12e5019b367af09e8b0b9c2f789408ff5ff0d08313a2548211ebcc9272c7a4b9bfa7a109ff8cfe9634922e020d32cd2846e2c348a64e816c2d75bdd1b06cf8ef4bf7baf4fbbeefff70376c701b3f919cd4689aa73a680e705a6cef1b7ab34f8837d5aa80739b53c1fdfcf7d6d99e1b4546c6ebe21229890faea75afbe8960f5d89aab31b16b4e659598c6682bbec0e4e6267726c56554dbe95299bb00ff2626c888c5e276c867de6fb001b9f05fede43ccc4e8de7bef9f03e85ea8509b74ef5426dde1baf7b312babaad30a2dd5f7dc2b4778cf24185d49d43e3825fb86080c08484a4ed6b8aac25e50ce43d23c60049456498736d0592945338c8b6ea1c8a94d71fddd9a21f1837a2de1c53dfbafd9623545943217f3eebc90a4078ac5c9a797923f3057ca8391e9ec862d6845335239b8407175f31ac454afdf2fb1d2dd90ae70dc5df211bdcc45f64833fd513a9179b95e83468010e8ee6c829cd0455064f7bcf61d84c8b0deee8742dced36625bc7f61b787cf358ac05effa847217c5f59865a28e178b5c9248f227275ff82c68099edc01ca34430e14d788ef154f4dcbbfe0982527e3d0c3fdf97424ae1fab5d7ed50bdb72e13015fc767d48e8895a80b84324fd23a362f96aee7fbb78782f251b59594db4197c9b1260f49dda3d8893baff5842ed0b75b406c7023ebada5d7e8fdbbbfb7644b188594620b178cdb901e971f06369321a1665f51d194fff8136eefebce50ee027b4587a0a7d632e659a244b335a56375613f8d7167d313a84b57cd5f957ad745f486930201ce5aa088284522688723b92733af109c17a9d6074e9411e18712527adc8d262d4406d97737cd12b960c10adb4c954e0c444bdc24fb65f480bc2b91455a6822c5d1bd1393236d3369f23affbaae4bd79599c615d78de3e8bfda5134999d94912e6215eb00284b1bb2249229e9a678dfdf87dfa3c41d03d45a5f9c9449ef0a474b002e4434ab9c181b3f9a6a45c56e12a755da0496dbb8c1dcf5bcea3d0eb93ff960835b38fcf509713eda65bc2f861346050498573349533811aa33eac20df1a8b8535695426e295318cb1029824468359503e2031b5cc9bd889dd0438a0bf68ed55286145336e657a502e7332b28c84c0ced3b57a8a318922e69f38a488542085974088b0e84de67a9dcb88bb5a4889a702cba960c6e2a114fac9cfd0bff72a522b66b0c5351d855099d9bbadb4ce170d67edadec4a6bae03a5695ee730830759f47c8206b6455d9e0fe1072d01ace72abe1e5a8c4111c0ade1850591529e5fc68c18b367dd3e9eea5aabaeee9b0235640bdbb426ff24dbe9e8a7cdb60ef5f5eb794da06f7c7e0bdffb4a70e7b077aefbd07c631d04fa9b4f7403f537df7fbf55db7dff37d814012fca44dbf358bfed480160f4a43cda1544cadee526d69711b23a8e11a115344e274b76b3c09ef1b9596b4a0d21821af4b482728442c6a56a19a1b8124660603075561b8f5162cf8154a2dcb829a598598f5c7b3d4e5ca801a221c1c35be2ca1a719f8e1e9bd45959c6afe3e5d940deee95a4d17d7ed8adc3a05f07cdf7618665161833be67360b9913560d7c367f1bb1720fbae947bef719f3f141bdcce273d273d7ebd5ff67eddef2bfcae86bfad16bd30a1142fc474184f6d683f87c052fb79840c6c096b86972112e788b9122bb5afa7d2def93c9a1b50edc905c22e8734a11a108c0142ce8ad34fca12899a37a7b324c61b622556fc90420bd2003d3dee45df99080f9c144e1454ed63b04e982803319336a5c9c84cef0cd788ac1a2493aa0c09487728395a566355bdbb9ee9c2f090fbc4be8305430718b1961cad19a6b99125b38b1094549aacf2c062be28e258ee1a14be7734270a967808b4b020c2d189af68d143d994a96caf85a62e84f8f4333a501af14baa0ee8c904510e5569f23c7c25f9fbb235b1c13da5c5812dda02eb402892c9ae5b844f7495a5458ba85f4834732b65567221a2284be25fbdf730ac14b6c1fd2b94fcd34445dc00a89343b5b89fa73aceb8fa6e5db704725bc59214fa54526aaf17c2462eaae5e7a544db7365eebd5184b75852294d595ec6e41e9032d74572f5c64257fb24daff2e2389eb7d0c86932697ad2b201ab52431866e65e11b4116a604616183dded77d98d3d67aa30630ce0bd0c06883ad7acfa9270e3b5f365e49b7e548028ca0c84591b4bf345168161efd18a28bcec3dcb5e407d4009bbecba1ea58b097735e3edfd4f57d5d7c41dda7e64c840d17ed05b2a844a7bffe1bdf7decbde7bef63254f5d4b574e1d9652ed9f67667c7734342a48c6a607c6980f1e58b850a3127b356f255269eda9489bbc35903926bf231f930a3e01df753350fdffc40f36b8854362b12602f50c1f8e196d8bccb215cf8fa7d0cbbd77d7a2f3e706d402eac232f8ab71b373332a892901332757c4a6238487e62466d5f1ecdd24c90677d394d6af4da21d63473e303530291fd99d8f90850f930719cc4e9040499ea1b87c740e67c5de7beffdf7de81b0876121515814020991c2a5104ae8ec1b6a2cbc6f1c73998bc855e402e242722db9a0b89c163f1fddb7c058668bc60466afc4528a9d0e8e0818a0b21bfa89e811eacc2140d38b337a9a1229d5a971343549f5e4a400d317a346e4a0569461a03cb3fba3f84ff80092a73ee8d8e736899a5cfcad27a0deef7e0b3f5bb89e2eafc2de08c591188dd787d2a8d542f10513dd8a4b53cab0434ed87b988e25b2e3bbb7482568576b31445e3f00d45674ae080c94bb9133ca11c925e59ae4a632e638a3f7de5558e1c646cc0ae92d1573c30a316e428c3011e195c243222db8ed9e689e53bd9725a84e343c411e1c0b74eb87286feeef30102294d35d565446865e1e33a44beb8925470202098825597c2429d474f4fe9e38d9e03e79fe13a97c42d538719b3b4e4ebe1b777c3f58f87330296b39201f5a2b5fd4c6b8e2a223b6e7520da9885445382094fd6bae6bb766176757c28eef6ee44ee52ee626eed83f5e0121149b25963fbbdf37f99332cab7322900479a4ed1920bd4cd15dcef605395b5d467e60c51d256e9805dc47b0a96985ff417febf77a938a912527caec60bcbbf0b8bf65efe33fc72fcc4f38fbff7de7befd55ebc6f61d866c9063794f329e56043f5193eb0f7de7bef1df87bef1dfeee054a8be13d865f1b0a8261d9638309e3801a8ccd1315512766c4f7debb9ec66851c141e8e9e1b8b9643f7044f8e921c980d4bcbdb0d045551fa82a172925106af1e7c191eadbe589db4fb4902fcfa40d0ba3051bbb2010602504ed86c7a47ae246e33337b4a797a563c59237b3b6b1c322eed639b9bcbb42974a59622778754e22b81640039b684c12c54d59e6b743b44e088902416e5ae054c81406027dafd9849d8ddb257d1298af6732004e2b6332a695502901c6f2d70169e658b26362676f6e2dc8ab81d080d38e15647c96023a82c5fd8408ea00985d915864f7d2567b35b51535e285f86768e9dd8400468b570475b85261026090c0fc94e47c0082f94a9399cabb781649aa6e46f891ecdd7b4c8c61b99853d632b4178d12aafddedcd11273652a577b341de0903c00b61fbc2b3be2cc9b0df442d0c886296553b5a78e7959181311000f671632dd85613ffcf1306c4b6c83fb43e9de5b0ec33f3eb11f805fe94000e1af74f496ba497eb563eb94c9078586f7036089814045df9ad15cac64ac8aeb55805fa6ae67d4562da6016c6c77204b942a67ed977cc43ea486daac96b52f03eafd62e96b7c77beef76d2bb19d2e474679194ee9ad91df1a6c8885b0098253b3bb710cca30d205509c1fe7a946aa8dae39237498a788608277a02ff7edfe2ffaeff00571388f1c4254ca4ee657a523d36a6223fa5129808756a003f7ee306264255296c4a361fa6533b2421446fbaf672983f604aeb02e48a2940ffa03670645e6b4030e48b1e132a4d410a8343cf1386e1fef7fb42fd8f443125806fc19fa1d0bd7b12b7ab58f078bfa2b02b490e2b4db04c9755c35237a6f5527b24551c1d0a148989da8f8dc071cc2f6e742e7cc6d44c342ec7494422486caa9882314c522da37e2d4b05b8f3020bf91b893b9992867dbca89bd7cfd0d599b4e3f93b7f5fe8930d6e29d5ed7380d275b47e1921186dcd39cd841e4884cd2cc501b99125578443b82a0ec3bec6efc45ea6e2065f2298b6b450460081c590bdf150d1c2a4754a2a7ebb0a86642f28c903dad95787e10f5b537246e9d704594f5871c370c288c260be181ac01b0b9337a864ad5ab99832c0a0440808531800000370280a0461a2a872790014000827be7cb86c50242c221247626130240603c28030280c0ac25008424118462159cd718d077002ab040ac1a6f48320ab59a286a07912a6b7b05464f5c171e8e93bc0642f57e612ca5c844cd745589f23e7372782460f2fc6a3780e1baa04a4291a00ef42dbd768104989ced341f526d506d40fbd5d1405596b33d139942db3b76ddceca7be6de7987b325fee6280548595233329f5992f57bbd0215e9240551a9aaa2a597d2aabecf2dbd0d39301423a4d7b614d56e5ab3bec5ad82429727f64c17452587b69884248cc11491791e4e2d2de3d4c4f4a709ab9389613bd114d416c2f48d3f0701de87bb03bc73c836fdae21b9627222ea7eabd2e1f53928e7a6ff8227c2274eea47e8c177f95baaa959d9ccd3afbaaa6dbb8b0c710c3439794e146523d850934fd62e995085d5c9bb864f2662f9e641af54773dfb9680b16d38405250115cc65e57d13145f8fb80fd43bd83b251bbddd065bebee523fb8fd1b6001032028840d66a97913358848e5ce74cae6bb7f3d99dbf2378de705a06c07a920052e07542632a046602239702a1e67a5959f7fc052fc6224c588a696571a1395617b168faf2bd5a3d7c16bb572d49f585699f9ff91e1c922557b3111292cb5478133319aa640c362a75ee02d68a98d87455fb43c87524958ad20ba37936ce7d3e0d7e99d3c15bba8b940e40f36ce544df7e43bffd07fa8c0fc9f9ef24a8e3bfcdfc9f676fef65533a13c06f47aa531ff01fd70db318a64faa08997fc0b59cca28fa4cadb0a3707e8f0209198ce8853543b6d5eb2a6ea60493cef17cd921a4f7c1f874cdb97c867c699cbc702f16c92a012194917ed0c3a008acb506b68360fce31d79f0a9710fb36503ba6926a1fcdb4b1595e26045c17f1036c85dd291348deac24275339f171cf8db4c6d76e68ab9bb1823ebdc9502e1ad2ce47061982a9b9b6ac28b370137009973e7e70d7f8183bc8bde4bfbe235bd2e23f38882a2ecc3d50fad088a22a6cff1909ecc4c22891061480553037f42ee2ec6269aa3ea348b077a1455fcfcd9af7b54184a112723bd05807cb60b4a10e9a3b264f9bae9e47c72a7514fb39910724f3237e578bd6edf5487c0f799d84237e95dc3dddf59836fc35352db2048931b14ca24d130e4419001684a22475d1e9d91bff7df4e3f880a69cc6275c681a1551affe802bc32b22dd75bf04a101dfa8c00b000101c4701cd0f1c920324dab8946178974dcf80a2f66512a040c512b8bf3a95248d37306aeaa07507afbab792151bd3f110d2c0ca07eb8314f10ba832891ba4eb82ae8f9f065889c9c9c78010233eab60b30929e3a8924a66760ceac53aca74348e9ca400ce7d71244975085436024887338a7c221666839f9beeca01562702fc889d225cd1e281a1d326c188b74c7661ec22c31ba172522152591b842a955116875b3b2d50c63261cea7769c02f2c7adcbc04b96149500c1560362f66260dd2008fff171fe93275e285006a252d810b0a7a4dca9ab2e8c0351c2d8ad41166ac1a60fd4c816f9539ef57cfe3be38421d1695f10482b3031fe807b5019e5e17ddd879940d7c81bd18d4982447ae7e045d06b6263355be84c3d464811bf105c4f604c3db0b104c5a11dacb12ea496cbb2a31d386b5a2de9fc40548b878d94b9081bb97c4863352924391e03beae9670993094bdadc758b787bad2417d0f8332f02a3a7c4203e61471c3848d7c6c86989e4f94d41a2e92d616ffad665f54a649baf378520678be0fec4a8ed15524c6dd8c4aa3cdfcdba4105793ee8404e912b75a90df73474ee67afac7f4ffabc37e138c4837a85a4b0f31072b423ec054a44c954294c03a1a1218345d14623c756136991b538b0ecc76f8f9be08825a6cf7fe52da8097ae0aad77f0888e19687c825315283aee44c7de2d9bf05276f90a01e9f4fc535483165095fd93afa1754eb0c819d82de9764cdf03048bb4e1c570ef894c7deaba8215f415272f048210c6a287979b41f6a988c9c021eb84f5d67bd72412d883c5866ea59c2de59d02337de47b85ac1ee6e7be05a751c73a8032f4fece82b788fc319a985f5f8f3dd2ed3eaa4a5da712a2cb7c5ce628a337cd1302c26d3f8b39948df6a359a7289b8913c826948ba74526ac8b1d12391433b04d4b846484e8fe22a40f1131969c7c01e4cae857c88f080ed93a50e1dba4584b4b481c5142eccba9e351f96861e650ea98dbdc4d1ac953c5c720ce174f51d424d94d12482cf21a10c967ef47162ce4c86405750c9e8625dc9f6bef5ad964cd6c678b6e4dc20dd02f545f9b40d8250503aba8c5140b3ccaceec56e5246585e4c5d4bd80e8862b64563048e9c78ca5ec5e89c4fd8bfead778724de370a6223c51c109b4cf71447765c0ba50125fb11235e25099163b8d2e620ac980062dfd6e88c0a481fe14153168c9f061521313af6632c48f017b2ac83af61946400414c1a5bb7e75a03dd6d90840a1f745c841e2a968dcf0a6989e60c97ac45ca69baa12c5d104db48221e2231b4dd14e89b2055c52f6df087648336fdf3a586272463e956d4a8957a5328a77c85af52a721c7bc7b7f5dbb5be600250928ac03b91312dafd68c27d4bc3e236c0c5496720526e6e9c9c673571036cd0af60b6ef20abfb3072f2953634da706301b80752a2150735cb56a3770177e14ba3fe95f60d7c3d63015226bb51f8920728c6a9f0858b40bcb8224051a4009655887fac9be8d0bd8017928a979665681e2b284cb592ed9bf71b0a83cf4d190351e002345aaa5000821ea1f8c002e6d236dd644aff9b418b9a9a79c662cee8fa5ccfa2bc8f1892b0e1800f0d9cb7d901b89654a0d4c536e9696be04966478ac84123383ca80c459911f724885bf9bd64e90c0cfd8d33a998f67c6320c4e3f55636cea3d1035ad1f6b6137b411daac15149d3a137299791cc61482bdd52774e74fb995fa5f2fd1e8bc33a85215a8a3ea3fa01ef5740dc2625b5fd979179b0f453a790cd4ae4ee792d45c6aa3793eaaaee985f7404d5d4b1a3c36bc8409f03bd4803013bf253d1ae7ed98f6a65a12d59ff321497c732514a801c303122d2f807c3e1338e5ea0487e6efc3ff5a3272019be25a7cfe3440ec0869a00040da9bae32708f3fb456eef24e5695f3de93631a0a7c2b281b0a076b85a2294c65ed95b9e89642883d663316f6f375d2c8a5477471e9e088c710e2b82dd4cfb50630e23e46b20b4beb8327d9c0e82a5e2ffaa8de33bbb06f54fc571bb95cf2482b1711f4172f419897a0ff12a079f7a8ac9704c4146c5a573dc6b9b5f8448f9ed0710ac3787abdb58557b2d179d3da6648a25fd1016cf45c9bdb352e009d3e12fba4b19e2d9e97c0f569771221a33cf08884641aa89fd2cb4c7b1e8e493d54bfc3283b2893583ccc494492f3719a2d8561119d2bb8ca705e8567140583df111b4c2661e4a0a2c5b098a7f88cd58189ce0941ca6b4ba8ee9ac195d7555f0033d89bb01c1034a4f8b39319cfce4ca08ff59ffed411fbe40c41e128622a1269a45fc44039d1816c8ff49703fa886792250fd13fecea93f513939f10f46160ad9658a2744dd12ccdfc5eda4f485753db5a35d0af4f81fad33273b411e563c31ab130c7412564dedd7a55239bbb04c52849bb5e8d244bc0809920b59b4cfdd21d92835cc60c51817b6044cf6ab7a1cb3ee7f3f0309d344d544011c3a5c029472bc102ae93be9279d24341f6b8874a35911e540f54baaf1f086c73d526c5e11909ba10c1aefc21085ea56d609408ec3109dbdc30075b5d8004a9d568968e632af134266923ba6b86a7088bc46b7cb1038cae4306209d056e8a5919807ef0cecc9218e8b08ae484114d1c9ef66f2034cc48daba6cb43ad3204d9d4467d24078cb8dd5a7fbde1f4aa6cbc9b776acb4b5cbbb67746579527bf92f6a5b8c9e872dd476b393fdfbd484b1c3b7d5ab506d15c42aca03038888a83d8b5b6cd4790f76163f597e28ce516541572350552c886c2fdbf952ad6530bee5460ec23621eaf40b67d132f34768ae53274a20e9331f8029eff3204148946662157dd770223345e00d980bb1df560406b0988380c6f86acc9a51106c148139b23e712925c58f245247352105acf903f804eea7a241e583175e60069a8069be5355b88d7f6e9ebcd3990680a29dfd9ef25b20af0cef36a0ec0a101c3ac39e754b13c630f6ff9d2f5df6bf13c7befa2b25bed8d1af54f969a75c640887f4b1918fdd54a5812014edd7f08dd769463199fc67b634517c9f472eb982ce9dd80fc185e8bd6fc801349d122cd086281005425b717318b74c5e73fbc0ac7420c2b87b51767b5a267770af7bac2fd6fe448002a0a9d2b62447fcaade2cedf023a2640b004010a52be3cbecc8f8d8236be8a5f14167b4ab9df5236af1e4c2b11bef11b8a0ec4fb58f786b34a9193d88b1fe50c35bc7916524ef329c3b245791fb68e80f3fd1396de52ba8c099a4c0ef47cfca6b1c4f329b1f2a517c5745bb88e1a049330c0b75b78b0296a0e7f0827c4e71149c4b09ce1ce898b7ed6a118ae892044b210bd84735215c0a41113ade3b564ea1e25a9d034f7e0b4c344a822a2752e09f00ec14d2b56f50ab3d239c1c49300cd16aa515625d3ac3c041fa285391a552b20e4818bd2c1ff3cfe97c5a29c48a1753c8cf4fd16faa3b1f61e0d8aef2de4a288bf3d92a96d058cb4965543635eedda52cdb12d48dbbfc4a657f45ab3d5c54a4cd2f8b58c506f8cd0f03112cd78f78eef31b6da7b306a4b480019f3e55d35783a5db02d586b331e26333433c157c40e2f8feb0a9e4e2a4c4255b061401f187ba2e21bf06d95930a6aaac9af87944f6ad55f4428a27fac5725c4818e37404d10a69a073ade55e88c1631815aa716a11d5d953c14ae4d414db149ec6e02c4ae52eb69ca9b57ff491efab80efd6a670463df8dfc907825e28875852feeb7f02dd4541a3b0c7c47e694270c82162b03918c678784458af2625c5d7f0be44444b536f0f146e05f4c81e1309da2a401f6a363979fa3723cfd38fe2c53c748542a1c2150acbeeb9b08929b7d4a85aa73a6927828ed165cefe08dff04c029527a89b4ddbe77ceb1ea1fad12a15631821a23103814d920daf39f5c50dc8810cf468865d7f5a4bd638851a8bfd4ba0e5379669553f5cbb2e003add0fa382af02f97020b3d6327afe0057316e4a333a2f769541951945bdfa779055110dfd81ae6b7ac8bcbf362b059d1f6c63ee8cc78bf7b0da404f52fa5c7e8eb2e2f96e3d338af923f550e391368291c12c03420ec66f1f87961ceba49f6bd4f774fd2383249550ede0646bce7259967e519d1ac039b4a2776011d6c6d8429e34c4e12d64fd547d685031dc90f7d7e8a409b6530443af1c0fbd3a48994effdc60ba23e5abfc822ed9f58150ec61fd51d37a5879b050d32d4706de5e71e59382e034baf589cfa8415aca3daa16444cf08555ffaa0219530101014a59ed718546a113ddad490520541f895c6506b4293099d6142b026fbc02425b9766bec3fde56af7c25cc7a42b0ff478f2ddec51612798d9c79c64a278c8ac291cf0ae9f063609e4e03fbecf188c0f00d93fc588b86e4d04557c7f1e5ce8ee24e7ad4bd1ca5351390a4eec52d6788775b3b1921c85e2499e201f56fa8c42dcce83440fdd67328e9db0df20f2e48d06ad95eb78c32e7cee1b13332854d134687fb0e2f8e2a9eca8042810e0478493702b542102ec0a909f178c8df998721b903b746555dd6095880e91bf08526678fa92dbc3408be34e8ee1946cbaaa06445504a2389bc05c5d483904583e0a2d2a8013048248ce93510d4e78beaf335aa2a4a82482ae71625180118b55e401025d29499f24c8ba1cb653192082a34993c8923404f490d3e4c65b8e3c3d4b4248f2b329d43ab7dcb17363723d2f3ecefe383700926a660ca202009d3c123185726c7ec36a4b7c76460d99e85bd1f7fbfe4a1760823eef2a23504d49946aeaa83561f2e590d12be3bdd016ca8104d0610830c174bf399961726a67af4525a64a7c1c394e3c7e68051cc1a1516c965ff45e95f5e1aed1ba2ece648d18f2065f448da4707f7ef10d3a8bf8ac811d681a1363a7cf629398b12cc3e77b43b64d04643adc979eb568f32d5a338a6af0590e924f04b86af93bc49df479bdc243de556a69367796a55941135f5766ae7bb59e359abbfd57ef35953c4b014b4be4e19aa3604130312ffda319c2950b380ada7919f12a38caac2dcadd97562c7cf8f72d974ed9fc64437d5ae7706304861f06d21c115bf29cae7aabcccb6555a53a80176aab4e11a0e02f517d3a789921f541c7cea54162169aab62f09fb945de186a6badc2d6126d2a1a98e58fdd6f931bd7e8037d387aed6b9a9e05f2e12149ce0eff9a0bb7284192d5edb300ca09afeb8cc812f0caeb8266a0ca59a7f935523d4883f97644d93f3e87c275ab8d8d5fece6f7dbcc1b96da702a7226c0b939c828ffa9bbea4f158d99495be2933eff7522e22e7aa30851d3ddb7914eddf56d6bbf8dcbea3e51e917cf4f4d52dd4f70c09a5bcde96b67259ef909934bca3e60986c8df8f36f1354f47925bd09b6ed5b7219909648b83be82b3ce1ec2aaebe669192397ee7e7293e6515b8cfc5a45277c60baa5049b588646c03a9dfab6c1262d78b293c952a41923e38c1a3029cf78a9b7ac173d345f2c4e4141291af0d6dff00634ea4083ec1e4ba51c4a63d72fe1acd3a511f2320c860243eb3ef1faafc6de8601d83c85fb0c0d50271811ed65d5a15f6a0c8154417eea7923941553c05563ac2832379bdd3a1d0550b95ceda9638c8e2c22db18f428007192496b1fda989a92c2b2b4083e8ee6549a26612e8d992c6bd43075f40ee3632e40a0278112371789aa48b5855d51baa9e7d9a1451892b8316e138cb1429d7c200f61a5aa4ee24588360a65b209010b98c5147c45a8795dd3c73953815c2bf6a97763aa0d2aefe8eee57ce17aca0c7303e3b0cd753ba374f73bbed987819aaa69ca4837a4920cf28b7a3b0c740603940b2631ea70203f7420e5a7c2b623be0123213b3c822485c74c9ba816ccfd79ec9def1d29e4af5f453b1ba40edbb57c0aa5426308eb723a5c620529785c8b3bec9f64e75ed09c30d1673419316fc88c8cb96704954f350f49e13fa44f520b2ce9948103bfc27e085a58bfd40ab61791c03452d23fc40e658ac70bec5672f6597e8badbb43d85594ac6631f884e802557a9f4fa4328d6af066fa8bdea9b90aca240e384babc8d2387229f3889648563ec02d774008862cfd04a794a58c6485114b4b947bda19ba1cbc3ab8aad524198b42457e06e9122888d53cbf4b9a919e8f94949949b2bad340dea720c539734bbfa479538c3cb06be0bdedede8313b8cdfa09c6083393f7b457de2f5199d02a60b4306417d39ca20ab5402d5d6cfac743cba9359d8a2b50f0354f96b71c6a912fcd6d255696d91577d5f6d16ad2c63ca34ea55c00b827ac0a96a3c622556e4888ca2ea914e66b85ef4f107bdf6de614796c16fabe67c1d1137377b6447000b4f22323f8069afb2beaa5fa22000e44749d49cbe14cac81fd21b635c6a3723b4a43d70c43c7251c6037217fe36871078540f22e0ff1dd1d2fe9de06b963d76dfc9abf6c4e1986b5aab816b5c563479a7943d66d200f3c7b72369626455921c87bef0da838a486c1c1366182b7de826c1ba21febd555d57a954b66481365841d8d6bd6b5cbb05565a015ea31788aadf232128d4ae052d3fff0a7b969ad6a773cbb8075abf9721db3ec763bb4b333bfdfd5ab0005ef45e6f7e5b58ead0665b013ecd53d123cfdd70ac0079d069fa680d68f1ccc5fe12a4f0a565055b6a784f194add5ee5ba18fce29faca2b3330975a2dc9c6afdd3a89b8b83eb2c06ce4a4e4eb2dcf8583c684024625e2f58e28072e4dce83a99a17b21e7444d26962be49ecaee8213ef435f8ab4c12c7a8422059056da425e65153c99453add23cb64231ccfd702ba029c52f21a6354fd6e9a6edab6a91cf91a8bbc2ca88ff62e20658541af136f57d2b84a865a49e8b04154bb4fccf6e147ddc2f435ad4e11b8a0c15b8b450c7d32fc7183ba4abc4bc701aa0c601f758118eb782f988e99f61bb6710c67b5a2d79a001293ee1d3a165cd195899648d21a52ee664f776700dd594efd727955cdcc5d5f26107f32c84c0ec637dd0b68a0354468e97d8ffd81fd49cfbb855dd0a2197460e1d305a51fcb86421274613a39cba244abefa33f714a5babb5e2ceddc08d34d04e6f3212feae01dee386191a82a0177eae9af0b788edbfc30fc87839962472efc8047b18631e9408fbc9d16a204b4a0e74cc8c2b917574c89f00acaa2c89319e377f90bc9a77a74dc007914149c616135f82167ff3e2d29246b979dc6c38503db45aebb6894dd98247bdcadf0018214f6b32c2975a598a1d93ba0eaf2a7e107dc7beebf6f7a23b604e274d0d3eae5a270c2412777b0148634ef2aa4f25e3828642a69fd4f1f740e43a8f726d4c4e3defe2e48fbdc980d7176b340dfedd99a8aff85e81f55c03ec036ba2eec6e56013e710f3d5c45869a951180e14961b694d74e8140050c136c4f8d1fa9451dd738b34f414e14391a49ab4bcb1739f7d54874e02b7652d0e9369b1a1bb82e9ddb361e12dcbdac836481a18a52a4c4c74c25d07bfb1c96a594ac32c0a0350740c3b9d59c71acdd94d7b8f5a73dcf3285413ece62c3616d08261270bf2ceb0eafd413222d0589466dc202188116a1c6e3efc3b5b659d099a1b08d53937c1dd453a4095b29dfa0c738888fab34a075655a4bd4ac27f58a0eeea0a68de561e095d9b144cec2119f3c4c9c54e36a793fc68204226742b79906cc332f27a33661268067618419a69e1bf4ac8f61fb98bd7ecc538b420c6d3e80a09124b409e043453c1e61d689ef597ba10f2458e82d94aa5b4d756a58afbdefe44447a56b7d923e518626faae87129fe8f0c7c20980219d102272e68c204465c6004acc519dc43e490ff02c798aac99eeeef3756e2b86e68ad650a2da3505e963b6f0e5af053e1313bf8a7eb88cf65de2008f930b37859b3780aa298a2acd081fcb3b3e331d01017cdf44baff2d0c21ca7f343882f255a9ba00a1f79b326b4421b6c0497b6430d785903b1d4caa0b254a645a632d7eb8401fd50845491321521823797d5744cb36d8a3215cb63ce8772f976506ade642865528a6e364e924c4f16bce627f4fe801d3dd8c148c5a09d9e43efedac8b9ff77c8d5650acc858adc96b600b063131ea1e938aad0842e648240914d36d796437b65692aa9316be00ffec9111e3e1d0c45139466b646a6561eb23c11465b12c0080aea62efab44bd33dc03659ef00b09a9c5d15c39498d571c8a7de799b1a627d64621d5d62c4749e399032c11404a77f50d70098f4a975455a52cc64b6d95101393fcca01053f4e3ac1fa806667ceb0e48927faa434f6dc057b60812630fd7624b0db03c00d7da4d6757db0173cee40686aad78ce063a84c4b7d92962c8461fe01d5e17e36b4a3c8bb016a3489f64384e9616843c1e88ada6ee43b1a4c3ee83cb4f9e992e862676e340718e6ce9c9ee83d683e15ffa151d0ce8280adf79f6ff213346e4bc9302ee70dab899433622ca4b03a1d964004831d1a9af7f3420331503a7316825ba66c01d2bfda12a4bfb45ae10a1ad5bc323442a8aad4909ec05c60ceef0f854280efb8e5d8e314722a97314c013198d26bc84aa824a457697800be1d90a4eee51214871e68854a99285c1c8a99568c0784892585302eb79dc8e404399aca4c9d9180748c7e67eb3204634cfc905cf1ae21c3bd497a2866a6f495c1cb60b98a011b9705c9894961fffe45fd077aff4b9c31ae17cc2a183d61014ee5452155ac8c30e9c838555078d98f75b0922e0b5fa644bd308780386148f264a3996e9ef73f567bbbddf3729cbb1a564382ba0bb50736b3975a7ab1dea0621c24fa814f860748f0b3bda75aa7cc220e70e1dadbe2d72f6a1573d4606b665938f1626fd8e9e10a7ef2847cc4d78c73722f26684d1e2efcb9a82b23db84d45db97a7563b75bbf5180d52d842ba7dd6b7b24d2dfa5d9aadb00ec919ebe9c62b3dd5d7b4d7d308984e760ed04db4da496aa148d0fd4e4f3140a3ddd92bac0378d47a53576aba187e37c07cc6ed30ec84f82fc657ab0a62640c4a1d493f119062f0ea4801767123e4a3546fb83036b35ee0fa9b4576b7cc03c9da40199d9eed5d886b988834e3b72fb3ec951b39b221eeeb59f03a1349f623b79fb72245bb7796113413795dc4def1d2baf7b5e7b1cd1f7bdfe08c214b6d20ddcf9a5e6bbf0de3220fbc063f39cd593c2883932a4a4fe9d7bcf0b6ae0fce0f1727d858d167dbf76dc1e78c325f6d6f59a02a8a59acbf886f8ea1e063dfb12801b7ffd990032874ffd988321d4142412c082ffc6fbc360828d02a5baad661ac8d81b96023968d548dd72844921db9832d310febcdfaa06fe63c1b4e6e4d90d5303c6eaf1d58296512650586d5da901933f0422247e96c20a398bbe9eaf626d64953026b5b91656c753891ff689f6df94f41233def871d9ab4a1b44b8226bc9704c281ea38226add9dd6c8d2343e8bc3855f203f67938b28a4ff21ec626d7b46ec115be5ab82ba5bb643cd75efc95943594200a3e9c63bfe3e0a30e567e01ec0cbe2c8f5939b61cd378d19055d9dd310068e40f2ad5f07722abd730df05c7a55edd714ed726c9796131f3a7965f64e14d99e42a00ac5af0cde2dee3b7b858b0b311c18cebf65cf28409381444890c8ba2c763077769b6d05b6746a8d426c7106acacdd427cb979c50d8cacd573a8076fdce343fa870a59746fca009ce371a08acf9e23f74f6fae7bdcdcffb5c296aa8f97246f0b6980737ad197aefbd1cd02a128b1cd2758d12a6f12715af6809fe1d6729b03459d353d36d0b424d3966664dfe6499713c51062fcb41441ba79788078984b07d701f65759279cec72daa14f5a89524e9589616c78a0c12bf48e6cef517352b60a47fcffaab97592a4e0cdc66567c0f9b8d4cddeb9329c7e87000b920ff9cdb5e378d90bee561e8d85f7587824887c3111d3261a2687fa880e51c116fb071c779f4873b054206e2a11b0b40eb868ca6418db9f478d2b1d64b8f2a865bd0716607ec3ca959492f839835724634dc05ee0a8f54456b752146b0bde0710f23393813699ba9c87b5719a5a334954987c250725e188da06b4c8d4d747e2c49d72bbd8c21acdd720c4dce8f942b9aa71c3cc726658c0cc0960b7cd111f1acf74d9e73cb42ba1a46680f71613cfbe3a5670669caf58b76500293a02a9fc6c372010e7a78ad4e868da03106e113261f3c58d6fd3c784ff001206d347edb3aedd86118059f942591a9134a1bc7aedff5a5b6d2d525ff945adca446783ad27b5de86cc32f782f6bf6139b011759b0673ee1c319659cb007eb82e308d623273a1c17765734b0e7fdf9da1e1098c16cf72669568b007af6eb67a948af53b50b3ac233488bd95a524607f082a18b438450d334638c355efebcb6e700896aba514c9061b00e26e2cd331101b98f1fb62b9c3065d72b9a8cfe7648ac3154b6d0ee07903ce044f2985e84b05fc0411a39877e49955a74c25d1a5b9c1145e10fbd8081cc74e2cf804e34a29d5153441fcaa4d5c9dd8c6ffc9119daab21c9097c6b874392535970f2d77c389d705cc25fdc100bb794d09ddf4589e8d09fdb18cf062ef30a1cbcf8f26e41e309583957bc56a2f33ac0c3363aa648530e8e115a323c9129abf92cf35092a3ae98e7c55d77bea5efe17e80c56dce8f1325826a17d061bc70a03840c689596f845cd4507a818172dac05d7990e52fa2dd7efe888734ebd50d978bb9959aa9ff238dc1949fb8139ce3f47b3c175041a0c2800b0316082c005820902d60d820d1665ad92fdbc0e939d18b3424e250a4419106231c224460bde6e7e5d19f24c2738540c6b7ba188403c2ca6c4dd83c88a298bd8e7d840c17a8f7beccbba0dd7661ad19a9c9f3ca09f2ffcd76ad748be675a0ca428b6c01a70b5613eb2c9190f4c844654bf0d0ae02c2aa19c09621579b43cbb54220d2964077556b6bd452e0254da4b521a4c764a97211539b0ba83e7c687aa7cbb169a9b75f8ee36c95136e507e24a25e95153bf028192c75e7bfc68e341c8fa0e19c4a3209c3edd78a431423c6281cdd50aad8473cc5efc00ab60eefd11fd6d522cd407be8a7fbfbeca1c784a4f422308ddd6b9cea5353f76a752d2a7af6b7b82e24d57eb5f7daea8a4f6b0169a716c165665a7f17446111a8688d4218333139ba54abfde0a12854efbcb8d5d8e3636194207f9f65269ae366f30f63f6e52c98dfbf09a15bd41cba3a22ce98f91148219d809c742177d4edc9b17d4f219e7a9fcb3bb789a6112c1c5189433dd14361f5de8d2c2b02c802fdcd66d86e4c7d2ce1cc5cc94ca02efbd2c2e29b5c9a421cc2d44b81fb1086280b0710f536e10eccf02da123e22798e4fca2e940118219b3b35bcee8a77f4820c9c98b7475767c643e77edaeca48b024f182926b31d24a32bb78c377afdc7df208f222f42160e9268065d614c65f763e5f240ded74fe10879c757a25491360f62c8be46a4644326eb90ea4dae367ecb38b768c3707125db6e3774e4e30b003cbf46217b8f60a95021a4f9451e4d2771efdda4aa3b406814bbefc15d87cba527ca0d0fd57a4c09644ae07eeddd96a7939bfd0dde27a5018e0c78a8fd6cb5f5f2ca515eb7440a03b6162c31f0204401044b32515d40e7b1e6549f89f3710a0565fbf7d93d8dca95a1e21a0746d401ef80870d3aa9b8a0d5eee4ed5280976eaa204a6b1e91eb6d7bf0c17de5ef984df5950c400b23f2dc0d0e430aca1d163adccb66c64cd849821c72086bca72255c1412344083a0dbfd1d2d46fcb4fcb91e4a4f3088b69e24686e84046441b4e25360040a234ec596c2f7e302c635079c797044d31ef0e6b2ff9e7fc263798ffbec4a9dfc45d78fadc1924dbc62d431746a7ea2e6506154eb34874f63a8dbb3b7b6a6f8df3dc81eca85ca6df0816b305a3dd898374dcb856411f09f3501caff91b4181f9b1970d8e90d4587af450ad431c9dc6a64511a94d115b4f197a1509ef558feda023c5878ba548b7f56681022ce766169302914ce6beca6e87ffa3f623e7bc9bd014008198779d57c1f3d0cc99af7c594c173ab04003e9cc8f4741c9749838b9a6c9d38161385a1e3b405b6691cd6e45f474c494195d816cd401ea6663784be5d2227b17340072d144b9235fa8cc3769b4fae1930516731d9f5cd69739f78ade4f96bc1385979618bf7f7fb5dd36d72c4f1af9771f84549a0be81f4ea6da597b6b1a2e536ea000fabf4dee05ea4473585a686f6fe1279c02868530655034bb563a8a5dbcb7c1a988fc388efbbbaa70076039892bcf5acaee1470cb39354aa069b87c622644d9b9b7845eccd949a7f8abc421baf0c2eee38eb0e895b4198f58b652191a2c5362e1dcc53735334b31c119e55cc130b8ef64a8ee484dd1f66d8c13108f1c2946fa8201ae596b4e6d2fb772b65dc495ee3b87511ff41196ab322f2553f7b39d3354b45f1b337c8ddc01e6c7d017c366b61ef2c5a94801f500bf1461e1a33ed50348918c56146a530e1887115f05ed590c6b277922b3ca1bf701b6ebcb918ec4dd94d1691ee3bfb6b847dcd836764e46ac4f2dd3ea7010b273d7b82eb079db440de436cb9e89131f26700de0a95f6a7a9cd08be673910b578f9443b521d1f08c9e26b2e61c8ed1c10a23376db854d47b0049393032ef479e9b5a0187c0bfa1a86105e6f1fe09152ca006a8f06a8e369e620b18d4f0f8c8950e846351e42c7a9a850bc9403eba31f411473132a386250296a2bb145e9981162db3554c27e144913a89e0c564647703da70927a5b4052aa92368b16a3c974d9eaaa2d5a7a6ee3c94b274f4196b4e295068f3db976bda552b5106236969aae4abc54699e8234c210b87e23aa3e6076fdc128762de4cfd143d9f7f50499965c2455e75cb0d6c6460811a195ddddbdb96546085907530736ef1db0cbe69b550a462914a576b86684582af05c599551f90648877d51d086e60357e4630da5a1349496f7770a457ade7973f43681899ebfb525262cf199113223046b3e9a8fe6237556ba46ea68ab46eae8babaf7de5befbdb75e57cd0899d1b17546c86399345205f0017d4ae9cf772d0fee08657c9718dfc5c5b93c16cfae3e5f825bc5dbe202f330fef9aec5b9bcb81536f92946ac9530cfb04ccb3bdc5d129097cbb6b19ce51d359692d2179f38700b0f07d432f3a614d31bee74ba3c19f90fd3df3134ef70fd7289045afc8db50e5ad60abd87fd5aa803a2d8b5c460fbe2f264aeffad3de9b327e5fda2278ddc5a967748493dbb3c96d9f29c85afc77e478d657ce16d472dff6e14bfe01b8e3717a95330ed606defafcb63792e4f66be747171c13bce2d6afc2e4f06e7cd8376b136e942539fbeb83c16991df6484e48e734e7a2b5f6e9bbca57724ea22a7fda97b6beffc3a7ffdfa489ab9a789c02e664d773226f22ad5cb96a085e2f48189df59ff2dae3f78d06885def92d93b48a29b05fc94c3e7f4d5742339a75cc969d16ff264ac97b234a79c73ce529e724e08f8d329e536839473fa90ded403dabe65a574f90e8587912dd2feaeb2ef2bf9d6f39ed3f77bda899ca808a73ced3df9728e1168db01314420da97467a4f57adb6134d2a6df6a1fbd3f2213d61a430521829ad55d32895744a29b3af1e8bb4aef29354c9bba6e45d49796b5ade9ace7293fa534e0bdbe45f73ce3934e77c6f32e7bce1d2ba165b576af9f25f0a5bf2ef0ef3af268f655ad7aa809868f996122dff22d1f2ad0e316a39dffc19e4e3bc4d7236792c183f6badcd168ddc3ba4ab9a0c35792c128527431aeb7a04127dd22ee888943699a04be11f209f3ea5b73ad0adf2abbc5ffa0b5fdafbf75277c29dd880a20f2c57030bda310ada0972a2a01d1f30153f1fed404fcf8903be35dd693add1369b7b41c4eda5e7c45fedc2230839fe40721e1a311a05dd01150347487efd1e92ec3cdfbfa99cd6ccecc333afdf26cb768dfe2c3e9fe73bb79471cd66bdae17c98840792f9febeffdc0cf37677870ee44e78d07e40effd23f27edc060942f914084dc62ab56f52cf2d05eda69e5b0d0db7ad8375f1fd0921f4b716a53fd0e9dd6edfa91bd1fe8f927e52e86f3de88e6d1edef614629f706ed8bf0b57e46318f61b3b618528349afad95bbfafb71eb6326b6dfbb2305a838e60a22d6dbd53cbb2de3a6185282c6bbdf5b0cd97ac97d496d44e7554f48cea0cf3adbd03b653cfb7b6f9efdde6c87bd460757868a305aec897bff5092b30a1ed57a4e7ca4ff349db1bba64c0dafa1668e386afcc2bbb134fc6ca9b07fddca7cd34755f09bce8e34eb8914a9d50a5d0f33c88b5b6d6211d5f713b3d448c04257161680985010d0bb3b0c90295454e16a92c786644915810c1c20816415824c16289b376c69472069d9186944d6c71f14091525acb03575c9df7f5b0d65a5beb8d8daf38544e8ac7e7a7013740d0674e77ec099f277eb42f64513d828a25889000022f72e0c26c810b54522c3181123a6ef3852caa95d239e7a4b50c53b5144e5883e8f88adb6940909e69aaf6d2306ea5a5dfc289228490220b1ef424e1c481606288a808233200c28e0b8a0c1600e10914641c0142044324b1928012ec0041074a34218490284ec44d514c121d70432b691ee08afa03129dd6fc818c2dba3092b34385874005622c81448b2f8cb0c4075870e4c2e3072f7e50c52a8b204c00860f212b315c9220266a5084297484bcc00149592b4c1df98af37183a3b3d333c48ed1524e2aa59c953a08e8113968a102241823081414398104910b528b274582080209327c503424a5063e2ed4e027cad0040d846042044cbe38c27fe001126a0f114e8002e268c5044f14d7802790d86aa794d2d229a54c91506c51827a908a8288118cfc03621c618818633ce9e288063f704177500138014918614851061857c0c07ba4522b1a00418f0b50c0c5101524896122c6114c70850888accae800136208a102e7092a7cd0b037889b207082d0096227889e20880461a45a7ae315621d31c2d00b221254b5b60689e0a789124828f1418e1094908428ab11c412cc58800f74f0832b88a2e881112ae27c92f215c7e3d380273f1057fae45329a2a559a7141b0f46483d71c4882f58e063094d6a2060075186948105501323dc27dfbd53d844296fa0c447153655a0aac8a92255054f153eb3458a2950960834931259ed8f67854a1139be4492259650fa522ca105adb4be12d7880f5561a22a9d12ca902a542b162c914ae26805470882f2915346144f68d42526080f9c18a10847e420044af8b1b27d0005516ef083238860f1a02cd1e309310d80aaa41fae39a736dd0a4d92008c52d59eb53b48c115577fd02328cd9d08a206106124b5497518190265c51838c801102e4c2b80500208274bf801072e4c3298a4f4389994d21b271301f4e40cb105ea8a281f48428a8a13760045116284b1832b920845d1dc2f28807cc5b9000592aaa196549944738737307283a0a95529a594b5d2bfe22de18101040612309480c1040c15129794d7c88d9e73523ca325a99268bbc0527050bdf0c20b2fbcf0c20b1963319d380a8a8d204d232c3ae7bc778a1e3a05113a85114aaf1454d268c948e7153db85617afa8ba5bcb244965b2442b9594c0015c4122220029203a789205114f7a3003282b2862858c1b948162a28a16149971defb05115f71466a90e6c217494c0fe9634161183b338c21d0c94b9d400b58848422181581848f12434082912310f08811850c2456442f9024d145132e48010f96b0d97912c613328c23970684180a920221867070c50c5ba3b548e08aab2b0b939a984da0a68c42e839a7a9a55a1bc64d0d03a786a1639a940bd713c50b1b7011c58aa1315031f86203518a9c10095102052c78473069c011aaa9554b757eaa01037e8a36f829be352576204f267b9a36bf66b1b65c6f792889b18ddfa478e8f890a3fdddc66f304e0582e330164e8ec9f44afa39101b84d0e2c76ad2ee1d7eb96d0dfacdcd741dbdddde39ddc66f1ce7e28aba53fa5f0f9736b661ba0ec46faead46b771d16431dcd2a2650bbbf762f72dec56bb4d6cab6f1d4835d1fa37fcd24ba57ca81c8e2ebd6f1dc863b997351fcf433d9cb7a3e55f4f07ed405aa08d18e04afc9696a8758d49d6100391967f6305a2996a4c35a6ea3640507402792cd2155d0f05222a3482f2881ed12b7298774b3e575eefa1bd08aef8cb9aa77a45a521a5212aa9d210a812a2a405554995784a3eb93464523a5552a521a59e9216943eaa4329a574d2d20fa5d69778ac924f2d0d9973d27969f61b06c91d3fc9d736c9e32b72ce120f2df558943e233f2522da5f2555e2a9251f4a21b568c9c761e0bf59f221a26956d951f151d951e1711b5a69c8637999e6a440db514b4c1f918e0e43e933bad5dd4b3f7a530b2d4b2555e229f950abd4739f62d62ef568fa567e4f2dcddf4acbf7a7960ded567f8c967820d65beea8a4e2ca5ed6f52760ef9f2ffad6c394524a292df57869c893d98f3e95a657c547d39ba5941788a8aa56aa1de8e3d290c742e98653502e5011910eba3444ee0469f9a52197feae2a3dffa9a8f4fcadb2a3dfc74d7be8f95bee68f9daa6c244a534e4c9d0bc79d0a521a5214fa5e153e96b9f4ad79f34f6e6adb2a35552a521a59ed2109a3a61886ad472d2ee4d375e62eebd4f654422eb952d2df7adccf561cbe9df6462211e894772c42360a8f454b96c34b2ee7344204a29a51f9fa694d2087304d168042b94d8f63e46cb34d2c7ed31f1d3c4e1a55c0bf3f1f6727494f86942ef814225f4bdaf4860bcf1c89349793a83fe49d74d5700e83a6346aeb5d64a53288d5bb401aa40818268a574bb11c2b78487121f92e8f8392210fd8b44471a9f8e8f462449f47b1bd2efe7c32dc18de18a10f3fe029106a7801b5f7e4b50a0613d37a9e12635dd5ef43635dd6674dcb60ef7c618a312bda1f55a816244a2778d415e8a411afe690300695b5dffd5af6121d3c4a7ef84f07c30598292319014a18bedb6d0353eac1f6bfc18e33f0a811e0bad7fc3df93b62c26da770e66ab402f957f170e78bf421b36c095f9b59477d534cf30ab90b70a7aab64f0f7b351f94c633f7b5ba27f590c8b412a1bf6d7c9ba75ebb6f4987d0c2bbdc54a8fe578e4b1607fc34b76c3720a49cb3029b7af76cbe98705db84ab34fd14f781a64fb242d3d7a8d0f4b31a68fa98ca9695b678e4b1642588d2f4734ccbeaa50b780343b084318aa0e99774b001aafc5621659bf47643708b9a851f4de9ddfcc6b540df8236bc046e85fe74225b851768fa2979bf119a3e296fd30a34751468fa59de55c7234f06cb9b071d8f3c167ac5235ad4954664327247faf96041d7b0c0c2ae61415b0f33ce34f62bd4d6530b5a1b8fc818646b3c3257bcb825139eefcefb50f742ed6aef877b3f1e6ef18cb450291f8eea72fe7467a1b4c9184f3b7cda596badf5aac1b1d6875fd3e191e3ef9ecd43e1fa7e64f8444f20f5c47a6adf4afa42ef61fa748be7acff6cea43f9acf6dd5cef58a6915f7f6251be5d83e5accfe6b1c8778fdd5bef07c6186b8cd6596b75fad11da47e3f9e8c943a89036e50c7648608c82ab703cab6185f916fb797fa7ebc1fef47b6686a70a5f4c7bba153e58a1a64aac142cb95524214ccb153da2076834160101804090fa5653008a22acc8141ee8541200e0cf27bb16743c3568375efbc3085ef85a819175f2b077932347e9a7e9b3063524a4b739af20ed7a54c03ff3efd6d422ebdf530a5f3d2b8334a79fb2ac73bc1eb1d24bd832a1075218e65e19f7fefdb49595047c37795f51065c19c7bf1bd30c761f0bffb7e431d67a1af6edee13e649ff5b2057c04a1ed08388c051c666a6b410861aa3a44c19cebf592c19a10476ffffbd66fece985a3ef3f52dee1da6279874b57e15fbfb2cd104e8882dbadb43c9daeacdd7b350d7beddedff65e597b4bdbe6671b85383a6aabbe0783589665d94c73b77dcbd67aefc5fe38c320f2b2b8629795fa084aeac7876787fb190cf258ee65f154c11e4740d77c8b61908b4fd0468e538cfa04286ee4a7f93307132d1f0679321706792cd3a296854128c481411eaaf4046064a909acd543fbcb2089c46198d0a411694402d55a6772ec4c6a4667562981e08abf495e99e95ff85baeb4bf04924040fe33426684cc08b17a106126098dd4e5aa999c9994c97499cc0881efee743342667492e8fb7ebd50b3ab55d368e8541a75a38143a3de3b9373677826bc772667de0a67843c99faf3de79efbd77de7bef9df7ce7b2ffc7bb798fdbe5034233f2df115f9b52e5932ef9dd1a915fefc7b5f0f0f1e1f766672ea4c4a7bdef7c2ebd767527326b5a3dffb7b30f49ffbcb34724aa06dcd474b8d88f623f59546b4e6e330f7ca20addd3ac3a3f7b5905257cde4cca4f4be345e6774f4867fb1191d7dbfbeaf17f3bf97c97de81fe7fd991cdf1a142d5d5581b4fccb04da9029b8221f5e26f732b94ce6c451359529684343c115f955a624e69ef745631fc398cce85cd6efdac3ce0891f9666553012788e3277a6d8803c333bd09bfeb8caf96844d53762bf7f5702bd3ad906a701ae99df6251552969f5233295f59fea86ba621e54afa884958a6217d25651afa525799492418643e128944224588e36c7c4925c5c60db8029ffe7c54dbe130880aa2543008c4214d9ce82a1804e2c020245274dac68c87ffd0c68c5c035c814fe35fdeda9b901d5c7934b2832bf355724ef9d7c357604d21fdcdbb86ae81e2c05efb6c7bda55eb60783d6a4dc95b33c11a10d792968296d6cbcf5edbb07f3da00661f61976bdede5fdb315e2c02032461e295e8a810564f352364fc726c706c706657373e3b2e6edfe62aca9b5f4f1ddf83a77e58f1fcefa8f77f3e3e5d0a3478f1f742ca5e03cc6081fd67b47e400d632d3bc1cf3fb093e8e9b1f373f6e7edcfcb8f9617353c357a00c466e9e111bd7c6d756e387cd8f9b1f3736914e98d276bd8ea520c8081f413b382d2f11bf4b8bcb8b4b8bcb8b8bbc6f5122349af952efa82111441a00da050d7185b61c6b2687a1fb45d38729380c7d7a617fb78ae3c281b383a1d28cfd0dbfb6a7affa0ebbf5eff5371cbba8bdb8bc85c18df1c67befc5ef3b5cc719e38d7f217e79717181dec3f52d9703d2ae0bfb162ce6d2b4df31fafafd7242acd1e5c9501717cd237bf2c80549f40ada05b920a5adec72e9d2dd2556e11516c24258d36cb04adb56f69ef5d8630c0f697848bbcb7fd7d37e439b6bcb5ec6de7a7ff8b2773d93e933938685b090f6ec512af0ca6db00a17b90d561539d1105eb90d56e121bc5a218a99cdcf2889464aaf9477ad44d2e897b257c9f2c6728a956bdc11167a3235d394b0e6b5074914bd17ddcb4c4295c44f123cda45bb201ea3992d8f1e668b7540b6e5c9d8e7f3b9cf39ed7c1b63ed7eb1d6526bbdc57b8747ff3a5d4a781a8157d46db08ae222bcc22b0d6badfbfa9ad5ba6bdcd18e76d27b4aadd9b3d14e5f6573beb22776a4ebe32bd7b8234dfd06d6986a4c47ee48bf1b0de3c38785b01016f2d4f48267c563445b597c711ed08ea747aba05d108f0f6da40fa05d1012402e4f1e3dc4dce21ed473a3d16f735acef8625fb4cfe9e6572bef3863cd2e2e2e2e8f8587f5e2143a700816412227ab1abc72e244073a89cf47cbe0d08c8989297aa877e1f0bf1042279028ea401ab4a4f2ce61525c5567609709a627bd6f3ddc404d799f4cc8fbb1ef785b0e7eba104208054308872a2c827ea19327837f9a00e184d08487264c08a163e8e4061b6ae01024bad7217c473ca0f860a47de84208a11739ccfd09a1115ebd9ff1aef7724d0e4368dbad5c11066ca8a9975238048be8854418126958bf660cb15561ad313174ce091f0ec52b7f46de95e6ad95f236997eff8994f749f3ac5996452b2572e22b9b412794422716eca194564bf6489d4aedc0f3e363599f41278fc5a23f5656f500e9408489120a6dd49897e384a6f484381e039d40273a3938c692b8d66aad13225b9d3c96e943002051be92c929e0e6a021d618e5eb7832f3ed67bcb93b75e8c8a1e3b140183c9d4cb3ded3b5d6fa37c45a5f474dad3a94d6fc354e5666c1b5e0ac8d31c618638c315a1badba95aa7dd612d5f856ad9b9577c481bfbedd72d0f064ead3231e507ca09f83862743f3b6d56e38406df37e4feb7832b5861b1c063ec705ad3a1ecbcbd5d21654acab05bd871cecd3f0649e86a2777d8aad8d4f832bb256d4f164fc2b662991ae6fdfe64ddf66cc560558f46b7c6adf46a98d59070d31c68a7d96ddafbf53bee65a4999e63ee96b4adeef6112062d5b6b7544d9465fd3b12ffe6dbdcddba9acb538db74c41a9c022217babe8e9a5760e2e9d0a1e3c948a99bb464e0c4c20ed996bda6e3b1643a8890e5180db4bce8d081550cb816e85fdbebd0612da8c311e99831c4eec8c111e99a1baab5d6dee06cddd1b7c6a96ea8ceda6aed3b8185d55a5b6bb5d55a5b1d8410bae75e6db5d5566babb5d65ae79cb3d557e0ce3df76a6db5b65a5badadd65a6bad73b5d65aab852b70e7aaadb6da6a6db5d65aeb9c73ae5aebd5b9679d73ce556b9d73d53eeba2d76a6d0422f25aadb5cf3a596bf45aadf5671dac7543afd55aeb9c73ae566b2df47942f5e847138aac3f9d92f9c4ee1aa7e4c97c328be693978244288fab74ac6e164d2317843f92f2cd59349f4c2894e7ba3f0dd05ad9b5702dc47f47d8b1771f6e631939f571dd8da42527140945cba75aa699ef4f69369ff490d227146a59f7e5bb3f1b1e3e66d134b28edcaf539f4f9e8cff7b3f8f1ce6ee79a4e56fda43cb774aa49cf365b751c1b675d0f3b5d2b4a80f49e92c9a46731ecd6ce20945fb0e347d0938191a22e014603dcd7b3f3d5fba0c3ee794d3e8b1cca7efe7e634e63d7c8b398b687832783a2da4add2357e32afe7b1c489afcb29d138efabce8bce39e78432dfce2733cff9a44215d4026e0185a0e557d47d3b9fe0e8137be20b620cb47c0c55f349cf9379478f25fef7ece733e58d7e474f0696c0b1c88f26d052ef77a46312bd1d48cbf8f3c99399f3c97ce24e89a6714a28adb3683e99502a9d4f1e8b74d50944d80c3a584df5d9691da75a6b3201a93159939bbcc6813810b781b9a548474b81a8bd918ee340e4fb7529e5f5e9b0e5fabad5e01c435dc897638c40af078f13aed0e2df80f1a4e3c718438c10628055fb137548a643a2754c949818fd7a2cb15826b12bf7423a444face7e400d6310596abb16f9104923e44903e1288e2240f8a1a40217da4cf2dc2c29afeb53e76989b3179492963b494d99a5bdc9ff1a7162def16bdb5ed94c4a4a8e019e4c32c9d7416b5a8251f90777d1bffc5bf0163757a6653c71c5199cba2199f5631444e56e394efbd27df290e4e86a78ff3c639d076852b148595f67e97b43b6df9f182407cfaf182000f5abea49159a3d70b0c9051cb7f41460982b945c7d09a78ce7776cb846eb8a65933d7e0d7035ecf1b905a3a231540196594a1e7037ce60e48edfcd4e26406aa084aaf920bc4c505ba4a5af465a2bee3420a115ca00b34033502f74181082dbebf140a08a81405605c30210b203a3f28948e3e474e75d231c6eaa718a5121c0335ad9aa06b772802204993199ce24947a77ac2426147cb9a603f411b1f7da9b4f75bf3f952bf4bce2905174535cf46c7d7ee8a198507f8c7f78f9903cf46d3681e9f0bf514692b730eb3eb8ede3538aa62cdc1f6f82946b8c9879be5792cf1bda664b0431e4ba4cf979012fa5bef7a414aebda50709a87bef762378b5636a1489796bcdebade8a1bb6ae0dc7f535071a5f2860f431fa5746217bec51c832044e1acbf8af777ec2eebaae8cf38e3cb4dcecc5b1c629d136cf275502ae8508b816e0d7404166089c74cc31f8e9f1932a70d4dbeae6615dfe56bd60d8ee862d6cc3e174ddf0bb6b02313e96b18f8fe57dffbdc4320a31388d3d0ea7b18cfdc47e3e96ebfcf8aecde2a14dbae658250feb390f2c57c37a382f472707bcf2d39b32c6086de0871e6fae3f7005aec4bc797caf87889f9e8f9fa095b7e907fe8f864f65a0b9868530169281e6ef62f5d9c4cbe1c54f4fbecc3963bccee7c2826fef2708bf64727907783d64f9a09c1546596bc0e863c1f874709ef6d8c3701186596b2d5de98d3db5f335fc1ba321bd765956093e5b9fad1617a564997d29ef4b59cadb948a7ffe23d1ccfe0916fff6145c812a29a4a7597eef2995bc6b4ade9a26f458ae9f246a844673392d42a3b91e2963a167e43014c3e6cfec494fcb3bcb9e53df51704efbf06f38c0577fdeea3677c3f5851af1828562709897f1909fde9bb9e130b1a41da16d93f66611dad333672c54c3611e85375ee771980dbdc753be83851ecbc3d76d66acf3adcdd9649a0166253095d9c0fac418466368965195a799f6f2fb45d37959776b1af6900386e5ed80ee0c0cdb5167dab7681936a354fa1bfe3b466b9fe5fda2b57cb74a5649f959d25e65737eca30d2d3b7ee4577349a8b12a1d15c49aecfe130f45eccc2daa7644f37ecf258b2bfbe0787c9728c9feeb530dcf258b075dd7cff59f7a28286f4b074477bdab9c4586b29129408976b6d90115a0419b1c4e5b1bc161bb5dd33bb441e2a0f7f61c1181c7063c64f30c64f30bfb87ff867de2f1a5a4fe7fbf49f4f77788e79c7f8515b99c6e51db1b4f9c597daca3b5c5bd19ab2e565c2e8e25e669452c639217c971738658c10c609adc71a6fd67c2be3bfe113bbf578b3e60bd756da438ef0618c10de67d980b4a93c6953f9940daf56ab9550b612cab22c7b2b0d67e5386ef54e8bbd030ae550e5105a659f436895e550e5105a398e5096e5c884541ec264ef4928d1081639916ac861e25b65bfdfea7a6c67333e4cd9b56eede33beb567a92f00ee848ee3af72e6fa745dc36462369aebc5f0dfd27141f9318c6647e4258de6ff5841e8d2f690dc5c195f4ae797a660e9434cd1ad4295fa10d9587af5180f42a156ba5b7219152a7cae66aca864b556523fd4ca9b82437530abf5aad562b5214964bf9942ce5a7cb4a30ee18ada252e4fdbca118ad25be22448afc0c918afc908814f9192a422291e2c318659288040639d033f288bc9f6babb8ebfdc49977f6a4fad8e662f47c3fe3e5dda2e77c9ff2788b7ae39f5f4a216d2b30a1659e531e53791923659a8c94f22979b768eab257e4c96899267bd2cb8c945f119cb357e4b1d0f7f38ac42bceebdf86830f383c8db1183512a594faa0e9c461cb32193b10358d7c6bff86f7d8f3a1760ea391522e18b2d7de6139dbdcb555bc590f89d2bf0d099b77a1441de96fb8a5914a5bf515f9d43eb63d1c367bd286b90f68ec336dcbbeb4f978c185ff06aca614769c3f7f8afc142945f1de7b4fca1c97c4f17a414a08af17e47bcf860b6752befb9eb4d8f56eadb5b656ab56ecfa5d538afe7ba5efd7892fec3d567fbfaf36d3bcbffebeebde57a4e91372ef0136e4803652f243a50c61da9ac161247e09efe6668dc9423d83c3580fbf3e1476bd85af4de60a837ceb3eb51698e1d62c6a507914a140232f5a11f929ae6cdee15a1b4af95db76652f9f9a55afafa33ead3d89c5ba9f3676ca54d65736e65874cd99c5b9939ee1d92c648b5a7dac7b75ab4967d340e3591524ae9434d9a0ce55857f326dec48772a4f4a11c6f2265fc1c30d4327c4b730a701abe1cfb72e00a7c7bb10661b86f35e9a4b3f47380d63b689f9ab2bc350db3f65d0e103a28b5666832d5592b7de72acd9a6b0162928610fa9037794099a76cf15253f2c41d98721d98e301a41ca8246dd915b554342400200023160000300c0c868382c1581c8929cf0f14000f69aa48624a984844e228c961144521438c21c01040083186185246431400f0874ac4ac3d31fa2432aa44f7e28989b6add407d155eb1158c2a3aa7c978d4a4de709e9d03d7d53b8ea17aa024a5fda815d4b93089f19a9aa10fd83b7c90272df9b15dc7da961f418fa3f86d7f97eeae3de94718e3f61cc1e9b06a2c412f78fd341f0fca961899c42ced075fe623e8fae915388c16c87b759619217864a4e1f42144502687aeeaa057ceda9c54dae1b2b50b48ad0757a40812b48d590fb6a2fcac4b490b47df4ca6b2235b0af56aa7d35beb487c84f102b7097cc2a5e3d540d341f7c35756feb6ea3b1af0f970f479abd4477af56227320c22a5d1e9d0595888aa942362bd16767e6125b024b1868612ed400679746540e5769425d6d7c875ba3bb6042a26bb686df6b441b4ec6129e6ae49b4e848111704ef0c792a45cc2667eed74354c7d94d9607d66f0d87f9a83964d7900ee6d4e06e0a6fa3c3a0859f0643f0f2e5419169968800954427ecaebc39af4785226e2f5f2198fd88d631e2eef6fd478c4f285be266948da071e73f83910bd8e9d41d0873ed9cd86de70c4a0fde34c57604069ffd9e88426e6cbba5f480efe90dde356cbff71e0e862d08da2980e2650bbd0bc561f4aeac4475f8a44de4dbdc06a429ad51fd44ed3b9e5438768a752d4e777f768ed1f3181acd86d1d72ba07cd701a9073fb7b160d74652168ae305031038c3f89dfa42570b0bdd673c6a9b45018fe1dde9ddc2f0d4be07ea17020542bc292388d26c3e36acf8529e5471dc352e37d11e7c34115350920d15481596aa2a1496acc6189a9a5f6e4a2a24655123ba8342ca4c468bdbf93cdac99af67bf7e6864253dfba93e14bdbbbdc106d7b325bfaadbc30d0eea302edf02a0d052483673b76c73db86bd47568b110dd7931cf19792ea39cce8a8a40d0f334c7bca97bece081387622f4c16972b3cbe191be9b3ac07e4d838d70b3fa239a6a2ba1d50987d48813e4dd50f9bf7402a41851b36766a99317aa4ca4a6fff9af05bba52a44b09ed5dff005a76272aa55ed42cc13c6b0815d152866268aedad53163e14ab24aef002e8b80d45a0d89ff87fcad0a9d0688ec69953b387067eb73da759ee37227ad8aa3863b2b6dff9f53c75caab62a93e852bc7b557ea0982a8fff028d22a357081507bf0c58595ec6ac0c28dd53066fc917191955bc51b2fd0e224f172ce011d6eb978c296fce1733ff7f2986ac9014b5faf8d6c6e8108422e9b47ad09fa9f371da9f00035abbd6afe49a58be16c1666716130b787fff802524c4b843a1571659cac06b8031a9041802d3ddcb392d6b347114b750df52d6597e05becd7d0fe4241a4ee4d9e95aa10ebaeb33d392d39310b8bcd842ff0cef2d455427bd0672ca523dd9fa984e3699b39538c8904afc1c84e239d2713f4512399001046610373aec0633470cd9e8bcc19c64fb58e262133475c3684e30dd6b2c8adeb35a2f299fa665601f735fb7a8d646ab19c0515c2b25d00266ab0034f3b1c917d46c0098b57a260ac4348698d24f7a1aa03641c0b844fc23ce15e809c61d4af6960b5d7c84ddb6b19a6765a54021626685aa1b40c5e9996ccedd4b7009ed6241b4231cf2318fcc192d686059fa40b71321c821a7003ba7f9e960cfff694b100fa3d9854f9d62ef8cf661d581c0849e70f8dc991751a7ba404d057f844129d0bce78569da906f4dfcdbefaf67797c08e5ff3e7a7558b6a444269563497347a7898c9c7f0d756245b54d65239eec0ebb643b46adfbc904d9b53d842da38cafdae36a83ddf684439c8025c342be602bee5d14766f821250d641d7a9e06f81c8e8f3243f53e2ab5c5b42d2dc86bc608c5c4256ab0149b0c9f092cb7a8f587afb8e6c05d9a95e53881dad59bddf86dc59e48b1e11e371465a070d8ecd7ad2f5406867d1b1666c43e677f5e97bce7b0c7154afb22955eed301635f2e48725c20a16f334b592763796ec734f93af7d1613741122fba3ce5eb1e9505b5e00a5ee3ae6579b74b3b870c7c68d80536eeee9912e54ae834ed29f1090e6f898b29d7b1a8ccf08f3c4f9ee19aad96e800cb3661ede1ed0d163ccfae5dbee54f79075b737638b98bab7eeb7ae49e84fd1de29d10e337cbba87d3dfe39c83e6a8da51b17c22c2552bd162742d84e425c53461521237f3829db5cf63442daaa48442041ca6bbba65cc6f6750a5309e738fe6c8cac859d00e3c22236c5883335c617113aa73b86445b3c88a41dc754bd8ccdf9afb371ac501fa6ffeef23555162bc2084e03814cc4029003425443c0a2d6054b45a8b209b07a39bddde6edc791e5fa32d545da5d24d1ac4a3809816a7139081eb67e3ec8882e8ba563ad3380fe0507b0b93fa1c19472d5e008d2eb7cd292b5b2fac9e9088cb5ebcf4403bad87d236adbc30e539107fba127422b89da2878604f59e6864548552c10b34930ba1c2f91fb29d2d8b94dbaf1583ea93e5310614752d99711063e702b93661cf29742aab4ec3813ea465f16cf410f8ba5f43d6a41b1107fe996c7e7a87587a4e3c39a22cb87e035a73dafe28d8f72f0609684581f78cf81bb1f0cb722c0cc9f31502209b57a88172a1a653cf29f86f48f59ee9b236ed56112e933e69da4674f2e50840b836558eb837bb1d4c243d99dc05039e75c359a96dea58bce0a1859bc6435d193dcdbb72cca231b7e99001796499120725c634f78662d2e5877a0d16eba8124068a2c3688b145c49257d8c05c17d9f18c856ba6395a98ff3566eb071c407700543e80487424a854627bae3379de5c2db1a67caf2ece51a78b671c277fd3eb28dc5a240ebddab2cc055fa112824844a88341317880c9f568977fe8a4d3b5e20ac8bc85885c2005c558ca9607d303c9cbf04e984ab058e9afb15b58bcb81444a126875cd7e3da2c94393d94b3c1ee840fb87b15ee5521fd285f984fd5445e71a34580e41cf557a497cfd0f3d404760a170b8824644a71cf62b2dae804dcf455fe1fe82b06e4055d3401f253460f06f4742be1dd2859bc32f42fcc5b1297fb5e4a80fdaa279bd0d384a7a42ae06f04232386afbd5eec578cfe3da46e3a18e43b12e3b519b722853f8556826d57fe046dbca51f629eba11543dbccb8a9d3496a4113a3a2e9e0351697075c6b38f855c38b2f1235684a55194d76501a50326b22fb5b78e87a684aed2fc6132ab536358da8d49cb4b8a022b8959fbe84320d750e822b8d8af8f605cc9554dc68e4ac4f936e7382420be01de876a78445ce3f49cdb0ed9289a10dc25e8b980cfbb4298f260da09d5a40d261ae6a2c217dd4825122c28837a963af04173eacc5a9cbeb1650d26dd598a9144b6c86d23fd81d9cffc33a2377532d90595a487eb3124e2de00e9085d890c8d9e07db00df399e1d0be05abe4c1112229d04e6c07ce296d0a65609d1a1a732165c3cb9a75ba4c70029c6ad31014007825eaf209278b0aa0a538ead8e4e3b70ded0d3499aef2891e80ceada8c66eca44feea897f9344799d169887dd65a550aef501b2078bfc151b8af43b36079e6f5de76709e5001044839670968fdcd50a49be247a06a5fcf839b87b4f67594d669293109cc3f5f01612e6618cdf00baa4854bf3404eee896e09d889772d81aa35a749dff0a92d218aec78699ad4b896509a3793c041ce27ad3c54661b22cc8533d58456668be60012b4ec7b2414f703613c1b51ec6fdbf548f6ff1fa842295a73c0d3820c54282d1ec74451fb48ec3e60090db4d43aae9cfa64e17c406c8606385546e74eb685148c429c27b49de89b7d350321350d948b28671e64cb0491cd84c18b9f2d13d89818242021d4f875bc0963b83a4a298919e9adffb18b0f9f898f3f17b1229f9f7fe81fdb7aab1cf9edb3779476200af0406e08c58e3c4a7132792d2142d7130afb4d9749df900321b5f8ea6ffdd2b83d3711709be8510ae277f27c4bc27bf628c59b777940c557663e4af5e9a3b414f4386697bfad431c9afb515a1a6beb7349c8be135b95df02eb1d84486d190b78091d1761494ea7715d292d88369ed37137c252da673db279d979641bc1a1290c074b631ca357e5b017334ee7e8ff64d7fcc85242310cbf2542b7ee71ee9074ca422cacf11e134196a4648c2191f2b07894487c5bf37f87dcd4f9aa9b38be54bf71cf224efb52910dc199e5251d53631bebba16d2bc1a40cee2f1c2e2a32e74e98c65490ff74515120c9baf4f1e203e788d5f4a99e52329d19ab99b598a0e1849a1c3e9418e29caac3ed57c2a7b6a49fd538cb187c02f1fe120eefcab80af0c1c3995143a1d4c8adff2cd04800048c0a2c9c9424140c68f94157634060410701510ed25614c2b3e4808c875550efe1af5f7115805402e40d4ab54b46185a7d0160dbb350dc59592589105e916cb11998038ca84363d16f4beb494b93dd1110a5198aa079d2bcd67fad4df3ca70bdf5e2981cb902bcd638afe0872a49deddb2bfd4f2ca292a1d4ef882f509669c8da917eaabaea35bc5e75e2c2207284251b3a3062a804188d739a1b31262d69cc99214f7a2f50aa5a15a81df90ac98645e9aa42ce9b096e95c081d5b46c04893b7e111c874b81a55ee52bc27b85f8cc820c16de04afd331cd08e9efe2c8be1ea70907f259637e17d2482f2c2c1a6380c991d4d367e81a54f09c39cf00d8bf8196a0e434290272cc24744727c32d7d9cd694159a7ebfae647a14b4239f108cfd94c3227e8814628d7728694af763449610830e6dd770f9e247738aae1546a943136359d0665f24765fc7e37793a0e0ee2815f3d9820999c21c0a3955aa568f91e8289b04c7de40d08d069108eddb6985278e62ec2dc3eb1dc03c0d267a6b6f9504b1c2bff66a6e7d4a85e0091d84a04dabf448b1abd01aad529918a2344e33fdaeb44856c881fc4137f1454010e017f743e8ba42a88e8730f8ba9a4bc2939e94bc82ec047b632038902069872024d8d4b913c3763e86898ed0edb26dbb4ded177630cddf90686d9955e8ac009e51c55f90d0b94f6a85077294f5099d672e1ca5e9e0ed81f431540b7436800c09ab02d27732c2e52d46119b1949c9ddf4c9cca56d87895501c9d50f890d64f255df0e91a880e9dd592f463afccae222a35d4defcf50e863473c03c28eda7ad746b1fc98a2cf61863e491d812cc1707a4e06f2b40952c9ca93be2f0869382779faee843aab7628201c8f71d3aa1abc0166a4a846d0f0d23d03e239ad77fa4bd5cad6d10b31e84a0f146f890a8f931745669664e8a55ce3caa7e61a47701d95bef331e0657c7831251a117175e650f7ef1f572fe4c2a509bfba3015a7205cdb9532225bd43350ab3c1b5995e3dcd0c24764dad9b9019af96db03e7bd0486bac6b310a3d3b454803cad070a65796a5606ed0c38522188df6b8297057145cfc91e1a48d7cebbcef5aa800f720354569837f14ac042e54c0037bf381f1a2ad3447ed6c95ee2a24502f3a202d391a842c3b149b556fb981861d1fa322908bd256d4a91c69770823c77b59150d3157718a38454527c7deb923723643751ff2c5854148a48ac6de7eeedc2a36d450e890c4f9658a07657e9ae1e758d801e37eee84fc7199a080760bf0fcf7b1612754253ac76450f7f9403621042633a10d9d48f291419bc8a11f1b30a477e6b3713896a10ef08af1893273d79510e18e3c3b02b33a014a908e16eecd0a26b8323c834d206e57faeb6a419a0ac770cdbf3afc2dc1e9318c149d0b3e7b4d3b661df230bff5952dd35496905999fee6ec25b6dd056da8c31b9b6ab323381c6427c238b038bb9240e78fa1f08ebbbd5f1d1679a3f20f0437b654586972f15dbd17df02967dee07dc93a04bdd6e3c126044d88db8974d9d5d06a1f22e0b1402c438cb238ac97664af4b6d4597ccdd2c03b3704fd6ab97486a07f0c63600ed8f38a80d0d593634760d0ce4634a57ca1e9a816fa842c1009e3574cf73cb3727a3480c2ce0aa2f4385cfe2c30a4605056874708df12620b1fe2f53b3aaa5c12d9cbaa03654882d165dbafb651c3af30175f1c52170f37963f6d09710b9a22c0ed9aa47b03a49c947ea9aa52b481841f754e09bcd90f9f9ef7db0384430d6f9ee8d09dfa78d4695b0380498f47885b261c6155ba7f30547b4a787015129f163e31dc917f10944f1ef0ad10ae157ee9690f1d9327413ead41d29c2f18f990d16020eb3fc55a3b103ed7e951b6ae44e1d46602b2aa57b735a1ca22960a10f6140845df53e174cf817e8b65da1bd655ca039fba0a8eb49caf6091a149ed108e8e59ed718d7530c25136196fc2e27bea8085bf9f830159a54209db5b4797c067a591b2a1ad531635a804a1f805901edf5ab80d3f2104440c0c2fa4faa86a5cdd888fc6bea1074ce1337e43ad406655fc4173978e2f510748a29765212297d3bf3a52b100b1b135265428e32fb1d35cba9ecc8673949b07d473e6837c7e161260e30045e19c53c7d05beae09830bb61f1be7c18c7dd05c960d05cf4de9b059edb15454c77227fc96004f24429ca15f39856c3e3cdc20b811a706548e077c7507fe7010600a8c0c8fb897ef920f69adeefaa1f40f1248d0fc01ef5d38da2247f94086039280abd988883cae1f910498ebb09ef670cf88609e04f529c225295e277bbf3470f2089b9c1f2b23609c37e1cfe4cf94d80a76ec10870bfdc072152866da79eea12ed2d4c61add66a41b7ef8ed789dabac6dca0e614586ef464e30b067980c0a7304a890bea800d60d46409513cd19ee3fca54b9d7e054cf8cfaa6555f20093211f94209fa59662d3cd419825c4234446c0f94af1dbcda84eac0be51a27418d6964dddb28492f9a5ba063c41ca475d8971f6ee449610a45de476eee404e683831fd9f61a186e49daefd2a14d6d7e92beb54fd861b97b5d5a91bd49f203291d0225780592176013b54641459aa3ec8e0602591ce15ab66108e45fc8a9c47403742957b7c1111df85d477da64c3e0ba9e22e096e300ff5e12b1301219b055c9f99e8b7acf3106faa13f40e5fdaa10124846c438eaf2ebaac3c8b08f236eee7e04529625268cadd0d8634f649ef2a80130ab8effef06abe364b472300b0a250dad203e840f25217ab026c059432fcabb35dd90f3ce9d0a8a38bd8d54358958f8f12a540c18f6fd9e6c048998f950750ac173685b38c1cfcfbedf0452376736445961436fb51eab4b5ef3b1a61517abeefc00e1606ac5a47c1ef8046b1a1f933d599e980648b64233beb513122021e1c7606750b496988967d20916b2085e9b2e74f9c087770d077ea12c83a4704267c2785b1ec0c1b6291aa2ef01a860949bfe943927e1b48d1a4fc60a891c00f633885fe20ec75518d21928f877a9d0fa4a2845a641730accb0c1fb2f3e5615adb6c8171f3b9f155817106948c90071585e330e04e2409b28fcace4e40ff1c5d01464aee3058fe981e9d3ca835190e3fb63420ce67698bb39599f28ebef01530080fe712bc2d3ad5e59243745d6884b894305a31448da2a5baf520ac91710d23ecb88fbd0df179509ee42031a5c1117a1eeff44801c6e4da9567766a58481afef769c3a543acba3a92d77a4d4b463ed86a729acb82e98dd159e9dfdaecd2f1015bbd7448da4875a244b64efb6a69b396414d0fb3ffa9ac470f36a95419b2a89767e7396662fd3ae81bdb66bfc0584fe170e6b1421cf2a8bfc5eb3049fbf6866fb3ec12b3331f89c8b71ca31d7030c8ebd0f89ada968bd366d9f7e713bc5a81f490102c3357b966b8a535be9e0e63ffb3a5b86b333ed0df21e1f794cf8f4adc9f2d6394d59585acc396b3faa51a60adf7066d3e95bf1a9423cbd578e597093e8f33e53c12decf50f5696aed60afafd633487d07d48573cf6555a7206ff33ea9f8b2bbbd0bb596d4229712c75ad66015d83485e7d0ea83681318a8e522de2a634a2a1b8d0c4a09a8014dd3b1722a371c9f990cb6375ec19cf84f5e5cecdad19e3b16b20f0d400a1a10d7f5d9a0e8bafa48252fa52000835980992ace5421a0f798681eb57ace4d7adcdfda6404324b39ff65ee68a084db536af1ad85988be8d3f83b3daa0d7fd31bbe1067b9cc1deac1f40cc6eba62431596f9e3b6ca92c28c062559540250aece549fadb498b9be2529d9e2bb8f47a1ff090acb83b15588001b675d5fc2997b60d57388e043cd5bb739591c9e5dd1385c60f1df5ee900f721843de40057d3d36aa448423f79a3fe0ebd5e570a3b8665729e2bb3c50fae6633ce4c67b1208dafee0bdbf96ede4194d6fa216d11929210ba32e47b9af367986d01308559bc868b136a30fa5d094452cbc5bee7c7f9135efabd7b5c1abfbd34661569b2a191c7935db5306e738a053ab6a8ca8ac14374410748ee0d05bf2d7ad8f7bd6e367ee59d9ed11e46a74d9a1e2c364ff0bbc30b9308df8f45e079de1ae66e2847e8785834056656525a499be3d9b90b4f93b4c2ad9cb6c7bb1cde6b737cad2a8802d228ac043eb083964008351c3be56010d3e533bb994b192eb856cd99b1ad568f7854fc56d30105f07fc9442a57520bb822a13050cfd2c37009153db729ba797dbd007c268781bb1921299c6380763b943761735c167d3504fd32407c92639cadf39617e3c68732739e876ab865027c308713d3fc9810a3147d5a0e4ccfab73186984e16a2fa6fd3915172b87500dccc7c8795e80557d11c240193cdb4af4070c63f3fdeb6501627c48354b73a52ad59c4d4aa98bcb0b809f07866be02cba976f40a5ff723a074697366be0f14c2a27275b3379e11c9f84efb03ab9e0aa7565000e79e97b0e18fdf0687562f92b92b0b122824a0aa9a529770dcbab01c899e6f5e0a586a317346ae91172d96caaa294c92a271a5e983612e0342f89717b81998c6c95a526ed2bc6f8a97a5fcf70d9aa4c495dd3980a9ac7a73f09bcbcdfdc08b0135ce5b2a1b756805896244353fd0515a4749f8ef11f24608ab2d88611c43de8fa6a4aadcf0123ea5c87bf14930950441984a8650d905319520d0c96b73a339d701e0976e32b2c523bc1342a672c5838b39a0642a0ba845ca5472b30666d70278f5cea122f1e29962a812cb355429c1a1ca21f3a14a46b708053ca24a4f892af3a486d6dd3448cd1c6213a744475deeb771eee00666989f924e09e5f038133ca284c5e6dd1ee75e5a8236c6cca06b29eb306d12f21eda261e8b43f171ee89e41aeb2974fdf09c227c5ce2e10bf495ee8f7e093633ea1098303315e6aa6b9f46e4543a671b528c2341491ae7be3d3e2c6107710db87a8d73872380c7a6a065a00b91fca10146ab341288a60221f0639eb19cf6f285d391ad26ef757f47603d53a4556c97a138ce5d01138e7b0e9f3b728ad3fdbfd9dcb3b6283c5c6ecce61eab7ac2f4f8b92f72a7a3a5d902bf82f79b23061cfb166a01052bbc83f5ac4129790160fb7dacb54fd56bee0f661bbe3f7cf698c943c7909932ec0337e5afb92f40f5896f581554cfdfff16b0b506fcdc0f077fd6fb8544cf43595d1af1423921bca73d789a28bb412f71a4e62eca1dfde42d2178a6f0c535c680aad41f798bc245a61a2fc8a146e1b6191afada2e170dc1a87816bbe14b095b1594f44c2a07d2d4394b246339e28826bfc0f8c44afb5a4ae59fcbca6ff95740db79a2be3a11d133a910f33fcc14f5ec4bad14235bba147fb07c92f54c92729d857b5948ec5d941fcac2370f87cf24c18b188589a4e2cf6400f25010f94c469daca36e30b84cbaa4c08357336993edac47ef6db813bbf6a9a27bb23114014d4a5e1dc5be8acd9e70c72f053312061a11539295c84cae468c4fff4993407957c1c5dd8c985e8844543245353b6c3e2f69d1a62d7858939da8163672cc669b99edf633864d0c151d74acafa81e635b8ba0a236b2e1507dc10b5d288a478b71d0ecd0e6af161baa5dab51fa953087a69bf12d044721c9a592743ecf760868095d6d0c66772649e58d7da0597aff3473e86690c9ae2a60609e3dd5a50e87787936795e01c9d626f97640e7b25fa23393c32283691ad1fdc9e42acab1e29949baa01091f117d1e9b3e974005789f50d029b6a763d6499e46ac6cbde32caeca301017c29aebc4db3a3ab69249d1730a1e5016253722e988e25995dbeb3e03348e46af007939e3397adedb0389125114093e4e94b56903c454d608f532a6cd4c127491aeabd0aa3317e74941a3dcb05686fcd9e995dcc4af283c94ad333d1e2a198a91409cb329eec1677d58582bbeddef0a05bdbbcf6327318c9ba9280920faec7d0aa4cd6fd0d34e6a52fdebeccdcd7be75341f09b8cb3ffc0503f2da6512efe15a527233200bbf4c4a16b2ccd27586f2941fd160622f2271bd7ba42d8b2949261d539205c488137b0559085350094a7c0be03d732396155863403efcaf60d0c259abbfa5bd846024f952a8d197fdb530771ee7a262f1df0f442dc756272ee5226a71886ea21daf092b3d8c79e0d7c24c2024656612dd64b8e11e68a573fae57629aff21245c5d1a2c86558b1a807f6667d8708b146616589af850434a3ba521b767bbf8a5f5522614835b575c5d2dc332323bd852e79dd3ac0b1d756f106eaa8a655b46740de0e0742b1d0e80d0e0da0abc04685827772d0e081afdfdfb084c3f10b6f30d42871720bad978f7206b13987a7e1c3bd6ed889afa0d4d2b76e7acba34829ea8325a407ee70971df61853d85155defb09567f92b7da7fd011e8090866ae78732e94684f3a2b5d329b242f1eb3e0bbc1aa6b74201cd92616efca66ec38f7213dcb180cf5421889a89a53c9eb7dcb581c9c9e1fecc3af6d8fc980708a4b9e31b15cc83b06d7ec015d4cca1e4f388536af3ca3f80242a8808222b6b1364c5351b9ffce3660a9e0a3140d7fb996af161a0c5f602482798679b95fc900291894b461bf79c3339cc47f1c2d85b3d3845758bd8bfc68587c3feb38e069f64a7eb9dfa873bee2af8a5cf433561076994315189694662c2210cdbc58c69bc1cec07a47c9c002f4d9f06b7c9f8392aa00708d7d3babe58181d0e94cfae898b7cadb579e20ad539028f05aec67b870e3ff045ebabdda153ce45ec913fb283ffc5e750b73afbc2fb53c84ee22ef152e3f53a724b3f2457dc4bf921a61135a4b927f6592aa9949be0e64537d2bc2fd72ebbf72f8f76a13024bedb17cee19b8aa521df7f3d0638f9b0c2de5603056504801d29e77a4170416e5ebe351483ed612a569c462c14396bb42350a90eef0cda488cde23d3aa1b0835d87c20a5814ea4191dd0292314ebeab5e8521fc57f730e734eabe34a08b1cb9a89db9426e5d30d478bf6fdd6507d8b82ccdfcd7a0a64dbb81dafcd203f7caab54803ca121395a5157d438b757a55a592123f8ca3c14a242d49a29111598c744f9c1e22f7127d52e593ff23bea4d9303fc39344966fd8f4436998d4c7c31eaf281bf3a1106a209cb1ca47a4e6969b57b6df677530455c1c605b85f191695d9e88b7047797f06424a707dfb6cb548a6f01565511d256ba5c4d2d9ba60dbbea493dbc1cb9f2f726a06a7fdedd5c9cb7f2532e63fba894fa99b79602906d6c11ffe250803e18fee43495eaafa3caead902acd3eacaf676aa8dcbaa0b40895ebd34960452c4f6b5fdaffb845b7ca3771d81fee1a3968d8beebe52bda22b2ed05799b80bdd7ab46a6400da383a8715f0fe8d006c84debd50631f89c680559bdeaaebb69e65ccb14b746a9dc1e770fd4a895ba02d1d22fbb45c36c1b18e7d4e6ed24b4c717cd76dad518c11f715a1e9b0163d60e5d5e71263c83dbb9bd416a5cd8dbdf34bb38927c1d5f4f9a35006f907242396a5701b1812435ca0a167070d414d46e52a364cf8e45ee2594932f2d8e12df7a4b6ecb4f4d6a54510d95c16efda5177e7fd88b76879caf59292f3a1fb12fc37f91e32b4bc568d86ab4d06ead1e61392068295e8ea93acc1d843bc20f31351a6a104cb5dbec27037cac8f421081169f712176369ee6fa33261f955dbfade795d90a77336a80f38d521cdb2b064db92f196075994450b4922e798e0bdd128e93bda991038ab18d4fa3a36e0c59514f8816d1fbc707cb9f2c6b438d040c782a6502f60970310f87c70b5afba6478de770316e333c640b6db22150c329017d3296f2c3a9c51f673ee84e42e177b4230dbc7e031ba4a3c62a5a05def3c331d4f09816a987865f8f15fb13b8cd6bc4de9c0923b51e72508c69fd855eb6d17d156a90258b78b4a3d4d8d91909ff15e04330a4e2f48599b2b6f1342e99c325e507ea01a3a44abee972fac20d89a658baaa114f7363bc303cf70ff10764d578b7e48921334cae5512fbaef0c5715ebf0456d91c7555233948e8c95b640339aceec7da52c375eee583d98e62115796e319e3975c08d61a431c1cccff630da756a1d7420ae94f7abfec3156a3d3a41741aeb5e5a331c2d8d52887538d0c04a8e916db204432850c3f4046336ab40c7c2ff834dcb6c145c7f0b921987c24e9d548e0a6c6abf095e87ffbf1459910d2d22d618d2bb392e4af40ba969353c0c3bc69e3296a5436d6c8d4d296b88162ec37057e358608709bca266be4a4acd1aab2c642bf6d1a578e35060dcc6c9fb2c628deac9535ba4bcb1ac561bb89c92dfd53da293756fe3881134de351d4b562fd32b42d6342f7e696be6fd3b991ba2be2f26bb0dd87d11d2a4822e91ce1d9e555a1a371c9e9d2799d0bebbd09bf7905f8ea6d822e107127a95c4edddd141f0ea2fd7d144c464671872893b8699ad0620142c3d7f8dd7a7a48b734867f01adc266d86338a9ec75ab1224b3bf1da2e1d2845d69d2af88afc6451ea7c97780b692ebb8ca7c3e362e66be989712654739c0703031f82b562c93412e2aa0a5e570733427db2dfe7da97e56522b33bdac923378df6fde56c27a538241aac00ebbe4ccc82c5d72de14bd160ddc5f0b97f74b6282242ed7595f545f606951f103b9d10b57d22f1f30c13eee76220509fcc586d97ecd2074c23895b4280f8169a4f6b603f0cf4077bbf46ae32bca9f68c97acb29cd79fec2e9b96db05fd76d0e18cd300548d79b96e079d77a56a143407e23f53c7ceade8e7a97c092acffc735d53406c6f7980227ed530244146fdb62c4b8a2adf4e60f607148d932215359b297058784345a78e15e9382e36c575d34ece66dfe2dbd496abdb71333499f8447c2e0c2ed6e2530cd657ecf043607b45d4b82eeb5432e9ac9c24989b0aae7b3c25bec185720903cad38d98ca6371d3f66cbbac92a47bc3afa5e17f502792d9b1e0a27013c0ce1d9bb4efa6309bda817eceee869c232ad5b6fba02222b6da30fed9180139baa0ed7861e5ce8743a6a745bac850c1958d5d779895bedebb1121b4e7d0350fb629ac3c9f23a6a2b2fa8cfd64df89c99a0fb72b5dacd42fc748764a0eef95c7a50ac7123a18128d2774d0c1c05b148296025e07e49bb7202415472051d974f0406ae3d0f01d11abedf2eff83b983c35c254711ee18ffb90acf151977108486c8c28fb36d6735f546f344f7ea8539592769a0ed78e6d9932cb9caef5e39db31b612c69552de11208c16c1669cae5a8b4cedcae1b997d1d913b71bd6859a1ab6d18e8589951f3adae0cad7248ae29cea8d5e7bcc7285bb8093c7747952a40aaf4af7fe6653cabce8e04b5858b8599cd575ca7d1baf083596b11331ca0561a3d4ae89001b84a276d59b50c34a06634732e60af98f392227afbaf37f01b85531025914c93dbbcb9137ce3e33aeca47704dbbb7c46f9f07be0f401085113e562142cda5ba6ef72450cf466c4d4960490fb1161603b0ed2a999967665dcfc7483ee880accbc288fb7d37c4ccafab424cef1fe6156ec1cd7706c037477196ec0c848e2ad785bb9ddbe51322bde3a0d52b74545dc4415887665af92f1f1426572417e4b37fc601caceab6da19fab0421a286e09d7796ddb040b59104bb9a066c00b5424c698386308049c4e6573388e3dd9777ff2cde82fd1c0f5460dcb5e6110160ea643f6115b8d23b58f309e829f5eba3457f4d312dccba8317b55093174bba1c155400f57597cfbf931417e88b67217584eee2e3c3da7ded786ec1995c520212192b173d6b9c9d20495a437ff40d08ff6fa13435214245f4dcb4b947ea3ee5b5447011c3fc9e28fc32e5ed873b1af57e0749d3e342c8f25a2f11646f222e35db9bb00f9e63f248687e6d7b078d3419b8d01d662454b7300801f0383f16a6567ce95bf6d142cabfd37a21147e26165210535e2dd1b0a035f65de860c81d42e4b8585f1919c63b6597b21efc016c13769405d8a44b5dc43d9cb164fd5e45f2858102e7111ff5592fa56994374afe32dc14c4204bc4bfd85e652f608f517e325b1987215402f6173da254f60722275387c1b81b00afcb294cc379e61f7ac23cdc6202834b96c0f74e2bb68de364ecd5d6638009fca3d2be2fff9a83e119c1152f030b7d7fb18de13c57e4042a4330212022e45462eb0c70c4c048b2648a8832bdad438f183938436762146ced90f50187d60f6e404cc83e2dbdb56e08bdb0ee28c6449293a60e88a064367e74f1d34f8368ac01c64338637dd5a5270460fa82de5c72e7c22d30b1e2e0cb3e55747f8957827f165c4f752ee6d8fe9554ce434ecb85cddee0e26028922d75ac62e25c91d7dbbffa33440c855d7d0a0e51b7d0f08ec2a9ec5b74b18ca8859dfbd4a964cdbeb8932256febad170aa1e0305dac12b0f06169c2bcb5e2c0d0d45a4ec54f84f43fc655f534b9488bba3c392ef389c4a6ffb4882120a73eec29f9eb0d86cf050ddb0410ea0454972f93c001bc3099639c828872e7dec183b1d05a02122a2e912a70cf2711a1b4f8fbacd8dcd44babbc0b29d42e5a6e3db34d4bb565d998f4ada61d041a4555897685436bade62022717c8789457156f0eae101aa16047fbee4a96d754fa51381065f9870c1baf6d8195dc2f24c1b905d0899e5225b930a8c6ebc6f0f4dbb23263fafd0faae82b718981568f453448193675a7f73c5ef0ca92dda003af6001953e872db63b445fa2ac9ce0f83a05bc0c7b5ab1b0ac0c0447c9f159b4711a81562b26eda1953c725244dba4f816aaaa55e8729d28e0380e6f20912e1b020486e1565106b5d255641f98999279a9498fc716836a911fdb89f746efdaa20ac66e6a9ab0d988cbf515c0f32b18964378a7775c4945fb62778830866c14d37035ca561dcb46d88df58971bdee227696999aa53c5aa0c388d8e69e65122dee7a16e2d3779cf1b84e18b15f36d4d6ff9bc1add2269ed4f0ecbe75c4c0ac23b2486bff039094e6bcbf1af47ca611a4c5c88ca8a52f72c2a7d53ec7d7b4d8e318cfa263dae41798b18ad08de9e84420c172f3d49db7211f1a4c08a45f9f418b6e1f0e4ab33181c1262e2b5940079dbaa956ef57defcfb3348785a249783422edfcf41fd3608399203541737ee5812983c5df76d38c73db58c348b4a2b147473d4450dd76068d18c935432d3c19f1129bd4effe40ba79096a3fce861bcaa5b4bba22667ae18f9f00c66210c79c0bd34448c391923960533f023d3e897a3d50166748b9da5d88bc04e81382abfa5ae2b5ace780f6abda1cb0906be536f1766c8c29d2ec1c953976e012f2ef005142adb03606b54c7ea2f0ae7fb72f4c6189736481477b82acf70d4d8fc199449848c3f859e3a1676f48c7ba6c1b0cfc98e693b081057d274c51576ad948e845eeaf577b65bd76bc082755543ca21706c44b506a31d183d4be66c2c266eff0dccd520cdb01aa0c9755b820e710599b0694b693b185fb7645a5e8e54326eee41a61ef9119d75165674956d4f91c71e7cd5c9d7edbda39c197ad4cd0dfbe10e6087c6bf0d0625886989bcf990531c888184f853bc4447c8c120ec2048d9c2aa05d7ccf5f280922507c7cbac5a9d93b2cea6ea0d1a182442ec7f0e77d0cf80680d3375fc82b9c0b2148dabd0b9c75d58e71c825fa0bea457af15c588bb573e33fc55a52133ff4e008a32902e4b824b7e0ed1f137b84495f21652b42f6b4d568969fa04d6384906c570cfc314941639c45f497b85c6891ab34f5574db44695a77a9a3f4411278c1cb91cf4c59027c2890eac39fcd9c242166977802ca35b1004064369b58859b63a57346b4c412f35aea64b190707c3bb1a9e9010a0ebb73541887b48141390ce8f44f1a0afb93e8ea44bd4444e9eb36dabdf8f0cc60d69b0195892127dbd24926b1403b597e802ba5fe10932530bd48e3914195072b00835032c0d169881829a838ce425f1ab1676a2dca855288ef9fc108aa3aae7390a4825b158928ca342926d854aec36d35fc01a13b6c12e9d468d9e821ef14bc224c496b7a27b51716185b14e48d0ccf7caebceb97cdad372c560bd30c325e57a427495cd04e8b098c213eeeb4be4324101c6085b12a45e89bf63ec48c4c6151334579e24c0456c8f11b9678157bd99e4267f9e8dc0acf6c3dd0d45ced96e27a6ab00e19b3f3f00f760568c56a431461b1c6527c4cdd94eb2ab358cbea489772ee31bd2b2248e5e2cc131dc10bb6b9cc1a27cf8ed22e53d6e0e4c7161d846a289f088d1f7c3d61b2370d67369bd8b1f833e82e289800e9f44d68dad9f30598da05456519dd5494a99df866686790f6fc0c5c2be8ee100384b47747a922ea4ca49a7b651a9d88cbbcf3a17413b93abd31f1f3820885af2f2e0c18b23b887e068b048e4008a7f5c14a3910772df448dc27fcfb9c5be34701a9813bd789ec0d77cedd6f7a96b54f4750cb02d3889f96d08325333d101f65ad9ea3905e5e2435658b8496c2e5429ed25038b943f44d297f2016748259798f864f96144475763527517d6822d5738736caea26b593ab6ab0b5265b12aa44c4069d83fcc1a59bd308811e5fe9e5cde3016cdec8a8cd8728503a8cf9b14195d6490f0577548616f2523f4f3d81487112a3bd3c2adb060d4727fd36769193b785b9af37ddbd28b37cc6417d72295d7b06b5d7692789e6967702cf068e5eed4c6d28014f47d2134fde54cc3d1e4d63874a60a3741020e1559dede191f583ef160160384809f62f53b1460076545e099ae48af54d20153422ca3b47ffdddbea80b032466774d908980087823ddccc3397659d88c14e1e3574445bcb11170a9d0c71ef70a7865b69f760b5c0a7f99a31867cecbdea9c749721508ca0198d12d42968ead4a679a20c5c1c9eefb0857d9551baf416a9be2bab51c1c501c6350852e40903815e1b565627fb50bce6fde39f5d30cc9850cf2724ffafafb8e2a5727d2a534e3401dbd0eb094143f2687c0946770343d181f51a3693b4c606ccbbc7e5fd835e8bcfbe6d1f1e1531b4c63a4d7e5fbac5c29c22b554b88aebb12281be5af1ae940ad99a0a567389e14fe22e44aa884f40c86cc3fe58d9b881a2ad001ded252188cff2b1531a69c1aab0d0d994bc0ed6cc921633566e689e38094c7c1555174e83f48535599999acd1a4d59f27659a6c1a68023b748d084c194e12063f343f791a66fe9f0f557ae13d20ef082473e547b8f98d7b6f573477aead911a92304376b6b42eeae270c54e2d721fab49658fc032c1e40d746453e95055bb29458b2e6b81e7200087c3f06593d7ddc1e2ffb2962edbc5c62bbd4663eafb90808925caa4053e12e8fbe4189abc3eff68ec60a91ca78ba9768a9262eb38ccc0cd52e371f5d34c5e9510b188b719dbe393f5d9f89c3e0c86674132e932c5163f82d5386851609b110a75abcdc1723e54d4714cfdcf485368fc1c5670e003f2291555f4a2456cb96266b397a4809607c0e22b010b1dc151e003274edc9420c2d425701df096299038555583d16d2ce2153afac46d4d8c643825c7e78f17b073bd3a0ea263d9e0e4b3840c73fb935c469cc27d46b76fdb3dfb9e965eb270a2b3d7185ef188923f35c44c33031bfbab4d1d4a83421a9bd803efa1f9c0dfcd824f2b516c9422d266833cfb2ace70c48419b9163a97404cc0483e682dde0926367db7d4a8d7b2b830e11207f05af0bed3ed051e0c3d795d30ad4165b3034000259546a87f9b6d001cba3c24aeec14ba843ae61af19dcdba97659f96dd39725bb5ea7d317787d47237b818230e009cff6ee4a983c6766642ad54d5897ad7496c61e9f88d20d530494038075e2c607e144bb67b7dac93239bd552f64532d65ed67a411b162293e05cd1a6de66af78652a6ae240171e19a760a77427b7cc1ebd9f2fa2772b95773cbba239a149df7a2b3311fa9385788fbed448b46ca0a63d2bf102f138a5c7da7b7df4ec98e0f10f86536c78cf64be38e4af76945c71356720bfb135fb499fab5a1105bd3165eabb5cbdeb0db0babddd94c1ab8589bc5f716694d4cd98a43c5280688f11494de06d0728555fb22d7797c915b035fa4e4fb2c2ceca43449f137095e5822779be5dccc0cebc5dbd351cdc72b61296b58dca627a56a759b6c4f7757e27b8c3d5d1f7053e51fe15ccdd61441febe590d0cda2c26804f9076a672bc27917018865c8bb340f69bc0327694a23dc6bc9b9308ba2487f2ed24e3a36e5f60b78973c24e40d0f7f139fc3e71a4dde4f6ddb39e0509648569ad13445ff8ea049bc19939c5409d65044d8313c6149f0fcba45dff12d2541710cc2c5bd40d35269fb3d9381d67ac5689c83d3ac5211e8cd0ab5ba073c701663601e32fb7178d23c33e491645778a5b78573731d2511bc64a7939d49d713b218f5bf018bf04f27694e0a04152c8a42813ed429ea2e11d85caa0409900d95744d1c904dec55c51a32c1c7c32da3625bed1d6890b5326b517c49c091436be0b457b19315f0426045e623d7b6489744b90fe39967d7f918e9684983641632d0fd5e9851ba7e313c17c0a8ca25578a53ab6e4c541d93a7b0e4012dd91a69221492503bda864025432fd692be6801a52e1dec2191f7a0f9f833385724ae973680666bb8c5736518e79910ac97b0165da926000653a71b5a985cbac6267d3febd007abe005b1ad92b26a998b29bf1c35884175e3bc558ba5cad7b7c14968a49f034c123bf09f48f5675638b938bffa3dfd614eecd6a99e3b7a38d339c38ab279584ea9eaa83ba934e0dbee154f5f994c9cec6a09b4ba2788f1b810012857349c0f4fcab8cd3c486570ecf6f2acb3e787045a9e3ae6748a5e92356a45f81068471f8e4c0e5e8f9966c8cc38cf3a46449ad24e249cd5e93251b3e202e0e8c8a62bfa6230b2c70dd7c33f36a32aea21f8576064d4faf7144d7fc2941edfb62c98a4a88705e40d91a7395ec571718676850fff3d869053af15a07f831c38a3cc4a766c05f316a5a9b0923c99a9b227335b74f3200f19642831d56849ff040243d5f974e29728a4e824302b08f2231974db740c55b043475fdb88e6c09d35b0ac15a9448644611e60ac652152311926f827960de9f2435bd592ad401d0831c67de26d34e2e4ccca8b78382ae4d86a39fd59a943e295ebc06b237c0dd4efb4fea9f521f5d152b17ee8b845b398ccf4006010ec9501c773823a6f8c6485cc4a06fa0c2e4e746f23e35c462182757aa9183e0633d96877cae1a45fea7c82d42dc05cbfd9704b06396c4a593919598ddd0d3c91f9a497614819feaed586ae4218533cffc599b836f8d3ea74740cc7d0bddf9728308cc44b5870adf46e72d1f7bbb876f8cc5e85c7712a6138f3d621350960d1c3798987b02b678f738715b3b0f900c8d7e4dda1c3fc63c7e8dfbc62bf453bbb79b05a121426016f3099990af1ed3156c3ebf0115a604f4d614437e9272c51281c6d94c3d20cf361e01b1f65457c8678f2736f5ae3f09c4c6a116be2e3f859a83b930878554804920c5ecef1e901f911e41282d0817999ebff6f40353e86cd71b10379520cbd879e31792fe484ad1e811793879c114444edced5fb18ddd418083e35b3e7be117caa03c9caa94d3fdc7d711c22690bda5378f02a41b7a67664a4c74700d15617036db15452140e4adef59777d528bd0e3eced641102a3304457a94f59599397098b7343cea3332785b0bc06c564ca3f220183cb60f23861e8e48a55138608bedab581bc2c0db7d9608d64e5daff656cd1a421edac9463f061aec8fbe18f502bec3daf99b4ccdfbeae057434d332e4fe8ec8995fda6a31211cce9a1f6c8b725f2eac4052f58bf2ec51223a3eda21d81eecd28955d5c8fdf1e57a0a715b79a39b0b64ba54f08840bef98d1a3ef54895ff582f2e8fe2aaec46c48d5d07ea96095ce40716021d6a70a2a15cf660179bc14b55881c48a284464352a5dae6a870d30f3be8855cd8eddde476b31c851bc3adede66f7865f8904ad5275e2d4cc117b7eb439652d1d37a11fcc51afd595d8f0bd838171ee36562a3181f2db2d1e382833adf85616c8c29857b9fd755fc112e1000fb65f03ad08834bca0cfec985b9a52b52d48433f305d000f72416b204244ef7d4786030661edb9968f234b67a7e9da0ef8afbfc73dbc0524a31dcf001232097c47602bc0654d9644c2315dab791e540e2a02c0aed9cad2c36d5063f28f4235ac0140c39a1affa88919d62c80988eedc252a590f373e18f8c94873f116af8978db7817b80a7ddb6e0a904bfa14e918f4747bfa186918ff598688635a0998f2074c4bfee4539a104320aa0f9253f38e67d5d7d742df9fd30b631f7e459136bc71c3df45f9dbe4753147c808bf67c89ba2db66cc083c8036d6ee10f3b3440ea4fbafac336cfc90fe542033067b5bf7ea35923156bcc5f5dfeb0b665aa44c3618d09f0058bcd6235a7262fd6b1b1adcf459db1aba100abbeb2830628687af2d111878366f070c125a7da3667ad650c42a671d7fbc56bfaadf147a462655ba29ce06d861b9e25c120f32b457dd0f5cb47e1b1ed620fd4f5e30b43ba75768b2caecb0b5b4c5c5b545577605bc7a7cc61b840f5989aa589be8b8f59491ad6e24d2020140cbdcba2a40d81e02618d2bd69d77290c74e841c37af72dad97cad905f4d2efd4168e959cf2faa11d6b3995f0a2cc838b4e3dd0faf94ab63da853be4742e396570883b72b4b6d2f8591b61270d9a6c1993081ca8a1729e579148f9983cfdaba14d4b4905cdd5043a85cc991b670e6934f6388d71547e9070f65faec16e979399b8e9ba666a62d5b3817158f9f4a7532fdb2809fec24917b0660cef7b1ad10dc024b822067e348ab432a87acb1163495cc50c948fdd8b6ed7885a73c60982b5e6192dbe6924a919192275175480d528036ba18104d5ba78f8c0ce35f5a6102008d6ae8fff7869bf5d35fe57d9fa6d3558d3a1ca60ad1676a3a8d05bd8af5a0588598a2b1742de5777aa84356ad15b9a05786f42af460e09df4cf55662a825c6a9861cbf3235e861589bcb8e9b54085fb47c1d3ee4b68004a9712878aa2c1496bcd95fff776637789b72bce5c2f7612d2a852d4c0d25eca1464a61544e1d6121eb62f3fb84137a9292479ab0c51a3436795d183d18ff4185039627c5fae7049ea9502bd65ef5c935551034a2a9b12b0b701bd1c703381f56c9581bc6acd9a4c5e1ddfd59634d4e903910ea5fa84f8e47ac13313779f658630fef964539f2228ca5e5628ce48d206be1178a5539248587d0205e05526aa223c95a34344a057ede17989d77a0ec8003d593c2f9063c352495b5b932505b06e58301bd24baf66d90d06cd1a48e65cdf4e0498d1c1a9717759d990b6b3cbfdedf5e39ff95dec954c5b2aba5b2661ab78d7fcb854b25306ba63d64cacc847655785fe3f08d63fb6ecdf4f167d612485793647eb29c9310352de78a39b336d6986642ad2eac6a06c9d24dc1baa755cbecc747d6ff4bb50edcc757198046386e166a9b4a9824c2c50989d0fb3871da496ce4a05a4764913c89b17ca2ce2dbc8ecb9d6e9f707c12038bc275ffad198083a9126b0a00ddb5c470c896987e99da0cc5c018d3965858734b4cf9aa01a0afd8ced003c61f3446a35077b034c0443a38c4eedc646b240c8ec218433bd3f3ca9654f217c2cf60038d3f68e784363234db58cf17d1d8ee786626b2c1fb83a7d129a034021be89be0d7b9ac94e6df8e38cbcdf0b227f46e4a4f0d4c6efc8ca78169745b9634be48365b6212a0b07d42cafac151aaf97dff4992b1b6cb6ce0ca6dc2a9e82b0524d6777a9cc0b41e210daa141295843fc3b5752ea7e21eacee315a628b6835ad6cb3892fac351fe92db7af1c4368c890c519aea15666b8d327c6014f7b69a1727e86f2fa1de387408fb0659e2b1a8879cf9ea417f17a38ebf1900695b36707506172f9f43e18cd38194dc28b8325ab613a71b371fa84f5931f9fcb95b9a2f37b9bc0666bdde36ae4a67ead16179d9242821039959428b5faa36990b22a651ac5c2b24642d3e92310c2b04b4e06408b803b61ab98bb9e9584d9d5ff3b7ca5c514fb54f7422a2bd1d96fc2ff26714408b675803e8b8919eebce5f0a3ff2e5b91574919059ba27c9ae000a6068d07e108cedb48172f6e635b6ee3de2d2388a02ae42af23f5967ec6d7496ae6dd872efc8f6f1a523aaaf240df40596b37b8ccc4fc147a7885d9a21125e779e25865e53143486cb75777b8fa843a77bd7ac1b5de3ef2f7761e64eef7ad097b5c02a8ef51b890042a5db65969ef1dfffacc3048713006d2dd71b2321ac0c7d96404d39ba749937d1e1030dd5e94148a54984811bc3a4baa36867ae43c5f38240dbdb8fc3c807161b836c1686af53c8033043d0a4712007a45efd62a64ba6e7a2f0aa8d5b0d412b296500be469f34205dbe5303f37ca7878001582aac50456668da9b8dd633c43b4f9e99fec8691f580710259c54798a80a330c65a86b14a81194cc518a192de7bb965faf261051c54e298cee257d70185610d671ccabebd70c1a615cd9310b46af655986139b49a920f64c6766dc01c2164e1adddd299b01e77c858021603c541c7f8165191c3133434c638ffc666c189aaa3f939d776cf38f8fcbacc078a5e03dff4a4daa328093cc1879f9139deee3ef62364effad3c9606d7133520a97d312d54f4bf8558aa3f0c137a841e7d2d1bbac10dde52c4e766815c9e19238c0b2e0d484ea0a0eac76865083c6aa58c5b83191a00c9d8115b0c4601712781c78456f81462101e94aaaa9413b38586b80350d23ccac11327204b41ea3f60bf7f4fd044500cb2ad003addd683baa8dd1ef937339249b283329442208a03534d18eaf5c2ca3601ff74294fad1abeac2dc9e60576d4cf32861801fdece4b58fbccb26c95db45885f846a9bb8e3394ad935f5668b5026964c8355c2e5d6b88606d2f2566dccbe0888e6fac3f44a5640bbdf588f134808f43d8acb9f5173cb5d15d382d4dc2d0f819028df6069a5b81459d0e5a20c6ef98b3b26e674e31841f12373d847b0c9a0c4b8452e95a8a4cbaa6b817a6f105b378e7568ddc74a1cc0178b79db9b2553951b95ecdc38367fbf177e37e5d6e78ec3b3cf3045b5115600611427397fa9fa5e7080d934f9483b44c76e21c51c350a6775f325b52e08a93b760c1e2640b263cf3824ac983dc93e27c26bad64c75cbeb78cdf6d8fbeb57865b646c068332592f1b1fcd503676a6b87c0dce145ac51a0ca5ca9bcd536ff13c7e18c872c690f1ef719c8de024becac86b54c549b6c05df73770e93af51e841c878871ece67909d478e7bb177fba6726795267e36f969118b2cbb8b9c361f49adcc212a7425750beed94fbe20d8fcb54011852fda2ee0ddeea797f726b2880eb3a94a5ec82e1c588db82e9cdf26ff9d75c59a7cdc8124a003e9172141823fd8734f1bf29eae27a9cf05bb666cd084fc4443dac3ed3f108a7ebf5c831d46af9580ca1cd9617be7b70d5e2be823837d20f4b0fad347a6c2b322e88dc63966a52f83a2b34cf53027c47231408ae449c81ac805049e74a1cc889bb1e5e227f0c2a66df3226d9ee9eec0fb425231ddcdb8cb8c67378a9e5364582b92238033d537f8be14fd6d999d15d52904121ef0b270f3040305c545d77724ba0da628222f349f1b9eb058e69da5b04c5dbbd79a8c1656781980ec7aef16002f154130ac81dabd0095c5e4e7987d821ee69a66ec9bdef722b968c61fd0380ddc7bad6238da5f719705086deeebe9edf8dd417aedbdf03ec8e7da7b5517e1eb6ece21a268a35e012be1437f3f80aff63eb5345621f12b39a570aa2ffe532bf924dd9c162d1acfac4587c19d7f50cb3f40e63af540c5f7e215bd7c0a122df21544dbb6786dfe86f807f09cc49e9bfdbddc5a461294c158c68477314ff205bd93966e1b4b75f955d0629d951bf28852c34f1659a519e5cd66be8eef7a178f584c516d842a34033b0b3c0f6af8eaa0803fc279f109a0accd42f5530a3338a41eb2b8b0d10db9704d5d162d6c848eac378c3a8c2d7972c949fcb905c1de922d181884e7ca05f3956318cbf37293b4a736279e3db0523b236def50e5480d6327522003c3fd32f491ec78ba223688af186615a598009d35f045a010e8703d817d46e0788fc3969a62e85b168616e34d9b38337450a0c0069781c9ad77217098297f5533777365d21b6cc64d19b88a5d356d75b7dd94a42fcaf32065227d79cd3a75524406105a6abeb6e981517fa5a3ff5ff376817d6d4df409807a07685e124b8c3c2373ef4aa5c016f3add90f45faa2c7e9c50a584ff9fd25f1bd061867fb4392847ff392b20ef17e1e6f917a54d7417dd66f63a20534b43693bc987d16edebb4999c8827e6e3d3e3e662800c0dd1ccec5e9700ce89daf44a38c3b7b4f5cc93a8a64d5bf44377b9eb81155a4576b82c6b4bb4ccfcef534293ee7e2575ccc4538fb5d78db269b0c74b3ca5083686f52eb37b35d0d6a55051e9b291ad7d4d528233f19fe3fce3dc245bfbaaebe038e8bc8925cdab51ae32bfc058811d8e88a23505c11a386f387bb282b8dbd27ce14443acdd44defc4a2de7b623acdf5684804fc6b78c59a625f22bf86c4b5ca995a439778c270120ee7c986ac72a6af7db42c4b5660b5b8cf3679baa3d5e1ebfa8b49571e8942b56497b735b9ced804a5c2b4c2aeabab684451ea05f66e6977a858b27d08d9f249d69feb173f0cb66b677ef5d8edc619662e8a39e2c79b061db2f6b5bf8073c67931a1c84663ddec0ce2df7dcdc6d6b3b2cb4f499bab3908380530dfc3cbd2333aefb36fecafd810ee69e3eb253cbfa82e9cbb9a58541a4e3b6c15505c7c4a7c398703ba5ca832de448fa3f9df6607dcbe87a7ab72dc85f5c70649bdb5e65711da5303b54ad42363ff4fff1c038a9442fa7d589eb98a8c05f80c8fbd6f8c367d01946089bab8be28d53a95dede0dba5966c784bf875a6721c82e9acbfe9875ece6fd12ccfd72dffd6a70d138a8a4ffad7784dbd5a8010489c5e66377002cb7707ee988749a7ac06c43b060f5d6e78b5bd52931ecfbce18666ca00243dbfd3a1865125180bb3046e3e30b0232c34c59e0e8bd5f3644c6a1df92e4b245d8b3380d6c95693c61924a4747557059c2bb09993ee39085af0a2d281457eed59dcc25e2c264115c8eb0e9838b64b2148cfba90208e1696b3acc09c15974bfa390549b30f1a0776416bbfff0252cc59f00cebaf743c4ef7fc7cbb62a4594b6575d1b971402225660e11d9ceef40d9547d9db3f6703ed956836a11ea53c7817e3708cc42d89c85e75c584ec2e52c2c9c989e9c1d7892962f179c92b109286391f35218a27651f6405d41073d8455b8787dba021aa6d4a61ba5205c2a1b174f6bf67006a2dc50fbe3e2bf6dd97c35484f4decd989b89d0305bdd81603b72dda2842c2d4f4e5544ec4121c8f6e15a2cf15408b032a3b4ce79e07a223175a78c721f2ae846ba4bc0be8b04ee2392a92bda483febf6462133ac9c041119c145929bf427d0ea4f26a505f8bb9405779f9346b1e947a1576c9ab5d1d3ef4d0f6299aecdaef289304287d2f069430e0d4cc7366fa4d099e2b35363a0ec40a7603bb29c69f2e63967fd1955505d4a05713066d289750f48b4f00191b0566212c67c272163e27613917d64fcc84818383af709a1d398923ea5ad8ffc6117b6dfb5eea7cc88b97d4f9c028a1ffc1a39ecacf278dcafdc787d12ea0a0debd936116e6644dd3f90916b222f3dda78422f0e262dafc92085bc6c15a7027001d4abc3f40e45e189ed90fdb66a2eb26440cd7ca2e5102854c612765e5c65d3f1c8dad2eae05df4359eab2ad9c7559061afedc6b2a583c71e81c7121d35db9308f3fccde020eb356954ba1fd66d474c33b3f91a241f9fe8b063e9fb14722e725876575a5b64858247ca4904b0485de70a353fea58927b4ebfb1d9c0e682889fa09a5347efa764dafe8bb2df0c4e7c6e33a8d55e8bec73c94a55df658185dad643e3b72603be40c5b6271294388c51944234ce4de3ba9a8c71062f62f058dc5bae9d558b5c432d0e6f57ae29b1fcbd654e102d76eac85d624a1382289f0855346356b6da6f0997d2229de1b571196e30c39679677863c67ca3bb364821f7a5c6fb986215ab79773f6c6711c3a7b1fd8859d6de68dc11b13164a97ccc09716fb8a13b9385177de2a08a7f3f06d08f0ffbfe5a0cf3184b6dd3032b92c0bb592cb9846acb53fee1efe2c58316e683d183f0f7db1943c37d0ea873f926e026f49d009f0609d74fb5e79f5d4f5884409562cbe7df7d213df1f0a82c61c508317827c049ed4646458e9f824754859975d397793a87810a3025ebe9036191bbbb4bc7a1d7ee803ee232a7dfb2bdcc040b1f28d587172e0956e3276f530795d1f87c3b2b210ede153b08bdb1992a38e3895bae1a11cf45fc77f76ffe7c6d80b1fdff6d83defb08d6cab43e80d2b29b7f3099d23a4e1d41ddd1015b1883968bb3a13b49d8e124824aad776644f586e8cf5413251ecdc86f23a3abdb46f796d67ba0d4b01d6c2229a7c76c69032aecdb5382cafd712667e12ce2e3f40203b4bb8c353dfc9c5587e1de5d42b20457f77ecc9050792cc890a6f21b58a8cc15427994136674176d4248160fb72d4e962ad04f7b513329c94af432738d4b90576747d0854420c376575d28a15cadd6c1168a33840a39e782b49a8c4538c29485966a322f92e8e36f14eea66a560159b96b518f5b87fcab7b63ea7a6ee19ac93619036e816568749506b1cfa2d69c2d6645d493a7c4519741718e5eda686108542a1a03686714e2e4f2f8a51c4fc2242a2bcdcd33788ad219c21ce4c20caf2a588db147341e7a2de92f318bc340ec4c0e1220b9f6928d0bfe95ab6bb88683b9b2f93c51b02298afe44da31aa1e4584f1d0397d34ddf26e24220cc804f1ca142200aeab117beb51e05e7417eef7ba01dba6383c02ed7b67eab3c62e9ee8e27a061b687901fb538c4b465562bb739cd20a5882929d84f5164ba449eb587233a76f967d39b14bd5808d953f2d25aa1f995135645a0cab6eb15c68013537c0542c8fce5fc960aa58d855309d8715ffd7e536905915bcbf2a017d012f55564fb468e8e8619ebad23087647a7d8e2e9b6123175ce5ea9e0231f101fe7c481ae8e8f15840a3b7f708012280dcde123306d669aac59fd68fd4e2a4f44648551c165ed9ed3d58d760eea55f12e8ee07dfcb264252ef14231d7aad3221f44994c41fcca332834adaab9be18aebc12e14ec48348b7f1ba4443f4b574c90d70d73a183decba2c27ac3c01579713f4625aa83ba56924f9b97c1722c1586583c7ae28fa34a32e89f124fc5f134cfaf4fda9e8462608f6fc4eb1e1f71c9ff7c55f47a0297dc00494a47881fe8bb6ded07c26f2595b2ade29722c9d5b85066012781f784df62930a81574263dc926a142b6dea78c4b9090422fbf23f73e30382edbe6862ca7f1195bb526ccdfc4133e2d0fba29c46f32f201f636502ab0afcc78d55e9abb7ab0f9a81c6f40a689c4392d61e60dca27942f620d146fc3199c85b172123dfe34579b1f5406a76c5e4968b488ab7c491ccfac084adcc0d59d4aa2e69d20620da96e18a512ba0513c60d51723ce87920a48968f4bd9861f29bb848f577f7de2c4aa5b193e461f22851e82d7396185ab52846ac238caf87c3acef82a6dae2ef80887c0a79c1168395b6fb0cf7bb5d0a4e34ae46b800ba82dfe4a3d481d5b3377e53e72c0f09ab109c20255f0e38d5c8d71443133e0038a074584849f00078182d8816015a348f5f56187855da94eaf2f3a8e01d0df37dde9aad785a997eac834d00ad77c53ad1f53fce78229acebe3bf28f680b980b5a702a653ca72bdda1478047a46df459de8d06730c6d04bea118a8c81f57ae894e8b0eba1e14f9226964d4c8d2341bce15a7d9e2627ba760319996fd5cf7f97009006421fce0d77f842245b1534f429630456942a6f3865fe1674cc754092e5e31ddaca50fa6fc368918318712976634b3aaf032158156c0754638a81a878b8f680068c19a1251eb0bfe002d1412821a8bbf2e895889d130e412c7fbce3d9b2d875cc45c25c09ecaf829e92bfdef186d9a254c126217e1c243e31c8d3af747a027b08b51521d16b0ea530171c780e3de8957d3dd8d2161768f0f7b6aece144ed218b219933f14eea3bce11ef04044f607ba0c1fb5e99b1b4dc46de0d2bd31682db9787854dbe3cfe6934a5de42f2052b8ebe2c1d330f3cc240e8b60d478af3551747e94c76e5aadc7a5666201ea53cac9f6824ce0cd5d1740a9e550367b1352bc7989dbcb234b42c77f3c1613402dfbda761e89d079e5a65cf2a0bd6a50b351723f07a55e46d7414a7fdcafc1b8142d096050aae2370fca95a9d1c85cedcb4668e6904abf12443109d484248e64351d848c419c3ff676c6ab8f7ae66c76a6724fa215e90f25ff572a2497a0f2d22ebf320a72a94b135c6e69f03ead97580fc11b1cadb02e5a286704277035e7f8e425e1f4780ef9ec94812b5c0c2bfe62a30049b048a86c3f70ee57426587d42ca75ffb242b41d085571f30e06c10a3643eed1c73dc6482495e111518c36c92c20314465ac9a5f04299f2e15ebda7c45971fe6c1efb1ccd963d2e412f7b169431031a828e7f58301e554d0789d67b610c3afa497d8f4babf19324f8b1e9add4845844fde35aeb42a51befb565e8a612ef9d7f049d5a3800a89b1c31dc1773a20a9fe50a106c86788ce67ea2b3175179a96251e8fbdbdeddb6dc52ca94920cf607da07ba072670a569d0e09f42ad924da24ec9247c56b7fe9c4da314a0f411d3a8fa76d6a9918b3a65c4ead4286a3b3d9d1ab7964fa7468b736ba7464d88893aa5c162dbea56cb82754af20cc1e8d6ffa1c30e9eb3ba23ffc0eec842f5a787c36fffb6ead4c8a20d09c988669df260609d1ae5cb12e954db1cab63773ac5976fff66b3dd6cad4e499e24bc6efd0d472bd2a91dcda5f1748af4f5b557a769b66b710b61c820e4d3834318234562ac97835a0f068a1aa9222f4f1284dcf04a9e210cb9cca1a945e61a0440dc11c87da2e809a3278e5a4c420baddba04c420b4317068a568bf2c218292259b60be0049f4cc248915b8231c22355e47d62d6a2bc3a58faab09681dd55f028aae7215fd4d03c2b50e4d704c0a87940270e5bf743cf87afb015c005c6975f0dfc955a5b7ff2922052605e897668820711ef7d2cb61ed97c07794dd68f44b8fc7e728fb4b7cfde3b7e2345cd705d9dddd3957be7c4d7e954fe54ff9de5d17babbfbc4de1ec73b73a44ab376041010101010101010101010101010101010101010101010101010101010101010101010908752450b7cd2aad98dc4755e89e42b31496152b182c5a9858b139417308250824e825c04b5083a05b1085a11042346d08a201541a6a0144126412541313ea824e80b22092a0579410f0679415d1017440a02c32052d0166483c21b826c901674434a90169402802000e0e02a66b87dd2aad98dc4755e89e42b31496152b182c5a9858b130772391831be9311ba919939305ea09cb8682173fb4f0fbe70d60d85099d58ac5061a2b0db9f020c51da75e3ac142625dfcded27096f3861569db58ba4e4d5d9edef6e4871c12ccd35eb34d7ed27a500a045c8bafdcd3724160070385d0118f1cd9cbbe5783856dc2d47aaf4775cf8f8c72de7f67338b0b81e8e15d746775cf802b0e2cae7c46ee6c81618573e47da6c89765e0ede0bc531c38f24a342878b31c467add434aeb529f539a73bedae1e0e8f31c4c797ef6871f856923f73f4370bea6b2ed4766a86dc76c271a4ef5a85801315542f5cfc5358d787e0e2bf82c4ed52924708abeb5fc3ff0647da6453afd9db7b69caf32b8d406ed7cdd7be451e24789243fd39c36eca290427b97d5292aa752536d01ac6c914ce767591cfc9d8b5ae922eb4ab6fed07f9a66ce9dedf06f9fcb90ec481898f7b26e190856fb4f7eb149b3a453a29bd1cbadd93486f65cbf6422a81d61a7d7fc7538a2a50eedd7be164ec9eac6c09f28da7bbddd3139cd33c1d9e0366c7d1aeab9d57ea34bb95b850b6e8e5e0007049e149cc0c1792af770889e521c275b78e3d06d8dfea4bef01b38a84fdc0f7d919309f36f0ff454104d68a80c30e984c2e4c042599cf7dede5d03990e0fa5306ccdb010964b208ecfce9019f724aeaee72059c4ce9baa7e1079aba7f6aa6d144a70ff3ca146f1e4ff3c78fca70acb57eb729f30f47c2ff1203c60b9413172d4e2c56a830a53029f9484a5ec79136ab553abd7988bf8deef6b0fb9a8081747710f752fabf09b8919f7e0dbbaf45538b9372d7e21c51e69f28d371ce28fcbb1fc8a52d2d55c61cbc171c33fc804c0e0177add59f824d74fd91d29631bf9429faa3fcd9d279c6f9e8eebe006efef6f5ad54d9afac7d979fe4821c8ef5995f0bb93e7fed00db21be71de1f26b781e34866ab6688987de7047252c437fffb3effaa209530a7a615f1f1cb94744ecd7612d693b033094afb74aa36364d9c9cb0028ace0bf3e7c8b7049d98a6750d7c8993c98511279389523a27ca8b329da6134a9d9356ea4cc04862e86c776744f79c90f020dc9ce2c934e9a4359cf3bbcfc4c4a63951eb9c93de6927ad3673d239e990c9761fedba1c7c45d8eeeeeea642777777a748157f184473d21899734ead4b62958439279d94d2395f60b2dd673211156189192c82b8601e314289cf87d259f9eb9ebbfbaca593d2693a99996cf7cd5abb6e250b4f27a5744e16c83418a1c4a70469e5da92f1fb9ee4b94f019a8025a0f41f972311030948b9e7ef724ffa418a71ff6e5ad5540c8185217858b9b4aedc194e1ef480a4846fd2393e47b2d9f1c7adce85a366390fc7b0fb2e9c5e0e1bb85c386a4fdf865b6ab7cddacd6adf324d9c98e0fa28ede88bc07b3e00e9c712dc3a02e97a4620a410dc292501ea6b407492bb24a58af6365a1bc19d7f82836fedcb9504f3ceedd6aa691aad74c25ca739bbaa892799684f54f04ddb9d4e451861a83b3a09d128e8234a031a00917238174b7cd3886f3e07c69973e90d4b88e52ae1200a6148018b752729c78750842566b03042c24e8af8a6c90adf3867673fb07df6e7ffdd1a3d9f3f579be5e4799aa7254a2b30c237ce2b653236246352e6bd26e5944842101993311713dd18c425bd942df649e1a88d2187be369452c58af556e97e67385da60ad30a42768a5fd793524ae99c63f8a6eda628aa817362d0ad3bdf4519be9177ee94b17925ece6e03bc47e8cbbd8300813b84847cdb7d1736a5ae3742ba85b8d435d4a413ef78901ac5bb65bd3158325b8e019755d679a05b8137527d89d648bfda9d9709457129f930d57f58811e38ea7eb9d3a525f1bf22055fc4d66da9c5c86ebdf7da692150f0f6ad4b873668412df15582ccb167adb489ce685ade348da8fdfb41894de194e2fa2738237b930e23ba1984c2856b6d49fe1c96442d142cb339a407bd64c2794d9752a68e2d484153ecdf914048109eeacd67e950cf3a9e9a40993ed3e5a6b37bb95d92aad4a2c7042adddef737e379b29efa55ffbaa105d77381221737f68fab5d8d67e55133b26bed1da4f7495493389f49a3e189860beaad569801af480619a2e350dd13f6bd3e6027dd428ef23964d1c2253678728a7d26d16e1195eb10cb32addbabbdb656608e344ac8f62b19850c35c35670d9bb386cd59c3e6ac6173f603c6913c47785dffd6e9140be13aeeb3880eeb4c9d1d1d1d1d1d9d228c93e36acbdaecacc6475cd4ae8e8bd8a8c8e572bdd8c5ccec834f1381b8b9fe41f8bb8dfbac31a38dd0629b6935169b1973ea10d9d8d808912ab373ef05e68919cff87373c6e170dc9c519939a333dd96b5d959ed071ebebbbb59d335e9a6f373c7ae993a3eb3d2add2cd099c8e89aebfd6030e0f5da72304070727c786b5df773a8d2f2355fc857cda6cce5c651f27e56ab8fe9565327368a8c3931e6a19cfa15a599d721957b18b3fd7d09dd99ccda27944579de3cf443c6bab4d3a43593039569bd36a53d4e6ecce5ac58d73e8fa8f74c788348fba9fe9d4090feff9ae5a35e3c9961d96a6d1ef81339a46d3681afd94d5aa56a76cfce94da7705ac52e0ca2981ae5a336d4a99165aeff3871aeb73ad553d629bffe9368b5b1f5d61df906a62f3f109367be664fa7609d62229dca9943985dffc9bfbd7ded250a9822bef00c619c6069353ce193c95fd386d0d3218c13acd9cc0de304ab45799d6039d1f2962d4d5d5a8700885d5b094b158b44d197d66369b792ca2ae9d23056dc7ec92ae93296aeff385333bc21049914a587378440240920ef382f4b548b2bbfe4cadfa44abad42fb4608923977fca943f772d6ed74a15faeee5e0cbf38280db70a5ca514b73576e7da3c5de2eb34ffad3dd75c8168e912d32a44a4f40aab4ef67803c0098836cb941aaa8a4c8172a341529331c59dc7e014496d49f369a07d8c5c183bd1c3b525a6ccf87f6a1eff8370703a44aff0c41a9d2413e92337ca324ba6d6bf0c5b4d82fa3c57eb1c51e5e8e94169bbd1c1eea902afd1c7e14be51be7434aadfdaef3bf50e1e3152a5bf99e0034c4012a0bf7548950d0a1ff76ce301273b65358d82dbb32780257cfd1e0ee1720c59bd0bc77939b6a79582da3b3884f40d86b351547697c6efd422d83b9c4c19b7d9adcf49f9c2a1064b8bf56bd83032aa4495a8f6d457e5a9ae5aa4eebc785c35ac9a96b6d266b49546d362906fc26ebd1366f2826e6690fab4d65a8714467b5aac2631f8c6ad751967a753f4c577b3e99424e9748a43ca435d2dd6967f7ad784383c615278c21a6bac316b53cb29b2e13847da849c23d16dc639d2748ee4da6665449b904cd3348db518ac512496cbfaccee0c3be762b96e883ac59d733e9d1a351dee9c6b76ad98d5b2b921620dc63e301913b1a6318c1122a2a21d9d4e51676de7e2a0eea48fba14a7c5fa2f2731d352f024867e8a4f1106f199d47cfde3d6d2ea9fe0d82ee93b1cbf2a74ebd67295940eab462dd6273dab5195a571b686a569a4d748da0c068a96365b9bcd2664cbd98ac8b6d6a6733757e7dc4664dbd9786efdaae174ce5159e7dcec9c733045b45b6b6bf5b6da7ab69b149b1022255b4e896ce16d45fa1212e95380329a06e9b79dcdc5b3bd606d026aa0969302d4705835ad9866345385b423bbb25ae78ec4eb8e1a12b13b5a194ba3fd26d429cd76aeb5663b2762732c0e12ae5bdfee68b673dbb92664350d47d3882041a391421823429a462269304684846423755d1fa8cfabc57a42819212502347d52f79e942c1130a9894a09abc7481c182ef44834f3a6aa4b35b9fca1c552d11be71ba64b79fa5c66a3e109793981441a4085dc681b8d4b44ad2b4e338aade38aa3e3769987fdeb4bc356d5aec3afb0c6e359d92b3a6c56a27ab450bcec6d13492ab5155b5f9f86d2e991c195fb9ea2486fefc1906b1ed38aa3e0d7de5a8fa405c50776b39c772d5c81676d58a6d03ad508b312e3ce16c8cfbf189b94be626ccc5d3e52a76610de67ab1c76d96e3bccd7a9b9ddee68ab17858ae62f15c9116757e385be408a2cf92948634992674c4d0adafcdec4752fab827e1bec4592e8431e233bdf0849b3a27dcdcd199f3081ece07c6884f8b9299e3d8e7a70897ab589cc5dec9d3446e7d16e00c11a375ad006788a0a1e6392f3662ae2a117295c9d7f7a229e339ae922e3bf5dd097980e9627fb98ff41b96abac4bfdd992719574a9f2a26ef523382dd6adcf4333277259a766648b906cf9e1d814d229e9baf5bb61de3fad922e2313c9918fc63e2aea214f47d7b1e780eebcd2ec48beda95689d89a743a64c1a6c5b6d2bd3b6da685edbca648a693873262b9a44d3e8d6df642421ce83e94e85ed3498865362a2f968381acca48485b468b3ad369a8d25731959a26d664868b6c98ee61142eec84547e8dcb1656efd9207336fff26245434333ada6448663a35b2c48486649f25e2e95473af4e917a3aa5c14a8eb0b1359d6adbb236f6460345efa55558b6b9f53bbeb151a162f67abd2ee771a4cd6a9576de5682802440fd7a8571368107b803d4d1229dcf913c3c0101df1ea44a75e2d6e925182330a922efd4845c65ad260481ea62711c55dfc5173e13b1be85e183cfd4856f9cae17ab636eb1846fece79ed47d83f26a355aac4fea9ed4695d6843b6e1fb3b4ed774491590239e20831b34b0bca0832fb8d49f2fa9eaa1852c1c41260d454df871a93f615225bbe0844c05376cb0c10d8cb8d49f31a9aa4448c2093056ce112a70a9ffc355a2a35cb5e23d705a878ae27bb9cace66add9223bd3342f9121b6583b050345ebe5fcd3299eae1f21764dd7e4993d333687266cfeb85e1c499b3e536812ddfad5b23892463d98e648dae4481a0a6f6d63b3a24e8dd675eb8bf698dea753273ceacf58ab6656f02e2aec8f6c71c56e6dc1adaf02640167340dfe3d04a1d917c35c751213c4c7303e22e401f4c23c61f20266ceb5f6f11aebd40ca245992232a57daa863dfcd062f3d022102df68937913b0e2e09c5edef57ab4e603ab7bf7d8a70e9ef9f26aec97d91c1c6dda5dfabab6688902f32b0ae1031b8fd6ce4aa1922607061a058f520b3dead43e7f6efe814026e7f8a263ed27f8eea1d57b14cb6c33217a8197c63ef70517f0bb9aa5b8e92824cf509a458e4255bf8bb24d33352ec1fbbe7f60efb40ff077bbbe767e6d2f36bde0bd7cb2f65a44a7f09ec15281dd53b48f8f8f2b790a8866fec1d96b9fcbd235bea6d996ce9ef8ebde3c30f1fc79e0e074cadb39e0e796dfd260236d8454802f47360116e878dd3627f8a307ca470fc2e6be1c8adcb33a5d00b3f47b58cabb84817a9456e57d7e4229a56eb6c160c142d19ef9ade99230abf768af0c07e845e433e422e8e447b6255078e44e90f8e442747a224bad32a922f42d42e8fe7eb9e527fc34adfffb2e58572bbbfa4f4791deb6fd9ac55ecd24f025670456c54334fbf0e9dea19339d6af5f7b790fe1f9690cdedb1716ef7b3acce8a8cba6f6e3791db957d18c631fee9fa3e76e8e011d3a3ab6aba340f1388dc7e205866d4b071a329a54758d586275586d84c58d5232c8dabb56a5a853972e448eb75f9ed6be78402de97be1496c00bd9e5287ee9d2ef325c13e0049c4c313d8c972f52da42075ff76f4f410f30eb76a0b9ee380bd687014a9707a5cb0419c6f1a0062775f8a1e2b9184debe183995d7af7e9399e72ae78ce596ad8e812fd19e1caec28f5706c57478b9a0df2999eb3dd0e297e23752f355af4192b9d8f1edd0cefc5f33c1cdb5d2995484858be92121393131ea4e86c90afe4395367837cdf73bc42ae30fdf0f143071af650a1a2c68a15263558e860e1bddcd0b163855fca3283a5c6ca29e6e4bdf0287d0b1be46bf15c0b90e439eeab85a308aed6023479b1d1a2ff8dee6a610dce4567837c2c9e3b41e9ac121fc9a3782f36a48a3f27e4e645b7e385f7a283c5c3e86c908f3e57a3458bd7341b2dc21b313a1be44bf1313c1cdbdde1f5d1e7fe41300c5966dce0bdac68da0c96166f98329426b447b3a851fe37cc59348d6eb86174d89c2ee44346d44eb145fa292937a4fccb167615f8fe2994fe0d94ce09364dcfecb82a868a5daab0d36a71e2e2514ec01417a07883f7d2622765cecc150d5352aa6033690853b40353b4d3a2a473d29dcb511c009072438842a14010041f858a01e3050aeac4450b140a7542b1588152614a6152f291943c140a85ea0c503a8999e1f2e2eb1df2220cc2042ea28327311f7b202e30c0931818ffe25f8441b890a3fc613c1017e9bdf07098a394f88a5c3057f18efb0e6c47001e0ed4e59d165d85eb1b3d09233777e49d29d4291661f35f902c04522e2f42e9a87e1b4e024f200b7005a802348129401370acf1f9833ecc1b039c21626418cd05c119225e7c08ce10f122ec7e82a84b432b7e7d8d9a3e4d735a593a35cea2eb3050b45caac3e611ccc7e8c7655ec4f2f7d83649433ef3af4cb44d125d6d93644465b6490ac114eb3087b50ac6fb37d3a9b159d7632f7e62fc8b3fe1f1cf5706fe376b1681204bd3a8ffe08ca6513f06b8d234eabf0065340dd58bf777233f9a32ab8601ca46c946b9ffa96dae8f0cdbc1b1cb32abeb4492a70a34249d9d2ee2357cf5f281c57e849c3e95e177bad329928b875f46d74f706c97b471a1d8e244d98a88584aa7b43689235a43982222f569adb488481191221d6a81b8681a5b70a186545052cac25f5a2981a2a3fc3df01de5e1c862f2826f3c5d717b26d5d315593a94ef3e7c0e4c09515af49701ae9ca0f8e44f16db62937afe80bb5b9bdcddccdcccdccccccccdcccdccccccddccccccddcdccdcddccdcccdcccccccddcdccdcddccdcccdcccccccddcdccdcddccdcccdcccccccdccddcddccccddcdcccdccdccdb3bbbbbb5987bb99bbb9b999b9ebeeee6ee66e9edddddd2c3633e624b2e16ee66e6e6e66e6eeeeeeee018787aec3e16e764ab9296d6e6e66e69edddecdccccdcdddeddb5bb56d664eee621ab95911a233547474343b3198b4475b35ceb83e84375ba5999c162e3c60e1e31afebff430a3d3d9f4a934235e5656cfc2ba4df9e9f9f07d9c297ff87945d66691afe1b38a369f85b70a569380d7f9656d5e7b7d129fafc37f875f0d040099a50fcb243ae39b937bb481827622dca99f774576e6197c304a684231970497cfef27a383ea9e22ee3870f19ad52213483a5c60d1d3c56c4aebf0e2ee3dbeb135d052351fe58b8fe40d76513d7b36e79a07949fb9fe45c7e966915bd89e9c186ebefa35538b8f8eb7074fd77d871719e22b2ebff43a7562c2167729fec0baeffbb805e182856b679ba804a29a5eb6db8cbc5ae8635cc6f6e6e6e6e1ce5d67edfe9e47226448810214c9b6933a7cdbc31b29a3673ae562b9654915768b6ca63ce9d25e21b5b060787c8cab2868ae2d3268eab662c8663349b5d97e994bcaf4e5166592df6533363dd487819a9315263a4c6888d549144e6d0d0c8b2e9c347734876343427d1d1d111a9db66b3d96cc63e8dccc484ae6f3d736675fd67b2c5afca57aca396754af2200105573e2108b3a68687664d6ba8664ea2a1a121225f396b88ce7bbca7679df7386ce63dddec059586af1fc6895987b3cb71d7b2dd4b1dc23861e4377ee3377ee33740f01d2398b8feb448a738081667f2f074374fbf7a9aa7a7a7c7a7775c358be6911df28dddea56df586d5a6dcea156cb5501428ef22bbd9721256fa34fb8f08d5cf246ae6a5965a119b24fa37e8cf8467bb4d1746a2cf170ba0eb3479df21e7f81e11bfdf5a7152e0211f05eea47c07ba12f814e02de4b7d09782fd442e1e39640077a3950ecd9277cf4432f47e8e140edd0223fc7626226c015f0706c7705acc51a7cec13932afea71ea84eadb872484949c8299d7455f37c2e7f39cadfdad333c3706cd76747dfd8b9fc4581cee4e6eb0acc64dd15e84c76f0f597bce94dbe3b2b74ddc66c0d5a880968fa1cd55285bf71a40a733d7a8816e82ce0bd788fc304e0f160d8122f151930ef9908c380101d0bd232eb84af61a555bb4a9bfef2015c95c65392511a456b8df0d11f19c673fd5132dfd819c15cb5d2566b692dad4543ada5b57c989498849d156e49281dc5c4f5e732d0c94ea16c13be91617cfd87a398f9535a74fa2378922af45219577db66564a45495bcec84905d14a4aa24ec8c1ce56ff2e9e07a281d15e4fa5b267c636780ceba3e998ca5cdaacd8a9252417146878ae2d34a2b57790e0c76bd494f37dbf2b963e773fd4fb4871a7932de8c97c2c27bd13cc775649e3363861388d0225991ac4856345342aa3a97a3644bd31f4bc6edf6cc552ef3cee52a978244f9c76230d8eb35fa8b85c55ffe6ad8f6ba2577f45727fd7559dcb173f94baae8f8ebd52abc1ca84b437fb5d86391f8467f9d66509a86bf5dc267faf1749205e0d91d4f56902dbc922a353c11e8b323cb0f318a4f4cc337facb5f9e3ae9162f07ead603781d6edda7806e6498c9e4d336428b848f861d4b80d7b08eb9a85880e9c60b8e1c3a52989430a0015f0e243b4a5ec7916036eb8007f0d02a04e88c800462264001af400f0b5c0003ed23031ad800cb19a592927e2fad609d917746b43b72e75ab9b472a1a5954c5662d15aabd526a59ac9fb97569d1a3ba3965d8f95fca4f81293e9fd4b34b2854b2b15a614253c6b55095f137eb1ab51fedd51a78c7cec467f5defd4d8b9ae37ecfa7b32d5d5298ea753f3d503eb143bc1e68e3dd403f357a7248f136a6856acaea66b754aa2a4f04c17cf24e2a1b5d2229e229ea29e5205526afe020a380985a10b85278a68d728fa122559aa5a48140f93438b22552b27b1cf06f97018f2a1fc2046871fc22042966991b91d3c484f79b5c209823c6aabb5b55a2581cc027985aa810d1e28187ce3caead2ef416d7027dccb18204419b4f3e8caa52f607607ebb3d576744a7bea2b36786c33586adc08f2f5f0f143b6744f5f87ab78e5a8193205441640a68258912dde535ef90391a9d2d3a7246089fcc01328a5389ab48dc4759e57f2da82230f2cd30c9368caa619e6cc9b33771f815ccd6a5e25d1d9b9d6799e0e792f57eaace70079f972db56aab7e32225a074947783bde3bd78c8391c10edb2dc37b759ad724ec90fcfeec4b9f3e64e6e356adec93434d27d7afbdbe814e796331151962293e1b529378f18149f4f9f5bade27e4e16ba11329f89cce79c2934e797bc8e44fac933e773a00465306b3cadacbc66d498f3b98665fe0f40cccc1f3af818baf3f288e994f673b31a1a8c38e54e31653661070d46ee8e062334183d21d39deeec4e4ff8fcbbdf7fd60de17cc4660a5c0e3ff0ed1fd47571e58bae629c46396dc66122741429edd6d1d93162d3a9c8d67a09d9ecf41e3e365b5bd57d11cee53df72af5907ce9fd4d6cf491943c8e7be78ea252a328f6b0c6feb9dc34427888e4ac906a50a1c81de58b6980d8563aecc043059debdf03ddacbce291994a51e8572aace891997eae9bd29e99a1a91159c6b6c7123aad34ca5d3d5cd5323d53633bf4d41e3c74aa6978c4c468683ac70616d3a193fba6896c1e0ea793ed119dacb15add4dd334311917acd542faa7611dab3b158cd9d1289fe3a9078d0e3d04d1231b2a3afa2123a2d388481af1ccf5bad159eb8b85e0dcb0363ae9e41e1ebda3b9d60ac214dddce09c54a41557914259575e2482516cd73426a12074a2e9d5280f4f6acf8b9947537d57b18b0f8a109f984ca635d49a09b9fefc4367b38c8b6cb7e86c8d87ceae743615d9877d84bc56ad1f2119114e4b48519599a1a99379a44fcac8ad9a1522d77facc173fd45eab23bce70b98ceeb5954e9c21d46db26a0f3b085d7f20627cfcd061a3375c4f372676e514ddd4ca5c4198a29b1b1c1e675cc95346d728c7a1075f25f289dde7634b84205941b9a828be51f2300cc60c639f17d9fd8387abb8b9e88608e7faebd861994e9ef96b1e4cb3a5b3b2cc0c651577c343322eea9bc6e1a356915634dc8e1b3da32c8a59f9b8d9a175b84712f9c47ab4a572680947b78e2cd77188300e66ad8afa37fb74b3747a2fcd3c27ada3a8e6c60b2fc15554c3dd5c5453545364332fcbdb20134c11bd1789606696937faeffe7dbed48726c900f87218ff2836f3c8539de87fc945076386fe808bbf06b51860d1e1daa1584d65adbbacfa443f8a81aa060c02dff1e7e0022884ed1d7c21cf25679abf6d644e7d75a5f7ad576465f8a2a7c6de0f899a3b0068f73c80b7652252806c575c13bf8240f10d1d5aee4099a5dd9e2dfefc91669afe409925d131bc1b9f28576ae69c57bd6307465cfd1cc0057f6ac41e6f68eb5df773afd8b62cbacb094f15077e8aeb5f60b8481a2c52efcaecdac5c9b32a9839919e41dce91790fddd19728e2111cad7feae4b83701076772ad7ce4c811318a4fc651fdd67e5f3f7b39b6db386bf8f88e526624b3dd6e1a99163be522091fc36432a2d84cabd3b5e9f672b34345f1cdf7afcf3257318d8e4ea9a68be469c2cded1d3cb81f3a459f23516d4e9a1366d1bc30a1687af5888d33d7ca20cc111b9bcb913a318a1da494da0e3c689aa6699aa6693b049fa5a8f4ab994c7a12a21918000000200083160020280c0a854382e170180782103f14800b7faa585a38990b43410ea4200a82308831c820600800c4004690a9a1991ba474d9de1570df61447f2e8f712cc65563673ac58eead7a0865119d170a7a3dd2eec22d7b01ab0db64b8d33042d21c0fd2a5c43d08e4b52917edc5c4c71fa030e8e0906acab34d6695f1aa835c416267f17a6f75b613e124cb7c9d880dab02fb0f1bc69856be9125e6cf79e4f5928f69e27e8ea24af4f2fbd9922eb7bb7d059befdb4177add9a3e3c487501489cb447fe74de8e5112716e89f331f02af488bcb2735274b398b842b83aeaf9ff02de6432bc2ee6351584f6a81a85e44747ea4111af615ae15ca02474927de38a19b6bf3742d07c77a1a7d0a81976112545bf0738dbbefe512e4e162b239184ac07e115993167c841d84b0433dddb1a7d844d3497c3c4ec1110b2c2c391a720826e90d21f271d12dad2732f39e76180b2aafcb13a3c1e6ef0c045ffc0c46a090f2205e7147770bc2d99051ad28695a0f471e2805150b1f19501cdc4f05610b29d3cb8f366df59bcab1111936de977ecb4df2d59ceb9e86daefa090c87cfa284048882c33fc62efcc35b1e7e50ea832e93251b64dddcbd3c733444d68c48e24b8bd122cd11f85fc18ac37d0df9ff93eeee94fd77fe29e94b417a1c61f6cf05219d6c74ecea22d1ba56ccf7783f3340545f7291c472fec9b61df514220e2a4fdc3f2d39b1eac5f0132067c7d6c784a3f1aebf251a1e7241e0c461875ee0a9985bba0eb3f0d46dc2d21d919124e166cc0a4d90195dd07f7e747485ef002ef7c55c0fd6a4c2bfd95e0f1284b15cd4b6cb2049988e6796f39211d75d7eb100b2e0c203dde4c4206c6a57b7a7dba018c5e3f24bfbee2e57eff721dd54b25d2cefd000615adaaa787c131528bc8e26fcaa6041f8b2d10570bb6c62458be18510a15d2e12a0313cba68fe48e147ff68da8ab1622ecb0da0f9036f07f79aa2a0893a2d4f2ce3f904c6aaf6b8f928b5d79ed06fd2826f1fd43a8253641a59d8dbbc4a1f6666704e4b8cb326a752a015378a4c3ba2cd36d3eccd816bec20fee65666160335265d6f3b428eb6e439d7be303f68105fed085b56df4ca671120b8c23aecb8bb57bb8a09cd1b0305c72d9a8c273e2fc162bb57bfda60f208064e9dd2d8ed21853b0a3be41c844e83711b2a852496519c8b622b1d8d12264546112df9b19636a2cdedde10b2a041df5c5fdc7fa74ea513e73fedb186eee79fc1fefee30e61b06d167a2c9cba1a82debbaa06ce4c4e0fd730e002b107665c4db0c2469b54afdd35c8e900d4c62a19787c45ece87fa0a723e1dd704e99246c3d480d8ec30a99a0f5533b9e7674cda7262b66ef0f0795098dc89f4e224777e11df44ee7c456699ee90115b3f8c9fa132ef258f52ea95d003535a329ae633861cd22aea709ce6e8056d8ee1dbd17ef4a01cb15d8eb10528f8583b907b21f164098c59d555eb5bbd9ea5a074a7c5f0c6bce3656dc5afe433ecabeedadcc4e08e972bf1d3eb659983adb38cd72236abe2841adacc8f9d574ce5eee73e5df33b82fa52cd7cc3a7c05c1ab5830e84fcb303ecd48c9f6f9910906fc0acc0484c7f1392a6d7b900b9699e619244e7dbf0b202dcbf6597c8d89b7098b3bccb10045fa94918aacda27cffb89f81b9906cabd7297c502f306a88fe144cbfecfae1c13c8c7aff40447b1a9ed3134f4b24c0b01ea40d09922d357d0758660d6e70a4c262f24e754ce365932add1025bc66ac5bcfda6fff553e4b3325e62d89810b7b406b7fe424c6d46d21646c1b2e09a2a0962ae56feec1eca3abad3dfc35ed919850e486665d54d05f266af91fde8d01a29212e11aead84fcafa6e92d356510feedea2587829bb1331cd826ec07b530fed7da496ae7133582ca3fd6256aac8ac843eba55f6d046318d31e966e693e0fe70efa2bc36b76e09d078745d23cde7913d30e6c6d68759199cbc18489c9379d6346317dd84d34482558edfa98711fb3e9f692f6e8c2c11abd3365dfa06ba036062973e9f9d653e7063376a2d8bedb1b3d0b4d36a8af8c6de6c93d8c9b40bf6e9d334a9ed675afa6111c6119660371ec697a25fed859101c3311fc2bce4aea7f62db9f4420e687263be3fc47fc25b12cbd7c472b52e09ac60012506227971fd1f2a50dba18f0cdfbb516badfc4b589c1c1a9e19b3a2addbf7ce0f6a79788cbe0770fb3d5d2dcb78c9cd34f49493914e7d5bf21a1072f0e688f38ece56191bfeac5991061539fb526e5098affea0d245862b714054979b24bf88bec178ec039da5a9f543013363ddce2b9ff89c0b1887164b1730f5d3cd0e6cbf5528aedb7baafbe71f497000f883b22ce9a6dd2c8e0612fae3c099ea7280e9d5f88fd20da270f12daaae8e1f2fce8beb65fac9c7f31fe765cbfcf2d802befa3cf1b4f7beb3fbd62ba2e865cab2a68d1fab72eac8d3255207deb10dfd4b924dd3ed166f17a4027770d24597e9b87340beffcf88619240547b49621a25f5ab20acc009a999955ccc700574e753b2d0a99d12d6f0e84a42b063d8c7b4aa91f8d82088571963be4567d0254619a82b95c3b25244ca4bb61c40e58216b6f10bbe57b2c47c2523f60a0f52e1a0416b88e7a6f048500903ccf9f6a3c0d784b0739cdc08de25c8970d8347416effcd59872a27559fb05dd37e4026d563c07eb342839fe5c22900587a8ed2b7a95445dc1937639d631c5d7fcf94096b4b148c195462ee009e3266e801064d7cc5a9659844fab2da04760ec7cb6293713767fae3d2c17e638d0e08f1bbab40f3b075a4ee1120e5f549bbdde805c4d743671bb2a5b56b321a8e05f7c7dd818e1c8393dfa1623ed661e0b13d5e49aed50f9e6c809c004a61dbbee88a4aa48d2ca00351712387bfaddea8c1bf94f26020c4a87f9b887b0f23735c7c02c96d83ea7eeeb9b10579638a43913c0d0e09b4e8bd61defe80b67bd376d6a0b00350a844bf6bab2e8fe14dad532a1bd141e7cc963caefa0430106b8c8ac0fe5ee1fc195e27cbc757a6b927163267fffe1ca309d2c1bd7fdf9c7fa688ff81c1a60b38e57efdd509e41aec58504627aa963316ec8a49f72749d273407c1166692b99924104d316f1e1d51a9257ace9b7ba32fbc9d64e18f0dcfc0c2ed8c19acd1db07ba333af1f7e530aabf8118d987b62a06de94aea292d0f61d9fc7a4df9017b280919fad59f126bd4a03ae295df22539e04e31e912b42ca8a99696d2d9ae4678ed2224c00155d781edea4f4adf68ba86df5f2142b72d42e553e989121861c83adf10b9072d73c76688583ce64162e9a78c0c53185a8f0ac67fab2485d5b097dadcf1ca722ed354e9558d90be1d48d38036c20d08f8099a56e7d3e9fad788eb84431f5841da5f23f6381c31b2ddd7ea31d179d5958efcec6a2581ba35db2f9955770f37a678e763ca0be92098b1df277f0438e06c1479c4c69672aa02669990b58ba2145b88f638385773fee780689ea8c9b6717333ad72d04d360c2149c6387aa250091b256d60ad22d1392d1a00ba44d4af005c78310185953e1f523fb9120b009c37037e3818082d56e615b332329bb4223ad3755dd8cb208a9888611a1851adbaf4e448f6c45073cd81be1b8259a2ffa6064faa2ce1ca7c4037757191b308611c52733930188cc353394f3a18e08d7b4b631ef12b73ed6a7f707a82b8f80dad40f2898f8f8cc4b27390cd8ad49ca91550d6153953438dcbae53995adb51e8a35039c4e6e4844d325296f7753e2bc0ce1472ac7044130075abedc1e071792e3beb702e6f17ef51fbe8ce3bffbb52a8f0c8fc8e8c8cbd63f893e8254896b493f59f51b123c168b4cbc78e464688e6915b493c26f63dbfc724a0d0034c828ecb5b37896befa342d706d89ce567e44f673a3548305d7ffe0d8840abfd909f2cb20de02afff1fe4ff9643ae813966dfc15ef9621a763684ab625af9ca0af9f4e07e4938473d7673a29b2e1a5a13ca46124bc083631f833f8463da37e5f4ff3741085880d23b415fcfce63172b6613cfdd4af6f4d5cb76941be65e08e96f8218868a4bfe9840fcd363dd5c0e458823e6a5ea7c387ee8acbdbcf3c186d7e6c3987993fb6aa0ae890e44a4f3ef5eb7785f1996ead5dfe3a4a148df99bc46bfd9ad22961ae50f1c06cd56cf5666b4ffc417ec63064084934c511dc37f7cded26e694479d30aaacfacf3da970dc6f4e151ee6fdfda060bf53e0783f01bfa3ba26bcc6eb7a8a29a15cbd35b313445020fe570941709c348e23037c85b2c2896846260e44ec320f115f5936a0c2151eaab1035c8aecae92f4f6fa59761641786cc67b0dcb104bf53f0b4180be59194e215e5551dac4ea18d9a36a09be4a84200d38131ab956e80b240240572930e36bc822a22aef42149edd429a63f3758a05e8c1966fa5bfba31e4ffbf0d93fb14f62010101e56ab2d86bc9710983d16add2437b7f05560a5e110ef990424c9b625e65ea9fb11e0064dac8c5c6e4832a6d530d3ab72235603a81a2fae216b351f6aca0bc314ed15b25cf0b77dfb3c4fa253002844a0073940b9214ee8aef6569d5d67f5e0e816a0d90d802433f701ee2f9f67d78a1b1ca1c04c2495bb7e38ed99004f495c50ce0c7a1a2fac0b0030c5c333d426ab1340515a0f6f94485078b701d98abc357c835f925ea707e4335b9d2aae54b552f50aa50d5df101937103f46f445fef840ec1237f834d1ed2f8ce20672f02b901b203c52965f06fc7ca723289a8c31097c808d86d0b22f933369ce50ec7b3dd420fa58a828a0ba8d25e79b15c23eeca0aa0a68bafbc03986114e8252200897b0ef8dbca409f9ee9a129fe34b7f7f2462088300b1f720905aade543c7e066c8232527ea2027aa79aad7f5d06b28404b846d034ccd5ac33f78abaa7549fcc1f12b2c2076308ec03ba77a227a93ff6f514e4134002f93866942110f1c54108a1e6bcbaa16a81ac74019babb204046ded090a2038c9e7c36bd30309f00135bac462e5bb2a130e288116d3a41fccfb9bf896865bb0d84bf0595a3c049ac5d09bbffff08629f595b7d12a7c64557ffccc6d26e7253bb3e280938325d82ebf3f7c82d144a2d58bcf41a7392308198847600f71c44bc40fa6adc39ce866f19650c5d3440ea33fc8f383bff83787638679579b064e56aea8e54a200cd3b1dfe3ef6a532ee8f03504bde045e1103ea9617c6c13a6be76ab8f24c75524bd5e8485aa5f85fae3c951664fc5b2a9f9066acc631070ffcf2b564efd6a6e590ecf04a6510d1e66acdc85c0a0b32cc26ce26249bcfe563480abd27cabe87a35a22f0dd52e3d437f364dd81af24c165e6dd67d06ad94451362ff8a6c8927b2675980f4677b27be22a4b627372d9fe97b166af0cdd6d7af423f21cc149162d2d8f9867c6423754e2eb6fdcec52945c8c019656b9a643d0c7c1f5c238da84d9be7f86901a19982211138592c188b5424393c18c150e9b0ed0ceaaafddbf46fa78876e40dd2faefd4d1802dae09728cb1cda25367fb62c183052d099113357f412b22d414c8acefca8e0badb2ee879b1937e43f0e2b8b273d459d7e0331674303a282d6eac521b4eaa213d0981dbabc074638b0d09887942a5a6b8e8ed20666003ba9ec44a66bcac98f49f9e93c4cc9eb64792c19b77c28e5c2e2317151fe5cbe7c50d99af9d91e6a2b5676fdda05508ecf05a3f028ccaf3d8fc1f6736af83ad123e3da286dff38ab4670d22532fe568764b1cc9cb598b5c62615c6e4493cbec7b89c86d90eef557804ea74029dd236ee4376f4c4c73c1238c4549c9d2d53fb662ee4e01dab88bf9f8206f4ed91d28ef0ff6c9164730dfb2e842deb592a4d74d76e00a9ef4112ca77eb4ef096203cce58f74dda93aab9e5695a51ae8541cca69aabb5bf2d6276b8b6b2a8665854c0d26497497941121888f5a3ec8670b53abaa99c5fa4829c5446413cf1017815ac2e458d8912e64a47b5c79c40d989786d436962fecdecd06cb6b7c9faa956af806b8546f96f6b8369a457b2419463f88365b06e0426d68908dc1e01880306ef6640844e5394c7e201f14edd6e98d0cee04741d2b2a16d63db8a6823a2c6f0d82ec78d00931d8d489d670d12fead347b4e768653ee9bea2cd10b5a323e8cab0d20e5df77ce11cb835b96480269287f59e7e21b9be8d12247b6edb09dfb63d5f43b6ed82252a10cdb546572bcc2fd702334a3458cb4f1d2420e5444307a332a6475ca5bcf0b69d744cc504a53b917bd50e0e8875643b655e99f95e4e17bd3e4978788312aac4259e264fe39a250d310a15a5a660f32c398535d9462bf3e0489491cdeaff30767304b8be111d092b90b92e68e3ba9f708f33526dfc9fd13d48d9344d943034e61c08eb219995ad85d9dc39893e8786815123b45316dad57142de563f7e75a32c766ac7347aa51e8ba7f6013d83d19a0786675bcb85035da7a9e3ab53c349906265ae24d8bf61e9b25f1ea60279c6d5239540427bf6351e30761503581383d3ec3f8f5d351388131ddb7a49b6e3a780a14f64112c82f1caddddd2728e65d41bacd12d96b60867f73486f6fb6e6d2d1795809cc8dbb1d2326e5dad1e007a52a7f1cc1f577bfe72436c543205d3cca014588095b700ed825fbfdaef89fbadefdae6080d9440135ca9c976ace0546520eb44125c11ebc894cf2efb6a1f65f618bf6c35d7d1afb4286902acb48888a5e71d1b6749fb1c9357f4d854502dd2d21d10d79a4b8996ee3b5c9dc3bea7b439ed7984f0748b072d98ef1e5ee990d331139e40cae34c135672dd1c8742912375797537fe5e1cc7325a4d814d5afabad55d833c16d5c70ca6192e760712cb30fafe7603dbea8e44af3b83682bc3409e6f030793a166b9327bda8b10c76cb4029baee51b6c9e98d2272569204863505cc12d5fb6a77438e35ee1269b52305781f72f928c85a55ab061b11097aa3c86340c5f3ab54120916851cec0c6c32ecce00d68cb7869a99ce6b54097bc1aac75c2856bdd38e607caa90c2ee68152febfa30aabeff711eefcacb29004d32dd7f79e37a72b38a725ca9dda2a5843d231eb4bc1b1b1f1750df01b0260e38855f8f37aa6554bcc999f3014fc68e891a2d55de73a58abd9f78e0968eaf26c87e1bd836fbcc85ff97c08c5b2d5337349cb2eacdd47395faaca2332b92eb813e8a8a4622f5a364ed59f41c4109eb69696579da8dd7e476cf88c6cfb8f99a2327ba25dc4e0e9d0714f74087157e3d8ff361301ace9c4404fca902edb68d1a0e8e150576bf27a9bc5da0f39d189c30bcff03958aea9d0ced90bb00165f390316bd7686f383a059c82ddaaa1e2af2687aa215584fedac1a62b0f5e294e01f7e804928296c23d4a8d6175fb47d948d82a5e2f7d8aa137744795c344e0f399ea5e895929d21043acb861c39107203aeb1fd0f52781be5bf073da1bc94a78783460668c627f299412fd804e766be2d47dcf2f74ab68424239ba8e1974ddb3c0e0e8989e513385cb7b2d2ede1eddcb993f67150d805ec757085d69ef7b8acbf60949df01e220cd6821e8a6282e02f66a749bf03bc0b5600f3aab1dcf7c3d86c51228b1d3efa183dbe9597488cedeb69d56bbfc9a99e15c13371fd0302c100fb4f2cbd2ae655bd97645d59a886339657f5c3192ca051c77bffae51b9c8adddd51ca371532c688fb2b31795592fc6779b01385e49a6ad3874d955e9803bf2d9a4bb9988747e6d3b15c3a24e16eb726f8d3ea7c2343a07caa7ccef095baa2f2a898f134ced73a464363f2ac36490080f38b0bcac8431d900efab35fe52a5abd291fcbee9effd5163f97931ee3678d6b31de91eebd1ee53afa88ac4e02b9c1898de330b37f29c86c19d017a57f2a6a3a119dc55d145efcfad68ce0066aa5aa7d0759fc8099307b1ce057864d4e3e0b8a40c7d063aaf9c9b748286c2ce399b353abb02f41be5b803920132b037bc1c31bb50079f3eb0bd5338fb1862561ea087346ff802976b184b3343fb148175a6e126cd594ffe428c50bc3876f0d75fdf1083096a75497673b193d46a2b60ef5577e908632da8c07780b153d548dc51e4b8525d6e96bf0340823be3bb94435b4100db650494fa3e313a97cf2a459def232b858c23bcb9e0424aa5d41c417dac905e1840911ef981bf8e6f1bd99e2bbcbb707c67ebd94a8c9b86a720975e91484b05f1707cc27e39d726365c6f80c537efd90819a1906f56e6b7acd4ef40aedc48f2396ca87ba26ca807b62df071e21d93793bac83d660168d4e5662b36fd872749385a0fa155380c93781850e5b6d1ee6bc18466a1f770c36d1107b15793c4625805bffcf04224d822bbdd152451163081467c780076e8b1efd899ed16814a5430810099764e8d95d1ccb7c51df833c0fffba1f8623c7fec7b4155af770806c4640abf82fa0535ae1a57b1364ece314457dc7145ae458f1860493b37f87c1355611f989f0c0d3c1a45aac3e312c38d4ea1ded12a1aae6288d0b0f0b1c6137de03cd5312eacf0a5c5aea4326a6993ad5cd82e20c5d487950b8b6a82be580fd9bcbfb11b89532ad98726b8dc39c9819672e46bdf687dd4e7bf7b81a2d33c199e3aaba06966efa95d7d0ea39a3595dd506cd5e4a5725c4711318ecc60826155cbf87685471dac3ba09ece7cd45e84ee716613170df318115d579ca66db9a246e1a87c6ff171e7681a50454745614cd119c2d286598b426fdb7ebd7f6777911c1993c51882465add8aa611e9abe9c3b0a147fcde0a7c5172a53497ec4ed94d506bceb35c80c7cb2b4d4ac202929e22b20e382e2183e0ba8afed760b271d426383f92e85983167c383a3a28c2288b928fde684349080c2b05cc2b5a8003700f5f475abda23e8110955171fe984a7be1648932223f9c08dd5051427d4059fd5a12fb959f1a880551614fd3b142f5ca1bf3f4bb7e4e34b39c146036145da3c372e4c2d4cb6716840a3a5d39b61f4493de76d820f7abce007e568cee55f747aad19d62afd2e5a7e8d412b5e23fa673f3f4ef738e183b6003ac9d14c462f87ad56d0a4940af8f98d546a9871f2a383d38c2339afad2ebc353a9dfbef88f2e7253e3136e796b2f49f2e3d2e415310abdaae2c323aa5ea0a7605d6943fe50d3a41e1b0ab0ce13b591e80094eb2aff919275f160dfb38089b06f3cc103d4a1c4b54ca909281ac0732445af9a3eaaffe2798e46e7ac7ffd4825d18e5859130d38d54b1908f919ac28010c3fb5e5d0211fe2fd73480ede408601d00181b1d4539c0344ed4d14d214b861ed987990a6938ba32faec84cb378a5fe36cde9fbb1f0665151a2492f638b3375ad957ec0032f901e36a5baef216d9a576cd8354d5e463dfca514f294752a4e6ebb8691103b766ca6539a209c1acdc8d6e37e460e80d3e500a0525361afbfab2f2a8631f7671808db0f72b38129f084917392588b1c4ff96d059e466d41cf1040fcf18bceb07b1720b7f1f7dddcc2e7e29888ed8114ee58dc6933dfd303b71572a0b785e205a029088e470972c45809e0313cdadec12bc5e8687cf33194b119b989a171c7108aebafad0b3b4539affcaada68be4e134b412fa4efa518e846da07070eb81a0800a3c02a1cf24a482295dbb0b9f3f516b048c0d08e7f3e00633aef18951c7ab010168c11adf17d288cc09afd0afc06e100edc0184720ccd7c1287f268d2f04bad421b93e35bedc4da7933bf1ff9ee3ce486615ad14c614d4c2f9ed92cc9cabd3e2085799429013c51c2cfa28c09a4669d08753e0c3e58533fcb5de13564f9127736d1057fff27a3da83e2bd50542c30152cdb1022fa4c29e2ee7053535e8f3f25d541e68533d9ca98c1849762c0a511e69f4804c919c3206a34d5c0c731eb9fba8fb6c857389a3a2588c20083d1b144f242e035b121504d5a5bf3f1162acfa30c312c3bf7ca2efe531d889d20c99413400bc50038db2a4c235480a56b11cb0b490da72465580b9c8a9c89ef71d971a4db8c5456859d77cb17ac09e74c28c353b394caf32c781872f21420e460367653a9ee2d59aeaa646755fd7d5fb298474422c15b5aebe68300f383184bd8dcc3451cba5745d44b45e6ff8f61edf20dae6c984ab43a4c647c4c86fd58be093d04b4e92514bf07a528b8eb698b65062ee9c45a656c1f9453627e7b6e099b7fd214aebf36b465ebbe1e6045e4b47ea612f12036b1f0a01a4325b0d8991a0c6229612143fdfd7b979f7de90da23b890b8c140a6c9ad0c7d9ba9b7536b5de77e12b504ff598006032f15f1aec66aa56669be43996b606b8fc4cc7b421797ec9e7b71219589a5ae3ffbf6176572afa56d7a76909d4fec80ff882c5028edc4f8a6399ed57d6a788327aa7bf437d30b408d1ebfbe3885dc1ae62875cc349490a21af66f189b472907f052698ad9ac149384c641d397890cf256820df8a26318c22f92345c94e9de12e27c70c8a3fc6204f59440ae0fcc6f349e60d85540fa9d44514d49c334dd30304fa23a45fd1fa2e1f2c1c9b1e1a3e984ba8629b83671ceadaa8993fa5186298c025bca12012ae63453b8f7672cab759641c32eff7115f1cbb953b36d267402188d654823335deb89e45307aeec44f548d416771ffa5bf709c855a6872288e1836f657dc97f343eec61965ed4197610858528d489197e017d02a9c035f7c766ffb5e31a27734ae4b9e5a554aa62574e8c1a8581be640068f5921c1eb3e4690904902743d49451ce92dd8da0765e0857b099011bc1aa095d43b61d83f665d3835c408b44da3a2fc1b2d53514f43c84640e91e3bef92e13ab0b4e0e29d1e1b3b2b3e6044fde40a3d29a8f8959f3ab32a91b397386a821b162216229958c4aabe35f6d5e58c1936abacdb9fa4033e414c59b39af1e68369d3cce31a862e36134b5f90c80de8edef04f761675e543b102fec99ab52e79120619976e7e19cc9a5c949eddcdf9f5401ac814e56d73be1ee806993cce3d5805f36064def456fe805e4dac997ac321addac7af949efae0566f0ee3e430974dda9501f15ac5a647fc406f7b5b3348a39ca2b891c3d4027dab93d35c0655e253ad316cc8e6aad922c2b3c7e3f173a047f11f5bb75e704c5b4855b3d214c7dcc4cb57a3d2ddb5ebf44720021f17cdaae4181bc2d362cff0b5f64694ab85a1ac0190240014b00b106b90a576d607c7b485f4472b4d71cc4dfdfc352e9dc3e9af4d951c1fe589bc690e3d992cbf0f1d6abfb1bdea8163d44a4a9a9503318c211e7cd868d7b95397101c7dd34fbbb49adb0a87c0e1921803af9907a8b32aec70a19c7d7a7fcfaa650d78194fdcda5ffe5566c90c732f1cf78d71394624918e667cd73920eb0a4b6dea6b97c2f18896a288d67c7643ceb7d8ef3a7f1d50ccd27a71eb7b6b7e7e2f46ec50245b130f5ff89f1538408482f145bd7e89ed66b43448e3bc587cc1c167b9bab0d34412b5f0df79448eef0e2d281ba671083d3a3c13d01db626dcf323b4f46078ac406e6247d6a146946cd58f2079b1a73e5ef79538891ca7b63969385b67889d83d25dd95b9f4939fdd3197c1ae70ec63b5d67d067f9262ffb546cacd191cdd0b77cec384b2643df227698f52d735bd40a535b3278d89cc1f55bc0044486c83dd465115bf0b9a7a72bf0bd64b092629cd8a46ee5152fd48ad9e2013c5045e02d8ad05f0dca5f6c9130d32b32e859decd688fb0f0ca1eb3b3db4a96877b7770909a850845ad3d0bdc88ebfe229cd34af97f8087bff710d33c89826354567eab5649cc6c1ecf83eb4e2106dbfad11d0234eff57bc1a3fe745167ff0fbd3db8c22e45c5b91d4eee669909b12f82b404e97fa5b9571bc959e8298a9837ca7e15e1bccabdcbce59550800027c4f033f6ba451d1326342d546652f6ae312096604d2b9a59582b5df0d79522d32c432069fb80735b4b23ea2c91085d1f3f040dff690d307752e68bf2659dc6a81183db42510a8d54691ad078384da00b29fb4ae6b6085f43a883cc5d6edd251f5d7c11d3e98b71d215d1b404ba8c36290a4c140804791ba0e24577781287a501d217a0684026501084c1db28d00c79b0930ddb33f0c0548ca47d283910018612d52985b74a3f1289bc489e3b5c529c76979a883cf43c3519120ad4fc7d35610b23a5145712bd87f2d8380fa5cf6263a0d28c29ad7094bc1610c2bb2fffa21e1499c095c06fffa1e21cd59b259ebdb78c97509936020cc36994fe476f02c2cd4712ed9e6081ca10cefc8fa26da46607b820992302a5e58a681428bd00e4471f178710c5abb3cd603c253503bab581a18e3d16178ec3b7b26decff2247c803c69ffd1f235368555a76e4f8710f6988ed8c37864cb8bfd752fbcbaf3b8df9503c53f0893b3d4152d7d8b103b289d415c095bb9fc01a1c8c137313281d263479004e0135f515c1b809289a21bec1b7d5079a3435e8860d4d88f0cd532c398b80a2e6de853a070afb049cb1a1aa2cae3e1e7059368f949087dbf90d174d437fcfbdcb6a50015978ee774bf4ced6fddb8225fe72ce194ef1629a3b2792cb288fbf90ec6e50cf3b765099653a47856ae85035a625113585106a53747babc26e22ac3b9548dc7afbeae113b3820df6bae5f70626fd3886140fb3807d56d4eaa780c41e34918f4eafa38bbf90ac2a0caad588b286d5921f00f1ca0c938fd40e089b6a5b4b6d0ff28d014655480218dfbc226ee40307ca43b0ae414621498daa1c22a7cc5085861b4740eea47b8b8702093d2a46fd8a8c07824b47a49a2882ce588331d7eda9f2b315719d87db44e840fa1f3248c2605bb53e232b617d9fcb43b54f8742d4acc64fe5bf907b857ce0fcb6c36e4dfa0a9ba0610e2b8977ad0633ade99627a802d4721b7252d42dcca0c5eb360224e0dc98bc7d40222a7cc278782efa043817cc49984f1d784e0e78a154ddd8ece8005d2fd2ebabc71d84437d90efa10de51d47b5aff474a2bc5c6a905988c0c7d7a1a4be9b76b2d245224b41619c8585dd0f712178f42e5285e895edf9b3b18d4097c05f1e211b25243ccb9fa74978988104b1ec4c100c63ad0693ec43bbb83b467b0ff94f6c1043790aba29277a0f945b7e42094ecf874186be08a93d8306697a8f2b1a876876516ad1e6b9afc7e894a1f75725dbd8eb1c8a31a7623d38aa1569b90ef8a0735acc477690fdfaae59434125e9b5eff93e353f30e5fa088f1a31b748ca12c1cd81003a3de397d6843d158c5994093aa2a4d17b11ff54984c7fd4375ea733d1fe5a3b4b44e8afb502fe844df9b3119a89de761377a46e907b8d5a4fcb9c0e82554a3cc07cd123d00ed814f267eef374fe80584de15be54f4077c364383afd21f36b177b356a647cf61b2a8fb9e65e1bd7ac348492fc56e40fa9ca998f30837c187e180825972a46638604c86f50366b41dd7ac842146b675daded3f98fac904ad61ec20fdcf3b01aa5ac7bff2202c1683d50a3696a2b29f8ddc82ca7a46c9988ef406f0013b19bb5324c29eb877b5b2ac8491b93ef08e063cc88a1dc0c8d78ea364bf9fb77428c08fcac94072b1a7efd4d83edaf52bf5cbf69bc3edf93e5e0ed3bbb9bd8de5d5ec2b244f42b2693a2551a22fc255a7d307c710131f37765a4488d3959f5cafb22fea0d889b19fb5f3926e98c52eb1143a7578da95960f1d7a72491d564e04c10798870997b4eb756d3eb9b926382a9e1c77120c675f3bdd56b8db1eba3ba0636afbad9bf51263330cdc99e569d20304d0344a7f15b4e9c5213e0f114bc8d286bba88e8bd86585bd68701676ef85d6c3b02f574ad64709a9e2fe948776e5c44f66b1984e149eb9a7a3080a6996944b8e58249a4f8df9b315c573fbd55c3f6d6b0ff6369ec2cff2506dbe41cce5da29549bb83b84d350a8469acca25a166f5984ccc282b15e6fc8972d14480c832f4314c88af11e4c19216677ef09822741f68565b1c60dd1b7926f9f5cf758e12c05100a7fa2fd4762a58c11127703c32a4a9777027395bdedfb27f1796c74bcdbf9340775e2264ff7d98ef9e2c98e0c37bfad690ef8905a50a72880948da6a0b95a3e9fd7424c7b23eb76cead03720c9a01b677c9af600b7ad46d9f46e16de7e1eb8a367d54d0e75d57641965f2a985de56bf6a3678bbc92d5b92ea8a62f303a2543d9773342b7c9c13fcd0547e4033a8b5e5b0423d0f60244dcc92f81b82a6f1cddc046d5ca061de864da879f27d11ef53618ee7737fe75de535bf6242e70b0348611b920dc7105dbb2ce3fb719e6e5fcaf34e73d05804097eb1c3061d25cdbb83e878c8b261c9cee1e348f73e146cc041676f18c557563e418a9f2eced6523049c1d030ce73415d4bce06f49468c470a6c0a3adbd563d048dd306db839bedd658d26537d4601d85da680f5f7d046a1f6c21d14ffcd64fe22359a7072b692335194f72fcc6445aa7f2207ac5a4ee517c4166a3aa72fdfc8905b42e3f6836a2d9fe6d9d5d524ed53c36966d9fa3b291d5e645fd077102e47bb9e013f8d62929329271a20b80b6b00b43e781ff2697f59a717b99d67dc1082629e50db60da159a0e44b841e8489b5e04e338d7321d382027a41aae0fc355cfc1a78c0ad8ac95bb05aa9ef83ad56b2e012459f7a51da44ee618b46a22fc6ebd099a7274edd1614a75d07fad7900a1cd500c73d8abd02a4b9429f087515af3cb4cbc96da72487ae1378d312fb9cd881c08919383acc159eb43ae0f9b3b907fe5af648a41e19c2e46ce4b884712706e338ff77e2686dc32926e669ecad8ab2248b054e61c21f94bcfa206a90341ad40ed7a673f3d5527cbc44a00127b90522222441f4fda81123a64f894a0d866853516b80fd2f7f54732dde9dd6b3b7a71eeefd3ba5181ad2a73ea47243e059bbbb2b5592d1f080eb3def59feb2f966a9bfdd77bccc1127981f273e10117045854404818404ba59d7aa5aa3b81a203512edaca66361c8cd19ab07c5c422b9f54f7c227722e404fb4a33579023f6266a3d2b72b22cd91f4ee5dd9057f9b22f7eb2960bd1dde3deaae84fa8d2ef00c0b340b6420b2d0e3e717a088b64b91891697afdf48abb789d3d9940c50e7915bddd8759761626b83807a499b74b34052bc8b9e10e6adf98bdb5865f18752a0b81c8ba3fbc35c34235c8b819a51862540b4c3a1a1cbd8258efb286fd2ab41f8fb7651e9391cc66e4cd3d403be65d90e2cae7148466a068031c64df9e8ba2b80445838b572e95418583b44f5f3c14b2317637c07b54987ccc434d85e192e13d1026458b543f1001e722d72a79790aa8b641812e6499bbd7c57163a0d76d8e948168595d7883286bd107670ebc269d33b78abb346e47f7060e9d5aff00c8a02173868ae731134266ce96f8b6090fd17cf1f5e3b005e537c2958db52dd4de142cf0da4516aec8f5a5a6b10486017f17d55a5c107abae419b58a3f7f45fc54a4f581ed9aa3160bba3c40d29be65fe8357aeff9d2e98ff0425854229c8a9c07481f27e1b3dd73e9856f478e880d590abe5713abb87c96e475084559b0d695826b4658b5d004c35ba0bf2cb22a1ace1aace21c22f6d580827f17de74882084d80334b367f0900b84f752d25054ded964f572be384584f1a8213425845b5c57259acd732b082ab4e4f9d58e25a292e7260d54cdbc3264872276d405c765b991602402385e713a4bb7741e861321b4e3e86759589871e526bcd3b1f10230a273b8d033b20e88591e91f440d15b159a115e34275225b2d80873690c098f789bb0025c609e97d09a2cd0469b611eff9cded505a925da6191f54a6b4cbc41e709ebd883ca8ad01661438ae9f5224278df7ef01cd590db17bf381296cb0fe324956cd72da241f4ef2a88533224b98c4163fd6d98e05fd3418dc24a70be96df6720b09c03c0ae02fb2d514477dc0e46fc2830508eea27229ddfb357d0f997c5417b11c5e4d3d26f55cbeca5a6f7cbb420f08ea0b3fc2a7069dc62bc662c7d129a35d097dcfe7fe44020a732707da32f6a5c44badb4c85e293ba5b893c1928ee160ca6f08825d6dcfd538614e22610ef0fae8c872aabb8311fc7c842183294be61165cad509534bc0d5baa9484539b1aacc52ea538cc0ae06be601de7375ebdf8e5d910ca68703a485c3c90166a6d38c3927878c5bdb5715934050e6ea6771e0b82d778664619ff545a89abe98d32a0c966f20069e2c6c900a16e0c671138fba3641b164f9d3fac6654d7a27b89aec8d5fd2f0b79db9232b2f3e299c521cc072b86bdc28b4f61b9f0e5e71072fb94fed132f6c97c6c97bea1342d78e757360bff60a95ce8f43bd54746207a63281f8497d9450220de1269cc599a488c9ce309f88e20014144e71f1f7829c159a57b9aebb1022df3a7602905c47c21787f6db58a64b1c040e13a02230bdba825555bcbcb31011b5ebc4580103ee1da34208be217e4d3f02a93811769225ee035aaa7e69079d5f726688047293af3ab5412b702a09bc793747a4a78f2337362a3ee569493e59f40528a493b60d9b982b4b0f8ea2267083d07d3f42de3b46d1845b0ec741c562f03316cf1ca343f7241f9b3963829c6f6478339627c13c6fd9da0fc69ad74b4a5ba7246cb608047dc2c34b43f63f1fcf1a28b67e36fdf9141855046f5c2b1e6b348dc26df9893968ff2ec0e5b13ed2bd7860e4f910e2beff458c28ad7057736f493824b93d037fb7df65b801dc2d18d71bf783dd9a79f18677f9be45b467e7ae716a27acf4334c3f80049dd2ba45c4205bc1a882c0b71fa658886ae88627c7452d62a63371d491410176052ca4f3962f21eb35e4c95cfbc281739e0ecc248e53edc17530ca46732f8abd7aaba04cf68770da2d83fb4a262d4fc702d96b24aa5fcbd1dcbe24acb8eed4b34c225c5ab0c053bf9ba1d0f39d73174cdfbf0966a559f3780f73d769cfd0b205dd45336b9439898fdf653a163b192fc8f089443adae7b270a46e4414ee4a6cd76fc464dccc9eb094f0544f5ea283673d2e35d488897ae162247594364c8835351fa406e9f8c49334366adfd159f3b9723c153d36be9dec479e72b246804ea94f3a919a5b8de45a2d7e5faa2711ec1c69041b551d0b96c689b2573f53b649063032c2834b07f67d6da41e8690fa1969f8f3302cf58a588ee619567682ef62e8dc8148d16196a6cdb8ec175be2c6f68f9e6028eeadc1bf6e34ab480ded9b6912cc57290d2635c110477474f5b8b6e2eba6a1d675eecc559d352f49935b20bb98c607bf45d2f15a51344af6d0ba9ac70a3e690879e9e5eadf7c1b757a3013df9216f3cb3deeba7761495030087580a6af0cd4d58cfeae97d3a1731523a414d16d146da89a83cbbfb054b3ec7d36019eebc2b2ccf1f0a5ae2e5db601a076c064486c6857142866fdcdb002ef6d6570b2bccdd9f1ddcee28e8667b3c72238d7af625cd00bd99e551f4573efd099a4dc408299d5d5cb3cdb687465e5ab4a8db7625f305566291b561cafe8bf548d276e492dab7dccb676df3c528dc3e01099fb468d26de9d0f260982e1960f50809ea2a6a9e2d49093049044544bcd8f34a317218ed4559d596da76347f9580b62281f6424ef48409f82b8e4d2d187d91898f37e45f3e800fdc3fa261b98cc445687fb8182ac10516977c0616a550508ee4e4f90cf51fb12e4ebb181ee0c176169a5ce1c2fc82bea0eac1aa6ca52eb6456a180422c48c14c6123233cc75f188468d808e3ce37c3a4158728a6b7c91d736260b783ec835f0b2f0b3898674c2bbce07e28b83575656fd08618ec0850d7ab9d590cebf8936aa54954ce61356eac086d6e1b1d3aaa8445611ce1f092fdf1b6b8cc60ec41591180fd41dcf8c1c5003260744ba35c703e015c7fa7328aef2a558e8dddef63f32d163dbd3e36f1f490179d50e1e17a5fb2c164139b0772f0f23d865d33d349e382d2742d8acf5012e2c55273aefe480091947d6412e74bb32699b20fbe55b58a42eac552b4879f392cc5e68368ce69506abfd9535da147149f8fac265ca552c2ce64284741bb34a62865e05e4c76722b9b99f41b6611c3c1eab5e6dc2e91397b2f3a2874297e73095f2c4f2e322c3cdd67e8753e759fdbe6e67ff1e8a4a316f445e3c649f949368e4c4f51df5b40039beca186bd9c26fce9bda69de8360b54d4dccb4bbc5c0d996e84e96d6d901a85d362361dca986f7bbc2b0d3a18eb1075b5d4972dae7442711ce938a9b9821e1fb31d546c05185db7413a15de57c18c6ac763d7c0bd3d5e02aa7d5ee5f5ded52ee1ad39f028fc6bc4e99f578a5b6fc68497be0aace77c73fd88513627b732ddd9306e153ed72f6bd770b48daa2bd9a51d9b86b23c02a13788ade4c181e98bc58b0fed250bfe8c1cfdb8cb89213baf728131e80a010719f496f2cff56eb7d854c863579b82a7876d358e2cb7f5894b1d3d211f2ddb0ee4da6967eee351cf69176622bb6a3ec6ae8b453376f061a83b77bf6e61eb13848a2fbf3997f616f2016b7732862477ab8bb42745a55d46ae8dd2da4891725860b3a351b6264c372cc611a2bd06741b8866cebaa6bab9362091c0965d44f7ac6ee018521d15259cb42d02f40dce3faeaf61e56e7e301ac0e488e5da1eeeaa9113f8ae8625ab078c019757a9b709ba188d358b746ef96946b9dfb5734dfdc937933339b71acb4d0bde5c1852c4f6079a1f5280824ddffb3b68b7c415d7916297c3297fde98be4e794f6026982fbd4f43b3085a7062fbe87b1a709192b16156b79d61680d1dc278580f23fa39f161639a69cf1098ed8e551d7497780a47d0ced4d0ff4a82d6f792960d7d968b730a97f951c2c699e79a3822a8b00396f98348f25dc30394bc0e18df81e4ec03ae308ed10e17427514e81db5282f00d1bad556931ed49fbe5f12ccdc7134a45942924f8f1e591e43073f3a1aa1cf6b519dd6594cef282fee1efe563078f979a7e69e261216fe505aa04ad33632f03104e9a82b0a9c9b1a1f53ae967edf5a50c5bb288f0301dac5057f95b550c9f611253af2884aeeeee3fddd701fe94b22eeb1f5b78fb46c7c1276f9f344066a4332e9b767d3d3cbba596965dd2c432f53d263bdb969b37cc43416f3d267ad39235da6d284259379e99a4e8b55a334e6d246ee35cd1c771437416a25e0dff000149b6f036ce7710a467d45cb909d1285f7da885bf6d8b6ecc99c79338076d4bac17a642fc3346e4ee6618d2ab72f4a5c90b022d952c265492b49d664ef044e772b092c24af94bc926845c2b2d49f94e06645d2aa846bc956122c88cec96db1aaaa29aa2cacb2aa03581b4a46c58cc20c051bc4097e5e90b022f1274f68571510eb7ca43294aacb08a932e4eab32147e9ad174da248b494abe64f17ed536d078843571d639af21f2be19802db236b0fd24a7c5939c704fc6a5d89956829760c00ec540597463458c88e6403fe62dae55a0f89f35e75998950d770329ee9e955d6d84dce3a7b0da49eeb114c2d7aad0d75cb1a1ceee36bbed373665ddcd1bf90f3acfbc89c2e01e53a2cda3ac77dfc641e4cda9b06db5f3637886bf5d897d8684756750e37359e84c94207bedd90f7791ca0de90d5f8508d461490019889003b7d0fe1cf2ac44bb7d7e52dc1cafa41a56ff95dc515ff44f3cf4a5904b8fa14b37b357733e88408ceed0812ce2123e2605401e499e1a94a750bff13878968b0d2f13d892297f27f9095c7b28bea2f0337860b04a004559255200534561902763f2f2262768c54c3cb222dd37f3684f3d1968807454378989becb0aeaf058d6f0d98953ff91101d1d371219afbe7591e37fc3feb3772737f8890a4cf58434f0e9c90cd659c29bc44557becd6bec18a1ada1911dafbf38d84ce88cc73411411dce4a6f241e0b832573bc355c236c981071b537cbb81a759a672d0270e63b5336edf86a0569684f70cd739841cc8a0492f3038d6ab0de0c8fe2803a6a018caf9989eac6367b4410774977f6f03750831145684a4fb4353f5c0111906fdf4e1aa0b5dcf7ea306b82c6abd51cf2c7fa88bb074bf6af6484335ac411aea35a21f8f3627144efa881973d52f487fcd37707fd25e76e0263732e16601635ebac7663d44728c636f643728da752ce2bbd01ce26730add52ef319d0ddd0ac1faf40c58b7d181b1112655d09666eeb298fe7826ddcf6858209f094df576e1cdc65c8e753dab7c1709b8021eb6128fee01192c05b9a614cc58d5e97d4c9a54074bfb13c8b886914df2b8a4726d48b4be4a118a91bcda6fd9b9712d0d296781e33c6dd2feab5e0658e28694c05b29d58806f63e556c747cdf1015585a6659357e2c0c29816dd21310be3224a92a54e8f1a9c1b67331a7e26455df5437d73b5b7572bc3e47c0fc91bb2efb54e28501f6125f355de049f355e54831b38fa38cb7c8a3a7a395b51e2af462f9276d1b40018aff71bbc31bc47805e81740dc2b59e7e2ab41eb332f739e2886f4b67fc77c9051aded8b351922c15d7ecbd591841804b5478ba93d758ee0bd9de963080a72ec5ca257321d2d33408d75b41baf63630fb7082737967a48b774bf806dad95c24bd762cb7bbca587f068e9b1c1252de9cce998e64235099677e2bd3a866326cb447e87f3a04743dd50a38a723e776e98cc279d79378ed83f8421a1b5af28a37fa6732936441121daab432e9e873c512ce8a17bb3ad1b4e609d15278ee29d2503985d2266d75e8e1eb89dfc6c6edda3748004d87bad3515a961a3d00eb66f47aca00d25ca0a3c30a0461ae9a51d641c97b5c75cf1584e2019dc5667d35a0061cac3cce379ee1bd7676f17b2d9240790148fa5e0f0796e71f01a1f216aac2c19649806d5343a79d2724f4e56be1ba21024d7afdd196e15c18477aed807890b7e804e88f4c05042f0db6e12881d0d08cd1a2b31177d53242becefdbbd85a438135fb8e0823b33deb5bed7de6ae5baed5b5aaec78d4caeb36acd5e77f1b4f37078d83a55e947cdd4ee480d1c85d935347850cc2f8bd20a7bbd94a48e0cd4a4982710ba04483a17a5b0a9405ceebf70013fd36bb553a30e0106ce6d25822494860e5f86dc604fe2aeea5c6db5f0f0d29fe76a7c9a849f8eb2fde861c467c416664c153c1d931d0856b482544de2f13e7b7f7b468d7364883b882b927eab8afefb24399b88760fe0811a898659bdb667d0ec9fba1c4faeac64004e206bafc50f63af9de04941f30ee0952b02c7db8645e17289453c15eea83d11c345b5ef979c4b8dbb930a61217f8da563778d92dc7ec481953d4487221c0dc362b3fdfdc8f4751734237b1a2cd4b12453f526cdb23879f25407fd72df472760108ccd7c71865587318eabfb79ac3a26ab9e8a3e82e8349616510c76ab7208240b419e9326fa675c14268eca0f0a6f4c221d22a77a8cbc7d0caaa4b44f7656477d74222ea625c3a082e687ad7928be29c45be867194960d465813b9e6894f0a2424ad2ad42b8399a0795a3132794684975595cca27311a2ca223f8c90d90678a28f15a9adc41d31adec8a7d55cb7222679896670b34dfb728b1c7492c380b957d752be937f0acc0ef34c8ffe10219a3a0254c98a28a4ecd0d51c76c5a8af15023e096b28e9c41040fd5c423c81150dca1a9193462395431d0a53a7555da1929ab989e15e0ad2a00a4044887857e92991caa29603e5bbf373ea639785f7c6ea71a4a964556aea92239f2b190cc8976e7b6ed0da9fee3b7d3e8a1c50c4c9fb000d174a06e2780d3c5c73650eb959782308b1797214049d4adb5f4bb87469e89e904726d57ef38216e1a79ceb590723d5f8a86e35e93a9ff5f5b0880ded48025ae8238d2b3a2c6eb38711fc1ee1239c5172218fe2b22f0e5bcc7fffd6ddd5b29dc884c3ad9cc7dc08564baad90e3ef0b70d09f1131933248b7b5bc6250d88e52fe3a311cb54e4768841bc3b9f718cadb1c8111502dbd48dfc7c172cd81a12150b5f0d95d207a0b45e4bb1a739bef565a6a034888a113be3aa9aec2eeb1d5e0920c21af9faac4958ae8b9ac7f5958662055506cdecbefb5985eb2355aa96037155d939906b2c445c51e75383b631dab2e0ad11ef07162e4509a98e5c66464660b2359589ce8eaf9325b213833bccb62a7ef3f7f38018c81abcc32b79559ccdef1faad36687f061de1c88b2e8220d74550a4823c554a94c1f0e1412caf105ec3f427e8189dc159210df5c4e858108459657268135913681478a7c9e849c46c98d30a54bdb0d9f60cccedcc45842acda73fd1194b6370f60d854fcbbdc246990a6bc8a136b9374eee713531c8924c4e51785d38823850d1a6981e1029f567405bea3a335335c8141963b636520c8bc853a5e920c266b8d244e5ddfd9748bc7db614ce646870c3293daac2397298aaa00d80cd3fb283efd11d575d664a4210b9b039c069e72f2750c7f279bcbebc40dd2cd216fa93096f3eb8c22cbcd7c3df3f353bc1b6f913f079724b5a6a498b5a9fdf2d2005a23405bd5df37d13d60f80230fbb94a20d2f1d14af74c56d6b056b0c67f396330dfaf5bafb9be648d3f26f13e43b256c0401ab2d7803d493b64e1b0c485427fda14b04490bfa1b4e996d0ba315e4c6c6ac582d8132d18314cc003b75e5d4cf439d9540d7ed923aa5b2557bab59e40e8bef6a6da1deeca85be85ac75d1c5e1760d5a13f2d2f5ba783aaf404e8869bbbb0a612935b3ea2697a2b74d71451f3a0c4aa6ee1c8364b772915c1bf60c436ea6ab2b9426cda5d4fa2e3d352e5d39864ac8f242e941b388b403cfb46dada8d676005907fa0156de88ce576df42c30ab2089efba557f144de847ebf5a74514278e100cffb4d1caa9bf55a48b9e1b4efc238faddbf3480b7989ffd784d967c10f546d3772e8d7a03bb28cadba08b3a0e6c1018dd3b8c3130eb4a0235eaa2536b441b5bf8eec6a7c36bac00568899731f88bb44b7a7649ea6d0436100a373784c602148c12d9667e375965d5a72c00b708effaa8d63d128ab61858dd4c79f51947fbc1a5c4b9c833da336f23582df86e2619b05d18fc404e6008da8a5347c033322047395a894435c0666a502b0c0ceb0202ac4f76fda7f542cfc7b6c548616b5c0a245bc5189b6c872ee258bd6fe7df20a82f08a132d5410ac9a5b7978dd768660c036fe0dcda36b059b73006d1182e304487d0d6d3487555fc0615ab33ffc8a12100f9c80bf89f172ee3163f080e8394e09a58ded2714cef3b02ed4016b985f96da3724ad318623d157a50558097283006ec70d70e0a853ae3ec402490696247bb529e313b49225b545ee897e433d31f01d14cd819e231c83dbb7c4f422735803ec4e4ad5e710d14ce224fad5b3ee03f2d42544b88cb5b9da9fd7f59407b6b629e0b1aaa25a2668a9db37ac38aa64582cd1685eb2b8a8de489ef817693bb53000befa1b2e08a18ea2279e7bc892a5eb1f23db940e1d8dc953f70911052104ad7532a64ed5e37b2804b30b41c862baec4701ee08dcdadf0cf56900ddb8e5643cb85ba0dd953813cc5409918aad0bfd55f5b1c71431f54864ed8e8aa393ece31d2ecceea0a22c16d558a1a9ab7ac2b5f04494323c7e46ece543de737db1d642023b3795f2fc25dfb83aca776e9ecf792d1c963f3fe6f779349bd5c6dbe8ee7616efb1e61fd7de62cf48e4714d175610eb6d209b704a7f07d2d59430d3cf10da4ea7f000a49cd90c8bfd7382edf64a438d3b9cfc1e917b8296a434126df3df239eda905cd79fca0ce858d333be9f4c8602820d1dd9c0c9724215b097a2bb8ad8b4c0c89ddd2d208a700e66e1608bd0fb503c99efd5355f1b7f5593dbe57011bcb076a7383da8fd7682e55066789fcea24da3e24ea8b3e269ddaa8f5fae44da51c5f60910dc7e2a2e051a43657aa34e97dd58e127f5414e42b465a57d7335fdb374d33edd6d7052bd66a76b624be75d992ac702eb7dc27ba21988ea799041c009a6781ec39c6c87c46d83fe031172d44a441745428ab6c1365f553d2c8a6b25031be3564c6a38f17e933b7bdd85738b3bb262e05f724a177b65d1ab78a60bd6d64bb2eae3136cadeaec77b1732b999981cda0bc55210ca23cbc99c424a0f0622a69798acdad83e1c115ddda853977db1e6cba7a58f44a61084c3720ebb8ccdb433ef5219f6090cb82640455d8181dda32d1f4bac2281b352234884f81c3874f9fc2043e8957593a4114f19fbe5bfa47741055542abedbf501f5bf5957bd21283aa08774aba7b8a5b889b508c970fd57ceffac29a94dcc5ec8c41dc7accfaa6d55fb908d6fc754ef8404e82938928d28630030b6dbe6e3db882b39e28ba73e7b1130fb4c2b561a66ae9859496215e3a65ff92632595cdc6cef2e0630298826a666319765ceb3bef2dcd44f536f6564f6ada58bccefee0b1cb547c7ee2d0cfd4d88de4831dbc328acfd3b0f0268c6e277d6dfa3b150264a1bb2799d719f8675cb502c117ad1f5bd2b289aba5e98ce84aab22879edc2910a6bbb997b04fb90c5ebdee0f4394c171a494c24a46f5f0d1df2c8b325ea32beacb1843a37490a4249d11e4b4a700a5680a3295a91f48d875b3b34a2286e2a187058dbbd00000c3ccd148dae590affcc5ab1efd0106d591cda3192043874360884b5d99595067f22f8cf9b73f0465b38390b7b613741b92382109b8ab4aee72a8d22be12b0c7b197966fa1ab5f9e4388698133cba7028e08eadebf1b2c7aa125d8e7b4b3d3b531526e638d03888bb6737e7eccea941fa62b865b626950de6fa43c325170dcc0ee13a7cf20de95c88953b2e0b39fd75bafb8c2877c612d85348ddd12117c9d34ddbd4f71a5c7604be6a29f0b4a443af18b83bd38b35a582fe9f92360027e0686ed46b7f31dc5c5a6f78c0c1a341ba5219125d649ca044f29a73ce94e247a7abbe4c39d1a6dac4d82bb287299252a92f1db5c4312bb806aaad4dd7c7b3b52045637e8b8baed113f04f0fb2b395012c4a9f735a40f436e3c914ff4660205b0506406157f39e5f173a65b69fe1a690ec755c58f882376f722761af160d6cb2d26ffe0518f51baeea0f14696f81e688c8247f00cd469df0ec7150c0111b527086cf72ef9b6baee1ace4aac14f79b65b035dbeeb32b9d4caf0667dfbc537b02f9a8018996661ebb0273306675642d00dc541d3b32223a1ec9e59b0e4b6dcf00b60256d2231d9cd36e6dd2b3f6b7ba70900fa724be10d03c23ac5a3dbe88b41b07fd01c35d64c59d07977c22401e92112135ecaa62595cbe9f83966b85ea0d12fec05a0ac28f4d75e79a465dc1ee154a52b998a4ba27ffee8d8f8d9d4203327f90889dfb61d8ba85815174e6c47b1f05c4f3e2284562c8c6e41fa12c5a5146637d049b422610095708881f7836b57007235442d13a60d245d3f3a324f546aeb0e9b4924ae1f771f94f15dbc993a8bc2ac7f87572419fa2802ef9e321577e6ed1a71f1e3653be38cb7f4fdeb45622f6bf23ce5459ae7690dbdec78cc2037abfbe8b58305c554d07991ca4d7dc109b29a81b026717a1af3fe221e0929dfc22d6c097f4406a07a44470b661ae5cb9c7f17a94a64160c09201e74825ca2a1257cc0cf16ae92f5cfbc3bd889f264b0e99586cdb72ef2db79452a62403aa089008ae0858beec6c58397df69c7346165158822cdf6304c2bba9205d7e49a69ac5a2cda2436468a9542be8284904a8756c914d9bbd33376dca1a333736ad661dabc8cdb93b27464e5efe6c7c22ba3c9eba3d3f1de9b264acbc9a0cb9796e3b42490e5d90d0c932880f1f7e386ad3b12347912c67c8a8317363d39828a94c64ea114d9828a1b552264a98286122d44157098eb343e0f85cccfd8525c82ea55fb77173b7c085b3cff216b58f9ab7439e2a12f867acc5b8f4b4ca9851c3512db14c71dbcf7fd931f5124ff5e7f4ac3ccdd73c2c4f31a56199d2be5a65ea868f5d029eae564920a44f242839fe0f124a7e7e90e0f9f9f94922042404d42735e01eb2e58ea9a37bce1f8eea1e2b6f6f8b0b0c8c769ae2565a880f9b8f1ffa6d8c81d3bdaae9f653ff8a0e47f5d790e1a8c8e3fac9fd336e7c4b3f8f7ed00506464c67f5352709bbbb76845e2ee59cf2f582758ee6da8a8b8e6a99499949a9454dd43fc39b0d5c6c0945b1c699939393e577672325e62f77e150bafce200fb8f9ef434a37ca18d81719540f71833d7b7bbbd80512fd0dd7d3c00d95562a4ff56483305490a14383a76d0b9ec4647d927608dc3a12f57ab5b2ddaa238381487b65a60708a437168a5381b85a9e810174483280c4661348806d1a02314466114f69c4cedbaaeebbaaeeb3adabd64aabbebae93e0b04bd201754abaee264996dfed74b476607cf15ff1937f77d3dd7477958373d3dddcdcac562b7b7373d3852659a904aeb2afaeac565729d24a0be827b73b355661fdaaaf9d9d9dacbeeaabbe549cc061bf8482e8cedcc9ec4e0a942bef2d48e04eae0f8e3a61fcb24360773cea01f60f6fcb36015fd20acab5712403b00d3894974b49215d5227a33d0e107415990438e33ff91620905554c175a51cef6f5fddce8b3d128b5c3f1b78f6cbc7c17efd7639af243af1400755349b4c6b564d5de49b39bfed759993b73d51e65ce0e0e0d8d8ccf99cd6ed80c3e5703b593e57699db27acd44feed9d64ce5bbabe80fd0ed9c854bf246793699ccd8c9df4912f1752e0edf5025bb247069a3808fa0b0bf7e5031f1c943e1c949f831670c8d164f93f1c94349e02224f353106fda1527c596d2f99c2a5ed377083d962b6d78acab538202ec602c6c1b816d7a21c8c8371b030e0b0fd24a58b6bd1cab5a490dcdddd2caec7628cd27d2de48e49442372bf0262cac693bf0caec5951163c4dc37fc0ed8641a82c57b87c8addc07576e5881726693ad4e2a95aa025520ae5532e53eee99caa1c0351b18932bd05781b8fb853787154889a75cfce431468df8d28a89f193c310c2b3be9f9ca5c511ec433fdf41a928def413fd7672f78fa328f58b5d886e443732e52ff9bac92f3a99d84d29ec93c0dcbf7e3d811dbfb82f3a197f51da9ed7c96894725db91694273d89f4a44f79d2471a282b1ee551be20a609a098fc2362f428afb242c593304fbee4c9e50890cf8dbefff65d4913fd5665e7a183c8fe5d1b07e57bee5cfa020e259016e6ce8e112b3742d5acb96384b533678cc562ddf0f0f0b864ca5a8c4ba57f10f4c1a1a8d5e211f1885cd9acd9ac97a7d592a9596416693511b15c3df4b5b7af1c8a86d0bb7265bac17e1c65bde6ce2233e7f210a1353535422eb62ea7713528e096b518974a24ad85437f81d7660187fd729e8c051c4ea06cd6fa9a401348a6a41123a2d64bd4f281f108993c3574130911b136cd56232d262a23b552210965a262a262a2a2d73281437fbd3c11ad58bc70388196c8f27d8098ace24bccf30e75ac9b869822e5f00ea1e4f00e0d49203f49d257e7675304ee25e24b0acb93c8c5837b04e03212026fd9cbbdc65328df90ef0ac9f2ed1243581bc0cd86b2a16c287b65af4e664356b552f9c13fb098f6772553a36f3534e41351538ac84444d96cc6185fc39c89294544b98f07752a8fd9cf5ff1453e0c0c6795c0e16d4997747153cb382d63653f95644a5c6dbfe270f7574499929a0531319229e93682c5c4487d1c4c8c5426466afd7030e129e2a8ec5b27c6a8df5ec4c18e91e1a017c9ed4d7c284666afecd5fd886cf000603197ab87071623c0257da354f771b0df5fb97780765a3265d231ea2079ea1f7ddd2249980bd3c9dc9683f26f600206f3e57119e00e817b53358d8e2cdb2430eae664f95cea661b736dab95a56d5996f49110f8fe4806788753eeb7adebcaf695259863672300b955a2c09d4279f9922e791a0981b31fc900e76839bc95b41ad980630e6f2b0721585c7ac1c4dca12c7b5a2d9e76cdae74a50574f00ed99a9a16aa067644912cdb469b366b715963c383bb11b066e2c3c487890f931f4dcaa197c578bbf3c5801a2f2e4c36e0b662af562f07dd93f84f967f051cf6cba5cb41ef94ed1170d8afcc6fdc1b9d8c7d4aefeaae6ad72760edebd795a366efb491b913ab672f26954eaea8e36192aeb5025e0dd55c9b4db3a2d5a6d91650e59ed48057da5babe356a77d62b98d706529ea3891a8e3565ac04e4665fb4cd4ea64f9da67a276c77e3898c4ac8e8a8a113b4c62f47130895126314a3f1c4c802ccbb2b2fc110bf06d2259fe6805d8bfd96ea3225f1296a50bc7b54300657f3b04962ee96a9b953cc95f616c5f1e63b48f83a0845d97ae962e69773cd537f224638cfa53c904ba516557bd2dff6eebb6329454a37cfd42218dbebfd0ca900143ba52acc5f61bfa5e3dc404ec4032255ac9534489a8104126224ad472b00e3551c5182e53a46b736fe4a9e5a80b83488588ba3511947f716c502e2bcbafdf5dc517f98dd345a280af4e4ee3dc9df8227f2ad1e99c9c6dbee66a755777755717c78d5ecd1c046e74d48b1c9fcb717b986da54f9168cb610ab27f4db2bcaa9a268eead5cab3f901d70e816de25b085c1e2442f9073f41017341597eb4429ea2699a2047f96f9f861f848971a71f0f12187018617953e5e841831120cbb755f899b9e182c5349806d3603df4605d38d46cb253946fa178cdf9490e6f4b0257029d8c08091cf64beb39915a8fa35e3e9a0d8eb1718dc7469ee4935e83828cb7628e4ca17cb7f5a1e6ca3287de964cb58fdb25e0190ed67050c616d5588e1a4096af0d718d488a37f29ce479271960692304c8956442438eda3e1b31377114cdaac651b2e4607da056b2699f655956ab0339501018db15474514c941e7462a3ca30305c9d6e60818c2451fbe3ec9ebec0310164f63f162ee98bb039fc0ef3dfd1d4444903eca737d61c020fd8caedca4394935626a47ec89af95200421819444fa9a88832c1c075948cd422235e9636679faadb2b12590084d44251ba964d928fb982b8b87af0f40484fb7154ffa6cf8f861da82f44d0e124b3f8944fad9c990581a6612ddf0339cbbc16b9217b3253d2591fe844412fdbf89e491fe492c9ef7e2df73f19cb7f24d04fd26829fbe95a91df244df5a5809464a21915e4525e567b88aca93482ba42f0442a5a6584b229148241229e555be1088acf224924a4a4acacff04bf2547ec5233d8b97a272b5cc71decadfe099be3bee77c418359b5cc4182fbea7fd996e5b7c3d43b9b28eeea429974ed2ad52c5e4792eb97817a5d20b173894fe2bb17cff4aa9f42d5a985ab4f852a9f433dce4852ac82b1f3b99120b2fe6162c2dbc7e162c1fbb15962f79fd2ca55f5929954acfb2522ab158f94220f2ca974a2b2c58b06029792d7ec52b3d8bc7a285c9d372e7b9e756ddd07dcc256f7b16de8a6f669fe28d3eeca0ccf80b1b0699fe8927f242306f7f3d1bd1b4699f35651f8b97908c62102325c5f8616f19379ac6aea959b58ae65eada6664891563599734e210ed2b6a969725bbbdd5a106efb7b2fb7d909e320dd029eefdf6f5b5b01179d7a607b517fdb73f3672773b2a285e907627238933dd0bf3df5c299bcadf8f8e3a7997d0d8365130b561863fa583215e9b3f8beb07f851782d92587ae127d76fa88c9dd6ddb6249337998124f1f7a602b0cb915829a66c63240d3c3519387399bd0d04c4133450d17573e8471f121f8e2c3ff0f4bde079ef0e0993e27ba4a5aa88584e8909048d41d955017e2e307aa7556bbb5ac6ae089ca5300f8d9a1bbf25ce15093c3e3f0f35d488b0edff2f37fb82b2ad1a1c583918307e3e20848e1f05d04005ef4930a070fc8d01482c1687eba49b354b8590525396c25797edde99cca42e527c74285a39d4c9dc2e6440b02e4e4a40aad9ec286d26e3a85cd143699b3f7b2f809800f6172f810d4e1c3073f2c9d3ec401f866f101f04e1ee8e9e0e5e001c08bf2c4f259b7c374703e8b0ffcef0badf785f8bfb014be0b962f84c92be00ea73c1a0ab1e9861c799abfe20bed6739e1e723119c4ffa18510d73707eca142cfa95c5c98a9fe1dc8af939728e68a99b6971bb7b80df1be435cdbb422f4bbd2eb26b7a138bcfe4cd18212a683257afc92bfd0d5e8b3e12513182a49fdf309f3fadfd51a9f45cbd346b9aa63da5345441ceb429d48f372f04226f742a6902d009e420a54f299e410e528c7f86779d795af75c76b74dcbdcf5b25fe1b1f8ee6e9e2c7e967ebee7c4182d7ebeaf640a879f1f65aae5fb0b31f7a29b61e175e6feb6f5ae67df9515873b69cba51300b7ca1cfa59789e392fe6d2b3f0b8fe16fd256fa7c58b12072fca1390cca9b05051798e63c1a978e10f2a5e57df6902709f79dccf9095f3bce520f7dd598b543ef3b8af2a222d8b3ccfb1bb9e1dc7515a9ebfc2d3b2e833c90be511f2fc9117e28ce261efc453d988364cdc17b3df3c13fdee29cfa9699afd194e637268f3eb851720062c564d0d6799c031c6971e2e2a1509bb0b68c780a5941e639432c618a58c1f8e1f76b0893410707d9be39b7e80a3bf76ed18700903a46ba5c0560a0cc3c1f86e810bb8fc0b3b062c062cfd630e3190fd9b39f1457eefa066b37aaf4864d2d1d1c85e94c3ce44645f1015d0f8fea6cc952e9184ef5b2670fca4779ca210884c330ac220597e734e5a6bcdb2cc5aabc1c8b868608c9b8ce5e8c53af8aec8ced2dbe1a00e07bd98c3c118f3c37c129e21c3c1f8b809ccc9c8559cdd4ec65a292795524ae9cdafd2e5f4b066f202de368ebbb7eb4422516fa21008e959d67113752109b2c39472309f9ada9b45a9b777975ce6c479e518016a1da06ee5f9d3723bb385701b9535666ed45a8914c9d931326bada9eed51ee9b2565e2d64c2c853de642e79c6e419c4870f3f7e00a263478e9c3cbfc70c1935666ecc4c28cb84eefc5a9110121212126a125f629e3d293a3a3a3a3a2ed711495c2e1d97cbf53262c49fdb010646f67b9d55f61013332525e530a693b154e06e87ce86cd273b740e9a169c5a606d7bf1a5df8b2f768ad9d92091b6ce064a04fb51620844f6ce06f60f9ff4b075110835bfb72315cdce868d2ff1253e6723ad99dd44f4fbe9479baafa310fee33b32ccb6636b36cce8b67ac95f4907792f8c36db4815aa8f2701ba545b88d4e1e3d3230ad36df8a7ebe9d3f7fba58078495e09f7f630cd69cf8a4859ca6c6455ee791fc34bf67e55d5431357278e69c733ed8393bf22687305a55c8c9b387b050dbb7cd9cb30aac3c1fc80e1d3c7acccfc0644264da4ec69584091126448814b91145c124c624160026cc6edbb3fdb6f46cc729452d06ce2f886f7bdd5d27e1397b529189879afb2790ad836de0e88c317371739745d93a6abab8b91379cf3833511b6979cde320fde99d642ebb36b6935182765b07cfe7b6eb5dd7cce7a2c87e480a014fa62b59cde8cc649689a4a6a1a084bdd34d88def54e7ca1cf3205066235dc95ee73608509b2b1f383c30e6a75109ddc173e902034ec9d54cad39596141e5ac0e843194d1ca4299fd3e8c08c648018c69fb894505ab0e89bd97e2ed4432c43b8878341648038482310162a301099ea9144461f884c794f4f563f53f6ca326b670644764d500b35f1d58fab84bcc6594397ab4ee3363e24d3af3f5cae521e97abf372f57a2b5e8bdde86bdf41de031b6a42b342790aa3f447f651ac7d91e7e208b0ef369e123d7d67397dbfc139f13c91877b7ce84a101a4a29cfea4748a61fa98a7e8f0cf8e0e38726a124874d24531e376672e8d8415fd6e8feb6916e75123e997ebb566877b90c0d4336d33e538669123bf6c3818621fb35b336c3818621340ca93ca6796989bdb17340677fcebd1eb03cc58f5d047ab0f2d4ef273201884258086e02dfc0a68564ef1b647fbf418c11b3ffe0feb094c3411d4dc09eef192dc1ed96c8cc8931be3c733c79674e8cf122cb804fe040caf239f9f257628c98412260ffee6e24828296f42ce9692f4e941c798e10c9a42335a84784905266d6092027866c8a8fd621b1899ac015719d00422675b73d27762072c2e6a4e6c8e3841058d404853bc388f4444a8a15485150c959d1c40d8b4b2291482c4a59186a62882d3561d3a28915dc80d160122559b930962d471e98122eeecacaca8a8b1730235eacc8910756c4dff6603bc8a4518e3cb0d597061ceed7c97cdf87430b177c92b4744800e0642707ad081d547600f2706106a7164c02507a4200b7bb1c79b6f0ca2497db5b706512a883f72f5cb0ac986e685162b1e27227117ee5395faf97167a3267354a4731e8d6e95a73ea680694360e8d91488c39dfc0046c3f3aca458e2f753acb648e2ce2e0b45e087a12a7ceb79fbcc9624141b1b3166ad241a736e0581220cd669b66b3d94260d18f64805759c73ab6ca41a598773e30ed230f133879fe8adcb1419e2f5bd127cf2924cf1fad00877d23d4715bd7c9742c49938ebd749a3469224473e328cd662977a9c375bd35fdeb855d847a2cbed0cfd4335d6ee36e37d37533a26ee6a49bc1dd0c4a37e3b29a35d3661404ee1c5ac45dfed219a97013f91b07e7aa711c9c7f8a02ceac5d9d9880c38e2008f610761bdf712312c64b9bb98a01a53f94368575fb8c662012f5ab69d3ee9b390e4e1d3fd5ccd55c758a0f700d7d5c198dbfeb3acf03dddbe84ebaeec47970ec2060ade6699d4cd53c204aad794b7bed6367350d88978de832611ca57ddde3e07c244e43132405d72a88a697a0a94b8296042d095a32742353d6ce1c1d4494d46c628c7e956e7e0ce7903c47daf7f78eed52c94d9da963dfeeae5bd47dd28dbb51ba47dd29dd9aad160a1c7a6c2589037d57353b7546f7a4869235d22e9f9bd93844f0cfeffe4484bd95160fec643a3c5b182f2104777549cf929eeef1ccb1b871dea87873e44d9b126c84828297003a81c1746030586ca4baa5db2eff365d95984c8d627ef2934b19a9acb2653cb5015377a77dd22d6aabb98f8f7cf9f8d07c09933f6eb3ea42794a559e2fb259ed529346e47915c931af84b06c566f2743972469ea63a2b02549ba9708ea254996245992648992b9b216e352e91f9ce1e09caba19be7e740040ee50d1129e59208822e8eb231348fc95344c92095af6f3b991a9353def89288924088e0fc93af873ccde72810412044148f69e33974333ab89cb466230fc846cda26f477c99cfe9d0cd80b74fd70370a500ee74b9f4e5d601d48a4f504652d41f8e253ef125e6d12806dd27dfb6b376c572145723aab37ed3469b3f6b34d61c72d3cd151538fbecc3084be9384dd344ddd7aa5ec597f9d66b9a587ce99f2b99f298c7aac7aa27696b27abae64aa695422b5b31ad8b9e6bae991412edb42767050448f4f7e3e88824f96b4dc0a315996107721dbd26aad3896b496b45c47f0ac8928ff42046110513106676b8cb1a94c9c3c553c6ee4f91762f447947e37d32ea7e8d2935b357c334db394be8ea0fc55aeb415ad59699d0d9ab539e9eca1b99a3542e64d91b9d32cf72122736246f2fc6933874c9ca933dfc632595fb405dc6eca4fb932326d464286a8cc9b15af22149457a8904613c753a39f3f731ca53377662b858ee4ca66ca1d980c923733b2e7e593a78ce5f9ef312057e241618c1249e20bc7ccd46392c80d4e911c47c93ca58f4ff7b4ab5fed438582869a4c157d1e3d7894f8c9f37d302277644bf238cab569962ed1d9a889ea6c9d0d9a37255a3a96d64a97e82cd15962e4b48329fd95a3e8a78c324ae6e49d35d34682399cabb9ea66b2db2eb73bb94befadddcdba07382afee729bd932cca5dbe99cb73e5282e536fcbdc76a9a7652e6e9ae544261eb82f2c41a6f3257212e070913b09c14cadc5b8548a2d339bae911f63967596b18a00b500b9645adbda9d43c70e99d913a09a9ed80d1129a514e11d4f75ad7ef9898b9452ca550b89e17e4b02a7470678dce41c3a7670db4ab674cf90d04a6825b412b279d48b08ca075dbe244511453befc58a7fe46c37f3006ededb8968764f687fa0831e41179818a37fbe9dd99c764e6dce6d4e6ece3b6737a7887e333a68e38b897e84892f4e29ad74ce263de4e0e62a3c883146f7808023cf1676b2eb649f39f26c8107d16dc045206b312e953e068140313826db1951461fe3e8f31b79aa8f62ad3c711e5d274618ecc727b605d9bcb71f32e53d9e04480aaeeeb947ddae2fb7d5771defe906d2f12974748cdccc6639587de7ba91ceacc5b854fa07c19c6540f214638fe0fe214f11d55244500c11d540f7391b6354f7ac3c65cfb514f347f6b523987d188772fd9aefd7b0ccc2d86f872c672f330e7b2e72974599cb7ab6b73b3b59e63b99b5d6f600e9f9b9719c94d3a8ff63e8e513e3ec562dccbedfc854ffecec1869a01ae4fa1dd43639e53d30ff89b54eaea83b11755927736dd63f59eca7f6d0589c2db3369b02072707c6d149a5d3a699287bf74e32b7dd2ed9da344ac059f69ca471b066cfc5b9fd0ca7c9f5b928bdcef9018890835545e3296f12797864c88001c3c5a5a5c581b6cf1dc873251ee460f51bbfe19438d8400ed606b23186f655870fb77533dced7bbdbb5274e7c9a5f85694eda3d53c9b79b309cc7df6f57dd80f7dec70500a98fbec3d90bd0f478536033d1c6579642d5a38cc9e6edc6f36c7ce661a73ec70703e228c47e679de11636c7947d6c1235a9b638c41021064555431947f90597bab0a2267df3195807892d1b40f868315c6c1fa36ead881440d84fc865a223c4caabda6f95006249b1801f2e327d6d282841c658736b75efdb7afcd64df09235076a026b9ddc80ace8f1f8054493b992dbba17d38a618c2c3ac57e8d1a618a2bdd53ecb342df3704c316448e6b85bff040b388c3eb9be0e1e366f5db66df6677806f3cc7d56464cb970394c40ae53b8f69978e032cde10872f645975c7f25083128d3be0e715456a4c541edc30e56fb911c641171148ea3b4afc66c236f58f847abda860836abf54f3ac0a10301f9905c059a8e8cda11341d4d87a42941d3d172b4236849b8311cda766f816377b77166a2195fe2a805a4ebad83ce717246d44089294723743064440d5a4dc23e3ff41cdadcda107048ca8d8a5d0427d2820152d860bd51155e8894982ea44c6902f7936c60556e112752724670ff26a52606dc1f5e4f79c16c4e06524a29b3215ca6996bff50ba4f937c2d77999bed80cefd6e7240e79b65eecf8eae80439b8dd8414ffec1734b8eb30099ab5ee6ec45c9dc76db0b01cd3f503aa5746f2e6a3473f5b67773706873f438286013ccdfb2ed74cc6c3b1ddd9eccb6d3115b34e6a7ddf871c737c3c118cefc5d1f37df70307e34f1103f2032377ddc10cceca354332f9c9964b3c835b7452d4aef6ee6fe421248af60e0b28f2d5c7c97f26d3c1f642ac793fc2a043191e537117a33e28b19681c8c991984440d0547199a38187f86b518fb0caf86187018c3f8351c94330eca199731943420f92b41e030b63421e0306636ec9c1cada987f22987d97b20029106b7bd09b847992ad5f69949fb72703a628bc6f695e4c99a78982a55a639763c74cd3ed033f5341c3cbf30be72e61b115e9de9db2dc6d2622c1b63c51c4c51434c4e9a025304113d18820637c6e262ac2dc6d2622c1b63c5a610a33d9dd6fa72be9cddf1a56637251c16d849b2569554b115e096d87f54d597f3e5acf4cbac549dac955fd84c2882881e0cd134e862ac1b637131d616636931968db162358871ade262ac2dc6d2622c1b63c58ca06d2ad513f0c65d6bbd128ed12c03877ea85a655780a1b0699aaec9fedeaa2fb4aafecf4c4a69552a954af58298d2de89e062ac2dc6d2622c1b63c58488bdaa9786c0f94f1b20b2d556ac887cb837431890588bf13b98b2068edb6e67b58de336cd6671e8e56974c4774dc2a224509a0a300b1ff61af21229be70c4e252e91f849de07e9db2acbfd05f5045a6c20c6168244343a5d23f08c2c090688051b67e7d11707ff8282fce09237c9242ca32cf4624b8637cc1279d03e4cf17753b0091699e2a4772d8af1c873a0bb01d5ca092f5abb91081c894fd9a0afb619b218701c966ad86b12d95863e06b87fc5ed44dde536adeb3a9bd5aeeb3ada1da0567c92435da50cfe5cfb8aae27a89e678f315472fcd7368edbb47ea5349193a6c0f460081abc2056612dc6a5d23f08f67042a35f2324e828cfe9d1ae5e3d8f20ad99ca9a6508449e5fc7175a5132f87217f694b7e4c95ff3bca6e5df92feed2b07fd4d51ac4a527e5f05b2fcb27cce337b6318035300f0a46944f42073b7137d18ab1059fb5a954aff20080343b2b1f163d096fb5504778c11633fe24b13b61c5f2342eb02eeb84cea214fde43a67ec41f0efab7678a226cd50fdf0f2fe07e15cceec6bc65f0bd520bff114b1053dbfbfb4aa6b62fec21b60f9b06dc87fd82fb61ace25acb61bc954ada2afbab46c4893ad1e5364d643351158944222a9ad2fb0022cf9c45125809f78a6a90a46e66b57a23c7220526f9c8f307ced4fe4027101a83dc4b953006162664f8f1da5eabd7f612063f264f17eac6d3fc789a30313235239e66724470bec7560e7fdc5ceb37a7925a6bed7b49398cae95e872b93142c32c228a30f8c7974967167fba607a36dda767d3f3d8333a21069083d962cdeec7ac5afb853c5af2f672bbdfe228bb7dafd9afc54179238aaea341305161ad17e3c94a28609b4110c45e81a50b5bccc741f9da5a0fbac078ea69c88f915163e6468e1d5bebb5b93624db6b63fd680938dc76b69dcd48966d312c9886c2900323838783407548ad3ec42da43e0a9aaec137ed333f398a883f585acf1251eab0d6051cc6d60c1835fe613e47252326266623627b2e4a944cb33199a6652b6c8ea8411400f079954ab5e4881b20911d61031e95e6e1a082c6c321454c1e318323593a0f531544ae5f0e07e58c3c495314dbf633a7a8097312214eb7119c1f636c2a0a836410049999cf12931aba8e2ff29b7e1109e9b26944f92e570e39234f2a629848601183b533ee820c59e693052c6190594619a38cd2b3e44c3b7406415711e3cbf429ad8d34ac1769685ea4e1b5bd56afed3434cf7a38d2905a50b12c510511840a0eb22c086e7ad23377cfa4e7cceb08a22073cef9a456e627b87effb0257ba694d2d8eeeefdd13d53494495d59b881125c7f93353d55aebcc8c0928cbc2105d1f63a09fe4ab6aadb5c136e0f05b2248ff5be64790f2a02fbfc78ccbc571aa9a831d949eb5679967ed9f7937ba1d66a2c0e147e9a28e2ff4551eaa20cf971cf58e738a627ca1ffbda3e8373f2c53d12666440cb6305bb29ca67eff20b37bead8429651d86429dfc711594a9e285459aadae712593e8c4cd140892c7f0509ecdf49a2c8a18c2cf362042911f6a9b7e2f62bb58d8402ee6e97b22315c91701e7cfb9177b076b6352d10ea69c505461d249a12862440e671e92853092490d854d56b35993c3e9e508850bb6263de79c990582a2d65aadf644abb54ddb9eb8c9fed2c8cdd9b88df3a73b08ed133597bbf10528fb1342e470e61f588e4fb040724330f7721cc7ddee678921584ab7484851136686046a8750b91e6439903f32c8b22cd3b6219e9fd59451c63e1293f2c80f65820897637ce1bc7762efcc5ec20e0ecb673534c49305a08e0e769b9280fb3d20ba7de0b8c6827430766c24382eb6cb49ab12d211808538638c05f0e1e27777e3905346108cd2833031b13573e6edee9e14461960b8941e8489524a1c7286768d1bf1c5a56585645b36a0a98163e686127feb7f498ec22510494bda781d8863f096e7035050f4380086dc3fe37b1b883c487c724c92afa6695a67a36dc7ddd88da495c3c8c383e4c5dde8213122df66d9032ebea7011c799c70244bc89107894d8e488a90230f1255a639f23cb183dce5c883e426f7dff85de0c84e0e67f623af188fb88e6c75cbb62cd3ea8684ada6a18673af95dbecf7d0aaad590ce2346b27d5ecdb126e420c0cd3143064c8c0dc19c0b444d0767e1d0c7764ea9d0364ce3a98fb85f88b9647a6dfa0cdc2996d900cc341989ac45fca57cdf054abfe86671f39fa241cb3a711049da9ce0d1e3e7c48e71d3dfc7d60b510bc63ad8e1b5608a54ea8740c99ac62eb100900000000c315000028100c068442e1903c8e04c17c14800d7aa4546c4a1a8ab32807521c860c42c8186308010010101899198d0bc82e978dd3ebec69d3101ad964fb9531716932afd5854157dccda4c80679fd12dab4cb7bdb7484860b7d97731ac2a7b8c7dba63d34869b9991d6ee8497ae4beb9a72c019b7e578a04467d6951a8b43b6b599e9c9d713439d502099d6f70f09a943474dacb36afe77ce4e1fafcc2eb1398fc1e28259846db656e018a4d68739c15dd6e5faf889b4b5774c53eaa4b26059a01068a371dadb144cb5a6a6545c80ed7b7b4d4f07c7576eb5b69412c503a80377bc733832da14321c8f2f36e9364d49afa67ecbbe14fc876707a6824536b55974767367604b07231a87e2cf033818fbb62f1548b0254d8b348a9a39615570a640ebf3144e7d2af96230b04f86a80506a0217c13a3e1e2508ba127ce38974381768e75314b79970e59dd8dcce1c386342696b0504c473bf31ba2aa211fc7945cd7473e907fca60e0cb2a784ca8014bb68abf4281beebd3b892dfc100791dc6cc5f57ceb70c0b72829240d839b7302107e634410aabaf5348bbc63264881a6662ff065d0e1296f443b217ba9bf7a0d1e8cb486eb649894e10a51a91fb27ceecc4db66f2c218d6b8793b83601ac2af1fa043c83aaf40ef3d333759b1b329c68c31b7e3c9edc33ad4086ff1006eba911d48fe934803f8be0210a79e39034394240106beb863906756da2467a46908c8c418a0d94d5424e0ed2f693d252143e2d47b6c7bff24356c24fb637cf65078b595d8bdd1c85bc98ee838062103f66182db6b22b1a6eb3b9bfe8c62fabf9f936de35c16b60d145ab9c0e2446629147d3400159ee3577afcb47a22b9174a90e3eb014416aededb6635a5ebe3ff1dead0229db740075700d2876f00d722f03e60381c824aab4eb98ce26c7ffc6ff2744bf7628e069195a2187c0844909af1347bef0721348344b9fe73b961836ecf08b38731e6883ebfee6aa5a8367041144e0da5f1ae961341b5dc72a8342ea6613d04fbc328d9050e59cff571bfa9843da26c6f680d0a0a226c12542a6bef3a889c7088f7d5535b82abf4b686e1d01b382921159d99966b44217cf9c647a34d8870f145c10da5197deed6f9d026c2186e45247cfb939c85ba18d4cf904b73b1025c0d48c8741dde4aa6a74a8f596c93ff82deb906a9bd38e3831d4f52cdcc96343644ab952eb545d7ea29a4e7a2c3c07d7292af8ce9bec2a9e383b1960fe88e717d25c1f46899429f2615313c2b6064308788a28ff4cf02e5f9158024bb10a1ea55fa809bbb24b478a1e959bcd8fcb4ae78acf7b5c9c1419a70f890cb6dc43f97e273e91e9cef8a026d3f71977e03b43a04f8fbdf28347fd7af21c05005f1b0652310275f177823f3e3d028fd29e7715a961c991cd6d87ec37ae6e3921aa932b0df8956dd260b4c602253801dba869dfc8e53e8901cf2b2d433beabd247b31cfd1dac3927cdef1cc04ca96f5fa6923f76b1116c8fd8b8cfd448b601001d2bb76d371a6dbb7d2f1b48d142e03f7b8f046c1b774d1e96c30cfd1a25d3ccb23d9e3d4016224f4256135c7bc58971be85730b104dd6cccd7687701b921c299d8e199ebd303f857fb4bc1adde4d4ffeac79f603e57817fddc84a8f9f6e466b8936aed4bff624982620dfa106f2758fbb3e2da32e73072e06813355e684c32e8ddcfce173f11ad4c090df2379b98068d5fc1f0f248976bb8049434b40034a16d33c995300367c74366a5ebf96139aa53397e6c6bb201a8e3e190bcb112447b9cf5967eb743bb9316ab8f00a7fd48e6efa850b6300a23d065699018cc55eac5a1eb7b12b8723ee5428890d332361fd7fc0b8e51720e3e1d35b21e7700ecb2eea0794e6de6dd7f5e4cf8857c15a4c08e4d631fe4057d1a4652b5c90a57e5cbe691a27491f635b9050028865f9644b3a2e35620b7b86b3ac2f221465b2d5f719bbb89627051f3bb3c881608d1259dd797e8f31db925894688c92269de933ab90be36ad0c361d1b8b7d55fa55c0ff83dc3431b30c51b5505c27e73553650cf29d3e592d534162d1005e0bf0c2697c8fadfb9c9ee7a389040905be2a57c7a2ce0a172de4f7e0a04313f22824e8a3540a2caf22178e2a080f2042cad3c07b68755a1428a78c1ce9271126180fead89982ef31572f872c670a5fb58cc05a8d47b4826fd80adae49d6795b5478a7d5f516268be0de536ec66881d6a22f1ca883dfc5f7dd85cc10a5863714a74e3b34bdc543070468862cdad683232643a7e31ec18ef81664068f4847faa11eeb7301f48f5762fc2edd74a869c46d6e372589cecd82701af222c0e5306e39072e84f16ca924e3979b34a4e226fa14e8a989e08d742ebf02536d8de45610b5af551138b98df9b3df4c418fe7d7d0601375109bf73649e12960eadbada8eea4ce81dae9c6b1c1e17f2eeefe779f6e9c24d8ca8b369a20e6f73b6ae08255a201b754096e0c6cf734a10a42a2f6a382ddd2963502b8a247571082c55b279dc8dfa169abec08f28bdc29b60dbbf6e410cea70a9e771b3c7c98217f6b539608edc95f9f5d873437c33a828062a6f02be8fd28841f213b763dbc3753dbbfbaedc9da9935d890b90dc64796b26c35ee9c1b0562827094eede0713157da12b5e23e344a56f8ab964cb11ad154a55153d7a597cbc480850fe20cb36ed62933531fb6388997bac69286aade0b1121b449658c029ba3456eec3d574360362c11b26842fbc232260e15819d7b2cd87a3a59336986b77518d076d4cdc22645a2ef17bca6332f49169692383004db43b2eef6e902bde34dc28b7d3ca4fb7d7dc6dc5da8de51883c5bf72707f107c8a7d31fc30252a287a4032b5da83fe091ab4bffe6dca77f02cb7894777c12be46cbd812c4d7ff7308b8babd129309b869de4848255ebcf64d4d618f104ec2ec9692d9148b6347392d29ec033293c96bb2019ce868ec59791d8add8f4a90f6aeaf50932dd83a76d83952a4cfa7511cf96b94ac76339112f088120de0fc3946aab82df09ead20b58c91899e202115f503747b128f1f1d8af20d3ca951c2827c696728b8ca5b22a5ba733af48cd43445882c60f27d57ef481ba0db052d974065990007436ad2fc0fa664d10e43df38d8cc37f2e415fc16a59d11bf0f8a036ec857e495df04b77f77b5c1853b0dc7de5ca972c5518b4a96ad7f40715018eafa4d38e3ac524658e1f9bc15c1fce195136fad0804428b0aff152d0e076d130fac2aee4fb1c19b71dbc42811a4154b59752875447e9ccce7313a70563cedf5cc7bbc0509908bb1c192bb32dfe4c85a15b0e9685f314490608ac2f235e5c8a761a750714b98ec67efa23d719b4868ede02c3b4a7edcb61562658b51983f0d9bfa4c8554272a234f9834a48955647a857f234db5b0a5bb53380972abea0810c354141952767a5372709393cbfb44cb71dc4aa8d2d746398cdeaed7835c8d5bd3c59d06cbbb66078d20f5d39bdf6dcaeaba02bb2efbcfec9ca27ff374956e808b28440e0e4fe308f59ba111a084631a5241f224580059a900d040f26b8576213718289751cbbd602971435af45e6c5cc34cef2511dd675d85f60ad83010010622059ac9bb766794b5f62ee12ec44742c017ce4f1bf14fac1a2dcd1c6c8e2715d3793c6935997148fdd0ad96c2dfdd313aefc2ec5c3c5da67a40a85ae66163e6d20c7db416c432aa0223ee7512b3539f279ce1a874d7c378fc8312234a6e560fb63ca03c2ac1e219b99bc124e82801b91781c883637a4ab2fab978193ccee77bf8445496a06a1cd4778d5a26057be5b513bc397cf9d7927b61babdac9af7a2a48a73ed841f92ca3d8ed9a07976aece0d5a0c0febd09ef2650a7a1ee3ddc2cd893c7b9566b77562dc7b3d7d92158e169b08ce55e695e91ffab3fff24bea2af7425758f4bb43a2e164b196e05aa4540880a835bdfc946625f2a8513592d96b21af7e8be466d89d3fdf6125196e3c912e1b3ace0f3b426d961b0f657c9e24b3fdcb0eabafbdbc0e6d27ac576a66c1593081ce43f78028bfb62b42acccc1a5d40521436b9826125b20ed9b2a571351b3b59eb08f21c100e966eca397f76a1ddcff2296cd6b84e96ddaef8df11a2304d7c893362862cc0237cc897be120ad426f0e8e17ca6a653738187c67d10a5266d02d737786d80f0fd949703c799963ca68a113b589e334d71b06de49db17eeb86c1c9c0160e1ce89550ac5ae40201f269e890ca0b0ced40a4fe08e07475578e687ef102fa0f807e379708f2f8d373ae641418417af5a8e04fab3c3631775693cba69a807fe78414da593067113a649632e14ec49813d77e514a95a4bd2bc7fc4553d25cb7910fd8e5ab02c68703d898f7e819e470249a12e801b12bf7646bf34944e88533ba3a36e518b58d7d92e6bf9fd6ab6818acb3773ab5a6e1180844dd04286f82f5d54f14394e7f80e613181f4ac50e89a6e6bd7c926031c6d8373e5ed1cc88e975eff06fa519073da276979c663ed30200969a7422bad888e28696c818f068cad83a664a5168f429622e9cc427535e58ffec193f2cc139c1be013304190082392a97460f15c48fe61c448057f149991b0a8200b1523cca73b45fd7d5985948c74ddf10d4adc070b3a63f840c75270b8d6b5a7956022fe05027eb34f6e323c7ba17cc9316fc10d71a0ee1c7a471c9d5f89316ac4ecdb17bc53a6eb77b2a7b34b90658bddc06b0e06637f44227295bf5e7bbe90e31b8dcc440f3fabeadc6539331fe438a8fd98ec3aee6e6fd4a25ecc7e25694e2f7c9d5d81b334268e92a9082a145a579a4e9d1bc297a16b861bfdc84bf80661bc77d506eb4293cd53e8f5e6f2df006ccbc491eacc6a414d1741e465a70f7050f172282c7fe3996b1126d079c69c83c9b798f330b9d8780569a333559163e353cf0aa5452f8bc4c47e9c8cc84984661da0e8296711c2a58e60470cc954b3180abd0811c0be74b165869d46f37537828439dfaf38cd7b3d92f7f54484aa67a2fb1ad3fd4f75e275a1b8f10d7761a92c4577314f7f0dc41164d88501cc31572260dcc298447693011d6734f5562da72ad55eeda452be47b2bdb8f038223e6e96348be2b1a68a6cac113ee038a2fc12297de3ae90b17e4e51c2163c4dfd18a59c87a07f689efe939b51d15ad9d06575cfc49f3c1706aa4b0fe94dbd064d9ff9c1cb5efa1d1002a5d9f9e4ac48a8ea33a2f0a7023feea51683799d914e9f6903f7e954d0611b599a0331736c4d8d5b826aa887a5db73cf21dbc46a391d0ef1e3c963967088b3b44555046770894b914e35c6f124469786e5e50633837c883be6183b6858c48f8e2d739903cb0ba177b7e32314ccddb63d99cb5c1c966a100daac360ba6250d3be24e1f6a66ed0256c4f6d5213107cbd451b2ee631e577c41e0086c46cf6f60763a80c271245333843489293804f3f4710fe43712d0749cae8feecedab6e2f1ecdf57f06f79ee37d66b62d726d49e865561a8959de5ef6f9683f2bc5e0194d37ac47840fbc655750f0cb0237ddc54c532207590f182035bb7d70cbd901eab9d574ff024741640d136d5d70525d86a50ede904c84dc48742be396764eb4dd6f1e78c6d09465e9ef3c486a31e08008d4872b48697bcfa8dd74591cdd3abeaace15042e42b49b063ebe1c18337872e2f483e10159f5415e71981efd3c056ea1c040a74189584a40190b87c8254067f1ddc8e626456a15f64125c4814ec70fc76118f01a1f63d452c04040cf72f5588b62ccc45d99ddd1cf22ea768faeefc98b2eb3fdbfced6f560d854253ed31afe603ccda82fb9970e8b4a23b5cb2725508819dc047a4afde51014d3bcec82d07c6e2bb1657d0f42d02576d4b9f1586505a7dc13cee536f67b0a1297965e289af59589ee250e86d5c9cf0d41de1918e74bce98f321ce51dd2dc493ef9ba3c2539e8b7a44a111e6ca477229f82a1cbec6cbf9a4a67cdf1bdcf20bd87933f5e72066e5c03f7d7c21e4ae5a00f68625babd74bf83728354010816fc233da262854b78b2f22c3cb6ce9292bf34ab09bf272b9fff04d446eae9fc1d454e82272b9f59708ce4c6dbf1f5bfee9a4f36fa7c87ec37fe3135022ce413dcf835f5cb28f0e7b1ec16808c0b0fce7428964aacbc69f673888060ee91eea5809c7d16eff103e2c2805602c3c96adb4c1abfd1281c3c01abbdcccfd711e7a2c489a73dffe4110c02a4e3c1e962a8b15c6297c8cdf7fd5d3c988a27183e511a7730e878ff5c313ba8d8dffb270beb6a127bc005085a8430db57c539eddd240ae8058015ba3e4dd07dbb046415debce535b5017125c8d4d203146ea012687ff7c5af5e3de0cc3c493330a30d0cc448b09fe6df69ac10531fc3b260d81e13092325d40ea4fe7b8fff8c748f5087ed2fe6b99dbdd7609bd7c5968b80fdf7af6cf45bdd25171fcc66f5829d9fda98988af565e0bf4ab3159bd7a209e8c9bf7ecf8e6cbb25543b8bbb1acb0979f311cbacdd57adc1da714b6246568406a4f6d6781fa180455b30889119b8825f9d9fec4c5e9ac8c9ad1dce88e175e28e6d69eb811de15cd371f283b3325cff1f187e3e8437570d72bd367678babf132fd501d8ac14313e09638fee6124fe7c53c94ff777fefe555cb1ec8c50fe9d08066ecee3c6e232e1d71e458206d7ef9700cad3a862a76b955ffd69e33028bc85127dfb7972729ee43ecc1b1517f4066f20ff2213871f626f5960e7f15e0e30f9a6e89553227c682eabc833d4267b587ed03efc900f04f2cf0be3cf2bc0553f3ab11e3a5f3ca6be04130ad4783eb21901d48d0bde2df4a4c7f54c747ffa44cf327600b3d4e79738a067226d8023dcc5e71036cbb9a12765b05222c254d6d96c5da9dc37ff40499fd5cbda413ed242f039094ec9383b01ddd95a4c95a094e1cf8074e00fd8811fa01c5047d67d1e44b22af13d33183143b3acdf8778eadbe6167481a659b0918ede8773332fa55360a3b3f6e1db1cad5aac7d50e624a1873aeda601cf40ec7dacd7b271eb1d32fe6c3854b38295c51429f989366d4397461b14a0195b97496c35d5ad2420c39642bd4119c0eb2406d064400b5416036fd1a83bf430b310b7fbdd123ff0a5780b262145cead3e8692bd784284466280dc940039f6c6deaa411713b675311024439e252543cb687403f7bb41a24226d8f2e427bac76de14f8ddfd9bd3b47efe98ed49c0c0a3dc08f42fef829da8192b44d36dcc5b7c34cfc988776c554a065cbb1f7e29f06b0f07599b8c99a18b43c9e64a103841766b3839cab0f17657218e2927719730322d06eedcd85792f4909e969354f6c5c8320f2587da00b2b45e23711379d1de3c65ffe0286d91f69624a7ad5ab49620278b3a543e32ae6a7e9f6f16e281d44d1836e5731b3a94af982b729ae1fdc8aaf69d52add6939193a237f0d4dd1849879e533c4c183be3fe2360ba2af6314a92922d073162bce8a7d297ab552ae37855cd60cd2f4b7e088005e9ab7a3c30a0a3a68e369d2702a0f14034aa235fa35f4b73311fa881724d2b213b819dfed916248e8fa1bced1c74768ba9c26109e5f6c3a9198558197b227deb329d411bfbcae1ef799aa23ee62c9990eb74b50319eee0a42a241f22e18fd14c3563780e74f2ed50a63689b36aed88aa611af6618517d605a51e71763d24d9852e16841b9b4c1e6007a462cdaaaa9480c0a5c6d07aa1d26c1444a3eed325105c50735937ea094f9d3360154547481276e8a36516ab5482c94cf0c9115ce58b4e6d83e6a71fb2eaa028f22c6909dbdafc455a102f683c07b91a4491eb2f8b78f6b6c9876ddce23507a03b016cb5a98b4ff085f0ed3118c6c1f9311c86aefc34f4045171d951e2b0bc18b8fef634e1686098aab57b49f00971e84ea4437bb9ef2e6819f665dd8c0058780dcd806903380701ee0320f1d7dad440b119bc03caac06ef4c8baa26997811b4c1870a4978f706051bdd19717b5c53959b8c00188a89017d7d3b110f7fae58aef02172812260914722c60eee50a9e81430f42c4145cd2bac0cd3e4e9e88b080918051fcf0b9526ee1852517f2146c70f6d844ab3540bc7205c0e1f0241e31dab3a1e2fd3a043fc2d5527a4acb4c20c02c2ec1b67b06678da9c96ae591382c8f16a3d1d30a7d4cc4c303b44db5a86cfef2842e09b7316219c809c8dcdc3c06274542756a1e73ee62b5c5eaf38642c0db3f38cabd51427478340d3da10800c062ef02d53ea0e1f5e6781b81dab3bebc59ee2e6dd7cc74afb22a9efe298c9fb8852849c0f2ab20e178e94b1bb841ebffb825c6b2227b8989403d08b4d073f64149ff9edd73975cdfb10df6259af6f4b69bd7f31ae9a30c5b5fe68fd884d013dcf21e87577f330865874c629f6812c6602a7bf4920108693a6562354b61f5abc36cfc517484993745b4fc78ce4740296bfe29b3515c5bf698574d5874655f5b8bc84920ba94c3a989a01cbd8048833f1a626777eae5ee2f84748827818153dc20df453dd1c3258baef02266b7aacd9a51ca26cc3476205d7ccad8db626245df650c3dab4cec670aebdd8d79a777af6639c8b0281e4907e31e7197d8dc1737e7b0ee04370af7bda3f0f2897de9a7e3b02db48b4120d23ee0f8f904b01ed38625e20e2e0394cc12e7954aee1e07dec14e36f18bf01ce90adb48331bb7b1bfc13ddcf48cdf4475c920f607c6243f51bf4a0edd21a83f7bef030db572bee84c1168a6bef3ef5e4b9d034ac05923de59655813fdb4a10d56a248d34a79b4f72fcc171d7ac99e71ed5b175e8c060a75c7840773135dcb134288dd163807247e3f63444860d2b71e1c8a07795ebb1dec162080b35a684af592a7ca4026d97e6c8b948323d507c709de20096073821601d6a58660154cd6ee284362715e7df470e349c11155d45d13abaecca7ecebfd529a6c8564ab3830e4f689a85e27024bf0ad4f67b1efee7343bf2795f8c5d7701c7d1c03a6bc3fd78585419fb40769dbddadb1f0d7724779348c14f02315616619bb335dd90283c1761961ab0b5f5b894e78d58171302732af3f5180c69408ee4803c461138ec600c91e3ee592ea0d17f2c66ee2226ac664e98ec85bccb7b9067adbea997295d9287084b56132c7ca1ccaa92cb04e80501ea48ef49baeaf769e1b09a6c7d3cd87b727d18bf95bf35263d9613e7049ba8df43c558630e85d4abfbed48a95b65b92f1d8215b0481d01accde67d70fd95e3493a13344ce6452f2835ec6206794bde1e1b28c8172b5d3d0014d61164a4b48339e2a6ca35cf727f733c1d4d664b18a4e9ad8d758ddbd286c44cb6a85afb24315e26e8d9d9417294a90fcd88b5c71d65d542d3d7c0446d1652f4578599be692a9d6b96680328863290d9a19431047d259e90f359b335d825209da045943a151921a22de935bf822744ef191423d9585f8f534487757e1801ec71fb5d937fb64e657b1d1abf9c985a239f827f97bf247edb477f8b5449ba51b38c941def2acbafcd6a41056f8da246f9b12ec080d8101a90b8c23b4f0ed0466296a55be5b2099bf38d85df8ba09fc97e3a9470fb520a53c7a1aa4040e4a839420cfd32025b82a0d529a5c4f83946207f0be219a687ff5ee49fb199ab442d323565685ca4b850a68ad5675d3591de84389e67e77419b483527edbbec825d55c57bc6e37255c78a30b41ea40cb4a0512a963e088886eb92b4378617c8aa5ea9ff8d805f6be80c5e1025a927fbdf707dea81c24ba753bdc33fbfd568d94f7cc7d3e2014f666b495c539a8933fecac778b70695213ecaf8a33bcf99ae092c95a2a8919f5902aa4d8a53c14c308ebf11de12b38d3fb8343cfd4fc0a9c30d6679695d63ed45037d8ab0155fa16155c25a0e7f655f510130d6c9be5af70f16f06c0ddd0160d5d76ddc427ee88d1d69bb5bc1c7afe423ee34e7b6897add772a41994757282887e466990fe6c42bf12be16fecab7481e858edf275cbe5e81261e76896dc8940c88e406caecc91b96a1e7d59b22562488a8b54029f791dde0c38ee8989a29c42ec665783576dad0c66148482bd5983a130757f8b897d4919ac778a90b895dfc1e7e58866768881425046042cdd32e94d78c98d2f2a5325bc99f0c9ab971af6d1f7ca4344ece823e753e97ff311712868b579abc848af818a962244d6bb945625c8ea0eba29faa9b1ee73878d1814958fde7c404fecab64c62a362dd173883027a2315d58b454ce083a0a4d864b98310cd411ff088b59ef4c8c57812f8ecc9e9c08a655213d99c9aa1d3a4b1ef217ab588b13713c71c6b686109080c48cff50efc99ca0713e1a57a268271f0b90223e0d10b28f9df6aa495243029c46782fef1236180ef33581cb62a624a9a90eebf89e88168d3af7eda441f9ba459201c3f6006c6ac7497f4aa63dafd17c7a379f6a0c1c8e41745698a4a1cca4af40596050628e07cae5498cf73eabac0bfd3fef43768a38c0d5f287c5e655c33d0f892b0dbd094b832c94fc00092a5050c44b09bfb2932911ddfd1e4025e924b837d09af61d0a538d74c2f285cd7429f16ccc9648340ca340c99503c042d63950595e8b70281badcf7e7f2e8bfe447d0073e6038e3a19e411b90ba01b1c31409bdc12087c681271f98aeb64a050280947db45b1a67b766c144efbb1ba69344e30071e77e5b34c0a9f87ccee6d1b928af47444db1c3f33c97b2de91eafc1110c9bb88c3284d90d93675f0e57d9d14b6b4d726743be344de2be51b86c37d8eb2010c939dc26b9cef51c35e9f7600f6cc081a811a76f6d6d0ddf063540dd09576f93b04debd39b387a672cdd54ac93eaedacca67512af42c15fde466ff734e573b104f8f5f69b19646e2f12bb12781c3594069ae9b78ef51cf743cc82789b3a3517dc8fd0baf5129661b95347633b03c1a08a87640c6000a205139e246f603382f555438fc8e620150ad4d2e0bb0018520178f034639259085c37094c132304a05527b11744aa792c89882ab27829ffc410950e4fc617ebf48c912616e1e416aa1104fa64ab704144c2da89118f4085246b5684664704d37b646d237d061955de83c41953e39572660a4ff8c91a2df27ac45e612914a70dca3e0f2808441dde1dc184511121aa0b1e61bcfcbc17354b3474314863c839ca69e3277d9b77eeaa3d94cb02ce2b249cf6324cb6f0cb151e42bb2e15cdb95514aaf39576e97b43eb07f3d6356c04ed2497cdd89a66448648ddd0f9836401f5a6aa04302e977bd4e0b3990c292461cef08dcb54a9d58c365a0304cea3c6346d147eeb07c597217e4a0a149f284b3525dc92d3f00292eab7a9a69d8ca9e5eab139d19d9b2aec28ef0667508bb103c25e9df8d1c03a41f0824190bfd954be7b724893460a70bb324ce591cf5b1a5a455d825fc48a75e8456a217b491a241e67cd31c8238a1312f9029a9ea90b1a0346d0c002d40a5625f2cc5317685484092fbaaa5fb63c48c9c8bdf0a040e2ac545e50eda5270c41cd3294f98362d924175c6036552d524d0ef868b46f2b6603fb73f54966e2eaf12f385975da30d88b64f3bda1e60375e990b15ef14d6c9f077d365ceff1876d87c2a374832dddc17d4849eca4c76621bdf733f62bb14663a4fadf7f5bdd41eb6741ac9b4e013ad141df52f8eae27f5654d5896105d5dfd8e8649a5bf60dd7a8f3360630abd77fd1ec74ea36c92604b92de5c5e2afadc7137eaa9b5033b9fdbe295469ab6287cd73bfe197b9c076d5827896b05c900e37f3b326a676712c0ebbcfac011819bf48ad0a0c7a66c1f0dc7eb5c3f40c63428a26d87a2beba1b5845cc1074af76a7b495a2c23fa700eb4fe1d51484d2c6fd8d80ee788782e808b837e906853c655e6c9323a529122099c6d4cf65ee506928417352f9bb342c12342241984a66a61f27a104b368b28054c698054537600ca62e81b3e5564d2dc92d9f18fe7a4ee45331afb9b450ea8e84287f622ac3f7e13aee38385c812501259094c2932323b44d60ec2c856f5e4df5902bbdf22245788ae9b3d80f00602e160419343b0dca799b827be3640ae1f59b73b72123b498160e280ece6e23d0be831adc952fff14940cd604d5bb244195d923a861571445c586ebf1e281a139909721226f31e5b59604718de700b7fe81b4da4d60ade4a00a9609f673083bdb9d7a22f105b4da6d1d9a82c463d86fade641fb85930ac39eaa5699f4a984fb4d186b9c4a085091e3acb1d0556a527e8885971725940fe03a5858400ba49ca54376b641b1c4909df93c2276ccc97d468e0e1bd1f85e50a3f73b2347279fcc511a20142c31b832f5c336de22b2aa18b98667a950543ddf1ef6c84824f48ca71df44b31c4d7a2ab0bb9818d3a54c2d02f8c73f02b4024828abd7732356fdefeeb4325348051d6a426f9915e02ab762367a46745034f21b69df61784deb31a332922d12d69352a217ba4e52365e506d6a65f855c6258cfe3c0e992b297e33770b939c23bd7a1520c39ee36d6825634691a26b28aebb99f053ec967e5ae238b37ef6520ff84f1f2de07150527c23a23813e5dbbc1925cb0758418c8c9a771de95c248887645afad21f2f9244528000f3be3f6ef0483420c73ea2720f0fd3db563aa434d85ba602aee43214aea39d961bcb6f8bcdbc29320c866778fde045111b144221a4479762de4d389934924525d80a38b5f68d43a9fa98d36962a667b64a5a0a7d1ecad08d3510435cd6746e66022cd290ec295086b6e3d2f5ed571afce8f59581e79bc9e6fe51bcf1178cdf3c2b2b9eeaa53ff466e8e6b7f15ae0e8adaf0365a93a3b3fed6e9b2c3395494aaab45b544445c08c30b6c197852813654e6b451a8280f1c390796b9915e27af891b0fa89314eb8fbbd97ba20d0b07dcfecc259a7eba1a31eab395b053cfb705ffa0415785340b5acf7abfca780fa131bcf78bce8a34833e547646a2391ecaa7b94e7425978b9e4f80764eb321da6f54e492c2259ebe28109fbff5a842b219c62848f78d1d48ee61f8cb8d13ec87018598a78af58f90a7ed15a96bad78ab9c16c56b4ef985f72f65c4ceacc01864979f23e2037eafe2c68c0ce86d8064ada9b821a95fc006d6190bf093f7ae4ab6f2e0171437a80d80e647ee7481bc486817427cf6063616756121183482102b226e54d7dcb13f39918f413fb24700376beba2a02f80b9116bdbae3ec76d326928dd7096d23d596bbf711cb6225f55a2288cb861f352cbfd50d10a89c537f9b7c8c2005fe2881e12c40d22977293221a167ca85084b8213cc0d1414714cf1626a1b6f5eb68e5e0ee0d4c3c2736b8ec941fa7f76947dca8b14e8c24d7f5a1e8c2b025204913ca47b5048120b098713e2945b8e579f9fa92a159914024f764249165dbeb470ccb8e1a4232b4eccb30c24832ff88398d7a06678271206e8c73264c7d1037e00a095991b102d5aaadc8ba9d094213f75cbf1e77b26b3216f193a5ff1469e9560ccf00c909f68d0294d001f5860691421fdac689781680215d8cbbba8fbf2845dd4ca1689938af1b48267f208f757fc7f8755ed27466c7d40a61d7d3fccef639f617562c65bb91bba2312fff07c508366ecd0d6c925eb8378694815291562c86086ca0193ea5e5d5c4909151de980c629f59350ee8a182f6372a0d1890b7e4e2daddcd58cb058af8657162888d5359b45d87abd9b1043613ae4b9ead31b5b052906a6ee4a04d83994f4401f9ed4ba7bfafbfc3f9ab9357dfeb44bb16e2ee63f92b5191cbee5868f1cd471016c5896a0dbd5d700e801ff6a1c170e42feb15157c0461a4b768de28f1303b2fc42c9fae6a02c24907b63046400cf89f982b8e45df053a698a51fc8e7a01cd69b38c0812cef03414f3054c9626731bed1c4e4e60526ec864586ca9e4e01159ba97f1589bed1c3ca9f84791a020087fc4d377199ef25b04bf659a82331fe1faeedecef34f5348a0208f2678c409a42fd0742f533c30b308da218adeff360beda287346b832d6781008eef1d296d2ef1107f35671407211810044fe840e661c455293174a6c85558ed41428a2d1205e0b160df84ca260855acab7175121e367d79ecccf45d20b86a4a0ba5fc8ffd96fc1f947cd1a851ccad4cce87be612d093a2bec58b38f355f7381ffc4f2f10fac85f6af3665f5813185f8f4b52f8ec4cfac63b6fad1991efab4367bd703ebde08e207d8d9a1fcf5786b7e0278cbba368ecda46d3efa17c59ad563959f013d378119772d1358f79d75603ca334874354c4531258e72bd083aa477aaa2ce7d3373c8ecb266187f2b207892f849615c3d69919dcfbdc7774f1aea14c577f12ea62e34b10986c4ac7bad216674163923ad37016301ae34abb3ed0dc4d989158c113cd8eec709d19a239a4e0571bc45a905005958179711db7eb1dda8fd3cbc39d8fe02511d5e5369122079f6496cb1b49ce699acabb169cbb2b54d9bde528ece61fd84808bbeae75697e0bc607d565c22a81c8f572a6839c6c88b4bba558a7021cbee1b1143628096b5f1c7905ea73f98fd7dad54be6ff168bdfae65743001f724b25285f6ed59fd7565ad5196b9ee216e22d836be790228d34a42d5b58b134cea4914037e01f8476f559020dbb9d23c77fe175b70b1cee32edae574963752b6a813627a0ad74ed71067cec89fd6d0ab4c88ce7da501627426f4ad33447efc427d00bb9374c826202420e2056fd40ef8be65fc09c9829ee5c12bbcca8d065616293735ff8e596b86186f8a60daf77d82dbb608cf3eff0c1f6092bf7799aa8f2b33017373cfa47e111aee21a74c1f0ba1466233fffb18c2d0264356f88734663f8de233366402e30f50324120718941b010659d8bfaebd88d90467f7e811e6bbea564a71655e766b7095dea3fa1bdf326f9309521eba19b09cbcd95b84d82c05588257d23b2d375e70441929059958e6add109b8cc27e475e00041dae09e7b014173d11878d30a33b3058c6608a9f158ec1d797b9d3449579c20ed60ba7af10cb901c2ea602a984d3f817d9512d23477f97fefd099987ade931ed134896758221842045b52c3347bbd42b5be96018216a6ffbe9572d82c6fb22e8956328aa6cb730c74c40213503a08e51a253818a0c831090aa10eb01de0c40b3e1518fd4e60f36273515013e8e4422171426516c669bba4d214b49ab4c23a5903d08f7f02ab9ae07d78579a97212a45239c497d1416e907573505917586455d26812b91e09b38cdd609e11906f32086c3e3e94a510fddf2999a7277135e2d7d834b948bc545cde1d1f64beaf48c0c705f9fb53264223841603be44a8d2d9d8116706032b074cc0b363bf3c5d0e58165ca985d30a13858fa39b504817e9a446192ae645bd5756fdd6ef7b4124a704178d5f5adeb0a74eb70a581250dd89e924a3d29702c5b7e0614cebc585edb34969bd13c1c7af1d3ebf4d7cb7e056f2aa69556c45b98adf0dfb8e526ffe0992705d18aa875a528aebfd703ec9e2463c2f481af34eaa337a4ef2e66489280ace20497e20d4fbcca01914724a9d807bce0069e8cb91a6db497e16635c100f77e9da64cca404f09479b974ee305bdde247c0c16a4e9b7b5e79beff9cbdb96ed3cb08a4310fe5124ea5f5fd3535871582e0447ab3d0563fbe504303317f3f64bda3aa5a9f8c0b68580b181c6ca0c020c7e0a0dd766f19ac58fd1be79d67e69bc458941aef3be06a02e0ae8098e96cc345f1288b636d21e9127a15efe6cbe157d7d1b161f8074d1e68c05146b0c5983cb01605a3d66c13b861935e8d1ec2edbe619eb41274b594adbf305d41adb07f5f21d4beb4553bedc050c6722921be406f4e81602c8e84c7c2ad230f78bc4907aeb0636689cb7f7caf3b402b57f7113dc4a3b934c31e7552afe90d03aae19c21e5c0e791c64c7e96b808b13710e3265a1d1519b128f4af8d88256b6465cce5774fb0ae3029508c275a0e73b9ef121eddfc4f1c7de930681062f23f656502a23698784abc92327dd13a4f21228cf0c02234804b5b57f82ba1ceb6ce27ac42bd1971ec18d3ca7334b3c299a7c00384ddf3875fe1fd0acc5aed2c3f9bfffc5adcd71fc4c986a6ff8e005a0b9f88280cd92e0f995a068e5c1e8c8737d7033a59c57460d1bb78b4c909b66cee09bd22c760fb4ec715d2f83e53ce0d26e4894447f80e5f57f4ab7e88adb7fd34ebfc085df18c438accbced3ddc12281200cff2e09f14957570dafd883fbcfb55a880e99a319568f04650ec8bf7905b12f514c599d5762eac8b1e2b8db74d4147b9e8e04b9c8c8b2e2d43d1ee0608b00061426d5f08ef8bbf9bc3481dbaba4a6f4ba2ab6d6da4da50ddb87ee810a62e082d682425e2b700004a31ffb5af5875eb1a57bc08939e41b09de43b873bc0e0d5446c5eb94ff76f0ba69247178edc5f4d7038423a8a609edb99da8fc17f88d17dac7475872709cbb4eae320872c28ea3e2ebdab54ec41bce069874997b8d7d771d2cb4ef70696eed60623b19b72a8900dc2c0f5c8b20d0b17cd78affda7bc4d6bb16e78b87e643c6e382a3bd398f2fdc3dbf5b90fd7533e30bd4aa5a02532d27ae217976f005147e09b6b1eebac260e84f82aed26524327c6c617dc76951c5660c33d175bc11537d877893aa5506d9aa1b636f23642b1c5666dadd9f0bd9d97d04ec3764d75502b8bba240866614b32aefe399ca15643636c6c855013658981443ce12257dc8dc7d9eb7e6b8f59760c98e767361ae5f9a30b7a0e766338d02f6fc79aedd2ca701d7587f46b64ba36e4dee5b18cd050acc098f4b8f2817ab8e338ed2432fda9e8e19456664bc8d5bfe4c007ac00af784913923cd9f91b720de7c46e6fd9d2b5549c5ad08b9432930e8ec9d7bb228d45e7347af68f071ec7e4f673a2c53d6fb06a94eb6da71167dd6344d505f8791138fb3d01ded94c5a01da89d25c54687e485991a3ab3fd227dc709777b2e4431d88e8c02e7d67f4a679fb125a5520ec4abeae7603d370c4ab7777cb33221be62d876476651aaae35aa1c39526e5f279790abe152f854192104ef224af878547706e0361650c99923f75c9a6c1264022399220ca451367b8dfa26f4d3deb70de5f893959982aed99472f9c46009ca57f1d2349d5fb2a9e8069f887a7c266795280b9ad5c6e2302670c883954330f0f118b2c3e1c44b3de871e6a57ca23816551ee31b15f27a496e061f9603b102b173f25026c023241fd271ea24f5eaa0561ed2ec1f09ee42f67f4a7f4db12062e7afa2e7e10f37ad5a51340f0d89fe0e1ea50ea028806105688db4006a4ce3daa61b8a308f64f89986a3bf6d77a9aedfc34da200fc544c3caa23fadb8f9bc88aa9aac649ada78cf970bd8149d255c33011b9243670900b62cc36760f7370f91e702a1ce4515638ce24f9817e95e16ee5dcac43112120b7d00a13ac04b726f948211e281b9af0b440613210f0650d03f1d78e4de053b9800ed541d3658bc1b78609b78790196e19c5c6b5b5dc9c63a1801b92c439f2d3c36fdedb82986e74e9bec9531c3992a3203b38e8cfa356133c65948bd82cc6a3184838cc83833106aa7cf17e04a8d522fbe0642000d93b6a24f5555de3bef8cc162bf848a75d5df33108aa46609a3b691ed4bfce93020ee5bbc6600878122c3236871020dedb46b04f0b51754d39d89da74858fd0e741787072515a5cdd841d67fa6f33dfaf101868674b4efb40ab740a8480228406632cc70560aa9002aef479c3a2be9cbdd66c96b7569ac8a8d0268e62715c118bafbac4aa5ced5119000af698640cb0965966ee3c304a89b24d8fb9f902bf51ddad208ea140ee0a6d7657446c84884738858610d3230adbb4ebb97093b95fc61b32a4aeaf487f8a1017c1762f36962823f19d6a0011ae2f9fc8673a613982fb30a2d6cdf98fb85b3b6f30ecf15e085144e9b8e33dcf8fef93b100d1862ad6d6c6e8d634aea9b0ae97084bab5c7ead500db3d4462625449d079ad1f14594163c2804a6a4f66383c40e84c82371a3582d0ac0bce896ca7d43b457d1f3fc0a73e321aea5a10d935ae8443ac541f73c24a03d52b7024c04008a5c271fbc2a083d5f9fc8291749ab16f508a3f9c62f5eb23b35673b1b251c2a482673d6c958a05fdf093c43a931045559fc18905f5dbe7d84af378838133ec54c208f3c398b6e02288e64a5d0ff8df9b1e0c302bb6ea024cfa827f2f516508a9ff8b1529a8d21bd9a6bcea73cff14419065d8f04f97c0577d9ab5e7baeeb6e42890a4a213fd25ccca5eefb03b9c2e2ff82586b00815ff3eaa871c0f47564ac9ff11f8666400c4e4a43b188bf0b4d88dc26b3f3924cd983a5dfb2b26132e4cf552ac2414c4a7e910875f805b03d5d50076c5eeb1d607e2ed14b94f47ddb82410d08999264ceb8954183cfa34d68a8d78869fade22ddc8a2396a63851e141271bd11498c5200831d8a7eb314a300b89797ba2c366ddf344c99c41f8660313668f0f9e1f427b0137eb6e3268623c7155057d89c7a7512d900c6e4ab862533398166bec47a5853efe36151710290a24061a33c872829641a94ab900a41fd194b793a6b072a0fcf2f5418eba789cf28a9e4064254f6cfd0294ffc434550ae761de4cebca9f7df40d26596faa49e316575f0af20c6e32553b81accf68b036454a6653f010bf673a1e47531b8f360bc0f2f218033988e4441f3ab2facdff11711ba95d917085d8e3bd7d4ae0de37b0ac53a13313d17db7db3daf906dab40325a18cbf6d7bf2dd9aca2efcb7d11d24ec4c561fe30bb46701cc440071c0ef2f038b37229183da5a7ee8c84d2a0c8bc02da69d75423b9a238b8176a0b7cb923442d054abfbee6393c33308348178ab4678c524e76377391d0c4a83f39e14befb4d64374c01ab0011ff2da3ab171ecb6c0f2b8fdd14984171ffb92cc65751fa6058959a114bbcfb66a21e91201158a9197bba4dc36b3d83315cb29f49d123081fbee01327050b6c0f9a99d48c0b993103fdc5ff7cd00baa740bcc9cd795d40c8dac6b0b55b3ba7b2b49cd389f5ccaa6da0a6d6d9932d8d46ff89a96a0c102efe04af53b587bf489b4f48dd81de269d6a9caac1eb029631dee8e43839a241dadfe6871f26e446152498b28340850c674abe4a1aa5fa51b696db6e8cd8a1723fb0b6db9e3c212048a7356f512c5a48aa265d06b4937d16b94418f656eae20335e63b1b87535588d16de6ab8928c7b2c1dfba1f2766d6d03e15a96c12b094b8365dba322816032edd92018f8cf26f64c77bd87bd922bd2232ddb3fc68686cc63656ed476b3c251b1788f81ccf17f91806f3b206edb67d55add4513d41c4e1348c4208e39752dd8e6cb12c24bbd8843aa9366a6db39d97ac365eead15c9a1fb61dbfa6807525845ec4daf091c50b03374ccfd841f663f6e282f8b46114ca5e7689a441ace9c94937dad9f98a8678a0ad1617ab27755ae6cec6865c0d48235b9e235084b2c9c43c0fbe39a30c7b78e2bbd14389e91b6875f43ca189e43195a031dfd135046ec39564394383c9b700f0784713f85e1d7470de42644b251a4198d915ba8e37a5ef888f402742eb302be60309d8c2b99755a74cdb97f5fba021436caf39c08b1f846c50e41740ed6593118edc198bcaed263c2125d5e307203c93c9a32018422d86da5e4220b6da976e2aaa3a71b79146f6a2eacc0848c958b9a52e3d3fffc3dcfc0f9f3e64eb60292ee2ccb779049e50857c4a18c9f3b2cd46cfc9b77660f7069c5da1cd736e739aefdbe61c0e4a917065610c6e195e6c8aa9aa100b21497d4e2190bb48fa42246186c1bfadacf1d0173acf1fe034959daadc825d7e728202b0e923f7d2f9f0b8b9a95b98bf8eb4228fcd65e336447788a8e425f50db7dc0346103db520810f4cdbeba5de9e2c491f6e9482b5dd3e430784a3836d370ab48f364494bdcce920117cd87edfe798528b2bff2b114ce535008e23bf40dc10f8ebb34c6cb75106f0936e8359122248f0647e3826d55bae692cbf99ec0f0c8b6b86201444fa427ea6075c0b5615b6943dbb8cb46ea05840654d70143839d9f295d1e6b7538c706d4164c0d0c8c0d91386a7330c8416d4d4d0f440993fff016ab7847c74068582014dab4183e3b6521b2af531e7da9f60ac1bb529a8ada1c179981a61033476f03dd109375fc6e782824ffca44bfd246ac545b2d34c6cd36db0d84e4755a07c3d2639b76097ef52fbc82c09aaa6c03f8aa9b08c78d535bc0a92039d6cd1adea03a1cefc16cabb6307a96e7a76e8c8c233469c560fc4d340fd219e831b62091115367414d38adfc07c2e5d05c9a84319efea3814e8f9ddfc810986638dd1bba10739e002ee76a776522569d627a3eaf4d8f2d575b00428864bebc256663879ba56e7dcc6af054a2e71512053db97350087bac5322548421c143467500622301cd8a639eac48511d636ab65c6fe24aaf5255a9567296e1266b1873a39049063d96b861c4c2d19ae7cf147a575972a749929812d0b02a88cdee29c6d66555126d0ebedc6375b0b72d34c408bc587f36d254e1c754111d6a0b73da480c435356507482b76a15d45c9c3f2369aa32f76d53ed34c6499e3c4d23ca6c204a935dc73ec72fa50867a825bdccdf4673bf1a6ec351759fd2c356c2b8314c7ca849968f2c86d0c063a5c47fcc0f244db7a12ac93f3312bf01cf8f65dfef8b556494708714eed336a02b7de34773f2776cd20eda8a6de1c3356946a84280e0e3cda3e60d3714fc3cc06e8fd1f1bf522817041d4ee84c66a22bbad8b59c1a9fe08bd09d942fe76f6e294ad83d1009f51beae359bd7706a4c8f48308a0e07977dc6551d2788885a5fef8a1cb997ecff3498f2895773b5402bd3abec7e59cbc5ba6dfdb90510aa5b62800de3474733cbc155efdc6e7fe96c9bd6142c4a56c6bcd6c574a24a466d94bbbc434084c79a3fe092e879e4028f9efd1dc58b4df502c6daed5bb62b56d7792f054138fe784ce10966355a0d2771459fd1a18d84cb5ab1f196df173f7428a23eaa9c6be9e3845282724d5591ab0952356caba839cb71c634469969df50b8f8081c8e804767126fa954efd59f028eda67675ed6f9e6111e05676fac41765db4c76ad52b5b97c9531ecf16f5087d2540d9009445d2271d6a5ff5c3fc97293e05c9c848e24275c3fea1ee3cbeb0899cb040874ca2c94916f62a0ee76ca5c3fd19e610d9640ef5e679692d8d8e708a8ee605e71f2a214f1a16f3461ff49dba31bc911255ae903e49f7b9a63554dbb2ee9a73d32c1f724f44f01c9ec9bc5b11f44730c65d12ac22190c54a42e0f396889206b36585739c9b0b33344f824f2bece4425ad5f930eab12237084f1305118019ffa52e9221ce9570b91f12a56be2f03914ee4349914bb669a5b8dcc8a64d2dd9bce7a6dec926fca8ab482a8cbeb1bdf868e4a903247d5f3c0c88572e855f5b508fab3d8686c318aa8705781c262995b0404cd7a8e5b3707db6f98075bb36d0bb3f11c889be68deaee379e8c9688582a58116944751bd22a710690807dff7949680dddb6101bed5543a8899250c783f828d46bb182b8b42643e74bc1580a50cd70806cb52d6a6c2947149fd8021a65e3c5491778401185acc1d5ffc3e8268104ca421f3250a76cbfdbc1d73c74fc9d4a197d7c47a081cb7d14cbc8513728c3098526baf662c7d913665bf4074fb884b36e169695790196ca4fdc7d0a9dd42efb4a2a4c6363e605b888395e7f06dd107c66792d6971fae07defce8f7fee1deeb6a79f3936ca6c7d4452fbe98c9d38842bfac78e9c0c805fb20ab5b270801daf00dfc915841b08bf7c30cd1ed9376acaeeb5ce48c4d8d39828c85f68494ff183acbfd3a3b50297936adb562126a673b509ae37f4829cbb72ae1d089d18201548fc80ab486db49028cea709dd03e4b832abe29bc428d87d242897c23903ab8cd4f40829d518f172f6e29dc3cd7495bb2893e58b3121a18a1129ff601d778471c86cbf4471a09271e00b63611d6cacdb4c8a99b2f489eef5f6e13788d73c839ef66643f018735a7054e0421f4479dfa57246939582950dcec1c82428aaf0fb15efae6e52c274b217810cbc8ddee561917ec79af92e70e20cb7c23c361c5bfb33370ea179a70f0a1091b5a1a171ec63d4bb85d9cbbde6b775a3f4a1056ebc5881fc7ec58f68533359dd79600233fd1d006c36dd9abbedee48d3f418e109bd6526aa31e828318498fd039fe1389ab0b838c544c685f5095b729831284b57d6a022077673ee57ceb82d6c0d059b46807184844bdb9e2f335d5aee7164183bad5b3cc95b2020a749c195defa3620c4a963e038ffd0fa2f9c50759aa549d762c79540636d022638d984205ae3b54acc703650a72d8d5de806f6c43e370c5b73b01d2789d21909c0f958e88d637e2ce45014d9052d63eee1662e895a11aeef389d7a9a46437334501a15c34b0c9e0786ca9d7a76e8d17f671696eb53ec0c595d266fea97f93dbf8233be57ed9cfc667b9f95bb1a6065086f354cc583cd69a9e74101cf0065a9f3ca65085e958a1614e473e763dfb6c18419ae52f086262d0e3f9e725334e9df4ae1512b703dd0f33674f159b05ac7bc075f433fa6118e8138e992359fa548f20413fc6589c03cb3a192e2deb72ccd15139d3cfa00d45ba90af0a5e50dd320537dacf833a7c06d41e2427c4ef38f1cbabe01b42373054c7402ec92fb7d8b73cada33b3bb557bdc6f581ba0e7576f989a862601d023dfe91f48a07a63b8837c888366a8b9bd44f4b85f9bf87415e079bec57dc2dd4bb07a3c91878496b75d520e9e7111682f9b8a58fc7dad30057b77579a49ff02260fd7b2f02af115b4c3343efa01a0021ac01a4b5242032e955289f9386ba46f3068942319d3d3416819566182faf99978c0b0d9f2c0ccf1ad9176fac161f349177fe8e0c0fdbc1e26852cb178b65cb36e2f11d10c0e2772bf2459a14d353a7038744874d515387b1de335f840e4880646e8f18408bf4f6d8e65b1d2160d07f77e097c77832a6ae2baa4502a6276ff9d44b028c885bc52b58077987452572d51220815576c3cb8b6c144720bb0290229bb713f3e25cccf3f1e51a5e753d98b3049d30ce4ee447df112ab1f3a2df0820390e5090c10e30ee0f2c5498831cea9687a3448f72847a04dc594c66f36b61af454a98ffb76db7defe05d7bdb034a653fad10cb1b8db44288059db66087eab6696027c09c486981b7791308e09ac2410965a2d601aa0c59db444ed150037c2f8e3a7ecb50c9f5e64cd232d877d90c06ce22914c0e088ba53de113962a9fa276beca595cc5963bc1409b003d38e1047eaf3c7712641743c19de974c9d36353bb5856bd0dd2846652ed090a4c504aa92f1d89917240d9922141abc5e1100bdca5edfe5afb989bf43f089c2ced7399174270968b2f8719ffced5f72d6a3ea437d6f1b4a3746ca175b942bc8017db56162ed2a764c3cc9863faa76aaf083d4379b50c40b7d042b2b3e0b17ce9c197d466a3c0d74b3da99c12bc83346e98b7262e8fc901c32330b560137c2ff765012590c4d72e21d800ca320dae14b2c7d6f03d4ba56d218b8960ed19b90a05158acece35b15702b1197235780e29f79770b08c99d506827b31e857ddd2723cbf2eb385e0277144c0b11d1df10a789b634949d27b252bf1e444f13b1bce9d219bd5b378a5251cf39cd95a131495bd6688c3dab44ec6d8fe25f75d57f8eb7538b065e851b40eb2d583a88047ac78f918cc18f6b201405d0883b51a919dbe8dc83f5112c0b3ef98e7401b0ec95e9a3007a8b684a01b637a18c2961125a4189e08986911afa90b753bb66d25b5b6d939b4209e0122eab05e055fd521e4d87f25a8e3e671befe7bca31f415e4e49b03e054796fdd40b2f8eec695c76d4f102bcdf4617f0ff052d1dbe00bdb84281f391f7ee493fcc0c32526f58ba8c4bd9c817e0eff4763dab9140a9b2bc87a34417650a2b59e0b45b4054adf3451bfa281b2fd49272cb498c45e4e1fd62b5c2c52a62af33e0a5bb43b147482734058772184b37cfcdc3d7d374cd58a6c1aa980bb5e8ac04f103aef67e04465ff81cf908cc671c37c899bf27e33e93cc4508ca9744d2249c84a51ad7c880b146638089cd53a0ae810a797ca5d21a0f26add5664954261a11fd5b2c4b913a04374bc6c2a5c97520b965c88b0075b391942c6459d525e8f46641caed691d6d2e68b8a60ff2a005d01e74a967e16836397ec8416be52be05ce2a1485dbc1f3d87c91d1750824ab388430dfcee280546162a531dcd090e5e1f66177f92a017930c38508204cac0b210c12398e38a7254eec56e12e7c81d55e8c68e97381aabd755ec23c58e26776f9e11c2d69ca61f74580a4e5a35816a498f7770b1f12059db29c1bdb58b1ba02235e270bd80b522a5111ca8676ddfc3c2b83e39de8c329676e607f20080f4a4f951acc4374f4094fff67ac0d7090a03d9e1d4ec22b97249c31d5505119ae6de2fc32c50ddf9655e1ca33cc58603d55d22d9a1e140eac20ce8a688d70357a90bb4bed3fb2cb95380022eb5a788c2d2d58238c506c968aa5bf71542c9c37904a5612ad484ad97fa8bc274abf399cb662b896ac32e87923790a95e83c68643d7895186e6bf5af5945b5c56d08b939bfc84eb26c1f72fc484321a60b768867e5b5bbd07d5ba700578ed8d76925a6e261379f1186e5975b23fec22c426c46d9f7af90098274669f764aac24c589a61fba19385ee23314fea74695be54b03a0ea1f543146e332ca84b7e597f26472918c0b1339b4cecee30b8d029049cd7f350fb689b90855835f38e4d5a1fe2b301d2c313437e0bf6671c017b4882d85b28c6c8bbb119744b7f97f4299a5fdf6c65a5667af67509a7c7685657479cb8821dd47cff2780ae1af0633801e9a6d4f685ea73c65f67ea159bfc5760f8916f0c4585f11108968184a5440b7bdb22a68d6911c87e8814bdfbc492357e89a1e812f36d2b0af32285d9e50d098f85c3347bd521df75520fc244a3b9c530f23924a5ff49af4a120fc810f398267ed4da8c02ec72a6a4dc86581fb14b2108b8983e5532bd6690165a690d7d9c0b6bfd7a424523de6318ca660b865f185061d18101996d03005e6c03ef3defc61c9dedb17eb3ee04b9efe652038d24c76af80f5ec137e6d079cd94112410bf12a068a4d679abd50547369bd3114304d9659aee282081833d86416a0d605eb4e758b94e218a33e0ec171d03f25846cc264dc3482c6abe99d110d886344aec2b8aaeaeb9bb93170c7d17dd396d2ad9edae59652fb02be73d614b3c52edf348e7dfeb6507b217a6165d816308cab53598b1cd59f079fcd2bee937921f87a847e004243e16ae06c4a8ff1486288a2bb6fe3e78e7c26a0840673cf0aec36f76f0a7dc51154f1d964c22a9704f7471a46c895610e5c7f7d6b463e897bf7689574e31c43c401befa9a77f9b4ada1536ecc9d21ae1fe222cce40d935cab64b5d675f8da85c239ed44a20028b19453b0e3c6cc215a69901c55d4a7502c72250322e28b87c39bd8990595ec88bd692009a15ccd61d7450787033deeec2257693886eaa7aba578592342c22971cb0dc54d14e7b8131fa1951b00891ed4f303e57089d504fbe6d441d5cb45221c4e71ccc8c00aa87437aaf47c99e77b1dedc0558951edecef33e956ca5b34b8946616890cf0d1b830ff1d22e945459134b2a5a917f19ee32af13c51440e73e4303c381885159b061d46048d52a081ad35caa11dcd43408f5a375978ce11849b213779321b82aa21c1198f54d9e53f930f8f150c69e0b574dd7879513910a839f779034db19d3b0694c02a5a415225ecc51f4eb6a80c37015d83a9775d09ca624eaec0302294865b328fa7c248bee01aa8e3cd031ad6e239de07bb7a4f0353e159dd6fb057b7d3e418140cc1c87222df901d5f406e95e83fe427464e767f65b37d5c2faa15ce2904496e56cd1e045ca04475cb9e0abedb71370edd8d3a8599399d0352f60ea7732ae3da7eb3bb04613103d1f06c08947c0b221e70f18241f9a55df80a0648635daf2b2070af01ca9639551cfacd1193597b0b2c18833bd917cde21e506926f7f210630b81c8039b46b553ef995926142cf8d29c7052d4849559acd7bca2382e300e529b4d11323e6b121951c82dc75c01fa5d203cd59d020eefa39dfff71cf460112c67e6b12bf322ee59c4bd1bfa61d0a5e27e5229caa1a1adf802bb04984220ae63ef45da05995c13ddee6dc8cc3ec0e71a8d741a1edba7e5c2aeeffab5b59c3745feac87f9265605b2e3ada21ca4509e3b7ec2111018abc8e3502cf04a76475195504b03581b06223c96dfb13e7f63e1fcf5967dec001e23ffedc191dc056471dd4bbb42d3da14d5dc0860cf3e2ba2ff15ad0082c6fd0b5418f670c102cb5eff31e20b4b3f4572380e1087d78983aee0ee1e6f9c87444eadf4ef35bb59d1952bd4983b891c4932dd67088c62e681fdc791434e4244687472d9394db0a2d6b8e1d22380b42032a182b62a7cea9f900ef3141f45cc4cf1779550df13cf1e10ba44d282add31e68ac137580a7256c9a35c1bc15c64d8e1b8e748f04bfc2b92862437c8ae344af6e632bd402353aa5ae32da386f4bba7e3e714ee720b50a56b7dd7212258db43143d892d06748c57b85a5cb1acacb724a3ade1282aa50e2702c21b8e584b70755572017310c8309f8d56e63b88458704678cb8a20112357d856d3780d7e5d7e6c35ea2824d4a59c0f5171be5c10a60b9a07bbccc0f77500455b3b79d7524a740e7fc4be1188222674bb0ee06f270a156b098f91b152f65fd0841971a4db95470c06bb9fee368f6014638427059444ff66e5f9ec8dcb0bf4c240bdf6cd684f6d7e10b2ff99afe83fd88fdd3f2ec9778f0d141ea7333bd55097da34ad28e843d9304c8a39f20ed91afaf26339789ccdffe98356cf99c944ddf86152a7f53b5ea89cc438248431b05071e8b58815a3b4f554fa49bdf53e5405d9f9eaf8150422cf19ed598e8506b28f99f1301a5ed2370643ac1788d98b5fb1cd98253200370eb19e44498cf67aa44708de7b3d5093df6d0b09b0fc8ee487634b03b8081a0d409872fda4ecee170add929f14701af8c3075b9d98f62f563d49fd92a5f06baa04008e38659f7789632a18eac35b75c6811dea9f60583924accd42c3e7cd684965007fddd688697e020bc703c13f04641d2aba59d090a670456238646ef02cfa0cf2c53ad08a66d82c0c27c84c44ff8818e7d86b8366a0529267efa456eb3bf8fc08411d6a0ad101e4f0f13ea15439028203b8cf757846ec26ffa56b19dbb13fd62300dfe7bb3a079c52c2ccbc9094d5f806bdc66a4533446c48acf7fe43a5570929653ea63236216a72166146f1fb51a48915918adbbdade8139910b02c1224a30047969e6701a3255efba3bb78bf5789eb80daeb4c4369cfb38df3e23246afe4ed457956b29411af99ed79fee298017375cc2bcf52f5e73ca066c045d658e1e9400abea347ff15939d3b76405c0b47b1fd24e8abf5c377fa0d8bcac5309ac06bc69e63bb5670725db1f45dc3789452cec06fcbed6ac018b41f670b2a547201957903f476c4ab2bd75fddf5666dcb13d09332d9b5f0fa936e5b952c5d78c35aa48b63d22c1e2e07dfb3663d9b18484bb3c445bc01030397346ce4de56c16020d40ebd58e1e985300106d8529dc2975db51d3704c954db5be42c885e223aae04c2c095e9f9ac0b279f236cab3bc111b20d4cf576d16018fca17be356180306f40978bcd0e8111e1beef6c797a9ad62cd5168442bd5d7623c4bb4e51e02596d1073c223cdde3b7b08678d51b2722d68829b48c69edb8267a3aae0b1603e09d34def18c8299891629dfd406fac4864260397249288756ba98c718356392b8ecd8d1d79c78d55df497c3f92f502b13e56a98c47638a5708a0a6e8ced60a529999b10b3ad711fb31c8b1de3e86a0f1634634c088f22e708fa842af72a2fd71159f49bae0b08f2f9e1e11a1f1b8d048e465ebf16782825d566101853ab7a8b078bf99e324bebdbeceb3ab4bdbe03e0ccbc2a470981b844e3c6d7b19e96b95a1b0715aeff4acb4cbcb5d3c52788d56b216e71434b620902886921ed36a1f607d7341a704a423df39067910767e6ac11e4d30ab16e822da88674408eb57d2e18754af2cde68732012da85297d32cfd6ef6bbf6e88020b2dcebed28146d7835f036d0d1a573942de01be8642f5523535599bf49bd609a2da46623ba192452347f3fd8b1d4f6a7a7cf4bb64a0b4fa949436e98dfb2a523f258ac48e5b3d3d21c1f0860fba8658e54313dd5e36a6d1b823f99ec78df2fbe88f910287b215867b5d6b54f5d89c2e9d29f10f24bd1b0aacdc6d312f4404480a8582138dc818bde686c9533011fd89137143a95acc69d4aa325a50672f2370a8d2ce8275291966a85da7c06be223fcde18fea9dd1639904a55c27cb152ba0efd06376ae25b5b9925158c1ac11cec959f9c90af27a62d839adfcc9e9e2642108dd1ffbe4d9cd9b76463bffbce3a5867ee31c1e7bb422b7dd8ceb57df505d006bcd16074a335b00314dc7e1ac4a9b1fa487c1da41dfeae14fa3a15bd59c4c07cd1f7eed87432f1c16ccb453732a060a94c08fce7b28e915b06997dd5fefea2e78271fcde79b8395431c2dd5cd0dd3248c9336d54acaf0a4dd9a6a519d956033f91d25481bc69c9be5595bea58722811678900e01942c1d1366f3c00891bb727db9c92ba3128426e73a0a8ba0302dc84e12de107026629f0a24c840d950347768b1baea05188d7ed148d76e828d7c7559e2c45adc403e880c0a917667adb436489eb1fb1e39041eadb2296b2acf936c88e1f2bdace75aaa7d1b4cab8f49a7ff1abcc7627b9ae82b139b4e9048df5b8b7738814cdab7abc6c01cf4b524fe55860d95599462b85489ac2a0739da92bc898f440fe15394a6e8a008ef08fde3576a008221529067deaafb01ae791a514ceedd6cdb40d0db338137fda2afad735128ded8eac52d524072db41178e340d90464bbaf2a66fe92da60a9b869702c92c6a82d9955d00e96da2cd1d5133ad673f50aaa0557eab0333c08494126e38911a626cabf400add61f374936650f1a89448da71e9c054f4d2a4339800cdccc0a0a456718f826ab523fbfec7253c17135dd9802829440650e4db72469b51987bf4121f498b3c980843aadf888cfc024e324667fddf7c51d1282dafc737394bd77b58af68e609f8fb56b7ea324851fc3d27731c7d5a0b70c973bbabc4a0078c97e906d8852966b22929f3b814333d72e1f6b7285da91c014ae2fe066b253a6f72d384e18c86c399deb4aba02ad156e33defc68aa99e701da22d81fdec86079d981d8a00854844c47c20ae7c59473af8f0a4f3777186a442f9ce1bf7d75a9808cedc575dd8d26f93f1891e2a72321b8642e51db9bc0793aa35873dcb2b5773c32d3885af67f184670b5035bf71f49f99b3ea965f0a7a2b350c52ab5b824a6d069a64882618499d35373c05d85c96b4d07fb38ca697c2ee3787ee3d19e869e721719732538f3c297431e966c1d386da1e923b671b4719d545a71d40fac0f13db7e0491b590440bd50f76611ef65e0c305b35bdf2226f54ee95777c192adb11948eb2fc3f7dc58baa67fa7fa81bde54f854f4e3e7bb4276231392cb64ab3dec3fde8fe6f34958db71c3d44f8f9913da884f26d364f0d35289636173ef8d94086149ab9ef3b11a13763f4ea72b32a8e2d2992203029545ac0b64c055cb50af7b4cdee48799df44a56554af8b26c506a383eb686159a8ecea088bc835fe370ef2a76fed27d4709d9cb6265e3cbd6650b83376c6ef8f520b82eb9df1d4bc98d21119f2f5619e410036a04d1c94de359fa32c3804a6d38d258394985e9f890e3f19e80b7166a6b0c6958415fd464bb3e3974e75e00e6d749a908e8511d4b0a6c8681e73a5c1f480ed68c21449a7907ba8678af3a98a13481ff1c2c5cde98d817bb4c689f835a82353dfe7de0785b4c37b07d639f49557dd51400b51fe27017fc604ea897785a3a252dbab7aade5b2bcf872620d5c101c15426724b71da8b88bdf0d112d61f286d3c6ad291a782074a10d96d15b660fdafb856261c75902353d03e0782523c33c7de7437a80282e762711769b1a0949e67d1ce087346dd1442d23d935ca761c4529794b309cb08ee56285c9155f440fcdba800b2e6ad3a09a843a7631a71c233dbdef7581d5535546c9936fc9c7705edd2900920ceea8c205c58d62d9c159a19df84ebe9f361668e6153e221b8eede114e8e34a7c4fcaf5dbdab662a9591c723d27d170d7f7d6a1521cff960f02ef90dbc8353e28c8dc2fddbfda4802683af095f1a33175634ead07a4e5b308e5dd1cb54077c1c0f34b6b85c2f4235649c63cf1dac0fb42febda1357d5809504ada08b30db1cbb092d5e13f2163646090370531b1c87873dad2e0a36f375f9316e3ace139349a069c3d4d2ae4a0b19b9504b095555059ebb453cea7d7e72c9740ebb2f05a6b7a218a782bc2076e9c8fc4796aa247f6bd56c8a6b5451e994a1d1c45dba2aa8bf0c777e972bd423db0ae242914d2d2f728c787484514cde9f5bcc08b5861352cffa9764d4ba6908357f40ef0fced1d2110f24777d2d61404ef34d6ceac7950e40c1d47159d6e36f03c885f6e0c0a6a33e70605be11ba434a909e19433c7eab81b4ec224c6befce5772baa1a1d07459038d141e3d73950c4ccbad3e41c055628886ba87db21c8b0c445e3d620156517c27cd2fa520d4bba3b431b65b2104364fc299c2687eb9eaa259b5d10d2835c9068289210cdfcde07ae52d722e2b2425644171674aa64b95c6971b74b99c26eabbd5a9d57eb20ec6203aaf05e9d5c304e42930eae30516b4cb7298a9af56bd2ac10a5382f5eb3de15dfbc59e07d60e50db85bae3321586df798a4421bcfd23915018002a8822ae856ba231595ccb99e6d3880b336df07f6bf08110410c00a3e24227befbdf7de52ca2465d009d809ef09edf5a87d3a886faf4bb5d6d3549dc000f9fef66a556b372ae0941409e342d593b2bde66a2d03563a54b9411543133c94dd56df54a872d51ab64276c826d59a83f90e5e8a552a6dd4114a7c716295fee630e082386b0d6701544615215c19c3ca66c39940a53150752d957586ad0c6702b316d822359476161382a3caadb4325ba486f26b5a0d921108ced66b95255884ca1613e5e3a99cfed11d42254f9472faa4327c3a96cd52acb2e6a1440fb9b2877414912ba911233ec69456b663450b12328829ad6ce66c94a21dab8c16252126578a77ac32eae4e996548add5865b52c4cb752f4c62a6bc14f1494a7d205364852096b02501727f8ca347e965556c3c1085729cac8f8c0f97bd008a732fa27d50e460895a20f3e8170280e9d955e5639651308cb8c3bb0a3e02b0dda774a9c3b2618417777df6b8296dd708db5cf749857c72fd423e2dcc960920643c410f5e3071b45e0caa98413243278f1618a274aca06e2a7c71c37b5681873cb71849124aa94530b16265f705ce5708041d93ffcf4106acd044f78d8b24505ae258294d349a8351a49508e4c1165a946d754397df8e91ba8b520199c8851a2a38b2b4739bd03b576822d2851403142a4840ee5acfae92a984e85e60b3f9ddaa6d3a3e934693a5daab51903234a7e88411358b725e574da546b345e3084094582d03045938f72760f3fbd58c56088122c3c926ee57c1589d10104d4981d5bca89e5a7d32d1a060a6ecfb4eba77f4ddf53087ebe846ab35460a8f6b94dede3d43eb4ce3edc4b4638f4d6a9d59c2e006c9f7e6f7b74b2fefba74f923d657c4274ba7c42748c10c0671d2c9d2a9d2b1d261d271d289d289d239da3239da4239d25a6cf3ab6d7671da32e9da1efdc22b7c8ca2db6b8a8aabe738bdce209c7e716b7a916482d94bebd8550fbcc2d887ae8730b5b8b234f891c319e123963649f73ba72b472c2e4e044cf3955395639b99c2c2f4c4e94172687ea13ca697a12cab939f99cb3347ece61ca31ca41face385c394748cce71ca21c1b96d677c6c938b88c6395c371c281fa769ca3f6997192bac6679c259c266f081c21de103828f8671c239c219c2216572cb05868b108c3a2cbcbb1a0f2722caa74f8cce2464348484847995944b16062e1c4028ac5120b1b8b2316495d2c86bef34dbec9ca375b5c37543755df7ed3d43ef3cd13d1e79bdbcd140d374b68b8812183cf374c3748374a3745374ff54628df10752c4cac6b2a969b8a654dc5b6709f6356dfb1ab28aaef1c5bcab1a61c7bbac58c6248dfbe62aa7de61538a7cf2bacbe57e43ecf2bb0be57785ea1f59d57e498508e11c56cde8f1552de8f1dbe5744ad705a0155571cfd8aa4154b2b9a3ca315459ed10a232f49059797b442c84b5a410424cb67155b2ac25c617d671559c514e5faac0267a582c9e93babc82a8eb28a24154b365d2a86bedd26d73eb34d56b6d9b2e1ea6c86e86cb4c43edb5cd950d954d928d930d938d940d94471d9d8b86c8eb86c92b03edb10d914c1c2c0ba6c86605b302b580e96058b8251c1aa6037d812ac09f604338221c19460b66fafe18209c188ba2b354d74576a9e58f1b9264c0d568d56cdd4b7d750d5e06aac6a725d55d740554575354b4d5dcd1310309f6b926a946a8a6a8c6a906a8868b668b86a849068ae5478a6c1faa6d1a2b1a2b9d14cd1e06898689c68a06896be9dc6467344938484860792a79e697c7cd314cd74d10ccddb8cd64c98a5dc52d64cd5ccd5d3cced6966ea690697c4e799a76fcf3350334a334cdf7926cfd8f2ccd14c5298aeef8cadbe7d669ccb386b0b4761aa6fc74bed33e3a68c9ff0ade38191743c9e7ac649be3d63256c849164b464c27ccb7461214c846d9d4dc6aab3c9e43a9b4c1610273ecbe0beb34c1554d47796c9324b559f659a9e648a648cbef32bbfb8b28c900cd1ebea85f5edaf5bfbccafa9223ebf702fab265e3734f17a02fbfc827a31bd9c868acafc327a21bd94b8c82d2e928beb2574c267322bfc4c6a91559ec92bcf241689239fbe3d93b76f720aa995be992a12e9442691444fdac8a3318ce7b1eb9b1c1ab7be7db41a73df79cc1a62f46108207eac1aa346aa1ef3a8f4cd34368d4fe32d3712e5465b6e3cfaf17914faf63c0e6985f9ce6216ada63e8bb92ca8a8ef2c6671a9ca67b1e9492c128dbe3ddc6a9f39e4caa2904874738448dc1c497ca875f51d6285b7702ac48556b72874ba4521d43d0a93ee51b8748fc226219fc3239acf2152a50a876c66f92b82cd2a5518e66ad6374d8e0bac02afbe33f8f4ed3383b7253e835320ee32814a33b3fc317d5f26d0094cfabeb759fe6cdfb323eb036882f5e1846f70887e612a6d9ff9c3d2b2aa565639aca6c2aadaaa4f5bdf6deb9b4af2f96bfafe9c3ea46f57face5ffe88f267fb8eb4bebd30dfd9cb9e95cf5e2eebbb41d1762f297b4bd96bf29eaa18cf481573e43d242be4150979465765ee7265eeb2baad8ecb13f2886c15f76debac60f8dc4d7de78e0ac909090a29aa0957798ebea48a5bb24ddd906dea8a6c5367d409d5a69af5fd6dd5262e1b551575f5edf7a97de67b1bf2f94e5d1c149706289afc75eaba4ab48be9fb1275beb67b7493bac87675d11dea239b75b47564b9a03edbdcb7678bc544c554c57435756bba3ddd6e7d6591faca2af51553b647df5b9547e86b6bab455ab5e8a9575cfbccd58a1ef1b9e66a960cfa63c6a09e2b95ef1f56be2b9511d41b45e59af4ddb6ccb5e9fb49a979682bb54feab90a113d6d92fadc5c329fbb6b0a6b4aeb3bf7546e5c6eab9c55f3d0ce9d947ba9a9e86956f350cf3d443ea55da60c72c6a0def8aa7d2e35d6049aed948a3ed59ad3174e4c5d7bd14bdff4a8d648681eeab8a1efee5b2a48d5b76fa07968efd446d03ced1d681f41fb501edfae829ef69fdee1db43e86e8fbd70387f4749522fda1745511445712aa9c9e6ad8f2219244281b317e6a9d770611a279cbda7bf7598de5a82736fd9a7fe654d20fa71b5cfdc2185304ffdeba20e0a4d20eaa0ad7de60e448a78eaa0117510a97d6e5b419646069cbda9a7fe9a82b367f4d45f5270f6929e3acc049c3baea747bce7350006488ee8c8218416164acf71add1f83166080c3eb248b142aef4faca7b9ee7ed20260ae845e1dc553df59a283877b9a75e0304ceddd253aff9813af9ceed87635dd77553388cb478eb5e470675443877b6a72efe80f3e57aaac35fb71f6edcdfab83094e346ffdde1670beb9a7fe2202e75bf4d45f43e07c8f9ebac804676bf5d44527eae20c38dbada7b8e6a1d6715b2b458a2f6f5d015d134bfb1f3081eda9cfd9571504ce1fee29d6ff87fbacbefa571d578fd5315fa77804c1c15b32a8d670c15e5304f51a1b3853a5a75e53038b36700d9c5f3c755108e79fd7c97a30a90242805530ae5d7b66cd8069df9eb36e31066c63312adc7df6b16997764b40278c09a3dda6040f4c5d0cf2031f1571c20fa820453bb0d490204358ea28cc97133661322d6a60a9144cf8e900d0a9034498541d61ae559704873a501d8123d2a45bc23442ae93fbc44de2821320f08b298747277749874387c20e7709db1f160bfe92744a5829a30ab62b35584dd1a66e3f3d2d9565f5f359e16e5f65d235db56078a35ab3ef02a109ef65c16b6725fb78207c31111c63ddf27e509ca466dd4466d9d2482516da3425b6d9fe607b669c254c0dc3e37d357afdf6cf7a6f66d0d12b5566badadb5d61d39df9eb10d3979dadaee5a6b6bad15cfdabc1263d1b4366bef50a07aefed3cbf5e77efb5d6da596b74f25007bf99a6dedf476e6676982c687e7a4febd676adb57677f7137efbd52d8db169dfd8f56d44c58813fc3e70d2dfe0db270f0f7a02662de613f46f027d0ffa0f95e139e840f400d4e73ae8e504b20e8618cfa88ceab4bf4cfe37fbc609d454c6f74d9294850ba04fe9b4af7096c9beb2198d413d566b240b9ba7de736f885394713cb3cca53b6f3fa7ed73d659e7dc691a9d30dab3cc4ff726d0f5e9e49431d218edd3c51debed35b306eb9ca79e71beafd70763c0f9450368bc77ebd75166facc39760c38ff7c7b1f9b30667e6cc185f38c6ac004a23326d0cf84d1b4f660facc497bd13381ae7fb35cbfce99259f7af46bead9f58c630c8fb0299ee77db87dfa4a1436cac7141ec85c81e131e63d232c67e7b643cc67fbbd809b667d0c22419d42a885119ef9a3325ae8bba5f82af302a69f0fd9fb3a708a9f31cec9a187aa9ff999430fb79f2403584c7ddff7755bf8f560f0e8c446e150070b0516715260300b15ecfd940292c44502cffc9402e2c4e501db1f30e02f4915266110c22094ed8265be73c2dd679c43bd672ca4e03c6f21cc90fa81e5c59f5244827ca6dd2a5bfe79ec672af77d3177dcbcfd177bfb57e9e6bec99fd7663d5fa37bc4b5f4f9227dbd495d6f51150a5385baaebe7ab616eb84163edb325badaf389c55cd76ca2ed9a61d377cb64e3765b64f51cda3a4658bbe5aa3af35ccd7ae1c429fad901d5aeaaca52d272ba7dbd71a55a78854f85ca964ca5c715d9dba427555eaca54abad1a7139e2733d12cb5c91b2aa505625e2dae2e2b292f1dc5739acaacf8d3553e6ce9aa2aa0d6515a5f4b5979aa94bcbe76e5251e6765aeaa3251b0dd3a596b985be1261555d55a7523f4ef89e54d03c4b62a5361e559fa9d151085dd52a4cd574fa3c73b1ce3f9d53303c78658575ae7a4f68bd05e1ad834006d9147aaebad65a452dd449cc25a8cc50044c129225ac94585050fa62841427a2782993725ab35c85a82c521249c41348b185b40417244ea0c070392285832b858ec107864d7c09b3429a7bc1def39973de7ba2e8bdaad2731ce63d8f3941f59ecb20833c1c651edfc27cc0729441985154f30a4bf6796a453501c42a09a7b71e4bc2c9968fad2d6ffd670b8ab73e4309286f3d842584bc75129640e2ad5f8089db5bdf409814de7a07c228f1d681c820bbd534e800840e2d5a80c0a00c81721cb91184101b5498326c243e4c42860fbd00645098039cf23927bf78f003304faa185479d02de8df0f0f7a0c8c9607dd953ce834ad291ef49e1e1e8c4222f760540c9a3ce83f6410f87d9fc73e2cff798d0cfa70381c5b4fe3f334ee4306d150e11042c5b30049d118a5169ec071a3449244c506176e984044839635400e8e199298408523c75b27001964fd0332087415da2f535fa7bf57172a07181ba18e24afe26dd0783535d309fad580e910f33087f900c820d8270032e8abd171c3d7b8076450cdd7430679309e268aa7f11864100d088220088220087a00c820304ce143874106859f756c3d666d0e216ffd05196459209ae13bfc5ab325aed62ce5b2e552fbcc6bbb4457882bcc161256ed33e94f27bedd36b5db25a2aaefd90fe6699c8065c4564e09150b52ca1c24a28a505832c2e2a3ec9927bae1a97de697a76184c9d093922c4250594a1a4662a41cf18406a61c4094fd39fe8cf8cf3fff3e070019f4b9e79fe7d89b5cde23aaf29ebb20833c10044110044110741e3208ac3fd671559314d192b74e6ba2297ec66dfbf8cf780764d00c90139420057002949e079d033208fcac7ff404a9139cbcf50db2ac3c76ec3b64102e5244141b0a04dcb21e17a81ada63892050366040526346554982a5e805545ea8d147d4f86aed33ec3f2e43fe6ba1fc1c6bf9cf352083be98e79fe7d8a340de2bc2ea3d9f91415e0e3e98cabcf381b5fee5a8bc75ece3adbb0a6fbd67ca9629ec0fe81fe818cc7a3027e5417732089c9ac2b2e1655cc63320836480603111d9e811eb35c05ac35ca278d0ad0e19045a6badf51664905d5aea2afa97db97e79041af2429b836c0b1c483280b1392286c1426705d35c61001441b51c11b202e08d8b75fe9e1480621cf282988784ba4b48eb9a6de7a6c05289678ebb428a4defa4f14586f7d861434bc751c32c84ee59d077d8220e833cfa907710f824ec3a88b13548e9058b1e5284124425a00b245a4288712f4f2a03bd4833e830b8707b9983ce82cc820304744f447e478f2ea49bf21834816bc48213302ae314947536c4a924820e724d534a607ac19ba0bf526688d507a35965098a3e6e6b8a1862a37688101056304c91352a8a67081cb4746f12df3ed96abd65ac080098c90199848592afbc684a4a51f466c4f5b65fb256a9f2ee2dbafed1adda35ac3b7fd2a758d96b72c24fff2e15f1e23835eb9e7ad4f5f61051964a795279d3ce92ac820f2fbfe8bea91032acb0628a84c293fa717be506982030a546e94df96ff8c90e13fb721833e161f1aa123047d66d8839e731e2c52828ebb8c79d063541e8cf2927bd06bc820107ccf3fcfb1e7312faa8b13ef390d19e479076c3bfce876f4193268e421c5479f7c3ea6d44caa215d52b05449898a810782787a82698a2d3bbc740ef479b3d6c6646676a170c4082927a0e8b0e27304d150120c8a4481d3e2d59ecf301b8ff73cc743bce7980cf26250ac92d23aee71e36d8f281f2b045910047d82fe2283400dfee361f59f9364d017028fa217a75ef4910c1253d831c603c2d2c5f582d09118ac50428e8a4913285a378810813d7a84a447acd7f8ba6814d1a27a2265080c463a94edb6a9d66830e121e90956aee88955d96e9fdaa787f8767b8bb253555b4c1fba0d5d248342d0cb1429784122f2f1a3047b18c249ccd31152941495e0d583515cc23ce8211904facd7f524538fe73900cfabe0f0c390148d5922e31c89576fa30e4e488a5a7312ad4286d962c24bbf3de8e2cefd15a4a99c7bfb0216e96cbe3de0bc475716b08fdfd6a50f9ebb1217fdd6d30f1d76955fe4addc8f2576a6886bf5226e8f8eb1d1974812cf16a9a2424246423c48db632c3de56f528f38bb7fe010851315ec8fa87e3ade31edeba8be1f2d6694ddefacf14526f7d8691b751639ab0380ae8d024872670436031299730c2829621a220f988a2cc3d7f85f8fcf3f7af7f78007fc5d8e86ae2afdb4bd53ced608c7c00be2b827315faf62a44c4b7d7a1f621bfe71451409a60a2ea0542a294edd5566b3b433752c092a4a48820ca3f6ec639815684369c1c1b9b1970c645bf15e67151fb64bc03ef984039e374b1c518fac0d4c31e198c210f1fc3224c3ddc81a9873a3418c31c986e3026494a0a6d21d1061c8cf384cfb2304be741ae09e343e2609c62076378028d67b4201122cf18e27031862600600c875e8ce10d18636803072046c7e819674fcf8b94f62d9b3b33ccaab56f76a79aa75f7c4f657dfb9c9229c2d4f39dfa76d183714ea09e9f2e7ad0132300305e00c0054fcfcbd635cc0771eef8bcf7fa4fd37ad6df8761df730608322ffc88b081a7fe038200f075d9f8d3357c6b1038fff8e40f4050c007e04fa9ac29305cedb29685227e4e9f49a342644b8628334891a40051dcb001a4052521b094943ed10ae22483101b443f64b922c208090e4db05052b7e1c2fe193ff5188d18a85cb952b4439214a050010a297421e2e3851a924a1a420d4acd339fd6a0b302c65f10b61f9662e1ca52950b42744895d6c284f0fcebe3dac6396756bd24f4f4f4e01e0cca5460021c2d4cdb49a833aff3eed5c057b7b2ead77bbeafe7eb714f04757cb5afe6c4b36ceb0875040dbcb52554d98a65e15c4f2761d666e0dbcf079bb3678e33947580035e30f519ddd519ef798dc53acfab53b1730a634651d0ddac04a04c83ef7cc7920f904d5ae71b60e09222dcbf7ec907d8075dac93da0ace7ccabe730dbc0dba3ebbd96e6776cb2bd2ddfe019924987e00f61d98d5f75e175db4d85aab5c16096d67ed59b08a33dcb4be5ec29dc1c08fbad7930513ad887f67be785abb7b86234275ebb6fa0760dfcdbe17eb5bfa52de6d17b77f01193bf829c574c4020e2cde07ebee7ed9a0230b9019b040812b9bebdb635ebe7cfb4e09aeaeac1cc184124668f1f9ba4ba58ee0f2333fa55668c25aa9de186bebf5386320f4fc303da12f7e4a317d79fc536a852e566a2002be7a9ed9a11663f2d4d1aa9220f3244c18d54327707b8c0a835946660255c7b3e6c1e4a97e734343f3f9f535fc1c23fcfca23306480493306b1b3812328492125eaa5a28ab5f60d65260c41020b82e35d8bacaea1b98b50f4a485496313a6081a1acde8159738015196ee0ac743179a2649a34c89c39a6e3e9c4ce371dcf23bf838514153a44c00887a8252f902282abec27befb45952b5252305da94043d94d6c96bbe3da70020a861e2b0cd9a108d30d296e4d3c21d982c4891e702b3e9c03c3b1eeeeab44c910362c4aa64218f60afe6ef60b1669b851985cba47f08b88144a7c4c29c161c32c4171b4f46509889a9d1b8645b182c7265d1393bd61d891bd5ae2a163a9c6e58245272c180c22918506a72a090f4fb0dd6128c90db8d666749219c2150a98b719215c2559ea54c0323fa592a490a48884752f2411ba529864a2eb01632e9609bc826aca931b5a6032a185a4312d08b13db440845b0a899809147ecf647ec0b35812a6011305d7fc9442626571c0373fa5903cb15ef0f7530a49131d18f6530ac90ba20c194292830babf829a5c484146cf3534a89081f4a575ed06230ac8006cc084129876f6f8f39fd29a594f4323fa5946650d2e1330d87917477475e3721c591fe7660789c1f80d0f3e3cde90400ba8e9abc701be245a9ec2a3d8244e9110417658ab29ba07a224545e4bf9f5254403eef5ca12bc6181e61ddf341fbd78edb46a1b2aaf13e680f946285efeef9798f14d50ddd525f827c11fa6e87cc373588ede4c49cc594febcbb67971c90b4a4b6bcc0845349e3842328cc60849726627a74982d27babb819051c0bccd880dc04bf864ec211eba2bdf5dd9fdc95c89b5c79cbe3da7eac97777b7cc15af2727f6edf4ed8705289d140b3b7cc79c86f3538a8516befb29c542d2e71eb04a04b5f0f4e969e1299524f439b6f5117d25e89e6c08c74f093ad15786a125e243024fa92339a923565247705ff5cee9b43c5e804356f912224ba89cfedd70c1564eff74300284550b3e202a24952e9839fce06549d9ee1151ba00f642d9b3b109403d4a4a0b51958d20a6aa4cc1c50a890ab71ea7b2872eaaa5322747391dd32a8528a542932be58a970acd6644f0d567befabd2cb85fed78e9e401a908e08f2e7a054631f40b86b2a1d071e5e959796cf53c3ba3ced2d6af92230ce03f179b7c813314f4fd3adb82fb755dbd5fe7de8cd2af3b9ef18bed3995954004fbe0a4b1e082b3126e095200be15e12b47d92c65739ccda608fee699b7f55e1c08903e7a05c8d9e815982e9860124caecf67d6d3286994eda0281b127d940d8deec209936072bd09ea5b9fe59c1ee4eb5d974372016319ca6cb6230ce03d17c5ebddebd90ebb5b245fdf25afd7ea006f017894cd52ecc0f6a010a58c88b16145d156a07e6ebd9e65fab553b7a595799efd6674f2802900bfedfd6edaddf3beea0c05fd9ed74b5040bdfb79306693be3d419cb5b6842ee99cca4a208215c1fe472bc17a4f6036278f0346484195655084cfcea7f1e0f89117205a42829f2fc104f53da73d8d12144940c77ce7a06c08741c4b48f0f326a81e74b34c69d8f2fbc8116aac3882b22528e8b74e657646823a66cc37d8dde17d79b3912417609d2e199acd26d34e5bedd99cb4f67a45b05e07825d0d3f19fd115af0362445687700b9001adf63e75d951045a0dd5be97513c4fedbd276da5917af95a1a06d77aba5f6d296417cfd20809a2964364d380d5506f37a063a73fa5c6bafb576060b6233c620f3da228a388435445434618235c40d6ac6e0e962fbd319073434b980174f8203fc943d0d153c655736af80a1d88d94ce50063c6513ca8b1fd6d3973da5b8d65a679f7db1369d75d66e8a38f0f4f1353e09e8981cc2dba70963baec5d406974572d7102ddf772984821e9275048c122ea6237d209f4fddc21e5cb964b2ea093e2c717267e4e1ab5a40b1c309d402e70c07402d5084c2664b042c2cb8e187228a29c93874ea0768103a61fe902074c5d04ab052748c10f04bbf3c02bf3ca2df8f624647074c0f467546eea67d3a0f0ac015b2738cf2b26387f4d70f6279ca7166803269af9731bb090e92495da03dbfc5514b09db54b0465c03fa3e01cfb8ecda004e779f54b38fbc780f3d47a1a304d112d50ff84800126a9b8cc4fa9231cbe5b2cc17596298f973a7afa1e6767d520a9a153f3366474823877b27854848351b07aea0d9875663a4e25617a036a19343df5175d635152ffc0c753ffe92525f519619eba02da67e6e910acda136ffd746a7b52fb9a399b84d805eb38c156a706ecb5367d82478c98c2b483852998d802e207488d1a4cd830a225c7d8430b38ad15868a886881a388208c607de9b25152af798239d0b4e93550b8660a165f42766021180493a736f153cc4f137e7a8efd07b05716609200f2e506d2d2133cf434c58a2886aa2c25f4a852840922baae9e642009304b462061e2c2a5a46e65332acff42a9b9547c709d30f97c0d4bd3681e89281a80819c414c1a3a44e9b350ea098a4346132e58b1125f59e59a3e1036987282b1d4caa0c95d47f660d01434c7de1b1040814ab927acb3ad0b449bf7f4a0d41e1c13138531e3f6d0fb7717ab0d1f37e4a055bb650a1160c891d500e7a831dabc19d7532cfbf0c409db0859833e2902c5e373231bce2fb46f0be048b2bcff41a18acc68646c5cc0a1c93b979b12071c61cb145a80366f0b927eb665703bb533ba0bd3e5cbbe6aa7dce392d1dadb5d6f605422330754bfbe9d45aebb65a1be6acb5d656ef7bafb5d6ce6cadb5b6b3de6f67e0907853251e515b8c4b34617c01a81546adb5d617b5d65a01705d743c1e0f4fb4cfca7dcab5d65ac3e9f333e20307e3960d76e61c712ce9730dba2cbbe34d9b3306cbcab5d65a63be8469a34ca6ffb361ea4d9bb14df35ac35cadb5d6995a6badb4c719cc8c37559f4e0d4d0b584d4ead3016e01173aeb0b1d88a3959dca8c06161532bce38e79cb38686db4fc729c2f4a98b2d469c223c2330cbfb345a1979a869318e3dd064a033e3191c619f302c9699c9c6afd65a2f3e7acd8864630ff8264d18df8fb5ee8c9f915a6bade19c1c801dcc39e7ac609637cee9d5e9c4b403c0096ee1edab87444c7711abb5d69b6465d92f00c6cf08a65e6d13c69cd65a6b5f8c375598c6c023320eb5600a1e516bad3500303a4600be9e719273965780fbd9f4d547284cbdc62083a683593e6b9db347c68dadadee6259cff3d2d55bbf9eaff33c5c978436cd69cf123d5e6b3ddd536714c64fef993d2db8f4547b63f8eb7a2a0f0854b1285c673f58b43b76ded7d3536bdfd7f3755ec7c2d451c19e1a809f3e36fd9e5a9b31e3565f7606e3e713f8cedbdf598c07afc4eec5cf8f1ca1849cf666549e065c7dcf2adadb59085d30edbd8e1cbff671f10a88a180e6699f61ddce78fe6b9f18dd4b84dca7038bbd5d47b584c01284f7816167cb519dd2ca42709635880b1e5a912a3ee8d76129f26db9f7dec963bd27583f6befb5d6d66e66a3bacf5eb0f3ec178e24498a22498ae23892a4f81a479274ea16a460531144413f5882d768294827edfec882079d82e32cd31f45ea2138b39fedd2795d6ead94de5a29bd94dece47e781df7dea62638925a86cd9b2253605b7bd5dd96db95baadcba5b47d7cebbf68a37b77473cb9d5bc6cce02b2e685da1c27274c585225d7745c7962d5b8a3c81505dbdd6da6e6bbbefb5d6a3f7528f5edb82af75d22eaddd4e7bd6755d772d54adf676b95bec964ab3ac77bbc6e21501a9b488e88a685dda4c4619fc22c5908645e8840182d4751efc66d4f116992d2ff26adc7283001144d7751dad4eebf5aefdc187aa1eb010117505e7799e67c5fb3eef03c1cfb312e57994f2f03c4a7954f1bc2d54a83c8fd2293c4c9132b5830e525145a2509a250728b72738781ea53c3c8f521e9452cfa394c7bd0dc3fdd0736de7f511d40f363451410bba46b3b52912353479eabccf9fc2a76f30e7612bd3c4050fcd5a22f65a5ba9fa0906c76babb5d84cfa79a35688c4dabf0fe358cc9df62154e56cdf5968bbeb7d30fcb5b78383b5d353aafd4211bc9d18ca6295079cf7c9ebba8b2543d7b512b52a61aff5ee8ed1a2454bcc0ab69df7959f57e2f6b9f75a5ba99c546bbdafab58bed6e2b596aeb554186670e8345ea463f714a9e3f6099dfa778f9ad63a42a7a4033e0ffd9241e10c1b352d540a95c2a5ae5da36bebbc9bd98a6ce775d6cad4517f9ed76111a2f3ef731a2ff6586bb51e11cff36e84cebf199e7d582ad4b5ded7d54f8ba7a5ab5aba12c9027df4aee809f6dacefb3e2c2d5dd5d2743692ed6ef7592b77f612baa055150e9cea1a58d53ced388b94e4794ee3c55aedd75d711c91ee7e235cf732fd6ea769b09adf70857d9ddda4e6ba372f14c1cf7f6c96a825d4f2a380101a40c28cf0a707d442bb810999d82bc4ed79c1e341016e8c30f52878139b303a07a63438cd10ca308e610ce44bcb4b066b103661ea210c34355dd77530a881759ed779dfe77554603639d8a8e83a4a7ba858d17594f658b1e48645d769610a5f68a1d375945ad17141c95292164224987aa8c441072fe8804684c6820b00503b7b85a423a10a987a68a4c783aea3b4870702e83a4a7b088052da7594f618401d80006059afdc259a409f4f3074d16ef15cc4f829fed8f24d5fb65ca7f3325a8ae12c5f39af6b0a2e786835b80a762093046e7d7f5626e9b33770cb52b138a3d8cce4e95a3805c441cebc4ff53655af3ced93804933f299d1b470aad642a8b3a9eff0eaaa7d729825cc32a7ee94e5a2eece6381b774f25cf05300fe37792e4e40d77eef254590d55a7b8aaf9c1470f624ad3922255f61483b3a6961d89586e1485fb47b91a47761d0e8221d49190afa5fe48b2449ef42ef427246278d24bbf0e5e2d70376edee6b36270c921c6799866c0c0a3f7b3fd968b7c476c12d8157abb55de7d57ad6f348fa119181a1b59a40dd04ba417c087ef33e5da7dbb4d5547bd2d1526bed6cd69f3b8d85c54fff6ca541623dd5eb2c2746737240c879193226d0a44d63c04fb576bba95af36e93cf3ca547734ec9982d6dbdb9bf392a983abef9b84913a8d274de75dbf44b3f6f530845b4cd108a68ab4333d8cad0ceebf1edb9e6a7c3623353c62da2311aa87efe7d2153d3fa0b979ad64e43a56b53aab5502954a24a4d6b0f95be1de93b322aa232ee8f203d6cb62a73fbb6ffd1e976d66496eaec2e54e2f90cb9b01252d21d52e4a7df14a68c6b24b3546bf788ce96beef910c940c54fb64191b646c90a2e428e4f266e0d4d155ba4917e91a511937855be40eb9471346e3ee91cccdc2504306d9ef79229a409ddb269fe90b679f907efa35ba47200e417efafd3165805034465752891ac8adceebbcee0e7d06a99ec0a9a645415119209428200edff7eb0c1c71b71a211f4d5353531348e78fdc93323581ac37bba6559e699bfa06d0eb6ed75a29ed5a29ed5a69d74ae9a596de6ef201b65a4f9c5da9f5ba6d77eff5ee07745dbb59d7a6d1d12e8a482fd0a475b7872ad18d9b409dd3db402b10d70d468151ed93c1286094578dee6ef612c2815453601488ab35300a8c8a02a35e382eb7bab5b709446d13e85a28509eceec0dc3e8280dcf4e0ec0e08cbf6d932db25c9b0d615b1a1eedbdf45ae0ab6dd2f15dba4d4ef7a97deecba7dfa40934fa740faefc748ba342a295cfe0966fcf1e7c3b8b05e8bc3803731346fb8734cae884117ae8b94ce76799c68c6d9a97649232b2db5479a0eeed46dda9ca13e3ebec3e35ad3d1ca2e93d87c3a67b24ce9d8c6ddf2e16c1b406c00711118d150cefc54f59d680ecad0301e0a7536fd20e53c0d4c3234c7d862860eae1104cc70d2610772accba533b2f0d4221a111f69f3df8ab6190991e9a0c64df3219489b35109cdda99cc167d94fcf9d0ab3ee54d6c535eda60a4d8d8e0f22a20c6ea6d4c05ac06c727042202b7a6237626c0c039e55a8e4ead74e939a54a86600000000006316002020140c888442b1284be344ec3d1480106c904c625830154ba5410c8320c8286308018000000030c610221a9a6d0082e14f1c3dc6685fd8feaa6a432ba98cb12fbd7d19525207406ffef796b50050885743158cd09a1e02f6be2b97ddf9a3febf35ff6af957e74fbaffeafc51f347ba3f35fca9f327bd7f35fef747428529b6270c90212bb62c31055b3749af55ea4508fe0ca64170c74aeec8de9f22f73e9c6f00eefb77ffc79b7f6efd51f727ad7f35fca9f327dd1f75fea9f993cebf7afed4fa93ee8f3aff474d8aff6af163bf6e803122614d29780217890a1491e8987ee9cc392e4e3601db66d4022ce7a934c25d17a06d43bd3249461381161810e7f655d45e346db7547f0e763e55413a337405094041638de54bb426216541eb7c5316f0938ff7669ca59d5a36aca2443d96375717790ea904fbe4dabb61ead9e72212b2f84ec53a92b15ad14aaf538edfc2e71440de6235ad400b7a88f0fde8747a9dd88fceb6bce7b6495f72ea508e97449394fd5cfbe2f6185541f3250c5d0be64c489332079d268f75b3aa0767211b4b2dcc40d8358d300b5053fe3e0362c1ac4ffde97b125143fdc2e5deeda613de06ec177422bce176090ed0f71c2308d81e7d2228f4f0dcc43a1aae583d647575ae340ee4e236b8ec7c82eb0d9294202d421e85c4820dce999cd3ceb7cccfdc15b00b503b26ae3334a81bf3a2f5de8c35561adc86272e52443a2e6d4f5007f85cc2caac615b6fcd7a426d84fa25a4273f87e289cb5456de1b1813f65834d356f690335811d9f440f5a90a6e3dbe9407d196b91a3c6b2882781bfad2b71172317f70220e5b1a66530d37b10944716d4bb8aeae775fc62500d1ce513e37deb11aec126af1a501d7984270a4a46565ce6256330d7030ccb9410bb3d17d1e728386b10219cc3ba6bf7007e136d80989b1e233c2b3e09114a89f652bf17487665275b433a1750cf666fcfb84b692eabd4d44ae238b76be231f5a8c417f132c9f0e826ba802ba4c4e97de32ff07d4d8e0106746b4c93a676de8c73e8783ac0dd8500d28b4bfa77f2cb3305318607b3c0ebbb3ba599105ed5b57cc9a05f2aa13ba4149160ea1a0335c5c43cfda5f96cffd4a6c4af757dfc0c85ab9681f6921595ef8f011c8f454da438bb7d49d629627f77dbacd8ad8c8708f40e11042793428bcd7e8f26805a5c7f92de1f17a61239b8f94f1e65a7108efa477a725dc0fc13da5f9eab9296dc5c19a0e739cb7b72c8523f35c8eed2d624bcdfca44e741f0eade1489a9656b5dec1edb41bd6de12679c4d53ef2dd84a6d478751860a00995157bf3fa354f1958430d0f2b493ec7f335e72f43a34ef1ce0231e229b8e3537d14e821c613b51e86d458c779c561b9b97036aa0938e8da78ceed4aa96c16d66722177ed65f127469d2ca431f1b74c83a69c540593f4ca71249d485b3f10b9e25f04014282c90fd1b2c4f485a63aef7103e7b4b099c6e2758d450f529f50bf40604f2742473dcb59c29e56d95f03e9f032808b1e45e960097725e1d985c5f99c23956616f3762c9f899d3ae64ebf1bbd68fb1627959a1c1596523727d308df5b40898d2b9cced0a6245268319a50c449522e481228c38896c11e63bceefceb87bf94abd311e2aa4927413740e352732d37b0ea8176c9819d3084ef90954218c4d6b4b79775439f0f3b2b103a18356aaea89a5e6812c0f641e9781f6d983e88243ed66690460ba8daa3c32015aab759d5c94953082e95d4e895207bb2bf66b5efe074a6f63df66686750d430e9e1d71cb721074f553bf40e545521e4988fb76962c708237c627b31398c40fa52c53cc0ee45ce649f3a6078d274cc383d09bfccfcc4bc44f3573b35bc95bed5ed41acecb5b740319be08b40b5e5f68a00e661673e2a4c42c4a9df30667f4a960f3ebbbb6a5cffabdf7ef4c5f7da509a0843504b4922d624d79a637be73159c111be859f1908eb2be53868d2815e44b5dad80f9cf195f3bb2d648dd99d8c039b909cf59f57192075d92a85e565dbe66d83cb8a4a9bd1576df227673a83bcbea498e6702cd5510ff4d651ef61ca330bb63407e45d80038e334d47bd61da6cf0050df60fcf9ec305a78df1782f5bd31ddd385466f7b7e3745ccd810ae9646e24ee225c84f4c9c3d58f3c59ef225b25907fa52ea9826bd9757743f292ef575d13e4d55f98c439036163ef794de50f42f4585a8cf9d38e8a56aabb480c9735834a158f4075446a738c7dde0c36d6160b9cc78ca743c1011c4d59082721c5adaf8024173bb9cb2b494e5e8c633d2f793f1a3d5ce5c39efa7dcafee55d1e06c1f40ad16e07244b39053205786a30ee095fbf9f63d8f3c0804db8b9536d978e9e52cdf16bd10e05f4a6f83906c3e8caca49bda3eb396f824b73401249b15faea8e7391306c9ce70eb225689c1ddacf5cee092769c8809f8e6b9dbe0e3718c05c59d1a7f4340c823becd01f8afdc98f25282bc6c7f4999c36a15868604a1bc68a31b75a8381b61cec30e202656a300e2b4fcedaabda7b9bd8205d6f479056fcd500617c185f3e7eb1394d2086704e31e583f9d01589691a1d879aa71934c3173bebd12cb9dac7bfd8e2dd715ef98440dd0a69941a66c147ec88f9b04c7ba0d725bf38ed0b951cb7067a6b98bd97146e72da49f303031c2858f0e8b27bc7ce8d38fea06be86f7f836af88f7c35000c85428eca9cdfadc79549c4d63a97bac385c367e16bb6ba6a1675cd0725b681b01fa4c3229d981758ceefcccdd958b45247b2f67f4082c59b3db5ffec5ac41a240975e07c7e5fae60419dbb8c3068423474cd8929a0e8b2071f921136e0e31437a55ee6bcd98722b3b8fffafd7abc4989c8a914ec62d28ff453d2b6bcfd705065e5485e83ab8f4b38241b83ed50deaff477cf699342b593a07fe637fc50f3fa28d34a8f4185b9efcf4f32cf7b33d8f010fde6768f0808c1c1cb628d3f03724e3531d6510b685b7d08d0b89bb0c6cd0e5ce987dcff92fe071725d40c86b023b57f4a567a1da8d23b3ff33d2b8216998bd69c7ea79dd474a6b1252cbe8c4679e4af49604a5b36fd276068703a20908d7bd9c93dc0e529301f32bfff81684282e6b7a6c79c8b31001aba59a68ccff90affd0eafa7157c363f8195ccc7074fc4a4aafa59f2b32e40601424148328eb833561ca64c011b53e6ba95ca2fe8bd073d56ff7a1ae8f39a39db8fdebf22a3e79a0ad78be2fe40ef1e4b46d2fd6665d7d5946ef72bcd8e0fffb35704a695259134d30c74db819430797b3f24adb66585dd7c11cb28450e9141c5ab7ff8b37396a3a5c07700a4422e41593a41d13697da3d8faeb1743ece4648863e48ce00abf13ca402d6c6d88e210388276f1e35d9ab1fd547283429c472eba872d01dd4f1e70978c2f853a461199bd8f2acd3501bb793a2ad494a257090490feb12d7ee1ea144709a270c3bca9c7941d480a55cb1c88155556704f44fc96284545f4a92f898cfb8eb4d0f6907b34c0374db8d63bcf5e4fff2247f5449be51efa34339ac0e366a219f45248aa0dfdb07d70687bf74307c63c978d086f1451cf294c01c32409694a823d6d7d07c08e76f6542bdf49c3b7535d7f45086819fa044281753affc2dc34ca63908c4241c24f48f888f689239460a513e6c0441eb57e47d0777760644be3723addd20f6139a7cc61d86637189295a802b3e6603b36ec61fd20f8d389cced11a165156e22e60173c774a73fe83e9fff934ea448437c707db46a451423f54e632f2ffd94fbd121583b9340a4da74facb62ff96830c3f02340034a691d7467923c5c54ef0ca0c1c070730d01189cfc6606a4905009ee3122ddc1b9062af41c74ae1303f60000a6438a31241e97ab3f03d83270b828447d2b9d04f57cef4cffd00e0a5c888756be83c6b23b567418ddf8c7199ffa04712468c9a235d758b8743d48c75faced5db6d2e5559b7b9bd81a472f4f5b1c7cbbc61a297dabbd1b1a531503216d9805d0928ef41b1aeb11df9e44bed17298f2f90daef84135f76d6341ba5e26ed9d0e90a047927f9a674c89605b019df8bee0731cf4395bf01f88156789e7107d37dc2d8406f4e6ef3d21f7cf29e775dada50a83ffca16de59e7a7b80de5f224043b0ba12842c0e6623c5132895b734fe6182e4e816dfff2194f91683e6f25faa3dfd8e016bffa924eec45d80724cae055f62f511c4a9ef061d4e387e18e69700e5d654030c07eab72bfaab5e52a42fe137a8fbff5feaef01fd8c0aeb3277b4fac41fbd2a127497cd209fa17648bb312d0f1e193e99793044410efc70b707cc33ccaa533efcf7bdab6d232f0cc690c9bdcf2eb2c60e38dabc5069df303df498142bfe81de6153860f7739db361946cb2797b054c17ce19a450239b97a5c7ff9f720d2ec98d1eea3d41eff685b51385cdb1ce1e3729c8deb38068fb04b9eacf1745e4a99a1abf38d993edc55577db37e2ae77d4a6f8dfcbfd97ab14d31f88292049fef08fa6ae0f2a7f1e6b0e90ee56492f36920440403ceb6222fd18d0a354f56487f2e3863536c3e7670fe979a6ab4f701a5b6e87dbf7b2a66e363e88fad55c42656be7495f364d5eaf25c49870c82dcff95005287888d0c97b0decb455590820c7549a47f59f4f01593683d82d2325ba21d715b3f8f7160986e42800f7196ee932cf1af7f25b93611d5d7b9f1fea2977bdc78b711baa3a9feb90799e3907842752f49aaeff36352767d21a67ec7063207933bbf22373837c5405f63ccc8e052c3356e369f6b8c5c55df9d507787b25b0dd414d3bc6d57720e72d360c4014050189566561f1f074c794fb16491447cf1e71f98169b550d3ea71ab5b6a09b533b7e3c8dbb75c34dc601dcdf204a482c3a1ffb122c46e789e55e0800576beb112b44ce7bc6807c47059cc0c7693b34d38ed3bcf288058bcf7ad726595e9ed7af536c8b28cef624a0ba9ae341bd774b6a477f83f9b49040cde157eb58c7c9a75e3acbd3065009786cd08dfe23c2ba1ce4120db47e293586d24856abd1fb19a6592632c67735a3d158ff9ea9a90b2bfa1d1d95d899b8be4ab5ad9d8136704970be4841476d413e8789147d04361811ec4e9e6f9c0443003d909b2b101e5c252c4f5d3d1b714a183139959982da856922efd6f939e6b9b383a5e51f23be6d8625f427037986c3022934112c9158ecae28b775bf71e29252b611f5ce42cc8ecdcad3e3b003a60cf2f5f3c5e169b6fed316730dbb8d2d78f799b6d2bf781d7b5a7e6a9e077bf8dc000f63b7989ce9ccf06b6dc5e1be057b26f32e790091ae1e3746ed061f31e8cdfd8cb193fd86322a8e93e6b85e2fc4f898f9a9192d4e640128aac245462f93c67fabcf4681be448640a2346c3db55f3457b3720c7d0e557784deab6285d9abd5b3279eb73ea5e640042dc6d8e0edbddc26403cb0b6cef4346f69005e6a6068e39a7243a8dc9dfca4129399bde506ff7b49e04204a42d37bb0eb9a57ae37570495d55d98bf2720f75b3afe06f054e878554861871c9039195273fce4e8d5b8137086b5b30ab8ff9989bf144d9fc20c8ad592841798d68f23a25d37b1a1cb07e4186dbc489465aaac7c7339c2ba09495e5c545926bf906805266f6b07aa66b6371ec1429fe82954df0b9084f2a939c2a8d16849816d0814ada813cf92a1720e00c03843380e5b310500bc3c7915d272af98ce4f6c3693bac8d5800984fe88138f7e5a88c106f0c1ceed80a222020b330c0b94aab73f2d55c934a021abb56bd2597e4e21dd71b0444adb728f9624f3bd7592e1b126630201c03783e8b0c7578bceff1a25547827a1b0f3827b769819025a6d4973e8320702b04ac10a38f1e38c57bb6d5a5d41d38be8a53e7892a6ae7ec73413dee0089e252f2cbbc62d6c58f1524e0d99a34b9cea4811016d53c71b6e0013c3bcfc982bcd867ec6bebfd2223e9c4efbd601e24f72f56971522a5632274e4ed0a5f0796b9cd712f712f09dc2b34e34d41f3959dadf767893a995b8713aa695797d25448c0067bff2dd81fcedd21f1690a6dba8f6d13a98fa5163e666aac6f13a1104629f71fed95bfeabb9c8f6d5dc3259b8e105c95f1ed30b20cca07f094ce371879134e265c96ec215c35ef340ed40cfbae55a8252e6a9aab8ad8014bcdb13c9b9e60b809be787e24bcbcc78df2c749163220cf5f968f5c33d22e2c6bfbb3ec8a4deecb54d8fb9a5cd38ff16944c6814c325e85f423e35dd284e8b217bbe5b3275daf8f41afd983e8f75700dc85f19ca1488c633c10d23cc276410bd3b01e094c3e7eab988e5cabd211a4bb8e12500c959ca14bc5981f34e86c67131f592ece30b3cbc7d3d2a9c615c82b4a7d1b031add4aad75b9dad9487ba24412c446e8b6028690691663f1b15d4a1199355ce3defc84aaf75cafea8a75c4a867a158f719ff5fea91f45d1b5fdd90aaf19c41a1fa0805f8e7b58c80e184c50a760a6de0619f8ac2fa55088133e0dc0748dc2b42a8fbda62f961b7af0d7952c0db5a0f2759250b8b56771a5bb2b39f5c6ca18d1dcab6b2a4bc68e8de0dc066823b5bc180e2d1882bd2b591ef544379b82dc75651ba21f489d5555e7291152b84b904d5bfc576c6467ab5921c291bc2d64e449afc3c42601fedab61554fbc8117840d2897cdad36a2a2acd133cf7ac0b6dac064565262e4cbb8ddcb65e53dd5d0da51547f540e9fbd87f8a660cde31e7fb9a52f8e48fa0b3650fec3d69dbe9b35846e62536129ed27122828403e2df89dbcaa0004be535e79a4c756d5884d2adcc02d7a3cfe2b974c8e4e68847ff8a6734522c3156ec9184bc8af4a32b7d9fb3c13f47a1c7f029537b7cbeacd3173630cead6894f48b4cf9bc52269b1602837701d4d187ddb9b4a64ec36ae5f25acea4c775dcc2161d4ddd07110a0ebcb30d09d9614b92b6dcb50a982483245e67c0cc412503be55c32d409337e619332fb970b2d3230661a1ef9ac44c95ea2bf1a9b209ed231560b5e2ea38f170e49dc428e7c1d4f30d75152c4f12c45fd932ac436dae05c1f7cf48c43ec62748453f2af56c6ca42096bd9955b6d9f94f540916def8e8491ceba519b57adb21548000b14e44c9f17c16db1bff5717f9991ef8ae13d35e64088e76734544ba0112efcf842085a2a619a199153ddcb9f388d97d19cc579431fc6e8282136238b6de0cc196b0f887fd3dd0cb1e41ae29333bd2f42ff4ca31e0bd03f1f0025666124eb6b16551e286a361b286c8ab2b0095aa31684ddd99b11f021e40718b7d76794ad36c8cf746839e9a2d603527ec8d14d87cf29d65771633a8df24018d465d50430d08268d49e945d525726391e5eef3e3d83e4612bd8e8af9adf3a3786061e778485d9f9963b8414956a887668020e19901e5dc10ad3cf94522d4f2570a8c77bf0051665ec2dbe1f97c56144f114c2c628eacb14e049ecdd5ad4ce8949227cc05ad7a8909824390cf343729d1cf096c472b024ea916564226164ac92a1cbe59a7c337b4b26e260ef633684792909682117ad61a58a962cd6e57d5c03cbb1616dd924008cd7a76ce947a595c8572ae19680c46fae0173d7b305bb9da85202ad11ca9e0b71988c804984e5e0f5429d931cf4edb0a79775af5e91961a1d1867a1d6a6a3ca1e7b2c753122f4b4548866b4ad0272c59d22edc3fd1ffb07385acc30f87dc8094a9c860955cf2315604cd46cbb8d4e564bf6e13c7d765d861264214235773c26391e452ae3a647df11d80d669b0b682929ed5cbc73ad86f94f01a4d8a6f227ce4760e0def164a32a80cba8df68226514aa795621d1a9f689be0c096738883f8e2926d165842449d1b08841240405df8231ad94eff7b8c4992cb8b0441b019924ac05ee88bc2c99cb060c9096d28c05c977c16bec69cf6bb132e32b979aa8a5d04827e1d158991dfbf949ed319b99beffe613f5bb471df9905f6b270391959999abbafc5d554851074c9a1e9cb4465042bab3d18ae7309dc2842586e3a80914c99289f10ae7a0786ddd613ed085bda3286dc8519ce5c0039059d9dd3426a90d46f20651e69fc322223f5b375f09dd0fdc4457fb15ab80fefd3f39fcbd4adfc0f402b2627164e012245a02e7c33109eca167bf4d9a6e135e052f551907f899636c1f0604faa1914f2492690a0f7c884bfa4719e514ef6304de91d091d5847fa45ce7c15de2e8de70a805aafc1a4f5aeea4c73e3cd7a62eb97a1a305db51115399e91e81b66ab026697f659b749510f0eea59a0aeac1f95c5b5ef64a47db91ede4dde607243898ed0bd1c133623819506e3582f97ba9f20892a84dbced601895bd1572473ea6b19092a6fd961c652ae426b41ab1beb43d79b16f48c2ae89575a0ce0198f459316115fc384ef1ab7031a0cacf049c3964ccf18e70576a02c155f1b0e9e48e68f06a123757337435b0399308bd183d3d9d5ab44c986de95385008a5c014f1f268154427c3f472ec0394b9c0dbee3b7b8866d1bf31cb1712c4a67e829327b6b2466208b6d28ebf5d0db6a7f185b6a76c9a1c0a090b02f64f3d8d3d8e0fe4e316982ea87d6f3e82099eef11fadf82d82693b0559771c7e5b48d92e08b265f446963d4c542f18b044481fb7097407e51455c949e1692266eb559a6184708361cd195cb876018f19e2402cf032b4483fa2f3a9410404ab916c44a76c4fd700550b908509963a76e101c62c6f843d4db55ce9bd27de4def721fa5b57c5d6636ae5645318c51824178b5226b67ec5cad765f9ee10b6c9bf4a320d0d8c9eb623cc879b55c0206df6b8927fd13a44e68fa896b46d962818d1b37d8f0235ecbc2cb3a9a7cc249db1a8030c71ce0224273e7f1e44300c80f2e79cc90767f428ca84460158ed1ff49a316b0a5cce6e377bfb5e0092c79b5584b79bc0696f6b4384d0d09d1b9823b726900e8260cfbe18a45a0e100ae8ca9e77f7b494fb9ec0103e8b46976d801512aebe8b48156e31a2c43a8947ff3365ffa169671ae25af653bec370a3b22b4991f10f276320f1d12bcd12da0b85cdb9d68f4412b7f7ddb5a63781e7307baf9a8732d5902d57cf0744d91e77aad988622e5090d315b0f4c6849f264c66021b03216a2721b163f816c87d4fd38b030d383ae82752ca38a0c93a245b646841079ff726ee6f71d501c33dbf1a594974215fc2abd328bd9075f5881f6864b7829c346e8c1e66ff3c39a90f8e18c0b47b3d9a9f518134e8520ad8f7dc21c62aa15866ec6d0d0bb6644173d02ad14c6d6a3e3535bcdac5d8915591df05e25c98b74209684a60938ff360589cc6d99aa3811b7166e5306a2fbca7a7098a763041b12bfbdbae3ca57c307a6c7a332fa2beff4c2e580454abca8d79b0467295643960944904423491ff930262b039ac260c42d14900837be4d502b15b951c32f313ab9c03b7a8138450da372ff8c67a3c4e3445e982d4497badb8f93cb1b0d60064bfddf4e89d4bd45ba5f55af1e5d278326f89169dbb6c850f6f21c59bf2ad7409f20e6747042b2130c77a2e84ac91eafc53f13dc18bbaec19c80d5d57c8802afeede89ba65d4fdfd9b70322ef8049dcf4530ce4e905312a70f631e33f0223500b03bbaf958c03f14405c82ff7de7c4643b1df64703f08a0af00c15571ebc181ed7c0891835296d33d14bac15cf54349db014bdc351a625fa0769a061d4e6a25bf5642937372927fe396b0671d2bb45aec75a010324a7f8619e6a0221b2826fb9e87608e9f989057c412380c9e69f5d6daef1443657095355bd61a997b386528e50cdf24882c231e76eace1c2be742e3ebf2a0f16596a52387537e98298c59081cd1206699fc4f06ba835cf7dde45e3d891892c2b34b0b1185a3c85a83854ce8ce3a03ed20a5ce92e6e3275b3aad4d8270b36c2f480ecf76e508431831a92305cf4a957c6725aabeae0cea44ab64e9a27da53505c37abe5719d680f6370a9c25c423341c0b01848dd3b14bec007c78f6662b8c2917d13292aa7d3be2ecc3ab02056af9dc0cc8ba8081aad524a3f6abf8b09d4403bc10100836a36d31d12ec102246e517383f04fa13683d00e62054368b398523df432db798a77bc454054e94595d1630c98a1f512df12f515799089c43eeae705583812b7392a20971f7e75e962a4248c9edc80141675d54b117a9612ac6e80c8e460945d254eda346702906cadc1d07973799e0c26ec0d5c95a6c5ed76880543fe8b9a3498620b90615f971455286dff789abdffb18e591c1e8f09575084ce2843e487ccc9aaeecd6b0eba5c260237426866dc949763c6c0ee6019a95c2caa0540f7808c26f1a7648a104001a88f53ae6b20926f9a1de6e1282951b61f22881aca93cdcb5a05e920a28ff3a191025238ad645467bd42914f132527c0803306484837a1d3e27861c9c07ffc505c5cf0fa3cd0ece5d4454ebfb66c8eefca62072d6a14c81b747e5671820647b8a23e84fa9991591801d3b4fbd904f280712252df2562c6b885fd8001496d34c856ab9ccd83f6ac3b87dad7102832a6220639dcc9df479a54be2440d21cbe2c8788238d34cae05d0d5251af0d7b1b71369f10c5fd1d2b3772d64f067ac9027451e5d35772dda6c01225bad309459d1b58dde77f72f58408f1258882c510b945d7b45d1c6187153bfb6882261ac24b5b811d8ded5fc6d877b94d19d8ff9def19e4a1206d0611731b71d9d665ac4191491af858a1ed5a139e245bc9a96a8677149e994f8a4623be3ad26dcb196a2a85304aba819543949fee8795d5727effe6d028798668a4696080b1ffb7a0d9eaa9546acad9e46a46d891c4b4c2c6efe4ee0290e707402d2068afaf102b19681e9e1ff81df036bf699b8c40b9ad4d92b724008b894ff03252aa5f1871acda5b5dc3adbe63950ce0fcf5636c27ac231c0615c3b87095008bdc499a5b926d1388737e9e305d112746038b7099585411a574a97284b9112ee39f7cd9eff491ee4df2ad2c773fa3bbd842e444c50920869dca9d77d7cc6468e2d96d78d2a97b3fff787a7a8dfe9d48e79ab5119efe5d45c50869115e9f11e5c4d45422d9f796b3925bf1c8ffc110dc435074e5894d04bfa50e5beaa8e8fbf95aa6a07d98b5baf12eb1a6fb6877e307871dc33486fe1c3513bd56b56b420bb672fc048c05441249fe5bb440a8c8b7a64f8897bf22c6c31ace910d430480e1b2b67bb70835c063199a40159de847d086312150aa78fba0fdec086e2ac0dff459895286e26be897e23a02b6162ce5ffbd760408cc11957690c522d27679d5c890825b631477f5c833a4fd502a5958d63acc71901df165d5a58a69bcac027211908ce0fa261ca633b341695088147c0446cfcbe8162a55c8831591874417ca2f7aa3c95f3274cef87ea52dab31387f9047b278f95b0d722509baef3a426a54b07e79a0ae480887bd85278bd8a38f0e76fb3c07706dcfcafdf88d39926d09fd6816cec91db37e14b71c2d2bec5e4e51771bad56baae37cde54848fe0ed263610cfcc2cc0c486b7bf52ebe34571e3deb41a44dd4c1023d67c31b78d0c3194a36800de083eeda23978ae2d6a6cb7a4ffb6ea2ae2aeba6d9a57bc00087aaeb124627666be9886861e38757c08ea3bbbe9078b52599c00f51ded74e5144cd4f09fa9e23be7c5ef2d89d96cbe60991b03a54d4581c3220984fb6a63ba37df7d81cbfa043410562a4c158e458814252bc7e6d17c3eae8f54c9fa0754e4a81cecdf619df3a40e85922a66c354eeafb49525d5de3a4dfab4eedf3d1a2f105734d9ee156e2b680857ec7d7da0f4eb10727dc0cb75b2d1ef8d761705f41892b3cc136204820074968066222715df159b3de95cb62d0cda36c2edf9e765f8d4a13896b356ab65247e9fe6aa4c431203cb4b71929cd8b2fd0d76ab2a69668be46c0bdc4755a29fb8227342bb7e0c15f09fba813a7c5beda9f47440598555f2d217cce37472f415bcca887c47dfc271c6155ce9451c2ac611d4edcd877c6a9892d78f3a0a9bb3100dc1f3d044e41dd794c65d732ce62409f546586c258fc19ccae12b9e02fbbf5d079562131b54701db3d382ab5e6f567961dc242ef0c058172b2dfa048a1d70682c43b4298675ef815f6c6beaff584096de15961c26af824749345819c2dfae78794e191ccb5aee28ed9aec497a413b3131b7a77865d1ee6b529468bddd6f1b4a5469217303dfd0f07ea2abb041f5df9254b0e66b9d46ca3031df0a8d1ee78afb19ce805fe332c4905e566f4fd5c8a134ad4313930b122f3803c290c6d61b9d9bfe065e4fa31e0b9873ad43a0880dba52d81614ede93a882bea3e3e90f1480002230c2403c49d7ca45ee13891a08e9acb472330b24a7c5cb2bbaa8bb035c9ab46b8e05d5899df1acbc02a63d4e40021f17dadea5a7ef22980b06b0497cb3daa0940681f7cfc7e216a2eea5f3cc30866579a7deec11c968a85c5615cab781b0ceb17ac04e1800ae6a0d3c38c01277c26c770745aae18855b9bc6c56145971dd6b699ca03f8839dd026a0b8a765a43735cfceeb6e4c6c0a8ca894a309a1efc480ee1ac7a6ccb9469366e842462427a309c13beef9a1726ee7871b4d90b6dca060288f89fe7326e25404698255fe0c0ab0f41067bc04f97bf4edd96ddd6088c48f7579c768ef42164d5c2ef96e29f9d8e5f31451600daf52b234ba9621d0973273b345a993ef38bb2a7c8b827ffe9abfd7b60e3c431f1f336b36d8fa793632ccd092b01a42d3a9c67d0604f31fcb0fae68daf253a3fb82a3ed2961fcf23a7595ef33c3aee84042e7f16c7887ff388377a3bff1cd613e0a983b403003024cdbb050749eb9f674bca6d90b2a48e213a0cb8f3f9f9deaf67f306539b1668ed566529e43568d8827a70c6a66a9deafda840d51afae0be492fd63d8b85e1acbcbc36531ba093a1cbaaffa26835bd63f99a388085081733dfe94bf0239b664b48792827c801cdd93767d750e76ef1c7b16a37d1a579fc1fe4f492363d1a13c3028a1030e9af9840d9e0cb91de2f16f2cce695fb3f1421eab519ae04e0674f73d3a08545e3efb9ccc5df6b820d7a701949033b12c5369953e25b6b8a67d3903ec1f38a01d09629c4a7b603b6a9615470a64f21c7e1f337b28c81794146e7c95f8ea865a97db7b0ca14947b83e068162d9276ba7e2ed79654b7ad725bacfa9ef52e0d219dcd9351ac49b0670202221908dc1de98c88eedea10b32e005ad21a22791b7faab84f185e9d41851c26f99c53e9db579cde7e8c0b37905e18031a5bee85f8b1316efed90ffe98dd863116c962696611775f562df4a3a8494b35fe6d58450b2612045b415e4588da0376ebc6e7e7057f088f8b665fd6378b396ca1a5ad18a905e82aca38c57867ea0698d6767c34496c7cfae03018ee6edfa2c8cc82d13e9a5a468b69d1b4980d5ae14fa56233079bf633e19489e6ac0518c2bbbd7efc3ce6ed0bba2550f47d5a8253a7bacd295063857ccae6c6d0c6e7e80d60843f50af2883f5206bb42f42c2a2e3ec569b39a8ba0413c283e1362bbeaecee3ca503a79fe22d51193ecf202098423ddb13e91434f51364361224ba06bc2052f35150d7f8828db76889b71f511ba410d7cb13678c16a2b754502d3146886f436bc8e924f769b552b8e1ade689ac0c681badf9ff0cc1533cff769913fd4890dedc0eafe6855b7c021c2e0bceebc45e0600b465064d7e160e0ca584042b25b2020d51aaace74147b427f9e6417a8bf2a6d6a1ade9edda0d80742e7ded1b09475b4d089ff8dbc776526147dea330ac872baee2aacbb3833bc791dacf34a7e14a979b6b1a80dcfdc971b4c61a986c3876b1076cf5571527058d21623c82a63291f6738726cb6496cebd8f3aed88fd8d48403aabd74714e5d85d47361f99337cb4ca17e107e940d2b6d150b69cdf3f7c5755c985cd4199989aa854c25497a034f66213a571ab3a0be8daa0f6f5feab4a361bf9cc54419c751769b1fe3b7366606a3632f43d7118d361d47544859bf748646692ac7af44e90b742c35ca0b268ac91ee869498d2c9960830669d38587c220edb5b61f05c8c49060dbd0237b23993cb2ece19a6bcad14302de63760f6aced77ac7d1dd871ae9d9f07646205acc545e63a8a39896f3596db312b2081790acefccd8f0d7a521cf5ee6df3b2cec2fc040895c377edae9fbe49d0d9bd3cedd75572c2b3a230b93a4761058443962e162e0c433612ed8a1d4770ba2d7d38c8c33624bb4ff95de29530918258b666f4642b16f64c538d9bc85328c6bf28c3a9489c0504bbf5ae5662bf820263a5da0daa5e1fec169bc92692226e5d4c2305b8f1116bcc144103f36eb7e99b728400e2749bbce89186959f04acac0c6ef556cb198ccadaeb3070a4a14598fda017521ecba09c283c9e510cf04042169f0ec1ce2470d83924ff0204e13905598e001f57c8e79023ef08189e96f5d17311d9e916d343ff05352822eca808509e2176501980519193e141741ed7dc75b08954bfe5d92ee44badecdd27f4f74e5403162456d51b7d2b98db18083d42416f6317592cc4acbe0206832daca3467ab7fa648ad9808b64a12244ac37dad6867f3b9045b25e978a5bfaacc8c15b7cbaffa9b4d5580d50593d9ee6205dee458def86c90b4ebfc9e98440628266195ca5ce1a52ad7512d8ca492c19aa99beafbe03fda67beb3bff717fa799b4505b00db8c20ffc1c4ec8fa44c5b20d07e22fc51704b9fa1a580721e59686cdf8418793fd8b4d8faaa67c77da6cc6389a320ea21624326ece204d6bb206cfddf6aa6d7c42caba14981d1bbb567667a9fb2de6c0d5ed222365643e3073d25b941132c909a830b5897b99c5491eca4d48a8a3b9afccce4028439a81c221f28fd86ed82b2b10a30359e458d95f458eb7d3bad105379c1c95250a77982a8d862a68d8aa74f3abe35794bb24a162f728fec9420dabb02159be564c437b3b0974527cb647f60162d680e450784d23632858c3e39db5d53b05cbb43551c20d3463965c010d9d9f3f170f9307c0c4c71bb5aa8d9b2b1e8dbf6cfd3f317f194fd43273d9d0a74d3c661a06463465b551b17230c72382f986a164a27e6c180c89e7036c8194c9ef83da7c4583241d20c15e957b49e6e75aa85e7dce02850307884585acf52aea314c7669d4df92d1ddfe692161306405dc05acff63301619b9488a4bfa5592759650862cb6ac3f7d9488610b7c25ab2277011327f952287599c896e1277f5be06f99e4682bb40c38f23fcdd0c38f04d53bb2c98a94e334d05898449b76e0dc0cf661d73f20b2db5e074fbbad364ed28f431fdc6e436e2d4a2472c8a715ba3b53b3c9257c263be596e0322b74215188268ee578303c12b8200300bedf80e565c61a3a59c27e8a0555e87fbf5425bb542ad4ca080e65c88e413a89eaeb0624919cb9a5fbcf8d7c92bbe742332bdbe58f5f308951ec789e24fb300dbab8f18c165e15bcb41817761c38b4a1bcb29d79a80843ff713c4d690bac22e5f5fe71de095272336f0c2e5024f676ff75f3906ee835f74442a31537da726f185dd2fb82a7018b418892505b7001d4e20aea29d68f9d2999d6ffff7b381111fe324c7b0ff742c0797a0bb0f0b668ca28c0c2e5b835a2027931fef51546500dd06be076bfd1af4ea821f6c6052ac18673f771a83abc9781f0671cee9ad355aacb3de0b46bdde033ed89da4802b7ad37db6d71bd03fa69aae2b3605d8455de57da29a0414c494ef89c32937810c51b16ef3ab68793e87c9346ae55db2b0aa2f0573c40c3a0153c166246c7ac429624856b10c2fa87baeb097d3e0d1ebcc232b0237cadc1602283b5fc1973c2530d5e9299b45be48cdddc48263c9177893c95bd66b2f131b1106f15e3b50b649c041f54604c74e845fd953f0ea7ddc3686c5771174ed8464d633607236e5c90e6470ff6ae1f40ea405ea9545de41ec1a0a14033cfa139f1634bb0a5e560952077341c1a02b9a500beadab4898036798f10b7003a350bf279446e58ba8f5aa7d2d800c5ffdbf289104698e2eaa8b4f15d02858684dda77f802888eb23e5c4a44614a6873d0bdbbd520dc5f5260df106cb00164acc783eaddec3f7379f43cb8f990e4ae41f5fef51acaf9360db35a206825266fbf5b9c4e19c997228707574b05ab4b918d6864ad1ee1e5340285a9d84ad02e30d2fe186aea9f50f7194c7e287a15638e3cb5fde8084a2d9bcaee19c9bf0cd1f263ecc1b762ab70ab984cc2b5b03bebe7ad9c9b1df163b7efbf0de00ea022b04980ce5d1e357a8204f7bf36cff0fd08261aef4ec9352c2ca8dbb3708ccede0b32036ac9561dc9f485f5758276ffeccd8f1b5d7502488618e615d60b67a3b4095b8800323cc4dbb65e6eb350b3b90e0b6026cf082c581d063872757ec2363eddaedb6a968d1c8c1e1ab2d76a1ed22d39e660daf621215e049270a8215f6ff50b8af90f5bd23978206abbad685514c2bc0b4712ad417e80f050c08a67eafd50584b12f2be852664c0c9d76146f1dcd6431c7a1d9d9e83dd6184c64500c23b8c363a1e8d802f7b9be16442e16826ad8d32593883fee576fef1d6a382f21938f7edec2d5b34705af4afdcc9d046f2ecda76410b003a7be586f59570b9373365e38be0a457c5243c23038be85af100aebf1ab8afbfdd1577e0e2e9fe1a9cb2ad9ba1103cc4e000bb14a796e0de25605397a514e0ca1fd8fc3eac9d473fb6f095212d8b5b496460aa15e623d9ea3af738aaaeaf77ec91bdeb426b84823a8eeaf72e52ffcc5ba30cd1152cb7fa491e80084cb232d03cf9c31e006f89a2aea27994e9c2987612ff04afea93fb1e8a6cade0093b4ed121623211b106ca50cb9f6cf5a31d957c82dc09b06adb5c2021ab3435e24c74392f9d49b65a42bb1b0c9314c8106df6ce68b3db390ca5a723afc512f891f34ef06ca99f9237816fef1b1a055523a45ff2929f867b26b15763fc0c794e8a9f6161c5d5dfad52cc75fc517de8402340f9ca148143c7e23669149d584a817d22a06ca1614672c05b8aa1cbf7f880a08981ddd08396500b816ed308a224caf557d2dd4431628c64db1513876366133b54fdd297bdc6c8dee1e55e48c18d5e25a5650bfcf649386cb42aa238da0687d0a437844a374aabe72f12a3a120ff1c0e918839dfa8567fb161cea7afc68c78f86674a43efa402b349b3916af0371eb8fdd318439497131d4651833e4eb6290b5194c8ee2e8d85af0fd8bb449afb2fd0ad2ceb186531e3947fe4df9d4a948f76df112b695aca35e8c86fb48e8ff08ec6b86145ce493a70beeb87547d3a07b7ee2049b263112fc3b5358f1f2bb9730b692f6b56fa24558c11edd2f6edb7b3a097dd42ce6a63fc0102c951693775968348d33ca7046d673d1de5c054a5095912a00de18b6fc764d307be8023c955ac30b45786288d5d6c060976ab2f87cd625c3066e252774c94c1650459ad76b849402fbce0b26757086a71d53254ee89a01743008715ea0529bd273a54283993e3daa9e6d066ad38721b8a225804309ce60073ff7f1cfd914497eef4a8b6904f7c48bd5b5044283c3ec2b0ba0f959701dba383e47a62d14dae68b3540039fff6d74ea7b93a32a70131088ca3309ac3e313178bcf29f081f80f5d441c56768b187bea11c68ecd7fc9cab33072e4dd4b33226f428f2a39dd6dabb52e1d9b49a03d196d5552ed143faeb85d0d9b642f0a75ae890b31f2ba9cc17bd0ec47b1d3801a00b08832834bc871ed39e398ea4fc022e8e42f4f43a22c6230c9b0624785c8bbca546b67385d6e173b77ebd3b78164eee80a698030e2706ab4b295ba075e10562d071871d04a9882555a5bab5029a4d79a1eb4c9b3ff1a525802997d101bac39a3880f4567a25b898fd82664ecee9aec4240c29e883079e548f5d2f99e2f893ddf39170561b0eae18c8e5950f1c7fd0f2d266a19a990810bdb6779cd3cd95479033e331a5b8a5cf72633ffc0caf2dd3e0af0fb109a9e2139a654297fb0270198a05700c9d92e068d77644e7cb9f7c5ef9666f3889017a901e7200e83ff762e1e5782854331d4258528e8b92ef99a5a3db48f2350fb28763b258e370b5a461c042612030cd490f74ac05d74713a2579ff3cc868fdc4b90921718a9db2d9f92e02ea2c42e0fb9c10503ff35874e137e66efd502a7aee11a8a94e62f009164551bdd4987e675cb6985515b50fff33c96b713da97c80113ed6d01dd8cf1a463f4d4373604be60b574f19daf2a1f02346de2f04d0aa13729710da6d422e10f1aecbf808039612332d663ca242130a03297474ce2480a83c438e36234ce2950744ce4a0316a2b2f905c431d90cff1da48f8f6889debad7942354930103c9d0273574e9cf82e3da28162520dc877cbf6305697a2ce6dca420c1084bba2708b65b2e2e9a51703b9917ed6eab53d68ddca7d53d03bfea05c43daf3ff0603aedeacd5c03e4bab3ae6f0fd21101a9f106b81fa66a5f19b2431f7ff7ac436caec967b4be7ddf61ce7ce0c870f88a61e7cbae008dc3d1cd278612d562e76ea8918702475dba130edd7bdd1a893b6d21bc60ce27c8359fe3d647ac934453fdb33c97fad83d0716704df197c4418e85f4a48fafb6286e18b673a95045103b38e93d69f4d14a721f76b6ee5a0a41a1e87899bed465a89a7fdec0d58ed8755a4fb9e96dd13981b2895636d62245f971996ea16a4c13f73879d7d3f9e86050f81082b4f05308699cd236d50633e4f201862acf93dc9fbbcfbd3496284ea9e4560583802ab24b3cf04faa6e1f21dd06f8bceddce0359deec095ab8a33d27f8158fe809abcce2db3b0cf827ec03e27fb2c58523b6253fa27142b4d86cb7af9083000440010a50000500a20550d0bba9851e74e0f7172e760c252c8c6addfa855d61aa44f47a088300593eb2f05db4481336099ae56919c321e832292ab03bc27b32af09c1c2608cab6c020622c5d9c6878bc29fb449e2c8cd0ec55c922c0e4d84f4dc093c0e7ceb578425b091896337bc351395fdcfd54bdf69e34f18e4249732b3b4a303af459926b325dfc9411671e8706770b4ca1829026673ec906261f03fcba6409cfed0e33488adb0b0d752a8423b556afc8d056a437f2295019a22d121898ee96dc5239cc0cac8cafd90135f5bc5e18480fc1402160494bedf33ad93c497352bb8f70f70ade8e7e48c8b741ceef685ecae4ddd9c6582d4366c1078d84bb73e482ecf30bf0d1eb72363f8af67cc7028f49405bca1054d4a5d9b6167a05ca634c16315f24aa6bd14924e969f85030f820ba037f114ae28465ab3722cc8f715416e731deebcb358e0f44f86820cf391fefecfa4c0a05cf2fc0387a3f126305dc5d371836c20b0c3431631f35a4d9564f029d025cc121fe18925c8662d802e46c5e0bd98f6645e0c2e04af871cdce4a93724e0246a7c2f3f923ae3810f5171846c8071443d7bef7ac239d7cbd6e2b2ac4af1a55e5fdfdef1ddb71786963f0bb48fb20dcd3c551419b68701d192f7070884681bc3b649d97d3a5560bfa1907e966c8b06fc5bf001d31422f6856d0a39ed059c420f33732e21d4aa31a6eec76aa349267a8932e62909f4c3c93944065903af4e20d6c2368fdd64faeb56df35b8b3d08c8f974bb0d4d9702708094c7a58b1d9066902b109d0d0697e359861ee068be6849605fc154b7d08d036481826c6b70f34436b235bb8d5a7b3562697b75a2629eb0f90648ca91b861c3f397da87b8f754c21cd346fa3cd4de0945a05dc5fb828e0b0ada1eb6c7f5021878f5c5f5855d492dd5241aa98f599e20da0250c416709aca992ad11d8e75904aa22c152cbe25ea2f6ce93818cc2edc5c515039c9824d24afcc0ce97551595eb27f4fc42e5460370fb65bf1563d3ed7ad3ce341a71e400095489829dc5345ef9f13124c794860656209bccfdc9428ac4b76ed4d97a3a563db5d48c961ae4d8644b4343a80a914fc3a607da9735f07c84433800e0fb9aa6e24fab674ad35c1ba7baa2417591270f7e5b345dda844871729626c05edbdcda8bd3c1f711f4ff8a103d2a76a4b78f653e01688697e189c309ba340234bf0c51679710dfc93be009bbfd6e4f06aea76ebd54e3721d4732d164e97404bf970f1f44be0920e7b666c49cb7f8bef2c6edea06944e60271907a0ec4ee9ad3dce4a214d7fb4595b5c27758b77a3e2493ccb4dcd506bbc8835c7f37280187051b4ea20f39185109a00207d947e85e3891f1ed53d402c6c5dd7909c0e3fd63507dc0f53c198e0c0da7b7dc3da4bf752181d56470275f821f885a82295bbd1ec17f32b4a75d100fbb5827d3f6da59464081c9787817f906137aaeb50b06211cc7257c3d6a020edd4a07f6c530b8d17f7407664b1a8871cb73c909d1b64d2b603b68f448d19336ec7c83164c93d6063f0dca971b7656f0b4a9b785fb3ed41359a752d9bff73fb496dc67186c5e735bc124060a920fc28bea2268149ef7913c4cb2c71725d70c33245814519ab75d494009613782dba4ba6ab173b68f331e03f5802c5c596310e40bdcfad6dfa7bde95db693b727baa19a5f28ed0d8daf086fe0c300d12b1f7622cb197034eb1afdcd94e7654cbc5418085a37a36c6237a90c661e1748d0da4d969e8ef0fccbec1d5beee2863c24607e9b04b29332d628cd35bdc3336d798215b5da8aaac4d603fa8827d80297dfacc4ffb4c9b97b62e401ffc0e19c58900cf18486a63bda1f9dce61006b006c37b322fb01e576ca0264170c274886440eea92622e18f7bea86c8d85ea917f0f491795dac254980bcfc8f33384488032d079ddcec09d57559b28c2f31b1ba7d74484ab3fc147f9da7ce563f1632c9da51b180835e67b1bd1f02799dbcd5c0d87e66829abf556898182164f412dffc84f489f0463055387df448f8319222141a7e16306c85d78b92c8ef882cadd018186bb02136becaf3df040a21604e1d578b277f18ebb170a54959a99cf263a615ae85ba0fff3cfbf63a1301da18cba2cdfc594e23444369b07fb4fc8e0f3794346762a864694de037ecd3f6c7f8f2a69ac35f8143c6d0d3765ed08ab049ee841a329a8ec2d7e0baf8e6bf1e9cdfb53ea2436a00b061a0c7ea2058670d67be58e97a0f594bc88eabfc8afe54583756f28cf4ec315462ee22c15ae43a18c9e4ec25380eef76d7f568eb88fa221b782fdc6fa75519db34993da6b9b9a1a69b942e796b3db7bfea0ab0f5bc6838a181654dae2ea0c49bba8ea67efe2e6291fa513628f4cd49c4e809244716561e61a9428f1eb135c9e5d7f2371c7b8675a5da77cd7d08059f4adacecaa490ab2343a0985a709c6a1b97731842901f06baf287eeafd88091cbb8c6ab3d99227ab0674566036c79298ae3ef83693abe611c623808b71ac12698038645fcc9cb28f1ddfb951ff50c2dfed053e103289781952ae19b1a3630d3babee7abf558b8bc18a1dfe34609eff41d3e9c2dd86fd5d2f92b340b19e0e7aed497486d8a161dd1b31595187958f83f9db41cc32501714f7c343aa6dcdd94adfc08268ad136ef7caf6d44f8c86fc07bfb7cdc1bb2f6d793054729f6e301b18468825e023fa7d79248e2d60fd86f58b7dbe567a6bda928eded2d357811abc6cf56217eaa972dfc9c95e13734083d28fd9f73dba9db4c88ad91f7cfbf3c1938b5ebf154f39105126e23eaaa10d5ad5f80d301efeb11ffd306125bf52a460294f2a32edc4ce32c2aaf3c75a87e4cca610473ed9e9419ae25f7a726c972fbf80a70063d3f9b8e914d6a64d6c65c2c4c18b4aec1a556c814b61ba0fb57093c1b1923ec689123fe9d259129824e33348b309f000a2b36f7638e39b9ce7e175141320af9f7ae736fe43b68e278e31e5fec06f5f860e132436fee69f1c60ab62e0ac1dbd8b8c05957295515cb8ec3e9b146c31d86d7b111fc87572cfe3668e87ed8a49fc0f2055967f1433f1444997c271222f505e3ed0cc29206768a59c8bb0f0ec9ef8e8cf5371497078e5b27abac19ccc3982c733288c9d63d97bb210ce47e4e5aaed5062cb7cce3ce1ea1698aa15f1008ed2e7d33d2db70094e28522cd6757b41de6b639aec95dd60dd0e25189e0c8c040dbdf91cfc8f0c2fb88fe98f5f74447fc4f11abcf1182947569ffe4c4b3abd632253febe1df0bedca0410cf0d100bd2303801f81039cda17a073df550f4b5a00c1ccece921581d1e6ee4a8cfdea502bb70e134375bb882a0d8c258d0b10142b855c55ad7161f666be3621441f9c68d88ec448acfbc435ab3f55861bfc0e910c1c0fa590dcdab1f1ba544832be0f0b800c44a78fb79a201b2a5764be23c037dd107503975e620fb07b235058a2798d33715fddde8ee09c35674c174494e4816ac8629d84d16f5c831c7aec3b32257461615399c0031529fe15a9019ac50cf38a3501786158512dac140b6bdc380549fe8ee052845e4fa3738381631a1f7fc4c4316f72ba6a1c24c87958019ceee0cc135e7853802a391437308738db302400178c470668383453208daa665ba1abc8a16a42001ece487c0090358accdbf9719a82dfea45b374c10ef9f438b6fd4d9709f0d28c15f41694887d9495ea27907c256faff05824ac7c66902f741ccf39f122434bd90d4be705480573e4ba4da7fb0a3b5f9c0221950fe9ed5a91d04281b0685727f9fbc7b76f749411972c29b753c79595efe5b36b9f1bd65cf60cbfe234fe4d3dc9d3d2f4e9d152233ea2cf86e8d6a98fe759749e8dd9045282de0a3485c1468b6bd405dd94f542d54e048788858c4d510adbabe8cb1da83334ee250b5d7537c4b557c8dc02ec9c3e3d8f75849d239f19324eb63abad0da1aab1764d694540528a0c59c4aa7cc262b7ac796e28707d2fd7d6148ce85e6541896430af8031600aa6974f1c07826d3385411557061b9e2c163efec1687f7e8f6f99f8c04a5ca99533de5095999359cd3f41113d88a572392cb5a38ec442dc251e16edba7cb084a412f8c3e729326377f6bbaf91ab2b191dd8cdbea2c1c4b26e48350eedb59ad4cdd114bb00096feb74d668a8f12f0a24eaf6101b65f07a8fa7c16799397aa90cae8cbd9bbefa3aa5e2bb273f13107fde1d180fb7364d084faf9821b3ede287d9e93e3bcc9ebd352e8d6bb06c1f80846b32b2c292fe2365217fe535b02ecf91a22540619c0febe5b3431e0fdef4176963fcc662698519b752fa3c4e4e7000107af14341f5732e90732841a79ca20e59fdc9e2435cc5e2b0bc5aa410f8ee346e55f1ac6a026b43bb1fae5071d0f872a914ab50e0a1b26e8dc2de3c1cd86127fc8044dd591939d504edeb5b926030e7a34f01c4f537d0702ca31d7ddebec50c2176c2f057d713a816f8f613201418552da69c0852eaac2d05fd5f737b03a04fe5a9f423f06a4cbae97321ede04fd36d13de347de47defa91a6b897a4772b9dbbf498cbf72b719ff102449a6ee4cc4f461ab5fd857c287fe4d0ef4986e0811d3af0d593bb4b5a1481e9db8451858064febfdd3a05011013bc47975a9b4120e9014484aafd32374c8505ecf642bf23792113086cc07961fbc08c49100765524fca8458211a8feed279d23e81b23185c9831be0c088b02f42c4be9ac28b60ea529f345de1d42ed917c5d240ffe2876b15799877e3a7f860e84a0d11efd5cf62563236cff7f16c5c5a2f6bc86ce200a9affd61729edce933d79eb04f1d248308df145bacc14604516651f73fe833baa00d0b0ea6000b0ea90c2013980eebfeee17232ac2151c7d221f7f6da45ac793beb15634294b3f397db7b44b47350168bc9996aebdbcc2372146c85ac77cafe368d6fcb4d67ccca5e330c82f4360b83d66566fcc79310d4bdd7d9011df8b9cfff38b0af0729d9ed219168fe520e308c46acdff70b9ae82f9be0c04c0d34d61f1c13cd0ba281b4ced9233cda1c57dfd1704909e1eb5a204052422a04a648538404a882393116ed3ae6ae9c4d03dfcad944084d8525346756308f51b5b6eb48d0b42734dd00fec4f5a458be26d074f7296d3731241870c4e501ee85fb29aef3fbc0506756d0f8ff14349c53737003283a0b3d8505c7448dfb51b83b1c11d4ed526ceb8c7bb4242ebce4a787056f521021297da2456a2e08b162d54be1f6f2e24588bb093a04f4e39d1cd10edfb44fe795c7888a6c1b8d8507c30c9d3b993e4f9f49448e982c2176252061d89f1bf7a4097d4b37e74b563335536c6dba423a41283cbe98203eedd366fc94fc73eb1c4187040c0b210107346e771653edad21258034013d0c8d9ad696cd251cf5d7b62be4b14db4a63a494838097af121f8921a38c24612dc0c3edbc4a3093a6125221d86bf885ad21b538f309f49a373404067b750821fcdd854ee864a8534c9e412b8ee6ee0f6a996915857d8e56ae8a431df1696fe0a3e909257ddd2917317457c647a2a1d8806db267b5be2a584b613dddba1de42dc079cf26e561c15fef955e66f2de6509373c109a85253bcc4f0bc3a4895a2de2ade9266e6bc561838842435b4302c453f2069e183a514b308c68080380fe71b390108fb16c5f555dae9a04d4674f18b7b059db7f9ab71c2bf6ba3535d664800e7333c38c70bf97948ba8b1fa083d562fb18c04a9f984bfb904e76b6e96e918b552fda4ddc4382c0672cefe65bfc3f4114c8d178b6bb60ff3cc50ec211ebd94313eaac83a5156f7f5425771c303c51cf1e452f45dbb747d081d4534a8b09e2881d1a49c16c56183c0ad2cef504da25541df9989dd75f261923d4212096a3df578511951a917828a92a9a735c9c6b66241a3d1eebd534d64fcf87206db0561eb79cba2df36370485cd2017033c76caa2e82107b40fb9d9a7859438803559c780b577fe68b070921e72ef15710794038d9d116876d220b767e5216d9b545f2118dbad4046f604497ae13eb13110851093521371deb271e6dfa401d34c31f843f4fd4f6afe0101a2f00260d222c01c55f4cb6e5d6087a189d390d02144c040a965fb85b3092b24a075964007caf31037cd1c604c0615522267f941ba826da243bd58860b4574506c09431564077228062e4468b8001de11822556d7b4fbab61a9f9180f3046afec38400d957d380686887c7f2b09d95bee2df796322599021b0c0b0b7d0b37b8cd61871d76d2ed1525e2f6cb201879028a0f3e2823080cd0461a465924d18405559c01f60c4f1c4a73dc733873b9991bd25c6e09252ed704e4de06e1723b40e2725266b8dcb7bd91bbd1956eeceacabb75dc8a00b73eed726aa7524be87037ef6eaf75391b4a28e5a4a1449142a559559aa54414577bedb32e476b1dc0074bf880b50ca62290feec72a8ed4151968cdabc8f24c09d4547dc49d9a68b7c7c563e3e3e3130f9f8805207675c12acc48fc1625be9b6528704b554dec8288411d48331aa84b183181c06105e00c58c2c456ad8e0e533c545897d74d1eddf91c20e51a2307185952d3970161ba478c1107c08428c21198238b18e4f073db8fd335d4eaba183947f779c33c763bf0e7690e5f6e7b04fc8c4187ce088541cb194d3bcc344860c5768c982c393202643d0a1882652ca9081a3000542bca4b8b0e1ca882889db2ffb6fb49021447ada94026e06500004832c54d04312234049831134d220820836a001760cb7bbdb86f9325dce8c42ccd020017215372ca108e8ca97f2a915577e0a89225cf97f83299208e2b2511256a2d0e0cad799e1cab711d336fdc426e72bbac7743953e2c0e8f6c3589165373211ce4cb90f28424bcbcab74aaefc140dbab8f2572fb8b2065c5cf92f37bd6a2d56309a2676e5e4f68ea4680331aebcf26d97239d88010b4cfaabe39ca82ec7e5124624e574e8d8945f2373f8e9a4c4b425de72e3c7e79137d62e073332a286eb515cff4e7a9600f9350a704203b1e8e3add5fcb8af7372df2a6e5f48b52fb4f40b53ab6ed9ecb52e278b463680c175c7d678d9e9dd331ae1808ceb3d4451400184228ac8c11243bcaa902109a52d43c8c206a0f471c2870b8f9121820d5737d22352f0ddfe29a148638b8d9295831ddc7e974d6cb1e104ca6f81affcc221f68bf1d1e518000a16b73fc608197259e8568a4bbd151e9a18b1c1162d782901e5d778ab851dbec04225066bfc5c01e5dfb44daf71e59bd0ad0c94cf2e3fcbdde8333ff9811249ca15106f31c844b9888f182964a51bfde3bd507ef071bb094045651358362ae2ca65a322846e58b5b8f1795c362a82a82add78551fa7786ba231763bda9a98159f37beb95c2344a506f52a3e155ae263430dac711d05d7b5f48a6ffc1922ac2ae3f835fb5816cd2893a807fb44f1f9c85bf40766c58f015211373e12377eb829dd78e42d069192eea614c43d68113e20031a5ca9810f4fcc900215a230634a930bcaf84902a4347ead492a95b609a3943549b762174a356889507d52a3c4af45554adbb0d193a21bbf1eb54d77e357a46e71607ce91df4dad23f4ffac8bcf123110e45391cb1e0c6df9068524771e36f4a72cb8d71691e71e36fd9951b9f16e146ea831a373ef5c1dab7af6934e828bbd236d952c6942d654bd952b69431654dd4275ba24031280645a1f82412cd236a706a8a3021ecc92422925bda269c40d367fefc002599425130d9fe23001296c1edd9af800cd20f59e9c7f6f453b92877aeed53f512d84c3158843c246d93c45b54a88352f65334e83b89b7180c127a42147611d57e886efc49348be651fc89c402222f30e5c03e40d0452974910a061e6ec2817d8060085f492132a9a2cfebca6d8faf5c9f233f477e7030b9c24893275a8085108f2125081d6cb0e508192df8014202145531495442836e7c1a4485e893f894a82a8d008415f61ca65ad8d79f2af691b3da59ab9a9b7e1cd45d718f7e981a6c489b7b686758ea3954a69141c3f2aff8a9aa9f3986265fd0d0c50c67c48003907fc5ad17a1356a500ac306a41b80fcb54321defe38a6218346aa5fc88cab6de2a7e27ad564917ed8c7cd7dc910d70087fc5fd96bdf4f0105f8ec00f116f7f5b7ef87817dc8ef2fc10acc0004b8d847fca65fbdeddd939f790cd6c831a1cfde7b34cd62167fe6c9c0e3e303d2d73c19bc083e20fdcaee123fc66e750c4c4058b8e1f60711d23fa45b8cc44632f0b9fd30b40d8a8d6610e507731b95bd31bd622a5b6e3f0e09b78970fb2923b9fa81f407e917d224b40d7f8a7bf04723147c4600b70f183dbe6b64cf3d22fd78747ac0cd53ed50d7f780d5bdb07de4f7dc237e1883c5868ca4514fb5435f7b8daa76b6d77efb543bdbd7af1f8fdd3ed63eeaa976543b1a4fca59f4b3cef2f72f7cc1ef0a4da5548e1ddba5111bd2fb16c5a1bafab2a1bd3197b9196c7dd9907639a91ad830f5b2fcd545ba8b8b8b4b47b691baa8db5f18e4c68f1d730f7e96a7d004377ed44a8dd22b274ac3621fe46acf9818f4f6531bda48e6d1e9c33991da269b1b93b390bc49651ef5ca513f8fa8b40deafd2712a35047dd365d95f4cabf26e995c71a74fdc38ae4fad7a0b609e7d15d5285dac649dbc4e7c891c95bf38859fe94725f68531b8ebf30efefd08115da98aeffc6d4363d977e2a7a39da443dca2c6a9b7874825f27409686ed8f377659f7bc318b3ad8196fb27f349166d254aa4f6a13dd8f73748ecef1a98b04c440d22bbe3d37debfa16516d7606972e317da242ed0a062ca19663c4901232921a2c90c198a90c1112033b317355002082f988810031f905f875b16b86265891f228cd41005e4671af6256ae5f835a6a85855c72ec705ec51e0db1f017260735c3e3a22cb8def82fcecdd9bd9bc95e6f188e11efe981781be3727e4b829193e80dfb819cfcfa296587fbe3a2a48a6979436ec2007237840458b2aaa80e20228b6c0610c1bc6804113e8ff2d10dd60048819a051a5052f2802881ba000420ac4c801e835fdf2bbd977fc60e3a386583565020ca22ed6c012850e3d866002052f687a411a5a401e61cdc751200d9141840d469c40418f1325a640220653182551013acc65a32119dc1730acd1900b6e8d0c1a5e7383c32d1b5324513183146110b106e8afc3ad1c35b0010c92509282245800fa4f1d487feed574c7d1b1d6daa8133d135c27460e47c73fceadb061cded9ab6b929e1882fb5e04a2d68240a7c318ed3ca3793669529ecb4c2b10d3ba04adb4876c0cf83d9c79f4936f3234ec79f088444a7b5ef225be483869d5ebc976513fbb8712b588acb4d609f0bf1c759405e44e2c1a0d36fadb7184cfdaae6e6368eb31ad478b0f2934a5811488e20dd782bf758366ab2e563132db1cb51b9f8ee54d775ecabf7a8f82e3cd8e8baf3e376c4bdb8630a1bc6d78ddfad20ce7a794b88b3e2bbbbdc5bddc79718d6e393458e88b7184c695f8ce57252437a159ffa73e7aa44521e25c28385e1855ec5dfb458fe1c1b19969ff9398fbdd40d53d33b14fa4f29b0f3f98978ab7e7c18bcc57dfc14b77a66b8010b124c3c397a628903c8c0890c7830c50c7a90848f82d440a30841f800c8073e430801041a40c181d115d09f6bb01f527327e761547b1e9ea11deeebc7539ffb78b81330f504b9703cf344c0735bca5ed5dcfe22d0868522bd76f0c2064e4e3e986e9811438619dc8073a52939808430e208073f3cd86ee4d0c54b0e4b90aa0c523c199238c142c380c8006304328a9a5cc934a6309860c280324410a4019e8881850d1ac4608c8c6332a38a278610a0e460868b2cfa810a8e1f829cd0b0c5100526069f2170900310c2c7835714237810c3103cf0696ac14b2a088829377a58411326b499c80062c710b0243183eec5670c2152412022228c2bc2701245d351c4045195013061832968f0041339283142dde82eed6a9b4fa98722c4ec1045a887251b3d28d944e94d636e8cf159c61d4734bf73d49d97d0c8cc4532cbb0d827e931cb9c5bc82da2b0b73a5a6f610cc63ebd12cfcc1ca3099936a7c6918bd8863987c238ae436dd8893b9d4e9b36938a49cdc4e8508a69ba0447a351d7f183319ea66d229649ba4d8dc382e3388ee3384e6ada4c2a263513a3034b8c7b8cd33dc619e39c7f84b6b4d4d29f685b36e7dd0270696ed5b61a4c4fe66a1b86bdcb77fa5566f3189cf393dc03fb4931893d712ca39a84b255ae3ba1accb0b4c8c8c8d1ba96e842896de9052c7914335a363c708ef7d00a009800006b09ab7b20850001eab1e2b9af9093df3848979cb6c8617bddaca0570ab0cc0ad93931ecddd40181a00e0d6ecbb957ab76a7feb36c2ad75c7ad9c8e5bbb995b4faa5b51396eb5386e7549ddfa72e356181bb7c670d293b9d49381c8645637021999985b6dc0dc7ae3e5d694cbad38ecad3954a75b67ba5b7570b7eea8b78eb0ddfadaad1ebdf5cb6e0500762b4d0004c0697deb005803589de427b9c77c1360447440892d3cfc88a183153f48a366688a27538888904288a39e1d98a0d164461447b09481461644d89092a48b32c200620557506c965073c3c5ccf865a3254f6e4873a3742206f3e573f1a29288c48b305e3c59ee0ba9d5bef0b30ffbbe909b5c5a66e1a83b9dcc2f0ac5254ea84d5c128522129d244a5cda536b53a9ff06425dec4b92f296cb59fd36f5ab558c96f8a4868a4df7f0c65dbabb7fa194382edd2736673cfa386f641b19d9fde429c43bb168b9e18abb41182e57b898c1b9c7e89e4aa55231de94807383c395e04b9c1a61a5320d177977bcdd7991f49f1ffb76d96849c90dedbb0eaa1237915c18361f7bec5d40da06cb688a59fdd817669907640769be6b07088665980b08f6c5582e420a6f6e1f096f6ebc15bf9f8a9b523252141333938a8999f9ff9f49c5c4a466626664d4b04b3e37ac7919548ed13d468ee338771c137470743ae4c103cb151705589ac8010b5ae30fedb1ff91658f7d45b0efcf3e55e4e119daf954916f70749adbb4c77e477bece3b793fdf6f114e9c7788a0cc52fe29ff58032fb1dffcc19cc30a4f961de8dd774cb2054a6617ff681ba4edf433bc3fcec67d861c4865fa4e317999f4a3eb6f256363ffecefc8f67487e3cf1fb53c96790a77f7eaa1ed05f93e1fd57fe35fe374fda89f496466b74ae7cb9d42fa5d77037de52653bdb7f3c43d9b7539ffb789e67eb01e56bde4d4df46e3c127a2571b07ca7a6edd0e791f1d6dce0e8c8964e54a60927d2cd3cfb1a9b6f04923d0efba8377bd9e49f6519533ff63b8c581c6fa9e4733ade52c95aff87f6dc57c45ffb2a5bbaa7e3b1b3b00fa757d9f5e9c57e0cf8a7a28d0115fd1dffed775a7bd5fc528fa3e30232b953d16f05ffed31e0bf7d18e8ac662275cf1f2ad3b44ab5427dec77ea639f2a3ef63de0cef6aaf8f10cc5e7f976fab1c73e1efafd3d20f73382dcc5e73c0c8c30bcd02bf915199a5fc41ffb8a705e064e903fcacebac132fffc76fab3c7e9f8aac17161379cb49252828cfdce33b8d3af9a9f05a59452662fff06ea9e3554a691ef2fbd95d3f40ae3bf18106f31dfbc4c621f3e2e9662b24b4ab4e808a9e260a30df66671b28fad3e0faa7e3ba7e7b17ffa54f4bb6770f362d370b3bb797d516f57383dea774e8ffa7886b6e7917ffaeddb41bdfd78fc513fa1f40a53d15f81274f453fd73b0b7bec19ecbc1b6761cf791a0f7646c17ed362b1979deb253b11c43568b835a3e172dbf48f26db86d28065f494ddca022b9fcea2d954574e6722d5fce9ffe8d7be225f91a122f43d7555d9fcf7962afb542b70dffd8f5abf038bd4e73e55f631c8e09c9f9afff357f36be6f6ad3ad73bab4b015977bd66a0ef3f83d6a95cfe3de0a7929f943d15eb9f4cd270552ea7efbf43df3f9ea1ec79fce967df8ef6fdf1f46b8fd3aa8c7aaaece933a879efae94b3e6538f9da5f160793e187a35b5441fef2983ca3421063479be110ababc7e6e40973742c14e81bd027b7bfe18a32427977f70d9c807549c9bdc7a19b90161fe878233ef801fda35e06705c294f07303c27c0873f9654caa9fefc76426a26189f8cb07f213887df8b82d9dca0da755f8747a25a76742afe4ef98c2aad0365687722b0a394bfe0412e4adb9e42cf9f2e513f196ea258e971f81bc954272f997cff19fbae1f5f8cc255f62ba1288b3e4cd478204d22b1984855ed1d75cc8892e20ced23afadcb9625e8b11d2666066bef38626c0e0cbbffdadd73da0cb4fa00774f9787a409ea19ddee1090249961840978f87270824597cc07661020cce7caf9757bd4a6350078f1d0410c0955f6b134b6788f95cf992d2be324855c4cb511624577e04a213f3918ffd780a96bc65025dba2648b972068870e6cabe00f7902e1e06224b7e7b2f230f725440c85f5cf91c17103217576e9f8adb54dc77425fae3e906ec51894e40b914f44fe0bf2892557ba5c69e40328577efc911f819aabdbf6dcb9bac7e90a24d626367a4cfca32784c90ffdb160bf8bf7325203f6c7cefab1a07f409c85ba41367ee7c2fc6dfef6a1c037fb1c1b19367e54699fcbbd7f043dd373bd5e39fee55f385ef5b5867da0aecbb7673f0585f51bd6a856e87ee681743ff3a9e6cf3c83404e2e3ff33f5c7ec67e117f97ff617fe667be22fdf6197cf118849900832f997ff1603e8727f338bc98bfe1a13ee5d97895f7f20cf32f2a97cb4f804197ffe15682c0823540fb2aeaf17df11854790ce6f018c4e13198baaed76b06d4dbf8d74be65f30eff2af987fbdbcfda55e492f081167c98ff1a28fb3e4dbf02290b3e4bbc078321e3b0b1593d8f01894f1188cf11884f1187cf11874f118ecf101329966164e929fa31661e39fbcceab37d87819b33d5acb04c17f7b0655fea956c8befe0fecb7afc8576468677bec8bd4cf7ef354aefaaa1f5b74cf851472767a255760f0953de61fdd13c109f102e995fc0930185dafac39fae9a9a7f257cd4fb5427ded8bd01fdaa1bf7d11ed6b0bbdc23cebef2cf99b57e32caf5ef518a40c621e5367c921427a257fd372859982eabb57e319e5deff47f7fd15d1be7b8dc1bac3885d79ab46b5c2f6a7ff51bfbf22fdf54ff553c567b048fded53450619cc5e93c1fecd7e957d4df637d9e3bcea977d7f37ceca9e3b578db3ba1590f5afc850117feebb8f1fae308061a0bffb54d8e7dabe3e83d8772aec53adc0bdff4ef7fddcbb8c0cc8542bf873bfd3dfa5b81b2cf633f36a9c95fde6ad9c95bdc6838d47e24fafb24d8b8d40dd728c1a3797184b29dddda5e699bb9496c35ee02ec6ec857408777fba67422eab5490cae1679799536f77777fa6cee2c8ccfc91ddddddc39e6b8110a317d89c139b53d36e94588c5e7811e3528c63c4e8458c5e488f31c6e88584819cbfc598485343738566bb75e3b2186316bf4deb52d08077e589d29cba1cf9923e5bdad9735762501623c372945a979901c15697974853437385e60526d2d4ccc74e5d04e8f540bcddda6b1fcd0891a686e60a8d0c77eaba28dc9269bb92d3b41b67c468ccb70d4b9f71ca8c625ba836d5d036b971658af35dbe6b97ab9259dcca3efb6250311c13a3559a617509cdd863f5594425064bd1c0c1942c2ab01b17df141fd4964cd3106a160331e5e80a6b2f1b4d21e2a2294faa3793a29299da29476e98c26aa02989a2356e30f4c670d4d69086daf7c7293efd85da3784e676371d6d63b8646620695554d8123de2a696ac060994e428b565fc60d4c621609c849a9a1b339e348b2ffd496b6adc891a743447a92543898c25329864aa668c9be356a17d37674439438ad7788bf66d4209c51f1781c0a624dde5246d1ecd5b8e529b9a978d9a20bae1db15c88cddb513b5ca49a67d64c32134977ebf0d4d5fb1a9cb464a8870e36732d8c7422e615d9c68b22e48e04006b30ccb5d365202c40d94bc60b24089cf44c3d2cb463b3461517600e36246ec7085739a78e22cbe9a37239bb031ca1ba68ac2ff94d11a5aee0bdedd95bb9de8b7b277b7f46e2a3ceec13f3129f9363fc63fbf883133b32e337bcce27fff984a592be5e7de3e657777773333dbf0c2461d6c76da86b09763ec2fc648535f36a4ccfca06f6143d47525998b04c4b0d22bbefe9e621f1c81b8c695b69bc82e437163bd31c6b8aa312282841b6f6e8c5582f0951b9b7c7e807a8848060006103e39a0010e9484008631890090809830b5008a0f9600c31854c30da3109458e4831b398c610c6392d28d313211841b677c8ecf61fb6071c3fe6924498eb6b8b1975cd104032878301483a02760d842a71c2861c30f3d4061f4829f1b36518c1f724c305d4a8f8e2e7ddb4897661dcd9820e281924dc0c57820440e766454051580d1932bdd8aebdf14005288b8dd34225d1a35175c762a1f7a95dbb1bfd7ede7b8f443e8496ebf0b4d3074299da599b4dc76d7165c652b42153d3c4185900d53802127ddf6e287090ea81c0125090c99861bf212331d01436e7addfe18a4445c12c64824258c11a93f32e170a568054a646091820518c6a698283c2c61051a601c31030cdb48d8408da49380612fb9fd5d1472d350282ffe30893e1bd349a46322c459fd73ce8a719dd44a2d468649ba7552670182e492744bcaa259b15193b2684b4a5a168e6e9d4ccaa22d2969594e28ec8bcd7558104ad8076e9dbc75faa293c8e4f6e724d6aeeb8a8a62aaa8120fd02ce9a61555c1a460556451150ce908ab228baa201d55396d7fea50e85b899ee4a06e1a2614251ea0272614257362a3c34e2dd451b226ea27594741d99a6d28140aa893f410de40bd04e7e6e6a68190709d76a20dd44b3aa893f41294dd501caacbf147752edc4db76293b3fa9b7a73790bf59cd405b8ac44a385470d8b19d04756eca353d2b2fa6fa698c735b58de5554cdc22e3814b653a2ab193374deefb27d5dc87dd1a40d1afb6fb98db36ad2a69b96243d64d490bd3921617972e87be8ba5418a595caeb9a8e76d3203a2159477f2bc98acf16abee6757cd4362ebc92a16223bc1e01192e06f5aabfa8242ab97de42d1766cdc880a489452b11f0bce3e479ca30ed65db626d26ae0770c494a22a77e6f29422236e45a994ac77775bceb9d9a73a8f124ce024c60012d01b9f04a91bb1dbfd3878865bbcf2f8e9806263f36c2207cb5a38117b90851337bea466b0195a00857ca589131f8cb84208498ab200435eeab9610918392039820a0d5580213301b96b7103cb5d86163f5c1c777e8aca6e5299851957ca942a0b2c746431349140fdc901dcf39fbc99e6be17fd7e2316e4deb937624114106fa9fa619e41ef4f8501eeebff70f997ff511fe62bc27dfd17ee5365f5537533e84941841071e5788f813c294e7777eeddbdde789c764a3f9d5e79bbbbbb8e7b1077fbee48ee2d1cff291c32edefeeee98bbb7b3a045ba90e302e22c4c76981785648e0bf2bbaefbda79f55f3c0ef52fdee9a7e7caf1dca9b2cafdab3ef708c0498003aefbb8deb3fd7d4e77777777079aedeefeeeeeeede35dcc3b1576517e01ecef9a3dce9a6b9bbbbbbfbc79f4da3391ea7b51c1e107fadd647a19e437975f7eec69e3b55f6b9aa8beb85e3edd7e94da0b68cd77dca8b791c1ecc5bfb37a2cb5b170a652783af19ba8ff9d70be65f2e8ffaa59317c459fed67b89f1502e0cbabb7395b68c0ea4c4628c1be3538f6f3d5a6f459f48c1f82e2b65dcc855388995628c32fea0e8c61a638c31d6c42a5904b125e015639431fe608ab4b4d3285f2ab36c076096a971b3cfba9c2c85c923e69c0db8d34a0eeeb41243ceb449408e949ee45578105e0212e86fad3872dd0a2eae5f7183eb58005dc7a20649adee222d6a46682a1631a1d89d1fe34d931a980042142da0286a0128d140d283123b08e26809326ec0b294d1605daac8f23263bc79410a92a8c2053bcc200695216230a184d0952557f460030ee60d95815e6dc9c6ceab90e2f6ed47b9afbc27688c16aca1460caa7c714412520401032c4a20a1a4c90a9696a029d50e52335b9783c91b9c2cfdf6892c9e3022a75352c6a7c0501a52d4a0a8064440a3e70822847e20c20f4af8000d501ec132c604254bb9b931412707f320dc7086f2d0832fc6b8fd5a97d36f13c4c7c7c7a7084cddc6fa53fddfbfeaafe9bfe9ee57a1a94d7d4d474e010d8f908412580a152330e42a5698b5f0b8216fd171e31124d1c995f2398c51a07062898f228a2bff06c78564e5ca0f72e4ca27e2822b1f862882f091e2879f1e00212505499103a11caefc384518571a5171842c5203c8cee9b60a0db7bfd98c3582e82c538e5600559ab81d7180d1effd4574bc4f1d332f755c5ca77ff91fa8b7ffe3e55dbe22a77f797b7ab19f6a4a1d179020f128888ecf698969c791cc660937f5b59f1e092500917093c475925cdeb2a81c2fbca44a3d8e985496e4ad08e44953e94a59bf15cdebb85450a225cd243aced2bacb99bfe3ad777a7939fdcbef78f18acc3cea63bc22433b338ffa223aa8e71ac185f9a9b4ffd18f7ad53682f7daf1a7af918b4d27130c0108f2994cb329a949a0243409fdbf9d6a93135057e7a8eb3aee755c3b4082b43084c80b1d57bbabcf9d6b84c7696e842a9feb50405d9d2ea73e4ed7ed73edd8711281eba5fa1cafd21e88bfcb03e9477d3d79aaf9237c0fb8c37bf9d3efbcfce9e79f3e9ea1f9edd81fe1e39979fb3bbe07acec2e53c5d336e14caab5a56272ed0009d2c210224d0c49b9b26e7326edf078867666fef43b542bbcfc08bff3f223ecf87874b8fccb6fdf8efdd3c733a37d2bf8bbfc4e3feafb516f5d3c06636cbcccd7c8b97831aff26ca43c98c7e1dd7894778af9d3cb0b8a415406c2fc8d7fbd6cfc2be65ffe25f3af532ac92573c38b3e2f31369a6e780cbec0e8bc50f6b973bdbca7e3f2829c94ac1c2531d81e633e2f3d5ba7a254a0079c8f060e1fa71b7ddcf8de8dac1b3f46c08d5fd4ab2899939c642167790d8eb7b68fef12cafee6463e9a42310a798bc1f924358fa4a43aef35997f880b39de5d8b542fde3c8be6518c54728f1f304fe5cab257fdc0522ab44d38855a9c0529fe2a7e4debe397101fc7042437beab9da790b75c0537b677edaffadb4b7b4a0106e714f2bec6c371567cce7379919d3553ce8a4fa693a8f5c8ee9054a691edffc34c5e462898bd110b9e9e9f93f37b6fbd7e6ac0ee9ddb61c486aca49a9f7a06bb3ffd0ffba8ff71fa14ea2b32b4d37daaed553ba74f35eda79a9a0c3688102230b8663e2a79475f09862049503f402aa549424df6930709423c6a9e7410216fe1087118a44ce80374659589c1f156147a7284138485ec035245480b5a329c0c4a106759cd3ed176bcea3b0ff57c3aa1fef4aa13ea719ae6f0ece3f052d473cd3c773bbe578ec7f1aaed27c0a00af52fd5a3be470906e87cd8684858256df2e0b16d800807c4002388bcc1cae77b714cd0b971e5bba25cf94282b4402467e671bace78412af598d89f1e91cc7ed7fda95bb25f90204a9af628f09d2ea8b6cfa542b95eaf1b9fe35f361ec79d9eebe4811d144ed00f877bc84f4161e9afa0fa9907827a1d4fbdbeb173ed7894a7f28aa81ef594c70e2f888e198d074b428d92ca1bd21ee515f13f7d9d1cbda8cff13ba8cff1f10cd1a7df4eea717c3cfd2995777a94d77d0e0ff538bcd49f7ec7fff4dae7b7a23c06e7cbbbbcfd1bdecbdbf05c3ec6e35ec683f994877aee56407de6a95ca753f7a98cc1148336f8ca780c3eccbf5e2fffb27ffa97cbbf50df793d3ed213e22cf9280f86f813939cec0b17c4e0c963b0f318e482e898208bfc27d365009c00a687b68c17cc3da420b9ba834ca1324dc8cc02108951156a9e66f52b1e53051d1336bf36e517f3f8dad4fc5e7e1cfda8e4d3fe3d60f6fe30780bfb54f273bd8838cbbf07f4af7f33c433b4833d7d9ea19dedb3e719dad1be7e3c2b67f96ba98f67fb40ed439a3d835a6a5361207bed778666d60332483f95cb59f11b72c58b413e84295280844cd901d1ed6f81c88c3b41bc3555aa1ff3e9c7ce0af23fb00c9e9a70c1901a452cf1f10129cf906a85f9f477e65376d6fc76e6671f0ff595532506e787747e2ac9a04a7e374c4355dc2009201f1f4d06eb5ffc6a922adece050bfd9225343ae1b6b8a46d24db08b50d3b607be62823fd18638c31c6c8d8eb742b4e11e4e3e313c30e90202d74cb0e21f242d38d0f4386b12781202875fc45243149f4f16cca7e8c31b20ef52fa6d3288a1289184a8cd236164a2ff948d44b3a0605f1d66abe93bb4a5a25ad925649ab98a41feb25cdea0fe24e925649aba455fc4981b41bc84c9a5770ec1f22648635576a5c6d93fd0d093524f4aa378f05ea37e599dff71683d8b7023bb9e67292c949ad9c9113fe72466c38815aa585fd9929be572ce50c4dafb83dd91ecdcff48a312c62a9d076ec13ed15b353c1c44639b12ff54264c3989917246cfc1d221719f387cccccccccccccc93999927c7f8708c390d71d607cb1fd2fb27a83d58fe7e16bc4606a02e6731cb5a8acf0c90641da58c4f621173897ddc5cfff8847dc8d84454e24624ae7fc5b8f8445f8412774c61db5e7f8e6d30208c149fd9267bbe2173213eb6a9b6ef84be9bf6f149b762911251db44f18f45fef1c83f52e996f58f551c75fda3952a978be2526f5a963dfdc2140b415ae8955b1eecfc362d585166c3e9e4829aa7f959d4c905e6ab1635deea61c1500f6a082208295a8400ce1cee9ca73b312ce5534a170263ba1886310b415a681b7bb1d761ec530cb81867c1a4082d84388229cb1a20f635ded25952c119538696ec100688e170312c4d5c0c93282b2cd39694b2c7f031a5e41e184f6676f628bfb6c4157bc93df8993ffbb08f3ffa71517e1c726392e521313786f20a216e979f3b8d2a18b38c38b0e02039219a79e08374b907a53615a2503b6c606b60c2b0e19098eb9fcaffa657f13f957f5f8dd603eac60803a89143a12cb3e2a32e0494701284328640e28c1e70164c5039438d355aa06404c6222b807084085bcc70050dc0a88595293dd881164d820087e0b013b63df673c366bcdc179ee072dcad9cc7727bc7b6f70d7bc7380c7b8ea3dce374ec72388c3e9dd53ff7c7bc900beb0b1cb66dde10ee6a5f4c93f9740ac923474c20b524c8474c1c5de92383fae74a164e6a42fa237b83d48a488e711fa6acf5a366c9ff789a253f4c6da19979810da3932ad813284452da263ba2f2f26792d899211b6992e8e755e24fdb60f4312fde782402f18d9f53396a6a297dd4c4d769639eb5c21e0111028323b1d0362d0c21d23698ac9f5351d1a79f57f9dc8a16f6c1465f30dd055c36fa22899b44c94d28915c7eff78cbb7344b3e922ba53c7265ffc897a4368561277ce847497ee42d076a96f45633354b3e52cdd1aae85d285563579416d9a3b099e4e758c3ba94dff29b8a95b6a11f0adc5984da86a86de851aca265daf7044adb642fe9179744416a2589c50f258e0cb24d95460a1a7e1acf3e3a61e517502e77761b0ab34dce1747f0757f9c669a6903922f96b49217757ca9a152f96deb9f4d8bd63e5b7a155f4b1f0161c3ee2a61d452c54a5caab55a2b6c3f8e770af3fa17835e8ed8b09594986e5f59cad236de4dbda56dfc8b491a4954d2d14c6163f69bc7a3575a426c659bb0a18cdf7c2549da2626099291995737fe357c5d052fd2625023c364bbc76a6aa66d686d2e26354335ede96fdb566badf5e57ff2b3d7dcb5d973a7d38d9e328f0047d829a7f4aef3ce5affc2f93eb9cb72764f9fd991524a6f29a594f64af7397d4ecf30fe971cec0c8fcf65639e464aef30bc888272ef64c8b0ccffc5ebb291174ebca0722b7739b2a7bbfba594b25b625dced6af79f2a99783f18d41345358be1da5d4f94c2333468c9a102ad3841d74e757dbabc9513a3f95fa30c54cec57ebbd86baaf2ee4705f9f318c6bae29b536127de7f1856162bd1b6fac1d37bf9bdd447a75fbd5433a21bd9a5de7c5ee8e2f39d8ae7b759fab57d1a78f749f0ad568c95bb1a959f327b76127ac5bcd1fe1065d97ba5df75a97d335d5dae5f4771edf48d4fdec66f731b11fa6bcdb915f548a4abd9a567a357fa9697ed4b2d436fe2dcb3e3cdbacf99585a5b6c9b9e11ef359989f4307567e1891dcc9bd47244994042d8942f189176fe51ef3b8af2e9cf5629666cd7fe94e78ee2f2ee558c286b1e94e9f61fb709bb67cfd5abd785fba5a5fb8daf254bfbfebd8b3b7cacee3eb5d6b5bc671bf6d5bedb915d5dc449d3aee55f4eefb765f7882dbd5fad8737f531fe32ad675ddd63d4e775d4e47b9a73dda637ffa2c2a552f7ce1d63fc9efb955c29c40c897c4a751b21d24a383da3f7da48f5c7e172dfdd3af5ebd2efb949eed18cf5e615573febcdab7f6715fc85df955e7a2b7e644b6ec1be3944e837a25a5fc29a57b747e53251e0a7c651053281ed1e5b757d83042b9fc114aaf54fef3f6fb97c2bcfd6d11bba2320d0d1516f5f4dd562e35d3365b6d4eca8f49cd6cb507c3befbb0d7be8692dee9525dbeb971331b679f79976191baa326caebb9f4e5657e61f633cb64f6dd5729b3efb239e7ac53d37edbb6e9d59a657372cf5d9671da4fedabf638be693407cbcdf0689b2cfb5cbdb2c1b0294fbd555131a65242cfdc441bbe344a58ee5333ff341ca559966559f6fed9fb9fbebfe7c618e9474a6312a6c1fc08938c10ecf637a8af1bc7fde6f55c0c85e2be90fb8d63ecfb621fb66d5bf7dad671db771bb66d8f6118b6758d6118f6a94eef01eced3d616f2ff6a76d3b615bddb059466d29fdea237da485cabd727473d9a88ba323eec12a6cbf7d5cafbc5072d9a80ba21ba26e7c56e2b2d195a4cb5d8e8b7bf8174ecd49afa6f664fb4ddbb6a79e26140fe057a341eeef7c6170b265199daf79fed4cb947828c420a6b651a5f0c527441fb5442ddc833fce20fa9e78eca7682fa039cfdeda9c9d3146194f7f827be23ceed6934725f7d97773729fcdf4a9fb4fa7eef4383dbb9c537f29ccdb3d2a86d26d7bf9db7bd77d966d19d773390cf58dfa0ef5384ebd0df571afb6c8619a932eec41bd074e9ffde9b3473dfd9edb5ec885acc479e10b977bd4aaf3ea73c779cfe5bc21dcad9fd6241e802eb9d86f5ed813a4795189ec95c5d29019c3ca9f58cf9d5e949e49e766252ad3d05061e7f3571d94902e951e7c2e6fb94c4509110c7c6ee5b802cb547460ba9572d3635e512fdee9f5dc94b778ba4f751eed05605f88bdac1a67db862da5cee2d971afb8e7179ee0ce5ba74769aeb098fc13b0af7ce747776ea8923f7f088f9bf3a530aff6d5c9fdeca9a7cdaf737e2aee3d30df5eaee74a2fe4c2a874b51764f5b6e70eebd9b2975e08b3243c41d0cd1ec7b9eb24eec13c43aa7be32caee9154f0499f24b0e9647dde9157f6a4e4c856c88ca34d5da66f9db5ef9f7cabb9c19eee1afc3073bd31f93c586f6da54d4e142df706646870f36a43645fd77b081437b4e18b10f77dcb671fb74fb31669becfbe3426b001fc03ff31ec02bffffc254ec4ae01efe2e45b061090d70de41093367d890bbfe31336dc3d72a0d31abe8a2861bd6d028d1850c3f506316c1d2326230069686d5be4081c594a41296266144b014890bab3121afb09812492c96c42402ca5c62a913306c2604f6847d6101a603173560c1450cf3075b9cf1c31835d802cb164a5b24e980a2356ef45443c21631d06afba0d46de10298ad87246e8b9f932654b7703448680b0395f1a0a47151b11faa34e5c6848092a64c29079d84800f44d88b432088692a1101d34952c90532b1e606023f3c6916d3a8f473b210e801a8594c957c586b1833bcf841098d0baceab2d10f3160665817260c0d6b95260e16258513cb19cd1044832945d0122741404d6825d4dcc4b7728d80988244a56dc39c7af796896998177769dba8548ad22fec3e755ced4d6b9abdbb8eb318e96b6c4abff18edc9acf5f37d694a65229e76e1e5754667eb9f1c668bd5dca9eabe2efb9fc61d14619335793d0ab6ee95f02c97ce5c7772573e76d8fec9333daadf96c1a18733695ecfc1fe773278111ae07e6b3bf302fbf63317efe71e52c7e9162bec4a46b60d8c83518ab172934ab316d95a2dc7a748b8a57501675c5a7bb3b36b599a16c36b56a5157a65693b26c566c5c9994655b52dab27c5a9d4959b625a52dcb976d1385722fa36a946a75b3f37d6a752baa9249c9aacca22a19d2515665ceba69455532a4a3accaa4d99c5be59cab5be6f1713a6b21eac4868d2ea3146539baa150281cae43d939e589d68db32839b393455d9113fb0cc33aac73ed5dfb1ab5994926acc3b00ed3004afb6a4f1f77df56374e49cb151b72e3aa9216a6a559358ab254ab9b455d99d86f18966119f62edf67dd34262cc3b04cbe4ffac589c5ae07805499c67d6294eb4e5a0cd1a7864dfbe9e2e784d2b64d3b4176f351289b6d9a8b9182ac4b1756b460ed8b4158828a82bcb02a04e9b8e4f8bbbc4cc7b4e7b026c2a41082d05e7b3d50f4d2e5f8bffc510a88db592681ece9673fea0c030313e345413735354112a6cbc11e86cab48b9362510945526294a00f4a1161598c423f88e853195614a5a8a89fa3414441912988c8cacb6caf51e62c1605c50350ad0b1be3955e29f52a2e756440fc011fa0bfc9669f16dca3e7955fb4c23dfa5f906cb5e173e389fead3da744a8144c984a9b1432543312000000d315003020100c0684429158124792acfa14000f7eaa466a489bcad3280862944206196308210000004404666668120426d09f43f86782d7b44d60daeab13b80ca18915127540afcf56e82482041c68aa3e6e6872efb60d2b61739d90212cef6adc711817a6424644c0cebec134e90919980713adb40e1d19fb2545a973211625c1f9dd9d0bb7ca6e0b828a93320068884af376125d667a293eb751fefe71ce6d85f2036107d4689cafebe6a5c935361f898425b6c39b7228499220f26c9fa35416af3297252fb31707af324dd9b8c8c4361de54b89f9035033b0416b1a47a795a29bd6c3ae8d68274c4582c03de848845cfc982326109ef2e3fa85bcc2fbc67684d0dea272de20817f8286a409ab3d0557b93578c7839360086facc4c419eb0c870bddbd7e238600e1c5320797babb86a7ee763882b7335e545d4e2325c2278379d6cd769832010ce78dddbc6894c2a4aba1cef960f5a84bfb5e6089e1d4025aa32cc8728584374f33c7cb865f12a2f019df502f1d7c1aed3fe5a4aa12fc74b8c2264ce37d3393f5951317ee79376c8ec7c2d38e77aaf1149a7df8070ac3494e7b5d20615ec2d6025af92944102f2457751efcc91a3bbc902d8a813037143d7cb311a4b74901b58bf59c1712901ae4b90a0c1c13fbfe7cffb687ef1d22473b845963dfddc968676f075381174d0f79ef5baca08fec90870c4ce43424642b3f53a8fb5ea67740afc19af7a8a999eb14afff52b546fe1c59137b2350ba3aeb304d6c0b1bc38b026a5317d6b36bed6ee033edf6a6233e0460fa35bbebeaf31efeb5b08e774f3146ad9a5038a6227b209c02de10208f6e411501371adcfa8f1ae3955330aa5e4cd4b9b0dc4c64b3b779ac7070a1f19d202b73234d39b41521fe43e0d5b91ac19eefd6d69515aac747aec7e948bc1e0eeab72ad799aa70a31613cad3cb645419707c3e3cfbe7293a45bcfa47bcfbd621eabc9fa672cffbbf0a25f98f6953362cbc533db3309a5d5072a0afb8dd79164eae1fa5b415f3f86111cf79d5fd692c463bab6eb79e2b6705a974b3d65d77a373548bd75b316bd838cbd214679e58030b826b7c5bb75aace08b95a9c4d151bf35bd066717efb6f21e8177193549fe5f5f25ed13632a5585ba4dc64e12e0a3156cdb2032f2feb0e4867abfc817b1737d60db3f1c4d7390658a472dddd02cd5f18e66e36819aef8f510a5f8a15c335cf7b9ec0ad8ed043c2ae3657308d2133f9f44c74fe5db51c0758feeb04ee4d81d38656a24affd6343d191b4c3178d891e2b6b2eb246176a65cdf86b3c4954ac9de1d703f329ca2e6abf862edcda92aa478728d5f459bacd363dc1fe0042a9080b34ca62c5aa1b1a184341b2dcb35718e1a1b36b614a7c51e9b5aa82b876a0fd451e6b57525c61e05d71e719d6d766b0d0c72536ab60fb1cc65f5eb781658a2614d559789ebefc401198c0dadfba038ad1e397979f2c32fdae7a076f85bcc4fbb61a76f1a4e819576360b50780408daa4d49465b91aa0bd8a9e1b17353e4eb5d607c4c1c0bd3554cb21760d6f481affd752872e0250232b3e5960ada23534ea91944090412b07b448c9282606d24c9e768f5a5d9f712b038ffa911eea29c965fba8f59797e20380eae01c96bb9ac2fd720d287e888780007ffb8e0f9394587a2f530685bd3cabe8b2012f04872ecc79c1cf088fd1448bcefdb8ac8571f3c9eeb57971982e1ea7e0401e160819408f649d5caed43e1510527f11ea31978c966893b3c0ef1879636a9c87360879f31d997cc6583b011d20547cce6448ec85d0be6a0778090241cf74813f912a6d1b69d5d664328edf16b87c8d9db8e67942585647dfe29f80212515c54c7e0e0b747a4fc968f95e49f40729f79adbf1b5ecdbe6577e7fc6c5550ba33cdec37bfb66ab50bb7ea174e96f2ad0e1bb575b2ce44e0a6393b975ff2465d34729bf1a1f77cf71461feb3c328a0a12d567d65b842fc467efa607ae2d67ec219860d4829c0019da39a78bf594d9d087451bc4949df513e1bfd9594ffaa8cffc07b2f7ad0e8155cc46fca6d23897b29e6f6a6731a24f400b7f2dd73860be2cad675e56eaa5a68e8151b9a6b15c2c5bf6f4ab6dcb7408d1c337934ff25ba26c51132cb109a9b43027e262110cdad3ac37dce988bce3b3841a8b8b51186dbc7f57bbaecd333a556fe6a5ca3e88e6f228b44333d0104124fbf1b7c36422fb569968bec3266c43ddf9cc7557ac385af3f852e05e122740d7742227930c0cfad505d3290f9f6180a58aedd320aebe6e944197c5550d289920699dc4c3d1328400c616ba831febb66effa8d153b49589948e93e48aa9c46a5a4c57bf8ba63387288801cd806f17363aaf0f640760bd4e7ae89c43120194779249d38c437a44c22deb658667f91d85458c44062df9bff34444f53a9c8372db7e48ea869c4e087068e369f61572f6375957ca46f71ebc6b271e012891b49114f924c2f8a735621c8c99627931d274878a234047e33d6f9018983d7585cf8b2e68fdcab3d741a42f8ec7cb9ae792849899c85078b38e4eb8041ae6db61334c97a19d94fb6f63799c6c2bf0876d368c823cfb8bac652495d1ddc7397ed7f1ad90a9d897cc5e24cfd0139c59f12b8b8ce4178ae88cfd22a705f8342a47c5ae2167e577f2c5ad8b7663f968d9c66f9072fb7272247c4a8c9c5ff32c4fc2f730a65649705d19fc0e2bf697037d819ee8a8b7723e9c1cb8df22a7e0e20f14fb182746adf1b5feea1fabc845adf0be6a847a44b412b4c18c0d7c528e0225398b5580f1d858c735072193b790e87906f27763547a40a18dfc813c0b9c50a444ef7376f78587adf0d63fae78dc3466bee137b7c1b75fd244c51ede5cc558ef1f810a74ccc788521dc1257a0f628ea88695f57ad353d8a2f7a26656e1fb52a2f6dbc1006d09f65212a473cfc26a3d92d0951c2acf820597a611cb53f3f3f99e1b3a0419123012de1e463c45108d91a920647eb71921f146b85a7190eb00184a48c64d5327b6b179cbc0817a954bcb12e5a577a3ca0981dc42ec336851e0825c084b7b9862456f51f2c79bf27395c83f2c99314548bc261c16502ba73296327db34b0a58deb6d14ea37479d62c62c9c0b2b5c5e938b065bca5215044e4a24cdcad80af1364bad59497a928d7328f7a05d3b80784d57d9026f98e7282b461a464501dac660977f4fa970544d064f3409af7bb1cbba5c7d96028b0ba2082507f4c8fd19641b96e1a6e71681f80374a6144b1e38ef64024f96084f9a880e3bc7607568307ce6501a9db265768e49f9e3a62ace54659dcef894807fd19abab61f3e2a5db606af1c8e990d342eb0c3ffd66569720e2cb233a95ccf75332084d5e474669bd5182a56419def1a5fec1cfcdd2a79c5ec7d98ea8175430a8eb762f0e46f4b40aa07f3fc092fa11fd970395d0dea7dca0024ae6941d916383a60f76707ac373e1287b70649c1103e369814844075f15023322b01b292463edf040c33dcf38faa824c4536e75600a212b70d26e35330d97ff1db29694d635b60c706cc9ebc0f2586704f245de667d923b80c19fe4fb8a55c1505668c5d388d29a01653aaf876b9398fd94461cbaaf4b0b050c6c764c6ada7ae4ce524df38dc818e4e9582ff70e3d3d86a067c4586f61a9de5247b6cc55f6b18c9f0b3a5e540aafe83ab9b778462387a7702e201b8c6277a8f31f0814757420dc40ba39a8f78a250e6464e4d69ca70911f61cec9723214e2b49a4116269acf3bc9c94053874305907500566cb3901a24185244b65778ba1da7e7e4dc3ee0e2076c2b081285e37bbe4b1b6d87762bd7318ed05b63244e1b3003ef615797a6651b74772f3b43986683fc36ea16900e62b0247d0afbebc75525ed3314b2db1bec72618bb6e393b7481d0f973d13f55eacc7e283b4a5b863156117db4615fccaca67d09ffddc227acfb6e6cac9712593a05e7611aa209cb7bbb2685703ae7ca6311f4ef8c674db8c33c892fdb2200024d9004dad39d355e91411adb240678322ba9867490ea3525d1a7543e385bbcbe7cc95f69852b09166d2c8987b0e722764ad4296f6e0cb548c5e246def87d66dde3b5b5088f9c5c1d96d561f69e82a1693ec75398bf7275d8ac51b11944f9c8fa33bd1b250b8f8225f19a9cbbe4fb45f879a05edd75481fcd502b3e3b7df7e5eee560340fe0f88c869a04366f1fad7cf486d64ed90053f1013a9a3d40ceab94bc0115c61db8a6418ca09be6f177cde8e63dc946393433b4cc7fe997008a42bd29bcd4ad01f0c14416b6289a9c8b951b9b8545c002b55ab379843b296a799545d87fea458c8cc2b02cf6514b76820528a0765dd888d840799ed79dce443afb7ace6ba4df0eb902ec8cdce3775b6da4ab1466cb30d46b7f2a213ed6a9b76da50b7fd87a6e92e170328dab951da89e99ae51d961161082ff4aa87431fea98baa6b7c922d553141838125e1f069bacb71aebbcd684ba569c67690ea9bc3c719b32c8be5f2b313cfdd7a4be3ad3d843669e875b4a0135585209844fa0a645d62e0df4bc79e3c0e64a88c7ab1003b164b9138c67a4ff7f1a79d99745d3234ff3c352ee60b6f45f7f7932a6716343a0e4f25fd091eca0dee5058cdc10d464cb369add21318e441029baae99e76c353855fc44b70c9521a43622a25999a28593be69eeafae642a70700f085d04aa8f454a48ca17286ac16a131dd05dd265697b929a3ac65cf3755926596eb563e64e387fc0990f31258f601d1d049ae83325057e578a98713111d1561636ce87d261a2b09678c845e42bdb201da9cc122526eefe854a931005a1a052ae7b1e1527dbe67283b7f8b1c0ecfeea15633aca7b4cfd60f8bc65946e65c118a933da21f845aba8dbca7d850a13cfefac1a100ad3b150f3e29e3e664a64bdd53712fa02b7d7a0d191671dbb4a590ed6960b6933fc3308fbb772e8faaac3b28099a9910a2570cf3084b3a8deac8afbd0df6b9590d4f275f346be263540902a9b44b5c8c4a63ed0195ab72177c7ae261c081a77721185d69247d0417761e4326f262788b442071169c0d481619b176f02558792f7fa85c3f287d8826c1d226b6fef98e2e4cb08cfbd752b9b7269d40ab73f4ade0f0cb2a76509d6074437140fbcdf0c5e3da1ec231f67072cd2f22aa44e16e1f182b02a404e4d0f2216a7b08ad81bd225ec62e866d3d7736250c49815459d2878ae717a1c8b3686a3deffb646a5c31ce1de3aeae9affe781226d89d1cc042583ece3f4116d171907dc75b3686726bcaec53bb08d099b58708b80531a46322453bcf92051d22d25194bd34712de339151e72a551b23859ff0e2c698120e66ef13c1f3b5f90ff7e96e5fc1c2145722304b6479602ff7d6646e2991311193f0009e1b91fb0e802d2de0115bd7e06a2436d13d872977f61023dc900a559b0c5751bf6ba0959af06637e3ecad55f184e85cc7b3d66c5cf7b780204d3450e490017a11a721345a2e34d8df4967df7262d008f183c75aa6f58c633966f889bd1cc721d556dd0c9d3119e5f0f17013ae1bc87a4b46db7188f1adfbf7151033a3599925409bec8731ab181ddccb459800f3fa96c4fffa56a52b8efb548e0f8d4ed0b6ca6d72e09d4cb0cf04fdfa25294ecadf5e07e728973808b6692c843827beae78c842879741ce6e4a7df8a74c9c6f6787b18693305fa873b25edb1830b2c7bd0dba8cc064ae97d5222541fc0e3c89ce3446e40bfe7ec3914669caa9d5de53d8a215d06bec783dfe8341c7a77045ffd11cd729956ab4fa7c63ef2045abc11543bbc3504dfc220a440ae09a5adbb3f30b9afb0518bed63a95a2588893b2eca8c1e93d24d08caec2218d8a1cf9e784d2952c1fbfb72198c2487452ef396d13545469eed180854be85f29ca9b61b85da16be815b2ab378b336e17f06d45ccc29803409434c4caf13c2408407b5166e25bf7661758bd846512f57c66206d9a8e75865d5f743dc6f2c94059b7445f1086bbcf7949d3b6ef5d03b979435d753c87edaf03b5d56d0b22129115cc2050e95af93e6f9029a7681ae4fb313bf28fda3d5ad1e03f44927746722b575c06c05a67696abf14df0980167fe2c0054731e1ad95eeae75cf2dd179472243faf9022903f4f26e2075d3c0d2beac132d05999b02fbec1971ceb95018309cd467c0d28c54e372033b6fa0243107281d6e34a831e18306e302525a18fb71340cef46c2675e842b91012ea18824933a0ce14c796afe1fbcceab4896e94ee75e27ff5fc92c7fd2550d746356ed42e46d81f955f545998a0b786535053b35da52747e4006775b1b659581f540fcc72a68049381de319a35055e155225c72912fbbe39b76d7d20236a6612f73ec2d07714714f14a19589498ff2199402eb5d24c31050cec5b4399cae1a52cc497cb98b56620f2014578cae3e9749ae3e3e2099ba8067eaabb1d63b8fb580c0ad9e5e000c6886468e159e7f9ba16355a23bff86589a92214f182b78952369b3fac07812af6084c362c9f9bf4bf33fb916c99986fb6f5992c6df41d69d144c832897ac553763cc06f3cbbf60080221f468168fcd253b64883062c6b20c6c4bef616fa4872ae02447b5927e397ad8a5c0acaea2e4af4a5bdaede76ce9dd38e3512ff4209258a8e27e0e2313d38b0384a0badaddeb81a2df4c69ef9db1743d705222fa2b51e3d147f92bb172e2b657a8e7d7382d4f68d47aef51ca9e1b48c260cd762ded16558d2ed0c207d37c961616b9a22c3f3730d1073b63a9166110b56e812a7b11171a5199ac0dc4aa9134d39c57dfc0d1079e89046f0304b888d291d478ff044a2003e20afefa94a0dc4c6b4fd14c4e23f31fbec8494918a0115047293df8a1ab0aea798651122a07cf36ce6f93af22a215912757d7aae4ddd8b64b1fa504f106098a29d820ff7e8c5b7dfe8ab7a885cc3b574c3509ad098faa97807dbaa33e1746171541abe23bd961a924f4eb68e5100e0bade80949f9a347f2cf7ac50ca9a0ecf4fa8b5eb743c232c4b6e24811742a6025d440a372e453544b8c77113a44e2412cb6fdccf907a61c8ffcf7f2dfeb5ff50a275081aaa7f7fff4828742026aa7973fe955cf3825e4029c3f48bd266d01ec1702ac9b32eb2a0ee7e48de86f52ea81d8df5e3ebd75f4fe5fafd97eaa1374a317b8c1fd96c666fbf71bf65cee531a9a420acda3cd02022297d618cbd1812ffd358e90c0c97a74a77a7a3bc57707084525999c2bbda4e21c7522c5e27e554f295a42a76c26ee419169c1c4fd44c56578864cea29b69c30a55b155c91001dff21915abd78762de1e0bc0e3ee10ef7fe36f8602602e60d7222799d6ac9064394b308ac50cefdc39dc24ebef9a96b727c49fcb7290fe0b964fb9afeb3850970b888d84a4fcee0d2e1ed3a11aec59a3f30b090e3ca681674b03af94c5b14433d22194f2046dfaf6f661d4aac42179f76d9f42b593b34491a3c4d889d91597fd9b101f73a315cba5e8cc86d318d5e7f8988ba18fb78dc84a7fc225debd1b2d9869ff72a67ee70547c1608da53463c78345bd3597cacb9a1d636c23563468948c6396590ad2b69de7959e8045b3f9a3a773c0eb0ca825ff6e8b3a6994cc5f23cc4caa4fa01273897d48b284e32bc74589e19b9756c82f33f39449271a885f37a8cbd7c2195a94c0e55329bc9a0e9844c0ff82854b8d1f9ea4dd9920637ad3931aee40aef74a3372fe5fe87cfc6a0d36ab12e08d0b35ca14f786f04f4c0547cc907a1025f127ab7f5638d1dd8df348a38429d1cc59ac2883193267d7a8555690332bc8310668f14028bcd6594e0d26cae0fdfc88a177ce89dc96ffe52ea2af8e71bc462f3639ca641175adcc56d3e5686e0aaf8655339d50a446cdbffa590736727c6f9b0c3ca338c5d40cb5339686cb72a34865307d5b170e5f3f3c13e4743f9b695498706e0bac67f701174cb16ad5d6d10f3a73ebf1e3c4799bdf038b4788fd422b7858a382140df318768746f439c98fb77bd737e8919587464fe9ffc37572f79cf26351f8bdeefd08a5164b8cd32a70ac98fcba38093bac65f709325f2980886be98258a8b36c47ae45463fdaf56cd6118cba222026b4d3817a75763c92332649c7daaf6c7dc675c3d1dc2d2c959ea06230d96f7e279b59df98c2a7de87031a69a6f5e9a16e78eaead4802229cb9b40022f24958a77a7dc7965565d3c1b7f6f9545dc8ab7cab3f6afbb992dfad5783345c41181754f919d0e69c0cd913af771e707cecf252f9913c01d2ec37f182d9b3d78c87e5c978723739a39b73d96a11d52389be953b11ea2d55817e68e6d9d16adc7c10ab26416633f720a7e3d9aac17c4b624ffa8c499e62ced8627338b9ef38f65ce7f1d1ef942ee78bde651dc8cf49639c93876d53692982046d55a35d83fc74e097e3477372a9e310315114b956f578ff38c8b97c2905f2d3fe9b2e493f184fcd5b2b9264c8f7abac7dd54c4549a788e1c5e7c7a9a58d9ddee74137757afbb3b1b258eec320d074a2e27a27d125a4935a186fd975d7e8b248ee642700d70f33a0e862c63275ea0182a8e9469edd10c66326d44d5b81cff60c05ff121e1f5332774efda26dc51d50a959bcca0562657019b830102a7e04b967865993d7e63652c26196651e224fbd0c2a83563a862394919d3d99f410f2caf311f6f48401dccc1064f2b676a18f6234f3548ba9b31be4f31cdb2e8a2b3449ac8f3eea00f4618c2195cc725dac0096c8b7869a4e13bae8f28aaba90d222a15a448cd6fbfe11fa0598b8baf9b48d2b66f0a2f7ab9cea008da483b2e4fefa08ecf3599ead55ed7066fa4402d4de3de3aa5c4d734be1c2d6378eca35405e91da7a37e730c5ecf71277170439d8bcdd7b49e323c2d7555d17bd3b1e00986774b5bd848bf045fde6bba52ca1894830982eca663d07e8e8f0c1cbfab952961c93d5f1a4cf2fb9f003ee52f0996c52b769d0e993d286fe5ff832ed45c5dd404583902658072689fb26acf7656c902c16745ea9ba7679ed8486563260de40f1992da4bdcecf27e1d7606c896df40d6e440803cdb47aeb999778b98563303d894a0aeb977807b4ff5df0161f75648facfaa0ebd374d23aeeb719f7ef53299449a0125b17b3be763635efb356319464cdc6e88af266c6b9acf7fc6f03aac2c789141ad968e0567138ce38acec84ad50d95908fcbb474d7f839817edba83e26a910b2ee282a20a34a43f9964af805cdbb6fed08e6733ddb0593e8ab986afe728d257ab5f56fefa1abc2f48d3ad8c783307768235f89b924d9747d5775cba567166c1633bbe5ffd8acc2be8b7927dd887ec56cf6b757955e3bf0cabea940c955dcb24787dd702fbf45828f08d1b8dafd27cb89266b983333a3dcdebced61e217e06d3e1478efa17901884d96c9c235a73cb49cdfa9e9004d97c2548b59269914d98e748835900c7964f90f135c677dacf4eced24bd9f226f7fafc0226d1b60a4255ad39064dc67bacc5951814826dbe34ee3e86a6c6535e56a9d73fef30ea0ac2c3e8d0b15168a553003b82dc7cf5843044c5d5c678d1a85d5c67584443ff478d6f726fc64ac323be84fb7dcb21bc6d76dc28bded6446696c978e38d626ba8ca241920818c2d5d59c8ab4b56411c8575a7935161651eb5525bba0d59826c79cef1dd1985afa944abb212dfaaf4788e3de077c4e132e062dd2025dedf9435ecbfdc0725bca12f8daf340cfc9fe30d9d81fd5b52b3f33e8ca2dc2222dc9e0e1232d1bb5371adc8a896e4f0bb0d9455cb4922febdb61389cfcfbc52b4472e2616216c0734025e6e7baea8fec75a516cddf49328c506ba788e4c44abc2301865c78c281dd89bd813847d23fc70a094f0c9c579b6cb122b6fea1e89723ed60e8cebc339b90ca53f63eebdf87ac7ac228862a27aa75d69ac3ee53e7218431fa743d6122b6110f2de4f67d8b8f54c61deb1007f94e1d28e5e0e3306fd00d5afaa4a6f5a9e9c52a77698bd6d0d7eb6fc38af789e8ea38773949f68ca469788414a499d3fd2668b53d2261bf73195964a04d8442b3415e628e8a441d34e2441d03d9a84e816d9856a4c4600f3830e891d06649c7e3386f7d2ac6c9469c7cd56492d77180a9d310e856609ace6c2e600463fd11b60ba843919521639b0930815a6d9748f1165005af5c32e0af4800ceaf0b571d2a664016ac839def7eb3c82960c10afa0b9e2a2ed8379fec9a026e01bc64336c7b8128aaf334a8931c8c4d93d2c8356a8520f4f201659c369ff141333641c86215ecc21b4bc678950055d7b025833f050422c583e4f33ef3d1872cda5be3780204fdc6e74a8efc801e761a8c98645696b60e5da8c79d524bb71ecc6476c360b37986b6b8fdc450d3c9b685e961101d68f40654940e5391a43209a4d8ecfebc0e25d96fcfa611e8543da7bb2d63b1346b2a577ffd6d5b1696380069adc87d7740f7d098a4939e7962a0a71e31e60ed4ad4a9391e8218725938e3cda47a81d1568c8d01dfc37cd368a7a0665c6fdbab08bb979d8eab678a0f475910b5e6fd69ed5b31320d1ad66cd9feb444147cafcb9f64ce5d806fca3891b1246a32c80a7d26e690bf9a4cc9be36ba81059092b3b0350c90e739c0f96d43f22f68994d30500052d678ffc9f6055d1ffaeefd4d9f4001e376e111570c65357ff75ef2d4a987a2875ce1ac5e7e00966b7f18ea7e74716e9da94e268ead611e948280b1ca6197c062c76e23d03ee6cd9072e49bde6b1e284007590724bb2084639da2b5032fadf1ad0064a268c41ea3f6ad38a35961bf4af86fae7e08eae4775f2fb9a6048ff658a7dfb65a8498b799ecebdb6686682feca15ae1ab00844f4ff1dc71d06952ac15a8918265aa8f2b561d3d1464aa5cd45d331ad048acdd539273729bb8b435d6b52da02407c248fb5e8da428cb22c3b5bff66e4708a8557318760fdb93a8db9954209a3ec483bb744df35cba9bd7956e946e8725eedc2e06e9e45870f7ba7b7535801fa18441b9e071bbeb1e1c1a29a9a12030c4d87e026e07658a433c448da037db6e497d3fa1acf3ef42418859e40219f7f0d6987a540784c22d77e0d53c1b9a7a99c7a3f9cc259d86a38d14bf6bd0296bce1f10a12d048013ec36b5e3b97ceff34776335fc36bbd9e4cdcebde7a1cc131eed15d74b2d1a3ecf972062f46e6d1723b24c73d6a812e7db7b50133e2d1a8839e853148da5e993c166056fa46328673c39c760859dc86ed0661387cf506108ca71c3a84e95bf8642230ffd790ecaa580e18ec1577d7c91ad800467e91a16cd24e3120237e5141bd02c2e96c037a166d0144587fbb897ac16af733528df397976004e65c32237dbb4f615a75e608beae68e91ad0bfdd52f3cda3456f9bef0f11765b9e7d995504b7b0436907ccf69973f6d621e200e2620236d36f376924a51b8d7c69d2429cdfcddaf55590de6e83b42493e35a97748ba623ad3d83e56084188d4ee71d70953d49d313abadc40474d917d7e29c9cf7e3b3ff97e0e218e3f2883dbb22d359caf25bb17ca4df03b2c33aac2ba40a53e40c92710daed948fd32f9c0cb49ef467068740688b78fdf54637b5af5f6354809420204a102af1994f3167cdb94729a2593d3bacfc31f1b5f259aae5ebd30bf32e0bccf2de57afd0cffd388dd91495f74d514800bfd4cce79f7a72b03e0ce2805c1b0920d5c97ef93377b9576c1793fd09218e56dc05124041058eb82c33d24cedb541c5b90f61f7034f78dc0819df7066f31cdc2bd24047a5ea0298161c072b5057747388b838679da9794279e866c08f33a0730377a4950d8e03afd5c6afb69de31c191789552efabf64cb579deff8496800e58c73bfc590bd396c3ff59c91046f064a72a942d0998e89e298cbf3d0d6d525b5e2919408c59b6052292c7c491c55e5e4c3d94d971d3d1547f23003cfd9847920ad0a4f50ef877bb3df45b0ddca749078175139616702b5bbfc5dd031c7e66680e460cdb3a221aaad78e2438885540b39f8605dfae681bd18ead441b2ba6fa730b8b7f664fa5229a30579c6c327525a911cba0cba5bdb253085dd6852e22784fb39a9db3f38d19372af61deec61e53df6c0e5beb1208430fb65b949e96726ca38cdfadd5730e63597c02d1239f81b1ba5b010cc827382972a4e6411c1cb6244bfd89e53a6a608b9f38fb131eaba8f7c0a909610f952275e7f2c638e1c9bfbfe495030f76b7f1e49889b4fe9d8233efccc165d5b82187c644794650777e0e7025724e3cc51cfceb98826be03f10c8d886553babe3eea7b1168a529a609eceb94e7bca62adea5737276b1eb67e25b5df0b880b39597614a7881e4ee8776393ac388e56197ad10dfa819de51b06057f3386b3049db4242adf23a2b82b1dcd55ee96c5ab48c8c2d2094251307516c74092cf90d711813627b88043ddbb4a97d1566442556b15ccb46afee1550fcd0f2c470a38779b0dcf10d06f6ba76aa8c887376d8b4e17a2e662c1ef8be2014e1840e79badec2b453850c2c428c740dd4bc79ebab78f17b78e1e61c7b90e7a7dd4ff0b3978f65bad314cb35ba01bd30c87f4b35e9e350963d691ea208cde3a0851b7356b0b1e4ec3d1a6d5ca56e1cb53e7fccafdd4c118a761b4af53a388095f95b4994121b97ad38b0db7a7996f67e47c5e423bc6d78ca57b2d48b16a0c10d9c7e9346a2b2a77622dc7900ba199d67c7707002fd4339a3748cc1c8cb1d9911f1c33f8c66804e62a8d80e0340256f323087a3f82df1f7947e301ec43d321a68198d1fd089cbd782b06f93e4d34fc80f2455f984c17a507ff45def46520608c93f287b44947eb1193f088e60459c76ff76c63e95b97e559f07e28876cd13d4a709905151aaa6bddcfe088b8690a8ad2969899a8039a0b2aa93215c8a499d22c123d06ec81b4cee0d04bc2bf366ad81e6c8373085c4b427e064a2abce759c12ccf31921f4127b975382ff1b39dae2c046c0232c5728945d2b3aa2208f593b6fcbad56ed84cc37c3c25b7c8f7f377826067cff80b59e52556a995fa68ddd43b2cdfd94f978cfe8e02e4c58596328761ec5234cdc351b93b1f1b5417928b3220121e24ad6b9d3a6bbae56e42702027e9e3430401bdfe5c7a2e34c0c23aa6b093eb39b40a84b8d243ef85220e7ad6270241a57edad1f7906e900a9906515cfcd45e0bf0436c3125b9ab8f30948c3c61ac42b5f2990f270682c79f08ca1ccc6982096204ed641515ec75340e17644617d42fcf37538cbb9208369b6373ed1b4c42b7ca915f190ada5fb120c91c46189c8a89de414294833724ff6ae4bdc8e7d8fcdaafb4f8ffd7411b51b4308711839f68a561e8d381c516b5aeb081de61c4dd6b6bf9b3024d90ccabe1892d45b00322bc2cf4eeea6d3db67028119cae463c99fd1414c230342ea217318b828e20fca609c87054b0370c5f726b96026fff6bc17c3b68fab2a244f10a0c36a1e7ca2f14f29aa29d0f0c68db18219a2cf630ed36d64fa75d83caad296418837cd8a340abbe5d5c887ed50eccdb58db2f18fe14e9b336bed6e6f60f199c78eec83d7aa0cf8e212ad766ad364ec1039aa31aefb88dd7461350b9ffb54902e6a7e3e6ead8564184c8476436944d9ff316ce1f8c4ba08c1b1e077e70688895e577ce2f8fca95128091f168c9b4bcc8626def635e3060b4a9e3f51dfac990e0092d8cfe077a9cb77c02f3364743d2458740bd9df749bfb13d0d8a04a7f2e8e8cb834f01a27ad559b530842eee800f29c13c228dc61187931e2a846ec0feae68ac6b8c4002c184f72f339b72530a3dba02a7d602627947131db2bba0feef4b2e68c41568cdfa67d600912cfcc5406b530d97ad53662d8a6fc5943369e2411e686d4843946549d6dee2f040a1e1ae360ca3b8daebd6366ba32108abf861b704923aa0c0130ff8be04a4143ee24bd1cf6cbee9a2414d7c510b1e2021a125096d7e560c34a541de1da81dc10fc3657272d780f11f48e272d78b48f8e0318c68d9ac3034a0768542de4f6ed6970185c348ad238592f68dbb56557020417646d0a9b3a9611c838cb3a0d4fd91c28c65b8f874505f860bb351a37c6f53f7c20c5b263af5e4ea529d41cfb4f21c1afb98a2e3d0635fdf762b8c4e97cb2079c7938e37c664970da12a29c822c08fdc93781c0123e63de0f20bd78e65eaf1939700cf23333d9a0ede4114fa9965d78b2b86fb5dc96cc53a70aad28950146e43498ce13e38e1ae9bb215be2ce393e2d2122a5e7cf480f735770f13e94d5bc5dbb2bcd1ad8bf946727483e22292b6dcb7e2f4f1c34e38f76fe4bbd9ec1504e0b069f86fb4545ba12e3278dfbca6a9085ac8e5a719f175572e1b26374a536f6c175bb44702c624c16cc3b585bc653e5270cc47dcda5278b836f243d34cd63a70b373ca0384f11199d7051ce623e1008f88b58ce7b5a61422cec0b276aa0b8fd33d2af72d47664a19a8b7eb35e2ee5b7f0da07a837701c3b3db93a860711abae50cd0e6a2688517ec48f6381e0ac4afd8bbaee072e04f62b22b9685c07423ff2a2e8c3c9dd20c46e23be83a389410db52e0369cd6420ac8778379d185eab6c0046c423ef7306b7081d85008bf32438c5aae1ed40a61c2fcc6605cc7843a395bed6826b9a158097cd421fbbb682158ee5a721005cd9855f55e3622c3246ed4c50ea9527369960b5d2a835045f7eea16b3602606f5c6c0fe7383eca7b8e7a791e75997cb5594a817f2c839194d768184720a17a5038fb8cf8dafc69890553001bc21c816c6f750a701c436989637bbbbef8659f0432a4a553b53f246f208983209f31d9e38387c56fe600e9faf5370770411b4f12227820e4fe13528d579e8db8f2e73a9e288f17d704e21a770ca3131e044bb0f4e3e48aedc10a049e05d925705120c6118451e9ea7691056778c2929b874d3c603fce0ae4fd19b3069080864331d23625662192bcab00b016be0db9a341d8cbf72f475c14005330a356c8c94cd919aa541f6914836c3cf6d673f1fcb938e574d844ec0382e382989069989ca207a5bd65a693909d675352c3b0163f5b2f2a62ecf9a5e7851fab6c9cade703a11e31babfbc97090b339103967c2721c24d11934960ff5cef12ee41d00507f3b3d973e00e5e1c6b32757766ab76c302f0425f5d87dff2f94e6f018821ac9c49b8a7ad99093ee7915d39b25c9904d5ad9dad79ae44996e1d4458196ce8e23ec6588cf2084d111113f6d72b846b1fed2cb6040dd8ec25623ece54ee662687f13d9e6c161d2f217c71a77a3db8eb864bc3a34f96bb2838b34b167ab687cc4194d8f96784713ac9d179b997b1a80b82a243017e464c66ca74c73902ab07d96f3d23cb5367202371e4d59792dc4ea16550c89732f023b1041c094994a1ade25c4c9c2d45c03029f13933f89e7023b2008dbc5235f025be4de8c1425ac11349231b5080da81637e0548b8cca31e33ffdcf73ba3899919880427407ddb3842dcb335364af5d55031ea4d35983298c5c367af4014343b3fb88f10880942b4a9f2b5e5f45637d206c44f4eb1bec3ef0d6cc6a79cd9f46d8089705b2d7ebf83b3290219105df4f0c00beb217aeac5bf987ad8f43401070e5e701b0c03b20f7cc5ff35815c71f8860f175d7b23d3ce8cd1a49bdb5ff35787471e65e2a257fa8233052f256eb16d3f4958529f73bfa2ec0ec1678d4e0a160c95cf66663e34dd87a351ef8dbda3230f7b40791368916fe7737656d2dfec7ee9b0a108f5c06baf73b5d7061e9eaa556ab94fce0b2319c28d8bcfc3822ab024daf7377ef3aef9208ca988b54022edc8b609cc6bb69429296f6f2aaf88ec8bef7aad64a94b597b562b7473caec240d6de09b78e6ca02a86454094a14f24c6e00a655478cf83e86016579dd6050f8efaca2f43f0b8cf664a2725e831a26333a9ef47a4efe49a89a31a692a375157642cb3ab5feba23e875cfeebab38cc927a841b6e6151946912738619b83453aa93c1843b5fb8d337435a3acb2a3bc2f02b75258fd07fdfabba732e02aec3e85d7b8ba15b878429460d8ee5ac0ae66ae239e247e8d27afe377f143bb6558701800ee23178708c2adaef8afbb24fdf9aeb1503403b2c19232a8c65dee463561165fc810844affbef8c4fa94c1d046c8785842fb6e57791c71e44c29be29b768847aa76408d51855691c9fbfac6d5c9f50ba1ba30b00961bf3ea855081bba43b5a1c5d85ef8cb7ed927ea82bd8c464e696766c7a149a91a4093aad0b3a6761d0b11ba1633ca163a1d0b1f573d01aa8413bea492fce422b2e1bd1b10b7c99a1ccb595b750731e16c6b0acb4e469af3376ae62da10292d5a64e9cd82a6dd7159c4ac28322bc86f08b8a5b2fd9b871e948ab09c8d2cb197d79e90728685e6d6f28cc81abbaa5217dd8f86446351331ac92d9c43ac0e4cb00d0e2c468ef5dc368a12bac26a25b80f647cb6333ef9f6a78a559416144424ef910a2b548e15ae8f8591fb78be0d75b4e11ba8876c80111ace1f64a39c2acc8f562265b5bea914230b7cb9fcb4fd53a97330b6fe568a9219221d69d356103d7ba2eb762e864ad7b0d455aa5952095ac1d55a29c9aae380d079fe5c7e88b23431b16403807b4305d8e1a3194315ef0c1e6b518c23a56e8fb0ca7e818d07c66c87f193847049a9a757d4aaa1540ea1c33b52d96d48615452d34a5ee111e146744ffa2e8fe0ef6837c5897dbc77c641f11605487d864293b3c2e2cd88c21bb8a1d87433a7cf2258d0b88ee39c8884d5d1b152a810827d2636d3368735cdcc1120b3aa4256f8e37d17c97cd81c442aac16bc7e781ea56913fa10389624f48857bc577dd98dbc3ae852f0b3f31efbc91a94046ae29aa3e8066fef38ef416f40b46e0680d6f5987521db3a5791adeb8dd5b6a5ff924f02d1b8ee08122f825c0731d917cabf8413c382c629434b226dc062e16fd05278ca8c61af547c8234c9097d70ec189eb687256f1d97a24c7a97de100c49dc79d5efc90e63d92ac6db80805b17829ec4025c7b8158483056e3de64237fa01ad4e5acf01b4864fe89f821e9b7d495d58571d0b8963b0f0030cf138305dd0351d636ad2029a84384c9d236f72095a2e443ee960dba80e54926fecf30df22c21223d4de0746977363e845c8dc08007d08803c85ad1914629f40b0990813d1b1d240ec3d300af80324a600386a3f00b8032c1ef32f16a4cb5262700317802f10be361e57f4b732e6375b2dbda5599659908ab87b64d324f8303ad315b1ed2f15ddbd8e484d14d918a2713f0b9820d9928b3f6888d8494b85c7d335132d3ee23bc960afe7a166eda663442fb8e55697f3ba173b680f36214283468141ee3837d2a44bbaef15b9ab9ca98de7444ed28def5dcdb53723b5f5a6baacb6d4fdf08b31cd0906447f3393e21070a794d3e8a4c4e84f5d44ba08fb304da6cad487d77ea671ae0a331ba6a70b6f4b9d5762469df2ac504e7e20435a2cc5a6f5a401f234aa767c28ca9379a81e063ca3c75807062936248f77b89a90b34e021468641c74287cc1e160f84a87234eca8a30abe00068891bd3230302779fecb6545d9503aff958b571d49588c36ab3c22d0612f9d5065e8a2f2aff97266ed1aaae7e26b8314328210c08f152bd2ed46dddd81d36a3268d514a65511196a96bd087ab495c69d0a5636e606b5187f0f34a261795a5b68b4f07e89aded9674e3dfea02a56f74d303bf832d0b5f419342cb38b663896ea5605225483eb4a5d6b2a4ea1de9b13ce92e290efa8484ed3671923b8baab80324aba27822cc51450401e7224a4debb6734d2560138612fad93206dea5524ce65e366cb05b804a3b2954ebc9f0e7a2a5e3a188cca906343816e2ae3208650747063d67cc7b6cca1ecbffa89b64e949bb2469c254b19fd8322a397330cc3884c72527bad3c7ff5074f8fabb8b3b13e040957f2a3e8b91e906618b355740c04f7388d81192dc3f64c83388b5cab0445ea1be2ce9eeea7c9a660a74ad2f0a03b67bd563f7c42a55dff4d56719ab52853372eb39acb8c8ef4f7381fd81193cb1612e906d98c06d49f6c3c6ec50bd265d1fae305239bc1e4b14d9d0b396c9d362de989ddb8d5664f25e485a161eaddfc354bfede02c4a5326448f29fe558ae3318a1e73e921177b30329e7a05d12e894776cb2dbd3f0fa493fba2d6cdf0e220d9cc347ebb1040a5c2d76122a212f23c767e87458353ef11226c7c00cf3e708cbc8982459a82ec3fceefdfdfbd5c94bf8def0698ac2f0a8c5f6d043679ef49b0e8b9461b4c7af014bd97bc5588206a4f7aa02b092a927644018b8ccadfc6684a61c043d8eb49c84832f3239c29eb0f76c91bb7b78a51a05b503cec9b83c2368b3c936d630b46ce02581839d8cc644dcdc588ffee847ba83ecb188d3082156a9e7fee41f1d4a06ebe00482f4d9917c85a23788a9fb4ed043cb90f6e407c0a7b340e5d2542d7d47b2653b4cd514c51937a26ec5e1a143ec7e9fe277a872dc30d1ff2ca7c02dbe4029d8ace0eb090003f66f63fee42d6a46f073fbd309c8bf2621d013b9b4e023ef4740d8d724c2ebc6345ff25c07d341ae460e00d0d4241f4e292019cad1b54dc3a80c12882463bce7f35e8187e70e7ebc2601633e00489979af0e2875bec6159d276309cf3ca6ce3f0ca9511b09cfb009397939570b7e383a357a6a6e502ea46e27f14189e4ac94a64daa33cece81ac179d7790e87ad417d01e6b9e9ee725630b447daa4d2999e2a596d35348e3f112925604caa1648410d2f42fb01e8892fd688a5cd9e0399163079cfb7ffcfd6bf2fe085158542d51b937fe5d6406aaea3ef924ca4b88d53ac356a090fca184569bbfd7c460b084626a79c059a750e710f8c2c7ffe7cb196913200c595c25931f6b2ea4fce2800e05401b16ed76dafc6759e2f92ef68da0c9a94d900bba0a416453c2e1dac57d970b9ee5a2b60edb7e213bf2593f11e674c1c88328208c552283ca1c49fa37b6789075570a672c641e9fe1ee613c160253ce5c3a24820a331604e090cc5c2e297987c0e857279df9fbf93668c035ae0fb2e93e0843b170eaee80cd99c6e1f38a6793295b54ed7da5dc1b19076fb944388011e4c0dd7d3546b05efabd670854eef197446ce1aca893a0c288732c1b23e1aad5eb2bda0c92269759434f572838eb64bae1604c776714dd22eb0c109d72984d4a5196436f71a22845307a449567187db3c81cc7287e413c1734339e9c599dee7afa789acc1e72cc30d99a61bc27ead77c88e88535a484e92cef3b914c908831be4e147e6acadb05059eeb16d322c8ad6093a21b784a02f9222cd3efca2a41adb7e5cc0a21056dd22233c4300998dde146d89889d428e7ecaebd38da3e525def79d652af5a6539591f6a492f9f5e3c662eda36f8000c1ab0433b1fe112adeba8930255910b9a2f2bb808bdf54c159d6290956968cd3d798ebe60e437255d8d71d11b79e0411f8e91ee3b291ec12f569c271d2818b72e44607d63444b126bedf878325e27b029bd7281370fe5b163fd6e660e7569ffdbb4af61073d3d5db427ab568793097b174ecfb227f0850265a04937ed594e800e8d25fcc9c326d8e138cdda8bb3ba7e89acb62b622bd5af5204c315815177ebb36733f3b756be39ce4eca14c4c8b8c7d4984198f89fa38b95854fd40d8c93845b3205dde6ae405aab0571e3cf844bdacbfb92c7ccfda5d0cb1c87542eb0a3b380fcc545ac7bbd8e9b5d314cb656d7674ae09387d15906b42887394c71012fe1520313d6606d76f3e0ae46bc5b0d3bad91773121bf3c6636d869c93519e25f77bf9a420b3d411f9b58e78ac5371b1ee250ea0b670bc425f5af3e7cc58608c462f349f39df22714b4a61fe5447143fdf5f95392c95765022d2842eeb436dd302a93ec08352b4410ac85e6cfaaee872d85fa7c50374b9decb2cb8c54f396e993fca9caff5206944048fd67cb5de3125841a1c3a4579f8a066d43a38d4cf6b2606c23a64e47db242cd370b83a0837985b0e4a605329140d43583332c576bc69da61f98ed035e3408bb2fa8474b9b88638b0758671067c663361e42970b8559e792a0aed5362951633c9418345b99463a0ef34dc98051a7a53dcf5b5c8c763f9cfd03e0d09c0374485fd6135d750e8f2f380b2bb98f8143da3f2c0b697d75a75d1b138b00a85302377f598a7561a7c6c4c3b2cb7a17d3bfae8e9d6500d6f02168593e17568ec1e83e8264f3a2d5d6d20e6b4f63e8caf1e2e8a6acd479e2faf1a08ee429c5e1640f410a39abd3c9100e98bd93d8fc58087eb9e2c2bf717e815e97437b3113329675b364cbad4c681e65197678222d3b5822890da8b59ee7079cf603d8f268a90c54265154b736f3afc5e9962d5c97dab5c5398b1007171fa08fa4d686320ffbbc73d209a7db1ef06b9ba983881e13193fa410043fd7639b00bab74ef2b43f176dc0dd498e11e39c98c5ed80c9e8c98e040594d042a7dbd71c0eeae048bd594997fc9cee2f73de78655a6f63eb20a9d1ae5b0a6f83e8a8b0e7df036210052999c439b03f3c8aabbb9957f9f57d3299becd80a8a2eb6038fdbfd294e3a8b0c38ead6db6e9fb6003f9c1ab6d45411c8e6bf44e702380894e3945f7d114328dbb59c527b2ab6ce4bf0d33830645a0b29b81bfd4ab70aed8d803af0a8cd2124cea3975c60c658e4af54ea9aa68387e45e65e02fbdbb0373c4b1d3613079b8ae50980400259b833837374ab52dc33f3600d52df31cea90573953dfb8e2bcc06097f99ca7cd1d0ea92dd56149b447ca0e4d896e2204619538da9a32fb33e437a2eaddabd577ec75199913029ca09a30820469232e9587304f3fdefa0858e039fcad93f8be6d9e28b6f71cbdf7526683e4c0b930f0f3cb8007531a6302cd50805d1359169ae02165ff6d6d73fd55b63992f671b2eb339b87888360cf66d5d2825571180e17c9eae56cd0f0efb0c19958006332136c385bd6a4cbc02dd222407b8be44581808be4056a4c4de667f60c3818ba488f0c0704f12e1b05114ab4553dbb657bf93c3357dc514083b76396358990feb18e6c83d4e73d1f3351bb0df900297c586c9dfbdcb657b05c28c37bed27cdf986227a29145edfebcfd40a2459f1e0574783b22bd1beb8d7eac4aaab5e75a382c0069534e0f8f6574e09cf0b015ce87e6f1e2884586d0115f75954ae1dfdfd2e887507069534e97b524641fa4a05ba12f0211b69188ec9bcbc698e9efe09c2fff3d2c8e3793b87c1791211485cfae9c5cf89bc2dfdd3dfe216f67962b53b3e7c7f43fb4bedbd381874ffe6d787a628fbe11d68a0ecd25bd50982e1671672b029ae3821ff082d6189c887b0c372916970f1054f1b5cd6b9634c0708ba602b6eefa5f3d32c35ac0d7ca1d69e955667a75504f8f0b28a63bba2c8f5499a8837931d979428b97ecbcc12f034d404e540ac9366b0c46ab0c4aa06e4cfab1b4927428883b1e2743334c27b1d46e8151c6859ca8c06c3a19094a0884f5128b36146da06fd2971b30ba10def47adc59e0e15d6986c1ad3d9ebe4e878df5e638dc77dec7144c52b6ab50a25c0d7a479840bcd8163a6f1de965424eb04fc232bd51c63bfc844d516d40520c8e9a4f04e872f0eb84578b7c275992570218abda3e3f49471a0ba1ba6a7609bd923548c6e1b5d888e740360647b85524791e4e792b451a652a422ba80b959946c4d2006d36584653ad058d0266d46033962110fc3c0e1d110a7b8f5a3d609777640c5030c73e8ecce88a1dc1faf59a7e4c3329e904c0ed9321780d9b9b4a1d0d8e7ca8c454436780e336c8dd85393aebbbded118c17f416b45b6c4e4aed823bfd595f5c5cbf4bb420352d9153114e13e3a07a07d6e76591ab2670e09edc3b7d447b0f73c5004c7093a0418e79b2b5c3eb239faf6eef05395dcd509f4866f20b8ab109e3f5c9960f375a3d4d422431fb4c2818580a021393be12cdf226b5cd5fadd57c5d0c865b0ff5f0f305fd4867a914747533317bf31ac134fa1f893ae5833df804163a7011a964c2de62ea3757e4c9cad37211b9f2f50f1560be7ddfe051ccd0b9f07e190704e6dc6f7ca47061a5342ab55be52a7f1fe0793deaacd9ff5733df3b004e8069bf66514ca8b629857ab2b913a0fd509eb01f1e55af241f8cc608f9a1a9688580757b84047c9a640660b5b79245b99725682efeadcc129467db4fed86dbec17586230dc6be2e980b23e67535c200dc17e5057039bf2f086831ca2379aa2a03f63223e2fb552070968c5f466a1f13fc5d7364ccc10b761f7381175f1f8db44253a64ef4f01d8be59e334a1f6dd128d6e5d546ffe12c7096c9c0263d92087c76e43168c856924c69362803c2e650590834aeb11f445cf409f18af9334d0062c0d8b9b67d4cc798915dcbbd26a538b3f751c55d4ea2e0792bbef68a7062a85dc95dcb9426cff5d73b051dda331398e7261f990db382dfb573ef0141283ce98f8839b8e60a72d0e72edbaec04864c03395701eeaa6bfed779329c599fe6e1f36581dbbf206ea702d73e099061f74230b6b85ef886a9c3492c90a5854e35940c904dd7ba9bae836b4a9ec3d2d5801f55b8cf0ee26e9bc41ebdc0e36fd2d64059615ed9dbfebedc96c171db966443df170336842572244022e17544bd43cdc5849304f0e4a7c494055f2fe0244b9ffeaa1cdd1f87839b9b278bf046ff714300608efccc8ab70ccd6b00128a37672a9d3a02ef79cc5678732ccfc092cce8346a82ac053386ebf9052a4da7f4bd85f947b57bfe75a6cc92f5ec3dd4a015e4c203a3e2384b1233cac375b58dcb4580adfb373f8b7d5bdb4a902966a9cc2db5e5e08f378d3c16f3e6888af80d4ad30c800674d4800fd6b77c16fb6860181cd0aff61777afcf22eddacde64839a13f44e3b8f616f99f487ee0b97dd4a9c3ae606691c336a6776a26eefb446ec39cd6f94990282022e6020854b93a860215467f180e00526618b08b646ad3ae86f5eef6c245b25d18f796d954ca6cc2148041fe67c3976be69b4c97c69a86050c13d81e31620964f15866fda75f47540debf2e98e9e88d53b708f78e61855dab0d98c13407080e9eb0238c1a0188b0198af608030d1d783e102c39fd78fc3cd3d57418080d31bca7f0750da91b6fde4e1513fa78dedb9671ba46e27a1619f082b5192d9f53470b3c9d316067440ceddfe6245df8b1ba3c5eabcf273efea604a08fca7ca3cdf86562960270abb6a4f8863097145ca3a974091e2ad89ff9f0627805d1516650df6a86bbfc49400587becc12e4bb033d369360dca7b74c418c2d97a59c86d18f690b3e3c74b7283fa74609c723cd830118303a9e128db93db4ede96459fcc7f5af0cedefcb56a2a6835b7a8caf681dc0ed6a8a8253343b788038a8c6caf9fb540dbc360187324023f066ddb5d768fc8256d74911ccd7ef36b2c326295dc850a83ad3e7cb5a9d9fef42a5f335afc95d1c0d5344296075847a486d597f94c48ead2a373fbc959e4c0327b6a7233ef111385f6ba88f13d57e134f8d55609cacf88237f07037d494a5dab46480334cb95b8b46e2d93e5121e5c63700b7f10fd6e2ba11f84a0e3a504a94fb11a0b47fb989459fd3091da6d6270f545435bd588a020c41df45f37900727eacc1a1c12929d16f6f47eb2310a780aa5bdefa29f3c43d6446c9747ec93c39890b2a516a4c6deafc93a5135c5a7284988824d5924ae4e232a2c896e3ca83b22400dc36096cf93f28124c459fd155bbbd198cfcb1475242880e11c7ce510220ac8921a2fe8cae574d81f7d737c6460461d23b60606a603c02100d31262885602465713d30c5d2b6e2229df3c49d68137eec554febb964daaa2bb8d9b5395865ccab3a5157d2b2924eb917ed6c891aba03b9bc4ca0eaf8cb335e90171a0e83a4c250420326e14e677b9b7d2b265d10b06c9c5af4a29a6d4ca21ddaa1cec2ada31d455108eb31a67103c704a9cb5647932237cce6812657077e46baa0131ce84a15c0921854ece3703aabaee8674fd0d406822d4be103fc2c11f8443de7a0907bf0ed3fed64b6efc3dc00265c22e8c33ed0f94881b4fecc99989db6a8befb120fc4a65127e29a3938f19e0d249208927b54102b8e90e1c7635c6c5a0335768d33cc5b6f67c59416f675a85c5233d088b740d06b4a7c818db0dfeb00ddfa3dd440444d2074c62392d1a137d4923c576debf2d305806c4be3ddc96e3e4f9f29d3f56b04f26091373a63c4f814991bf72ab22837b800d086cc3fa208878cc228d74b92f9799cccc83ccbabe2384b5ab37991a6eb6624fc559bf1e09b5c10623a37a2907cc584a9c058c848b4408949a9b2e35c153943aab806941732ccf30b73b9c7031209dc90d9765454502345b042fbd796cb894df5d310009408e340612bd0f9dd353d32e7b5f841a49adf9be23210fd465020fec87609aafb4a3610e13f56075120ea17671cdd387ca2198f46798edfd9f240f97dc5b38185a3afbe3ac6530b354a217561f946b28c5e90fba532471e1b21b0f01b6cdbaf311867fe2b7c311028e31731209a1f029b3a7d96e9cc03009dba12f910cbb50447e5ebf24a58e42a3bfb429e828b0e88f50b365bb8f99ac42a397c0091a3ffe205461dbdd54770f58f611958b9f164b82ed81ee3290347541ada54daa8160603d0222c4a190c06f1ceff1f46e988a391e06064153b8d309877c80aced464401f3dd54cf98eedfb1e042aa18550d89817b7a6dfac29ae1d5b41342491cafaa5e4cee8375975da78e0ff3eda2942dbea7a595817cc080bdc160ead9fb9e017d978055f3df0fa0cd408276eaa9a25602d871a960cfec0278e0b1762d153b0cd903fa83775e0ec9f6594b9bd0b791efb8aef341d1cd14d61e17541e1bc41c06ec495c0b0df6e78b612fd6831da8b98acb0186398e67fce42e467ff9b4dd6d95ff75d0d26872f511e6ef4d280f3340ba19f9872673ba3e0f38f376a96dd5c343492d880d1fc42984e25de7db962fa0f9f50818868c6c1bcec7d9fc0c818796983333001f68aabde2ec53803219516766f6bbc70c4631f81640d59b9b373689cb857a7154bf35df011ea2cb826db70af3b9cf0adac9efa330d2fd7416dbbd8ac9529316bbb6f527aef45b2577b3699580d2b94c26568943f9245722fdccabb49976dfd0edb54089f68b306e38086b340232d1d2b365ffd2c3636b29142345d295e16ec71b386f182ca9a7e246a4df9259aec66e8f7a8c81b980e6eb6c951a791558c2c44ef44b567799723806638d32704bafeb5cd22bfee3c43c8ae8c8ee006d3a7acb82a92128d3bffa6e1c09d4c4a7bae69be23e7bbd9ec3696052f08c50134ae9085a9cef02a3260e35ff75b11395463938eb214907f7bdee08ac634d9f69c59f4c4e9c040db9035c26494e1fcfd9e17d6e838c2dcd71f3d9f1cb4fa05c09991830d8872c89e8eeda5fd4fe467cce586576c0f16d39f3b68cd1041121000bfe5d1636427096831bfe5e912136c8f1fca12c95a2a6bfe0e9d31f7901b3ce3fac9719b0576b23fbad62e57e1a4de00b4433c75e18cf8b4b3bbf2a852e5fa1b4b26c85e55074419957dc4bb910e4e79391ea4f564aecea844eac102b73e7a018e785ac46b86ddef2fd9fb7b5ec2f6adc3ab9aa69d661120731ed2322685f066abb68b01726783fa6f0a48b5c7596f0a1e97a2bdd08649557989c8dc62ef7a96fbcfb0fbfeb164b107b02195c61f1a40c4e8c90970e3e49c0731ea3d7436be925ca52cc2cee61993a8de47802ccdc94ddb8c0362c53e4811bf4353993cfba837adb087eaea01791e3168bdc8a83ef9da10fbe54cd79c8bcef8fdaab100b6505fe0e3ff5ea2995844d71126916dc9874d7432ac43e1d4c02dd701b34b2439c7705bbc2c8eda4d411eec608371290e9332a1a62bd1dac8ebe316786d55e2ef7d367afc570a8a72663fb953c91efeecbc71e7f6b27066aec764ce07dcc4ed69f8ad0b77c0ce8092ce2061b6b0d3d102555b63195f2a165b5e6d54fd63de5b8bb983ddf229cda74191c5b7ebc3a1b238301503549da8a85fb42f83015128fcd93308c51b25b182213417fa7d9457540b64d6582947372b888f3c10d85e7c82ece99816baa7c9835964b0488969c2d1f835e9bb30fea2a632ed7cd4f47b7cc99e57c71db45863b2be64dca04415ad001316d6890ed7d481d97dd4166050ac10e437df08293599333129e2100023879cf8711f0f281a006a123de2cd19f74e7f259ede8a195a0d98df05426bf8d241576e08c3eb50436b7bfe064106ed0b8ae0220161db4e48f007063cf2d5a64185cef0f7834ba534dd58e37ee3a9a0875b4b129d0587049fbfbe5af461003dfa8aea37296e84bd9504e6d2b79898e29e1e66245dee06fc8d5e088bec587a90f15de81e57263a1e8261fd47b08e14e97540a8ad22a2b96cda382f30fd64a93884c4a9a82264812c5a63cf4bee51c3dcac0d4c55fd1cd07b77c9d439f8b3a2436bd897c6211557f0db7f3fc53d220c03b58ed63fa20485c7cfa2f9e74b179f26eba650044a1b1c791487dcce60374179ad2481a756232972f9e45933358795eccb22dc8cc00a3a5594f80457f758f25519c129a662417c1467c5e01e0578b948ee0bf544266ee310f11c06ba0e55d22c05cbee693076482f70c7f32d2f600413e273c38ccd868f9277ce0202749ffc62a2e8350c6650ca6d18641494a595de52e0b56223d2616dcd37248f79c768bb2f9f8963d9bfd22cd026301806bd4063f2e21ec568d192f035e5ad258f58174a7b0f5136918f1789651bb918ef56b99b2b472990cf3c051da6fcca1b37cbc403d7d5170f4913168a706dd749c96e855270307ef93bf38c8e00557953de7f5c9082f0e657529559da4cc1853f8a9ab00e1b8d049394c877d284f310b39d1bdc417195deb510e57db77dcc61f4206f8d4915e1b2692039fba5b0676f9b1732ec9ab0e2559a73f288da948738c0e0386b5025f89a11326fa69dc45c012fc63094b40084c2dde9d3681fb85776e6b2405c1bb9dc4d86cdd46493ae874a01d478dd80b2a809047ed5bd95654fd0a7b42dfa281a1f3b4c2bbde33c65b36e32c7032ab24992f8749053669221fa34503c1f60cd73a39d3eea847e3a9e298a0bd9fd8b4eb843d948d5cb5a570d615dbde84136e01940623add1daad2c6d6ce6da8ae1228277a978533cc832e2ddd1a1e693032f414af302c8992a939acc77cc48b05ece47ec64312241bb1f92f5f5c4ac5e7a554b56803aea02c3dad6aaa472506d94b3ce4e7537394b4f8a8664f23533d380576c7ae55349d182a1c7fb65acb5ae0d32109abc5f838e5f985fedf89a481af046e5d13fcb7ec7c1588abd2dfe421a03eae024f0662fa0f387bd7050ecb526cee5ded0d03efaceb00951abefc8500275fbab1d33a664b68bc4d4cdfab6c509fb15f1d9dd9747588c25dea8b7782b06bb81035dfc2afe957b6d0d7ca6c9828bc49198f8f6cfbbd387baa54a1c4a715b638e8a2ac291ec6e51a3523b555ab1f22c119ae5daf959aa1c22f0cd96374ace96f2c68c4025b6cee2e73e2a485f2ecba036c177c4fd85026b37f0581c3fc5530eacb85044bc68a101dda543ea8a217f6aa394e6261ab4ae6c6ddae8b0984e3bfaeb3752e25f61a6639b8aa7ea03a91387aac300235228a406955d9a150f999957311c035f104d4d8d70308d123849a535e9823cbb915c2182662c85912d369003c55bfb92bf2285b869192969cf5c94427898f5374d4dc08109d01d340a38bbcd5cdd5237346558713651cd675d0a146005b9b6c2b9a9a1facb82d57bf0c7b26dede412397e04afb7d016350bda4884b190ae52cd031c2ca2812a26ea92fa00faaa140843d241a3ad2da28a97d9d63ba4a311a1d9507f1abf815632156647059e36b961a74dd061b6939705a209a9ba6944f09fec41d0f0ea45c09f344064e4f9e690400bbf8f01a8ec22b82600e3ea259c7b115c662e32e2a4387b9065b5cbc07291122e80333b17f40d882d7d84544bb657c5d5d6719fc6ed52d18ec999dfde093fa556b40586694ad26a0e35538afc597318b59108052a18a85fe9e9d527bc79eacd6a5a9320afae0d5f845f9fee2622e1fe2de442c53000c44db6958667407597b6a58aa8e9c0042e7192a0ae2e8529eddc91d222031b0f085403c81c200979a68522b272072240733819acc37c384a55096424b99c2377e3880e34edefa4f522a0b48887a2b6d25da808cf1a6222f5c72422f122864cae550118db920457554a9bf79410275762d391f50af291a58a5b76075cba9cca00cad66b7fbc0ac54bf2e641201884036e6bd9095f3077b5826d6a5fbfcd748e6b404f620814c04695a194964cb001b58cd4aee4c03208ef27d3da2c8e035db6a14cca2a3b6d9d02bd62eb20437456ce235f17514c756c830ba9d3efea6bec839749910e8c75672507d5d239a833db851733cad95c05c3b96a82ce55ce73d504f891d6ae7532025a24abddc26e7912b2fd99e13a6af0ceb4758044ac76b6292b34bf6be184126e7e30b342dee687f0c4ae6602dd4ac02587a835224b16efc0b3425266e7d030060c20f5ef61dda3838953d9956279338a3ce125bdfee0520f267f2e55650860e3274bbd667274af4e3ddc53c8b70c4516cb41b925ebf4d1954b928d3d28b1b08999f998ac3bb3fd3bbb132fe5763e5483a5d24ed190a0ac0a3a0374ee1cf43a19df28d235902a93c3bd879b2e051ffbe14e1a7c337375cf2b62039f2e1bd1a20e381c3409b7bbd42a1a503d2a9eadde26131ebaed1ce236fbbc7a36ed5c1cbff9ef8e422411d10e4ec7319aebb40f8c79c1938e3daa0457bddb0cb556214df5faa4edde1f220a78480fdd091e194e0037cdcd15b6c0ae82c7f804ceeac758cb52d218e205d62e03da87ae35331c9277e6f62bf002decdea345b2d4505b3dfb36b705dfd77e9e0bd6a637015ac23c3d8504ee8e0e08ba05ce1781617f4e43a90ffeee402092454bba5569d4d418e40e60fe82a1775588cc73396ab97d9819fb5b3fe991da7fabee74f385d22e0522917f79bba7a93237674928bc07788cdcc2507225c4d8c595776a8c76835b95e3d7d91d330c78fc0ad2cff04936ba69feefa06926b749288bd514313b82a621008608afc4a90d6d92802171383eb611ca01c427d4f05d23040b410a6d14484d9a0b180bcdcdf9ab33db0f9ad53dd4a399c2244b09e9b9d7e9604da35c026b051b835684ae5783d1a2e366c3b8408d52e34df02f9f54cc7338b8baf228fb15f9f7673bf0feb5437b86a624a0236df1988808bee0c2f9a92c6e10b251c40c0fe983e50f3ad951b858a8bfcbb080b165ba976c54c7321f6d23ade1ea346d5995bf61b8f67fbed16a66765c991c3ca63d8bf4648933b972bd19d7251dbf0909a2e2b6eea639f95fb7c94929a19409a37bd06214e5e98f5db3ddebd53e2317012d82408eaf0f3e37d336b0927de5b76650c3f8ca1bbea1ca672986f8389061ea6b589224588777023f60b94a047674036e092511865256660a6d264feeb13543d9b1c56c03703e1384896dac04e6e9ca567bab34e5d8bcfe7304ffd5bb9107622c1447ab61fbd636cd22a25f1285cfc1940414531358073f074b5425bbb0331f58a5b358fcb1e9be3a3b071163c88c1392d32e74acc2e48cf99e4b23ef95f240aae30853dad342bb994ac4f26b5a353c2d53b4e6cb937ad99bbe8a2a3af49280b552ae802233f909e9dc21b60bc4a0d4d5d95c698744deb16a057d4570ede719e4118341c6955ebbdd7671e3880ee8ec2a3f6df13f4f9c2e76c625b2a73e2c7c0a42b79a9bc1490e49cf3ad4a57460c2979435ac7f324837fd3d22fed4dc516198c82964066cb7892e91fb48a47663cb5a8838a804ea1a69c06d8e21e85a66ad417e161654cd4284df51799402d93ce85eed93876a7ef6a1de7363e5a2131d166075a17781ed37fdaa39c574be9546c527811a7529cae07028629dc15f1fc6808c2a874db3b30ea4903624488dcb322e9be488f0b7af611c49bbd5d092c95e90d3887d220630cdbc9a8b876124a09408d393dad975105eef1424c08efe6a0fdf6f96b949fb57622bd6d89a0dae9ddb628720af60602ad4c51ab765239dec220cdd68aadbe453b29870ea24700093649d94ea948c902e4ef94403570f82454ff920cae8183fe6f41ebefbcbd0f9ff59ab84d0b7efb4fb7fc750e9d0ea50b755112f54689ae7d4efdf0d73d7662683d27668648cbcf69abb1ae9bba613ba0788615a5a1dbdd815b283a2ff0b5021dc8c69c83b83a3c88f4ef82bbf1fd8b913e02501f5d1231285bfb52a469ba797ee2541cbc3fec49749a7ef8cfa012b1faf31b2298022684bbcc520e4fbff22a9f334e78d3f417088f54afd5a11071750c17768d6bbf06f48a39c8c8d7f0bcca7511fc4368cba0edbef986e815488a47ee48a34a218820a0eb49754a2a8c847201027ade8cca09e6ac833977e12fb365da71c9aee5b6b7ef8774d3a26962920ee9f10e7407d6809ef2b4f23d94b219e522d5f101dabdb828f44bc091c709df7b4fca31fd2a6204ccd0395043a6c26b6c8c23b387768750e58556098b0c8348209193c89289dc4ae9c2d7092984c043887c178c1463726ff5e498331b24d5d798d8a7d743d761ff779ab62488101b06c8435df40f49bbecff8b5ed18b32707c96b2244ac04aabbb3aa07b1d403148db25d8452b460b9eced86309da6aef4a3e1b0cc6309ca409e6a8566734c79c62b9b374f68d00f8d9e0392c09de2bf7b9eea5cd837e1504b55d9adfbb5b660e8c5c8be33a15ce4044d74c0047646960594fa0324a9d0a6d6d84d504096e6a7e2546eed411b26b7ee6a166a2333424c1bb19188fec3a5495167c5e8552825013cad3f63e9dbc316f7446b3da2d05e1dd4ed76f40012839b099ce6ec2a2e44bad616f847ea7b4a2ae1b91a7cc8c17abf9036133590f92312a1b65841226f2269d829275dea272ba7068e6ba4873787fa24c29ad62a262669ff38c278a225702d85b4333f77fb241348b223f50b674ee3369df76097c849f0875360949667bf896f24874fca3c7d8e6582462db1d7f8623f0c30b667996de808f7689e38fa3e16c9702e7d6673369b8697513c5db4b633d80b400abf3b7c779ac483dfa3d00663d70dbd0eb14d2b110ca0d3d76918407db4c2ad42226e518fdd75b11978a9ff119e247de2d29a4ff92fc8b02be5f7deef50d6481e7afbee590320385036a7ec6d1cec2f65a21ee55c0d00bd5bf9553577084040eced2220ca9cdbb654f45b99182ae192f9d2a629144933d1ee35384681e2196b93974ec4649b179b66375d4bd3ef59cc746e680ac902dc7abc736cbe74a57ed1456c9055785f8286f8ec4c63c2c2ef3609548669a4a6c591d3a5e583344326d4a62194ce860e3fbe3705d1a6625576890aec7828f1391539389580c72e379fb6b75ca4d24cf81ed1156cab379d4ca42dde94c0750499693d06a8e30a2372c4008c437cfb7402d9303b8caba4f1a9ef78ea8c2efe8f189e1f4485de5a9c4c5e72841c4cc41956243925ea0c53844b52e2783cff0319f8a72be5e9975a75f943a9e39e32042fd8e18964ed043e42b222e72c835c378fbc1857e82ee95996199dc113282daa0b85575444cc298074f4b4b7944be29532ffe0edaa1cd99732d2a132607d8603759ac0fb2da306d3472b9b8d6481411037bcfd1b857703df21357316235caa0e34937de6fed4ed6cabc58968dda949616750b7a9bd9b37fb60ee894444433a1de4ce761c75214c509e2e2ea044923b81bbbe2ce8a77959d071e9437753deeec0fd3baa54ecaf9d8fc18af97f60771a0d773b806d9585020ea7799110ab66be78247828f6f4b2309f57cf91ba25d5ee0e3b9db113b870a63a4b72cf3dc7f8a4b490b4fe2a648828bb934792fcab60bbb7fc40ea4c6eb319075898e011f274a408dd9ed13c404be47e5b1dc7bdc82a8806023dee1e32d8e2bd2048d4031caba0fc3084052056c0de83391566537290288776b2bbba2dfdbe7ce28a36bc95cbf8872339495210017d8462a7dc8ce2582f91b82ff2b7ce93e1c33984b8c93994a3bfe4103b35365f94e40a2f1c0d217e14f8b10b095264266c8cac31f229664b1bc3a0c67207b6d9157bb51f4cb05ba1deb669fda2bcf45c4dbb8344cc45c6d94d0a044d73ff7d5e2e9f69828ac8c750d61102d540a0ca07216e80050f8e9e07a5708c515938427008beded274f6d112a887a96ceda03a5d802c48c83cffa95a3589f39a4e468a63319b045cf52b4c2029e8e808805be9dd87ef62b6e6cf003d7916d9b075395c022be4092e3e2c57dba34c75f45dcc681b74b2f30e1093b1fe757f717346b0719cd6b525fe3c971d8214fc78be795d53e89a8614b3f0661d89b6717d72bb4ea9c0d8999a83c954c562f7a81755234f645d89f57c48a75238fc35f3ef756f2159d539dc8509befb62479469a291cd1c06b77e6f762e95ee246b5248fffb2333b290eab76cb32f5007ebff7b5ccb397c2ab74dcd778895828c2558c6cd7451939cf5d6698b3b6968cbd823a3f6ae53d821ed79a005a54878d288958457190ad4535a0ce977c4b77b130698a54a9804dca3956a508b08c1656563aa42759ab2b061a7b0e8d663e1eae7783689149e3667149dd6eaabb740e973bdc6400f14b62c17862310b62e130ce7eb378badb74ab0ef3b1c6d63b1a4060f6983c60a77b7dd5f0ff4cd90f39a7969324c9df7de26142b59d90928a22f7f47994a6cb0c797fee86acc8ef396e5cd648539c0ebd055d3e2be60a50a108274e8947ad4b69efdcda6d39dc2bdb88787a5736658e4998be3743719aaf1c8d4b62e75b412e840908d17bdcfa572ef2b55f327596176ba04828d593daab24aa81e58560540ab72facb2f2d71fc56b0d270e4150d99211f135972602b16d20fdbb7ea2c1d6664c3ce965ed60c637d13e493c4e50a30c4f023f1efe6465c7c264c5ade50b7be9917af99057f465a5d0325d0b408b5ecb7fc7227111716e913c6741e9619ead6356f6ef10041cc0025a0d8a6d5a20ceba9a0e09e4d9322243537309b1fd26c8a4ce481868833f384e1c9fb563eaac903650bdfadb530ef72eb34955e6bd0970904c4d504e760cc89175ce397447c543cbcf2025ffd8ebbaf330fdfbf86a4b76b72db79452269902100720079506f3e9cfd6aac309bbdbb012840c270727a78d263a24726ee4dcb04aac946e7c37be6a04cd0e9fcea763a10451030e1d1c6d38a927c0e1c2e14282db306a0369b586cbf33ccf73edb021c52263c7934a5872782c168b9543474b0a1d3c3a78d8e8e2b1a1e5ee80b10183414295e0799e67c30a181ce8cdcdcdcd83b485047a3838383860d82509bd1b376edc08775c1d1d1d9d1d3d637a3c97cbe5eab98072673cc982010030b849e2f2f0f0f060f0ba748a97cfcb878d25da844f2b036fc78e1d3b32d0803e51bae0820b2ed080077d82e427003f016083081b4c98a66a6cc49ec402d023003d2c9626ab306e981e403d80700b803600da20cb8ddc4d4058d940001b0860aacad416b2292a4f088003017040cd602420a070d001071ddc292816cb51075e8f1e3d7a743080a9267700de061b6cb0c10082a690dc204f766cc07cc07c58a8a9213665f820800f02383153e6068a00420410f2d0f0cc7c719d9881d27942684868a88d28335b7c66843073642629fb7b7e9518fa31f4c34c8c076ae65b3ffcf0e08707b4ae869bca60a11e7ce0c1079e04dbfba78caccc9397512ac3d4a48613ad2dd42838f28137343434f40108396140f03cf0c0030f4020c2f982c8036115020820702010e51ad40a8b1282f02aad5068a84829ab4de3288d24ebcd39a7dd9c4431a5d6badd5a1ab1b96ddbe56a4db5282f73b52d7287230442ae04dd52ee9771c0d179a5f2e8791cbd67c218bdec525a72374929e51167a92d72374921e5f1cb2da50229a62c5b82a902668bdcfa06b344e83c74f3e70aa77fbc41ecaf295b352935273b9f87d342ad166af9ebfdc81a42a4c24c9c19cdc922a64cadd56e62624d62d2d8a4c6a0d24939c4a593899252fa6c220335c95c91c339d5822633771537f810aba2062e4d2d88d2d405893943a7024626d22f12eb17715f24765f24aebe68862e20d3de2f12555f247a3c60f9e3fde95306e8558217910f241f268cb0c38d101ce81f2ef0d813b499ea8aa4bb1aad26b8e9cfa7ae24d8e51efef491cf0da161828d40ca23108c8ad2c988a32ca5fb99271b33b8dfb39ca9d274660b59c64d0d6bd5715f431790ba7dcdf922f1fb2211c717893b5f24eaf822f1bf480cbf48ecf922f1822f127bfac86fd9601a4ff5367401b1f7ed1789385f24def82251e78b44d7178939be48e4f92211fc2271c717894562ff05e05582e5f780df0e104f8143f0357de483e02bc1200f0894850e7084e9233f074894048311708126a800e30051d0014f50028f1fe8c2f4917f035c41867340698403cad84d157894b1d64deb466584ca747a488262446503ca2389e495008ff248264d1f259a1af028936856342b99ddef13cff24bba910228464220c94fae07caa50e944c4eb2e97303051ea52c3f49282e78944f59aa511bb2c2089958c1165f4ec921d984c9a9f6917fef88e50c472ca7b204237bc89753bee441a3cbe494c3422762d412e53b134772189027b9130fcac9b29b7e90ca7266f92ec5613e6144a2c87709460729352518fa12ccc0092cc3c8443ce6af2934a48c320c391506196011751c233e0f29a550686ef0c226e129de0d618e62b118139eeccf9aa98cd025344f9d0e35f75f65e17ea0c562311d3c2e5b0edd92329868e1aa2f1b932f9c168bc59470354ccc788ac5623a5c232a195c168bc56cd86ca024a8c562311a2c0e363d2cc562b11dea93cb440d948815154a26150e0af6fe2db773ce7054e103b33fc5212afb09629edb3baaf0e51a561929098ce419fa53afe5413bd971ecd0d140f1a6b46a26bba7ca65d9b8d0327afbe22a23d486b6c141de272b229aa3e263e76e9f7e1b5e198e9f8738b955c002fc2da329e3acf9d2b374f7176186583ae9b0bb1f41b9acd4f5d4b22f5072bf0a75d2f6463243227fe5cef1f439a4242b3752eee93fbdfa572a2d7daf9baddb5675d4301a4a36681c4db17fb315379db1c5d7840691dcff93963195fbf59a39e42e43cccd17dc797bf97686e3eb6b4d073b104404c782bfbeed3c6b48041e7fe496dffd9d33469273e4fe6fe7ade4ee2633aae49e0bb04a98c95bf881adffd1d5e778c05b688090c85f389eb00d47ef6be8b2f5a7b573e7a8df0023bcc426632ab71162973144ee576e32b8e4cefd2db8add39b24c8fd5fff055bfe6acc25e1cfe38fdc0a68d83643140e525596982245ec07d2b09f020ca82153bc50d222f60f19936013185a2db7fc05264b6ef92b870d68d6f80a94fe70d84d2de710fd81786192fd23b084e87f8215d9b3377941e25302659f3864ff0ea8857ac885e47edf99e151e671cbfe9ebb29aa8cbcb590cc46fe72ef1ff994062a29f5a2268882215bcaef5ff681be40e20ac94aa392526bad009aa882a8fd42b69493052f72e8e1c81945845421da254a78b1258a105fc480102d936cff05248d44c5aedc22ab965a6aadb5d4fe27a5c8006d0aa431928821cba2012fcea0418a12262db31bc4783451f0034d588bb365324caf30afd65a6fadb55e408c21b3a62192b0200ab17eb6267be4845bcc5ff73fa7a8099b5fdae7fec509c78b6fc2289b30aa33a2475369fadcbf5c385e5c138ef8c3e1f84da557a6b209ab52ed73ff5e8cbf2a759f729143f448f6a063b4105dd23f9dd184591dba63ba0fc56b892fe20b22df37b23de4fb464ff9d2f2fd8e696e51f98e1d131699852dcbd0d6fc7597b4901dd33ff7efd3233964c57c5eb0bd5f55b45c8f3c68f41a132d15c983c6f925d71ae64ef34b0b714ed49d68cc492adf9f5a68dfe4e241fef767148f2c5fb53495f27d15d384b91ef0bdceeb8430e8fcf7b4fbaaa5096b99d313540bc9dc2a5aab68ada285e38ce5fb812fe07818847c8f23743d40e7713c8eb0c517bec711e295095fd82b135a078ce2baf7abd47d1bbb6f8deedb23554c155319a98e5448aa249512f7f404458baa4971495c12a7c42d714c9c8c73ea41c2e3ade5fb552adfb776dbb6edd6aed4841589f73fb048e462b7c5fbdcd18451f13e87d44232df9fb18649a8e973ff1ae15e23dfbf2edec772a815cbd7265f7739e59452deef3c1f2e54ffdc102e12cc82cb2efae77eaf2494d75a488c07cdbfef4e13b62dd13ef7a1b82ac01b16df0695ef8f3cf772e1c6d43fb7072c7fb4b57c5f42cd7bf177bf7b6e98c2aa861d4887ae7b3af9d8850418ac1d3a25ab85a8985da1cdaed4ecefc821df691fb9d3b49da6edecd8c81ef29b06342496e52b00c8092d146c261536def33bdeb010d0bc608265a9ca0e5a44f9aa861535b98209256a5eb0300a42c6aa905ae9660509284db0e04c132a10330b90859631522cd8a2c4183eb967474d324dee590c64ccdc6bedf4c83d3b6a8a01aaa6da91b52b4ca6b2d0a4409972623ae529573c71a508318e80d18638a7c0400ac8f870454996981ae2d84fb33c36141b504f8cd1258a14349210c78e6a220349135998acc00a19a8104759258f91a4cc184633940005e22891a4702a2306d3121396a825e22897a2a8a2f6c509145618a5401ca5131419c9530e3f405529428c384a994bc19244c54809b4748186b8c1104dac5144175196483d915d4c91256240c388224824a110860b2ea260fa418d22445f22862b92d0020b2c6a62910f668489010c1ea6808a42f47761c22450c40d51f0a0c4e8c908518327b29035d1c31155c44417410f5bb2a480e908a327c4119e48b2f403134776a041f4975013d6627ef08246149a13a427b1566372490b7b1f1d819e7a6ca7b19f5c8b3c36548f3d843f964264ff274222fb9fe0442c097ee59ed95024dbe49e1d8979c276392380eb8ffd3fb9431e5fd9a71c29b1b2040a254acc9410a1c4892da22407329826f74cc9117b03eeda8821891af54892282449ba4832bbe9a96918314b02449d9a25e16196c4c81414d8abd52eb813835ec19c162a6648a6cc902451c1c0aadc33245066487c50dd3002490e4bcc9018cd6830b36a512eb0f7650b5e85a105c6598cc13798b042c310341a78a84e602ff78c861a86cc6820720499d90c66cc66f06236c314b3198698018824702bf76c8625d48c1964282355c9981d09838bd9112bea0eb32332228905c5dfb372cf8e0091bbdcb32348e4f1f5847db01ba5d31a4931c3d2a54b0c27f04274275ed353c0f2450b962846b12e3160914337f72c862bf2d8236341f772487ec084159e0e623ff61e58a2e85a24a5fcd2995e4a5d0524473318cd209120e168470591822e707b35cc39e79c38c8b6209e0750072a782e916422df549e7cce852cff5239aa9e3ed1ec1050945daa4f413ef7aa508637f4bc960c8f20ecdc80c77f2fc25de0913a9d49f08877bed942bd4ac09d923e7569d010c58c128c8a144862d7c351186210cf8aeb4888701283fc2801096c9045c4203d133d8cf261199a6862901e6b7c0165b4059218044806a4a3fb7917246830c9280d59c47ebc8194263191d513f6822452849218640e113d1f807cb1a35367a8e4f1e6334879acb1a633489c51caad30b5afbcdfbdf7cee6f1f2a0cf3edd8aa63248f9078f35b464fb3db5d6daef3fcaa7f4e5b7ecf741875868e16650089c020def076e96df020bf25d9d6dc023cd56c84582ff7d16388b5bc8fb14b8f70e04c9fef6a957d342abb760f78fec8054813c34d99f86267f568120e8c8fe3a74e4ce6567625905ca273207ba48f820fb7ff0417689e042f62c737dea5afaa4d57644a47c333b274460fe045060ddeb23ef702eae6127b88f77e63a4afd55eba4e0067a2e1b26a0e6fa35a45ecdc5dc8d7220965e76f7af947e5777e654818737c172650b2923ef26e3041921366fceb99adb6d22b3e44c1a5dc6641993c518a731518c9132268831388c1132a6158503757373b3bab93937bc1b1e956f08354ca0c6914b0d223b2e97cb95430797860e1e3152c4a000044130dc21e66847983061b884c9126616664a981ebedc4d618e80990223e6c592eafa7b8aa90e7df8cb831f3da4e051f0e59a84c3e823531f3f5aa8dfdf83160243040f3a7a3bde541ebf9d34ccc8634f1e29509672aec14692992ad227ad76bb9caaf39a8635718d4d8d8dccd3d25a49296d6eb2904138b55673d2dfe3ba48009aa10756f057bf132de982d4e67f4c749d338894c7248d9ace2ddf73cef956808872c44375ddd35150914e40b570a8c0e38ecb35c290675276956a54655f4d30320bb2bde4a7fe39024b2bbeb404041e2713261e344a27241806dc47fe4c92c14754f6dfd9e4cc482dbb72cf8c92e455ee9951ec4ac77281b9a3c81d0b4b4c4a0774ddee3a57708e18d4dddddbbddac029e19e2ff2fc895c7a4e69fff4fb38df9da31fa784ddc31674dddddde3af9ef27e920b02cb6e5aa9a0b56eaabb0aa1fef5ba596bc527dd54b4d6acb5d5de6ddb6ecda173d66aad956e97f33a8fd6d1e4dd562b006155f6395f95399adbe538aaf2b103b402054cc924450172485ac9ee47f48fff789754aa6ebbe2979696b8a5234c78c92ab2149289d7d3d3d3ebe9e539c1f43d0f6f0d86095eb7a22858cd79373fe290dcebaae2b6a7368cec3fce7c82ec21a9dd4638e15ab99cdc024af5249f4638e1f6d36d5ae771d7de2d77e7c0c9402b98ac40d8e3a9a5160dc380fbf8ff78b964c9fe1303af49e98a8470baa4f5a92a779ca7f2f08475dd5bbe15fac75fd5e1a8714eea2a8449ebaa2f796664c0fd33f7cc8816930915cc8c3ca192aa34234828c14b221851eafa622343f2f87571e3b12447e9ecc152aabb82bd78f21cd6b21a372b82451e7b6899efc663ddf03eecb5a6873f0f03cd59912954f40a1628f769dac582bf2e7893d928f0967b5664893c7ab5224e72354191a43c7a5e4b842248af9e9bdcb318a8649a7b260316426ca053544c09ca70439763065e2156c20afe2ef8cb58c3301430b1294dd49a6821fa4ba386b51930464ce161ca52942ea2cbf6f187ca9716f595d03fcec31537b084b084b084b084ccf67c6009610969b186b084acd6f07cf09cd85adebee3fa5e8cbfefff0504d4db9936623744b83e4a038a44d713b987388cc06f34615276e3b79dc7f15bf743fdc3e8c59c1fe597bcbd2ca33fc8f9ed7b422561a42fc7cbcdf13a5e87bf8e6f3147e80292e3059c43e7737c8e100617cee7f816754217109de7799ef005d7b4df13ecb6ff40e7e5dff0fbeec5387482e7b4dfdf75dd86d43f9bc772473d89d442acbcfd5c35c02dc83581c79611cded861bc6a30b6c5cb38032983af009cfe780469fc8f352b63d0e90c890edcc99229fe8fa0f2462f4125d5fe41389147951e7bfef6e805294348b7479b66b34fad14ec80a47cc03caa8e9b3bdaf244d09eeecb9f38dc7f1371e870bd3677b29b5b9b803ee1c113bd066498aca392027e61cc0f33705be61a1859b5bc0013bdb273bdfedbc049f186171e77580435c88c562e2ce751ccf3ac016bb20f078f38682a47171d8ce6f397eabe56ddb1e0794b95724b49e7b1666d5b070706ac00ec88cf3bd0a01e789bce67b15828dadf1acb5d36bbe033b1024db6f0fec80ccf6439af2d7f616f49abfb66f816ec55fdbdf6c6f037a949be162fcb53d0b74297f6db1b93d4d380225e50d296fef85e3d7dd6994b71ca0334d9fed77405f7228feda9edbde05ca32da677b1ca0949a3edbeb8064f2f61fd83d805186c9dbdf00b747616edb6fef1495f46d1b035ccc09256dfa6ccf420b389391b79751b2c7f65e12b6dfd9dfd658de82eaba150ca962ee79ee1fe1c1b085eaf713f58fd0c441ded130a0892726a1875a903d7cec2ab46cd15b80b4cf0c4d68410e31c0bfa36139f2c80c001b003aa07f80b48f7b69e2a2a59ba609fef25ab300349c0089611a3e7101d936f085fb3008d9fe86ae07707fb9308a4bbc215e99b08577fac8106ee713c680f6f1efe2db92dd4bf6f71f7fc1057fb598d815d2350cb8ab2023b5aae526febaefe4caa3597b7e5789347bcede98c827df13b9ad4dd817da9adb9abb5cfa9eba88a5feb92f9726cc8b9a3ef7fbfb267890fcfb2e785077a553be5296af6492adbc74d085a25f32a727281a14b2bc3a5a2dd1417749bfeedf3cde25aba37c1f020da33220728872591dad9056492ba5d5d28aa9852499dc5fba501918798cbee231dd8bf1f7fd4d5f17def169f01cbc8694a4c8d746c9d7639a308b841735615b140b3c262e3c262b3ca6268fa9098fc98b92caf7ab177563f9fef4a2ae51beef5ed41979b46666cfd92bf972a8853c268764e8425ac8c30aa54aa94b35a92a552736ca92d13ff736c0c52fb464b4908d924356caa5c48ccd8c9a180fa251aacfe6c7afb24aabf4e872b8e6c3cfa2f9aee64139b409abb73a4d583d52396dded184754cb58d88fbdcbf77c4aaa37cff4638decca3a76767278f1d2ddf59655a994e9369ca26154aa1f8ebbe94257fdda749a1bbbb7bfde9aee4afebc45ff7ebd192feb9df69c991e1b193754c75490b5930fd7324870262542ae794d4ceb7b44a51a9dd62699562ce392bb5f325b5b44a616b6aadb34e2a29a54ae4486b7f525aed967371f253500afdf22014fce520918fefc3d829836c1fe0ed6355d97e40c5b58ffd11529828dc9cdc7144b86f32d7032d6b3233535693327f65e1c0229f18a5032020ef016c2edb553435dca8eaa6cbf1746a725f0eb4f573b87c394234de0972a8411a69564b85d6ddaaa5393e268cfb97cf839f0eae71599b34aaf004d44873b4ad5a3a6538a7e64926ad3061b2c6a4f4fa5eceda84c97b3196d5a8ac89e06529d37192d1acea77d89b35d2da1a9b95cdaa041b6f4a59b10d2b09c729aa93d6274b5229a594934a59a5f53929adb56ef75e8ee34298abe9d53a82eab9154176126c092bcf6b9d9db762615b5363bfabb196c5aaac337c52da0110d00f1f3e689d3dff3c5eaf2af1ce67e536af70515448277f260cd95faab8bbd94ae75d75f3bd7b509a69cd2550ef17a56e4ba079ce1ffa41542c966c4a5d4e3668b59bad74aaeeaad20450d5caab7292604e5baba5dbeceee6f085cda97ad9ee9704ddc6a9ba7b278c856b6c6e5ebfbdbd6f53b3f96c3ff18a842d0120e0ee8d949245d3751dcdaa898e8ba294524af38ca29452a79452dad55ac35a6b9593524a69edda737ead9552da52d2369eb63b09208fe8acabafb5863e75f57ad98ddba07f7cb5f369f92e1404b048f268cb21d73ffe9e3bb90ae1eac81669c2544eede37faf5b242426785439ad0185cac922d1487981657b4dfff8e3fe719aef1197ada2d3afaa6b8b84649b384c65c5554e2aa76e73e96128b75d4ab72cb2566bad75d5b45625b72cb4729c9c77dbb68d02f67601439e2f29ad964a69c615d375cfc85aaa9252261d9aeb779df4ba3ac11696d652ba6ddb46bda3d36e9df47c415b7bd091aaa9beaa5473521db94a55a92bb58302164b1e69baa83d64df5622e8c85c480305857dc290bbebb2374a53c32021d43a55a5544a1356a5a494b27f4b65c1b2594bdc1049b74eb5a93a313a55b3584e1c3739ce26d70de479bd7deaabc60f54bf2a95181bb7596bc1194aca43a5f5b71548ee5e8e0b77ab53a539d170bc17639afc2c9d24762153122e95f45e2e3ebf0f831600336d522f135b953105d52368505df2976f37cb950944b85015ca16d42bba7dea920755277f1dd141b58aeec89c61ca2cd66522dbc7ffe2409bab7b031e2bad3a7950a5f9cbaf0d585ed130ae62c9fedcb67af2b5c0d2ccf0bed7b5741a7aeff63a72b8594941acb281e65ba83aa2d9ea97d64dfaee7f3dc83d6c972f7d723eaf2c31492927cde2288939e7a43569864b741e90b99fae40e9cf511ba1c13a513e1033b2fc089860766486209d2c1f05a32db27c155af0f9fa80bc2ab274b0b33400111111857d52ae44f8a66cb0732779348f761d81e9b79ed46f90851afe9022ccfcc34b028f5f96d800fe9244e08f25f0f8e30791f43941166af65005cf5f58a2720bcec35395627f903217de69e1cfddef14531eb13d9244dd823df7cc48cad6c278d6e1ef8dd0b2977b66a494c7d7531555add2c830e7534ae70455f0a145f71551bd26daad0203cbf7eeeede32e79cf46b6cbacf273df0dfff3b61fff7fff5afe5a7e5d1c18bcbd78a81528e33644cec5151ae3c378ccd5ece5a4e0b966f2ba7f226b859aba2327c1fd7b7de3555a2ca46c3f2b726b7d6edcad075cf4879bcbe4e3a32f52019f617587e8d65ba54441e71117986efb27fb66fbbfd66255dca13fc6c4345757777ea2edbdddd63fde33d675df2cf5331a5f4de6d924129a5747ea5b5d6ee6e7b4627afc0f2bb2a3585ea9f2e9ad2adc05c50d1d5eb12f542f565ce39bb7f4e0d6a06d667f3e151221fdec5dddddef7fcf5be16fdefe5dde6a9f12efdbabb1b87ce2a84fece717917e8f53e807874d43c0f6585a07779f4649c69c2ef1feae565b3855a0d32f85a74ce39674fffec645a35e8eefebc4bffc3def5ae7733956fe98ba71e5976777f9f9452f2e81f0d6a06d667037abd6cb6747713f54f7763a0e2887ee480c1f2c79b01903306cbbfa0ebc95f0bdb59c3af0281aadadf272cbf75dcd8e4685d8a03ebdc68e14b2f557dc1f2bb5a70fc5a76432304cb8f4747cdf374773f2b045f218d10ecc5660bf57ababb011035ce39e7c4c0a3b5e79c73bad082bffa392f32a6419152434dc9a05bd8660b96fdd395524aa9ada00a3e5af809a809cbff1fef71a9d704963fdf660b96ff401454c147ee9a25a8444cda4a6ad4a19911010000007316000020100a07042291204af24cd87514800e588e42684e2c184c2381400cc32086a11808c218880180210a310311536cca0400e0b4affa1b9e0b8cd6ec1b1b0846374e5fe934d1c37994e2261ba160cb11e32b2a6f8fe0243153915c5d7b8d894e7c407a978538aeae271dd75b581468e8c4851a96f8d2c150800c496a817632447c84e29a26c416f80cce650959df1cd15c4f8c2c455c1a142026f1dc7eb5276429bc453900b45c6586c83ae599e7289066810279a0beae5587c6708a7cde100ddb1db221ecdb82e91f466cd9717de937e96f9bdc51c1ff0b9ade91a17e4ca507e8db4669edac8d78b9bbd3b331658a8f22ae371b5ed8d52ea890b903549fdd109492df8d2575f5daad368e7b8f21ae93950399536c51f78aa27aa5b04a359658d5d3886ec8331d56836ecbab82e14dae613bb45031d21e422bd9c2a974522153425c817fad881023b45f68a5959334cf0b412d6608e8d2994d12fefcfcd338674ae517719b4cf1194b1a3dc9e41f0490cc20c35aa99d61c3b15d14ec3d54a8855b8be60e3c69ea6a83df88608e8cc7dc6ee51b429002d06554b38117e5f49fda9d999bb08da3e8540473d213b1aa482aff85305e5b6299e8384900ca171b7518cfbae500256b0fd2ab6be3ea3fbf0ee1bc39142e132eb60acdb569ba1a692614606ff213076514a61f10fdf03988c5f2537e14caf2d29d04d8ed6af7caccbc509830810b8d2bfb366d48facdc86c5bc7aeac4329d784dacfd8b2635c92981e4e57f41536d014cb720e141e743db83db882278ca1e14c2df2a1345b3c5ff881218bb0e63d56b2d4371195717e541acd69178a9c6005c3edaa92400d70751d94ca7a23ec5f40503cae16374086becbd0020457a9b1be1708d238c262ef612381916d369a4a8e08953916a5528d1c6023529b714aeb63a07dde36bfa11de6cf321ca4d053bef0a0f1e7b0b92eca465661acc846f16aa1c00a7562e7e4e4d24458d4c03db7c67738cba454a3efb39b4644500a74b99e8dd8a99e9b42a1e18fba70b31defc6d517322ae06336a894b1d0e0c39a1844d03108428d8e527d1e94bcedd8ceb3d191c9871d408a5b405688c7585a173a4d9efe804ac323a40dde33b8b7bff95bfe6d03aecfdbc386e6003f505129d38b53166a2dc56072be2cdf2d4b4122706c0e0379ca9eb2398c68c5d46d181041b4ece1c2ecf28ee0a467542d751b486f2686eea87703e62b84f1029b4e15b777af2d56508228ef601d3f7378d24c25c6f1e27cef81d39d09c468be33e98978c233c5fae01a5de773036c4d3436ff78670aa0d38d3493b73e0db0b3e5d05568b3a96c594a610ddb32e44713c8460bfc2e36ad4a34102cae09040875cff364697dc02072010c37754f15248a4378cff1dce59ccf02b04e1410dd0e87a18550ba8ac2c6d94b54c2a5c6adb764b4d862ffd9091b7d37a8781fddd1bcdab01cb9fc41fdf2821ab8b959308b5c7811f15c846bd8f2c975d41234b04950285b486c32511b9a122108020dda33e703cb48c1418210bb34ea51558eaa5b656ea152a6402b4fd8109dd01b42e0d110f644bf85ab101870c78f544f2f4303ba75bd9a3e903a90a1bf4c00b05d2545e6eb9742054d6be967a4bb29025401ff8bfb962dfad869e4e894d9092195fe5046d098efac06a462590de4437b8a83e3d089a2e794d57c88922b540836d547a609b0c92e2824d4a60207665f3ec1e265fdb613b514d0822f90734c1c864ec5f92fc693586bcd40b65ad3fe872200f45221b95e094e27f8bfb6258ec16cf65f20b80ffd99adb67ebd4acf7f7d412acd6e34736ac1e198c65329f69f4f10d7816cabc91aeb160e2babd5ff40435fe6d091121741674bbef7a02c4c49df5729e9415c3a3a0b4d66c127e81508d99c0da4bba1ef4fa574c29b277e39849459ce70b36c8dd2e9b8c8df5f233bdefc08056523805bda8a26d6b311944a87b6f56a6ae406e3bc3c76aec40071e21a04b279624fa57afea73606e4cf18fcff620400caf32a986a2285615b9f450fd21067d8872bf98291c4cfdc57778698743f06ed8e1a17901f7a5b4b8c4e8624c8a7088d908a8c8120fed8790bc7e9d6d8cc749ff79f71a0a78710e0b08d86bed01ccac0b3ed1ffe564bab4ea80110eab068a92cb40cf0fd9104eb034f57a29c8b55947d35015a704783bce0a3360195020c0d5876d4bf793ce3ba68334c7131e8d08ea56810bd59b566c73900f61b4908ff2b1f615ee2779ea790092a1abd88f72570fd5881e87f472fa579b803bb0014d83d42a19582b140b44f20c574397c0360652c9ab93cc7e6ff5a48616b2116918385197cb6a00611636444bbaa0dd9460efe0a394476fc267f717e968d300a80c44268e0569dc4de75f3120980b77f1a9093ac4ad083bd625b3b9b2015a9f2269c40e082cc753200252c35cd8ef25368b1e79752640051cffe028807600a6c4b98673e7786a447fbdfb25bb611d63b866009026ee5046486dbf2300acc4452ae79820675a6752816043e98f05d3dc3bda6ef6feab5113b3a351eecc7a3b52c24b67216fcde645523b0af3dc8c774e0947ad9a00ad308b6cc457d6e8528ff48c47f86d5b6bfca5804869c709e163d66ae89c9006f6450df077a1ee1170479200aac72250653042ecb829ed3cd05fa01ae28ede249b00e3faa90262058cf86996aa283bda1489570984492ce80058d1c52e7226936bf659891896d0644b7cfc070971046a51f0c000f8f3d8a479b1e0993bf3602b5a68ffbf0de3c4d1238544a78d0417b65f00f80007b1786cb3e03af5a18993b039c951f67918a5d8a455df99d9df40fc6819c0c7ab318d96a29b798fa44736a8518e641a43ae9da3ec02f72f4c1745ab70a460af115c29dd3cc4ff16e7ceac75f9f89af6d16fb9ffd001d415d65f9d953d86148666acf38b3743111debd5985d38fa088b241606b35c83610a6c5fb5d62bca1c65f6e47f1425eb91672aec85919ad1e648525019567f5daa610e1cdc8d9c84f6ec80518a1f6099861b30e643219576f8942c1ebccc33236e90a1190f8b3f9d119ff2e9e671fc29be973df160ea4b999ff64f37f1666516ba573f40438e1bdc77b2d3ce4068854d3c67218430c574e0cd23a6952691d1be9c793ce1b3ff60df013709ad881f1a7ae0f3beea5f38a160ebe62d893fb6da1cee2912dd4d74f8bfb40c2e168484fff340391460610cbca0467af823da1b3cd4acb408276ef056a1287c09e6b107b15c54fec46998593f6b23abf39798887d83d95340eb50b865ff45abc91b2d1d0940302d1646280323bf83dc896425472249a8188411f80336d5b6020398c02fc5bccdb1c3a852872f89d418981726888ae03608437ff2cf3ac3b4d109163d2b1d4171d643f12e8958d395b3fa6bbe9ee9eb7fb317312df0e01ee15e289c6916fe5139a6346e6c91a658a405689df75ee1e30ee48050378500022eaa78060f6000b2867843b063ecfdd7810ef77a1e9ccf4a61921a1da31cc3bc1cbdfe4cd45a087e873058227e8201303f2e59cb5e05cab7ed691e329006548c167a3e15b578ea057c3bc7b130552a268172530dbc1f1122fd9ead27f531b001e9005c2e2eae32634c7a811fce64c70401b4c10bb34dfac0637af43ba6f8d749986ccb0c3f23a39db4ead6e7ac48a4c616195f86dbf223d8bbc2571c1c52a450427509cf359d8440bd280f9ca1d56153a9cc56fb657b9880d37a1b89004e511848208cfebde5b07c2f3911fb272479f010bc27723a122628e117e0440cb019d4f82d730e41425d0e5e425a9457764efd6e81165c89033f1558ca48dc9c70df8fef95b286391473561fb6a9a21cb1a47757c15b2205586e2849b2c75eac28510eab1ef50d9e19f178beb2178fe0b5a55c3df20fac3295105f44742f0038686f933a18c0022b887ca6822b2b5afd7a0f333639a41f42375ff187c0344a2c861943940c6aa05b1f47f491d4d24b84dff4e0b885c6061a4dfef9a25a9b016523f6a2110a79694678a694936b0fb0e726531a13a7c767649f4821d50ae585613fc81121671df9044b13699a92bfb3ce46beddda4aee53444a7f95d6f945ce9306b792dc5630cf25eaebff9d190b7c9b26535158bc83613db5fe4842fa06fa2606713bc794fcf2b9b8504e70d089de6fd45e694e1e7b57547919b41e5ff5c955f9c8b77c1558609fc58919f3b2da95788739625a49f8f809c6a36d707ef014af719a927c87d14444c2951b157e0a405676dce1a6d37f00fbd7c402c3eee01efd05febe438d4d0bf5220a4abf622ca78ffd26c128d00e60b25916b5122b2fe9be3971ec5cba60bcd1eca6e4e2412de11a18e920089d0bb5b7944b9b457738ef385eb2e8c09560dd711355fbd3de40e967debbe34d8a4cc1a89e1db2076ed3d1a4de118b5e261cd70a9cca299f677055d11a0b4e606e54f88af0c33a3000058a6a4c51f70e88ec26387d71f6b8f776d7fb7d904fea8ace4f0f0c51e20767a62b1119e5bb95181456a048f8046c9da67e3a1e7e34f9f2130b74602e616b337a53db213ab68e7a7c9e068c188411dc76381453f4d498c9e04af9eb28c33a614137a783a192a0365583dc316f1c597e4b1b454448c2807634608f95cf40405ea742034bfa503f6f1c723bd2aeb4802d333b79fc8bbaad78d1854ae31d2f077963c744cc516a9c328357c10d37d0d29a24a86a5ce0733c92570491294609e27725f2ace6c0a1e5d7b317fddf1599f3cd810125a5d2244daa58b36ce58163687a58801da4ca77857193b5a5087528c4be135fe8d2f9e8d580f678426846aa9666e135b5e3ee6fbb32edb97fd5395141466eaf44831627ea6418ad50e62e26286dd3c81bd197df94d91a47b9a8f1ac49714ff1284001f7cfef3d9a6494fb28b598935e903af064121837e682368c621b40ddb66b456d493bf8e27660a1d2ce739d80b145544a0f4c85b9641bdb8642672e52f79c9d1b40408060d5cc17e8c767adfbd7e68703f6eac83bd75c71f62c45b3f082138e9a4c063224f5826fd0bfcf1f46e76fa51581ddc6af0bcac0b9acbb75a18e0ab806443c281956baeee5bd07c9a106865b2ac9e2285b11355562987187edfc39d02f2611ea9076ac270098f5d17c821d05738f58ece2722ff62ac52aa1aa21f2900056f3bf22c76805f0cf87d4ecc113afc7463b7e811f96f2a14e3c21c394cafed4279d337f2271d51837deee30751d3a7c0331870954fa34eaa4b0c85b537d8b35504d13e3d43fe02f3fd4803195d56abe700ca7526f97d6c0302449e2f566b847fa9d8c7e56640e851e2aa5526d8b63bdac3c7bd7ec97c5c44f93634172bcf1ac023531a9fa894b4f9552654d923de6c2b920f87fb2adeabde19429ef39bc4a7c69b3a701a52406a88a7bc4bc504803121949f03bb7d68c08558869f63619451f5cc2dce05dd184eee4087b7a0820c8194119eed224c0c6208638ca97f4f9d7d77c050914e33e60d189f5504f882528525e2f00cb9e21a0b2f676ef500b378d3232580421c9f1f3c4c2cda87667c98fa8b5aa50a19777e1682a8acafd343686ce1fe5dfa3e87ef4e687f03a51459ca25f4e6e48212df3712599396028610f9373ab396a1899c982102d5cc60bdc482abb2a89c4fa10f3cf7486b686d3a03ca1cbb160e7ccf1866fa2d1abbb5db0f0c32d8fca56d8f6433a2e622ea153892344cc95dc7fe043311375bc8ecf54eb0721aeeafe66d56c33f6ad3f38738bf7f7c8a0e59b4b27d06d4463831f86d113b48232ecb6e25592e224cc04787248eb1366b72ffb92ba2d33cf778900407238f23abfa8b47bc11877cccbe93d1da44b90b8e13acfed3671ad26df9e6d9cab7a9decdee6d1712dda068d8643b48f1f8af35e2197b7566c57b2aedb21c1b41c5fe80350693a5388175772de9be485fbdeaf923a80526fede2f41e9f1748369712b69342a5b87a3e9312b61b5c0ccd1535e371beb68e51fcfa6e40e1461bba34355bcbb06d02c8c6fa16eadcc1a6d30c0fa714d1f4612f4459880856cfc1f6783fedca6c530f0c395fdd8c0d07cfb6e6679cf2e6c26dd233dc590a1556c2a3a462bba35bd152a228a36605871016f251356a016dfd6758e55a3c63d1e458aa1d1110fbd338a607e331ccaad834b78d8b4da26f379b7d5dfac810cbb85c2e872153fe77ec2040e488dc62d873c3dc1aa21eb4e4ad9db7047633e65eea60944506c5414209eb6fd58c0f12c40c51713c34f2b0de9ec25c030444a912dd154fa0ecbf1ac529fbba8ed5f1b87965adc368abb5753092a8444ed49a8a4489b1fd4b31b9d42747c5aa4561d03fa26d18921163a25d1ad8ec06379af29c590885f2c4847c8994c05c51c388a1dc7350189bb714eef34eca5ae5556d2bca55836a64974791155fa4116c1ab0276aa600cb0f8161f2d0d2778182a9ff15d58579f602fc1c6fb8b48881b0fbe22124a5211087e9a90008bc8f984afeab6c5df52c5eb442b8061ab444807a1854bdb153bdf7bd1cc8e0056f5c4692a5e9e4a4c7d34247e18748d7f0d479131c5042506a1f948d2b2d4a9cf3fe0f63074ada28ad140d00366ca60f950615e97313007c310a7d97bba29da74fd5f0f72b83448c1554e3793f7ca843349ee866e44ce6db4641979fe5556a3c04d2bfaa39dd3261e3af3298b0ed06c48dbd575b835d0a0f3068d3fcef1c375e41b973adc2e361b386a81ac535378043621d01229ad6027ef5f72521eee7a180601276dea207c22d80e158265e4ea708a09a46509484b86b732525ffb052c09de2011c51e93509cb146243ade571a5d1b0abd37884fbc6ff24ad5d6f7936c6d1d46f0e8d702b54a8fc60ab73a25f9fed857176604d848a1c0db628fcde406dff73316aef530b9371c517105bf2f5b644d70f698b880a19209c37143411cce1563ccc97e04f50e61ff6905dd522ef074e17f336dff6c22945b97c1ee8929831b227a5d610dffafb8fb5fd7c0426816a4cbb0076368317bacc8503bde07b8f056e30698ef93a5b286f1c89f5c9dcfaf2a72f4417b3db4cdb38589aebe00c0115c98fba559a3a8ca668728c885cd1e50abd4496a08a2c4abfe405154c3caa2c7a5a7709ad61c08867c3b1c6f328f1f32c324bd65aeb080b796e7634f1a4565202f2d255758153628e75e55f2d0117ac89085e3ee8188c31082c7fc8c50580081c7c56676fff903bf57182278a78756a6663e5de3f1b3697b972291e5ec416fb3db098fc7a2b8f57293bbebde3edbfa6b65fe09df6ff25de9eef3f6addc24aae7ef31d555623dd7787310d6210a9a4fea13038888daf18c865889d2ba4ae646c2f6abc4bce98898cd841f3cf9ced800d23c3bc50318da60fea96621b6c4d895bfd81c6394f3801cc1260cfad9001896f4669f83a8e32f37b14f36e4df9e8216b6b091bbf50a01f9d003373064138c50142e088e0aede44f4973c2267a07b2ea3339931a1473400aa01e495edd962b50284f57845c17dd2fbc133e799263e380edf0a3e7aa17c1c67d4a69e67360a76a81d4839ee71796708cc62ae4ae02118e12cb0a02ea04c0101ecc91aa7fdf25238e607c1c26cb4aace3089bc40dc7ddafe4c232731947b794421c1baa23ac148adefb274de54a0cb9f13f1f1c036a486ebc1b5384f138bbc21b1ec965eb91ea0228bd48a0216e2634d364bb92e8e7da93b0d0e0ff787dd9fdea9712d44fe440ae36252a51573e8744a5fb75e9a01489c556ec3d18adeebcff7d8f904871562cabc539e17d36950c13d569eb4a4a60506ace67c350bafc98a325c823000a29dc440586dce17eec8aae1894c052ac4dbca42a62886d941d0f56e91046f3b2ece0e0ea459c669728ff082d2c861c60cc57e0679d21a4c3f206a4dfa0e8a440aa55b283a5a899b696331e461a22b123902428ad60375c58c075899930f1c95446a8e43544b06dac8b785bafa365a38937ae837f04537e5b453e10c8a5f007681902373493c0562b97c6b0bbab5456334d61eb0c0b4a63a2a9e1e116429ebfe1d1f741cc98323e7bb97035cf84033e0025a3b40f0171079565161550facd14f02f136e1f272412603d512df4ff17b2fc4d24d3a567d0007b0101790c1e493319ffe58025e227f47022320924575f288ca714dc86ed15674a461522d3fa623d3dc04b7438a960f6fb198b52908ed06aa218da844ae6109f4f4cb1b7232454a21664502d080c015c48cd4fb033ad8d3580d0e5cf7e8c33db0ef917f2ff65833f1f063f87f2ad6dd78e385c491d8613eb691b39fbe40095d4a6275ee39e01af9ba3728f94db8b7d89f6e62d2ebba2de90b1f407ade4ec82bdcb16b050bdb14b837796bd292948eee13814b7b0b97b02a20452c62f4d20b54e674e45f627833239cd3914a0b372c8282abccf94842694f5cafbf2306bb1b1931c1c5a1e2bead6423fa0fa906ef3a25a0a762e20ce50fc3fd2dfb44f56f4a5bc360bc888dc8f1694824c3860b5a7c94c3415d032a60a61ae16bd6a3d59329759f4614264fc00763521eb24388a1ed226596ff49da4b5ba2481383dbc745ddb9b23ad12b3db25d7e9ac2732a655b4224a14299314598d273790e13a4adb94928023ff69d31a58e3f3b651c81ef302a84e95458ba76ca51d2b2074ac02b85b9701e0d5d608608da65ea9780599c3affd47da20fe1e584a7a5930bb9b930f1ccc8636afab46b3a86eb8ea9ac732a41c9b4b6aa4d4ee26e7fa24c502379a0ac31597e32eed889c81a38cbf38b64f9e2fab77be2c69491ecb874f55f13448076733ff1be99d081432fcbdb923f8e8dffe8ea2341680699d3070a80a9ace4b5f75640f739f0cf35243e4637b0f468150331f1e7a981c1624a409b9ecc215683a6337c93b59919a4d313ed532dc6f969c5c512f10764c2897ebd48adbe51d2c472a0b8c2cce564055f42cef4bd0ca7c31f7b8cc89bff48cfc45428eea4db6c8aa6682dea93aaf7dfaafb83344a3613946e02348c0e52b94a67f15b56429426064971a57abb054122b8e22c4e1aa0c575571b57aeaa4c7f2496ac2d5aacb4fd117d16ee6dc0e9caf5c18ce46cf4d981df3e2d28cd00872cba388e38db0563414c0873a6b4acf12d14adc961b655ca4d5386d9fab2fc8b072886244d25dbc48d4289dc0b461af1838990f277e495a390adcd44fc9d368e9f9e74742822a16aa8a9ef0ffd799475fdb24657a0fa20206008bfcca3712142db83346f0f4d414818b451b5a0db6b684cfec91cdf9d14b902b8253fdd5017e7378819ac82e76fc8077ad8f4b83c38aea13634ba39a394dd794f616a98c41b3574dc1b7008283ad05cd6534df76cba43be3ef6bb9de5a40397fb2afd1969ae9989426d6e096ca9eb6e806f5177a7a7e9a1d3b89bf8733c5e6651b6ad208fe0dc795a56f566cd9efde076d2771a0830a422e4a8f08981393b1fafd221b1a9dcc8b8c6c77f7d4c3cd13a43935b9b2b41cc40855f705f27a7edcec763017efbd99f0319334d59a4ce7e1d0f65a1f67a2e358f62ba2c78b2e082b2c39c34c2cdf0a3cbb84c5de6fe7ca34b9f6f4fc547afa8f1a64c6e0ebf46a1457fb78e454be5d72125d2c951c69e552dd7e6df0ddd1fbfcda0860065c5bd9081e826922ce268a5bf03fa90fe107fb02d2babb183295626faca2b95801ce5a3a1118befacc436058dcf1736d492c665f0430bb1a3c5a0369ecc3d8e1482858431f8d917840cb66b131375e9a9e05293eef68d992854be5662d0bc76ca84593827cd27cd137d8e749f3b112d7b6b14a225c083b6af646645d15f79dc38298ad92260415bffc63a8289f1175783120b9ab33731ce8f149f16c31c58c440575fcf2298e80e085f400106d518df17a20b0e742f3ebcc7b010f499bf33c13137feabb92e701a9e658e29c1da44ae7f9deedbedd8b669c7b5efba8068555dc647cb8467ae6f403219c1a6c32d86fd90c10536f5967463c454da2ee48d51298b9bfcfea993b2c153d8c7b5c48d75a9a356f85c7d646f243a5d65cb13733c05e2382803fccd3ba4b53971740a60c53b25adfeb4042a6a9cb0db4f7dabc626cf77e13e7f07d60fb6bcbaa075d06df3bc486dedd4b024b63d5a30605d3500ff9335bb558da9b4edfd868c0de37f6f41dd3394068b543f03b92c956acc6997d0ab77bce6555b86ecd3f03ca2e10ab72d3a46cdb332e22747c163d07e474c1f4815f1254e1ebdf2346aa30f8d42f3b52e025532d217b2cf73331a62354842c9eed401d2bf8aa9dec8af26fd25249168ad330cf76a6887ab0aa9a45c2764b90751470f885e4baef9ee29cd3e08cfcdc5f4d598ad9688be43a0dbd24a5b1549661ce052ee401b382a8427eefafa72cd56cb44772af2bc764297c2ac1cd46db2717bdcc4c6b1769972f6baddac3e36257091624df6c1ec2c16c4e94459539d3113b60407fc7c695189120218a027a4a0d86aef1b26a0f220b44183e639810cc0d80ce7dd2be6fdf90a732e8039d107aa0ede552443061796b713290374047ab9aefb675908673e8ae7d74817cd4bf4b8a9cdba750348b41141b03b4ae0b77b1a6433974f1a6ba8ab625d43a1425b40cbb5d25da10ceaf8e236d5b8fc30caaa7bee4bd0374ea0c62fb17229043a14beaeb4dab90ff9cbf6a423e0d100e573d3a45baafc79dbac12592decd2c0b59396ccfd0eb87c31e6f1104e29a02f225cf50f1e9b887abbbbaf8f430b225480b5feed6a252f72adae03e7d758c29255f9b2f81f0c5636c17b300c3e8ebe53a780849893f07afe4ec8f31ede2c61dddec162571f97558450f3ea463f8a474840c62708868c6725a10224589c640ddd5d781c88b291e3bd642aa31fc4d1c3184b116e495c8eafffeba2ef6ed70b411996bc2f262dfeaae8f537713c66fec8ec8c0221ac26299f9f5632770c51599fe58a52afb4a98ffc64167e3e0efa836788aa8865b14a5e3e4054dc7d34b6dc5823091b2f792f3384011a6319aeb16897875f011ab69d234c32419c87036ed2f4d6195d0e22e6c238f43b9770af290abe1ec511182148aca2d5232abe59b06e71c16e856970ac2ded1a32ceb458c8f05e2ac2af518460dd7c4efd0c1efa57a2bb3779912bf40ef849e1821685b5549cda97667e7572fe8d33a1ad2f74a61398cb11ae118c972cbeed4504454dbe8070c1d7473f8e1aeed22e6108004f2cc00b8780269dfab42a5327d22e6e6fd5d4b28613eb8888127145ba05967c76187c986156454d7df1e2807525e7c60164aec76415948000d82483954ac12383b0de84ccca9ecf2e0eda2295d4feecd6f486dac7a0254ec30b09e1357b4b70d34c4833c4f903243f9e78621dcac6040a63c21b5320e80f54282a8c5a27392c5fad31f400bef11920846e1bbfbae6c611303ceb82970857c2d61587b2ad5ef0c4ce59713207f71cda500262ec790b915ed710ae3cb1af3639a33b713091fcd34154519c4461ef7d0945d3ebdaf465eb860d303a278843df7c956765a83955aef2a7be8236341b6a47a053782f3f5bb2d6d01edd148d0b3d2ff6db08394291fefa602664c9387c8f7355ad06d494ace2e30a4f101fe5f9a7a33d46c5a858316f96267c580267af09230f3f2464a4dd8cbf5b2889f36bb6a36073a46c3172c868606302d172a866cf344808bcf1396dcd4ad44d324227ac792b0a8e22648aae28c2c0f0f5a7e90302bb077ef05b4f89fcbd9bec664cd3ab69fcb1c84912bd4a514e8bb54f91f41f129cadbfdd5781d18d1e78b1e07019671dfc79be4207841d05aab6bd164cddbd23eae8a11a9755d9130718d452acf28b4347610abb97b6cd8655b16428dcf9bcf66395a36f3432c552fa457bd622d2247d3c0dc02de93b0539076d302ce8df3aa69b85ed0cb919fa74d59e6c303738435a1805ecf68082bca96eda155134cb08a50eb08cccbdae22102210c5dbd52e9359e8933fe15db9fc0a96b7fbd89e0c13419200a31a8315f160f6f2caf188593138d51a97a707a768827ff1436d043b18b9ac8112c334c61ae15268e0ccd2e5bb1726eb51adb1993e649ebb2f893d0dacebd03e4fb1dd3e3138719e872578fa24f3793bfa5ae7412a818058e7d89e56987af4ddf114778c5a603f828ffa2ed1f217c2c3335b4c82be4a9e18380923291552c7cbbcf62833a52c0da21c55dab3ac257e755000fe9ac82f83e9946a73433abd2b3770490804ea16debac5fc103ea8887e23b4a3e134057014d875bfbca1b7f1ad7ff9b52c1292678e8fa7b447c519c37e73a637de679804ab0249c1c51f752fd83b1f501321780c9305def4f5113c0258494f29a400c01f1c515d4b94385b6a7528ceafd7bd16d1f35f35e8310fab7884a0864df6ab3645344165e77eb711bb2171135bfc8e61c745a032dc22fa0f064b8f98312454677ffbc693dd10b8b5cf90f8b5eee8d305e72c789dc15bb701b08494e75d52236804fbf746ee071d6c3ff5775d43db994e1b915ee76ad5b257e35faa962fbdbe214a5b5461b846c932bc891efbfe01cc3e41c838912c7ada3852e787f758f3cbc8e9788375c3a8ed42f207a6d64359036c9f45d6dde291fed17136cb50197a533a9c2edbc3901898cd197f7cf59c8f729560eb2e53b4295601a00114b7297c0e4825f69c500859130d9d43164f9cb334497ee5d870e8c47d7a76405c71c384277d08a47c37737bf676c08dc76ef23966b24b7fa1fe3354db651b905bdac1957299c51a99344ab1324d33761d00e337e70c382d0d2319f5705d5c15f8aef9557ea2172799363b123bb780466aaa35eb1dcb2d832ee052fd411313dc413fdb4d2f2b205ed8489e29d0333f27854a1a4f654314a6c68eeaed51a35a9bbd6730c2b51938a202dea3c3d1c3237f0dfcdf65411afb0ebc9ecb295bf54f1752f9e5c215a2ae550e2b070f93ad87be9a0c92faf8455f4fe949873a6e039f5df62db535e699b2f4104e28638db3b61eb133deed8519ca368e8146414c586c28d85dae0e18e7e8437a61ae978d81d28ecbd21f0b2e28f6a5877d3b8b8f7ef25a08b86cb0e3402664aa79321f070ba39acca403ea36ee28cf696298308f9648f2f0786272c9e52445f2ab069c9f18aaf8df249393a446ae88fee71a636875d167ffcc13ff58eacb8bf8b648bdc25f446d467f0e147116fe0d63c5538230cff037785d11400068e862598fd3c0a1048ba674c92e8a2a9c8da6ef0593a76f53c05c087113b4735a9e5de5864ab930c77dd51adc18718ec8f400fb65bb11c176431122449fa1f5f8adb0864c4bcd0ce9f0b5f91c41ec3b2cd250b795501568be40269e38bc479b94e2a8efb5ab72ad61f7efdbccdd55ee4b463a573e72b1d1f9af3ab77f3054c95b472e4ebffd7c92555b528b35f302540107eb2384d26908d9f5063e101cdf7d5da6fcb5470961e41003287335f381644373cce10bd5d28d35fb938c98fd70c29e6d3100f3363ff66427f75b27f6959f55dc0dd401ad02e9553daac0048c4a3d1fd752c83b9a028a2f058a0192da2225e80c6a0020cb48f777b6cfd9577aeaa9e2d898c9358e06d2929ad28b1546cd0ca12074da1830684afd877f1a08a587a418456cd1fa1a9808406b284f612135acf7f42e3b01510251da919089d0a6d849c5d06ca51eaefd941bf509b48387f87761c955acba5cd302000631f9dda2f02cfdc108f4cf56f7a3688eda63923564db572bede5f6a5dedd016929b386b6caa3f6104ea3021532570b1a4c2bac78c54c51b3b6856a0c29abad375812c21bc5384e7687f26f57fa5527c04dfa04974d29c51d4b1d6005ba92d587338542dadbb74b1ccc0e752699fe2463d96408a1eb6848da734038a5496400293f031de1c7344e10e123199d0c41f3783a8ba5e152ae2d822553ff1cf54c77a35c3697af3b8c5264918511c2a77a75f9e7f72f3d17e274a1b53e1013aa5ce69ab40122a9ee0de9853bf91324d362f552f29014386c4cb385228eb86b238b98f1be9f5d3240817b64e817f2c3fcd6819b17d59b106775091124a4a20228a14190a8e2933d9c9238d01fe1a8e269422c2bf06a5ec928462c97cdd0a24eb49e1f40f0d803c29568871be7f27a5a1c504b9a233934b84972125be1952389bb7cf412c6bec7576fb49d2fd9af815df29c33da92204528c79f3db6644f24b2079f4deec57982a764acf1e1d4f23273dc5b6fcf567596141c4625388c164f4d3750aa0f0574c2f40dd37bbcba27c9d4c2eb0cf021eff7659f7d1091fc741c8e04f6b9975d416a2fee733466eb44ac531833fec085f165396208f40b569eecdc5d10b046eac7c79cda19629af1a008476782a4947cdcd19fc952988de1f4945bfc4d8e4a19d28b15265f09fcb652e0c25c6a2edb74a06c498ff238001552c9bdf2d69c3ffd6a90258549a9f8e940bdf5b836f22d73f54acdddeaf31a71da9e183888e98cc32f8e7363a0c41478fb86404b87fa4907b937803f99b1993d20cfe03b76b6bc677b6e5502e59b911ae078573f7213f866f65fdfc054343c21c6c319957fd7d085cd032f933cdb8f1a8bb826c8eb1093072fabbf226f43d28263f223551d43ab6f7f8e87e31ff876f4b0ce60f006c34f855fadd92efdda611a9fd8bec14de637b529f7279163827e59d9bf6dea24d78a37e7d9c74c5a2c26d4dc0d64e6109947112061d2920193255b449f9849a18d7b65bbacaa465865e707152fdc0b8a4a04c27cfd3313ecc01f2ff36586ef05070cc12f61fb3a31b1c7c6fa336e9bc18888fb0a8b6e263076cb3b806898f3962ce11ec51ff8f5c8c3af99cdc84548534cd7a1057ec5f42f2ebf63f3cc16bccde923a0814816cf0fa5045fb3428fd2abe2f49759ecd9ca828552cee1b38b8b7f0e2f9dd3813b1b6c0942bd6b454c3a22a2d116005a0ff46f63cc0c5ca52b9df872fa5dbf289d2dc5bf031b8ffa800c5d7945b0f64ccf798b062f7b2bfb669a13928fc29120dc0736184d28b5055199aa1284935cf818ed3cb1b559a73d857c644997ec0debc4fed523161be341ec8bedb43fcc0dc3fe7e2e304d35ec5e35b1d3c0676cd55b25984446fa30cc769798104848d68c6f67274c9cd659836e8c78a3be8b3858bdce09a47916c63c61bb0324e30cc8d0384f7a58b4c9fd4180a9b1cbf3466239a39f3bb475790d51a3bc818506ed6a5b1f0a4779b1608d4ebcce1c43ab25754f7a946a6bb28770e95f693d720ac9d222a8b7e17c1432d6ef8ca5c8f0d8e0e4847e9b6ed79e916f12147cb4e53791b4aab1af7668b7616c6610f88f4c98709c316007ce8770c4ddce5eee867cba5ccb98857e0fa4d8ce0feefc14cfb4407e1396e5cfa9b5907472f4092844b0eddf58d5449c274e46e0a902ee5de8311f79f30b2598e9bc943805509e4cfbb3b1098fb7e3c3db89d45d3efec47b2f952b5f50c84a30e2dbd56b605ad6afea38009f5b56bc3e435e70a09e6c56f050a3ebbdca0be85497a6945566235f6c481c5795728256a8d1adc8ec43f943e9c3fc169088c48c47251132aa3a64c091e16cc4e3728d382086a5cbdadca8c01646500209efaa17a7f9fc1a00fbbcd23946c978505e72be7a9b0b4a09422c12393c196a4110d3463aa893ada51060cf6c82625ee07915abe1c280b41e1cd01128b4d34665b6ff3f7f03d93db956818f14cbacc919f6f653907e8763a966c46eb1a124b9c248beb03c5af9b736e8bc5430d07324932b23980307415445c634394cfbe896cdf5f1128761f926c852e999122d18cace0072dc82d97d14ea5b9476bd3c273ad63a99f0a25d3fb1ca5335a8970104ada964bc40206ada5388d15c5a73f92b41952a45824079708fe0823932746b4041d2b34a8255441e3df897d1fae722c0bf0483f73d5185730df9fa388c650c04b4f110cd52d21648e32ea4a204351bc2ecd196e5d5e8ef682b79b6b3032f5579d4048be749d089fc5772e0de49a768148b156469bfe02255e05797728208cc79aacd4e8a982008a1b156f80645f26e0e04ced996667cd4659aee76caa317378812edc87ba6bb5342fc10a68ddf102f6fc562b964895f3e971be7ef8fbf42bd65a2316b10c9bb90a8b3dd011f6d9ebb1d91d3988d6981195bbc6b9afc88728ad2c01d6b9a1a0fa119ec417de788cafefe5ea945367b2a239dc4de2c855353e96dc191b5728e1c695638cf00a580029707c063a5ed79940a022e15631d78efb0077b41818980b02292d6472ad3c05fe636356f01ac337777ebe7e87256823047b2b63b1e1cb32172e03d6a87faba955188f7a38ed47be44346e1a3d30ad5f491965947e7d72f0bba059dbba1f93eb920220bdc2cfb6a3e93198e6a2c355345e0ff3330b192aff9e3e853811acb67ea3a8d096ea35e88076a5564a6ad9f5d6772307f4695f528214501d234484918a4e5b222ba15e57b29754f49c2e722c9a7a432a3e9fc985e9fe8b406249466e649feb93681a13de4edd70ab0492bb4e12d6e410cbc6566fbd5d2b2bdd23e883c21237fab4bac27fab8b9b568f31ff8b15c1de1592790c6d6643d3581fe6c81354d6d6cb497a9cdd90cb8eadb0b65abc5d701d0a811426c218db2afc411fec4a0b000436fb02b13b9529bf3adb97f6981b30fa6f38abe9ae4bb46d84acc476b2e83b46b91718ebf7d52cfbf30000e3fcfc73d246f0989bcbbd5b7d3256c167ca0a2b6f72663cdba58e39cb00fcf8899ac20bfd7f8445e229fb3add7eb381ce596c347c87aa4b97d1ed66fd5c96238f864d7019f4c20aeb7411ea5263b282645d58319815b96ad97863bf345213add37c2f9623a8097cde129c8ff4ab71d9fe1b8a0d06358bba266aa28d5a56c54d81a3549a0ef79a288021b8c0a287547b762b2ec72c2aae733643575cb96992c04e28f5c6e9800fde46c719b655832d6bedafb82da5602f5a834f65367c0f8279cca8fe897951c9308756129528f9a944114df7ab6be4bfc0b69865239c8fa332af53fb906a1fe268f404005c08e90122485c37835fd8afa7ae8772f26db17be81c3098818306197cc0e041e778bbf4d3fed8a2058468df07f22d640e688071003206468ae40641283d670f9ff349e8e489be351759435008cf2d9d7759b7e7f6972f113c9fb06a40e62981822fcf70935e059282a2cd5a469f31da1a08e110f43c48fceaffa91ac8beb37b27d82de80d0e27cc832c34170dd4c25cc82e436c0a2bc88f7015dba9164ec24900dc7fb28770e0912440de7dda8bf4708844005c7cde19249fb97356f366bf12b48718e0c01853dd99516af4655cdbc36c45c88ede4573948c3a8c20709f2192484395794b96470e63338fba2b1b14e1fccdd4ecd5c004fec8b404e109acc770ff7fc6a04283951f77d364538d087aa5c5b4e9031c7ba0243122fc528319671753e926ca0b1e254e6d0728d61ee26782c8fddfca19cd3b7d4b181b071f1e6214f0e2758fe3529e899af85b67595714590e217b12798833cc8df24e3f6b8760d080c0287f2f66327b6cc487cbe277014f410ee12eca2d67493f59599f28a35793de9b527ede0c3275c4e3600182e821dca594da2dc2ccc80bfe76ba27b2f32d256195c0a043c0af66905742ef42b132f8d1667ea1647f3392b6bf7d5d1b32648e38be652fd0fc25e7200714c817c40cc31848886375a79afbde3a79b572f8267c90dbd8594e27329d1f240eeaffd588b380a3de29a56657657bb011fc55b97801ea919de502b2e05898cb1b121bb85c04d89876bdac473c74f0590d3956a6f319ca82775ad88d69763d3ca87be68a916ead8a624eb5033f3301903ae4118795089d40840501e8fa29c01ccf4b3218055c3632000da8516e39f823c824f9935881a1240ad9ba4b6fce7509a0231fb26b032509d04342ed9fe73de813ebb2730e9f2182b3261300873dfd43412f584f0143963f8a73f407320d73299b5ceed9998965bfa3c8399a951878eed8f1880d7b3ad89a1c34f51858c00ee8c4f6a1f7308f575726e3d823c8ad1cd1e168028ac419b89497c34f280790f7923f3e0fbc5184b790f88b3fb646b87289206be980f5b8bb63d35142b6982c7fa20f7ab4e34195e011a0113453b919e17a6e180694798c4804e0fe93fc2c7d20161da05e0c11d41c882000d71f9c144f99197ab2906c7c9f1d264aa9aa924eb419b465ce8c73c5ecab043051ecea9dc147c7b2677b86f9f7f9623d86623a4cb36ea9f40556b6c62983a548eafe8d72d88942faaa90d469680e6480a53c3fc40a160e00936c7e214378b7b2c4c2e22e7410fe5296b09d05e0dde7c83186e85d86cf86561c23443dcf393bb7a74235561a856819df134ab8fa2b53943ab9f7db88bea0c5752ea1cfed69f11970a02d37fe40cef0eeca80ef4ca6f0906964bbbc841d9762c977851f7461fad7d9dbe12b6646244ace47e39f1a40f592db4b6f1ffc0cf656567c4bae2383600c754f0aea506d158c6629d616f37f267baf7680649a9c54a5663a26370c5257ed75d5032f9ca3a2c0b3c9d90cfca4bc74c2108de6d10c5d55da6e52f2b52d6e9f375c23b23567a87a03a951f58f9d696475922f1ec5329e07ad31a9d7a6ce6aaad7ca423036e74b13c517cff3608494401c0a48378a4fe7132eedf7ea6c838cf2dec7638c200d7f8bc3be4082c49819f47708b3b4072c7aa17522a30e1d5ac6f6a3605ddc1f09dd09f8806006a8d3cf8fbc50b73eb91d632eee4ebc2a28bd2e1265d58076530c805d0368ac07aa756db5a57212d5a54bf03a9d9a60cd644d6a984c9e89e7f8ed588288dc4717d05ab78f2f8fcb01cd8b55206447654a5e3ec1b72fd4dc8699d14375fe0da098a9622c0160efb78200ff98020bf38a3229b607fa4a97da6af58420cb0d102ec755f2be131bf6ea0ae2323cf654a0926a648802f5110ceb619f42c967b3ec53026f28b6c16f69282d4a8208a9aac607bc9cc008d479ff094716d1b1b824f4f83521dc588bda7e0affc3823fae1249fc747ee984b75d84872df7788600462f6f1710a746dfd48f103d7bcccea8e637dd253e0b651decedbf793403dcb7f445a9af7ee0873cc3f4a5f39d7c89e2fec0ee9ae0d2fee162abb22ac634fdd456826a1757e189022ac906d8d5a3de48b784f7330cb1a902a8436c471768b18ffea909ebffd92838552f7ebd505c9c4111786c43b5fe1f2dc8c1aa9dbd7d1adbb5c2419e3f10ce479d05d040791a16bae4915ff0e0cf7e68e28b51d7815189064efd0fe0a8a1e5f4295a50f2ca7d303288c6094931327423ec519d9a57dbf07b83540ad7a60141481110b460728d938ee308d9f6cd361ab83d7245e5efd20ab3eafe8be76c63ecff0722c2af78c6d404f97f74554da1bf21e661eaf74a567596a7f6edc3e2d79cb14672805864e4ae3513e9673d867ea673aae0306979e13b7cf91c3f27301fde3629441b9c62fa03e672976b52f12c47f6b83ca8a4006b8f9f18b991ed6590dfa0ff38a44adaed6c6394ce00d19c1b7badc8276d052c4328e318e1b8a2ba7016e16823ecb082f0d93ff8e5f37488605824403e5410d8e3ec5297de4658c2fa189752eabe7ba650e4bb9b46f1ba8c07091b11752ece618b870d70c3b33c26a142398380189e170e25c666502311c2fc5696a7ab27c09d10287eed50042f30f8f24752e3790233a2fb1af5663c717e616f97527f8840cffc4d32625fcedfaad2aecda0b8a032ce1bba2e27696d9998a18ea26c29ef2a3d5f6938164bc3090e683b34014f4f3fb53d0ec904a84726816b9900d00fccabb90968ab08d37044259b7f5b1a7cbfee85717183c059aadb4e1270184980d06a5bd5d1852dc74a16d642bb0bade57b01392a7959297edbc627797723755783db7f85966b2f838758bc2205f570072aa72429a955eabcada518d86e64a748698da11ae713f86ced659e69879e21b96ac1528e1ff59be4464d4d13a8ac42e4cb981595b8e54cf8783961603e6cc60e52f1557d46b78752b5bef8628c43a476ef0cf87930d63e33702e43e50d0c8eb55e9a79b033a03affc4a1e4059a6ab371770d87c533763d4b98bbdb0cf8d0046dbedd0fb4b31b06a11106ab752b4405e373604e54c1f87ad81054643ccee25d64f7fc75d08acf681dd77cb41ee79cbe8cdf988e43cf41ca17573f58ab4d1fdecbdb8ab7c8e212cec136f492efd1acb2bede8e263a450f16b30cc1ed69b9becb960443c963ea5343109fa0e069e24048f5751eaaae7437b6a31a7d1a4bfcd9a7756ffd23f58a11ccff4b8e603453593a925ff53c5a6a493537a16e24f050f662919ffbac08a0a7b8d5bf9821b4d89e420aa376f0ba1606c98bcb2a44c2229705782fc6c5bc8bf922de75ba9844c0108a057817e3a2bc1401d45a5c90a43002314c9bc5ecc98d6a7920ac92782fe645860f9f77e29368e1487f1c51728358d8c01e56c5b72998bd76f6f15679c99058faebfc8d87a7a7778481ca0162ca9a031a84e01b5ba4de5cbea0d922a9c5c39996d3032e78e2d062cc8887d4ecc673d79a5a3f949b07765248f45144cf1875a8038bf5d8453456bc4a4a627e98be5bded0309901de61df47d299a9e275b3cd86905973fee20edceaa5d3e0c3216d86a1e4c1c5cfd2dc184f01c27f08c7d30dce6a437ee3dc067cb7bda01ef4d01193694d440bc193da495875e10accb601baef6fa150bd96798441d90aecbd2fa32748c7561d471dd07afecd2e12136698d28bb7346222a9bc791f03f263ebf791c787e4660639b666f20aee95c6a2fcb1081eeb3bf41a77749a23ac99e387a694a2ea5492a8e5cebdfe8bd5a16d6b9e5dd04767558aeb03a8eb7a17f4a35df2f1413736dfcdb3f31f46144319699baf344541b55cc5e3d8d3b2a7cc37a486136b2aba208a0ef3e5763f6252d454c99d1746119a858b6e536cf13986fc08010c91116bf9ca6faec40430c7aa49ceabff90face9a7eaaf6447755bf1627dc653e3e82492c645bde8ff2b7373101f40883e83ec645eca85ae8e3c83fec20e480e1088cf0555454b5ea99973d3fab233966b7d7daf161004cd72941f3b632d6dac9d05a4e3c4aa6b99f3114451e3e67940076ab7b8688141b68702d2939b6ea77b0e7c6346d59dded5eb7e6bc9702212807f5022df654441ac271c583182d19aae92236adf236cb3b24c2483edf29af5369fab16afba542a948b4f9be86cded76a214d17cf8bfdbad06138d11050afdf48f1599ff86b236dfb5bc6ba12593161a9d2031a21a91b750e22aca860b4da756d9eca29c54b08e095cb69abd9b25f3183532bf4d7d6fc46cdd3630a2c5359d08ebbe67815a701f6904403addc41c8c790b4548c6ab32668ab40767bb1e300f6b8424484e2494ca9f209fc68227655e9584ccf429c1bcfd6d013c21bbabb812ce88eca0c064b7161bbe9c254050a7e56321f538d9f994864feeeac64de83fc8e78dd94b96fffc15f890539a980dc77048c9871162c39048b42f656b9fc642198f755226f0087f899a5ad91b1bbf6311b7bbfc88dc728f39a9e333c7c67bd4f5591d1c01675ef9ab482b967cc2121f049b4eaf04e7bafdf7f045576e420c02fc85d38aae04e5678bc3b7528f7054a8b66662e4ec436e21b9256d5b72b00c18b56afbdad805367864ae41b1ec74314b772b8956ca4bd840998ba7ee0ffd237063f04db9c958a2eeac486dd29f1c65fc021838a6052211ca37e482e41cc9b2bf8e2411cd54b87c51dd90d6cce9d1635181128645ef7aa3a99710bb577d59cb140a61bdcd92fefdc3b0ca24318083ba10184579a74856a6a0b9a5f98a773abb1f0822852d234a82efe02d346b7dd234d5c992dc1237af209e1cdb96cd3838f3cd69f17e43658c84a367bf809cb4bc1185cb0253b2553154e38f22eba617f576301ec41e5c6cad2d78717c6c4973eed6198362e2a58343b270a10b4dfa5e28012c5df7c6e067d6b2710823cf8e5e01146a02ea8851525c3050ba9a0e1ad4955564e70a756e9e8a0cb36ebd91c6b27508bf7811da268d8c8154e34d2dec3eb33862444c4207a350a10a2818c2dac136d42ebccbc4df994e2aae0c8bcf73dd614ded7badbec163c8c4629bdcddb6945b4a99920c0a0507051e05b91f0bb970707af480e1c81f5cd840421a48a981b00d0de4c335a78f1ed46314d137361ba5818e9628f31c2fba60d9f6346bb2a90406131f013246ea20f9ac64be22b01401f9a44297144a20c1d689a2288a08400273116171e850decbd7116fd96cb6caddfc0a9bcdc6ea06c1984e942ea5eb92309b48641e4962b3b55213e6ab6d42b6166aa1a7a4ea8496948718dd8bc8977da2842b6dc885d2fb47a87f847eb01713807e6c361bd0cf131add2126e380b232c7e4a505b7ff1b3cc4bf29eefd4609f3c585b0190e9359482c309084040a833dec61b01bb541120a540601441e2e7ab74b86a28b1ed3893374e8d32bc4b1172147d86c36182501a5b5ceb861a5998e5a4af944a65cd566c232a7ede4cef7320926da2a67f36c2919ca36a960c235e49e3697898b2a264c039e018f0043c1417dc444d6d078911201cb8045903b26312a1bdf32954c8d18586456346666e018f01319343c9858c9318fe251300c3804f8050c8441809d601744b003c590c96cf9cba31acc75b4e5e8680cc23fd7eb69c32d4c813f809b60d997306efc864c7830f192398ff10210a39c2fd4673b7b29ed464a4156f69ee7ba17e1c3142219cc757a0edd3b45998f1ce5a37c948ff2513eca3e1349da280a5ca20f91a2100e0912b91493524080d296cd62b158ac2142c4a724d8a1bbbbbb7d685dc7f120e7ab7beff59d609c2ef088b7fc3def99df83ea6ebd15898b478a5016acbb173e388c95cb5269970506a11946397f8acf62e52c9952faf3753f3febffe7c77e9485d1df2398afa64d25f3d54bdef2ff775abe2d2d3588bb64e7debf8de6cb1e79cbbf455b93dca193ce39fb36bf8012347b4e19fc5e8ee36afff831bf7f68f1ff4f8f3c79a37ffa490371c95404631eab78ab85788c7e637417a292632d040c1a064d2ba22d9bde42b216a250a040a79cd7a59cab6ce48b6164cd903dc3f1380377c9fdb119a34f218fe53a1de6e2455c5ae9128fd0174243d89c13ca0b3e1e0846daedb36fdf392957b949e9bd1c57b94929fd89c2fd2577ac1cb529d4915ab7955a0759b0cd5d69395fd46789b74ceeccef81742e99e682942f168b4a8ef160edd8217724f76d43d9abeffb58dfe704a5d57259fe8cf22de7abd5af564afc2077aef9f25a60b17226325bce1119631d18b9f0d63a29077663e72c3e91f9bad766bb19951091fb5d5b7210754833d582872eb97f105d54e5605aa9554699412ae3f7838fcbb7e50323f77f3ef07a10479a519435345f7c52523cece0fbe2f32266368aa8189509eecd99c5722da19229c1281f15c30899950eab992833397c5d8020e7cbde30cab7202b7f3db041060964cca861460639269f72e4a0e1e322f7cbef96fbbf2d3e1e7c5a7c597c5800e089147700001c1f0ca36a0a1c21f8aec8fd3eb41610959fd367c557c547c5d7946d6e3e30cabf91ff69f1f1fa13a5f869c1f97c68315b3edb8703afbbe283c2fba0f03a2729a55cf2754e366b6766603018ac1b225ff7fd863eb3c398b462944cf20672092cb79efd0de59cdd684060dd1f020b225f5d17fa1431f389225f10962ee8e339fe2c798b31b3a261c5a0098166265cc9d81064dcaebb342d77e44a66068def06aea4961fd19c06a3c9a8b00130b05a39cd8dbce6479ee43788c934806262481fea985ce6401ee4331fa234c3d4b07154838121f60d64c59031d2255ff5534f7f02912dff21948eb031e134e2a06f120c6fb421ec096fc49f8def7b94d75d8be238fcd9565b74578ea359acb5b67ecfef6aebf7acd5da098496762f49c1d14a29a534a431015570f5de7b6fed0671e6199d7745d63fa5d41b27b802516377bf4e5408fb21c58ff15aeac91fe30be63f9af8c171dd5dc26b77ebeda8e8ae8481b19672967294724eaff85fa9a51cadb304b54e4129e598ea1494d25a99b83a27d30c449f969b9c6db29c1259cb94382951c289ff360b035ecde7e8773d4a5797524a69ad934e6fe4402a41d478c1a1ee2d3804f43cdd574a695db90ec77d0e72cb4abbd1b9efc55aad56abd50a575a130d48125da7abdda854c20224b5a196ab01a9c41720753050c27cb50d526682962d53325f2d6b9912d76959cb3420c1105fcbd370ceaf959b715000e1e33e3e3eb72e7c984244ebd3eddecc7a51748d39cba7bc24e75aaee55aaee55ace4e3e341f9a0feda7e06ed3ec81898949c8f319266cbaa638ff36115113dd9ae8d644b726ba35d1ad896e49b639f485fa926da989d27943019420796b0c9452ca51a539bf5417eefda8a44d279db2e9f419ae59831726ed584b0d43e5eca5bfc39c93668e4e1be69c94b37406fd20d749ab2b294992a424ac98ab84a49f4360d02a45e5ac1445db81ff3ef8c28b2e7a80535da46032173795cc0f32ab24563348ccd0d08000c2163142e0782063060d241a35906a602d7016180bbc037c0576c256e0c89143a47449ac42c70e494593161d6471e1e0f4c036f4e86e6c830f1f3d54417d3327ad735290b272962c7e969f73063a5aa2cc290c2ed72585124810455114118004e68a0157a9f0a62c59b2b0b420e24818b549972c59b2c829748871dae5092dbaa8800aedc2444b2965df2e573a3bb3a094fa4727d5a288ab0511dcb51dcaebb2d8982e0f26748a1c2c4911c5173850b2d6da25ecbdf676ddb54b58db6d84b5dd5aacedd672036bb3d8c0da6e2ad6765381e209279a602269097bafbd1d0ad55d3b674fa144b714492021816b808fb0b65b8bb5dd5abadbda6e2d317ebc0f5f5487ba947663f3e02cfe7b2e3fc2872944f945263a2b05048e1461b1582cd61021e2e760bb6a6fed3c8a3bf5614c5314a37eb0372e369bad2593139cbd4f5b78b1d96c3f8012e4250a19fc5e262f4958a15ea290dddd5236f5a2c30b487093d2ee4929ed9e94f6a4b49bab5ce5eae56abd94a3d34eebb35a6b91a89c05e3369392647202e57db6bb5e3016a64e4acbd159b1119806f80a2e0213e1051e02d76650028b172f7806f7dab00ca64cc131c0426018e01760176023dc829e3d6d388839a7c02cc0457805580538055ebccc39bdc478b9990b73be281ee4273a5ae2a475caa64f9fab951e35162d7bc5e0a849929280e6ab7e47e91c3a07b9234719ed9964beeecdf95f26bdaca1b9e59e4e45d05db75c6d3abd06f6724c28a68ec95aae22a14db306262626168d76777727d3610ce612a564325b3c4085e1962db52d394c4abf502626264aa7123194fb69a7924a39e5942cd61fa0fa0df17fccd78dfffbf70b189452ca51a539610f7bd897da44acb28a544a2a69d34997a60bf9e2834999982a125f1a22ca9c93668ece9c6fdcf81b63cc860db9935972c7d2d939af96aebd73c55aba71637c89376eac72fe6997e7f99a2f9ff55c68824d66423331e5d964b6cfa3d56a15ae9ac8f3fb63ab0ec26940d07a5552d8af1be2081c9c9628e21fb0155c0553c13ee0148e12ac81941a48d6d0749182c92200e129b91f13a9646a38421a6865e36d8c319cdabd404a5c50124a3190c043cf626114d0a0a15163664629c7bc4a03e11eb014cc03de019f00cfb009727c220e0e0e4e07932f6bbb7b6fce4040b312e470899e6a09eba063c752149c03c601df10fdddd82660219b4a48e2f853171c31fac71c612119ad1a76c78e6f821d1881129478b46773c395c3f69820070ec93c0c387f5c94b928f333e0cccc0401112ec8205eeb1ba7011f14654de7288daef3e9e84c900387669e06f49bb7fcb3d3ccd0acc01f2b9e85e7846e9b2da7222a53e44db7e4af1f2b30ef34ef33efef49f3a57abf488ed0cc105559793a36373ba0d08a684588bc5c60e83210e8c75faaf777990af42c9c82826642aa506a0439e6351e171c5abd5f095d05fe7892e7783b0d65ee4ed918f39a0da72cc7941ccb370536900f08eee11e083642c7209e858beec4021a5c0c2aca13e44027729a5f8140cfa3f2998b34a13bcd9614296f6c18ab378cdc7555387fdcbb70cae828c5674e2477ba1fa9d0e5a2ab0605b95015e2c01ac5c5205f10dc93fa20d8081d1d098f5e8e294f46ffd9c20c631319a44291373f9edcb9cf43ecbf34d83c593d0c78e386bf025977b652609d09f92ac80170062b00984b7ebd522e8c30e010cda79e824340220f4dd85e33418e4d99cf7c9685bf7eac74dcbb5d0da9bec1cfb3171122b8c7b3432a21df043b8be3498ee5b1fdcad8de081fe6f2a5a0e4fe1ed897c16e9c51cda85e22e558251a5513f4c0f9049c41730acd28433243aa70ca5af0713c809b910b2710527ecd843f56ec7ba63994208e27f965c04b03b26612a75f26c91aafc8388022de91cf083652d3f92ed88d39d8488d910ba951100d7556004f00553ab0ca181943d2909d6cf57b48a8d4a89c9e6e4fb0a727202d6140800081096164a44a6a526a7a3535c15abe6030d8ab0a119111520d490709e9d552e7f57ae944111252cd54453115d1a852bdaa4855a4d332474747a7429162bf97f3c98055685683640dd84f863410ca48d6f40f71f2d1c387a7b8f78109d08db115468e7608604d81cce98f01562832a79f139aad190c58a510559ac4e9a701ab110bc6fe99da82b17dc46a0d368cfd9e02a48cde00be095e90bac89af1d7459a0a3f12be0976e055859f530b76e30d365263b42135bab9b1e9b6b1a9e92ec173c0c7814334af02efcac5a60959b3951ff04db0bb37363702decd8d8dcd951eaf49c9352b1baa4681af7a35df6a65f3ad5ae82f3c33ef35efbd9a4dcb9b9b1b2ed549b13f86c7991528e7b549f224c75c63a5c99aae42805505561b5b055eb0c037c10b7c1d179ef0c580924735a47a4ff515e4c02725cb64cdb4b9e82f03ce266ff987306516cc3972e0b84400b871af082284610882b8c76bd6e6a8e1c845f72b3dee246bfc733c91635356737aff0914cb40a5c9513e030a000201688ecc18c9f9e1a3078eebc626962306c5028c3fc04855030b6a5035092225bd4042073318ac0471c3163cfd28f95a418a1f7460c30e9a9a76a8a3bb0bf9d855829e482364081a29a5f2c5420abecc60a80b172c3575e1e9ffe44b62e1e4092c2ae0220457d480870b0a9463548ea917b001acd3fc9ad2ca8554869b69399627c771a08ed4fefc3cc318ed3aaf9c7395ebea7def62d49bdf4a88bc1a6b5bee2bc8c228710f177260faea2d15d68b72c73fd7c9ae5385bb933b19b19e9457ba833a6490eb77183341e2fefa44e6b3e6ed4c18b92575a45f572ec831b9c47867f490fdfb939a20ca4b7c9c4fdfbb1e3fbafba8907e879776ffd486d4e887798585169ee0504313268078e282122ce810030e5a9cd02008275260914a51b470022b62c812d4c34c82073658019630840842688a1017ec5bcd98a334e2051eb05c5933bfceae524a2927a5140bcebaec9546e4daa1ba8bf2c467596a59e2532a44ea7dd2f5c3e5ba1fb65c779380f8fb2ffeebe0a9b5015e7fd786f2893ce93d0993c70b555881c76b9e6bb434c6e86cf2320c106240be1c6d13446103fda54341142df4179eef1b939037b0826c9c731ecdfc637dc41111b69a155d9bad2317bd97c62796908d95f25c70c8fb0f74a0896544a1679304388f17764d287b8ccada185361dc40d778e43b4f8731d6476d60c85859a8dfd557e84ba90a63add4a630d69ff5e7bd934e5be7d70ad4a4f567a573ce6f871cbba30a2e6619c403f2c6539035feff5705179d090d724c26dd9bb3bba7a35fb20bd03a618b2db9435f12b1d32fd93d46ef9b188eb13f86638c89a377a3e7d8c81cc523724c6e19dd039289dca1124abf307a3719bd679e947fe567f92cf9928827e55ff92cf9520047e6abbd837cf6551c7ef9448ab4539f714141f676a8d08bbc0503fa0d288806a199149c82c9315545557565699de98a68b4309c9e9c9e9e40f0a4cc66552435253535c5c034040529618464848424630a8d6e2910183a348aebd899dca940aa220e355fa92c7952a9aea351a3e8b3e050cc5730742ffcc74a857999ef6e0b0adc7b36aa4f19d06c4d21176794195115149a0b79e3bf84357a17b2c66946b7bfac6ca5aac087015f85e2c2bf2bcfa961f632cd15870cb1860e1d3a3e18f0ca7efc75651db4a36b6edce4e88ff50d0c158c5fc8204eeb1bcfe08b12a731979c9393f361d093966c4d4a4a4554a6582418da7c19cd5756a1b8542692355568393637afd681cdd097bce54a2f55f863a576aeb41afa0d867b6a06bde6394e5b52f29bd248f3c26fb4d06f370ac33ddcc3bcd9ce92920fe157812ec55b46de72fc30459ee39fc11faf798ecf3ca76be52cc5a17b71eb501d8ad6998b3bb887fe4efd14e84a5ee4464278cb6f34efc2b9a09cdca9a877f23c5909952be57676be0cbafff8f3d45605b154c8eb15800f06ecdb0fd0f3a43af5ce7991d3fce6b71c7e9ebd860cc13db4d6211f4cea7d287fcd9fc2e9cfa01711699e0f73198182dd28bd229f0af49b0c9c40bee5c78aa554d664d66c8d40a467048f00df116cc469b0575036c0077adf489c767aba3d01797ada69096467670788104646494d4a4d4d4d5588888c906a48484851842a91aed3f972ee3a0e95ca5d2a739608ad447ef8f8e1a9fa3f9c26930279d35f85ea8c68b668602d82590105e9cfd6023c87d61b9b06c0b066cbc6a686aba9e1c18307ee71da8e1553a7522950f2c0c0bcd3aca5f1d8d192070f1e5caa529894ddf1c1a42a6a07eeee0e097cd44ee0a321a8c455fa6f83e36ad4a04183c68c1042c03d4eabd58dbc2806ee7125bfd16e5bfca92a551a23c9093d2714891921f3c0a4f0099f873aa1bb27d813b8cacda0339ca1e748b2781ee6d2840bdddd4ef413a3cbef2652a79990a2ff94b192fa2577a41ff3dedf9c9c967491a227d1e92d2a9815cde719fcf28fc89d4f7613ff40f552b399b5b7868e04a8289e0e1f0de6532b2417fddea0231cf40d31fa7f35b9c3dda0990eec2b5dab79349d0f45345a184e4f4e4f4f2c6f8a94d9ac8aa4a6a4a6a61030110d41414a18211921612e1966e8c74affd0ac56e19ccd560ebb02499c560531fa3b5765d2e48e9d2fd56cb65445aad9e83f8346e79191b161a348c581433f56b877727964583c3221eb9db87840f81832f327eb742a30b12bf067f54e2ecf8f1317cfcc87f0decbf4d081f367054e1a70d2e634022706e7950f9c47b2269c75b6206b6ee6ac0bd2e84748d1df8639b6c8b10bf290594bc210f770332750715d0694709fe71089304198cfdf043b4e05fe5839c145b7a08c01a0c6fe98faa8040d1cf92cab110100800293160000180808060442c1501ec689e0f50114000e527c44785a3618484581240752184641108518030821c618630c324a3164560064031924adc3969ce090b2e1203210cef9bc2c5968a162f32c33a9bfc8420c62e62cb747afe605a9b258439d705ad6df22171d08ee6b691205110e972222967626d37077e75f7360c0556501c694ba4a2026a92346091fdb69ebf2ee9b86f3db6ec8f7139c2bfdc603a0ed19799c1d6740b1c81b36fd64f8f251290c4552c3f0f4c077c47749107015e006a0aa62d40f5e89785b293f78be0f386063fc4c9e407350eb4a4fdb6e05575d8835427930edd44c1bd5fbc3245906cd209399dd46b0e052e5503666460716c73a674114ea8fe7150c792678214e084a27b80d08b7df8875439886c239d3f61921f6941563bf2fd9cfe23f66d7c00913412c75e985b34e8d3fd7191511697938bd8832d40f29492512b4f55da26db82a86c12bd52c9d77a8a50e693b4b91560baa08bcc50d922cd7ddcc4a4724622d93851a90c345734e46e0bd856e1707b6586ad653450a2f45835d475ae509120ff38248a779d1a557c5fb198ae9c8121cd5fb52039807db12cb5a07853aeb14b3a7f1e82fa87472e13a9d9f9ca66313bad3a8e99a18cf6736cd0785a9c948b8720c56585580f394a5a123c9f3180def02b0fe44344b36c7078ccb701817a5004e08ad8aa8200b5a03a9f781c32a00575548a419a181697c8b8eb3e9102f49cf492982ccbb036e9578f3cfdf7a87207bb6f6d7f85d81b0ba7e666e580320ff89f4b771bfd2cf849b303387e2f8108f89b4f7d3a1f50fa6fbe780989cfc5407df88f67e5272d6db89cce84a09e9c2c3f3874bd21fef251aec1bd2cf1f7cd22d88e612432768a1bb39b7f6de9346f18d70c6847a93777f66d9082f7cfb899f2871d5d9968a64ccc49ec417bfc192b6ad61af4d90ee8492a514e445ffc67f4fff469ea5fe4d5e9144cc464dcc305278dbbef0f129dc4eab99d46ef49c61c1c2a05bc7e7df5e2ca05d1fbcd972cfccb3f6ded1a655cb016276dcbd63e8e377c643d6e7a1f66b0951734b208400340a91026dd15c6586a27d83ae83b34d9b0086a2b0fe96274600c29992c35717f575b0f5b547e697afbd69d59a872bdf71d8d959499be080a99291a7c5cc2fcd5606d988a156bf7fe41c62d418c55c48be36af5fc41c63d41ad55ca8bc36bf4fc41ce0d418d51c28989ed6a74fac16956d50db081299ead84e5cdc6b0c48ee49969b9527a69ba91441972f3243dc1c59a6d24eaac0b7f21d65a1e99df10ce1cd5452d41ecff24cd010cd58d44e1a9fa293be121f742387521a95b53da745747e4e5780302cc5eee9d1982761354436efcea999936ba523d2392d292eed2431769a9303ee8a6ea7da385e2d4ec4c13fefcf237471ea116a5d225456dd621d8336a8f3595de76caaed78fa9699bae3095ed9ab2a7da80e1144ee86f79891c31ebcd4712bac89c3f113574898108bd8f416b6b98604cf6b358883c63788cda89058b31e113e40a468197127f528dad815a70a5ab3d8adc88a39765443355a8df77d7496733ef5edf459765ad7b973c434b5ac25260b44f7b701a23c19164d9a0fb5ab741ce226e3726fcb5a7eb4e4644c6ba74e2e33928d8af897a3acca5b60d337ac422f7f55392217612119046a864c4835b82c758591bfa72ec9e001196ecad4127c19919c90fd04a0e54d4c0ffcaa4890e2870cc6cbb6c9fb760e11ae11f7bd39fe6ce47393deb1cb8b45cf9180825d86ca1992131f3707f0da6b9ff82b91d62445428936fb2dc4ad841d61fdf1373a6065e2ffeb013d3ab463042f6f638992cb690d35bdb2e934d4d6c5bfbafada9ee9e435c0922bf28731aa323a1445d8dc9970bbf8302c1bbf636380983256d1fe4e555485abf675f2ddd8a7a202e0ff373fa8f1d2952c196067d4a0163e85d50990d1cff7de838c0d65540b95a16b1c74d0e36ef8654ac67eb4f5037932b6d6ccafc736d6959f160366b499a3ce02e21d7a2b3dc342a1b1179ac28670b2f811350ab0c75ed7beb6d663075067c9a4f339e6ff48b50abbed48d6ff2ee844324bb74c2e4b9b6193d45214e706f68c73ec9c7a55e7412b43a22f92b1678a50dbf4cac8bb884e9ea39f0150481289f5ecb6922f6252efbdc68e44a26fba6af5f4b94e86f6d223b4bf440aa06b123382079eac0b8f5677e09e0c8cef1e452fabaed603279af6e31e4e16e13b99cfa1819e71c746f25e5066445a47302c0b99d95b4d54f4544c4c8c030cff8a4290d4ccd98f356f0f92e33b3bd716e8b89c0b2fea295409d3f31b8d5a02b1acf2f9cc996a4f9b6fe1745d6a23c4a655976a3aedf34248fdbb7264f34424e1a1652d1b69e553644df03bd19ec3923e249bf49769836f96f635d98e359dca99d13f22f8c9882c38d6c7e231f292fe0b44a6bb41f5940dde7a015fce1d47d686230b4372b38ad988b5c2c85e62e6cd296fa891bb5cf4bb9eb20b2931538199d07cadfd004044da9d09aa130d1f003ba8d02432b020f1a1ad05984304428c419d506899aff0b61e3584cbb387f0736c83e617ac63558b58a84e6fc620fdc62e14e3ddd87f1d1a119f0de2e8fdf3b9db9e720f5cb1d60ec17d8b9818268e3e13c0ee807d2aca7f690c294b6804090b04a53f48972bdce97649cdca6fa1602161f19a8da4ff72417bbb27d5302df93eed3219ae8aac6c5405809cc3e037e01019095357c1ebbf82ced944dd8e66d5e626095c0c3f2458e54aff97b4cd0bf4aec91a1b2c323cd4500dd0ed8da2934174d66d76b423b999367c8588a5506894062650af5d6c2ed44b4aad7866fb1ea3b53a2e39b200a77cb815c14bd0aab43a9162e1c8a5413ea9e1f29a513a248d2be11262fa3eaac10b44df9cf90a64afda466ff970051f58ac3627e27a2c08a16f6fdc307af9b488dc2551e2e9599050ee307a22ab4db7719d85068cbacde4566e6da683b67980a4ab6ce1fa1b02fb44edfe8d8ce1f65c21bad4e2a0672b71c12d396234d40bcef288d1c57b41de73cc3e4296af37482cd88bda739d6acb15451c6cd2cee7893b86b979248304264062c013efb97cd07d74b2f167721bd13d179ee74cec16bf0ec9744ccca0fb5459e303bdb4a8a6cb0caa587efb92cc6a8d8b2eada8a28f2b69335e2f25448ce50f5f47a1d206bb15d8288b3b7e490b4b06806a396fb1bac33b17d27ed8bd3552e1a8f2704a55b4849191cea37b36873950271e6e617e340cc28dc689d20cd23ce0da55dc1acf11daed36630782da73ce498548d8646d725f5b880d672ba1b53b99811ce3811cd96fa3403e04abfe490df22ee10f32a8b74860d248d38934d154bb897ed758368d3af613c13173344919610685a000491c6d0e598140cf27245906e1b26e23eaa4959c277761ea7bdc10344b031d343287508ca3c5698d9051ab20c7e89dc7985a8e372fa5085b20fe8f49dc179191cd3b6e25c72acb1a94c1b8c8551c5a2cea0d7bce2e628e183546650e2c3f4f21e2d86b2ad9b16a31aa1cb83c7e05c0f56fd4b2cd544b5490b27ec501a493bcd684a1dcc504b637a165afa2e11e258f40cc50128f07f28f38d2190790cbd75d64bd70dc95cd57f5033e19b25cbf43ad3159af510a3df45bc8eadbebb9bbe7686685ec3cc84f4302bb52bead9fef17f1773b3aca13dfa6b761c6f2a7ee9300fb9e5e58a6801976d1f471adf8f7c7e6a383b90f6150411c591433fd7c927ea20caff447a0d5852fef53585b68af71a184755ce683ca4e0c03118d802dab9bc9f251ead4dcd2a26c88ef1d9e3f53e3420c9502693448ce4d215e3456f8c9dbdd443a2cd762b32969a19ee0c59e93202ca8c90f23acca838c9701901ac552cd00c400071fa4ef5e47a120280396363ebb28a4d286ba0dee580fb7d57138581588a7d1046c42da35adf26ca726049a82a13c8e14239cf1172018d47c1ce1a39de93f7cbb1fd5c889b0ef7f57289f7bcf93d7df362e206c96f6a65c442872449a566641206c2ff51e5e1d7b3cd42ee95a846bf632bbe388fc62da45f38cbf58a8faa97e97955fc59bfcc875ff5982cfdd1366f20191976b365ca4e88f5be1e9d5d76b5fb90fe095173700e42a023366af53ff5905eccd972b5cb72da5af359db720c0f1db32cebb53b449345583d8cab12612da5732ed9b50fec1476d843872d09c438cbe45605d551a76ba21b358b87bc5174e48950e524b9090c64683b9c720559e3d49fe34845f92e77e2bd6c9471c5f201ecbc06b34dbc671403acf0cc82c5cc0a354605940b3b2234bbb82172a7e8e8a376f9929380a812ad63a856dcf06e01d25d0cc28dcc5129f5ef95621989f397f785ee7e2ebf6fd2d5a61a31a7207c04baa1cc9d5ccab0468da242f1aed2e1c31f9237ca5ce309c9e0b3fbe3b88efdc89325c79afefd7b21c452c0ceed8b0e3bd30c0006a66ae06cb49c62bc98224af5812ec6522c207e5ac869046481dbcc6dda092a1be516d2af0df6f8dad549830bdc5967d5643117352ace0197e8c962000e861aaaec3c68bd2547b650a54387b9d0db520007f5948134b07a75427e01cf9255d5ecf087d5336b9c18bdab3bbde81feadea2e10ce48eca379910104f9befaa6a7c1357541d63062767ff067289c61a415f6a120812a7b1c13869ed470c443580a105264be62f3b403c9ac338aaac1e3d6822ff8e5be07d25c83f2c3849f40839e8ab272d157043be5ca86288309723679cd415ea47c5d6605ff24713a153e326014d73174b72fa1ac6e85c46da5cc4173bb327a55eb90039d66cddfac72e7d04d41e172bba2000dc2253240ac898ad04d87c104d8b2ba94977cff1a23824f539999b1e01219091ceb9ea0f4d23b892ee2038e553f400bbb072ef142f313c7b5a741401efccb415edb878e937d01a4c79c0c1ad50e7fdc777047e31cfa47494c1b0d6cf062b26c93892bcad147c75bfa1f7d9f6fbd0fbd2f3e038a7636aff215722ef13912e801a7d0814222ddccd22c26c406388f7b1b461c4a161837fd366b69bfd54b2fa2a0194f3723be1cabac0f6eb5efb76620e9855a8c8a06db042c7e288d82216e7e10e3851cfa0a430e03b54fd2c0b8319cde1fbadbb8facc98b5a0fe23dd59bbb6176c480cf27dffba4968a2cd01b4e5fa08d2dcd24fcb4478c39c2e0253b0e97b28164c19b8188b0d38bf87bd1f670a8863e289fd2a7d447b9e84b04207271de99b4a8fa35df57a3f7ee1b4a5abf63a6892b267b81abf65beaec6b925c9ec937150f0d8c30f83aefc81e2df617cd262dfa833ca0dc4e9c37769c99994e398e7a9ca18a2123851945e9d36dd4f99418de40eaff1ad06e7b47e3e47c64150c77dc1ae47f24251dba708bc2819c98f8849f33722387514dab61f93f2e8518fd9fbe44b8c24e05b705364471f60ed99d17fe9aaad803c9b30a271149985c89f0985df406a05fce387198d23ca1202c5d302b46e6505e8eb8e591a43c83e427cb06f73452c88a40411a854dc9bf050fc66e9f8344f10afb4a95c3c8bede6de4e26785b6fabb53f49c89fc1ff35267ac95921c9c578e66d5e1e3728290c6f851da0e3f1871f1fea8a09adb529ea69076c6aee6fc37d15e60f97524b1a4f4149931ee592236613b6776e25ce6c7d57b8933285d06005aae71f68e3f8c00a561af4d1d526fb12bed377a8896f5371f4d5da013dba4b9e1ecc8f5002ac91ee7dfc784ed32a10bbbc4e927a0cf39363e194417044729cfd1ccb58fc28c23dca36d58ffb8a6f54be94c12ffd3f817d84cfa933f5d4f0cffa7b04f86bcf132c796278bca2334d2d10fb516a39e03c5b4eca019602aa093e13491aa9a002882d0f8e63013ebadf539102e8b0fdf655b6121f046790ccd08b174af7ebf8ff781f347c50c180105f29ed26176a71d1d0a6d2deb809ff0baf9291a19da530c2b4ebac56511edd201871f41365a5acde9a0a7ab2af3cd23779bfdfae8a48ef184406f92816ad423ab13f7e911a2c6eb223156589f34bb4652d10a7d3ebd5c4e8b2e7cf4a230d8925d42e533c08f959bc73ededba86f5ca6c5edfe85a0f14cca337d5dea1a7f877d9b99447356ae6c410fcf634deb7fe8c5e27493d863f5b89294e91132bb00ee074e513ad35e8232506184898b0325b0a03e1a8cd6a2cae876e0445b3cb3a883a3d9e985d829464a2ce5e898e2a70b6d07d7ba19e18c5852c4e94ce6ced62e9f45782c275efebccf6a928e08543e8f12e8c15ae869bf20238a5547966da47707eac61132547de96ad95080dcc27c5a4954619de8a445e0a84b99c5642e7f64d4030913c8bbf8b1fd043885e1b0b1f9866b12c88cdf2aa38f464cd4af03ad411773f5f5a421387f2972d06094c477f977014c0eb7e245e6fefe875200228e6b3f4b75efd5d491dfd0ce02563f059c6bc6d73016bab53e220212219789154ba9ff19600de0ab34c599a4f6213e1812b15683772bd1340cc5cc49963000a8de56e8725304a2dd297820762d1788f4e1d43cae4d6e57239a4c1e225b6a68e192db7607d371412076f03ef044b138403486a6e2175ad972c2cb75885e644d3a881e8108847c557a048739b73824bdc7a25d9f694e38c939636b0c50f95857cfc194a21ad1a3f61476a0aeca6fce7e3300c4981d5a4ef9e9d141e3044a78af0b53fb70c1ecf8aef56d4b8b1cb776098a4dddbae3c8aae5b64c49a6e94c50895798686695a988a5f8dca641d8caae1f4987545f273917a2e2b81a2934255d9a9e10aff4b21bca36638b032d7535646b0e3f0ad5c0a82f84e55589acda80308ef70e1e0390cd99a8db4dd90ba1056c1e24627cf6282835397af9ce290bc64a8a459e690367660f43b3874745277fd105ac098800f83c74697e02709aa38626ec118de47a05335b563473cadf2a4b17527624ccf51646f131ac448691fd019f9564ef53f13919b3a12e0a2a4616db2d75c4096e9eb24d57ea8f86e6eb62d3b1a4a5b826b82dc4ea6d8dddc77c44d7a5c9f78d29a0a80fb38d1e49303f317f67d9ea36ec926cef8fe33ba903d51aa3c16371d4e399200fc6e6224e1821193e5a1af7724c27f4522ca4e9974c0134d44b62f5104ee9a42c56e4cce164a3495e0b17d79f5865503ceec2d091c752570c24be022fd72406b033cfa01ba4eb6220fca7b00c1c694b23a24537553d7df562269fe70f143c94749d0d16355d75828fe06b4c1107db151200677529063aa3237bd8ca0770c4e6bd3dda37c0d65a86083465dd9c70deeadd22b88ddb4dcf752f656fa8578f5472372f19c89e85dcff0f7a01e1f44c9945746c57ab1281029b10b9b2c0e47226eb405841a2ccc778a6fc474786a13c0594595dc6e012b1691cd339f29798a0c6e84b789836c724f2b58dbd15deda17ce143553c14e7fa18c0309e9ada1328b8e7a516ad5e543a5cdc5061cf46969063049aa36ea3cdd60e7919a473852a74d67ac6965544f920b8707acec2301a813c270cf61cdd51c42af2f3506ee8edcc3f3223b91eaec08455643f23c79c36c760154b2887e1d4e6b20848b0dcf96208a2cc38a67bc33849961af856be0c8566c631a308846f2f1b629ee69080d214aeb7e79c29af069e2dafe8c0dd15c19cc3a5353a960faf40ceb825602010e19c71d72832e3ae72289cad5b0de67a4da351647ccb59faa8126d35ad47bbb2bbb6eee30967fc41a5ba15990baa82f0468fc52839b1a552133276298cb19d58f771653078cb23b9e2ade1538c84448c0355b90b6f296cd049868b8dfc1709ad794000364e2b2c45e4e1b511b8d4af0e22a3e7be5aab74ec01d7aafc09d1214056259fa2a800b7019a7b5d4290f32e94904894dc8faaa706db974147eda33365a0138c5227b0ac85bb588b15cb3ae57515988cba5e5fc58ae9ee6c737fa973127ee271b33b53275114f3a3ab31ed12a4d5b7ed5b8362c3066f41de6c8bab37cbe63a1c2b7c4b1fd522703c356df061dd489037b19cbb7e150a1c70aa8172c9ee4828e02130a86c71e185e3b6d167954f52057c0b91fe6b1f61feb15c47e7280bf5df2710d72ff5f5df261b7ac653d9d5661e5d7d89f8680975c19a550a7e550b76fb2f03418f4cf20cb3c2942ac1598ba33686185ff265e78dafea22830b6b51bea6088b76aeea2f2982ace2cb56a60502d905c5e6d67ed1fecec1e49dd7b228e85a495e82a78ef909682862fea017c0342d86e2489c11b2febe65973333386867e727211352228c283444a420678a9d0b2078b24199e88002e6c1b1cf6ed7c6ab8fece50cd95df2a4417dec0350b4cacfb07b816e588862e8cbee9db1d3ee1d56b77bc7292385dcf001bfafd4a17e77dcbd48407e64c5d0f48ee1bfd3e82a4f3403e5ddef895fd4b01b51a9feff79e134e88e38b4aa88aed05ef0e896cad4bd0290fead2d7916ea54325d468ab7aa0a5cd42162c5d3998739b6f7cef68c4e6370b32346a9003a7b19722a5ccc225a6174c5dc92f14c558369502c3b2711c2b08a5fe0364924a1547cdc5bacd2ba84149356ce4608f50c56534e4bfee99b74ea07e882b03620147a45b7f66a3f21d03272ad132fa42c99ed2f21a453b39bc01c516d5e4dddef95c8dd75d9d4faf8e99acedfa764a05723461ba6d708dcb0b5f7434c739556a408acd7836b442bbcb50e6c65ab2d1f39a2274320542e049a5cfca4d4553834f70ad1dc2b46738f4b6b8e3c99edd0f5422a48095a87e80892d2253b97d70a6ca1a19b5b6dd35830462182ffc25fae19c09772f1e1907d6c06bf18e76af978735524b3e88a8829eff89f9c4d6f40e59c0401a9cc37b7ccd8d6d7f6a063d371ae8d93273f98dfdc357739e05c635506e7d62d7d470405c82cdd49f1728b7b174ba8162ae1ffe096f6594b0ec2130239dc75d9b8c5f24c6232dbc09ed20dc296e09f3ff4eff864114327dc37c14e1a410cfc7ad3f3ff805906edff82154accc65d8b3610dc770110825cf52da76afec69dfc0270796e4108149922e77d55773ab159867b93c26b17e1b9720955440915c838150d026a11dd4bac9152d1e5126867f813c41f0eb02caa33d6adb23e06c8d0574f5fd0fd0c101bffcbe226d2dece95fb6a153241e84057cdfc2704d1c88a170f2854c94607a89c834e549fd691b4d5f0c33c070e85c48d81caa011d7058a8e5ff9e9e6ee26960dd6a562f565af7441b24c2c382c1481c6803553df5bc39bcb25a0a259272c3dad89605dca9c68f5cdeac5607145cba94ad83151c1e95193a0892a7baa9999c6c0f8942be5d6ba6b3a00ef970bbf250ae6a0de3402e688b511b06b6c5546715eb2077db8e67e342b18055b747904923044984e162d184696175bb66bb792c1d4a22420075bc7265618bf935eda36758df43ae8db6d6c3206bdf279a645d4c4b881fb1663d8a805330a845acba533d537fba28fa367bcb68888ee9b76dbdddda4226eed18339911ebd98b004286ac86bc0854052c694b748184139e5cd461cef10ed33f19a1b89ef8005cf47e2b7de931f1bfc0709133fa4f5a105b2828f10ba8c545b3f81d34ee76b9f1ed485f3c8ac64278c3d10d68c58811e16ed2f520c532275b73777cf86c918b024dd64cc0261fae9f5e3bda5451e315ea070c345217bd2bd08bed8c9e49dd11bbde51c8f4a44122796710bdb08d027c67461a0fccecffc6be044e9c4b64674955c90cca2e16accacb00b361a584310d7b99e1d61ed3aa26dc45a69ccc1845dcd843aa8a80572d222c6926c08eaee68b64c153a685940f451859a49b5348e0d65cecb3cfb4d488ec202ce25a4676bca81b82f90c62aabc9a2d21f7760ab0a1927475049cd0efebc90746644b73aa1647a11598703cea5010303ff47f48a05f0033617fe1fc9910446e0c910633a723d1efe17a3f36e16f7eb78448fff84fa48959a1ee8d8f24f449c3fe0aa599bd9b9deb583f646db511c34971a486e998f54177a274f4b38499c2551eedfd6bb5cc1d73977ab3505a29634650b2fe5048f0d34f7e76c9b16f30e9a42faf5eee4b562cb0c61673c73f362f6d6cdefbe4023f888c926586b07212d6f45bcfcad5eabd1775b102acc8721645fe081ac4d502643ce4c9b2b1bf2d5cf33c59f63e5d96c72fac272b7f98326a088a269e0292ad30c34cbb0b2b60ccfe618d7c595332248c4b90098c864f02483c16c351e88befa53e9ea4ffbab29b603b1c439948fbef7124137c1e0de6fb87a6a93a270815a9a99a8d91db4006dc7182945ac4f989cdc6669694942d874dc5b96e73f3ad49e0a33d1ded4e98a8b85199c41832c8d3d7b8f97f01a13b46c1696e20a9c065621946f7cb5668edeb0a8c03b8cdc9680d0f0020a67ffba5f7c0de7b6392972d093ad306e87a78a37b313199740e2a7cbc995620ae44e684a3a2620cb7e1e20e07bd572e5865b9605c576cf340a0d03ba17d00a43547d9950e7fe50943265bdf394bc903dfb4d51e7b07eeea69085b85bdfa73db58f30bdc828ae4e2818d69a51eb5ae4465b4e5dca5fa4be2d2b6966722d8283ead7aa08fbabb10f7dcc49566547aa99c46fc5fad10527e7f0367c0eadbacc5c43fea56bce4082fe6d44c6d2788cf97209512c6b60caab7925b8e1126feb7d72a6e4c9d8781668c39b49c08a1655836d1f645054593c6ef9e74b9ce79a395ca2bfb2c489539fa31f7b55f7b5b8a8b46a34a1f6110f45a48fa785e94946dd6db81b82260ed200344e6a820c09d56107db69314f2ccd476cbf45115e31aa54ed9b88a3a111abd2a90b3c70509a28b325cf0aa7a336888b993448458a28f906f60070c1c90e48da340858fd21332ebc418921218f8ece1398d9a2236acfdbe4fd838f3ef7dc2ae73968ee91117e3b8aecde041a8aabeb6ad3a92710790a76374110ba2c0dcc9b1a98f2d141418ecd8b0363e045888b2a97249b52231eecdc0cd0234c970867f8917e37826b0611147599528f8e40da67195096ec933e702a18b25c758873a1d75e7b79b210d21050944183cd15554ccd31f6b5005f3c266d07c08ea2a1e09def847d154b70e8e9ecbc1259929f43a9363c26fbd5d2f82c9222cb0d36071aa016b9f3051fe417d9fdd7a9e3788d6e556a7553879c4dc02450e77bc5b5bbb7c597744b0afef2663f35fba103aabaebbaed9bed56d2d2b53e0ebe5438888ffdf44ccd56fb76da41639f4198c6c8cfe22c1e430c1ee4105ff3a1180cc8758325857b6c9aa1048e061ee937eb499caa04ab67c55c14e341578d00406d102fedcc7c968f062ac423d04e49c0a6ecf0dfee81aadf5cb65b303f8aa8cf1c052a0c5b6d0f7fb41e3caceeca5e3b779e9b9aaaafb7df5b69abbf0fd00f7b56b1de83aad0a2dd6e3ce402dc33f5257d3fdcf1f8fcd1b090458bfaaaca76b59ab1180e4332aa5aaaa1b51e296f08bb7e8c454b8a29ed960c0194055080860588d6acbd957e52825ca2dd06984d0ba84a17e6faa48ecc422d9ced7dd63a2439d37d994dc7a3b166630125ba53398764b956bbf69556a1db3e18653d7687d868f7b8c54fdc5f33909b53fed74aea4f4988f84080ff4fb4905e79f83a74696dd516c16cae897a2301691291586c10f74608122fc27bf638d2b406a3b3630c625729592a678a01d55e865d3664175bf059bb356679e81271e90542d65b0a7c3dd6847ce9a7d04962be0cdecbd224612b9ba0263e9435160fcb597d755af53a6e57ee46aed325a3712b233aec681cfe34d9da7706f8696cb0a3dd348872b57a69550c28c8ede746e8c8a184e583109d9f397399372e69d87ab45d21a2b726d298e5501e60a910dae4ccfe6bd9ea69e833f6101fa3367d0c035d7672e04d9b3f5fa01306a8ac974d6d47182dfa7c51fc8372eb67c4ff9fbce0a359225e5ae1b964f6813997cc0870e379dbc601e58ba201ee74ae54a72154be8720532d9f153e2abda1bea84850c28e08e8c3703eeeff514f981725cf7e1cca03db0b0b42e7247b318c1503285ed086edd4f12f24ee5da657c747e79cdb13fe82d1d2a775a4d12046354def644bf8655f011c3028571797c741d230af83c88c78bf3d1e918ff0deb58c4e1e6aac221e6961727041672ed23942ee6a3ca9d6aa8ae3edd6d7aba3d85e7cfc7be8dfb23adb5d6b66dfcf844acb33cef27d3306954430fabe058abcc4ee66533c19abbca8e1336cacdcc4c562ec144b55aea3a3bf721c942cb8200bfeaeca6a9e32542df887d8fe5026c640f57131463df29931c2a43605e3f8cd1ac60168b4dd4084673157840ff9207aa3ddeb21ce85e2580739f0a9a74e6cee604325000f32924e44456148f35a2bb7f4e8c906b60b1de5670d43984ba43f5edeac1f74233233eecb6de9c8c8b739fd98ce6b818ead9b94772912a3c40d64577426f0a68ced06d05e560dea67d9105a183b49567cbf33fa9178a773f376459f49ace2ab385b32cc6875ec31e0f0fe687904211e98c7bb6854e2f8f7487f611cdec53b8e0105b0c71b9924f4f3b2eb03ab2b59cf6c80a00e30e547f85607d0bc99e77760e2055c5cbb401b942efd67226e619076f4707c65e9eff1adc75c92dcf4f98f28d0ded7455590da93984a42ee19c843cbbedad76227e0ca60e10309e0a0cd3cd3f9a950048eda731082dfda105103105f4c33644a6a03bcefc914d08bd59fad796615b4efb118e34ef38415056cff0bbea9c36c6ea5da8cefc9221447dac1e29f16ce8b03d5d51623cc8595a661c3747a4acf897135fe6bf70a1e3ed60e4b4024ad55b44773d52f7ad35d50c7209ba8746f6f29dc1a590f8f22b32676f4061b2b674c37939f8665b7e1f87258b85bf9e9f40cdcf088149ee5f6280abe71f79a83a8b11a97ce01b300209c9f3ebfd843f71bed31ece980f636d6acb3dfc88fc57e601eb864664921cdb83f79577ba504f30e2904f12a2852b9f456838310d6fbc99769e44bab5427a031011f961824291327f2f08576f5519faca9e206968471d5cb978a3f361827a9b50b6fcbe3a2d4a59580cd7d80254319b1c886e781ee8b82a00ece27d1d630e044da861f1a73d56d359013217e7c88a359afea66baeda586c209431cd76e4b82346c5ebe14983f81f092fcc7b405c16141db1b7044cf21f92bbda590c49991f1ec4cc786c235f5ae90f839adc98b6e9fe7549132dff422d5ebe474b3189837ae8e3f55a706d0c1ca608a00e636b91e1eeca6e18cf682c546fbb8e159a52187bf088ca02e844c6b8fc872416c36c41984a41ffe4565b24f1836c71ea42b00bd51eec46f142458ff6483128f91d14a8032148b811a6d5a7e662a51734e5d49c2f5e6f4417f19c37d55ef14a758b100a0432267591e58ae3d980fa3a3f982f7df69292d9f375465c391c975f8e170020ad2f95c7a5d0fee359241ea4e1122dffba351c8852b48d5d73e25a15a8d25e1472d538f8e3a5f25a4a562ee097726dfb6c4941d7301822ff2c21391660ecbfe9540cc678bcf4cf0befd279fb87d219c333374541d7f67859de75ce02643b847ac39f72757e407f4eae8fcf2f9d687ed5d389923ba25ca631e9a857504705dfdb3e4e12a636ea0c85dd8074f889b05221ed96d77618c91a495f9e2b8ffb6a74ef2e276c74bff478ff81b98f1517df3c5132fbcd1e54d1b1a991baf5662feba113723e8f570cd0eac01e7f9768a2111d3c858c719eadc15b6dfb6fc693305130567370915b552304a403d08024ed335ca0a8837a95c9027996a1bafcaa69602ca74410a187bd600a481786b41011fa473f381019234a8b2da849e6b289ff4a5954665c19165767328bed473c098ee4f3f2225689024892be0261ae83770c2206475f58d330649f25f8e205c2fb3eabd469d0d278dfda319e457ff915682a0adf01555529d39b7dec151db03c722798e10c98cdcaf0a585f83f17304388b5132c6362a442eacfb62367e1b78c641b11c36d8a6b00b9f3b191529b08892f2ccc7db0b7ab0a94007b8b1c1ea85cb775bbf6a5e3fe64b07499858ff893e1f95b3d2f76229eca8ebdd419bb8ffe21586465304f46c53fa10a590f4d0cc008adb0496ca6015e379c4c517e3883796f81b2325892623ee09a72e14dfe1a3d8937dac10c0cbe7aab8b78868a620fce48186538514860ea49c41b501733545302048c61dacc376e66b902e059d72f33749360c9cc5c44c466f7076b9fedf5d2a6c965d5c9e0397f630aa4e336149329ab22d4a673cc44001078ce7733bb5cd8eeb90dc95cf3dc7c41f0a5ef6be9308b374d71df403f5c6543ef039b4d3b72ed5b6d96a13496a93fa8da93178194feb0731ec71f942e234a965795ffa07219e93d5daba3714f62118f929994f6486da69ec21c475039c0c902f9d8d9e351a256fee6b081b98cae254ea72e4d4d6e4b6e7a9b0d9abaa332a1734df15bbee49b3876d9e480db4da87987a0bf7491543b95bf308a4257d7dd56f18883e13161ceb107fc6ff1f9b9cc70c82872629fda4555c2ff9a1b83c7a84a4a89b69c57fcf91a9b888ce774fc2f8b05b8033a803e95975e1546255b3beab031fe82f94010cdf471d0320043ef91b8b226646049437403edd73c02e36a0b3e7a3500d1655e31dd5a95853e9467ac77b3cdc4287b77bd53808399f524b3d95688ce371a4c4ca40fc62a3d71ba0fcd8bb1b1ece429fcf5ed859bb1f6d56a8f62508361212a044dbfe2f183b572618f555945799ca80d2c1844368f2c3c417945a0c4b506bf4e19bfd6625ad2ea934d94d855daba2192878e3ac2074fea71c6d358427d495ba9a3b58d762b9c658e4828782c5305ee0698db06c5ae73f1ba6395b136ca7556409c46cc35750188507ca5413bc3f181ec7e12f9de0e62d3d852ad97534c7809a36c0fa00427b6336edcb4c7737a0900797b86b576c73749af2ff0b658fda9a211fa6d08a0cc2f7d2731bda7e146e60db7359bdfb70cdfd83ae0c3d1a5470d7a5c7cdb14134defba1144703ca8ae43eb131cb44f87cbb135f5bbe5b306586df1c01c541fc3b5c18614af351667d8a69342dc1cd0031dda3c40604bf11141232ed9cc07538238cba8707215b9e17bf7ad1a62e39225043fabe742c9f6781ecede931d29d9022c6a0a1e11afbd86ae64936bee0fe2c0e10968e8a147bc97e216d2d5c070bb4db17326c23736f1c9dcf559031a0cc77a4b78e2250a14d7bc4ccf03fad329de3776fa2d4e4721721d5198637033769ad3a2a59bc3727fdcb5e31cf4d257a24e202c7083945a9f64438887bfd86b2cb11cce670e1f5af12adb26add60f5b956b453cb70193ef64da3bd0060c8aade1d70be75ee2df8200081556893bfa13d468fb3a23068d0d2c245da12011c42706d00845cc0b99e8b4146b3a96f49a82fae243f82b289ca245a360ed27ce4c1751bff6cd3b57ce9d07fa409a822ff4826a7b8a588f72b7ca253ee0a2da35a3cde61665198f73e0263a490e1ce00cc837eb4b52a365192bb0cdf2b8707a48d94f5195e6a86a01cbcd41ec37a1f8e284e20d39a4eae8ee01adc01738179977cdced8efc801220417c08fb50d5e7d8c6c190d558704ba0a40cdf30d2cf899d0bba02b6cd9234a73ca7de4610e36a12c029a575de7390a43080f184aa5755cac52b3d6eabf7b633664848cb401e3dca414ee7f69389a39dd1c58b691706fc9eeac990fdcf18a340878db2815fa06573d6aa4b2d87e6e0e60c11a07069f3affb71904168a6a2778c6694838b902fab08ed466b805a3ee4950891c8630c22a03fa278c91ddd32c859b0dd65cf88623f09ae30e552601a9cc1e2f5e07dcc212859c1b19e273dbb1de786fc80c1c8aa71885e7ef0b74f3e183968b77c2b935d05a647ec07669d9d5c53e03b4f0ac6c37e20d7ab7f3041ff4a0ab5300d01c4f8f08ee44bf1f3647e82a64f2f3868f5d1a4c2f0e5706c75bc93da7bdcde14a31f98aabec9f0e5778d14fc53da031c2620fd0a10b9f4503a284ec59dee18ac8007e63dce7e107a64e1774c98cada2087623cdc57e7595c50f17b5ac21e18a7d86b640a81dad4d81406e25d704af3b187eeb457975209df41b4f7ec050be866c6ef3a845db4e474031033c8e945bcd05a59238365e531b358ef055539037179c8e2d501e46bfff25564936be89afea752767c268320a81371265366d3818c6a086b5f136bca15038e814fedea0f8aa1a750ff2126bd501df4c0b30eb7ab36479acc73e52a85cab76142664c717284e7e4210561140acba566c501a8621420c79b36b15042b21da0fdb505df6d0a3b46ff9f2d612333d112e07572816d05d2bf303540e188d7464c89d145d7f1f24e1a57de19b05395c9831ed90fc791a6b3a29cace8a2da8cdfc7e0be3d42b98e7b83c285fe2faf6a0e063225110e9cad081eeecb110a20765d01bb98869fdbb43abceef88ee0f6fe1bfc2aad2bae3af2513c9643d3954e686f2b8198cf6d0277c6d409865f46eb3297731ed979d68ce932aca9fb53138891463dee2190692fc6fcd1b878018a2e1379fc4f5070445ae455333899681785e21c53a13d179768c74f7060a9ad726cc9fc27a70f3af4fff021a78701bc1a666d5cf8442f055c791f1800e40932e82f2a20acd301e3f63e1a7696be80370085a814854259c7c5282c7187188b4f304b6e94ce26ebed0c596cdbe4cec895ae16eb937ff802a82582bd13d7aebaae20bb5d26fe2ec3103a4a207a86b89e98fba5f05929331f075b1d0c489f197215130ab9c45645e23896d048a93db46cca606a5c21736ac4e24e5f7391015db847182099834a9b5ebc72a348ceba8e340cd2931157c5a9880544f064242927418c1c040bd888298a04eea30dbe2e5918a8f91199d3dd585d4b62a229e2f1a8233a9433e4504169016342a2042934e95d55c475d31055f835cc3d43776c51b07746b2ceedfffd522baf215cba43aaabbecb1228f5091328f28c70079a37cdd72e50bafe05052c378a936b8f635cfb38fc421ad39452aef3e66e68f3c7aa0897410f1de666764c2545f94a6eaa4aae18541bd2c162c389aef50659f480e344da90c01e10b61d03553a32d29cc2f6ee173e40224c3c8100f42b4fb190d54e9782354230b6b06d56ae9319903e730652e2a4b2a920d06c7d5795dc11a53c8a722251c94e537a5a81ea0574e35ca1e66684ecefe4f0ea799964b4b2795abd8ed4e7384dc39597f069016a0486159b32b83cc32d12b64cfa168ec4b042efea6a1ffa0858a1802496a9c11729d39ebeae9645ade322bc5193433cda8711fece1163069f07c48f2936c632cb4e48de1a5508be59981ae052883f89f105a39997b423fee09b6ed05b83e8909559487e96a8fb3263a85083894d5404c0fa49cee0f2fd8183847c0382f7f110410917ab2a1f49dbbff4588566effb4b84577ec1f29abdf9592261f702e27512996416d2af521e1e67744722c7527e4680b89f9f3482346ebe191e29ac75f2ec5a579b79e3b8e99791be0a4036f5f3f597143484dc7c81c9926b20c5ea9a1a5e03fb84aa40f1a945ecbe6ef41c85cce1858980189058ce4d85bb47a270c78ff34a6ea6ef9a8ad03b8391ad2f2f2971ae31b0eee3546b4bb96eae750f72c6bfe4eb0e8a12c403e62e3af6cfaa739e1086700adf8b58709ed6986d6804de997814520c800ee982e89d1599908ea078c04cca1563a0fa62289f833758d4ff33e0817fa3f068e3d27f516eb1e6920493aaa358fe469ce1844243297062c823cd316bad9a7704a991898d38a0ae05662b38622f08c00c2803408348997d5d57f84d5624e8d1d50348ff8803b10249d076a9ed470e6ab1687450a87b29789f65fd4d2e9ff825601a3911ebd449ac9688e9f4919d1d5eb6f238ae4cd398c32d0c0a689250de4fb15beb3635e20af704231f59584300afa6c94fcdba479ced39541f9c5250329a777a1d0cca195ec339f15b57a59ac6a1f2eeeffcad73f153db0cf2aca6197b8c14b62032582c0570e8d9ff78ec26fe25683d544210d0c87ce591c8613bf0520fc0999f767e2de8b97e2f20eb8782b7dfd8b9f16827e04a04b35b374b44f9c4d66fbd0868610689ae50aa38fa7a466fff0acee5dac3e666462b2d0f71ce2d1cad1a589f6d8c0164370f32623c5af3c6364e3e1440d4943a5fd4b33e939683bce71a62ec89d377acaf83e005898c6e1b337c61c80e3fb282e5c881365830493af10e29018a38c62f21c8a545adfb51d2ffca0405a7ba0233dce9544ca62230891bd915550c8450816416f4367188aa4ae173820855d33d64b310911bace2885168af02273c5a701f390e408cebdb6e9c5de3388c0b163614bdbb9cd0aa8347b05e5bdd161d3e8326478997fe539c144b06222eedb993d5cc89ee1e44448bdc256801928fdad988d24c7217a44e4f494a727eef75462060a69dd7b5ad4f4c9750d6d77cf49c020183461c33a483529103fc29412e72834e9943d38cc9b09fdd664ccb53d243c22259c1159d2b185b5f0e30105c6579176b8370eb2c9f4fe2802f97c2fa3eccd88407a904acd08b0fa1ea63dfa2cea9aabfcb27b7cef08b914ed81b5485a6876221a56bae2af965cc20b9907472c87ab8ba2a9355011084876d847856f6fdf1f5261f31d8913c91deb503307c230dc37230e2a0ec0fc9ffc898e677dd5f15edf8468254cb32c434ae3055408137c77b8e1a252a053e0f24502714dd36c1c02dd82e22e4aa111055c302080f0df1fe650d485e9d290b3f41708461f300f1b1745e77df5a1aadcb169fee1210fa7a9f7e5d3ef0270b4b15767a2245996c89f01a01841bbf2a3778ec8c782ac39bca3389f1e67c37f5a6b6e34cf373ac4ed49317f8434dabbc6d50cd847fabf2272f7d6526c03e4bd377a724bc4767664ac65d7d9d75e2d99a0ea77a248e484935bd383f579584a74629f3995db46dae68f73644ecf743c30f8d11c392bf8192b0a8783cae7745b5ded81e43d26624e10471386b14be5d55980eef4c7dba58320d9c0a2a6d221dcac02bbe7154c5cad33d0a2135a82f5db4757a1e7f1270d530a3f6187725e792faed02d53eff2658b2b08aa9f050b4315e5994fa83a828eff0a8f655c1bb3134a43e6cb9119f5929b50368ef97b860cbd9c99506af139641fd91565a4d73720c6a16db9189765379f4b2c3a91b98cbfb16bad50cb86a341623b045204c89d4a3b1e604571418c992c7ed77a965d1866907a6ab42e1894081c62815737904612806c591648f5765b401e112e3c47e7a205489caf43473791ffd8030de4e666a772833522b9a83a55bcdb5781e16f50480e63a3a8db86809fd9be0e350ef0f59acf469b433ae332d81510c29d94bcca623789521d2e5aa836b652ee2c2e7b29e2f42b73f766792dcea477202078c84299dd5b683d2813bf3d8461b1cb3c922c0db0ab75c49371407e1d0c433ea46465da20c74c6046b1649ff96b32b633e3a70651e6b5b614811084282d667bf099754271e43a6c4b49c85d8063ef8d21f072cd74cb84484597e8ee6aca73e60d68fa88c8d4b249a1582fa6825439a2faea8d88180c6d4e5182cc8af2484e1d9f42f2a9833d78bdc6a69e89811b00d8d3db08c951fc1d0163cead7288cb4b8c47a5f217a6eabfeadeb2593820be160fb849968c2d7c8f417f78d611e4e7b78f8b40a2e23e5a77e39ba378e2fa11a66f671286ba5e0ad096d25d9259f143c126185da761be05b0e2ff49d46176e330ea939caa5f5c80d8e6ba947edf94461c958a77952e93dffd0aab13465ba62e28cbe88b64df04115b2dbb83c02bb95f5c485618906eb4630ba5c8c965a8cc01e6a8aad8a01e26a21d53c7ddf2fd51e6f9aba3fcc115e3b740b79831cf6f797c1ac3a6283544de0ea8d3dbd474f3c7141605873201910ca6aa497458d3ae48828f9bb71196355135bdcb3bb3cc5a11a4b68b07b13002c7caf275d1329b889780f12a7ee4283521672c10b2732e086774db643ca1d0c111feaa991a60aa30cd4d08549c1371aaa48c26e13391429ee6b9946fda9908656af22a94a61977d7e3983c2e6aade340d2125af08a78e54eeef4679fb1a62aeb2e2b4ad1c55b309fc6a405691d1f09651af0e6a84f797a5f155c6426393250825d9cb59204704305a914a6a23dca8e21b1704b2ca9c32a9cbb43557e96913b8e86b74a6b6a433db23819fc161accd935ce8bdc6c859a6efc2341e841462284c28e1523c28b30e5d8095c12895143a25f84afec806c439413b62e4a1382e3504b7611d7095775415ece737bc27bfae0d984c2d5d54d01ef952d865a2e38fd37f720467132692a5fcd3eced94c30d20955a537f50a75c2b687363f56a12e5b425d73aca08c0060c2d5f7abbb1f8f807662e825c4fd0de89b763637c69819362cefc2c58c48f54426e560412632440b9f8f0c34339ba187229b356084086463f4d6d5242c668676c17dcb2b6f11571659a9d6b2ee6ff585f0fe9ff68f67db9bad7f7943bffb4bd4e18621e65f9e6db748927684a169784538180f048563d1f47785132a0e57587318460225180a6c9713645d03ea6a2a7f5a208eca4a07f70cf54e1d9ee90bf0f9da339bff3f4a1b8478391693e1655f4459bbe4fa61a99a5c9dfec6d8a310c419030a3a8e38c1c93c5c8988b704a5f0b76367c4556dcee36ecb3e51059ccf1c7de893bdc9967b4b99524a019807e0073808e2c640dbafbf889a73d6443bfb526b221afd8ca69fd3c4a9fd6cd543346a3fb3e9a1a53d25a95ce7c61cb5d5a6ea569bdaa8b66796c2b196dab38e6da2902fe0c84f1fb09671fcb8070bf92af734fc00570965abd564e52727da99941edaad9602f85bad9fa56a4bf401275698291367c99a2896c80147c02071820b104b2d90bdff8aecd4959bf4d026c27c489eedc4009cdfe4443c6b9ffede640c43da931259cbac63cd33a91e9af590166e3e0ab34e5188147dabea3ac695c7b3850c53959f5597268354fd8055f987bce518c0a5c920a5f673ff16e58141e633bbf41fad1f22983ee5fe4871641fedc2f6600fc17ccca4faf1f80b8e32472947996351cafd48b9a760c73d9d950bc2897468736cf55f707dc07e6c514a554a99b457b67172e3b8cd7f0703fc41f007e26fe44f827f06e4f67aff9d3b5dec9f75a4fde308a4cf2aa59cd5bbf627d52b299ef7ea21988f1eb76f11e6c3df95545d4d93c1698241b66f1184fde89f3fe5ee50ff104195cc2c8e72834811e6a35f7c35975f7fe153fa9c5e80190b2e1a0c52fc4093618986823653d2190d05561288dc3699032ae6a6c264db85062db5bf880795dacf802e2d5cd57ea36d4adac50451fd60171aaef416a554b9e5638b2252fdf95b2288bb31de1f980ff9fe3cafaa2b3c99034eba3ef497eaf4d3215e2be4da3527e48d793fb9dd735ad463b1deebc2ae5f98b331f93b1ba8cdeac4d6fec89c2a51d8d63be7db1fe9755b1da8fd1bfb8e6a6f6c486d6e5156e16ddb76529e973759ba3ab63db76d2f1d8acf15a7c559b0902b682da5d27704157d2e1e565d5a92235ea892c69b919c719ed78b4752122ed04289274b3c39b38400b88001e2cc0f36bc7141992a4fc02a408464668702efaa58752fa87e90b374518ee0c1812c8ab861218c962e8290b50d2816b0c06429891db09031220902740ca4a494883753f2785569c1934454912329cd52854897858836922661229338797d8c968485242ad43188c5c40aa268a202171a90e8e10563b20c41850782238aac79e28296850c03a84b430205923045f8482f13b3c98290239a945439d9826506afa509624343c493275ca032a5c314ba4d176010c5a5e985186867aa687a4a224396294cc8c4d08eb420809a53977682334c24b0aadb33bb3e19a45fbe729880fc3cbc5bba461094f413628467c55198d545212b77a5747717cbcd0757595b28d4b16db228f3d3a94117063190b8a17cf9940a5121e66eb2dce436e54f1e7a3f0abaab08c84dbf2abf879cfb51722c6e3f723fe5c2e9f95e8eb01f5c29ec0757f936aa58a508802af52c593ebb7c4e9e39e7fb377ffcb6d7f4cde5e2e85eb92ebae8024edd64e53e10041fa314695dc2de04d82e660147504a6e35603d1800119051700c5429caade2f99c9bc55c2ce4f45de36cfcc90d1b55a660ca393d0bcf5d4a20240f64a494ee2c7852ba5f711daa6c1b69849b551bf793e3388e931c0cdc74b93f1c47822537508991db945f65e86a500adc1bd57777f66ecbda9f2d677d366f81361b6f6c5419756bd5edc709c3f62b7d32e9fdd9b6dfdd7626f1e6941cdfa8337435a8052cc166a3ce2ae77cfa9c46b82672729b646d31e79c37589d8d8eba9cdb3669f0e4cbf5e601709b96fbd4f747e99bc3cbe62d57fa0b553b13db868a7bd0f6cd03e01a83dd64faebd6e76feb87ab4ed1dd8388f8b6511d56d354a2c1f2d9abfcddea9852865f3d7435380598d3ea1bd5775bd923a9b7b75137dc8dedefcffaec770bb4aeba5e5d71a4cf81ad1f3f2e50e97b28e987a5c96c9a49a6d3fe2c592026b57f76b3a6da3fe9733fe47b9d3f5b3de84bee69cb07ed1edb833db422abe9c967833f14530ff1efc6e692cde13fad68ac0e961106eaef0983e7e18dcab59c53722e27962550c669c56aea581296d3fef4b38cb00ed692056a1613396335d59e53a7498db73d635755fd3d5add6a024b6482fb789be044bd647dfcfd49f50fd00f8a2b6dab8b028edd14062a8a75c81af7fe52cae6d06189249524b33fde50d28aa4c2b2615147cffb4716ebd8c4a9c4406436078b3385fdf125eae8d52daa3f174e2bf7f19f294cab3aaf466e8bed0a95137160d6c7df4cf5a782a2fa4f518db3915c54e796aaffb85d99296c0eaec8feb00e6ee945eecbfef88fd36aa995ecd0912d53992c5105d6a709c90ecdf71baa4baa44c2fe7c50c0bacbee395b9b30d57f0b81844624748c5bc6519561462ee37ebbaa91c520dcd35984eda28bcaeffcb9da4764a10fea90e735baaa24617f76893adfebcf5f1de3699e8e357f77c57744c0d125c30a1c5db577c6803c4b753660ab8b301ffeb32be79c73b1771f961d3479e4de3fa97a93d57d085894fed6ee67d815084bdc6ab4335927bedcc70747a98f9d55ca8d301f5d8ff6877f95a88ba56e22cc3fa9ba38ba57a063ec40f6279422ccc865dd738d525b903f7e0ca4423bb450a2a2a2fd49034e2a7afe797890148b7894402aae268bd5bd91cb3a11a904b2ee3d2860c7b1e695eb04dbc37ec8e767710c42c520b58a6b28d0ef70a841b9268b45a75351415141353143edca655451731f2a2a2762346cacd254d57ab09294716194ee59613bd54e50fbb74ee4da0cfd5b6b39ae0b5bb69cfb156764fc0ec7cfe65896ccccdb6f217dd128d03d27960036c28d2e64ddb38ce99375cf24654bdc17a132de03c8b86524659d5844051d19f72d0b9582a99476a53534edb369281bb04dfb6c0d4efb74c7d6a382247f699f9d5a401934cb5a0abe3825bc29577eefecdddd95e2b3764b84ae3b941df5a6fd5ccbeeb0abb7cde6d607491b3b0f62409dbab42174e87951b94d94524ec9261b4c156d08230008e3142707cc2c0b104c1395aa3056edb3b40795a7147c8575692a68a92c1cdcebf6204365189599e55ca241695472d81a4f71aecaf1d40cead853b95f1a2ae7838c0bc24be584b8a17242bca9dc6f2d4e2a2979b07d759ea1c251e7976942361f4ca1ce7ff970a6ceff1f7ca8f3635045ea8482a24e2080a8b3071dea64a5336386c8c89c87a8ea5362a83ea56a872a6a8cb3aadd575c1aa6b209a903d4feae378c0bb8c86122946b3870a9fe5ccb030789c6ab19d50f505b38c93a022a68b346053ef430ab42d6fe446d375f811232d0fd42ba3f4ac14d494949e949269fee10adf25ba2ba0baa5327707812abfdb20947102d872540b5df79db80ac5c918498365fae5e20732354e0706406831337c8dc89ea48aa7b13ae5954e47a31cba93a7e3c238e275a6a33a9366871c31250984089a2769009426875275a2e31c04069e9062a4ffc20f326aa372172c9dc5b48c14d992a6aa0a0c12273f1db6102737c004717cfa271a2a70aed888244ed7e9088142874a85297a6039cda5fb48319b005c5dbd5b1f5d6bc31908efe71cef90c34df93deedcfb67948f76793d265d2e496c2ebffc06bbf74e9923d6e5eef9622eb98cf5fa3f24e6529a2d02c141888eb6743b393fab444439c9d6c0effa62826de9573caddfe0d8f1eb03ffc439c0802ecc35fe3b5c35b7bd32290fde11bc0e5a7e0120971b2a5ea6a0b245b5c21e37f2d9101ce58b91287b6c6c9ca2cce992baa251c413d7f86b24681414e44838a845efb00581d1fa02f9ecd315f75fe7863ce0af690fc42b70bee3d4e92c0eb99794f5050110f1024961d26ff0d122adac1a3aaf603e9588ee844aaf687f07d3b01bf1fc1dd704cf2fafb28a56147bb053bc659d5279a6ab062e6adfbb558de6ab913b5af81891726ffeb7c1b423811e8355ee4008edf0b6fb1bcd56ae20aa4e14aed1fd243de62bd8b394b805c977b57c758a8ebba1ff45bff01fdd6275556384aa48eb1bcdf967b78d4d5133560205937977c5afda3e43ce84439a210057b686d48f221852c36306dc102c9110a28820989993149285981509091fe12fabfaf3fa69e97e66aba9bd043b01fdcd3f92e181ca5f24581c81a05b6d50884f9cf95e5fc5854e7f3bc4e087bafd33cbd789d10f6dbf27242af6b5731c83cc5a1f114c5325e7edc0aa163f361a18ec77d03e0bdefd68fd6c3e827d51a2f80f4bb0f42bf7b07d0efbe09eb9e9bd010d6893d641de2545b218c7e50edbe7b01244134ea98e7041cd7ca04215d48427746c0aff35969e24023441148cad89085982502e10a9c2a9e4841458911998e88043b4206cb1191f80915cc90012564b0dfd608258022839a24bc300a00fea887b827a16373db8c3a3637201d9b517458217d00843a556050a330bd4c47446a9f69a5fbf93ca7767efe64751485593b5148053a36a3e88843da67bef1fa11018e6b658210188f8814a3882ee312432421cb81853aeff1d76aae66fcfcae7af24e0cc186182a687ca813227d57643aefd16ffd05ace39ea7d0ae738aa6a5f9ccd4443464f3b9693e3799cf4f0c65b66c7ec7d5f8f92438d1ebe7d32f1c7d6efde04ac539827c1e11e9bbe20f139138c0a26526cbf96d8dd0812c329ddfd60832248c48429623c2789e87f3843a0f0b3be9390b42277e1d0b47596bd0485373fed5a449cdf919546aceb6a933c652cd79d70c5a6acec308e799baf3e44acdf9174c966ace834dbed41cfe7e0613c363230a1c570ab6402627396e00332e60548050c3c91954e44c2cb932b45b6c5c01b27e8ab01f624fc7c420dc5329e4a872cf9bacfc4b83f0d3a71e65061a4950f99781c611a0b0fb337695f59ee7e2178e60fddef340e0a6c84996df83e0de095e38525943d71260f7b2fb0eeae998f79c387e95db9d61a97addad9cdf1e621d3acffd463747ebb9ef36c7f200ceff01be7c9707600d3020ffd401c30f70e57fa1f36151c75650fb38349650a9fd439a68672ec15650d5096155077ca103823a5735f085ce8cefe9211d1d9dff7ae8c5ebbca703061c79787a72441172fec5f7f0103ab6f32ca794583c9d7024e7ebfd7742d8ce833bfffdc2f871a562b81e09468c1830d8003122a1840c08d9a934256f5829860b4628c29aaa1a4fe3fb8508dbe1d13b45a1d0cececf9607dfbff82f84f97fbf752784f9ef3c570ffc150a61fe753080a01842c744982d0e70173aa15058d4a3fb9e8e75084b40fede190431848ef14f07b87cf6f59ca09d38e01c83e8fe70ff85ddfe70cfa164208ef532c21a5355c6d350725565fc2baacaf819e1520f4b73baaa32442fe4f9adac10c63db73c983f3ae8a28b2e8e64ed1ee6839f3e3f15619c5824ab0c53900201080925b8fa05e555cd2a4f55168fba7ae0558fbeb63ffdfb26066d5832b0196266dbb68d84f105cfde6c8e0e48581f71a9664a1d6b21903ad648433ad6b19e0226c93c188b49b28722e75bdf8391f7396fe47dceba8f68e47d4b445af1dda7ff1379b632ef3d9132153f5c91c30c2a9ca0a4241bbf870fb02a3b05556efda03f722f849bfce0a4a859731804aa639df303c852226be9588d30a0fcd9416d0e66fdc842d47e066275b0c4284c3199b73d7befcd8fc3e6a278e256a3e29ebf37aa6d8a7b66274e52eba1a98d2a86fde9671d23f316e4b9d008480d33e098d4fdcd4d6a4b06da5e06ef3d5577f7f93c5a7253951f14a68ef952c7dc95f6c71bca7ddc01b24ab1a1744c4a3d60caa628a5dcc795800d65ab72d3728187668a6e6396c62461a2c6c44cd6dd9fda18a831b35d29a52b868c1832b47c39785064cc9031637b6a2999f19af19a4c5e345e343614d0a841a3067da1a8883ecf27adbc6efc8d8fc18001e3c3363468d008400f0c06eb110078e3c60d02c4a6be000420000530800004200003e03053cbe02783570c280828e8bfff34d80368e0d260030d36f80d843610fa8080808410e0b1212a222adaac90ec38519480a204d02d9b150d1f72e8c8616606ead8a163c7ebfb8a62af43870e0574c001071c74c0a3830e3ae0511b00b5f362e70b8206c397284983a10a0c3fc88821c34c0e1e14193364ccd89e5a4a66bc66bc2693178d178d0d05609c1a346a9879c10cd30b6e6ac06ac0aca6ded0a6ac682fd082b861e3c6d4996fea0be599545ec8a1ba6efc8dbf52c7ef05267066cc982106200dcdc8150d1a3402d0a38666a40b6d2a079a91226edcb8418058cc27e633f534c5880d30f8c9e02783a9a5a924b3ab2925aa450640190035694df19a022808280824137480a0033c51464b99a932335946830d34d840f6802e30d9406803a1579929b43256920b5a0b6c90d05a708256a6051a9938343259cc6864aca66864d238d1c81841e6094ace1672d0b143c78e3546785a38b283831d1c449121421b0303d9c20a0ae04001696863dac8d7982f63d0806f6af09897695f54e0e67ec182f6762f588cb2ae972bbc4c515dfe49975fcbcb13a3f4c20410559f4b97525661749053ce3046c2e0504709064e1d415a982634305734306c6860bed0c054410383464ac9d1d9b66ddb04e6893b56c76a539b06666977a4b42f69769f685fbcd0becc3ccffb5ab42f280071083393b5a88eedd3ea55d88a4b0b339581c7dcdc639ec2a0690fe3673c6606a5e07cecccbe2bdd97fdbd7ac7a4131e83ccbbcc454a165e8c08c8ff7131524749ab149c3ac6b834612edad0a496a8685bac685b6a4fb42d504cb42d4eb42d4b344880db676b57ce35cc3cb7292e8dbbfbc6d5ae7c99734e8e7269531bc2c1b8509b2283b7bf0cc2a0bd2bf7d4c829e7546d28d6c570599a1825aed0c45059ef5b313bd4a589a9619726c689d5f280c562b538c05dacfb17289a981842ae3578ee1ae872559766e6aa8e5cf7ab4beb92a6f24b66e676ff9c695b665d9ca82ee9cefb63a6aa36971bea2869b53675a495cb939e66685dc85457c758ac79fbdb338241407e29703bb64cc48900cd8b93972f75695e98685eb4d4a5757953c7575d2f56ea8bba342f522aff47068c144dea089a94159a14159ad499af8e124a1d5f34a924b42d33da09b248974959657825e5834014cae41bc92932f925f4d067a087c22adf845a957f24b7e9620a641334322965de14e0b68c6413344dd0c8b665d46686904149d6f21b0a2fc87d967b97a00eb749ff1b569800dc9f2d0077ead2965822d6a52dad802e41a4f2ab32f3bf9a480c593f38c5411d7b7614d2a90efa0d1ea38e9ba68ecbe600be70aabb11662848b850fda53f95a2fabf906053fd3f891854ffa059adfaf378aafe20fc50fd812451fd4b98a23a0d0b17d5ff0423aaff10364c4a5c3565d1e2c4a4ba962daa3f652955d66eb994dabfcef3056f35d8a9fb463c9c69c24d1114d4804436b252120d32d094d4ac7044098bcca138537364235fe1a9ea3f325575463384ca1cfcf9bf9c4b1c2cd5ddbf0499bf1017a904bdcb36bbe77a8bbae7d1dbe4421810ead1aea34bbced19b7a6d6d7af0b299d55555172c47935ab3a04c17d7a56295b55ea9ed30a5fdc44ff0b61db27c95c2a846d9e245bf7899253f44082fbd07fa41e8c7a30eaef1ea90723effbe9b3c496880482fb882c11a9c87de88b484831f7a1ef8951b1b1a87f652cdafdca58226c134de818fd13dc87528fb2a2ef52f4bd46e977c8b3040833ea7ef42897ea21180456b644190603c21a210a4be427f7a1ef68d624f9c23ab8d2974eef513ecb40ca882294642b6320c6fcb0021b292387b3e63ef45d5680a34755ba3571531580ec0f7b4ef4a1d0836b14ee476819f785b0ee6ed1e87b2a22f1701fffef91fa599f24f3beb00b83dce7e927c9901cf680eeb937ea9efb6d138db8a722d2bb8f3f972473a32ee70970fe075b57b632d67b22eb59dd30238fbed771df7d92ec0b57b6ad115ac6fa2e04c398cffef87c9e52268737329e024607293220dd6f992db2a22332af633dd7282c11a904b26e064a71e4a8ba25c9966a8a98bbefbaaeebbaaef33ccf7be266d6795bb440c28585721942cb4b094eaa052ad02c9b941b17d47e49c1fe57ffc7fa83e615e012d26d2802d236a8fdee361cd9d2ed9ee77918ba3f51037e4c832296e7799e90a2ca123f1d2c20572a72e226c531e6a4ba482342f58af2b6679c4f554bc7e47fe928716ebb3bbf777bd6573a2675f86f3bb1395a9457ec8f641d2e4a2b06924ee028a3e44c4ac99aa492554ee5545ee5567ee56fa4924b71290ee5513e7329aff59b96e23ef22905c1d7eb3b56fda51371a2b47237d244124efbc897944a1c3dd26aec3755ca372f29d0adde58b59437add44cddd44efd24c5642555a3aab2ba6227764a828a9aad9509270c612566e2a6a2221e200021c1a97cc9d4249de4939422a128e8444932f9af97cd278f052f25cb9150f294ac280ee0579776441bd71153edb368d21cc1e6f52b4c2a29a5fc6d5eae79fcc3276fdb9597d580dd4d29e5669322a28a90d2a308a8069d80303e9d6e2964c58c0e770c28a51f5bf9d22df8e4b27285eb61450bd8b3091187ea8b93e605dde6129322b68c791d9992e319e1454a931153a814b158dec0d046054068a1c595a351d30539af408a3aba7888c052bb4a1044e0203f3056254bc62102863043b88053025f75694348416b94ceb2b644ac52ba241493aafd38760603227f7feb527842c79a29f6c1576e9242299b24b5dfe5eba24ce008d667e7da23860cead8d795c20a0d539a581402038e41afa02e72f0e5a15050c76065168ba0a00ed6a0a93d95eb576666d115be567c815f7bb8c7bddf5d0b0fb6a80055a4f497cbc131a8f672b377909094b34d8dc7b21a59ac799267ba564769653563e81a9bdadf53dc6f0f0e771762779ebfdc33d531aa4640ff0b0a70046b5c81a3b46a1dd6a71f882b2bb5b12855b0d652f667c2a6c09156b06e5fa03cf51552260f8e1df27b623be4e2f720018e3cfcbce2b8d5f1c8ab7c9a0438f6d3130f149e34a092ebe5215411def6f4ebab52483b559fab03c8cff5893aae1b2993553e476d0e4f27053c3cb4ee4c81b51c3cd0ddddb73772d9e61f240404c8e24b048f00471c754708b18e05f5d0b2d8c33f03280416e180536368118711e0f7d0ef042ad052fbe5cbb69773ce79140e6904f47770c01a6c40569a22aa9d3631f24a133195ad46a57dfa5f54e0d84e3554004a282792cfa663fd56fbd3f28d5c2645a412c8e4cb76729f869250eea3e47babb1b18252fbc1222feb0101fdcc5fe51f5e0dc25f4f0f5899f9ea0b1a6274772d9686581155fb911e0557aa317e15e92505d8ff856b40ff71df387f148ff2923f138b0f037064255733931b3142b342a976b7b8c8e6c2982e58d47e5791da1fb2014756ea9000bdc97d48c78e3ad6efbebbefebdbf2806b588147437e04db809ca68a26b597794e1a0be6744e53a53804e9280669febb32d231f0529adacf4c2cdb9e1a568074c94505d8df4a75a4b0cfc1933efd3a52c0a5a56952d540312159a8fd21f098024ded6700c81bc21e207fbe8ffed1158611d0918030c480e3ce281d695d9fd8570e0ca9ec525f1d71bcbe29a4d47e70be14208c9f4a916be7047c185f982645541d254d0aa5da4bacd4833f5106573267a61efa5e8890051bafd1f4d07aa162a96e15614d550fad9729d8d4adee610fae2270b1d4433011b858aa6dbce9ecd3d999a6b34f67679ace3e9d9d694ef72b399d36b9c9229bdc64914d6eb2c8b6a5e1b66a6ae10de26e20b5f6c992c24ce0528aaef6699db953faee7697b313090c1b29c0b091821b376edc2421a50c195bc890b1c50d390cd981db7b860fec8f4e01ee8fd4a7c0e1ea86eeddc6026e527ab38880614309860d25293edf7fa4535c296efb80dbb18f08efd9150c1b4460d82002a6dfebf00973f3076a90cc95a7ff14c3b07656f8ab8bdd370397c5ea49de7699f3757a20a5d84638f160dd8d1b196e96af9c9fb626a30db8fbfce369066f8bc0c95475f8b79503653255e60fa2281385d4762f096463916de412252eb4a9626d154b7d7ee44a50c7f27a492e50486049022a0b337159a45801330989492e5454592612f327d3246bb6ad14595860cdaccc26de62c5d26c6a279f82614c3b6d96cd07b831cd8fa4ecc24d471ce5b0b8bfa15a6c38b26fb2f451bb5c3b5e3069b961475010777b2864a9bcc4622f212f2c41317630c38390202cf248ce97acdf2a51b403850b9222f188eb0749b579dbc06db278e4ae0d967cb1c2e572b2901ec965d6e9e39594948e26d38efaa85f0530b303132f219f991dccf020e48bd1f852059598e4c2a5f65521c40cb5a5f2c614e1b454b30ae1a62aa5571f1c0c4dac08e1262f9b1fc93adfe5e423d9a59bc2acf43501c7f7f595fe744addef76601d50e85377532a871f78d4435b802aa090addafafe276c0e20fbc321107153fbf85321708716a82f5153b3ea2f0532018eac04fb21ba96abd47892a3c9808eb96c025190635191534fd343db557e8475b027a91cca8ef9cb895646fde53dbfff83c9e18854f77b373cea4a453fc24032cd584295cfc3fddde7915d9dfdaf633bf6703580fd5cc5f1ab2cd74bb000ebe0da21e521d04cd1d0689129782f9a80e357298f5fed6ee6313c385e31d0f53d5f3ad63dbfbb876f3f9d03db532f7c00c75eaafb3b4bad0447f29b8eedef98c05d86fce44d263b794c85a9d4fd2a0f8e1ef2292c05747d4f10931723d2c5062a51508942cb1a2fb6022fd3aa94aa9aa26013455514549d85a7e342c7dadbd6b9e257bcaddb3306492a0691cfaa411685a024b92b6e80c5914a2aaadc1f4067b08c4895694ec091e206364cd38854a738f28669aaacca4146bc2f0bc8dfddddcd5e42936fe714da9fa08ef146c1ad39395fbafc6dc311ebaf633ddb7ceec76dfbb6717b6e7bfa23c76dcf05e1bee6dedf73cacdaf72f4e926d24fe28890e2d7b19ee28db4cef0937586b47ae8753f706873b1693a51d64351f6cbed1857213d6ef9c178c9d1eefbfd9ddfefe9a11c9ddf17399a5f74b70f6fbdb72d0824318122b2850cb41ecc4421dbf5f1bec396387ea31c8fea0b1f912a8cf79df045c8d53f581620c75aff8d473aa1ecd6e73d7f4eeb6b7d9e277694d5d1954a404efcd48041781fad482c886f8b4f1802c089a9d029415dbb7f448c0e2be3d37eb0ffd54eecb6000227b52ea262b0b2010659111a02a526b22891d2e5055460d20e57c8bc59c1042b5489234b52e2848a1d8850522b4346b62bec8c075d3642c4770ca7ed19c287272e224e534fc7be99146ea06458c8f641f9821949a41742b06192490f0bd9fc24d9f8aa1cc6f6a77f064e8762c666006b9e68529a540cc0cd0da545db6b466a4da0bcc6cb92853a52314a6fdcbd0badcb9521685d7aa075b16109ad4b13c771ecbebbbb4bebb2c4e58a55868b14afe1e537525234120f9ea8a864cd56953d0a11cd0c000000006315000018100a888362a15024cb12519e3b14000a7294446a482c978903498cc2208861180682300622c600820c32522954450747b5ac8456dfd38d0c38a2dd2a253c191c77f9232d1d20a39f59bd1bf026f4223aad6f4d0c8fbac4d0ce4f5183c08158d5afee1c55a50e9f3f4deadbbd102f797e39d1f3d3aee8e05fc19f7761055f8551b55229d9d393547b7bfae35c40dd7d6347edd8364ca17e6425db54666f6fd5439bebe974effe09dd3d895f27715f46dc07bb8ddf9e01e3ce5e6ff3dc8d4a55bb2cdfe766eb45c1a1e54de35cc324c98cf15f2a32ce0b0c8e4a8fad36d55c860db56172fcc8d38e13b3043afbb32ae007a1db494fab32fa89d331d90f006c1d87460d70079dc53e22aab8d054f7f1f34e81b58d91fdf6c1914904759cf224a95e7312ca3d9069b5df79c39e4a829657f85cee1884b64d2174d00c5bbe0556426d98f570b7c371a0017462857d90b903458439959c3578af295337a9f1e120bb0bd166dc09219251f262ed894ce8903b0ee8ae4e395fd589fb7357e742aa6e797da352f93622be275791c62bc43ab8b7887a42f09037f813c5ecd2504b7e24b7c63e1ed1207e2af4a75d83e0cff641566e20110710dde09145c0745038c3c21ef274804b595a6b9a34ae6f087d7b92a45c761d158a1f4a8550e9fe74b0c847d8b030769e1ff84deecdba212dbc1923923a012977a97f8fd539b8c20b4afb01371808c4ec50cd1f95b28d23fa8ace42141044b5c8f6cd12358bbf72d0f3b944efdb88e322a572e847d1176a29740324ec252a109841d0520dedae312e12e6b922d393cf9568e2a1464769a88b1524aaa333039e42e754ccf4fcb0696aac68b29a8a47cc66564000e132c262ad7dc2f1ec3f52ce7f298c2ed61c491c78c355b415f8d489633c33586c692a38502471e09105c5c13e84b3831b90a587fa35528e8eb3b568f902eff43612333868babf0cd583847858c18d5bf61f6ed9a00c2a509f2a65eb938260de00979013d58fafe8f547e58b103438b9e1aa72e71f2d34fddfc4365f6853a7cb7e4d9755e6089adfe2614e6035587f2ebb869ce7e3ce40e81cfe281f69f448a8bf9134cc9c0889cc5c40fbbab887387e7b154a9e7e02c4b171daf614461a9f4cce381d03b8d9c1e019478cd7b99ffc331c737be8d9ddb3b9712ac07880ed11e0b7887e5ffe8246651456882740d15f028d848919ee5b5d8797006a733210e8e554b361ecd93fc92373441924d70ab602d1d93f4154b168fbe5a12e9d4c4b5efd375adda6218c8c99e099c603bd85346822b2c043f4b61c6c60d9d96b420fc810c7b3efa1c2f436fdf149feb7c194de55d550720071d69c34b593a09124d4f8410c16fd44475a302f06c196cce2ce30075a640dce2dbd19a1293e09946bf8dca8daee5c51e971acaac9f991994da606c58880f4afed4a28e333a0122f8838dda24a8845250862454d085759ed6cab664713a60e8b6c0c4fe76795516363197a37bdfef2ed7e45bb21a3dc139d4352046034e565ad43955b2a45a878c1971813b332c03ddc4392d1293a1acba6f51ce84476ffe030c376d368c6e52cd9753060b7b1764e54d583fe4caa0ef970cf5137fbd94a08ce85b681fba9f4dcfc6411a223fca2e9efd9cde5672cab4247e9a11c9983b7a45ca1fa24bc5254ad1cd596832e0c6a71e19c04b7e5b74cfdc38a85f205a8731b6cdec33387e64fa82f1da7c9ed1ce787a824739fcd4acd01b18facab865e31adcfa8ab514445cc20070bac19156f279cd3218f72801df636aece5f44737b6c99f48d286267727f67b816282e09041a7178c47b01818667020c6dcf1801b253a63e0b88369b70cc1d12e844b8f4654953bb4dc3d416878b78a7189d105c950d6fdc6843834eaeef31018cb8a6210ccadd656c6000897b0e29d9526a28fbebec0045d613f48d13d99e4f3b986c96ea451b0532b0a3d86d763ecec211dfbc8cfe0e3c1826645a3a9236b0bbfe8a3de768f9a7f39b384946907f49e351b53520a20c3f7279c2603c04c72bb9d544c41af4f6f48063dc3ab54877971e662c619e6f3861db6f12c14acc3203637d718984dbe3d4798f3033b46505c196036f9cd187cb4954fdec4ea9f1be0f28120236b17e656bab08a02743a0167c0e9a296b2e5e0f5c8a1d667934729c4cab39fbdad928c3378a20a2b4bf5484a6c46d81f584ae1fb46ca6e58332e641d62e2add8e3daea9e4832a8b1710e8626a6ed7ac8e19a4530bca48d5c45d74e2aaa08e739a8dd4ac75e3c4f24d93f6ed5a00dd23e14c36edacfad3e2d5584e1599e33920aba08646464670b8854db84712c0f2012a1849b9aaf9f27d3a1cae9e27613fbb333bcd5d7b1759e70605ef2ef7784f7bba6a95fabab7b3dc45f0245891b095bd8b07d9a6755542d3b51043770c245b1a7b1d80b0b6aa3357d5c8da4534dfd07e5381a0b7ea4303d93b2f47ac28c52a7ed90e025542fa11b32029d3df58dc8391430e915f65455a83ca3da30ed90839d0251a6923755bb0dfb1d9cb5f7982fdc604d0e661a86b6d73056ab4d36cc494ab03210fb4650c72d000bcf0b27108582a3dbdac9bf6100e300b5efa780c658151e0477f8005603abe29ec0ffc8630419b3d2147dabd29b470979749dbc52ab7eebc005dd51c279bfcee3dae1dc98389f55f912c9a3ed1167c4b163ffbba725e39496e5d4213188e7c7561ed77c4b19f07995e58fff5c9b6b8d80c703705437d49586fb3ce021cf0748460f0c55e1bed5d32bc1dd0df402d7478adc14698d900ca0af29e57c90b9116140706c0ac6932e1293d660fecee78bc568d6169e8d9862ce236ab5c4b529bbd76b77d4bbafaa064c6b48d5fb40952d707e7411d45d21ac4817a18dea034f1feff2efa2e38ffb40be9745cef0eaa5c6b86d46422ca6af877572bee232d9004a9de33ea0fdd2cf77d36b486bde227b47f7bfed3b673e2732e5f7770e0246d4182c8910f63ffbc8dd6129e8d7d2389f7fbd5e9aa68d2ca50dda185e7d6a1df1fc6b7c4cfc67d24491ab84b55f006b95c2df4b3723a7d0ce64a9b267a6431e792d9ef3c4d76e8b3937f1f38605ef3af64eba97c49987927d8af65eb1ef0dfe4efba66f569b0cc0c1bdf42c33ea293293f1d0299a8b4495ef5673da7e822532f2b03c52b5a1db31d5078b1d79c035592958ab4a7226ab2d49e1ee3ad17481a109c5b024a9ac736a391cf29b5a60596f65943143e9249c232a291ad6d24dfb67f9296eb2e009e6c98baeca1cd2e1103b8c1fb273cfe2ad9585081d0408243ee1332ad4e982c2fafdf80143bac1eb977faa6e6c6ba7bb1c50ed2d683285e81de902999d6537a852026ad78b52f553a1314e929e84596e6a08d4c1a9829290269f8155d995425eea586fafbf9ea5607d23718b6ceecfc19fbeae37dea6adf7878a398b3ad27eb0940d0d03ba068e0e04b4bc90192cd386c239302662a8a602df0a7d4c926bbfcfe4ccd0f67ca1f40d9d393cc9be31302f8514064045c87da8d91dad35e0afb6f5e0a846b8d7d55eaacbca4d974de79c515e267905fe29e01479926a8f69508f32bae44c4a8fc16fc914a49e90659975292330f37a6539f735fb5c27b8107d36693160b2dd6e672842425be29b4d604cb3bb98c653f31483a74a8209f39723b3f4d21ed83280ee3139015bae4a24d023ca943b12f66c25d4d31311416f4707287474e3186a9e38036326960a6aa08e62def57d08958c2809155692f6fa95153f70a2a2338f35bb59da1b529579f45602395299f163c9bc838bd32902b34e39ff00d4f29eb63ce120c88b632d53ec968227b2afbe173e7fd998620c14852826b86842f8bcc1498dd9384304f743c758a2224ffafe589c587c2ded98bf64852863cfac436abc50b37eeb95256428a153a573edae05abc167581ed88f8ecc74a12b1a26c4bf2658b9372e7a8f246d22dc71ff9c14af385fc5d84c57e7ab5f40cacc014cd19af68cb2032aaf47853a24870e3083e915262b978d27bd33973c8155b96cf2c8aee53955cb53be70a08bd1241062daf842e655c2fc24220039c89cd5252c47a3a7d0248f919b03cd341fd02b2e809d19fe2009891ab3a7d603f42c189597a47768c0c1e3a127e69e90db0594bf463bd50833a8bf18793aced85d246b059e7890964798e3c13db1f3bfc81c6d10d5dcefeffd8832d8005e5a458de41cda2b0f98680e8e12c13f00e6703928cd064f5a13c5ad7eb1ec485caad7eff28012ef044fd4f820e021bfe67cf2718d11a3874cdf53b8ce2d4f4e59461ce3032c336459cafdb5b3d3398d2ad644ae5300650da42d725c04c17e4d4217545f75e0f2d94e33d91a446480b02c99d4acc4ad8e6afc0d25f06d226a7a11f171825532c10176343df4852c109c3103a67cab0d500d10616a582e5f4c59034b0808fadd6beccd716226346803b478c611f4014f650ae0426d7898b96e600f8606640e8bbfd827d9537bfa1e3008ee3d080605d6cccb8b1644dd32d0426d76e7e98b0b968f8eb5ee4ac3fd0f7f7d97009ca2a92c5d07471a95d33808688ab8989fd59305f2ecacf97e26b09166fd679ef7a5a107472b98a1b3897683aeae95e72c7a3d8cf11354b955257508ee7a04251f2ba5aca9e8abd359217b7a3a4504785de05f911ce6856db454be3bcc0732a42630b02bf36ca262f1c314a8d1d3f2dea943c42c39ac52711fa4f4ebb04b8f5e8d67ffd095bc2de468d3b08f21a78249b592f80b2685c4404a4db4358b651eaee51b4cb3c20e13493bc9803474e3b23b7f613f45ef6f210197b97286b27d6bcc734a9155f6ce3c0ea9702f9238226c6d5f01519456295df3e53cdfc68708e686230f9c1509acddef6258663e372d1bd8899f3f1d8a4b57118a358bc75b2373a91d1a108f4c89bd1f82ed748e48b1095a0aa87336d18d5fbc36bfebfa57a1799b9a36b9e09e0b8b7498db13c56fe17da0246b54d76fa2ea7ba9858568f7ba43b0f6bc13f604c5be6ac29955ca78c5b5cfa2d8255e98ed168a63eb7390ff890cb7c637ab6321e67a3cabef18b3e24f95e14f57d10ed2e21b96d9a1a8d70c95434193336dae69df2850060b559b80ad544b40c47402d151d71b335333f1f414c56436bf731075b27e2a681dc22cf6d68ef879de0894c05189325f3d70ba0844611b5956308c8e344a56e6f60ded946f8215a752c139140793851ede4b8612a3846a9b57084a006edfd5ae44de7f020e8ebeb354bc28f03b0d2964e1ef18653c6b0b00949930c6f861c8f2d0c8b3a4751ef7349cb7686e7105435d8194364b225e49c71633cf647f60a2c7e52e8ec97f722473be79f1af547202c708a08706758664ddf70ab9b7edb7bf39ab3dcfa91b915c1be8aad553b8ab1ee14670853c2fbc1412d2337cc09e34b87dd0edc2aaffb07c7ab4b9841ea0731bdfdec046d4394517e844484e5d3c6a9efde4d982a1c3627bedd13c0aa11632981a918ce54eda685f9b2d41f57743b293b310c187b1d5de71eab7db41531d7b9508e7c0a2cab0be9fc1e83d0cfba948d3f97bbc33a27884e5f4926c2726ef36826f1fcf98362ec2433a54f7664dc7fbf4b3cb4f91dcdec65e0aaaae51e439befdfb66da437c2b3d5dab6ce808a2e0a31b82435ce6b5b05b05d8acdcf22d74221eedd2ce74a1f912440ce0781d67838fc35c0278c2ac4a9026cc80e94cf189d1aa29ca9ffd6aa986c9c7e78bd2150e6fc72c61aa04e80d3c45a8ad27ac57dd7f9c63493f3dd7fd69a5445d84480ea28f613359bf6158e44b57edfab0c2a4a6cdd82ea5004505c9e8bd248c5e01738a766123bb9e824a533cc920371ed8d5b834ceade242762001d79f466632b9a3bb2d3dd45559c4199de2ee913fc26017f338f790868f6fda278c249fcf2fc270c163d4f56d19f3934f99aa8780fe600c6e4cdb3add03f5da4fcafb9524ee20e8edd6e1a0ed1ed7228f2a41905bd44d743c320291d241da993e75dd682a99596246b176c0168f43fa8a53a9d9d533ed1e754639eef5b07c0257a95b6ad4de5c9e0974059f0a23bc0ebdd6164ee867500295b711a59052f0cd976df6339a6653cd402ebe7e77bbfb79b25e93a70b4404b1c946fad152ed8233dbd9b111f0a2a5d0754f7729ef34bed5a1299425d5c17c819a29eb6387b6d41d3565043c4972d6c992a884e825922f1062bc23c0ad13f661295357d38bcca6d32d3253e6d700f0a5c44eca46afd3f99448a2f58df9f6400edbdc392772ceffda00dcf2b8fff45e833970bb6ea2e547ff44b12fa87c377b05e806691937347f60c8c8bb5c804da128a7fed86fbbf67c6a0ed882b19e35d6761407e72fb6400389292c312b44d60e84051ed07b42034205420e6e5c4f8bfdcb2140d37aaf59c6317ee5abb454d80fd858b1d7c52086c100ec00ba8dcb24eeca770b7341d0f82dadb22f9fea35294a34f9765470019dd04f63a00087510ba218953c96e79be13b0a6d3cff7014b6defa625f14c17297824bc47898c43048d31518c6f9a39a9ea8d2c383f960e29d4dbd1e404384fd909153ac9889e5accc0b1e844427a0e41def24eb78a696772190104c035633c7229894eb81c75236db0a4e9b09589c13356f2c85bcf683b2820346ad10698eca4755e56f7b69494b0607b186f943e6cc9650234b542a1dde4e3874c4bfa81339e1575c46533ab83ce202cf706686a5647d97ddaa72fcd3c5b714bb4ff301bce99900e8ab187c44e0f9d2719970952d27a07bd2ee0ee7ef06c34f0f611e60760f421804fb0a3d8beeaf58ce433b2ec96e2cb1251f3cb55572aef514aee14b7ab4d858fcb03ea637a9857af05f4102544dad86e6ad8610eefc91c8100cb8d99907ed365c8eb9eb94c51986cc8a255f985754a22ef548df1f58c8d6f86e9cb2e3827eddd39a9d2d317a5c325ffbd4e3df975914b325aa5048e8e1d1b28829a4a7fca5c71edd489de04e44010e4a30df30ff4a7900e6a7ad2e5f09f44cdd167926e5ccea99d718efabdb5d79462a44d0cf18f26fcf172e0687bb88415644ba1611716663cc9ab8d53707af29e11e4075a3e290167b72f490533fb475d17d0618bb933e73b7f81184f3e80be551f0e4e273fa91b168ace74f1d4fbd6cd1f71f1e6b3b5717815d988c88a90563efe0285bacf006d5e62bfab13460edcd65bad597282a220e6e86e5f550485afdaeba3c4624cb0788d208dbfb07ab4b31d31d738e86bb04bc71f641580a2d9ff455516e170e88196a454b13d12bf5f8fcc99c1c2359e9320c2d0ae517bedf70cae78a1bc1d48f5dab1a56c1caa7a9dd10ea13021ea2d4455c80ac792f1f747e108c5acab25c9db665b650315a7d6c3852c701d06e4f528771a9690221d839b28ab6e56c7d15bfe033095a7ebe31988e77dd27e76c5e070083443658ea1a47cd9ea586ff68803c91b8dc5cc2a2161a1b79f82adcb113139d371b7e2a869b3db9c7864d75aa4c70715db8af1116f3675bc9060f27227a5f5e136af3f9d454c8c8ca19421aeac1398d92c0dcc41d1171588ed3a3b74bc13ff22c7aba43f64ce72c424d6974231ef60fa23df60741b423e269f1e3ac796a9ac7ad101f4767c3326af0563b30746339e47d48ec30321ac1bbce4904602cdb2c98ad0f42387df7256133104cfbc933b38dd5ff6f9946a7534f7003ea9a5cb0bdde91558a84179183f0f1b4250d15265a2c38847a6fc9d7aadc075a42fa6207f6dc5093126589c9855998805a80dac4f2ea013484a4648c6dc1b902516771295dc34a19e8d32615a136019987705abfb9a40695150912b13a0ee587c8bbfa9778a541f88635d485cce55bb3f39d32cd4cd2dd482505b37817122a0d53c0c5949624336541442e5be9ef18ba153b77f372a0afd17dc53d1cab8047abf53b07b24b24397920011c7d55151729822a8680376d8be4352d1c0d66067013ef6c20d2fdf6dd3544cd40bdbb7f11c165349078828ebf2de2e4a24fe9baddb0389645e8b6652bc09d108d033059d31261702a7a612b518d95cb66dec820d3f477a95f72df01671acddf2160d887b299858a99e9ec99705d3e565ee50ff765894d599c669a95563cb7ec6ce62c44251ee04bd73f0eec244517a9070cbc77a698bd8cdf10d9059a98fa469c672452a0ffaa94ccfeaaf003452008ba6b5b4227d2c1cb6aaf672ca2bd8124a3f2649e2df73a8d90a8342752a13d2d50a42e01e0ed1b9f80698136f8893f4559e281fc370a30f70ab18bde61bab882214f3bd94949628b3097e02d9721d78697e4965d56d6abc038814fb3633252a005a6aa30aeccb37fd97a14901e4cd56f0aae335ec61b5cfce76924e6705580a809a1cc265e03b7d9b8602a026fd7f85fb100765e871f0f1e4576d75871bd5a3f502a28a8205189c731ba51d8993d40d622077935588c48b142da898bed0eff468d78378f8d8c32341690b38538c9c15c3afd71eaeeb98f4c666afa8002e736e4a2a8e53f5d8c09d996a963c89c7b1146660f85ce24677582a61c9d7d25a0dfc74f3501a0ad41fcaf83933f09faa32411ceb23c9668354d2d62e0e74f9ce6df33b4e51099b4471a1bfea5d76b56df44767c89b4ec97b6ec4f7ec019168bc3e5986b730d7ff41a620140ea69e25215519de02ffa3b0fabd7fa6646c297e361d52177bc25f65a2c12912f5f463555b5d8038efb1ed875b04e6fee027cf2dd1ecbfb67e1a9900fb926c4c6c61a364a0c1ad6fe7125f082dde82db5ee90ed51c185917cbd4c9ec0a0ae770232d4dc79d63b08f387dcd1a3789f720e7e608e2a01e54f441027c4e1c9251c75b16a887731b970621f411013d3f6a4369210a7c02784f47d8a2881d1d408a27a0fbd61ed962ac0b299ddb148df8ce55229604756656f5426c4d4780207b3ba58a3ad965c73e92eafc034e5640376941b55727e2d91926b39ed53a20294e82be6f8fa1fb450e2cef64d709984c9c8aba61bd1c7c9620712cb0730be9586347bff76c7606e25ebb571043f7c0cbb4c30b4e9cb9b8adef10e8706dd56aae275a653b8205d9db09be9d705d28f6900dc761de85a4dc4794933bd385b3d513ab3b84f289335947ec8b937ede33ace21d517fe2983c720108060da8d077c181bdf3574f02770fa8de83236845ab7d3eb6bf53ce091e400a27a1fd86b947477d049ff66db7c22390c0aca612f1e40135359a3044bdf73fc51d2a84971a5e99f22853e1400512209e726af180a43c01da37793f8a8fd2a2e3194469823579bb9bdb6fa98d3c1b3bc5f1d7c0023884a251d86d7487a174589407f6cf51dacba36b541c791d2fa28ce1d65c225096acfcc388f0d510e3261c06dc245796e613e1c65e8bd57932d90e827181598877048d301a11d7027dc9fea2c879e09335f1f37cf7f8d9037b649d053eb18a1ed87a4b31f88379df157812aca76ea5871b72359fd81b4ed4234090ad9db97a02e28a53712fbca7937cded3acba9ea777c5996c741d185ed1dd4b75634f3b5f71642eb204025534425117326e40da93dd4f31523be43540a9dee305bbe87732b57deb64d04aaa6980b6691148245c14354bd7a2f13e0f5d75b16249c384207df161879bbe6ab00ba12552a896f26e44479993b5690e2cff08809e1b69bbb523853c02b0e7466c7a65578bc0dc1e00d073116c8bd94363a9861ba4cb5b0c74535c5f6cb061860367f8adb5e00979780c0f0bad688774258cb816aece31b2293316a625c8e0b2c1d3a8341af6de1f6b51d833e7050bf19f5e2a4de2157562260b1f970642916f3a810abb2822839d3523e901c852cd60244f6352f612b4b9467150dd83275d0363e8f98b1ce3edcdccfe1b0f0d80740f0ce8b9076d8fca29a9ea63bc08099cf2c2774f2da897caef968490542c44b672505c8525f6dd54d825f177aa9da56172147d4e7a141b1576f99917fbc9493e0002c271001743667668b1caf0513c3313d257bc1df4d779ff241d7cb6c22ea05bc55e1cfdf4751530fa46487f25fe070d0525b2b60f2ac1717fe49b3d61743e04bf541d9c89acaddda3dabf952acadb1a35f509e81261609fa813cb0d752d083544782282c22ed7bd35e06f61a25b06d3591922de4166e113e52fa8aeec4c8a2dc5a17cd4c4e88fb25c27c8a433c9e24a31de1fef6174783cb55cca011f421bb1d16cc12828e14b0cbf35ec2273f3c41e0104c8a35825e07c551dd407e1ac161d1917018dd8c82bf14b8921afb9732008959b85601e2142e85236c65b6e0ab40f9c66a9b42689f1552f59cf23123ae4442b9f7403f8867546edb1d6cc0efa504c3d0da62bfa8593552e7611b68c99fa34220a75dd7c4b1272832a39ee64a10094c50e34c11c15f2ab55a876e4fdb08bddf8afad73b3d987969e442554442c403a2485513eddaa320deb751c9ebfeb001db792eed96668dbfcbc98eb812518fd39632419ae560303064a3901e91e1cd74965460c4a1b4917c263708f19daa224a0e084405060f002db43bedd6398a4541edee04777a6f508a1d429ac384a35cb052862119c8228845d2ca0c5059902d139d9c5d5aba684ff0f9130b56c927bec670f0129657048b9dfcc1821fe4ceecc78aff0840f067a25d3626d3f097e5091bc9a809b9e84841b7c7c8d1950396dd10797722f2a6dc7d5dd0da042eff35469af96da1813cc62d4778ae1081c4cb91e1d55e85bcc6f3d3900fafb47bdb78ede7b5b7659d3a30bb1791955b2c1ca0cfda0c7a09523085a253270bf507126f6642032d01e1088f5b83ad2d4c851157b0451fe40af89c0712ec960b97d718744871b81224fab279add928ce55cd6964d43778f16a6a56d08787abdb3a8113f9a84c7f923be3041d3f571df03a0298d966446169363505e685e6cf93b4cee3769d0464b3297d171c02b3f4605b573824adc18708c9664b064bdde23d061aea6a07f57b22473bcfe5696fde5e51e00cd1801303e11c357a9480b722dabd8a03130d102330c4504827117b150d641cf77d8de7ad7c8bc8080031f653ae47fe3e77d78e0763f8aa6b57589cd5664577be85ba2c642b7a0e2fb782a9febe94029a48330a2334acd0249ea228677186a560bfd635927fd998ec04631a766d4c1470fa05fed6090fd67d69f8190f7300abc8a61fc260b0a690f5088ceafa612db6cf68aaca9c05eb749365b29eef8e6f5acc2d7dcaa8a1c60003a9a80090e5e01fef4a1824ebf08d2fbe6df02d55dc7e0464c7904f5e17013c6e6141fe75e0309301a452d355001a671e4a52d27c61bfbcfdd5e024e63574a8ba815bcab50c0832901cef3a068954b9b80c6f9e17a354d50bf09a801d752bb2c59762b7ffe111ab4a0c60a002dc9aa1904245ec55eb3758c91aa97356bcd2c2ca53b254917a486013b2b284ebd58ee2124852418306580c9b52ec3c004d68031abf1370f4f4f389d8342186afb24cd12a12cd0470a5c567c4e5c39c7943f09fc7fffe340b6f591f85f4b4675550cddee91e16a5e4772e8e48f50d0cd7a7121cf0e6f4e4eb4f0e0ec2b345ec9886e67ae287946541b7e2903f30637b09e6b33838b7d3d7ddc501e8560837342a4c2fe17e18a7b800d838d2f969180821902579dba2d544739648a5907837954410bdc3a4a0e1251f07361dcfc353968a4d485c0539c2ff646e841849aac8d3ff0a4ebb0d394bb8ae6e5c5e82705ee26de61d2ca7e1023b7db16add608943bbcdd243988e098c7980a67d5f43e61ecafa770c0392eab78636e90578e324dfc2798231f40c5548057395f6b8418f08433c82431f76f7d0310bec01375e7a56542837eda9982c3f3922b94a9aab37e6bf595a8f58293302790d6efdb97e545464e140348b6054ad617f3065cd615c52822e6b53262402f8fa52067246fdcb472acd8d808f3b4f14012344fcffca5b960675b4ddb1465638eb9e1a0f9214d6e1e9c84f87f404456a0f20d4e8a0c1305e86cc8c0645345980e6bcc5ab2167451cb63521a121117723e48e1f3e77e934c55432214728d1ec04633b9f9a6ef6ced941fb45822711c1a4bb39e746464019fe4a25f112e53adaa1818194c7b90109364d0d07e84d5ca4d895532edde23307de1046637acef259454b96448588c6ca3c9352c3a6eb4a4570df2d7f4afaa3cf5d38d6c54638533660a2035811ec96382f590c991e7a42acd362b15e150aa024103c4d5af22485032ec7f5a414f8903300b18052ef943910af4743ae193a5b816234f67b033342199e5c5c52904ed0d69c201269b7021c99e0b35ca8b21b0d8696d2893ad84f7a777c3e9a6939deaf8136c0fb3eb84ddb98a618ca374056014b8bfff223cb5617db5cc15421ccdd282450f5fec732a8976ccc78bd2cc4e977ae6210645a6805871439a4afd41931c164491e38ee673f5282e8e5ba4b53bd6ff3e71af61d7cdaa0de4a0b024f6bce109183284ca8ae81c024c6b7e22422c1f5527d00a345a1f05098783ec62a7c1ed57fad2964e9d1c3326a29d4142102be564cb094615dc0cad78702e9156661e9c509a26316b9a8ac26498ee32a2a2754677988cfefc6381fed421f7cd8ae936999f94efe920c867c2c1f666bf46f42449df51870526b08ef1f5631a3a34161ff48403314ff21cefd3a1f4de3bf97fedf0d076a57f34bdf593a4e9e04fe7e41867a3c93a06bcdfd0c4e0e1ca4b17196ac23f8f66c23c80629918d641c0aacbe43c788c502dd2822944d96483245dd381a5a754c43b646e2ccdc4939b5fd7184eae1ea46b455b2a8e7b33ca9ffcbc066195700b0bef66e096cb7fbba5763d3d12a9f987b929949cf5425daa3cb58e753df36a904883548b7bac7955c4028adcf936f4fd80aa70d0648d2c2cbcce019987b5464f72eade470ccbef9b4262e999e6574aff09daf58d86581ca012d7ecd25c7d1781047940b81b67dcfde3b7c86cd7ae454c293dc74aee805a0b1ba756c0dca620ac79373aeee9c0ee34a75da640759999d0e37c0d3471d0a876ccecdd11518d2649b3ffd44c3336b81fb4c8e248e18911d3ed83e75d1aed128ad80b341f3e9a5bfc785a3d45a86ba140250953a25c2151b96e386e3843775f8cfa50dfc47d535279a5ee391dc00f2ae39285e641ad4877503fe2a04ad15d76e58de0d4d974ee71e56bd3759a4e71847fa12475b228dca88cf69174889e128a5917c001c8badff3123ecd391ba733f3aa7f2bc418a802b1343ba4a604641a5ac4b5f3ca5b8df2bf0ceedd791ce23eba6e516a7edfd7730167bb2479dcc2e8686160cf8622c5abb028cefd51fdea2529778f1ffa33094c02e407df189c05962b67357ea53dc72b1e1f4c5608234393eb7be3fcbf1e46711a738ebf993825100714e0019b60c0cad9b7cc4081f688242dbc7365ae20a1825995e2c2fd84cb978a2a9c465ccee1bed5138738ce59e2607994fa579169506d20c93d5b7638d31c68fd3adeace8f73fbf9f6eae08ebff246b6c93de2b84835d8b7f3bf92a7028408ff0da6589540a3891afb90c4018f1232ce458084b69aa677462dbf2720ad4852c227de4a8912309825c61f1ed1ec084c9283444dd8f14d8dcde8606b60951108e522e14d404d606756031221936115afbdab30bd957f07954958f0c4918f6810bf6ac4fe9728a36527986aaf6915fdeab07dfdd13ebd31be33b459d952cfb642297e537fd886e45ef6b2c7a8c47d583e0633554740b91c688ca3a6ba7d0ce10fdb9c6ceef5d4b3b692a367be31cb964c09dce2771987fc05b914f7954b84bb55d8aa6a2a3420151259e6098bfe3c39a3c6981c7f2158f16a875451c9eb4708aabb80ab9f4c421b4f042de92882a75bb3bbb030a32967e27af91360a9fbece613209bdaa655c1d8793472de478f5e0c04dfdf1118b1e760f7dc7618fc53790438a7f82c5609105e44a7e0c68bb263222ac3133335f4ee7e2192be33b66fb0d22cbe89500e4ec1dad674d530ee7314f8d726c3c1e5f171d87c1e305c51137bce3a958e3c90249f5807e58acba16135f2ab88376594ce00c343599d0f9183f482d8cfe08857491570cc09362e5a69fe6998b3332fc470d69332bd7b60803470664de3f6225a9984cda105237d4dece5c3f41465fc4623692d650f0e81617d721cedd397361e624b0410efd5f047e1fe4a35176ebf45e1edddb66627b9cc6f585784efa08b39b1665edb02cdb67db6adb68c4bb9cf438f317f588e957c8fe677af6524293fd90e01886c2fefdf7b0278f26375e80dc41c775e958a679627719ab59b5b5e4276562ba02e512fd87d5790fbfb6d62b7824e4b7d780863789084c3e848aa127001ab18421038868ca9d146605f49914e9876c5973c94d4c304e3b32537d6854576ae550e24ac66826015f19283c1263dcc2dc0d70dbfe0c72bbe4ae293f74d2b4609cd9beb3a6533396908c82d200916c3958573f15aa89d03e182bc5fe93596b10381d330bb513383c1c775ee2cb199c62a96ca4c212992dd77291607f2aac35bd5f522e2463e5b42c543af47cbacb9819d1e96a408b97eb542284d29465c728818f8055be1699693e4c6039aa14a971a541a8fe5e5338e200902d0f573324d29c855572d84d061ad1002f2509b40e4276f69d09401e0f21620285037ac9159c99d835477b802db212d606940d30b628119e94573ec1f2262cb6063a3cfa1682e7465dba8025f4973e524f6c25b904680154423e79f52ed70849f0b9d237af08471af397b1f58a8d22c15325b8980ac8c30b0f135c57c232f177ae1da58773364b84b3716746cab1427b14757e8ecdb4620a7c48cc3ee1b38d5a36a100fc40994ce67c306e57768feb8f4e37b1f563e72b7b0dcde5f82880eddb237b13d05c4ac144452633932fe202eb6feded80c20a747b420faecd8fec81a3dc664b5f4901b6ba5d167d0e083b5b831fe85d9b16567dd7428d95034edeaf293a8edf223360c069126d05fc4fc0b83a5a83827c924568518376b01b3bb3e6c16cc71bbf63acecb4e9d923e46be6f93eff0c075cc93d656b65fbe8ece4fc16cb3a84fee889cd6530e953b14c223448d0caf12184c5332203ec27d762ea547961133f8a0f4af42ab368806e014712ab6e501bdfe33f3ca6cf465d8dff07ce43f5b93e06a3d81992725a3c6374495d98fa451cf6338047f0de1957b2b2fcf351d485e9e3c626be8848b5dff09b88fb9738478796891384189267f7c4fa3e86734a8d649e98cedb5a86ef2a37b611f5f3c4124f136be7110c466c2870951ee252e657d85f19bb82866196d619a7b5639c6158077b5bf8487a40ff909b46c34713f496ea163d8fd249415192bc28b3ae5ddbc9f31ad355eba55a29c23a1970deff22d113c903fce7eeefb6440e0c0ebbb4c1c866f4a73f35af681df5fb1947701133eee2db4a3522d948ce5049f9b1963e7da11f22062be981d0730960741060ca9ef728249ee04853c73e3a93857405a707b8df6649d4145953f3e1f152a4b0e81b69ff4ba15518364cc01404e1fc7da2cc193ebfa8442e107ce87cb2ed084d1f48ac48332ad15c4717bf72fbf9d52c5f97c94a6eb863bf49cc64e2ea55e031da68b4ee670a07fb9376269d1808fb7c1a53486086b8bccf85935e70243dfb1e994ebafb2bccd980b8ecc77603fea51b57f4ada2ed7a07fc4e93e6dcb95123465013db3f790746fcd203f3b97213ecd9f6ed0b13855fa1f7137305580919108f7d43f853d42fc43088b7e214664e25848d4e93bd9538db0d42a0e7568e521360355893c697188da9c27d8f11953a8a3edb123e93724ea7e9dd2443b4f617848f3cf7dc717b784975ba9ccc35835c4af900739f28bf8545453764dea50afd16f863ae6fbc7a3996690e140a159be6e07d5dac3d86b5dbd4c865e2391e5cad1f5c65555bbfdae227b10a4883a9bf4b0847d2d4aa9146db4ac64b0620fceccb8c3e1bc6100be12ed17ac2847e2c07172298823c8ebed4f69a916c4266d0269c952391243d4da2eed9bbcb5f29aa55a498e5c3b4bad6fa86adf58546692c09ffe96b212e555bfe4b0b9d522f05049787340963483e9db59fa9a789502e0b8d9aa34eeb1ced3b456fa2eb039685a0d20a5d57f1f5d21fb498e6041b4beb3549b603ccf70c5896c6835aba72de2bcb542aa59e8320b3ef65a54fb1c6dcae1c8ca33e56cbfd9cdd8a79549d74b8e007480d72e82ae0ab1fe642b6a568241e07c4eada761196e76a444f51de88f4b1aa844901be826efdf89e0ef8f4795b24a7fe4f57760718ca7fdbedbd76bb36cb9761d89980b3ca96e44238c101970bfbdba07d290ebbd156b5be5a830e87dd5b888d5505bd3c7527a87bd3676a7489ac5df9eb00b8764586f90c25af73b6d505c00ad1d95d042184c25f773fa5f608ddad475f438f6711af4e28954fd642ec39fa0d716529b90fc0f37cca1a62150ed22a1dca5737eeb61f33876d579d6c28fa2bfbabbacaaae1abf11fb981c78e71988b024e3fa151b5157510b82d75ae5aadf98679743780fd661cd8ccf7a391068726f8f6838c5f176092c1d43f24b1503857b94f89024e14fc88a5b75f8a0e1b360ab1a5d4f55fe0d615bf0ba611290b8bb1570de9fdb403c34b6742ec04d934bdcabca661f2e8f3317b3ffc9bc8e1899c285e705bb24197a79e61b8e02126c076c40d78c63ce740f8f5e30856115f4239b73c8aca74a51166fdaf7bd702d2612abba555934c05cd859510aba1282a0208f9ce889f52ae765f5cd5220615539244a6376c9d3fb6cd89798018f7f3b6f0f83c297920b48718fa3e2766ad27d4968c79ae7378be8c28da6cdf6f566af982f309901450f64c8e2d4a93626a6f92aec310ac6f73a2904dba1318e2fb5ea0495d41328aea72aa3159a284bdf5ee7e92a817dc72d6b3f5b212ac76f317ccbead8f8af4ccdc3f1e5f39923fe928ed426e6b37dbb86e7b0d2a94367efc84c4901412d5017572e5d922e13a0d77a227f42c9838d6781776662d803a9a4d8036cabf879b41377427e8d849614c8fd5df89224536ef8a64510914efce0d17a0c3587807d50219ee324e9f39c66542f0b50cd6ea3a7778e2ac0c9024823309a381ec800624e6c6a73d88537caf0ab5e872bb873356bc17af416fbd6915e4c290aa86ca200a01f92912b76dd03c45e6ce21a395af3b7aa11be5f70ce88d450bcb6aafdd17d6f880b47a68e2cc299737a7e47aeb0dd3aa4dff5980c583195bedc475fba3da03a17970d9349bb52cadc9f4f586eb121e5b3a8898ad0c3ae4e0ac64c058f0f2b9acc9662633ed1221d3aace1e3c49e7fe4b1944c564bd32a71e44c4c72d44ba57905517aa553b851e8faf389e782c97662f279ff5ae74ec4fa573607675e905f9cd185aa9a1b1eb3e6f0bfa9c13aa230266e2f2ef0de49e814ca5dd2bb96505a3af8e860671b87420473cdbafad020cb55268049b48878688fbb70e8496c7a30011841466a5628fc147aaf84ac6e6e9e47da18705105a5fdd11316cd8940d05710546869b3a5fc0a69b505cabe9f5acce613b2e1cbdf8124daa453c77c8972d6eaec5c9feaf89ea67908c542c83fc89c90a6602d31ef6dd2f9a08bd991fea1bb5a9232bfcd79081a58f0ed1979365b721e2d5e6499ddea47310b90a840c894e70531db9a141fb41798e02f3d0d8372bb3e038861f19e8d856e5a1b739e18e8289a432fa6fcf9cf925665cebb539eb63b4f0530b83457b63f6287cd5d81cdce9813630c682b9a9145be93fff280161fad2d8464433e36fe2de40ba16b3af515cfdef90005f48c55e3953451bd7486de010f60d8fa65a59389dd9969209082050841060c5e994eb4ab32723aec293abb065a48c805b9f64199a6f65a946b34ec641290037bdfcec3f9ea8e83a59f5da31ae6f72ac1f741fcd9c950dad812445d428d84d1b37ea8c31fbfbc966d3027ffbe05f551f88af96a2c23811bd81d0ab6199e514078b805118ff61ed7034abca2083a9246b21a560a145126dacec26c0ec7ff5d3e932373cdc3f982a0e7453c6c98c0d6f2aca6b735a657e2b46aae76b981a54550e33b98959d9747c01ccf03199ec39b5300f30269f2fd929d2f1bde784b470389102d527b020889be76ecb5bd8e03b08ee0b11294b7e284f6369828f744ae3d174b00e34b907e46c33986d32476df7c980447b7075fa7067530ae141f7d609118abd90fdfcbc878add9bf98f29b05aafd2fd8e80696a28b3ed4175ca3704d3bcc914d83ef7540580fb838276e31d60a8e8bbb1556cc7d79a0082817f02f5cc634d2040c6680a0e4ea33b922cf3b9f2e7e5d14032b8efffee58931214120ca761fa4dcc4cab77218e996fee5edc24856a2290f57c2b8ee3851d5d91a5bcfb8a4753b04e7f52f37df57ff0252d6087cab293e8d70ffb8f75f0894d938d0d4814c03e364772d97091e5a98f60cc965ceb0752a28ec26b811feae5af6f3a4fc7b627cc98eb1c3495aeabbecfee0ce24445248a533ad40534284baab0c79a4ab89e29913ce790b947d4abf98baf89afcb76af9ec8e242e41a3bc5c6433426a09b8bf5429823d77eeac9bc82cfa0abf5c1aa3c5a60f39200339b5415548b644c12549a932391846df4e7b214a1c69a525a16b2947d4640cce0fe0cb540207ec45d7d4c30269e614a074b877d26ae0d35800a7cd56bd113c7207ef79102a0f37a2d142ea2ac3d4de3ba6867ebfce1cc85720ce5380b919e787c4462b404badb908ea090f283a22c6b1735825830108484dd761dcf36bc7dab6c19562af2c8726174f9bc934206c306bb1dbbeb73a2d21f85495851c1e7b9e98e9dfacd4514f16c2c5a1e91df141bbd4c4deb5a494a6830139a674c92b859d5d4e3e8694f758f34bf333482b4e55835b09be71b6829a2682d1476d31b7d67fa07d55bc0cdca982457b2b284ab5f7506faf6bab73409a77d0c1781e18b5f83a329cd0d2d9356ed47ad40b5bb0b4d85a7b770f6a39a128050fabb2c3e707773455408978eaee21c3e67c29e338d145d641945f890e67ab9473499ebf4a1aab0ef3ac08e6e60514307fb1abc03490dd0c32a9f679cb98a2417ec1739c2ac79d8d6f382571c9718aef9755e04423c76951e47cd099bdeb499aa4acb54cc6beb5ac50460dc25850700d7b707b9107044c2beff8932be89c8e0f06da1793786bc62df36596e0717e583c501f8ae9e57fcf66ac3d713599ec7083390024a0f773e6aed936500c41ede1a0e2e1607ca7541271fc474bd24349ea876c2de3941790b570dbe58f7c993a0826afad26e6dfa22a312c2e70c5aa6c445a430f20be7a78e87b18e4eacdb66d575c2ea5a85d57475fa04c84e09b07d918db351a2e17ace728b0d59c36fb744554a66c464e03a9964281ba9e05ad82bc1ae8a8452f5f8c2e2d4191c37939aac8418c4ea46dff0c1ca677890958c98fb11dc0115adacb4ccb291779719feaf760cae930c3469ae1e06083c497407b1b87314273422caca0b3efdc1d027452c0f5c328e4b3a1cf501238da34a1998120b75d9c34f0db764419b74b5a8ed86188495abc05fa9cf3ffbaadbbd0e86a65804a88d8ca67e60eabaff70fd3af48c5ba756bb0770e81d2f28ac74e321632fa2777d3fc8935959d24b79658c1a1bba64739c698c53469230c1bf024f50efc9d4bd2ecc55fe80acd837a7d209314f6df4a23cb71abf221d7191e473ffb7a02ef8e12e2922c548023170f7bb302c892363ac86e78425aeddce62c37930aba297f81cecd65f8a2f5c7a90b41b9a2cf4021c7b918e7c19735f98dc04223ac2986174fd0a3183ce569e2de6d1757ed3dd7e2929ac97ba050206fa3bb614f054160b34729e4092bd89bc43b5451612bf521d542dbc5022921f11349254529b7ec1fbd0c291699fcf4bea2d13a6be035a7e91d931e1a0ab608c0e53f1fa8440ff41049db85f2f70086d2223232ce7f0333f244dd8764310f55f14f046b954daa1e1b13fe5471072fae097e7692dc50ffb00902b77df83f40a8871ff47c315452d53fb0b227704d2726d8314a2887b02ba667319db3d5838cb4a38f769f5052f44a2cbcb9fafba282ac797c03bd582890541a3db695ad917d76254cf00e9166b21576a557a8208c3dfb905ce2b16a510747168db1a21d82a10a65152c648f34aab23a642abe64af4c3f76bd0804cb3fa7ff2394cb6d6da99a6122830d9b5771e05161ec9632665f27e55e7c80911918c4280f6fd43677a0bfc2884b55ed4c541b04246f3eaa1d43f8c1887628bc998c2e8d7e38cbd0ad482f6c69067e1eade60401957db0abee95031ef47daf06846633b8786cb2bb68807be5019fb3b6857c86f99ae7f28f04b2c2aa7455744411887f87ccc99875c462c54153d8f58611725f328053d23d37c66a1119b8d4219ca449c83b7dfc17d2d97ccad8297b491dda9f90e6fdc04565ecb721ff240e138ae9420ee9fc03d9891e5c984217af121f43c61bf2a6a40ab2362e240bd05735c9f9593ad9c426ecc35c46ca82de0e8f27b9c7ce423323545f2adcc27cf4d7f4f66faab3eea14d98fdca4cd0d1f6e75f4a655b70a1c21c370f31033a20278747d386fec1e3f6c9faf81464e813f9b61907e592c11a1212d364692d7a781139cdf200c659de4b86ecd1ec07f1a57de320e1ee015e294f203853694d2115f753b1773a31bb2808012bc8d583c50d1a8f982f4f96801153ebc90c8038bce51768f52d1b0423dd2370ce742fea90e0867c6cca7a5153d5629c49252f8881ffcaf292cfe43bec7338afb43da4325dd336dff3240c9a3c98a8ae405ec747a61a3941952b2ea12e2b90c94884abbd6a6d51928be30d7c49829bd877c77f85220cf4808d1650b12fa22e8f316ab5afe0a6a5786d836f41120b15855158b73a95117ede7b950898202636aed469d818d95a7f3b730f5c52d53ef1fb1b2140a1544e8b9a98094219166dbd332cc84310959ac282d1349889ba6334dcde6cda1cc6a603c21db8471bc4e747c1f5eb27dc3d021a2287b9cfb44d3f03a34f1d18305a781ccd2ccda9cf52a9fd9d610f6c1f951dd5e22c09e6cf591a5ea2b10ddd6d75eef831c9689e75d293a49349850e14c449edaa5479ee9e92a649531dda1da1e7502fd588f5aa1f060be25a291ab20bd29261ac02d5c2adb536ef2122f42b2e592c5fe267e18fccf6c3a7e420800a81bf5148891d1da461c8acd1ef542c23674a501b20ba50a371dbb51af75495b2f1c17c598b255045c330c2c31a9d0e8389ce2258d294c489558944f6e09ebae8c08e9b185c23b4cb1bf80ecd623bc30e63cc60896efb61b45b9ec13e14eb21aba7fb8d0140581b52b2463351e2f29726ea17d965de642ad9500e5fbbb7d7d6cdbc1f593e081e48ea9670516a66039864956f952a52af4cf2fcc7115112351ca6b939417643642c73c43dccf751539fb49a8fb05f55f67246ec6987a72623b00a86b55e38b606f6e2192790fc1ad56f00fa02aaf1a3a36403bcd01b9fd28d685a5f516b2ea063c7c6013fc2567287538d5f1bd000d8c66c9d384fe7ae1b0d9a6cd1dc54e8436156db077e868b85f41305737034368da91f135945ac82faf5dd0340ec3137f5cd38bec9e2d5924411a49de2b16ab9777f38a3f0fbda4727fd9e67a0e4d31d2c75141ea413422f88afaa303038610d2b88ac7457d8347e0b8b54c96b5999721040ebba64323e1e68622e95e999cddf08822b253d3e615509e833644972ee8e7b635186d1a5bc610cc1f1148e393615df28380d012db8b6f82261e93400731386b7defc4567fdc5575e0651ef31b414483e507b196456dc7a277cf400cc48fb12428aec0e087081b4177552d04faf0ae8a1533c44ae496bc27abaab0fac9090ab1831c31e9002456d99f312e079a55d90c23e4accccae714375edf02e1768e7ecd1f99ed145c8863cefecaa492edf4fb3f4417844248ff7a971684da388400f432c4b8098fd5fc5514304f5ad3d6b2063e41170a57323ed148cacd9dd37bb63e1205a980c78bca1c8b0b324e097986b24b525028078b40e646dbe431bd93b00e230b019075d2e992ef4db4ffa2034a26f9418a7709e536b6cbd0d11b6d25f7b36549b2952f318b68d263482b6139b29f7573e5ee2f503bbe270abd898752c1511a4b9add380518a395d30c6bd0688f56433e0de6e992459db85e16d1f23cedfead6d4de709db37e9e4b286f892b494d60a32f76058e7e9fbbabacc1bd44df54df481c29f7129e02713c8e46167e2a04b00562b1e7dbd9c1e0a3716295262644873333f6b4c35ea8b05c3a87df7730c124109b4ab3eed7b193c4e793c8a2e4814422e8d82949f6744b137ee61b77f338a224eba7a474c894b249cac178771b9bdc6034ab6b9d8bf4655eeb3fb1bc687b067ff355ff86cc3f86aeccb07b07ea0322f8c7533382f38299673cbdf424cd3f06de96f776bbd71d84385247f8da755a8b2f4dfee953f5c78cbd143755b1d7b58100bb48f50ac928ef27da7711e6a9909b7c5d931ca3171e54ca4a6e4720f69589522fd9814901efe248c6423b938070249a44fe88020a46e6a63d0727e5d9ca0a638d7435dde23a1fa74953f0408c8b044b08b2b79a49f84cd3755c6d812ecfced2f22d6e380b316d50621e1d06eab8b95ef0d0f2da2bcece2e2a3ee84e6fa47eacc4f3bbdbba4941be41c8c75f20db796502d5c1e3d05b159041f092f7e82d58da9887dc3ebfc0b179ce1b3b350ab476ee438c3c796d47947ca229f472addc1e37cca199e0e0c4eeeb06c0c3b6c58e1b8f782761a2d00abe71d14581dd85a63fe91254139ff15edc658ed0eeed159b5f0c969ccea0cffdd87780e7bc0ca5405d4860090c9e87250ab6bc7884ea408ad46e3f91cea979525d926ba24248ac24d137fd537a7452c5cf20d15a2826a1535bbc2027345e7ef95b731eaa2febbb9411725b3d1b212b877b17b50036204ae3719276b0c9c97c5c5e8fb694a7657e51ca6291f8f2ea1b34b1a87b8eb51c1090d74d1fbd64606b39c0f6a52117262a9c7a1423f0ac7a51ef7d5705cb2b007b22ae13e9f4fd06377454520a2e06ac1d3b28ede0859fda997bd30ce515ffef6c7a25659235c18877dbcec500bd92c4fa11f19ba02315f2759ad824e027fdde8d16d1e271b0c3a21f8eb8a801bb76bacd71942ae5bd0e4205d6341b355f6fcdda75aceb6e7576abe1be724637dbcadeb77bc9b8dda612aa1dc5b4b622a1e606b0f6d393172400899d255e1231579143df0689a75209169c34c892cc372b87b918bc974580a986ede33cdbab3097fd7b772824c1d04d5d23096e9bb0d5a6045a72ec4878f0efde6e022190f72940ff4beb0335dcdfa3f01ffae945906d5b286052735bebddc29495a80629e97469d771a3470a2e06d609a2004f0c23e1ab2519c503c8a423f773deeec154da29359d18338454cf1f513fd607c66fee3a83acfc606bc39d8f85c60c6a6c44ed07c3654216495021828bc9990792d8742120aa49808c7c0016f1d0c3946d34c8094beeae3e44dc44060603f9be0fd646bb8bbe60f2b52aaea668d4e58c3db615a29b38994aa374f75fbd4f6b4d46b4f8bfe997dcb46acf041c1210c4a906f9f00f501f8931711a01b004874b9a8f3a302e03376a392ecd98f7c8964e98f97b501b645f8a10ab7d311bc3f18460f01a8b3209ea195af4099260efe5d34fa85e64c43744418ecb0f297f3f76808401df2ee0f8670644bf26a0de70448dabb01f7fe461d880c68b9a12ca0a050852e5a8efcf5ae1fe406057af306677aae02a5312210e46ee1a13f71c14f250efbbdf4045c25cb17f8497713aed88f744f2d1edd6215940d35a2ad6c801482a15416d8f80042386e85e714d28f0519e390a1d2b16ce10df74889d30786b7e3f6cec1371b44a85c197aa2c9b39ccec92d1f78b2f7938af4569d184d85b21c2491c017b01a5cd813b03e1356be551d426313b27cb42557369c697688cc8802c8312c026f291c5f0d49e51c2166eaa3f0745c033cc1b5cc7ef0501a9041c08dea8531043c91dfed994d4ab0af94963a8d31631e25b56908e7ff9dce8963e2154d11d95148dc45106d0519b0da656066535a9a25d852c67d890e2da29c8e3ead5f15ed5550241cd158a64acafe33846f606ee27b8c85a5966ea33c85c2c3763c8d1e5ed7190dc8688d15f92bf51d5a4d3af5a348e7eec7951964e040255d2c70bbfa85c72d42c1dddc88ed2e396ca58685975e44204f3f6bfc5a4e6a2968bbb88e71e507a0f0224050120b5105ac2588b2de09f0cd4a134f38708c71eddc1dde88c476f9cfa95db75992efff17f21ed1063d1dd7708bb97a99e91a3b49aac3d09dda0715487102f441818811b64addc895e10c55350f8e76488f8579f5125e92938ae2b36ef63d5336cf8cd34b0faf3f6dd92056066ea23b06163dd2e410ea0caf6ee0fb74ac2d417839914e4b32509eaa44fecf71c8dbad9ac55e261e16656cf848784288a30d493319d6666e3ee7b01279dc00565142a3d165b1ed2f08353bd29d0dd0c8f01dccc5947630e3a11a34e8825585d69da2bbaaaaf6a6107d8e92858eaa36070bddbf78f77075adc9dc0adde4bb3c21655819f9854aec7ee590e0992170ab1e3891c8ec66f71bf4ad6c5bc9df4adc4a605ec172bd412d0179623f5d21c353e1fb6f0ac1980602bf5ba83ae4db3090031f2927628120c733d97680e0e7b891e3b9c4c11557e9676ba4e5571df9414b98acf195d20e492a87cb1d5f800269887ac5ba34cd28c79996d83c789bf50af8205bf722c01fee91dc3123e9fd81b0b9415f6b2cc4e2b8569aa88d6207a400e6ffa88c714cf5d1c0cba87f7062bfe76ec3da4138be35200f52e0d4fc12bc9dc1a083c8f895e04c472077fe433eed3199cf75f408a61deb0d551115b15ff73418272e3ddf22536e31d066afa0a5219b410761d2e2d72d1d837bbc1e59a500f0e5048b0803a052dcf6b9f4600b4ed34dae9f9b9841b054102d48c32c276e59e364e9e2a4bf00548b9c6ceb4f0fcfffa61659aa0d5920220de00003cd30fc2be9c2b554de15707609643b34fab4c5c055983a49e14cd245a7c4f1d35a0b06022732230af72eb4c1dcc0b2b090063c7a901f784679efa62eb14f76c05d6648e8de9cc45c0de4a1f0bfc4f2e9289a98517a8b2732362372a273a3bd44e665be28e780fb06805ab1263274732d87c1140276ca4772b2a29c26973acf3443cc335675f3f78e56ea078ffe6455a64ff96e50a45c8cb535d36f412b12c181a9a83b71f209ae4169384b63dea2a4fb620f0c327525705bdfe46ddefe3e449979a94ece178b2cb74904e930c4e2d144dd8083b1392fcd7039c545a2a9bd494a51e2a7ed3e208b020f680d0f230c75f2fa0cf397d6245d549b3b70d0bb58da58c1f5626ee17e26d14885e3821ff705330e9ab2dd384736a4b4408c4091276224f5e6ca7260e13c05c1c0df54408cffd1f77e8aa0d37f96643737e08aa3aa8c9b14e00eddbd9c4e797502903e15e6b6fc00f7c7fa4ff3c3eb8908a1e34715027df991ccf80e1f1888953c775faeef301b2d7d88ad4a22aa44d937823a38ab7485c85342d030f250dc0f1aff1e7679b88f2b65107aa1d18f62c9d31b4c7bb58a972e04e6ae5b1403a72654f1fbac80c15b6c4537259339cb2f113629a966db7ff7a160e12ce23ae2f82f876d6befc30def4857facc0677a0ec983ae478c0f14e9fbc30776665236b9bad1bb03a56f92181f312ed87efed875d593c9dbc334972a64d1f12566e984f4305365ef9c3d2bc12ee45a4a2a179011f8511ea4c4b5fe778e55632cd63309336006100fc1fed98dc83d8ead95ee8bddba2b7be25dce060faac3bf82e25ddee1cbcf33899313089c2b91938224e4d64458434d205993a43741f1758cc5a9b9389a2d6eed866c5d47946c3e442072cf772ed19bc3251a1ce5013703e782cad97333f955aa0824fc3a20becbad8e07639d313e85ef0ecaa6c5eb294357469729a997aa62d9322a3e22973b6170ee29893a443f35d6483f91058ffd6d86c90c99691f972e5fb743925713d78ba8ac197bb5cd3385b027865688452b80817ec1e811c989cd830dacad5c799bc62b2651b22fba3e25670ed7c1b73b10973e0d94027bdef878c201df8fd722de1d84a081cfe47da2391bedfa5ffb04ba4143611b2a5bebf9944ca219a9d8ffba2ded44aee0ba054b1550c499802ca5d1188739a305de0a21e65df558550fbd6a2650432593e77391da176a639b902fe89a4aaf604409a1f663e2e84ea90e2015386864ab0bda1991ac41c681b8f3bc6dd0d90868ddd357e71e7d85bce9074c0babf7c31bd4932667594101add1299181d0f1e0af91e9f5f30e7878718811f273b037d1322b36752364a93b005a2ba9db9c538632d27d2c81bbf4a912a2e88b6c84ad58e8f2e25d942586a0872a5bebeca64b8f4d2b8e2104f7b2404b18cd35e41424de3068cc2fad5c4c484197c34e820f3ae3a915cd52f8beb26a12601c32b1b731fd6d0173212babbe50917c841a318bd4a74af23534d18261ecdc793663e30e1e1a1545dd31ed380630536b5f471627302e118e49a8913dc509339f2e99b19aec79d468280d5bc3688ea2347e1f421d0a50798494e82a05f3702425028b25ed0f18528bdf6db24c6b721f9861cfb06dc9a75e9404fb0928eda2a14e4353d7e49420c5291764885b84cc6cc77ac5be142f42b474bed5b642c888aad6e7af3f26783b32b5cbb66a7dbce00523fc85c64f4ba62acb51e3dc32791c726b37d1f3b5dc691b9a7374d33dd32d8a227d66e2fe952762e5177400244240d091f0249ee9e4cf831aae60a7b445289b4aa11144dc3d92e0bbb544be68f0dba1e850c7f50085f4c0a19028e18012895072bae281f08bfc1c4a46f1bc43ec4cc0eeec2dd432e6237ae557bac06ec31a7413db35c04d817bfc2fb7aeece8b6b786a4464734cc48b89404c91d233e177cc82ee97cdbbd0f5032682137fda440bf02c349f49d0ccd84180b4e55eed91c21d422d300c2da276a8abfd83e67a83bee8c0dc71acd0dc873f758ce0dbad17d037b780a4a221fb8e7caeeab1190e55d642a8d8a96c0dd366c90bd60028fb108bdd10bc9d90785185e9a2223f9950e317ca743ec040cfb3e1972cec3008504cdde54dce3781bd17723621857cc1c42a1aed4f3ceb61df176d5afd0f67d026e3bad36a529bdece1856581add07ad66575cda6e26f62d61deb064363dcc3d09874d867065e0c3311c38aa89b4e43e0dab04a886ea39b25d67823787dd77a84fa4ecc1e546356305c4a92505779caa4cafa047ba1bb57177f206d667120ffe27d6d2aa9781be2ead063f71927d020e320c8c2c218cfedb65211aebf508929413825b3586786c72140c1cd0eb96af3fcb2488a4c1c1cb06d3700733a874916dd9cb3708fb98bb407ed93bcdfa936b0120d25ad99b196c1876e93a24da93ed6c0326c06689eb9b18bb4ddf10a5910f26b4e203aa12fb9c59305a954d07460ab51c74a257ec61d1da6adafd1524a5e2ee9154fba0ce73236d5e971d7924821cb75af33fb4b53ac956000220e10004f0cc198e75dd8ffbab6951b2c6e1d5b5712fde8fa7c150bfc96e7b77db724b29659232fb09b609900937959f48a9d76dd52a0ef03a577134a781299a78c3eb354573f1eb6f608a16ee10ff8633d88af314f2389f87ea41be0263903799c21ed35bfc0b8a6f6b0d28c5d45b54bc579ac4a1bb4d9c6ce734bfe148f3d7f1edee0ec7eb1a58dbc58437133876a9215ac7f2c53ef31dbb2b7dfcbd9a635945155550a1f253eb4013366862e7ab8fae0ae9483979a840e308f2ed1dca22aa366fa69df65a7bc169236710f34608eee8b9d965213e367ce138ff1b4f8edaaad5fc8e34fd9a778ea57b93e2f67260e79cbbd7f1c52a2e5bac9eefbd36fa6e27308f759cde81b5a3565a6b2d6735897d731c6adc6f21c65bd71bc4a411c494f1164813287f7643ef2f89b87a9eebee70675df3adab9ab743734d232204d24b2242f43c005e121102e871af3c1d5a15555431061b3d7d74d8aba7e3fef46e5890065c18828e061cb45737815daddbaf9e949dc8a3dfc8455973aa99300e41ceb1f4148cabc5e10efb5b58a3c68865702a4dc475f3a8974484507242457a3764573d1cb9289b7c736a02532d6e3360afe13ec69714ead76a32432107e9a7ce4305c620f2556c285b1c6976d8a76e9fe61cc405f78699ae952037018adc04a1242421379104f1e2e94d9f7d92027a6de3ed456cbb57bb4ae89e542585c3fb6e09533661ed13d7675beb84aef6c5111b042e37a16b429d5e5b9f7dd283d9d5be2862690f275df5bb1b74489dac83a23bf2c15262bc6ddb86b76d5bb153ddaee8c12b847c977aa57856eca46c90ea49f5c8a06d542e9c13f44ddbf4095cae76b5a022bdbc88a23b4c3d52932a529dd5191432654958100c9603aecadaac6d551b941d5a59036ebe64771d8e3455fa7cc3fa67be1a08400d7479c03140c6f49df9e8eed29149a3ef2c0c93463be757695ea5da4d315cad567a553728d2c411225e10451475064792bea085226c688044162a558de2f7cb1782be7084ff02d08f2d31f864d038586bbbab3a3f64aff4e5471fdd0f50123e32899f116c75ab8e350c8e34f408090a190e501cd91de070748404850c0728e6d1d136ef0a7490c2018aa3a314975f455d7cbcc9a4f2b32565b16dfca38fb7ee23954a4205491002900f7ae6b4d3ceacca1f10ec144146802da3dda43834e7471ae95e41ea92d121280ec53992d9a02b8f1b5a5a4687a038361ab7b4a86c26e75aba70cce13be73a193f3dd768e9dca9dd543813a8fad15b5a5240a042d7e11c0327c20749c81fda536afda8f166aa5bfd315ff30d771448a3e038af83d367d2b05e6712f3c7b525e4c0445365123f3f264dc3aa2d9bc2718737f9a6ca2a8b370c6622e4b1eb747ceabda91655f9cb3dc8a34afe54bce5832521eb523db946aacb38c8ae6399ba2d1c697e73bc6d5e353781b56d902d22914795aa576302bebd4a4c446e696a6407f945fd871bfde27206f5176a3d1cfdd665d8820acad5314a89dcde45e0720ef20c2d4e3f3901e4844f0d03511886547948148c7ec6cb2151e879276a7ed45a5ad1ebdbb51acde58413461f051d959743a2d09a1ec8724817662f873831f4a3a98a6f7ff1724817749efb54dc870e34d553d9c70e5d2fad4e253001203437b4d82d827228a574eae8d0212a44837024508bed37362822b2a44ee58d7511c5846c50abc5a523d50899440244ee9cc4953d4ea9c53e42f2431e6b0be81593fda4380b4771959fb889c3662fa42223f2e5cb2ff194af70124779f6cf4f6ef21f9b9c988be7251f3be79b6bfe33457cba74f94c6c33d311d3ecc896d4371f12b90489bcc416747e53ead5b81d2df5ca74636a6d47bd9243a290f4ed2929c8230dd25a374c1969e3cad9e179693f1a0ce7f44af66a6b6d41bd129231431b51918cd9a13d4764cc167e7a555ff0f253c0992dfc6c0188c59bd902504fafaa0b5e3e0b7066d6f30abd99d96be6d3ab6ac4cb470167663eb31fd09b99fd0cf5aaeabc7c1538636428e6de8c919851af6a0b5efe093863c448d6c29b3122f3e95565c1cb3701678cf8fcc8e0cd18f901ea555dc1cb2f01678c00c156bc1923b0a45ed59c979f02678c24cd54bc1923b39e5ed522de488f91578a3763e465e4a85755052f9f049c317264048985376304c90851af2a112f1f05ce1821325284e2cd18293212d4ab8af3f233386324c88890ca9b3122a4d3ab9a8297ff81334574764ebc99223b41bdaa43bcfc1338532448c8c49b292264d4ab8a82976f02678a18c94abc9922329f5e55d717f1f9497933457e6a7a558578f91c3853a4c666853753c406a757f5042f7f03678ae0e49078334572867a554df0f23570a6c8500ce5cd1489ddf4aadebc7c0bce14b971656fa6884b48af6a095efe05678a08e1f9bc99223c3dbdaa41bcfc0ace14e9799dbc99222fa25e5512bcfc09ce14212af2bc9922457286fc992240bdaa365f04a845f9334560df793345603d55a959415ab3a4ea03f45d572059d4260ac9a29386664929391963f22e82c7e608150a3209e44eede17b8813383fd6214d15aa78ab80b25d2e0dea95d0d09c2ab97937aaa441aab459a7e615fc1182b7be511b4a593cbeaf77765c784bb66841c1205ddac7f035208d11c919ed3c288b3621b514482ea8ac40a7a0b52006da0d88487ec85a4bce50a22cad07e9d2be826f1490e0db4d52906f384e1f9de6b166e5a2a647bd92a36a4691fd3a75ad4559d36602b528e78f9cd3b18a6315efc67409d6318890af216dd580e34be7c85811256a719c39ac3bf64ddff846c5a6346d5a1437a5af69b1a52db5d8da4c69f695c68880c8238dd1ae63697753a22e2a210da69b61f7cdd8392e9c1667ce8e4e8bb76553736f7e53a22c1ac37453a29bd2e7b4eed4699776ada5b5a4bdf4e885c49cfaf5764cb76ea7b74eafaabb74549f3d64d83a8dd362ebb65aa1d6d25a08218f7dd3ba699c9c0a6a60be74aec5a20fb0051a3a1e23682f8890d394314d1ad465ed3627e451c6d0979f9c1c106901124d3842030ecdca504c99f9475e85b082274f1f83f004f9fa361c7908b2f33d8200a97a83f78634405a6c5ac4e5da059c6fc7b9c35d17a05d25969b7a8d5121d2457ef51a4817f9a385f17efef4aaa7e3c80ea48b5ce938f2237f724f670d0e688bd398f5bc0a12f28871d7a2632aabb7d4aa8397169591a56f57a9d989ac3284a395e2843cd6c754703244981aae42533d959d4ba9807ca00bd0be620b79cc2b82c8a33c626488a861d7cea316a7ecda89346553369126929db27924ad8d3e4921cf9d23e48c1c9be9a22ead71ca64b8c59a3418d161ca708b66ca5a53268f0091b561d7049c6c864e481ebbd578ee30fa0525904291ae5bbfe1fa077040c31bac6fe107788436a84b8730272928317f7834cdb5f003f345e70e9d54b03177140043f4dd833cc23c8c8c9932d4c0d4c0fc11e65b18d790d1be2f6f5115d9f976155cab107010c28704b880f4ed13e86abda6a85a4c49e171fd0192861b4aea0281eb34b8ed34530626011da81be5f9a3ea95b050830d094c80c70db5673e175e637e5a5d8623f519b64f8b3e6dfcbc92f2d8affe99fdd3ab1a2af1a80a622323789aa72e01e8557b8516f288ff1485dc3b2de2af06079e5b7ce7e2c9770e03ec7c82dd0bd865e77296deddcc47aa4285a3e83877a1ec951537f9ca11d951e0887ae19e9d7317ee3dc44c9c0b172e5cd8172fdc05c7c2e26127595872e66cc8ce853ccc6709c7e99df7e8b2c91e4d2bd384f4aac5ab6b3ccd82e1d553dcce3a99c96180fd6a979f1760c35aace0046d80f3898c80e83bcf3f9cea08a4585d870a447d412de2ab10725645505b93466d512f87bf0b17ce794d4b8bdbe8daaaad5a536dea96bbce7f7cdf6587b1b3ce73c8c30cbb708616abdba5dbba35fd6ab1ba0bb07d5ab4d1ab91731b3fe0e8215b6c719af9b526861179acadda62f196b065e5aa73812176a0fd82145d422b06e952bd86427c15432060d82abc2067541fab8c9d4d1a76567de8bc2686117984e961a3c5ea34f367f0a103952d7227d94ebd72de02760fcfabf8d8425df55c57569c259c3d17c658419edef9585bb2d5abec55e6b24b4e406f018ef35be4d0ce5aac3295d7301cf1ab568ec8d341cef3cdedacba55ea15e8d5ed52af6656bd0c2e5b0610ac352dda98ba6c6a31a32e37669485b187b5d562f5937fced92866bdea69c3cc1eb14a32463ef58942b9fc16635e01c75a6bbe7a0a38762cc05185026a40fb5182633db1b3af6e028ea992dafaea30942543460d9485f25438e2ec2bc231cb7054792697f15203535498c3daf90c1d6c91538bb17402966851a1a717d632aa749275793065491aaad08dca435913a95dda79469cbba5b2b93cb21fb1500f3f626cc3be69d710b254820737bf921f5473a84a956928d2185734a78fd36702cddac3335d1f9840dfc003a6c529bf20325e4a97cfcd96b2c55c67d3d9347ff56ecc19da23b44dd6dc46fb50b5cd0e304a0759d6295faa90a716a29845218ba209a1288230a3e8b9de8d7baf86a3a81912054ecf6d8aa9e405396948a747b839e55422524a523afa949212638855e983055c0db9099224e496b37b7acf6e393186410c1f64eaa38f976faf01c87288527b96d2fa14f4f1f2d5698f6e1ed0d8538cbba3595b74ea80c5d841af863550fbf4cb278f530739530753c8cca1ac7983b3336d90c8ed953a8d51d80c5c0fbe0c9241d214929efba6d716650b39a3b1d6833cb688914f67ad735ed7264d532986cebb10e3e4118f2db60bc7aeebbaaef31c3a97bdeabace71f05a842933bfeb6ad0b58eed8aeb4cd5730e63ec857214a5df1ac4f9754dd328ed1c83a30c206ff213285becbaeb34f4b7b01661d2b8dabcd7ce5e72f2f852545443354f30a9953e35a72eb25d2e283b1c9298a927cc9b5035441e553644158c83e8150d4f20d7fd74de506bbd0baddf6ec48f31688382b5765d8fc04226d3b9d7371b60215bcf66032ca406dc0458904779f4435938b44b7b177518a6ccfce9b35ef54442cae049a365ccf4c1d8e19043b3a4f78cb5e8833c633f1d4f991949637a2fe17b7a114eb68c9cbc210d3e97f886aa1ff2a8b2416b755186a3cadf09f4f7be80aae7667dacec753a974105b44beddc0675b1be7905b2be6d9ba669d883fcbda606c2a4317d2c58db25669bc055af95eb2eac41b4e41af7de1dd337cf313dc86b38c8579aa6b286ad51bbb9808435d742954dc6b806ec33a854396bbd6df337efcda97763430235705461999c55a5cbf44e8ad34d61962ed3e4353813f883d38003ec946edbe639e46fe186c1718e3e6a4eadd39a8546eaa42bf4515fa1911a09c441caae36a8cb3a722f7dd808e48043047cf8d8e1ea9dd3045912f9c106081bae7aaa7b49e5d05e592f361ba86ad14bb5986fc0a1c51cd6476994830426305f28ebc49d42295db04b17ec38efd0620e2db65442661963013943073007094cc0478b2d8d6838438b537ba20077a6d57067578905d36d340638e943423c426a5a54468d807e7270fa48cf62433d3c3635f368ca60403a3940686ee0f1121beae1a936b5e6480603a23a3447e90851ecd5d3376d837414049b3b53e70340ba5145e40e6bb4d8df216a08d41042a8225045d820c8a31665e800aeab4129ad35c46fc371b329051a072767bfc8d0e1f237e0213215ebec53450d915beeec1375e939b428fd94a2431261c8177a00f012f643ece7e34d85e24fab6d9c65839aebdb35d44d36eaac7dd99785d91765cd24fb72dcbe7939ec4fa41637d77ca4412cbb4383ec2ba95976c7cb611f87f6b54359d6c7be2ccf16d2a1900ad957c5db4ca10ea4d56ad5bc7dbdeccbbe6c45752dda20fb831ffbb23ef64756cda57581439d206f46b800841b5410d3064164e9dc9c94d6538a0e8b2a22cb69f3c9e4901c9a8101edd232484545454585c7109156eca3424e4e4e4e0e4ce8f57abd5e2f9fa120209f9f54ce26219356a48806484fecc8ccf96cc4cfc63f1b9b6a732344470867e8c63534858a72502ac85f518b292de4f12ba24217d100f94051d1d24e10d2cd8b48490776b4d9f4c48e14dd169022595151d16d013972e408073eb0011a54108e14f14092157d545091112981d2cb22bc2452029fe75041e4e978569f04799c48f86738916cf2a8d57c17fdf41a1ac65841aeaed958ad46e89146ad66ccf6b18cbaf4db7022b5d8b2c648dfbe7244ae610de53891f0ec0bddadb98d9e95cee9c38a1172bd511da7549fde55bc42843caa6e5457e91c77b59f520a4e5cfbdbb33949bfa2441e55634501e5b1fe0d2dae20218f35a5fa0873a37ad7b0468bd3fd615a9cdeff633e0d5f5c65ce4a6d9d49a1c8c889ce67e7b3f36994bbc579bdce645dde94934fdf26e74ebd70c4f8861cf6e9f7f6ccf4ae3b45c7f42e4ce1c21de273ce85e2733ccce742192d762879d48e21832c5b6e129c9c22c872892bb466cf395dc20a32cd39294cd9f988f2316090af4f4715a5784e1d7b8a17ee109fb67b178e1873e198b30c29284e8c526911bbc9b518ce35175398b243946ebd19ea1c6712a773618a29dc218a26e761be2994c1e3069772067519e4ebb2454b01911e6073070cb01ae3693102941d6d080a0ca6386a2182a6b2e9c78239e7a49588103794d26a899ce00811216a6c12d39bd52ec99666734e7b9784968a28a5575b7a2dc1acc54b394b3c73ce39e7926b0908144c39a5784901e342cf9e22698aa52988a6386aa2c3f9b16251482805d7c287251ca174f2d44a516230a79c520ce9198772c4143b2f874c51f3637e2987485133054e532990a450922226c50da4a891a20652c8a458c2098ed2222991e05ad49028610851ad5286d54a80093834f6a9b59516816bd183943f8415232156f35dad4570284232899cadd4a30444a9528e128f7c42d7219d5576778ac652aaea728aa685026de0356d17a43818947f376bab95d94a71ecb6d94a43ec160ad24a119b209bbe8f4ca0c6b906529cb6417f6826ab49df4c16949386751368addba0a06fbe49e976b3db264da0a5600ef956fa68f1c21444b1564a5d7cd6f65bb5ee82b3b14faf01f2f105af4bca75f16db8437ceb36142909284e4951bca3e6d5b92828b2620078396474333c1c0198b24f244e9febb9221ce79384309b4b3903fb9882499c857783244cc1d8f10a1f491c6312f1534e82532b409afa9b73d3fb315fc694f89802ad93a4345f41e2e29b782a8524dc21be4909f863ce3e0543e2d353294fc1aef90a97bd4a8563904ff99882bdc6e79fbe0294de8d542877882f2d4c8bdfe623f6cfdbf1fde61c065b9ea3d1cdf06ce8fffab90074343c1ddfd3f0769c7e3af732e55639f93280d932d7df402c80ee034f3ecaf8daf25ee7db9448dfe726de8daf1b421e3be867733a2463b2d35e827a8937f3f9b6852939a73c1d9fe730650b7788bff9b63550af680ffcc391783be613469f67b26f284f07f6edf3eff3a44bf59ae3822b4057a30005e856ac0e06c600312854f60d7fdfe7a82f7b366cfe6dfe7df9cb1beae4c17836d01f436000cf86ef3fe70cd0c5783b4eff3927d3cde0e9e8ffc07e6e869e7dcafe81f5000890b3d6cf206eb17227ef46cae73028fffc0351608c14640d4cc9ae6517ff73542873b843fccfafdb6de65096a40177dede8ff93184648dc457780f12c729a7eec998cda9731bf8e37b5fe12427cf06ec9b2f51059bc7bec927d9817d934fc2c37c9230b5021cb1a3bcf37664df9cf374e0b06bf1fb6c642faff09208104acfd9e864af5274d0a73fbf767286f7d5bbce9e1a6f7d220947106050f51b58afadf43486e0718b9f7334f794d49e26528b9f677026b5f885f8048efeded8a91e1c7dbcfca681178ca5a60b97c4386795ca47f13f26b2f469ab6c178a71ceb56f685bf66cb162941132751fb184fd70b2659c33b458bd5a1bcaaec5dc8d2f0f531d05cb5dae9eb34ae5a2f882f1078d300a68b1861de4d9c2e12ce5b2a4d42bee28378d8e7aa5218d9308cf2ecc2828ac87973eb3208988ac53a35ec98edafaebe7c8db912ea9cce9392fbd1ba969478a24feb57ee5b5d12f6ab1bd29d8dba9f54b85281752225ad4a2752a4459d4a85dac5b7af476e588ac39bd2c62f880d62e49e5881abdadf282d42fc84dad8258cea87408a4b1162d259a2ed655aa9c31cf5bebd4ad8f94e8a9d0db16279a32d4ad5328c8d5e6d6a91424ebe4b6bf931f29518c4689defa09d4a48be61b48a5a83905bd0b561c7ee9a5f4baf4b0765b6cd8c3c63a1db460cfe225919690e7668763fcdae03f55281f72ad28b3796c5e4ea2cf59b5167e1a4e598b4737b9e2f4add4ce19ce341cfdc729ab61a55e7dec70729ae5cd3a9c0e4736763857cac9f266d4a5abcc9b51d63c9a324f89865836c1894f2d4d0843a810faebdd3faf0a511e5d868fd31bcc5dff9cdf63aabc99f937f4599ede2155a972be6177ab843d0ffd3fe6d294311aa0b9df7f2baafab4e10f5905123819537bcaf4df192e1c4d1a92a3272ba3c9e9a5dfa9b9f43a656c087e0c42030c40b181a5bf3c04a17bce397b00a73108cf16e4e190434bf8ebd3c32187ccfe4a21222d9cc7de8f437a210b38e41580fe3a155ef0c41457088234ea914e48267e2097588274620a4f48311304084f18800a0608423b8d3a8e70845c82091a4c885ef8eb21142d66207681850f4ca08a6821831b3fa412ad1e9ea67dbef576a4bec3310344dad5ae76b597d3b80311502a583d91834bfafb846bafe9346e20a65501c725e26f0ecb82bf3f7f5d7a0bb8387f17809bc84185fca58fb18631d6b0a661ac691ac6589b4c9cc65f00f5c1023ed85fc79e8e98bf5e4529675049c3aa50ef67386a5e7b843266e6e3f0c56779861af0d73c00ff43564185f6d2cb3186af698087fbd869f0ff48c0638e7673014174b48c1629a52e835a23f81a2d52246439848a1966a0fea2e243a8287acf75e3674b4b8ba23847fc52d213cd217b4e2488884046a48723447a90a186d09ce35cb670618fd9ba49535654ee1d2a63e06412e77057eba4dd9482ed1a98837a33c006a573f60ffeaa2eed56b75a275cdbb7cd627cf2e99cc9a4c95447d9e8eff514c8033c9d3a8ee34ca6eb178ff9044ea016afbf5cbf451d5e1ade9828242e2bc571dcf5eee9deb9de427a35ff3ad7d13087162f490e447c38a23206dcea55c90b97cebd004bfc55e2d3738967e7722e29711b9d4b40f9b9c427580296dcaeba8ca1827c83d33a537fed8a729ee0d4c9b9eb664eafba1d48562b5197ea2c3ed61fc8aac4d7ea73a75daa6796faa32a01a70e0a89ecf9966a91ab2f3560648cfc295d585c0205358b8f75a8f3e955f72ac14399e8eb588dbe9678cbe6252c289f604665cf5da762e95858bc64eba657ab8f4fe6dc54595a6cf47c20bd6aa7431b51af3c96fc604a54d848252040a60ccaab77c00372c5f202060b0ac68b1d144755a277a1c9745da8bbc38123e72ccee29c863716182d2dbeb5b4b04c96961d7c68a88b33af4b23d28aee8e101e17ca59c04682017652bb54e7e60e2c53e7f5f2f9c99939d52bd05717ce7a516135a80ad5a11aab44b5c8c5ebe5f3a3438b3bf860913b9f91c57768b16e2e7c585e2f17a14f8bd5abcbfa42b5b20c7ef2eff67cf5dcf97cf9c818f903d42bd80dba42bd92c151126987166bd803e534f3a74e0e2adcb94258dc05d846b276517acd9ec953774c266fa93b2ce1cc79cd9cd775a1eece75b9eeceddb93b97e7f6c81597920564c5e7077577b8bb435940507747e9ee28bdee8ed2ebd680a72f0fc77152964d33c7e7eedc1da5bb73775e63ad0e84b2a492d20460be938f2f2f2da20c895b61bbc0a4c64249072a63266a883cd69d20b5d52ed5b389af788bc9c78cd3ab12ef36183eaa58dc148eb9572aefc22a84a77613e513ec1cd575dee59cdd06d5a157d9a4063975a828f365757157f113137701a77499a89f0e0364716ecead3301573c83f26545e516b9daea41ae56bc7af5415612c86a02595120572c5ebd122157255e61843538c8127739a552f11693e9c35d4ea954bce5cb9eaddc58bc64c559421ee66fe1d8e1c8618fce51b526d199575ff1ecdcbdb57639a552f116f1745ad1e5944ac55bc415b86a3e5aba394b5670748ef271d6ab91cebc3a8f5e75e198c3eea27c4085302dc2a83696920cf2903748d410d9f372cc20249343d5b450afb24908537d059c418ad35b401b529cae0215206b90e274169001529c5e02f290e27418e00dd265768eea483c0604c91a111f8e9e880f3cf5a6599306223e187d750e77b39bdd0c61e4b49576f6fa391c43f02de038bf25b3786dd539e21395ea559e59c21cc2b458e5c4a8d025111f8ed456f516ea950c221da84b75155799c84230d522e72a70c43480e1289066fe4ac88019285f078a55c211e79370cc26483042190dd3ab69f2b69cabd377e70ae995573f3f79bdaeaf453f640c48cf13c44f15849efad434ef863b275b2cfadac91aa8d7ec5d07faf46eb8d730654c5e7d0132667af51d72c579c58f921fc547d5a3748ee21c48a5d8d1e80250f8a18e068c6e0600e48e70b3162d176b17eb2ea52ae4858fb547f4b1fac4f800e09f8bef33cd66b3d907fac7dd7c1f8b51b34cb1d8e7b2635fe89f2929e9fb4cafd7ebf5adf8671a1afa5af867727ddf27837fa69e9eefdb66b3d9ec43f1cf7463baf952fcdb62b158ec63e1df9694f47ddbebf57a7d25fe6d4343df897f9bebfbbecfc4bfad67ebf93e3c9bcd669f4fa3ede6fb56f88763b1a0d850ecf3f9933469d8a4cfe41f7ebd5eafcfe787873e3c44d32cec727daeefc33d9f5f40cae09ee992319e7fbe43afb27fee43c6e0d96cf669b30fdf7cf82616fb3e2df671fe51ff34ffb4a4eff5bdbed7a70d7dde5ad2f769afeff32965b4a149c3fae7f2f40120d45c2e6208e345a8b908c3960f9c7137e06c36e36ede3ac8720a6349602c164b7aebeede8ae935b4627a995ea6d7d05b6fd1a293c1e432f5ac985c2697c965ea79eb32a8702833d30dca6c36b3be926262114b4289c562496f5d45b595bc865eafd70936d95c5b4fc9e63a6dae6f73596791d25078b6dda0f0ec8467b3ede6ada3acb838869350612c866338e9adab4c42d97ae0e7f335f47abd9878ebaaeffbc2d193c93cb09fc320f68c5db807bbb00bbb700edefa09c6980883549be11b6da6cdb4193ec15b37a1d4352da62569312da6c5b4226fbd04c607724adc91228e888bc9199c1197c41da15c79ccbd32f90cb715f6f53997ae41ed4d5e85344b739d5cd5e714fac9ab115246ebe9a92ff893571d19d3e227afad665d998dacba643567a9572c514819ada5b5a6f813e82718ec0896043b52d42b199a9032d7c8080a4432c67f9a757776603b423b319f5eb5d88194b940403df8d38a9f9ce234eb629d3fb5a810daf327a7ae5eb1f09353134899ab4385f893d31b19a3326b9695c99464b425a33649bd4ac98294b14b4b5bf8138a9f2c0c4604333a991c41ca58232322413246c5d32cbbb3f3daf9399df8c9fb082963818062f0a7123f79d734cbe29b3fb51ae7e4ddea15c918a48cd5b13a552cc99894ac5955264392cd4e2b9c90327569490a4532a6036a5685c18260433fbdfafce4130929538d4e3e7d640cca4f756767eeecf09cb203a5e04f3e5120652a104db36a8bba58c74b55c7c89ffc0252a6ea4cd70e3e640c453a9d9c47b3a88cbad82525fcc9754819ba3469589741b0196afcc965348bc218d02bec27af41c6687e72187ff23f9d5cf68902fdc93d90be0b29438d5a644cf593e3b67e3af994321468d2b07ef213ec6db48d0e3597d6136a2ecda5b9b49eb79e6af958645a2b94c964d657802719604632c06030a3b74ee25e8bbb738164b8406f1db5d2b1b8adabc3e2b66eebeabcf5acc2a5c89658c864b2a5b7fea1984c60463018cce8ad9f54db89ddb1402676c7eeec00bd75af0493d896d5b1ad936d59ef52da0ad91289cc939d42d9d25be7bafbc18c603098d15b37a1ec8f5a4daddc4c9577dafa46243b575b55a7b66aabbae0ad6f937a446f89a80652c7b225994c46c55bc7d4136ad182d53798110c067be2ad6bb5571e500c4f87cb73eef9c4e8dafbe96438e7a2acec01b58bf576a01aca412faf077286f542ef851a923b8a13c338e722efe5f9b4687fdac5ba177beb35ec90861487e6509d1cfdda4b1bd25eda4b7b694cbc75147c3a3a21356b8607e4f3034e1ae03c6a175bc1760c7a402d5abf2047d4a2e58a9a024d198e099286753b53a9b275829c617da44378eb262e266758470dc9d5c7cf95a7cd9feb73bdade9d5e8bdb49b5ebd6643c199f46acfa75932dcba07d42becd63d981704ceef402a35296acebd288b932e42921382e623f7f396137aeb9b97c3ff4eaf2fc3ebe68cae9bd706ad8a2aaa00c35f0f00e811b58b750ef46231caf2625e0c14e49106327cf3cdbda25ecde849e50c7ba26eb23e039c45ed625d46920c50d53e3d18b5eebd4457b547c3dce2c7580147c4c57aa571b1b729cd75b3167a2ecaf27c72bcd75befbe1d185d0123aed3ebf43a75ea957a3206fbdc5cdeaafdd86186fa4db1ae8376adad76e9dab9fc4b8b9d63a9c5e9373184e4b1717a58af3246f3f62642c650fff1bdd56ca84eabcf60a30606b44bbb0d15d062f7aa36adb39ec6200fd36227b5487d22b5487dc423cccbf06c94c714ebd5c31de2d75043c23a37b18cb22e0c93643fdd909b322d63349752fe89ab4abc5399f8498a08847eaa5fecdfe7dde79d9b785752e226d8e7741409845e1279498404ade7c24e03e7d75e7121089a780b196448693939297116de8d12141f555e52a22a01534a4a5c7c16ae2a618172a272149597b04071150b1b4a4abc73ae553b4a5c8552a2aabd3a39393951b1f06c38711507806eca9839a3abbde23c056299c282c50dac3a3991154f7993f270f4ab4afc3a4c49e75de7d94d7c8577c3244ce9c21de277de491963e25c079adc043c31651330c5c4733671f151fc24c524dc213e4a68a2a95f025312a6f050dfc47f7c6fe25de72627de352d6abec2b3c1c44f421ee697f80b0f47496872612857a97246f988b5b1f6ce10f258895ed3bceb14fc3a8aa857b4a81ac918f99aa352cec3fc5438a6bcc4eb50afc6ce39d77a74feb9e65588fbbc1d13fbf79d3c1d9d7ff7039d87e2bcc2b917c9a3f1bce69fc71092f378e2aa1e276ee29ab78e8c4171cddb0819d3b9e65cd7b9ca4f3a4701e77f9e0d26de9978e75c8d6e82387ac430825b7de705f070f44de7e528719af9275a49389a984c5690dcaeebbc7a3b4cbc73941ff34f5c05b6ab45cd4dc0c6e161fe49d88d25de37ae79397a744e8b9ad3ccef9276d5b87a359af430f1921c921247793a4c4ac2acd5ef9c7a396615318ec863d7bca679ebf44aeb81f2e95aca51de0eac0315ce3077c75dc737c4dd75f177e56fc95ff7a48cf9421f2fcf71328cb177bde21cbb0d9a02e5af00471509e82870ac3ebc8657d4b55ec9d7fc036b8d9ca1551fa48be64610f19a9faa095ed342af75c2d669d1f64e8bf6c26441bd12fd5a7feb55465992069c65a61a2dce51d3348c438cb10d62325986e8dbb7fb36be2eb596f2caab007c53a690513c790cf22f6fb9718e34f37bf448395769e31629c63730d668acd75bc5df90336e4bce7672ceeadda09e6b0df353b0f7a031869053b6500775eb5e6b68510172c675941132d6fc5ecf59a57217c57b15d0e2f56b02e2fb38fa997206fbbf664d1aa463e9fddf47d27d1f48bf7fb399bd5ce2251120728c601fbe5cc20a3a40207dfecd37ffb27f4164df5c49bf3936dafc5bc20a371ff37289a3d8e73cf62dfbb6c4134b1c0156563a1964e85a780782218ba9a3b5d65a9d8587c3fe17ca1671af6a7461078661c7d2d2b970f102068f1f7dbc7c8d01833ccecf357faef9f6b9f8d8730d533e8cca3eebe7d373f694ea9a6f39fb985237f046ae5f08130306b907cdfc1e9a7362f70246278a2e31441700d0906145458564058ba283a8e42cf586412e15a2190c0000002315000028140c084442a1602c8e1351113f14000c879a4c6848994863518ce428088210320821030002034440646848a4004c4641dd5c54186e42cbae10028eb0265a5a71e09a442c3bf645554b50cd2b36f1c02325e6ea087f8d1ad2ac8f616544d803bd5f2cd74d5ed5982de3d950c790c120bf50fcfe2709fc0fe9febce951fd30989031c068fb979190d95bb5b77751fc432911422650ffcd64f8840c29fde91ef1a7bafe8311530a1955ea9fcd650c9996b5ebb5f276922191092054770714fc3a854c53fdcf2531432628fd1511f18f64e58fb5e418329d1d7af9dd9021da7fb483fe57fdff6c74f221a3daff33697e42a6e1fc3301f9bffaffb38049858c6aefcfe252977d8f6394795f6122d0bf4bc38ef659c854e250bafa43a66defd96fdb1b35d67f9c2173766dbc621d8835824ba6a990992df9ac47f577b6b04d6da571a687af33e0ac72841732648dddee417bab749b060f19520d6846221f1732c4a38d4d98876d9e41c8d03e9b7fa9d85b29f581cb103238994f6df02da0ab6db807b0a75cf9f2e21ec1a436ad88f8bc4ec8ec2f81badf8d9e3bf81461305d4366a768c83164827e810906de678cdb670ba4c2443b4e51a91e324d46f39d775c133f7774654c183249c6796bdec5986fc24a2f8919658dd4ac25b03a58eacd6ce6673862cbc7bdccdf9aab6d391ed1c4a58ae2bfa8745005710773254948fb3a190bd3340f621d94d9a95041cbb774c504dd9ca94ce7b8438bb2a77cbc3f3c7ac29cea6e84748a10ed3e9b8d34c7b29b5283024786f64fc5d98ba50a5222e0f5209e544743043d9dd2f85e05c73679f01407559fc1660234594c29edb49373838345a97a06c05006413ec2d277078f2243782590e53616d8083139ad8ccf014dd1c25290dcc1d93662bd02b97e6149ebd29ce40f8c6c8e981e765223cbc65135d414f848e8d730fe922709deda660576943230e2b13629c4ad0ca3b1f8911f5daeb68a5de7e410af723995e0c917814701d54fee5218ae29adc5abb26cd9dd2cd2bbf4e45b75b01906835599044a5123f1dfb846819e976a80df2aeee5927b5c8a8d3f5f4f77e4abc76ee62f4391f861d691a701736a87a9b8e973a174d3dc5b88ebd86118da46265262d66b60cc9ea45f0c8e4d6e4deaf0bcb23903f85707ab7525234498afd07f68695bfee8d28e0136c925a788c02f6189637717ec6308296dbd18c97b7058414a2ba24366762af7f27bf73bc482a92ccba8a8675281d958598b81baf2deff0ee560b2068685c1f961d6efc8d8bf192e2ba85bbc3fb4f42be6e82affb8a4f04afacc076a172f92593ad7beb5d1ff855f002ab3a6b0bd35d27a0e3d16e36066579d67ff053c306668f85c4ad5cf43325d6410dcd42ad1eade3b5f0dc6839ac95ef313208c1b7616bf61cdee6a17e114dba6547a47e06b71ea94cb67871a2cf21d8a53cb06430b877e535b5122babbf5020387b50d7b402e154679faef4a94f88518eece6e670d402febf8507a4d5842fa3e9b1da2da1c4153da6133e5034426cf3d204a575176613726a2ad7185497ed00a2ecd0415130a15492e0bd3ff072f44e0b8eb0e518862c54e8f586cc406eec0ccfb064050f4765f66dadb8645f678ba8ea12607a8fd8f84fa76149e6fb374c5eebb631984b9163029ab5e4de6508deb983f3534b92e1c12d8838d6150ae83a9dc4ff4f11f60351ed1c4a58ae2bfa8dcb2864eeca0950e2efc43349100f66d2292de8288ce892f87f07d513cb98c0628a964f8f880d1cd662f650badd74d9833eda31f64aa704ff6a010ffd1bf7c081e2d82279f61e8578901a102a3e26fc5fe451ac6470fa00d008841fa6d416baf503ec09421c2d70d1ad6bcf0b2a1c5eb0ccaba71847dc8d020dc30bb74157fc08735e0044416957877c92d7cf5bb86b43c1e69372c5f5340b98ec2fdd07b0ef48a143841262734b687e006f99c6e18b4210c5b1c29763a3254cd74812a2c12d64dd080ab24204c10ba4c6bdf887cd6f19d5ff2e7fde8b7585bc83cbaa97a70b4fbc988b4d225a2b3924957eef231c66d8bf95e7a0a5f8efb54e55fcf649df89b527b5981530068f59e1146452e1bde63119e75129b97f954ae708b1530cf113212ea1826439a926eee6e43869e1826b20776402ded9b9519b4dee8038522e27db180e4604a4f063b34ca110f2e4e2f277258e75928321e057da2a1472e8a8a406a007e954be41d9d9e67ca59d006b5dd266230ee8ac089174efba76941432eb69e43cd2af4322833a1dec8b540ddeb809b30fb7700f2b49cb270ea8dc3ffb2ae86756ce2ff1192a13a9d9f3c3c578962c8018d2a5b053063d16cdbc521edb840c13bd755b40f07c41c8640a50497b5cfbff08fcb840fd8b3f86edbf6bb695938dabd0880cebe15b119a454c2d682a89f282e6df3b5dfaa4f03e75fc8df59350e5a1a472138b9452b493e582b805cd189e4965e589d59f44a058e011ee6f17a38844e7e284bcfc5a2bd190f450ee1cf6261fee047ff1992eab2a2a6122960b505d4f285cccb6d36455f8e6576bb63bd919d3261d96cd082004b4e34065c7e3b108ecefae514e1b606e6e6ff5921ffcc840d1b5d2daef30954ec6a0f8619c64433110a01fa99474b6f155875df6aba01a3f35237d2406a7ab035e494d01e87ec0a518d7295427c9c53a7c56e9ec19f967b69b232f274caa6c73cbc0d730b151956095d443efd2f4d5eb160ca11f360084e8feac027980ed990120b8ffe5e6a77e2b480134893632a8b9cd5375e76d5b59998e51947659853fd2fde131d99959777dea717b1bd953dc2200cf4a4aaaa8684d6b361a244aa52ecf3d66efd4419b9ed758b909f9ae24513c514dba5f1eddde7bb2433b6c7d31319a7590841f4beef0788fab1fe378b05b74c3eb23253cb8561a19cea44a99ec79b25e0d812b44ea948188669b2faa80d0213a2eb092ba89019d8fbf92f0122577bdb0860148e0afc9f13db96f62d4a2087d1285d44c38506fdd5b57ed38aafa34507a3ff7dea6636af15e2a8773fa2e76d69b7b417f4bcf661f776a53e6c0d58175e440d6c0baa27a3a0d7746da40fa316d5f00bb39fac33878f550a11c1bd0460d0a362ce23f04108b0799e3e7d5243cbcde8464ffe0d47b832d788d0ab8794d831f011790981667bf03563c63f1fcf97869032b7abe6e56a40458a34fdedeb6ef499dd0982f9567970481a27e52c7c5066507a321dbdc69cf93a118d91ec384a94dbb3b6a96d3bed19b0b3c37028d8cf5b622b19998950cfe50b0cc1ffdd795b70e7580996bc8849f49b1841accda7dc70f7ccb546699b824be2d75d4d29add58ae53cb6561754913ba0c21cfd19c216e3a2b53d2d63e55a192547c72a10f2a589ff27af532781afe04a318b1699575cceba8146391304e70f902bbf287eb4bb6ce6083eb0ac026a3d42004b7b1fd81bf0825256eb50fc319944e384deca9947c763c3f12811b739effcfcc5db0c8e70240688f63655359e1a74670fd779ffd1daa0314ee18af0c47a69ea2d10b79c71a1a051887629c5a18a08c21a68703e81062a34fb9716b302f14000b3bafb1f85c2a20dc74e4bbcffd2788660e779cce3274cdfd4705fc254518b50024fc55d3c41d67d6cab4e4f0da7b3ff1a7d5a8049c162c751822134f9f9bfe4720a04156cb9095979eac7f1f51ea44288104c64b5f30ca2c9e1a7724c10117a5a6f1ce403d4b987b740dd92d7527f286de0d29d613ec7e38f0f21f6563f613100f31787700148b0b12ce673a804406f7fb107ef03da87a02342ac1ae42add17a6767d2d50c2f6f9afe16595a49f60d93f531000643638ecf1da6c2a800234e6ff5e5605800775a0ffbf4542279f5682060c05e2f57f12c4bc6e8f2ee2739cdd49db965080cb9698f3371532a2754af722d18399e5ac82d0638f4d1ec927565374d4a8f82a2018c2b8e6d19da0423a721c9091991f6dd0172722fdc4c7483d7741138dcf5ee148357d74ac87384c9d362ba2fde8e1fc935bc45511daa83ae64db3dd15f0b0cb8c82624b5072a746e1e9508213bdf870ac0de5b6e4f5b5ac61eda6458af7b2b35911a0206825b1d6ac15b87a7872ae8bec6f0a755169d114595c2af58d118eefd7da2fed2615d365b13d6dfe4551132d1abe57e5165786d2f65e6cdac8d31e0a1d463325e0fa9a418da8bf4e3911f4d38207f6054543867a78230e219e3b7f64a02c34f57720df49ed5d1c24957b45659faed623c1c2e6b88e56cf96b093cb917dad927879ac236fc300ac8f33a00a8c366dbe215f37df47380808f7fd3dd8a3066a3b6dd9c060d1f2832b933c6e5abca1126257050623859df8547f949c4179c529c1aab11bab9c1d42706954fbc047a6bd10827f085f118e189800697439d011736266941b20cdf018644bcd10321c0d9ccea5da1b255248a4237610dd924d6d4dcca170ce2aab87c358a2065c89dda14d5019443037eca3bb58382d0ac8a3141610c25841565a671216c325f31ccb808e6489a050e6cd74cc421df4803a630bc9fb25ca1f501929d71b2358631cf2b469f61b3be932c685464165f4237baf815413ec3bbb6fa5a9bfd8237fe88227c6f8dcf1883db55eb62d0b95dd1006b8cd6436a3c4f76e6df537b0b886dcee368e6f1cb3304333b18642fb7dfce339dcff39912c707f3f772c170dfc3113bf0e84a6ff6111f6bfc70ba6cb7f4f91b61b33d589fc6dfb50bf042fc02e41e375dceaade90a2cb7d6a2577a3816b01ef590f89af0965beca11c420af2edcf34e92b0a016db77e871247a41ab84f8c405862d9ed07f387a319d584a12f14f7e7f93e2420dc1f5f188ea950eddccb19291a100821839983adaeb67b1e42a1e5c5b1e4f1d245d9014d91f995a3c02c3321371298ca8550aab7654f421deba75d7dc256731c15188362b11b353628fede4a31f4fdf9fa76b3a0f77d1d65290c1e2ecb2ac28d60751c9e6cd0b937466768e0d887bd3830982f11ab9005b35ccf3de56e9f545b8fd5bf7d45527b903edc27a9ab37b7d1004955f5a65f3027d4d4fb32be773c02ca9dd36512c363cc69d73bd996c8841e4e505a3b704b6fa6b0121fbd1dcebf0a0d9719d77325ae9bdaf8f55858d9fd68c6e28532959283b44a405828b27d7aae2c29a3dbe816bfba6e0ff3d9c382760c1692b0d0aab7a3eebbe59f0331c326bb57282be7e15df14de0f42135c3377d30e95ea291cb87c1107d77a927606a88de4fff3c5d71a398441858d4131d3064cbf1637deeec46ae8d1a3daa71a8067c4e91400eca6a2d2ce63eff275d092fd6ae16fad527394be3fbe24dd9b3dbfc80eb98cb26b9d6361130e44da18a7b81fb8cb9d44e15586000e54a324b2591c966e882ae4eb57757cdebe1542ca8cf0f0c6e1a599f6c40bb157be50ff1d148d96a370ca050a5b10174721044de97cb3efd04c653b68482b70fcdb3a951073efaa7532be33782f2cb5845b52cb53ecd794afad5c58b29348e6623e444adb4c3ec4f00080780200c1e643221f8725a27176cdee10cfafb0960d3c3e099950598d9e882076a7902a317dd0856260eb4d282aaf40e83a937f11645b4c2db070729f59a0f5627f78f580ea4971b45578c86b5f640acc12841af468d1225b90bde8c498c91df77a948603359ad8c78309eed35abdb17cfa6c59a11ec2e2f030b6664d09e434de998414ade2dc3f05d849e61abeba8b2ba83c72f0c4bc50ab03c5a277b809a77d6e15e122f8ad78b413b1495aa8509e90fc606b228a1043cae7f4913a65788caf325143ab69578350f81da2716ea0f9b05848285b9a2ecbc40b278c5f2800b31a9cb9eced3c81e7bcf94812c2fb5e834b8ba3ab8d7546f059803d18c09f195659d20ca0c0e2ccaada9eedb0844a4d9d11293bd6e774aef26baf1ec4464b223ddd9f2d92f6e961b580ba376cbad478016647eb8ca496050e03835ae6ee2d5a22ecfb57c794d05b29b7a8c4b539c802e7de46a0bd140917333253fc65d16288b626fb261ca16abfcf702004500f738adbe1ed549dc3f42de0cb348a3eb12a52d785c510c01b173d06a02569d9559a93f5cad4defe8f69dc4bbb1dd1f3676d8884ebaf1d2845fdd16f4b5c023c3008c2bc9d502dbd66d09b6dd430dc64d3eb03844696e90091d81f448075ce6a11bbbad31279120af1f2e7ad2b979cfcc02ba273c61636f9be600615645eabda113cfbf84e3cc7ca26ae34bcc25865b509859721993b9116476ea5efac50691dd7ef45d154a8c56a26e3c64b6f730fc5786993dd64cff63c78bb96a5a942291442c5c4e0d4e64542d7e18846e3fa23edb2503bf4df17e8291bb8c7121cbe3d0c8e84bd4bba30f3a5ccd76e5c719557ac8c1a28db5708cee7e68d76f38485709f0e620db068b4b12b2fb025ee2dfa59b1ec182af9ea663160c84299d1e07a7bdefac916e38743b20f143c0371be974ea6eb622b74dd3fe071e840092abbfb9c8a990a1659bd8d8bcfc65cbe7a68128072d2c2ecdfe7b89645439950683a7e13810343916c8382278e30d78afc4513b679878813a2f19491420958b944d4d3a5433e2c423984744272a678767e211d75d6a43bd46e36288e5735e8134cc5293f5a274b71f96e92f43eee19f18fd0403b1bfe4ff54c56d01c5f23cdd6f09e24a40459f062d33a7f95e03accfb30fdb60550f0f193b753f279c264a98eacc992f8ed1571bd1b3b3ec79c637dcc01c9e2f0cfa17c1581ff68364365d97e251caa4c3e4a4970b1ca1c58991ccfb62b2d8c1dadcf4fbab077a6f4b9199785c248f7ed08a0c38a79cc5f51d0e9145ab9879cd4b06251f9c5a595c2a5bcbc862591028329a229a71619f97eab0d5e13a24be7819edca3f10fe1b5a20349276a87ce80d4dde21d9850b65da81028f7c12231b836b13fd4a70d8b8e5707bd5b50a64dd48cd422e0185a57aac80c73f2f4b876a1c3860753b447ef13bc49fc1e165f937e40cc46064d943352f9a5759d85328e5e13d35c30ba4f66689b625fcc825f10919b29647df3395a2d92326b7293498c05a050d51125410301863924e28f32e52a49c7da6aa4e2757f38425cfacd4950fd2e4952e74808a9b99eef08ca1d600f618c71ecaf0568b958613374321bde7c2937726e0f748a25ecef71a9af29dc6c678ed1f4794a2003ebe8b05016ada5475fa6211d1fe0d0f81ceb7e7f08a9ffde03c44a16389d3973b62148f9de3860622d199c79e1749e0da77f751a3bfad96935649831a6d89d7e02c6f69d4c84b0e258c4b89c3e068e9e3c43c1ac3ac0b720d4fc8b94de6b66cd1cdea14d80f94728379b62bc8ab0888600f1e8a69c67e374058431a3814582c4e398e6ff1c631219521ce157f709272d95a44701841ec67da98b6b9c5d300a2cbea8c7ee37f6380fecc56a220635ba5e4ba216be39fd048248d147a2d15da53d1ebed47ad664573f2fca32bfb86f6713a39eee5ea1051cf362b31e91a22b1574bc2d5c89461ce88115ba68bfad24b7ca4d81d12c42040c64e9297e209f6c2289e25e97bc10601cd2cd7930221678e9c3389043695a7cd8cbf07b44a7b59b5974ee89d5d18eda8f93980ba65b312489629b922c8be013d175f813a254f16cc571786ab4956d20353931784e7ad5331383d1f6a560b0b9845ac72517b8cc9392da760083b9c116db5822b8052f1b321d4b7a04e52852ca7594653ef0f90c7aa46fccc5492c8bbe192dd179f3c533941a22f20c85855319e7fa8a2039f8adb74faacbae28307bf9a766da667149212d2ab852fe7ccd449ca5bd577512cf4641de058beaafb4baaaee1a5a41fc9d8d90a46af605d057d70108ed955db2f37f0ff29c01fa1d572b014687473f3cf9b190411f418681d1d80be46dcf11f423936b6590371f5a972cefa7e5867a7d9279c5e1cbe534d83716a5378f46386c9e6f280a8ac1c0e0c7c2e7ba1403e09e9db1b589c0ea898588be0fa0540216305db58f04bbe67695597b2fe3498d5f4728d893ad98e7cbaf86ccbd44a9fce7de5944d8d77027acdde7fe27ae26ab7d42ef24c83c0b6cdded7252065aa2a02ecf9e8d7f81881ef7ca2a2a4143bf6646cfacd9911208d8067b90df2703672a7deac2674e5cf4f35565a6cf0eb06fb5b2f7bd5c005b7ff49363cbbd3b2ceda3e972d3ba0040496a264ba5c7094e3b1eb6301b1d70887c8ae07029e199f1ca369a7b07c981cffc7f368c3007545cc8970fee47e9c2596b4eedb894fe721b11aedeff71a1f25a39601dd1f887ecc0f24cf276e6952823648639ee6a4b2b0d98b11ff727d8c4939e7a9e34e26febbf3cdde56d09b1fae0b3b9290f5fd2a1c0f012ee43afd2a8f4b206c3a6aa895d43b8270930321c67a6c51dd52b4906109b8c336f0406e6de6667cebb781b5e3ab58619ac71718bcf15ce9aaf949f2da9c40edd6e68db8fe42466b17f34ddfa9ec944a7263fdc606d4e68a7fcd93b463b5f3d2eb5ce3ab9f6baf7b5e8fb7340728df1953660f08dc3b1669ddeafb22a8ca24422ef327ebc87962704f248d5a4d603f92811f2f02ce808794ff633243f15bcf1bea1e4373ee78c01782bab45dc37f6ab8f0ffb27072ebc5c56251afbb30dcf091cb31c2fd4ea6797e51f6ee68a511b5e548992dbe08793b570971d8955cd32f98fb843756a1949986b614ca8d919688748b4b3b9e33d3f2509c80371c0c01de81a55703e4f54e03d24d5b56131c04258d73f93c016254e296c3df5518d598b347e30092be3ce34d86bb4566fcd0a79aeba4fc509ce942af72f3f6d74e5f8dcdb0d3ce2950ed39b84bc0a8fef578d93bc5105eb44ca6e409f89090e129fcc70d60dc5e77ef8e956d0d415690a0422af614eda6cd321eeaf8a1db7f14f82c0cf0a413bca2c38a5b3398397dc6a661094413f7c5e57734ed1babafc0cc8afed2912a3f940dc6e02239748297b38ac773bb72fc6b46e03ec9aba7842919d3ea91b7700b8866172e33dd463ebcedda356ec14b7d550c016e58cf866cebe24d326d570469f97d8cb9d0125e8e4255143b8d29e6fad8a5a820129348d12bb057d62704880f9a6064ae4f62137e09afd3f6aea9c785bceef9ae22bbf084012a4bef7ab8b28cb1ed57d9567c36a180415a3ef8e006232fb7121a9642135e96625b86973df29e2487b0a70f21f88d7b2274c31247e7ed1ea6997067c2cb8509b49d920941e0514e5359e57c3226fd9ef2768bc015865e0286c5b610613f73b32b2e578e5e2d1e0d8f54d0e41ebcaea088d2b7bef0c508bb62c54cd3fb4fd6054fe88397332ce74b9cf63f7e6f37dd0365fa77976e86ec757c6962f76d9e3e78d176201745cddcdc2123179fe7a3cdae73101150055c729173cadd71a56f4c2475aafd55da42d07eebe820220f5e1adda87bb708239e390b10771a5a3e78693d1a7b188b496728c44c116a8400284b471dd08ffb35a803954e080d8187dd03864b00ebbd7b7f8bf895ca123d2910716e0b956b764c45ec9fd0d9d3bd851433eae9a347e0ec42a9424a23101db38ec93c882da97c6f10ac0814e7b8e79c49feb19adf8a8a2ac23dedd27d24646fdd57f521390f178c1fd4604fa47ea1feba07c0072832f2b87c5e2da2f2522cefda9bca240c5b317d946b4a8a46b0cca540bf4e3c154d73c6ca9026d32487c6a41c34ccc220ef472e977768715f1d1923cac0b4f9b5d9b787f5cb1e7ad1c100f22b4038db61b1213f8c54510b5d50c744273dbe6f07aa421b1cc860e47417859e8803518154976498f13987309c346632377ed4fb19eb56336cc7ab71585320950b2e660264ec3cc3bf75ba9abd8976682fb4f6a7c4aa3b7e4bfe5ec6c2419c08e0dfea3d34bc22d41174f517216e25fd750af1c50099be49f5d8ac7276b81f62b9fbd22bb867d15ec44a29feb7ca1098792179d68d2b4ae4dcf8f42df748e049fd592e34222fce735570ab583302bef10d27e949c39f3963a62fcc483e7b970b5ddb006340f24cbbbee07dd11341fb466684b109c9b69aa4b17733073a213ed85b1c88a7cd4a3792f11ce277fa3e0879643fb2775839bf511fa23ef37bd2f377d9cce96f09da5c76bf8a09b5ec4ae24494015effa6c79b1824cdb1871af6a1d8000d5aaf22a8fa47e740c671c8d70776e775df0e2407f0c107c62ca1fdbb00e4736e380f4ae45a7a7df60cd13b35b1ece8504a962010450855251eea5f011c0ee48b79f16ec7e6dda4ab61266253c1a4b7805db636fcbfa16c3d08ff385a735f9720fc3a2daf2286a39c7cd9435bbe646dc1dc7467e059900453d6a93927e437d10bb91e9f9cbe3e83bd479c0480a1b32b43fb7c1127ee7c7019c26158e72dfee91dd5bae7dabf2f8846f6f3b2ef0a2e8cd7ff3353c19ce5b1fb59d01e6cadd6e88678574ec98be6e8c44181c07c879ffc030a98c0333b71973f5b6e53e0231ac537a82c97e6f50057645592b1022d76465068b83254b51a95396072fa1475c84b35861bcd0113c301383de87e2fff06400d5860b14aa74298e8738c0ca23dd5842011b0691b064185b384fbb601930a156370650df6b1ffae2bd2cc827f62fad560cd37665a3e9696e0d5a3b5cf49a67ddbd6708580459f3e9701d36a806306b9bb05fdce087ddda880d239672a0bbc98de8a2a4ac06676b6bda7eaba3109e27ae6e534c536ea096ea03aa10acef623e5b89e377e89d1c70164386a431242d92807b1c39e33a8adde022244f1e39cc84f64971f56a49c7fe9d27f039293817c660369bf5aaa713113a568a8f56abeeaf102519b7d4d94109de6186aac8ffdcaf2ed42097eaf195b3782b12b4b313211cd60de889b57f2513c7dc419326a38aac29bc5c9e6337066c4944c447a126c9598926372a76b63f9d877853a409f243cbb482956f8e5ebae0939e6c51835373f548dbb56ad7615b126813c0a150001b86430f30493aacd18d3aae54ec347addaa008efc3f6343e23fbd12213a05b9ff5b6465d625067671a756d0e4e8a993d11c475f5067b4ade4efca29e2cab6560ed5ec3d2f6e3dc18ee1c4696da3b5de53f6b8eb1c85e19d96d5d8d25321c8c00b556a7d7a2cdcf33b176ae82faf8ad4ab7ce5269abfe0375740bb7b2ac6c3d6613d3a3dfc461a2905a8db2a1aabd376cfb2399dc04178962b380fa10dfbe1b211055d4a8397ed00fe2a3e8aff2c4471924e189520f9b880913e99cad0ca21b16e32495265e2debaadb249c5243b3a0661996796d09e5ed1114649990f54afee5b56e2c1ac1e474c4422dce43c03d10bbaeab6e1181e39a967a291fdcad11a937673c3d68c8b9ad2a4f445d6bbd08d063b42221f274b682f6bb2eea41c939bf14447814e1ba1b6ec7db9f1060112338d652e21cc26bbbde725cf9ad6ae3eb884e29c0c73d4e49a4d1447872632aa9561b067290df6de2eac0ae86ff981314e27249a90b7b1d2fd7e8ca7cc8d4a4b386a23f445ec71feb32a9e063c2771b8ebde9ce4fd1cacd8a241a2286a9ad2ab665f856004a9367749cc1d7d1f9e3df3018075e8653ed4bc6c18a6825b11196f35c85dda3a338de1f3b090b3a588f03a1d2c1561ebe1d12f69eb0488f16e63f1c0c05a2da82d49e6bf264e6e5891a5801570553363ff7d00a1edd74a75cc31c9c799c6f804364737651296181283a6ea081f591445b10a80710a6b50f20f3c32e8857e2eb6687ef1967cf5822e6bb55b94ae6e2f1845dbe2b9c904c6ee8a12c157657c65f788ff37a96dd464ff0f44f6de90aaa7fbb4d6b05558de940fdcf4722400e0e07a372a59c301a5afe94b25c416a68f519260e64bb35484c6ed524c0142557654911545103a2321d392be068043bb4e678c8705f6c9d50cd3d4e51af4cc685813ed9e05d3bed34f3fc22b00f2c9398dd7b8284eab00cb0585fa0744c4769288f4bb44616dd5188bbef6a518545ea99851a00d8cdab2fe1e1b26a126088788354a76c34eaee0941393c25886a75eeecec65e4f9bff32cbe7c84344e68ac4614caaae35d2b35d4c10e2169d657be50ec9e2cb46b71c0d42a013eb09840b81f9b92185845cffa998aaad88dae6b30c37273f3711eba9a7fddaf747d5caeef0ea8cdeb2d257e1dbf9153ac87200fd591979ae5d60940219413dc2d90663402508eb85b6015a46f07277d662ad98a82812135591f4566921b7f796b89f2cc1f374916afa5d38d509335fa4f1189ba996665cf9c9ca20f1ff10bab3c346cd2f45139c19d5ed996ca42fe959cf2c87af3926d5d9e8a3398172f38380cfdcbc3dfb4f52d480d05e13a2858b8b9c2d6cc0a72e91e163020e83a606b9f54b908880066bf67626cfef4a463d8eef197c8cb6a21d9d6e10a7f62b7e1db5a7ccd5ab0cfa2c67810c722e736ea67282616c3c766d1ab6667247840c2fee81fce95737f5976874b5e25f772c9a7777f953472108eb5ad25dfa92fe34192005a24411b151c05c44fb23fca93b0c11a97cd9af99f75f58bd655a2adf7786f4248a3fba294cc30e1d68458fedfdb354c942451a9e4f53a876de4278e41453007839847dd0d2c1009d6994a75bb5c1ba241e1170b833e21a8940c80a9e218dae97d7be2d3161883f53ac819c979270a13803d70a289d200c10de1d4279f038a1a4994d428d68ef9dc2cdf47c77bac88697287cc11ebb68eec23d9275c6786e03a4ae6c99328466f83e5d6e1aec90e1630906f57789ca69f775a268a5a4838912cd9bdd8c266f5f5d548b5ce06abed7ffc885b6f1c28d6a8693fdadf81cf63e2d245a654c00e4eba27d36b03993e61accd70e801dbf0ab690a6223becded9e15cdbd91427e84a34932735ccb60708731f98d64260f45df47803bdc0d8818fb192efaeea2aecf7022e7a7ac90ea67a0aaf847507de340f10bd75d5f310d3c65199e6751021b859574a09af9222505b0ad7235b6add269523b42355961203d04c732269ab03a82570b3c0584f2c9277d6e7cbe84cb201e37b0569c52d890b4b990f661ef250a5db1bd28da4736898841ce3a81346f471c10998e4669057eb2a120a7ec68bc6288a1495b8a3363894b89e951b68c47e411ea042abdd77ce6ac1a52d5599cf144d7233bcf60d5751a2f131e178e839afc538c5f08601e297b05c25c3b21583f23aa670925c52ada5e5101efaab0db283619c0d4472a543ebd80b5a7d090dd43f477f099886a528b38c18d912620c4f9948f7741038f1c2b412bb33d8ef582ed01c342f9538b85ba7fddbdcb25587f830b72706e0ae5ccbea04936858ae9e1127e84faa8e75e092b1350042fb19e9a9a8817ab7050ee99d1f06d7f75ccbc5982942c0e7277a12e5dc94f24a5ba13ad2cc63c7e7ef2dfc47cf98879d71b00dc309f31338027a00dcc1795c3466381efc0aa3954c522e6ec1821441a5825720419493703a154f4d9385f4ea4ff1a5f5fda37e7a86148c07c1fb2f874c7eb3a80c6e69589dea2cf3ec3f49d01c6ccd6cb1bb2bc8071dc687c136280c4cc861c2a0cc97795c271aa8a48d4ddbabba0ba39364f7b9249e60f5dafd1b510a05c66f218532885c4b3233059d5709f9196debebdf8679f7aea9cf23e703b57a193728dc9f1c645fa8435d7bd4e72b7b10253d5bc72373e18dbb111cfba9e7b4608737ae7e17675ed46aeea50a035b59f1d760f597b8b96415d420c00eaf512609845d701d4a3b2916cef5b9682adb547481781d71b411502474e3880b8cc411b78743870fc5277b14d82034c12f8bd2578e5beea8e6443f4a4ac0a062026cabd2cd3aed068925ab47b42fda83c063d01bcbf438572b0f72f945c20b86829849f01c543425f4261956bfda871a30845eeb1ba1524e3047778620a0d635abe92a47a9b8ddc57b3e01a2747e60f361ea4cb2bdcdf68005ea77c0c2026a7b896ae597f6a7e2bf93073762a0afe71dfb8abe5d638315c3ebd69c38ce736925bf91c802fd10e385408ee306b76754e14dd65be3906a61629af540574c50c2baaf65520f60d600e1a8f55bfbb2db1eecd7bbe97b76a834dc238852bc43a28a18c53783f6072b027fb5b2272812558031bdbc6e837f0a60ea975763cc1736338ed705e35791db1b442f6444d9fc84e0978bf62c2d7757010d951407ff52af5d3a85404bbae23f334c5bcdf20dc524d18fe6eaf0854a8a1433c277c927055aa7530510acd5eedb4007b7699d4772748deb36df014d2bca48e1cdfa4ef90f729f86ddce9d69cab30ba9e34e8514b11a50fb8d121ce202259f580e4c116813f3732897341e15fca19ee6fd12bb5d3fbd02349a80cb36d6180a7f07c841a41370edefc79989bd6c97f4bef8f2bbff9a7d24ef344a91b1a6c1052ecbfd1aafb2c6248ae92ed9e872fb8db3ea94979e90591444d5ec25645f0da2410f3c32412b96e964a61b91c5b25ce2aa5bd9d2413701d143210cc4895f697adf06d142bd4239a976b52324d40d978f1eeb61eb346ee24b6a13f6da85bd59cdf3c09fcccd68973e51231cd125f0b43f2a3b8eabbd36d5561ef45545c646887fbbe0b3f2d7c58955dba84826dfa963fe27a5b70eaad42a7a450cb2f3be11bc6277765258c2c30b7526f2573b6c95ba6a7dfbc01cf304d77397506a0369a1bb808224eed122137381d82a9c16d39b24340b45ef47232a05a2ed068f04758cb27e152de63fa79816f808b6c792c30818b84d58fa617ac7acbe1f0b7f51eb0573eaa660da8dc799603b2ef25d0530f900d684d0371af98a6043d4dc7caa2581c40911a80b5229f2d0a0b60be3672e7d0623050974bbad8ce922ee708c5324d103f7842b4df9b910a3a217226c39899bdbf3910c87926d679d4ed1f657cc24f4fadbdd25b02b38fe37fdf2d116e8361e2aae4a8101209036012580a6215d0afc78f759fdd2e4a5c515901526dfdf497a0a1454e712c2fdec2d8540483f22e46f84dbd02ab02099d167a739f66f2602f3c7fba18339e74ad51b0d6f273a0902b8b813df6f73b4d8decb4890a0a9f7d9a63f9118e7d9ad54c386bf5ed3dcd0a8ee5b491fe9280c0fce31dc83889e77187efad3522ff2f92ad41e0d40fe3432466a3cb6b0b09c95e50c506fb66e8d4921e6940438d4b17f436a9095c99dbc25a6375b539a97b1e55d7f9008bb351a9fbcbf7df56035657eec14ddacbfbaa40adcee6ee5cfe086142ea7daa5807408c55d0192dc0335343f9351914c808ebf060561d90e6f0fbd39fd81d6862be1f465d93c19acc6b302b2ca3d78252e2485b00f638e4ed4f6faa6c451d833b0976922bc1102815ed7480da916fe0b29568ea1788e2322ba36a4f5afa8251a6b838e73df9bdff1eedb8b6ee6ce7c3103ffb9a94759e99c91f775015a7aa963d6629965058f2d8de5d3767503e62e326e2f2759aa38f4599a3999e7b95e000e5d9d98c18c54f46c9b690f872e21322728688ce789633b0928c0723c0abfd1e0d7a3614c608e59b60b2e08c83f9e11a97a227cef3600e9703b42c9a6b09bc657e1ecc013a3faf14596e803c9891f3e709e8376e0770f48a3e8db389a0a1921f19d6e15418f06f6820ea73357b4237c0ec2cd8a8341da92e3589900cc8483cad195495bfad2d148d9cca41209d7876288027af66059d909ae88cf4c7c4dc754296ba103d557e48357f4c3c11fa675ecb444b921ca8b00f34dfc1e4c75e6cfbf95c549b483662d2f4f421d075a8ee2a2396be7838d42f7c281b04d3f0ac0ad9d8205848c76b64fdc6abb902c2aae26581ad7b10b3328ad0521d4ebdeaddecd0b3a840dbeb2acee70177f50ed217e40d1f7b6ef5ee6fbc29d4d8ee908339e84ae10ed72b19ce26796afa779e986e0187fa9e8d61f32c47dc57a6c562c7d2fb67635c8c57d131ad09c1c0ac501c97c3d3710a921f6d0b431ae524c77f78ae06c8d1ad2b24c1ef4ebebb8ceaa1c633d9427be38901785c7d52f7bfac8e7e3f4089a67dc8bfb65bba3e9815b2991c1de3dabf363d69405682b4fcb74c894493e0344e16ffc36c277aeee2052c1081465326e3fdbaaedd7015fa7e4603ba61518d49b371539b9c153eb5508e8a14c4d300099b4992820c92108ba7f330325485489c0bdeb6d5bcbe719e45a3c86fbd08c88194e5330c69ad9cbcbc902cb76ff484a987e4570ee237244c6dad4be9a64b91edecb25371711b8d90d19f125fd85cfa7474331219edb122eba1639ecafd1192fba7d040b85cea2bde5ba9bb4f3955c61c0004eac1019ffe6cbf695dd7d5b6f53abfa016c1aaa266646f7558c292b1ccab3253c8b0224bf830feccf85655670ed2e1f13465270d2d13025e2141bc894196e5bcea012e76d95ec52986b71c3ee68fced34ba9e993873e355d038f6f1a737a5eae47b589aa10a5b9dd754ee177b2ac86ac564bb198fe663fe1b8b40284037514be481065c63c7647617c731f5b0c6159c2beaeab638e78b10c8b1404a605a65e61d60786b9069883aca7a81cfea0bcb72c5b1e9942442f630c5f4b1695cfa5b727073389e0eb2fe4a0d5acfdd30e96feafcc9b0ce29715d4c9715679bc6f25731a85b72ef23b31898e0097461de95de909e6e79644f4f3411fd048dcb94012df8b4c3bff47ef249429cdf612abcb7a2c38510069ec0441612c7184a75d064555f157c91a5342791e2cc630253ef5a8435eef6b5ceebb183a0645aefc6bf94bdbf53f953f164235b4e5c1f6cdaf5ca4b05b9cccde5d9c68064ce4a2de918966fcf369f0aec6ab892bb2d13afd9aca897309ed3862ac2ecccef1e5771b7423b85a91f66de7c1b9cb38875c60c94ebcbb14357a34287f80637ea99b66c48c55d546a76a87a2096058d4b942b7b9c1016a7b00bacc3e216de1b9ab5cc5bd7e33c5222130eaae2d43dfc12f7177a5d26fde95d49d55cefaeb6f5dbcb68689f13ade6761733384f80459c919f1df955bcd47f20bc2547a1d2712edc6e340c902be9bbcfe18e2bbc6eaf5794f0de58cebeed292ea0a0599237b66dd527fa06210e4492562632f7ef58f20fe35d643799f5c4af3d2a4a20764175c58063513372c565ae709102d5c336bbea6e289090990c3ec31119e954f7f450994d70d58a26b018d75193b01bd0602e5e00a329b690efab64d08b76ab667813d8fc57759e44148f27bfed95388bb9c3966cd692020e31cb95111fdc1a1a49e0178f462f17e8483187339f9d35ba8b4ec2811f6eb441fb47d6bd4c8467db5913a6ddb4f189d95cd8ca2dfba1d1c391d34284340b9cfc535a5418e08d591a22124a9d95b98f27da3f004ca5acbdd456b04a1b4336554409919554702163c8d2f8fce34a78b2687af2796c69f6daa76b632bad8df888e30243eb7918f44ac8e2f572211626d33e0a00396698325deae6574e6cfa161974c8b9d8f53f43ea1d8f55af57b4b05c4b3266fa8953aa2e12ea908bb7c605a7957068054f8c8e85a0c29a08180c3790a6bb23a31ca0a7e43eb08a3faa3b8b42604883252c3caec4999449726cda6e85552ad8bf89678993ae50e2957135051a18d3f8829ec4c8f397459c533c06503901debae45c4290a93a8022544baee84eea2308d2a9040a66b9de8aa51e166daf2f19be5f67193ce4f4f557dc756606233d757aa805760f269414a24bf5027ff8597838d8e292e199fa898a304b422e25ae73a898a096a402512aeebac1b8b7e02530ed22281f82f79f1ede3f4ee199ba8feaf33415165b3dc85bd1e6a7997c87e74fe2031a5fe0326d0da42732d16580b016929909604d09a005b12686b81684da0d609b0954052eb4b8096056ec85c013ed99640c4fb9ab1c9936d547cd0bb75e55ebb6e8bf4833c5d8e644df05a37c07a751665d127cb20071d07f1341b3b5d4cdad56cca60c70f00fc9ec74243fdc053844779e7bc342bcb23417d36c4a66ca915e1d77c3626014e892717f4981c2cddde35ecd31482a652f0a34fbfb4b4c4a179f2f1e8c9d895bc8421069e6fe0e222ffd3b68789ac468e472059683a06944f30d02c938bfd6283987ecca609f504242697b6fa57acd8cdd370841e8e7c43409f49c45cdc7e09f38b5fd769920b19816fdc8153b785f7ebeb7b8356e449dc3c93e6faf0695e9f4e18a88a51ecee2c967a1692bec9909e9697f45491a4356578ca3f72eccec9d5892df12c86f1b82cf62a57f124004aee153fc46768096029119529a65ecc2926f2045d602756db3eeada988e3f6a81c8aaceb48b71155dfd388d6daf32bc4f96dae80eeb5b8659d31c993283010d65509d67afdf592b5cb87a021e6b167710912222846a4f95e339e100d9876fac6d5e0bbbe24a7fc701968302e002307c3068051d3f9d61fac3107cfd013b283a6e37d1d95b72eadf9bce26cad711daa3943e874892cc547764b7041579e7efff9e58d8f5b4db0e52b4ae13ec9e54ee60d9be528e2fea963413c8d5b890b09a79ddcbb91b4f543200b0a187a47d0c60955044c7262a0c7997dc48630d3fce9fb2d81f6fd3fe6772b80ee45911aa0e7305631158b5193a212d858d3f1699195d66a4bdd42d0ba209b8339607da309408c56135d8c6e1ca639ea4e596857053e1701509d0b06474ab0b477d8aa2cd290c58a2e9bf08fdf8e9c563ede5e26e7a09ebafe5a3d2f9706a35bf1455f1ab4afb07ec48f0402bbe19bd9b5c64fbf483dd35b9ac449ad4111b5d2ec09297130e6131866b38f06b5cf06c593299d5a0d924b32f6c75939dad6e78c756775bc147424b864e9c0954e80069fe46c43bebb633eb34411e7b586287b5028f51669360d0c94476259d9e8e4c95c63cd606dedba85744bd46625f79fc53ab394d4cc47856a917d502932031ddf3f73301dbcc813daf1356c24b929655d2b91cb32793ddc15fa0b0892d3c6d7bf553a254de6b6d44789f7ffd4a82207b3e0651bb66a1fca89a11e37e2c277254bafc0e493b3f153efaedbcabd7bd61f4c37254ea6d0e51912d0e5f3364ab22f68a91b4e727663ece89cf42410860a418bf9f43b04ccb3d99306e9a8cf2c2d539659f9632f185cfa19ca9d3d5f7081bf49e5496c2586ab37e5be31ec596492f242b57945b147f656ec0fbc62af944eec53f165ebb3494a986d91da0872ce13a1338160d8444ff668092d21755c033d1759b2df3260adab1b6d96870a623a4540ba37243d89c8c12e539a23397e5d34e68ba0f315ef291709943332cd64f74aac076bcc8e5c3c8fcc1acfbf946f679438beccbee71f063438b59107dbb30cdf6fc2439d9811ccc056eb2f9c67311abf22c1d8b6e712d3f37ac1f9cdfaca7a17b9215f99026f230ce919b7f91785a352ffb13d4a2453fe7299447b02b36059a6e3d205e36d1cf36963ae5db04e4e1553fa6495d37876796fbc20bbe779f32f96384a6978a0e6bff21e4fd81ecac4f6ceb65f31c6c9f65fe7e41a55f5da6285e9330182599692d93971619fed8b604032d808ef3cae83155aca43e03f4d47e4dc4c9ff4989646575cfda58d23de83967fe84fab7052d04a98392c4c027a37968a30bd9a916f53486f55a9ad82d3990f45a4e471edd4ef3735f02f251f6846092f1f4e10699fc75704e209a677e91e297c39aea4b0b6e9056b959a28fbd2777b108a1b8adb99ee11dcd988411cce35c623b4243a7fb6e14c8fc64d87067978e813991c3f897bc55bf2fb10f737d34a9ffc822279f8cdd01e286332269d67af8f527ccdd582d626d47c3680b3efc5305ecba461503e3ae468c0bcbf775bd3f701536e7fd27741c5778a8c92839de17d166e04005147064c83968fae3a4970cfef5723a8cbf83e1cfd90f9f410f45254825c8f4145cdf6923d5d93910760c8c767a2f94ded9a152cb9cd5971ff25cc3825df074c41f115fe9e6ab28f3933f01a2719a3dbd6f49d6295e1d671a36a17c0ee2dece1ec5ff85c6f9b489b63ec17bfbf8a6fa1b8bc20ca0891b89466246e24e484afc5552d63a8eb7d7d7173eda68430206a70aa992047b50087f73dc3d7d1758cf58b036d3a7a25758b902244453307e1a7a0289e2d853171158c4d48983a52de4685fc2dec166f1b259506a7586e133f670b7ab35b4a2ff394cf4f977c521348d141c385dc5ed315a65bbe18ab79e6a62a8ca22e74639cea7d29633536a3b526e38be5d3f312d5356edb35e5980fba17d23dcab10d69b28c1fdfe265128b3244a0150f05d45bd77b0bad28daa9794b1e31bef58072906c1088888a583d023bb3bc5428c9cdd1daabcf6bb48e4fd7449e3246394ab988743e29f173e046b68dfe62f1839b0539fa781e349d672ce270de71c7ab3df3069a0d41df321f7c01c65439043681be4194c92c8490add7447f5a77b1187ac2e6207d6667d331a71aa775d4fa2b4f1deb10661a0921873bbfc178e4474d96295c0061973aff3178c4c3497ff84ab82379a319fb323a0ae1d62fb0a8f69035a694b5e639afd361df6153f8908d4480599037b9c2ca0104b63eebccb91cf290e1a590c54630e9b2c0a0744173d71fdcf30f9e3c437999958eda286ef2a5743667a0a8909d5c6245823c257307a6ea9ddef2ec7ebbc9cb8a5af79ffac082b83c23d9de55c010a572208b79c30343f322b3a8819a9c9b880016390aeb6504b2c07b1bbfa1351c49a52fa5350ab59030bc49001536881fb1ef0f2555c1e32bee0aa118e5c78796dc4d3a3ae8c4698472286177c8a0059a9183033778a6652f950a90cbe519aa849a23b7613830f8599fdcb82c5cd659144c758b77e96c61a8b96242330280df1a17a41e8a60ebcfbd89544cf4825f7c517f0e4c20aea35e4fea853353feba89780a68495bc369fb001d63aba8496bde37f4280bb06782a9811f689dec586caa91481c694709ed1c5e3dfb0331e0a25668090ff7391205c1abea186f895aa144efb59383f87ebe3af3677c33875b70e4ffbf9b4b7ef87e376629cd6c580a6596bcf425e9a3567529b823e6aae2e945f2d869814b33a5c6e8b9e4707fe00a2c6ab785589dbd21a4c33bf526c01d33d65bbcb5872b5016734d8b55ce507fa687fd0f1d5a66a648e1f7e5fb94545c74b94d5c945010e3412aff69d4357b06e41db5cdfad56778b1ee0431dacbe42fe890b688c861f86828faa591cfd80c00b68ef0774a84a1729851abb6661149da3dfe3113a24700ee4136464ff7cb300129b9c1bed0aa10bb284c2dcda8937e866b8bf9f56f4c03199f9720821007668eaf708818602cec95401b020241b9be8de4931364ab70d84944edbbbf6c118446123d4f7e02a0321631ea87b0ea22e10b275afab0d141ab418739240e8ad7bc7742f4d2bd26672fac1d50084826d6d0e246e4f1f05ff83ac4bba3f8e36a3d5428abf079b8f146e54cc6bc977ad4f2310b03c052d0e9c06c14b564dd8fd91810757d53274fb0183ae194ca402901cac952bb9bd66be7b9d87a7c6699ccb131b6d3d03b2b33817e9a5537b341d489512a83ead49502b00661698fdf1bdf5724ae93a10f8d59cd589e3d4d8388b6ea2bfba18f84cd8746a42eab8b22339f9eee208074e0fa701c6d124f2d08cc9ab6894a6505f709740a98a0f98f5e32d5292c3e4f43a619ee846c960f64707b47b3a5eade275122d6bb8eb7a269368f9f93a99303f81bcfc0c33dede9a2cc956b1becbd293636495aa97472876b72e170557753b48909ab86c75b3e1ae4d3aa2ab96fe26620d79593f164aeee85cad3a2a0d53f9adafa92e3077bf6b9c1343794df96980a15cf8396b0a686cbb0d8c70f30400690aff0d41712c7a2743555edf6ceaeae02585163cde52251482b0ac9d1a40e8f9e5f399a52dc9eff4615a2b23c56771a843458cb19f1bc98ee755e3aa9ccec1318ff7a91f8f636e49373378bd44589374fe4a2562ff5eb80b06be4488487d053c8d67e2d35e7d5b1f3573383423149fbc8c0faa318219ddb45d0834861b5814d23c01618fc2c45f4789af8c42a4e3104820191edf7ff93e0094f0d49b1ba8d89282e35a181c0a96160ff26e44b40338ded3eba00316006a567463807f34beea77580f237b11fef6ad588bad6933e6dc810748339f9084df569d6310ff25f102f9f922b0346460c7c0ebdb2e206985440c9cde801ed399fdfe8b814b16e79901f5e63b12876d570263914c626c64c079870c1046aae9a27f95fa5544a3dfbedd51f2b70b946f0938261accc12598e07692cbc708b7195c5132822a4de33817c513c861e7b1741f4e04bff2cb4f3f8222bc23c3dae3d5311f0afcdf9e8c9c92c7da172b72f602be9353935b30c223a8d2898dcf8cac161093ce2ff7e9b44dbb82c743f3e903c0a8fe2c704b03bff98804dd716352feb628936a308fc45c9ef1abdc53ead4b737b4933c291e460fc1d64b9ae4befdd0362fd98db430c6325741cc4471db8bf13f97f5aea21d720578ffc776251525c24bc5a97b01c1ea747dd5873243a65c33dba25ef9e90ce69ad8392619941b3f6eae6c6c11fb6f7fd8c7ff806304dbe51d7a24fd284b5ad5639782d0085752449a89806ccc1d2c937bfa6a7aa7273bd2e17dd72c4a9a211b38ae43ca44d7cad8b90ccb535c7fe5824a820e0617937721205273526fc0ef6502a7c5bfabf6aa67d4d83b94a8116122c820d56b0168df8b1927eb3504a5028c8bf7ef456453258d300029d1051c5a0434de4618ca2f137612119e901932a7c90d519a741f0725dce3bd903a2dbea519295c6d398d05d412ac2fdf4efcd4e97d7563ae6824bd9b5adc3aff7cd2bf3f761fa7bfd091be100eb6038fa52964c09654a26f068264615262727f8e1aea9e3426e09df7b6a9d1bd8d615b5813bff6b3fddd35f1d33edd22be79a92abe7f3742364974a05e2534040c6dc2257cc012069e44eda63c470d2b7a3d9064d5c9fb877d7c4cd5017b7ed452356adc892e90a033d85e3d4b797d8aa20d33be0570d07cde8874897d6eb359ac04f03a0cc0057f3bb492971b50ba560add9be01363e13812dfba48046939c0443b86731ad931dc311a93eb0e6274557072e66c1554c124c7713198ee81e7bf07dd117939e60a30ea1a6212b098b3851dfc1197347ceea58d76e1742dd0d56ef33f301928bbbe47f2e9bc2ee98660a983ac1680ee20d090a128106d0c2c9aa81e1df73936d06f15fc4a295a9740b36da7093f99f27db01335579f96cf6c28359b67c5c3bd606f49eb29420006a782dbd90602c80c3e396f7d5addeadf41fd7451a321b8336863196e140a5ab1bbb9f2755bdd47fe25612b3b63172e01464b974712a35f2ca502b55da82a4d7fcaec60337509fd4444525edd0558bda7681fe60a060c811da9e215183f5816ad3ea893152bf645d08b8c098324ddfd87586b2f607cee6a0f278e808d69a3da9c56ab8aa2c6f9a01916a1bbe6ede2440929b87d30ae87054db58259a36edcbbe0c34d3a470943d29a76c9d47f899ebdf41c4913324925ff621912b8806435dbca18c91d33e96200ed17fda88ae89a5872483b9d636db630d4d76df8951866bb5535e08a0316e35e461383ae2c414749028209c0ae8a82a5978607136f7becc206d5db5255bd077687875a908b7a46958f508b8c0976f30d983c82fc7e71eae94487d906317c320c353ee353d1569850d5828c29a60cce9112f0889d42460f1e2a405fa9ae196702e6c394228d01ba08e573c822fe7eedd74d7f3c753ea29569482a8ed8bc7103b32f1abd956ba7834ea5f3588156cded07a68a10e2d96ff03e7b96c85c8fcab64744c406511ca5886fa8e76b99ba20bb66925cf5208a95a5644c308eae5588bda1d407fc608e9b4d5c95edb9d3ff4afd54d6f18710f435d4ab20eba347771b22bd0e286a6067eef5ed034eb53e0cb1fc44ad6c6902c561f8229007a0678bd91de5df55f4bc2e5014c4d62e4fa40f62df01b87340b14f08394f906c63c3afbdc15ca078f10b209c921baab56187a39a122378a45ce091b0800f0805c83691875e1b6d61bab5118e51404e6a1ea169663121cdd63ec554a393c02c8f473124c7f3ac74bfc7782e3a10a9295d76200773dbfe9d0cc054103236af42a169c0aed88207c93eb5d594341977055e6d26263c56525774efda233770624dacadf236aea2546d4642d0b8338318769d93a132da3ccb08bd711ba9c827fde2c338961de7e30ca0a56534705e07b3220636a0916a8b38c9b8b22ca379831b63f0f977675fd6904a73163f3a5a465ccc64d43cbfc214b4be8c525b780f85d10afefca354d2ca8e784fa4bc47d0d83d0c4730792544ae2c05780997427501ac235c51325e803dc1419e9827580d25b9658fa220e10339447fffeea4550922d1f438a1673a8db84b58c93d7afe5745ab7ba925f6b7a94e543ed8f121d0991fceb93fffefba71cbeafe6302423095fa124cd55bce32318b09c5e6fe5b28a5c46ed59cb46cb6ee2988108bfad76904a42acd014e3535626fcebfbf6e7816dcb5224fe4a809473638ceb3e3848858623260fd7f4e3100d8295d62dfa095ad649d7c456ecde3a58b2527f1ca1d8f9f97ddcdff975d8595c01d571ae4c278cd988bfa1bb54dbe0feef3da425e6ee8aab2f8a1e4ddaa39c93261955a000214fa66464c17d8c8ccf6d2b7b1952e6bd4bc5671e3dc5572ebb3c85d17334d055ec44e14f33fb079f9948551cbae5ea66bb9e8b09176b3c4fea0292b52a7871c62fe67dd5d8bdf96b1a629c4a4dbe58ce56581fd92884075c9a22159ebc8a7d3eb5ce01e44d28204a5e4f18b65b5dd5882114322be0737c191d569fc4a67d30ff3116731be91e41742f23e2c2731cecd09b69b484c2cba616d162ae3223a29a7af631e24d69b79443aaee89cbbac19184f41b3242aa31199f35dbe06ebf5a587e15225ed50cdc9960d2b900211accecf69052b452ef1919b276f9d9bfebfae8b0ffcecca30ca45bb8b7289ec923aa6d17c4ba014ab2a1786a6b11ea6af1d53ac5e87c612f815ec490ef244af835bc7a24b3f8bf66606c1822403ddfa7733b66c1c80bde29534a7103c57d3a4ca79fb2cad356ee0dfcf44976e97ebd96a5c53defab98a4597cdab1b419e271719fc2a7d83e04ba76d29f61f7c02c418e493e58b77d183dd457a3e2c18043d89a1f2834dabf06aa19261b370c35cdba6111e5f2b8c85b6284a6b122000f8a3997921ca377d16256eb90ffe313e4d42d476e48f36d6e7f6182bd37ea6d639f8a385cb16e9c601b359d057edea6e4fc29182d5102f7d47f1a0bfbc2f798ea549a02b89793096465ac9399ccdec9dd3b3a3c59923ae23ba03648785b077bcd6bb3604862d7eb9d0fdfda8739a09883ff476086c15dc84274d2e56968db5f1124df91f3459086eac4f2c46642137142d73bc0c060585a06b3ebae5ab54d9ef8d519cd1bb9f330fbbd47eee87461f741724b9501c4c6a326c4a4e44b0e071805b4d8c6019c534c656d38baf2eef68e201a0dd47b0f20615707411ff33bc654997825b63be0518b1b121357f30fad01b16fe6c1dc6449d0ca6e5440c00627cb898298332ded417dccfa62322ee4a806b99b06da456d22b96e5db394a87de48ed7423f1071a6ea22666606a86aac59213f8b434c10bbabceb25894573df14c4b3261da994de42ca66ff1be6d28e6adf398b22366a303e7fc795c22d1e1c606467123ba3c2af5cf86ab82e3512864a2ae50dcacecfc74deafde231f575851eb9f376a3435dc0c434b5405e6932700558af1341e606347abad7407a808bfd4f08d632d2ecc84f52776860170ea33f9cc1f9e33340e976d936364b5d50fb0fe535d3da81bbb1c11fb0b4a1d34ed5166c603d418a9d420e4b25fa7482700cac7525dcb32b93f2bcd6b3ad1b0e244bfa0c09894583e113bb9068a311d5054af4a19d7fa313b6703d3543c912266593042070e03d0ea6e38261f1df55dbfe95801155d2df9fc6ae9becbaebbf518d567687087b39dabd2df230576c578a652b2b040cfa6dbced15e0e355eb951de4146a5dc603789faefb9a671439647470055de2842b3b8a27da3cd988bef3d65737394896ec5ee6a4e4438014e4ab396e433ee1456ed6baaf499686f943a2cc9a787a910b69fe96f7013371d0e9fa92f7475d1c2e6f086d5b71193f26c5bd3a8c6201051b977e6316361f9cba5427ac69b48df992999b75d0012b0c55d8e879889551ef0c1772bf782d44acb458c1fde22479adb65c3d179d9a71f6c07d6c803312386c2a01a00979c77d72b8e33b7f75cad3bcb0bf01d8ac5934ca261aa13bba67f7f98ebf8f0f29f31d5bd999a7052b31dc9c22b7c9ce252de7214c6c2171dce72a6dc249ca3356510fcbb583cc72f19be8fca0ef86d407cd7e431fb068c628522a691a3f5735125cb2b7486d0b56a2d75ff307d05e081b3ea8c1322a5b7a012dd75d620db9052bbb5d37a41f0834aadcd69bcd114d5eb467928fbab08f1cbfe812b467a8a0a7ededfcd8d5bc329c48e0532cdd287213c6574b6e6512b8f211203a2294c4a58aee1a2608553f54aa68a8d639fe3646b36372a5038240b10a95e5433bc534a494d489b91118da704ebadc1b0783a576944c66b5e60d1f57cdba697be7c6b431e3891128da5575a096d34ed6e2a1cc149e5c74c3911dc128aef20f41d90815f83ce6457582b9f5b8e497d51aa38f91682ad3cb495599fa53329c99384c17cecec52d529ee7793dcdd7de6e67cf9e3313a9a6c65e57296a2f508fb6a69839b2dacdbc1bf69e1709d0d454aaeae1ea8a815765d647738dc3ccdeea5c33556fda15201d96a864bdb87418002494de8c8cb0041dc6e8410119a7768fd05724d9b28b22073a9c1588c6067b9ae6e15c0b5e9b19d4f7f3a83ff80b42780b10c45da1e597a1f16bc40b28399c48a6ce234a315db8988b225894b24f0936570152565d72d6bcf661ed8414cdb35d324cb35462e0475a74ded25b2c8ed4e4ce9fc535c5f55cdfa49a662dc218fec8c39a5a502a5b2b0b684bf6e106c1fdd536df27fa1721865624cb9d7dc47951f547ca479db64b5e2b7854e46d1f3ae1238c20016e2535fb957115cacbb2b861053f6db3c50cdce3d556cd8fd7a322dd6bb0204150082488b9742e5678ceeca297c2f83da694f9322e99609fab60a05104c0529c7601c32cf5d77e824fe00b683077aa0a016542a1b6c547289332118ce0719f5883cca5428d8cd124b09bab77a3d8849af14aaec684b5d6c3319bf226b0280fcb9dcf6cb5d4a654c669aaf09b45acd7153ff770014fed7e37a8bfd8bb31358aafb377fda5fdbd42639da62da087a9aeac4220570a66184a3f9d83ebea6724b5330b48830d008d28045ffd83e80f01b41828c856b9a0f509fb5e8f0cb1b1350fe414c147315c0d53f5e571a999f618d1bc0a35051860b3860e1630359cd060d4f786cc9b9ecfd2006bf9801f76705957fc698eda0e78614f8a1dacb9560ae96645b260e2c6874569c11576385a925fe34a7c292314e6ac2c10a7f1c8c33bb775248083e9732de0b5b85a3a9c5290bb87f4917a8ace4aaa5e90cb32634a2343b4adc555c9e1c09527806cc55662b8a8f2e2e1789212be2a8f106b5321f61852d8db1c3d94d07fd24fe57ab4bf491243b846a667ae1e6c33a07ba590c8adfca712796d611541a369938df9ea629543efc6bbd69e62e6821f685889442ab312fb93a666e75798273c8fa06f182f608479be63c633621b46f2bc3897cfe6593a94996ad593601fb44299b5c647c3b809ad50aa039de358b68652299b94bcb048d9f31694b2b7d829245ac4cb96ccbbb8b7e671e5d239ce9db41f5fcc564aafaca3d4bc9d512b7fa361d5a9c4f82ad65272628f1256ad2953ce02a5759652f6641ba5cdb88508e35ff7982c85a17a84e1837dc2ce96b98ec2ea5ce9cf313262283f2fc2bc7971d50192e715f00243e00462e2b257370c0d0efea5d09bc5501dcb63ca2c47fe7be00fede0b2c292c39d843aef7efb1a2706e095200132967768140f93f8461c5605291557a36e4d4c16c4b833eeb6deb5a213a123277983ab445a1539c0c7e367e56359fd5e1d619dc3763d190af62f993ffeba9d05eecbc8c2924fc784c2a22db8c6316e9ec067d5545e01ef26c2bb930754e38194457740d196a181c4d33ed36c92fc752e12a5ed5c92c50af0159c7f24a5999035dcb2528143a44469c6c471e35a2dcd54db403eb5846c3a9cc1f34dde5a2ff6b084e23369190fee0a6bdd35bd93fb768548e0ec0b0632a1e81f6e76b9f268ad3fdc40370bb133af9a7614cafdf7364e837441e9e8cc85df6ad5c2e09d8ca92bab9b5224fefee4342d2f43151739299a14a57eb1bba1933bd04af980a3fdf24bc8c80010be85c9f84659aaf19d59101a10d4f6b516232f52d9c211d8873783199897fe2ba6db022b0e2eb5388e6c13a30c1f327968a23a1be1dc1c682bbd41242b73bd544d021beb7966365adbd3c8451256cb901e57902ae87dde742104180872123ee06f443d946c20018314fff3f409142790287cba93aa5647dabfcc44d71a34347472fbd34ee82725ddd4ca767e887b239d83ad48dbfd980a8a8b782720d2cda273950f6640788d3392bed3a136fc922f33ee6bd6fdb0385dbe5a231207f246e54f1618ab975184704d4922c603a0aae44ac93f3df1c68d8408012b2caccd3a4c213838842a42d3d54aeb497644dd0753f2dce8483d9de024b77ab2f814338a8a7941ecffd9a5ca4402361312863345c5f7023c9b5ee1f4bd3d1bb1756d652cf633cc20a4b9f6a0ee6e51d685169220f12a1fd317fd4f4d3394adb6788a0909ed18e24217db67da9ffc31946fe348aed018a56eea212759e25314d3c20e33364a72e324983c34b5273fc4411c61d823d97bd333449445bce17a4948b5504e876431f1647f0248ab041ae9f571e5d42efa3b311ab00056a2747e52c13cf0b77d17ed383f9e02dcfc592f3d94447f3c18d3c9a70b788119e662b3c0678900c1a4d7bf5c52040e0a46b94c537b916a4fbea1be12164dfec130e2ad141834130a808dce745e6fa72cf802fa2dc9f30f2ae8a08374e4703e334d8c9183cb3d7af68916ac7aa56aa18e7fa25f6d3ae7cc92fad37f930a64ff3845ab1147b02e908efd190bab8b2879830d911f67b34ad75ab3d8cae733e15a2c421f856795347f6d8e1510d91ca79750d14d4e3971ed0254da686f7317ff51191e50a8c260791f059e8a02ad7a7045d6294e511129bbd106335513220b6df5c695f95bc7794c2357c6230d258b001c302182c36e784bb87203bd20783935b0229b8f553800455d3cda982498a890ec703706a340460408cba352c0e801c9f0ed0644831bcdcfa0765e470b56d6705eddb26e2a07b6be3faa9970d6b3238b4da350f4b934c07743e8af930362d7e7e3cb99a9667ba0adb8d323fe47e65a8110dcba9163320224d1b2208f65dd0008325ead1be8dc6c88e30f02c5f12e258ef13117512a2622defb4fb4d0e388ae3b69b91df295130572eb78ff519e65fa1d68dc7f223cb50ec0ae40b575f3432a86db6f8ee9eb6ece6c15aefffd3209a25486b48438e4694b402ed0e96c619626383346912399e6981ecf45be99d9728f198971d79f062fead81d53d5009811ae8d18bb82a3e4002f859be405c56c201a05bbe408b7a300521d07d49f0c09d3cfcbff76bb22d9f7deb58e822a1644acc0cfa1bef5d11309c5047120e5328ba0b5a61321178f6588f8ff49d8491861063717a2d8e8d52264c4a857690fbeacdcc31c939ed7beb538b3b4abb0ce59733a854a6eb6f7586db1af041f304b990f948685555291aacafa26ea395e62b8d5cbe4b556442263b274b1b5f0b9cd68830dfc04e84a510f9a98d9886631ef6eeb4e038606e8a3bdaf6a31ab502c3615057f66c31f23bfcaefc41cf184558605a95373754f61853fd7d018c18df3816093cafe6ba471fe0061134906adf15e9c70a29938bf7afe8fe3a945ecbd648262a2566e3691a22999e4f38074cd3a65104c4a7ad642ca84bed300854246b24918b3dcd147e9f84b606c92ced4849600a204a2a9fefd8230f4a67daeff0416ff381d02f5c7b063e068e6a3f37dc034243da54d7df049df311ec04e0918a15271322beb58fd5d9317663fca95d71f81c68b158487a666828d8ba7170318ce7df469b0ea8865bd721ff64745bb0960d7adea896ec4bbd28d8910fea2aee574b8f8dc82c650c73132bdad9ca4311b5259097f74613a81285ffbd4e121da245ad610c0e44cf9744e70b8958a96ce8f0916889895815ac639ca468a6339b44acd1cc38e5f51b506419414869278cc787bc0828044a75a8c6797965a6204afda7fffa781b517f43371f1d50cc494ac634cf823a38d0bbb366e017aa3dc85526b8102cb358a6ff94c23b411648026ce26951fb49c53b4d11f4e7917c7cb48c0949e49cc6c737dc5311c606284f2eaba1396fe867c16247ea62b2ffbb2ca32985da0c648889fecbbc6471cea85e3b5d9fb8c74de0db6d290e6d7ff313363af7f78741d6e9f315543ed2c6d0f989d310ef2e49fe59af14c185ea9abe889f21dd861ad69f810a17cb21a878d8f94810ca5b4f20bd4d7971bc72b5c54b0861016cd7a409b1a51ffe2485a9b479bb012d4ef138aa229e61011e93261f1f0af64f9b8089ce2aad98d5b0198a55df850699bdbd95f421cb36305e29a0bd440f269c0521e0056225d95227eaac68b7244b0849a51c7fcd79c9f131be3d57df91e996fa3a7aebe8f5495585aaa8836e0fd0f7ab3d7a22038c0619fd2fcb13efe1e050de1f988ed95e43d9ca328924c8baced9f291c5368ec28bdee8c17cea43c0e0c04542c1f2485cde812ea1d1758575a6826266b721043740659ae34f9ecdba898bb4793cb3fed1e883c21e05a2eb4bd024a875e7d5a405c51493a486f916b0178fbad9198de20b2558d160c0b4e630132be37f96c85d5295a8d4881a249bbbfde5de9869d2549e3843c8e42fb7413f7ae60abd537defe1cd8eb986564338d5a1d9d70fd1b69841042f6de64ef2df70efe078b0764073388648c68c3f91c5b24472c3e4698922a0a51e8b71f12383441d0d14f86bc4aaf44940c0504015730530853f13286878787878787878787878787878787878787878787878787878787878787878707ebc9f224232051e4a98becc178b8c41499c11144a5802e9165ef85f82f1a91e533686d494a150d89f28098224729202ac20744960653e2e1115ce4c85541a3760439f90ef5ca775feecb086ee42f91fc1592bf427a25de6d3e860bba6f0ab1d6daebde17d65a8bad3db1d6da5bebc25a6b4dacf56aadf564ada9d65a4b6a6d516bada55a57d45a2b49ad2caeebba466a55715dd745ba2e91ebbaaeeeba525cd7756dd74529a5d7c56919a594524a29a5776429a594c2802c5a29a52fae172faeebc5afebc575c1f88bc378715dd7ce85e78e9054cd9e468991359120745b808a7e86805c2360c0f0660ba6aeebbaaeebbaae9a939a96544d1f4191356930758026cecffcd1336b00c57579b3074cc5e717b873e6e23afee5e2c2c5d648d57cb13a91353d4023636f78581b1058265a3c09e44920fb225532c8f6882c490539c4d248222b2385581ed20a560919c4c39d5de0ce9909c7845385a44ae65897c8923f903fb6a5a716b580608db881a928d342a6b6a44aced4a0c8922af851817cd49f1eb58705158a18988a9d4d4db4a2896a8d547551d589ac0e038f9af3526f5aaa4d475199e821988a3d2c7aea8b54b54fed11599d841652693aa8ca7490ca430955891d988a9d57f8f071094955db5497c8ea255ab525e72abab9866e508da87979b95a52d53057506475087a5c403331578f082e285c4462500cd289ac7885969ca29ba1cb263e7131118172722e9d2b0841729432590ee1520207a63aa7c09db36c269ba1425215692e97c88a2db8b95a6c68510d1d7ac165848c76efcdc028032da9da40506461208602c1d01f17da03cb40a120220ba2065123550dd089ac05c8ee265026148051ab82a9bc48d58c1e91958229f13b3459ea90a34ca14ac880a9ce15779e8d8a534868fa109a3f64e3377571c9b2bdf76c75f7df33680665d93d6bba659bbca74eb778cf97eef992659fdeb3c7ec9165b714ea965df29e2ed325cb66f196adee2ebd6550b7ace996355936c95beac856f1962f6d7323fbfd4e02b2640fd923cbee16ea6ed25bba48972c5be4ddad6e65d9ddbb833a28cbeeaee92ec9dfb44eeb64d9dcbb5fbafb25cbd6de23cbee1e3145a8bb5db27c0520ab5d46efbe107085097540ad1f556cf57140560c8a29f2359dacb90157d9fbb321f7df955efa8a3a277075bd638f9822dff7b0e761ec1d630fe3937b3ff130c63d1e8e19e3d9d3a8387da84b64cd244c217406cd19644e25d093136feebc38c63ffe31c6c7c7ff8be3bfc0ff7dbcc0311f4f1f2da99a364bb480727e6e7a6e0005c6deac79813b7bb873d6c2e43731f94dfeff263731c1fff14d4c4ce64b0b1cb3099e2f8d82d189ac19029812df236726473945c0c4ef4d17988a271393d3c9e4271313939b9c4c4ea7dfe437399d4e412e70cc272c831a15a5508fc89257982d344553e609254c4c3c09e402776e813b672c4a4ea79292d34b4ea7d34f25a79212939f6e722a2929c989b904cb1c21a9923ad325b2641082cc169fa29da1214c234e274fe2c054a9a4a4542a79a9a4a4e425a59252e9f4929f4a4aa5929c31e1984b58ce342ad20445966cc10d90cd4f4d8f7c011425259e9481a9d899850a92528984a4749252a9f412498984a4e4a597944848488a54e09849620fd189ac1e838cc99130f246ba489b3230512a794d04532324242323241f21212139c908c9c848e9242f918c8c8cf8acc0318fe0f6912f52d53f3d22ab970053e287240d90e4d104a9040989d73d2b70671522a491111269e4a49191918f90464824928f9c64844422b58d088e99147f4897c86a1cecc8169d229ca11c48234646bcf60153b12391ba8ef48e44229dd491ba6ee4a48f90baae6b981438e60e374c4baa9a475064f51135404df3d3323d4d02284824af5f600a7716c19d336eebba6debbe755df76eebb68df4eea46edb36a198371c856aa42a0ad189ac988576c919724364a30526bace8b413015b56dd3b4eddab66ddfb44dd3ba6fef364dd3744651a7d523b2221180729432465022cbc79c51e70cbb9a76aff6ab6957bb77bbf64dbbf7469a8b238d904b644518c094789c6ef951e423c7b7119ae6c599ccde6bedbdbdf7feda6badf67bed5a6b37906da05131b604459606a20c50e4f1135f7ace00c5bd5e06602a3e63b873764d6be7b49fd64e3ba79d7336e06a408d543d4027b218409423e426c886892060aad239299da773ce4f3a299db793523aa3ce78e9115937c094f82805a00454d134ad555748a2c80b8d9c321452b136e7be34a5b1e91331771351519eed79fad9f17621cb9392d0f5ed7d69db4252a5f57d892c0a53e24f5ae45096750459a24aa8fc92e57d9128f23077b534ba9c12bc4257284b7b851a45b26001202a1ec046160d98027b54902510b9caf11f96258ded069c11c305dd77853880bd881105257002093b3b3b3b3b3b3b3b3b3b3b4e38e1841340800001020408102040800001e284134e38e184134247fce46ec25f8329091b252fa194b6bb08dddd9f7d7d7e25d8224f7bea98ad143a69029f2cb54ffb6a8e24243a9b214c115173dbae513a4c383c2db73752ea9593464d0c5fc0d48c41f2a4de61ea089d3c6d892d73c63925445df014e775fd6ada3b744fa0278c4a3b59a60a4037e26e536a65b893d948149ab5620addb21d9ab9edb3999cf4aaf66299b671a38e2492628444c58a52090bd3c9a4858b634fbb60d8beead6e1ac28c88f0f4cd1379013604ab693e564a14cb33b7627bbaeebda9569d9657772bd25baae2cbbf4befb4d9eabb7ad5e8139bbc45a056f5b25c60bba7ba38f88031f2f29b9f771a38f7bb5958cf3b422eebb46d5df0fb46eb2dbeb367b6fef24604126a7d0ec7c86e93b4c7bbb2daab7b6eb848a8ab0793e4b21228261a3ebf1da6baf1d6d2cf2369b107ff71490aaebd328f5d6765da91e4a1f0d0a65e7fed973ffae8fe6f964dba115d97cd0a1896c3e689e8ecd8b3f38f6dc21a23933c232865468f4e0404241246a549d31b9be614ca32a849e1c9a386816d71cb11c9244b268f2983153a651554611069822874c1868ad9c018af981c9f52e924855891aa55eca7c192a3d435e5a69a5955266d7a5072b51aeb733bda26d2cd7359215ba4fca5c8f97dcb7673289be4cafc89873646f9a6d63c9bcd91ed5014cd901a9079d1c82a97a6a135930d7d31f37d487fe642a6d069491e15703468635600d5823d71a50870c51d9560babad975b9c12539b2a8c90405584237095fd25252452c30c4398eaec3b4639fbbdcdb08d5b8eacbd6e6868b6cc97c9a3fe6ad846dbfcb879b645f4f27a1ffd91d48b3e33fe789ac5578ed4e607bd6954c5a141647c78ecbce8b4e49a65574c9649d44c97fd8b3d364172ffbb62723d8cd993eba74f51afec88993b5149481794ebad9f435a456dac4b07538ac995ce7cb447dffed36ebf791ffd893d1b4b5ff38a8899f3beecf6d90bed621ad4a87a8a2910a6411a55cf61fa436f70680e0542aea73f8029f58d8bb0d97ec34574990a519d46a9af3c685e7eb5948a6cd150ae45275186eee4fa1ab61e3a5b4c7f50410ec155a59144702573b555934331a58899b1ef1865ecf659a957be2805ed59d7a19f2ad4536a751f8d56a3d4b7143a29997424b90f9190eb2954492440947a3fe1ea1a69547ba5fe1bc55d3be79db2d6811d3bd647c2fa7cff4921b96eeffef5bb7fb5952bdc3429876aa9f3ee908eeca3931b42f0f8f11387d0e8b4108c8d8f2ceadcd55f5b8eedd683b1f59079f1c72322e6cd8b3e8db2387b7bf4074c519b2abcdedab8f9a0c37af1c78b3e3d3dd1a706a4d7c79f268088c513a63c54a334c953a9a93d3668356c3db4a783f3da25f3bae51a8e431a557f710c18745f1cf2cddc26fbcd1b62ca19a9d328fb7a99d82335dbb57695912a9546e9d3f86c4ed72af53c9ba169f318b5b2d65f9ac8223dcdeb1a556f2bd6f2a1a0094d3081091f6002c42128cb777737125d3674bb24430a34ca7cb497929cd0c91c88329f93a37ddacf58b197a48b9cf1ed358f467d9d13443fb700573be2507f33518d4a3ab36b308d82aa06822dd475a506d211cfe22247af6320fde48e1462a2d33537ba8af44919faddf922cf03aebaed17e790f2caeece165924876049d3a3518a6884d07d924645c2b225771aa581fab273cbcba25ed93cee4a172f95c02162fee2cbbdcf71f341922e5d5e485e03013590494ea763bbcbfc664c9e3162d07d33e67dba51a116b27d42ef93304388b40eda70a0640943424137c48c3bdf8914d2a8295b30356fd2eabee992e775f4898879fb271b26cf4b1a1d3ee08ac301e5a4a492eb9846c9cc999eee933231df7431c57f73f34c317a4264bf00a2cccfc0de20cff70e7203a18380244c9e73be85344ccc68b3116396c75fc4c9f35246cef4cafc7ccf68835b46aae2112d135fbef8d255bee006ea2021a96aa15209a6877c4fafe890b20557f7f312097015778c68cc76cbd18ffd18a5b45846c4a89c756c189bbec0d454c912a657ac2743de6341e5f666a3e69c39460f856a1d261c92fe24a318e5a206dd77caa746c5fedcba451319cc462d3de83282275dbee0ec125c75beae43afc05fdfe1877bea03fd8494ee206ff40a2c8118a2dc90afc339e79cf3f1e2f959e8d989bf1936a037a346d915d6fb99efafab099897fcc156be5ebb1f4af2ba8468d47d295ff633f776add4ae9db0e712c30b4d1635924ff74120ed11902a2b32a2a274284b9ed91416ff6098fe9964a832230559108029524563c5e42e6e72782d76e01c9e40a3247788e939ec033c85dfb6cbed870e64f8d8a8ed3bc808f4ca76ee06ccd0f3a00b1cc3079dc9b7b7780671c85a6093732d4c4cbe43732d4c3c13f458361a2793f7c16b67e16999e2afcb14cbcd86d474c8147f33b2f6a93da38738c60cba8f5e1392513993324ad8127a1f07f2e6c12c21aa513d6306a4a7747b6f36b67f9b8d9182eeb3599ae04df0d82fdc3ce8b1a0507972988899e18bb079f4de6c504f46a32280c24adef715de7715de5722f1bed28897c213f148de67b7d373e73cd3e6a180e466038eb0f6cc447fbdfb089ba8073f4467e8ede0404b1ea2f30e0eb4e411fd080f11b767dc21e6ba256fd7b5ef2037fc71a02513613f7a7b883fea097192b18925c3df0372cd5365768473461e265103a29f285986562fbd8f4696d0bbb71845dfa80c789fb55d572afd2854760c778d12e2bb98029f1094520534caa7ab41f4e565344aa21a4696265992647995199bfc148246eeff0bdd773a792752526b3b03bd12ef4dfd0f257fe3bdedb1a014d0286a1b40bdaf5fe10fee728d8d75c8f574b331e392b12f785df2334b152d434903e69c5020505946a36aadb5d67aaa59d248132480c9f61bc9548846413929d028d897a7b7b15133c1073c4029a594d29839e79c734a29a59c734e39e79c27b97473ce39e79c281892033273b85578245805cfc0341ed0b2e503b4f3a3932223057530cbd39f30544588527f7bf0b033d4430807e847a6f751ffa1645affdd9069fd5723d30ca6eaf52c7fb1a6075c5d31d6441b920a6dcbf0d2ecf0590f5dbffaec71eb6106e5e9651577f9c2a3390353d947f9c25c11972fbcf96cf9c29a8d962f9c49982c5f1813c2f285afce856dd3d87ce13aa4e60b5f3ff407cd179e91074c65320b7103a6b2d77c0253d9b5b3e140993353a75153a651f45db2d9b058c342b7423a7df4116de0aa3b7dd4015c6da79f4a802a592481c0955664cd9898424f796821cf172b647a08a190694ca66f656ada58fab57ebe7ece5a27099b668747d8629f9f3358a751df9ca13c745e7068cb8fa24ce750a635b1e7f6f6df14624165d206c43cd66d38e631af086a324d4fb61a157da2cf679aa6e9f968d467330cf39c69d5024ea78e02fe4d9c1cffe68f04fc9b3e5440d00578b106a214f0e7289512d0754078f45986634d471f55e8be5863cab2dbcfeca8cc65dc10d877582067f3daa797552d236266ec5326d66093fd87ba8ed9d8936b76c41c337b163168f05d3999d25f39974eafb4a001e833ed235b8e144064d3db11b3b5194bf65adf1b10d92b86778c869817e84096ad13116d7420d7f9e94d688b62228b964e9d5d41a62a2d4a694febea21f35426ce6c85d133e1c8f5ba3d373a82200a9e23cc18a540696ca13402750b0d4da10cf39333a9919270c597e8d22bb4bb4b5eb71e80297015410053f3b1e5eb22207bca39634be4d1f3b1a557248d34d605c74ce9a4f49a238d0aa25171a31ea4a452a384e8161aed1580809e88187747d9a6dd48297d8fe2e8629a63b669948e6e0efa9ef4c3b63efdb7712779c3a8dcb8b30c035c6137bb40d9bdf7de7b712cdb3bcbae7681306efbcd46a3edde7befbddbb6dd7befbdf7de7befbddbddee766dbbf772f6de7befe5fe69e746dc27dd726c1f6512e3f0cc1bb6b99fe96874bb8ec330dfd1b66ddb369a9804ed2fdc8db24d236131f6d0b0d0e8c59f468d348dbb58660ca374e3b8519659b882abd1a8d3b891bce67ddab9d32d87fcc82b22621827efbda37bbbcd66dd66b32dbb34ec17c34e3a0d6b0cc32446b4b15cd876e5eb8663bb1c65d2c33a6ea3925e01c3b0edde77f75eec1ebb86611877b7f7f6a6dc68f41b333cbf617a52878d44acf6cc6a1c877dc3360cdb308cc3b27fdcb3eddce862d7d331dab02e85482adbb4c865a57b2fc65dfec2d58df7e47ebbdbe5582e6f7a77748db4e5d8de2cdbb66923ce04ae324f0770b582dd7befbd54d22b6cdb866ddc766ebb431887cd48b348a78976f195336cbbdbb6dd6ddb7e81b06cc3300c1bdd7fdcefe8725e0b0d8bd9a6dd8f2ebe4097cb360ee3380ee338ee198771188661d868c46d18b6ddde7befbdf7de7befbdf75eed8e7ebff5b079f1878898475ef4b978dbae806d77dbb02b92e2f55c964224dbb073d81dddcbcd6b983ee60c131133cb33fdc53019af0e23c418e36c494aa29b3f44394bdd30f6e4a82794c1934fd2e4faec7479bab4ef793a7c569234524a29a594524a29a594524a29a59452ce39012135dae41adbc4a2e4a5158f3ff58a0a928fa41079bc4aaf901e3fa357bac7d3d0a157b895edf13cf48af6f81b3fc407d12bf4f10d68153e36e594f326534a390486ef2936b9b5cff0750d67dfb0760e6f6fdca2c3a3937077114c7a0a2cf2119ce22478e42a30c95760152fe1152f3161163fede040cb8e9886dcf14646b6f8c905072637e206c02725111f7feae9f59d045cb9a8b5de44a0c6311d76e3982eb1cdb01bc7d438a6c36e1cd3ffa1b2c9fb2291e95fe3dcfb5019c3cf4e386617a6d32dc7e9f2f3f413cbe9f23b3486bd85099631328d523fe38d544d00a2345c592195a8c22162369d309b4fd886bc09b70e0bdcad9212ee15b87d7e8200050d8d701375116ecda5e58b849118cb182c671aa773a8e0d338b9be7fdce890ebe1dbdadf6b4fd6daf7a78685ee8b3e9fa5828d30877d479f1804ae208bf56c491ea592254d8a22b4e4fa8c46ab6c9144a92f6af1c8f5cae47a69e0c9772aa2e32e23512abd226b83ab28638c9d65ddfdccc6ecfa6054a8334231872975b5ebfb46a2fe52c9f6cd4daef6ab33b9beeaf4332c9bf55a56c4ccdb778cf2f6ceb24cc65e43f61ab2345a750d354abd6d1bdb47d83ec2f611b68fb0a750d54740947afb1936b399c59e1dcbacb55ac3d88ee91eb57f68ffb06baf329b966d39b26fdddddddddddddddd9da38f6916d3ac519b1f323c3a9a46d5c7ed72e647aea7365bf6c69f466d7e1073ccb7fc0d5c4196f9a64d33197ba02c8219c7c1b4728c0c9b8099c9d9489bd970a0e411ad660dc3ac9d9b52721aa63b80a98ac5cb6be2ee145fe7f07c06658ed16619777bfab6fae6f4bde95bd3b7a6bb27dd2ea5bc2677c43cc2def5b727dbde9e6591c7bc22621e791ff6ec75cb21bf7945c41fd44686c70b4e8c99ee5aefbbcf3c694fb65f9a94346d69689aa6691aa59e4201854b4811aaa84d7f86fcc857ca529ec374075005a11128905c4f9b90eb14723d3cb921048f1f3f71088d4e0bc1d8f8ccc054e64273b1e140c9738624d3f567de70c7947ec4136358ab29fddb753c7decb9369628e77d56caaeeb22121214c4064f40f1c428c6592a8d74256dca208327dfedc948745308a6285c411bc41a98420f55e83f1a39a856777dd79c1c21b4fe27d37a094056058a404fe4fa08c0d57c3d0468fd03e08ac6eb1d0059550b5a9842ae6f000320ab72810b50c8f541c0957dfd0220ab7ac10b4dc8f50a80abfb3a34a4845cff035c61afc70159358a2880e4fa1b70c5bdde0664553290a1895ccf035ca9787d86ac6a0691d70f00b2ea902105c8f53ac0558ad7d780ac9a869a0656aea7015723afcf01b2ec073e55ae9f01572b5e7f0364d9107c02c8f52a70c5e22525d7a720cbbe900000b91e05b22c093e1b723d0cc8b226802914897a0c5916091970657a3dea04ae4c5e7fb86a610259368605f525906559f0ad605917c0144a822c0b83135cb9c0a5d7777045b24196a59941fd852c3b03ab44552242965d02a6d0d76b7075bdd6783d84ab1f5eeb6bd7ae5d6b8d35f223c97f9d498770db0ee1687408bbee10fe8770b53a842cd621d44187433880011c420210e01016a0008770871d0e61ce87d0000638c0213c000f8790071b87d0c621eca1071f6ee04000cb21f4e110de3884380e21020e21cb331ab758fbc5f618bee7b88b60152bf0c859e015a69be0d35b6093bbc02d8eb18b1f708db3e0cf2e91e91180e3860f3dd8e0e10006c83b14800003d081b57a37da485d732a504e4e0e50077531cbc71a5a24517a766ca6514a297d0c1f578e89a3d4c49df32851a32876e55c39d7855d17765dd7458b68cb2b2ab5684b8281b628050255d7108d82762153fa049d026d42bc2ddaa2ad1513467b7ae512d22814952a2965449192e87cb4aad248941bc0157c5c02b22a4e4ca1446380abed25a751e707e99546aa6e4bc589ac4bd342d342692ace3524adf75d7ad7501d7ace9573e5781f95d17ec036b3e0cf2a91e911803f3b834c8f037f9626d3dfc09f8541a6f7017fd60599be07fc5916647a1bf8b331999e07fc592432fd01b001f0674990e933feec4ba6df017f360499be00f8b31fc8f404c05f4d43a61f00feea904caf03feaa19323d0b7f950c997e85bf1a45a63ffeea50a6eff057bdf0552e64fa0d7f550b5f0dca15c8079bfb1e1e22e66f0a7dd30b99fe047f330c991e06fee618327d0df89b66c8f436e06fa221d3a3f0473d90e951f0474390e963e08f1e91e901803f5a824c2f037f14894c9fc21f5541a60f00fe680b327d0afe280c32bd0afe681299fe06fc511a647a1cf04797c8f402c01fc541a69f813faa834c9f03fe280f32fd0afee80f32bd0a7f34081f2542a6aff8a347c854f5995535fe4d7a04c8b23e7c34a10357930890656d6c8c90035734820059f6c78f21e0c095f603c8b2373740c8d4b22c0e8e0ff2d50164d99c9c1d648ae100b2ac8e4e0e7cc015b70464d956eb063570a58206906577766ad003ae4492802cdbd333031ab84a0103c8b23e3e32c8f47406ae464e4f5b0059f627a6d0d35319b85aa102c8b24190802c0b5402c8b241474096158a812b16a7a73ce0ca747a4a4f5fe0cae441580094821c74022112647a1a02c8b242a80720cb0ea101b22c514c310364d9a298e202572d4e5d942e44044314044469c8456780ab1aa79f5d180364d921318512c115098bb6620af502645d3931857e6e01b2624d4ca19f65c8b415450603fe4b189f04977e61921a38fbc425a781a7e7bd7871720203460d35d860030a858212230600002043462a158000a4a4a8a8dc80830066e490c3df02bbb889c94d2b308b8fe0154f81472e82535c05163987551cc3dc2fc66ef1ad81fb34b0f6db225513a8b725533a84fed278dea5f1f1e2850f9b93139b1f3060fcb8a9a1861b1c1b6cc0c941a172745050745a3162b4760000809d1e19327a7c52299f9f0004e027484a0a90ca558032bd0dba4108072102189a717a4b94c36f08c24148009f3194c38932bd2d5a519d9eb668d4387dac5929529dc65b359ed335f047733d0dacc22b3807fc91e4fa195800f833c9f538e00fe7fa1bf00723d7abe00f25d7a7e02f95eb0380bf1b727d0a7f39e47a191800f81b40ae8f813f48845c8f823f78845c8fc21f4442aeb7017f3009b9be06fcc125e47a18f8834ec8f527f88351c8f52ff007a990eb3dfcc12be45a2709d660aabe843b98aac77804a6ea8f4b3055ef029f60aabe053e4cd59be01398aa3f61144cd59bb00c98aa67815560aa7e059e0153f52398064cd5a7c03ac054bd08de01a6ea55601e6ec0543d867f80a9201a0053f5133f00a6ea4b700460aa4212125dbf371c327320db67508b5106a8e3524947ea22a9d3283a04d471a9a4234d1988420fe70ba0aacf0051e85fbc309952a4f8ba287f534635851a859e4697536afdca6914bda97e8879d557ef1212c347f7d9a25c0457dca4899944ad9224236f51986e51976b9e5475f53edb75a5d27fe5984027a3326cc2043339830da1f62924e90fca83fb9746a1e791e957789fa557e1f92c0151e851a8bf54fad181fd4147841212327d910f98a23406c181cbd0901395847441f43248c28f500a42c7834ca9e6c51a5216ba915f1b0e942c72ba4389686be29129d435937e0a994370859d7e86a173d037805d135976483751d443681f646ae96f4a3024a764d844095ef2bc766302981208c9271936518216f6897db62a4c5186197b36d269734e20b44f4dca39e568db11b38a576cfac5a6f97bda33277d0d80d8691510de0628d18c9098a04c616810fa15ffae6f20b6dc6fe01ebb47e5d2af5bf2620f3864051e82bb181c22e9efc59db66a3db7b1cc395f7598585059e4224ff122a9b26d874456ac32d70fc9f41a9e2abc4f8813119843b9110da24a253432c4542e0e8f72e430c7e18dc31a87330e631cbe1cb61cae1cbe7e288727a7c2bb119966a8844ada2aab9a640acd800000000800f316000030100884c321a12c8aa3604df50114800e86a24a52421bcb83799043210501318800000000001100001080992a0028721f0ddad340dd8b034da1b44fc7a2f025ead0514fd0367790f870e29fa4ccc25a844ffea03653af16381adea9dbf2e2fc5d15111db1f1d58bcd7acb75f5c209f14f8aba590c726a7176265cf5ce8d2d3be26f8f93eb38dcb33b68ec6c9bdf634f06b2a3ba7ee10f80c6e94d59977438afb8a7084c477effa080cb68ba65212ea843bd822e839b6fa51cce71e27cea030fe701c5413386f364725c1227bf0a47d3e328218ebe114edfe2901d4ef51c9c03180fc7f588c32ac57b6300a0d52e5ab98116a568b8062d1cd1f2135ac8436b37f02529ffc19fccb0605faa3029edb64c2f85d5c311fe43d4b3c4e869c32a2d4125d5e6dd26b3c92ad3b406e9c1a27c913c3ae4f0186f9084bd71d44d0a952c74e3086f20017b43712520f1c2926c485f1d0e0decc3d43383353ec749e25b18e3b0094eb0a0ee2254ffc3c56d6491a726cfe5ecffa4b46fdad84497761e005f70fc6028f305b2cec4bf25f7e69bf8e0e0ce17d919907a0e350be7be06566487889a7c41209c0100c1e3aa300a0bc8da8a0fafc29b1197f317ad033b4ae6899cf65c0a2064771fe2f1c4cc1674538bbea595a18e42361b963f2296131c51b029589b044f9a6fe6ced4b2e1c1b4dca086dd40bd3779155227450c7719b50f471dc77c8e92a4c935a1be98bb7935bb41866b91c0b9db411b8599b6f669b9071a997139d64db8b30b1436ce702c2def75819029c74fc1b68089425f8d294273b07604ca70d484ad18fa2c125152f340211bfc44baa015141a108170d76770bccf07e8c3037805fc9f39f6702bf82c6d65e9a8da9767c61779ec855ee7251af1b27e97cdf9aca7ef94a0898520006b25860000e4df699f3b214ecd075610cc0a0f366289072b66653439847ca2b5c2f999acc0f0d3bae5245b15715570328f31c87a87365b4fb9825d98e1d674a432310c500b5ad58dc65ac0b7ea26fa9e852d513dfd1f9e1963881c105070226254ef22c6a3011e74c4f2921cecbe8a4d5019045d35b0a0a1561dd6e329b0bccf13100e9b078c01c79905b054884c28de359bbf0e0f386462f301f66d1e2604f9a1077a1089496b40b0fff244e7d302179c10e0bbca02cafe4e5900af5dc00bf0a0907015298d33250d31b27868a981d280466e7ac1f78dba108c56b8157435b8d6e3a94c7e3c55992ad7508471c141e3296a49265511862a9fca8c218dd5a6ee7ccadf9efb657b081cd4a1079c87930275923134d09c8090e3ff195405781fc467bf5be883ebde4a0e6dc5505124b23c0439ba18d171f43a4345b439f0b9bcc1641aea2e49d1268696a6e4b62edbe00ec4728f86cf515f5681cb2e368973c04ed7025d29ed072cbd0b1bd302e5422a34844ff509f7db4ef6b370d835814c28e5b24f8582c119a52ee126d7e6577a73c9ade53538d361a76913fa5fa3e4daf9e2423dfe60ec7d6f14f67d3520c0343989fb12bb48eceb154a6fed0f1850ada3fea15378f469122ad399d72c970e81ccb8484e19fc042aa0b9aca72ea1c9c7d1efb260fbef5c4e493483c3094bab1203fab645811b0192c42f9c93e8cdca289f0276f98c7516d5b63bdcd88e66f8977e15facdd023bc3f8db6cd37fa44a05b90949bd66b349c3ecfbf881187a62cc35f5326b1d69704ef07938c08369c3cb0ff0159c0f5ef2400f6cfe62c637722d0d411f5c6586e350e601cc1a14e9d43d14af8dff92421bfb05a9a3dc28564f78b4f128922b1fcd1df52724082d3a58404732065d2fb25adc1e6038363024cb8b731580d8ed0931e25e2fd589d0582fd97634f1992eabfc9ec6dda4a71373cc4581c5f91294b4708d8c43c0dd1b7e091117b89ec6c251a0a49bf8b5fc59a48fc246aa1d0b733145360873c84104a140ab4802de7ce9fdddf62d644c0e183c207e502e501e706e183c007e780e701e707e382e106e7800337037ed4deab0d02681041f473ffdd63d3b1ac41f26043e1816dbcb06c339b6cee22211bc3e5d6ac33dfd6f6316bf14add8673abea65d3fa3c870fb7200d58f336f414a68a0299cced20abfe208b7226b676f1b67600eb76224bfd205b75268b7661bb7631fb72215b52457e574bbcc46018edb0adf4726b8ff4ec2f64ed18b3f6502bf38fcc267068229294e254a989fd08096b8f4b81e1d3400233e44152057df0f3e343dcdca3e7b583de3cb34302f28e7415e4b3665b8b3eb40bd4573367456103c5dccc0351f59dc657603684af60d0b5a689629fcfe74e2af5b1c2a327b780726035fd9f6da45a2997657e7f87da263c6cfece0d33e050e57683ad45edb0b18b59a00cd68eafe6088a1288ef45567e8f9aa561cefa2af5735a154f076ae98392b0978b8f98b98dc0d84509871b361a9c033d75be5244b480b0f9a0fa41d106698bc628faa1d3e1ea028e77822b59b1209f13bdbb7ebca25f0719249a863c93efd8377bba1782689d3102eb489820f0a2d702251d2a5019b044065dfdbd0aa217997dc0ed26c51c36bdf1b9d67932974ca4d19d0d2173e7b6de8541b106c62e71c0f60f830913e22509f5e9e73ae236d009ca2dee47fe64bcad3868b915a375bdd895b4038355aa9616218cd25807f3ed137a510367abebf8ae3d37e17f869ed90c8e501c9bd7e14a32e4d740f7a1693946e71a453dba239d213f75e2cd1245f33631e1528d6c662d1c20e312564c8e2b62e79791b6d7611b7419f339b89a6f1451160028e07b3a08c0e5562035947d0e6e9091830ae844083f65c65ff4abc6db30a1aa7efe037d278916b36af9052c98763b1d9316cc954a97225999d7853646dc217fe96102055a85281b08fcbf06b14d409132e42bf51ac5632df4b0dab9892bc24b2b862baae164977212f20fc96dee00558aafc40a6100439838cf0a6430edd0e2a061bb68f93c52c42e360477b45989bc91bc5bc220b904786ac90bcf105478de4616497a00fd46c220fbe46be868cecea38a3476eb34078f840217869a9dfe69b8b4de59f503d097f7d5397a8276f0a9a3fc02bf1b727679c271656e9c919d35f7f92420ba49f3ed154f3c37f35a90881d8e44646e00eb95d516d805335fcdfaa78ce3da65acea96e4f5e9c009dd10c641e8f8474bd69c2baf37f4cd8012b990d9f6fc27bc9e2e6d63b250a8ee8575f86d652a50c9d80e5c4d1b3869bdcd01552cab282d908a165e933f61acbc7aa4cf264ec245636e675d2b480a789d8226722474cb03169764c2555673ad1a134878be3d61de0b32c985c94595b1ced6653af2014f078b4dc40874e3ca42fed4e31f71c7d2d445dd8d496dd7868fd952ac7a7d50644b0ee5045a9f12399f7c92020dcef4cc3754d7bebd437ac5a51455a8694fef411fcb47c68af048015f37e2a0f11af702d5c0c3d16aba10b1abc87d63c4c2b4031063b7e09cf33ba382a3049420c64f2e03a22874cd98bd67d06bcdcc05d0327078cf0efeb729c4aaa2a6982f724a02c2891853389bf81d2d6fbba60eccea32c7cf98348ec8a4fd0d326bbe8d7bb17e0d9ca03e0ddd4a7fc6fed8be8cff3d3287b4508f30bcb74d2bee178774f19a12b69b2c0bef4641ce1af0ce28b865e194046823efb75c1d92d39ad2cc7ea74144bce6a75863e06f2cb088b61699bdf42b7e07b0f91a988ced0438ea70632cac468314b7f9f39d0e04ef7dd6b904e0db22d5cfed7832bfab527c4569af36877280110594a9d8a5b310847fe98a053bfa45ba4e73e3374739f497dd20d3cbaf67ad615ee64adec0e0cf9eefdbcb5c3bb015e99e3ccce638d13eb0b8dba61ca2782935465ec8800a2e113ce55b511e0127c5296dfd29b1420fae002af96c1d048c4ab815078b2ed1293a693898f40895e3c74b47b7a29b3aefec739972536e75622ab924a2b50a5b5345b85adcd3c400cbb9ca8505c47e5f4efc0ce3079fb713ff85d9ddaa7f9fc361255f732f55a2797e0880dbcb94573e08bdea5c45dd435ae1ad053e285e90ef85224945b89c592488a329f09b2e1d969565b8de218cea410c16e67c396eeabb74e48557183cbeb48df3550d8e2130b152f3f8e1dcc28c17ad74811cc59e0a16dc1f811754c72636b03c1b18fcc7cfd73fd90ca346fbcda7e630890b2959a650467c2cabd1949229e9b205a8773c1f2b88bacddca7630dc264c1ed842a68f175c3aba7c172495ca2c1ab021fc5c7c023b071f036b9f446a855b3add73c4d8830f72998ad49030a46b7efe2f1d67b38bc6e13c8fda0b9a36e2f93ff24b985e69878dcc8a9999b8a41cbc0953c6875754deb196810731b973e033a5ac86c8183ac4e52036e0591bac4cc5376823e294a58db71fc6c1f5ad3e2e29ababb61bd6094f73f7237ec7bf9cb883495e89185a253419c5a309955fdabb2b8f3d568c252916ce0a545e0bf0d8ed6f62ef46ad6add96b73e17ac9517d7e25fa7d3a4da15d48e79d5bc53614ecb03bd8ca71980cb84ddda42a6c875ecbf9248f0a1c40c790d2b7918af45ffe31e3a8c9aefa38358bdf83452c536416b782ad0d37667f6b406b58c9d20c695f446a25b7a8d33d614c69f732fde4c040c42730ae31e542732c1073445e8f9727ee7fe67c5e29a86746a056740d7b090c19755abfdb3869842ccf44bc1205a427b37bcb24a64ec16da6d6c454c0e2b5538a62bb4eb3cc2d7e17ed3022ef8fd88c02e3cc33928c5a074611cf5943bfeb1a2644d86821f829ce3b4f36e99c3ea1657c00a84208fb346d781f16fcd8baf5c80cc3d1fd3cff34551e9875b33ef7bef18dc73621361cce757cd13904325d6e35dfc92d61a82d45f8bf969c11d0293d3a5d73d2f01007e5e387e2d61d4078c1d3d1f25f03cd27372baa554afea878ab69d61e539ffba609caa5b63d0e34ea99ea4309a790865d1368162e055206e65f0575a376f80e095bebe41783526897664094fdb82fd796e34ae7705644853e4aece53623b475c7b7d097df034fc483714fe8ac6d8896a98169b766fb0b4ab2be59fea40afee9c5928e3e7f9a79c55050a0e4eadfd1542a3b31e9b8466f6f492a2b6191aa929cd8264d91fe9fab7aee041f1ae24b16f6e38b9bc42110b8fa8a84720fe14ee7ca4a81dc75bd5f9d8bddbb6f0e5b617c64b1829682785fa14e351a09c77e99a42de24feeb494672be26c60afe174f7e8583897926db95aef23512b6d43dd6f941942ab078dfde89fd004d4c6c804371a9cfcd5f59423c71934eeb73fda2abb8b6654709f9cece3e00613775b9053247407045cff96516511e35f9892a1c1c059901ec2be900d352101c8b9740de76e321262b15237c4c1584f5e66c70031272e1b1508c77bc411a083a5b216224cede88c36e30c1488379d2bba9ed211dad06be0eb29aea2c2a945b64dfecb1c9cb21a382ffa5454fb3dd40c85d73d5c3d2ce873f7ef4235a1375c58f3f680adfe17397b6ee2203925cb69fbb79b75111c22eb789503623b2780f35ee5843d703844e446e3680bd833604b7da6cec13f3ecbcebfe3de9d44ac5a2c39e56189c2c90f22846042a2c7e29da409435869db8f21bdfcfe8c43f4b711ef170286b0f33d4de17a654e5e48c01e88a041810ca29f819ef85385da8701b7c0e24a6d3b068364f18c8e65d447e9e3501314c9e87b6e4c563ace26bc5f7d36d1a21cadf5cbab0ddecdd7b2ee288921d755f75dd6a97d30219a41c9da23dcbaa699700d941d35f233ac29c00bcd7478da551c3604e78990daffdb66e5097bb2fc3deb91eae6dd6e8c36342c15b54f42eb6be82f27ae09c766c9c251f957ee052009506bbc3dab880d845b358e5fce4a7b5c97a336c6350403e963c20eae0ba2c6e6d85d2d1098d78e2e98b02227e1b8ac4a7800382aa86118640425004445f7587f84614973aca6e9ffb63112909157b917ff3d9349660b73caddc85bf1a598da1654fa053a76d6f8fff0d7bd5b2cac0f622a1971ffa55a27d52a61a5633f75bb7d0e761b3cf0bf5ec8b57750406d0d6260c1b2a81050faff19b952309e38f1bfa20cbc7972c85c2d05b820cdc3c641c571a00f5cbe640f17f7f7fcefabc6cee014f0cd83b74d8aa069c6a7e2c09f017229dad348f91e7d60e18b017a2a123950d6b2e517ef633b5033f67ffc71bf7bb0742846c4f84fc009f44d5d1697595e46afa124a02ebed17042217e0e21cb3c92003d172d5154f23eaf4e99c212894aae70693bfded17a641e37b6f6010602f4712107dee533349e084c6242edeed19d46111045e2107c85a105011b93e6a04879ed2d8f2bdb3dca5f1ba72ae4110b8fc384fe406caafc17bb129a3e4f2b225a632360854a712bde9e4f879c7d72fd2100d01a2d0ed48e56f43cf2b194e02e542c6aabd803104ea33a016ef2443201e9a791f9d02536646a3b44cb0d60ec05969aad608632bb1b42028e02d741a21d561e9757f8352fb039a181a826491505750e0bff8141a5aca37006d01bc0d9768a2019aaea423953665ad0ce40627d7ad54c314ca287a3546577c37c06afc1420275a1dde4d345b36230e010d4c8af44e4590016d1b6c9716fa4af5a0c3220c24443220f77123820d78ac96309b52f24f3e54abc22e396cd6131075b4329eecf22a82c898153f8ca98026cc403801085e577f9f27ae1ca400b34d9b9aa82f884f4038610b5ddf87246e0f6462f81ca9334c65450ac90f1fc43e0bd60d3169482dd8b2d03c57f912502686f211c0e3ae0a44c196ff0526c5f395692b46097409c08f92cbb08a54932660efcae33b9069921bb3434dafb1a940a5b1413c5bc843763609905beba3823ffff06e7fc60e062b638e83356106b062b2254009b96c328d9e4eb5b3b75b812a9dad8c8884f7ff64c8ece3d183ac1406ea7da4521758da40812e6fcf683ade864a23120b2e0143799861c4c83a64abbaf35b58d4df6f489207d52d580ff0f50e4500c1e3ee20991cc772d60cdc05b39547ca05aa85b1398dc65783fda6ea3571883ab11860f86535d26bfd548f5e1b7965cfb2b84bef31b33b7d27c1baf315a499f0bb141827102fd3af03853f69158024a173976bfe972a6e32c0ee3dd68a0b3c6c5762ac8aea1cdd295cb65825343b30dd5554caeac19d1b828da4062dc0b9db588049c78085a3ec72f111d953d8012a9e49eadd5e26c7a264f538acefc092d1eac22c32c29b3accb94670504aec8d746033a70c58585a365d899804257c5b4c73b38c3644e09b3540b3bddd599fef678a42e451314bae4f9c15bb22cfd35f7292c320efc9ebc1df34e18361203090fe8392e5839bc960ced9cdf6f9089c90cd338862e51e2caaa1612fcfb57e7ddcc24e4562f48355cecd3fbef81d454b4b9932853cf45947427fd968e4b38547bd6497c73fa3518c7c90c9d72427ca97ae7549cb9c48e4c1901f4ca21a278558abc1d21392e57dfd091311c6be345cf4dd3012b58cbdd9060188f515275e2ed5a279dd5ece12c987d9f7f3376ae2e685e100da49852761ee7b8297513df11b0f8dbc7bf210f3ff4b9f54b9658e652400dfbcd852554106de520aa64628d913d6a401f52d8828f60db8982bc7926f74449f77fa2fae6fa30322d710704ec92f16b21718ca17b6f4647eaca38683ab4c17d4aec18c4cd43b1b6f93938e055bdcd59ee74d259fb0c87d83c913c9ad35f195ab396a4f48e1b2a1a46a15e727ac3f4490bd9747449ee10be6aa9bca5bb0fa96791347bbc82c4cc3c59e008cf47ad4f133aec197dcea48e13a413804cf5d63908d5d1e4b6e93470e049a64e007f9cf53bcc9484afe1f9ce53cacfba88ae41413bb3201944ac2ba5684531996a9c68f284faa8a702a7386c60272a00b5b2894137723e79046023e3b63df299ec6de655a309ccb0966d7f59c2841e6d635959f2b299c3b6f102e14837c58fe1870baa01c353b9b087b6ee7f61c37d2257096c0ca327d8e0a8b0a629763c5cba9424789e3b12cbb65d2a6bac2e4f48067163b052a3296d54ed17c76a7797382df5d3e7854b1058c537e51b159a9cd7198f31ff036ae872d77f60749d70bb9ce2f5d2af818a4b7805c0d2a165bab9c500ee61201796daf84a504e97c00a57e43d290a3b3331548fb833eab6d44f5c8176e84d57fcb5a55740ad18590759386ab0e043194e515e479fb2bdfe60cf3984e5d337776c049d513e52f7399d745663c140a1e2053631d92500e329ebe3bfa1d0fbde5a16a3c40661b444310beb2636d444c59416852319bd22dfd1c3d8ee7f844f5815421a3ab0f5af0023abab31d0478520f60595f82312292286e3c9ccab8c20d37e859eabd08f484fc29d08537ada22828967d89f158b84848963dab0e7e9d1b2bcbdea58521b4cde55bf12a41c8a69ef5f735573a4119ef140e612a6145a92e5fa50b6cc64772955ad91b1123c1e5bbc45dfc0552bd493a8b1097b45b1a1863342114ca0660031c2b77b538428823af04d2cd6e648699b739dcc03b9544921bae6bd443cc9f2c1b1211c5284ef82f30905ed5fb0b66d9cb15b6e207f499712319f4f9dae896b3ba28dee605b02e9997837601b951e2eec6d2e9df430d9efe17c6e6a141a784a9fe000a813622113019a69764f750a201ffcc65decd4fbbcba30de2cf1adf975de59edd3efb808da61645a541928d2f8e8a40e91eaaf8da748e0cfed1b7586b366316734e045e828caf415cc75926654406549e3154723b9c82f9b866671294d8dc010d1369a90a0c8c8d692ef2278ccb0ff184ca9f938ff4e1887325399c6b3bf476f8768af79ac8214967052fb80a4918fcf5b3d1acddb480716932a02085175244ae44be9a9e7f05a064f5c0aa47925b88448dba745dae6145529acc3184ee718919fe87f15ae9c306f5b411484d08e212dd83511fbf82de3b6c435545a12c0a2e8cc1d64962f1b5340ccc428f7ef55027285f19ddf4607c1e611f7049d68168ac2b3e97360127d1f9cefe46a600760a620dc29a187ed0c60d5ec7d70425fac80cad693387174ac90e98429ea23f9a4aebfb22d6a2908f460543cd2b9a5a01ddf615c217d575dade221c3d2b8caf44fdf5257ba45d2f966936ad09b2905f0122a4d423dfd2f8f7ef6c2ef3dc59c7fe066cb168af032a68fe15d244a2bc2d90107fe1e4f5d3eb9ca4f1a54c6494dabd175dc01ee02379aff0433d77342066524557c1f96db264098d854f6889f87746bf24ea089ae5233a0cc5701965d6c05fb4668adab7d2649bcf848a4fe6e4b823ead6fee901fa636fea609ccd7c69b4c849ba16496744e375c6dfd4da90430dbaed08585eca71f35adda03908537616022cae08e08cb4e971f262ef45e6779f1d00d06d468f5725092ba91961a72a7164df79b0e83c46e699f50b10b17c191e8ada62b57d51720001bcecfaad5cad32138f39bd5d467d6673238e49d125df772cdc5f53a8e43c4be876870343f439bdf88e818bfb2269b1f2cf9e699285d7121bc83eddd7bfb2f55d1a256b8b5be22ccb4125c511cc9107a754ecb44068622329c81f339f522d87fe59dcdc1cc3c08c329c1105a369672793c76af856d4f93baaedd8abc7778adfa757590c8d2a5baf977a4a598e7f14b2d12bd1a959210092230d3a6d6191d9de0575ed0718475a3cf2c0c4c2b14f7daa9e07363a2f3357058c647a0fad6a3be7e4c204423c01132b6c021d7999b0c4f838ba8f547c74a81393a7136e3a813b034677a53bd480a0ae2b31381540eb9032a27b2b4b36429752dd492bdeb0aed01ea06d7b4e4c7c0afc352d46f7d6cfe87dd774cdc16ea53d1cbce00a5f38fc732864f7cf3408a87e1ab344213640ad855274680c50f6b627265bcb0ade2537996bcd764a402c330a2d60c3d5ace510930e7c0fc9f304ce23cd30f836de0b6d22bd18c43ce258598ec3fc3909501da700bf928e17aee59e13bd071e5151c8a887a03fd653b9985cbf24362cb03809ebf44fe79bedc948c9fc3b806550bc2ea405553cdee00b9e52fbd1a42b06a80bc66dd70642ab921e1466a28d649d156e7588c9b9fa8d80f13f778d2350ec08ff4db1784189709152956215d33e3101bfd44600244c1918a190d1d722f580729a0b8330075e18349b3d89ff62dca9aba9b3b54a376480c7aa8f7eb1d8aaea0d2ea6b522582bef87e842dcf72800de8a4a64677fa04ecdccef1ba08a1b220f60fa78a2395eb308559892f89ee07b3eba5a74662b369c50485247a6dce1515c9da9e4eda16ee9ccfa7ddd6347d5a6e7c992bcfb459953281ff5910283508305db385937e01d08cae6f77c04743bf929f1add2a8eda955d59bb6ac448456ae6585480a3595a0b34b232f4892dd911aafa485e775562b68e26c45a03bf2c7c9d4c61ee41afe5cd0759df569e36079f6850ad9defa6eb7290af3e43546acc1ee8a0c0de8c996563d94a098b20467cf4cda036d47989dd33a5af480c9b740fbbf7d4863c2739af526c5b7708886e3d9cc84dc27c3a976bc41ac0a685a92c8533075e512985ac6a38a06f1fde936cf9a0e470e251bfba3ce24d75435f24bb0a9947412d9b81366ae7832e4fa0080b6f480b3b30fb90a2d65e900800250331c7e731f1585811d3e2b5e212e67a643be361d33c2d630e03113b1dbd67b49aae36ea7a5233463eec7deec49be13f32b415c3005deb689492b37f8deb7df7ca4376a685499db1ff4b10795f99038de9d159b906a70bb8c9d6f23b438916efcb409e3538c14848df8429476c63c6953cb42b03b54b1ef2083c1cb1bf1c4a3bb33805519bf66e2ee3e5d76148b856232d375f67ba1fa84622c0627914ce629aa7cd6dd08320d9f77d87d4691e37d2b6f4b8b393dce36592b8f5f5d2b763c7828f337608d0b20802ce956686aa1d10464026d5f334762c1ddd1408713bbdbf4d4d44cd06696fc1802be4343fa7b9a9d4952f90ab639f9b9668064d4a75e9a7dde536b24e9977e30d1f4bad4bbe6861a7950f51a14b3fb004277ecd7c819382a7bf6fc4443107012124da6004eac69165ba1573a563e6eb73443d8a421b06d76464a7e37a06befa8d9a238c2b36449324ed83eacd47dd1d0e90b8ea3d8efdcae903001737f256f12819d5a3d9893fb48f9fc3f8905cd6c49b81ab102edc5b86ddf063312e3643e5d48f2d763015060381b88038dc6e8256ae4a2971dc2c8f9c61c44bffed08b79c2b83a032623fa695ba7e53858b9ea970f90183c24063cd4a332b76de957d457b1c73511f0e19ec86d2e90d14d3c06ce70b94d8c2377f6aa7f67d1db54a933a17a339207d4fb42f8826db9cfc703443a086fb9896856faab35397908a6a27bbccc93ecc9b896c2967134f1c6c8324ac807b28cd7d6c0f1dfe81ec3cd85944633bac8a6e50bc6d1368f2bb696de416d3b28f80a1438e0f70dec91d68e4e5d78007981e64485f7357395044536da443378484fdc68b39541d889ea4ac1ca10f6c41383eb513ece7c41a9fce2fb4562286e10904eba5a221cf30caaf75499eb624cdc9872bd7339432a25005a9f2c5ec6ecb1b0017ba605f27e113f3b7099cd7b3e515f3373f3d9f8bc889079ad8aa9108572703c33e68ca64281031e19c355d9fda15f36608f2e808467f4c949cbaa94f649e3bd924b44075335553fa4bab5234eb9483f123d6612e8f54b755680eb108f4a117a94fa62aadd25f5eea9ad65be36ab9a0e382b908d3a128e2b8ac66b1628e9ea0fc37c1ed5f20d05077877ca805f596b4281eb93f8ff5cbbbd6ca42ed4a181005dd4137e467c8fdace0d05372176dda2456a38909c5d668cd34e3a1d3cecb48ba257761e0196b4e0f7fe68d936b5bfb3c2da1ec6db7a5b078d5247a6d9ae5cdba2425666d824a8a6207f54e2eec6404e82a35025631babe60b611a49a2b480f74db76309bf18765c7ca2b195ca848f0b695005a84baf7b333ab93ede4f5ca1b54273075a34b21eb03052410867b7f9e5c0dc58f137097a7f78eef4feb3deb30ed3d33da038896ecc256d9db98bf9e9bd92e6e42d2fffa22541afdc2912b3d37a44869da23039a1ca34c4a776e0f287a040ac047f2f8e0da635a58cde9f6452f159f9712f9ed3f072fd05fe5842c041521eb9d0bedd93b5f2b0a614d0d37d31c64dbb8c324578b479e1dc2d980d2573275264ba53529fccc4982cd2843d18669e0af4fe840937b07d631ae9e12910c15ad07a6809041461ac3b8eec6aea6a97c2b8240b33c3c260885bae5c23799ac40f4c218b3de6e2f391c5cdb28d2670596433db4cd7fb77e4c4aba3fd921ed7b7892d719006b509be15a0941d35832c1863deb341168b202bbe3cdf2fd2fbf6211ff8fc5bcd57e03465d9090ce150fcb7bdd681aa58f701626376f3f953dd96099727dea0c1645e5b769a3621a76c25608913a8d4377916472764a5734bb974ec8fe9f427832f3c22ede077736ef7cea432ae555db1470c0c63ea99fa61609f9ee6dd6df598841e7b7ee6759ada37ebcd3db06c61976b3ad33ce7992c756ea537bd88a7061b96400c1df8c78a077356793128675bfb4da91ade2cb165088ae5dd8cb0b583940705e82f3b814117fde2f9d6bd8bca540c8d19c103c320be47b61cb2e7f469069429a7868f0170088cb02ba5a705baa48da41c59ea365ae553c953a78ac3ef90711803d3c07b86e3a2ad1c3e5d5e5ff804f5c309b006053c3cde1aa0109506da8ad89fece8bbb6ac7541c527be3c4063b93b02cc28f5cb5011c310d593aed630aee8945fec76a5355b54eb17a30787d7593e3c5708257d5c9a28ae208cbc798679fa3b898a706599a9272539537d4ec2956d07f14e2875c89e148deb76aae7bf996c4a7ca36fc2a15f75db7b5eb824a4852474e82800fe718a603e589d52ecbd26a4de2786413ce9ba5a736f7d98930cab5c070fe8c0dd1a768735c676e5d722bd6dd8e0eca5e1ca34c757a0139b500cbbb6bede7eefbf9521c52409659ada751bf9b45cb951323d82dbbf7022cb84a5f285769120cf93dc02463891ca08b950781d9b8a5c3a9064f3fd16b2f89abc119a830b410fe5c0511196fad1ad9ba58b794a098e2201ac5ac722580beea4d11136d61a20bde97af520547e1c1bc5ed0fdfa28f55f08615ebe3853275d0f2fca884aecb4c9b7429b4135ef7fefdb4f7a4d8cd53e408f7fffc0bc7c5d7c5f0a023b26eff781c6cc9e74228e68a51f31834135c735a2cd8486719130b52e4e01427d581aaad5c9802501b3af208d489f2d8f17d09d3e1ca7c2e82f89fc685c20f030cce422c24fc125caee52a049c8d8b0e1d32a41eaa578a9e308da544bc0e357ac6d3e445c835c50c20ee82dd22188df7eacd38c2afe4ee96c54a132a6a2a9b9421837f4514c33694f1c71292fcf5545e2aa32ebe852d86b72f0fe9026683143240332a48cb647177def00d975848db7513192a7ae4a171fffc4ed83661e2590ab075b80775ecb82d04c891257f08743daf975f9b65572ee6a152c870730c8b4d37d79f1575adeabf43da52c233f33a3295189ce419d6bc014c379865e9394948e398a49f68b72e8140c61ceee3199d9325429c6a95bc61c5ee062dc57c77a58e1079c4ee984eb1079cc70386ad76f3462e503e3c24409896dd6c4e3edb0b3e74cf7261543aee5df39b23ec79f828417ef9f9982a40c954bfd4b1c94ed5968801f10671635c02f6f2a031f1d1cf42deb716ca2a986303dae9e637dae8a00d28a657f97cfcc6fd50902d1fb95f830e9674910034220458805c28b56b9d99724872709468ad2843fcb9b780d07510d581d16fcb544002c0f3a819b514a269ff1fd4bbe7ef18ee89ae6bb2002bd7b49885aa9d879631fd2670dbde8fae5abe9aa4fc40b359a4b0e6f7939adcd2179a917bdbe38fe5826426eb447544f8679a23a26831de3e908db35b02270392400bd63d4a1fa7f9ad8e7be6eb6389877a57bb2dedde6df43d1c533768dd22940b3bb2873d0b742167a7e4fcb2759e9ccf96571f9faf89e1da2802137b637d881d2c9ee6fdcff08ad3200054e9c3d7339dfae1026f6ee5be02bcc16bc19dd61132e12032d7222de9859b0a30a977d24fe692e37f57592f33959c96ded10a4c606f4049725f0f5a15c08f5a9280088f193726fa63f16cc329c639d460da3653e6f961829cb383afc1f12c3d9d4a3913a02388a9ad13bbd0235ad32980a1b89e35a6df9eb83efc0c88e1b2a259267687553ea34d5ccf9b586ec6d961ce370565c1a712801c08c80e902ecdca21204641a4d00a76823a798d385d1c37f1f0d46080d99f3b873c569364005ef45e5611ec8bda38b083e9c026879564e374b76549b8937ab6c9737169895aa91f44d66f763e9260222b17001581c1dd08fbbb026624411d8a87899d5f3fce715e90054b6416e09f884ad8702d3a7f2f26c57daa1aa7e193c91922f215362d2e917f087b15d8a99c14228248a954019f855ffb3028e127721fd22fc53cf1a1401dcc31a8e0fc884643160dc2951f1ac16a8db7060f22a3b969c4a636459852afc3ea56b96af0bcd07220ad4b8b94ef48044b2396e22a4fa2720030b1371ebd563aae6bdbd9f5b6d3e8629b147bc02e749c6b12329b75638df59f41a2bb546ccc4436f9724001009131b3845658692577e5d18ea9cb4d0e962719fc9ff28f01bd228f0477557a5772d4c1eca848953eebb49fe0cda8f125e38c47da718a39315263fb6f542df46f8d2acce14866da4c28859396181b55ff9f42699a11b16d876d6963c5284d10bd42ed36412a3781ca2718a2b9d12111038730153a4f5c6afde536b47685fdbf89b14519ea0d94ae6626bde30004b11f251d6fcac38c56cab894c3777969d699102ca1c0861dad48ad46852015b898b80a36c568a9f7982c552ad69d117ab31c84b375380b9ca430984086639e5f281e5d35c8a0f135600082c66cc6a6185305529d9ab9a615e9d1a25126d20a448e850d269f1e414f1b319d2a820e13750f4ecaf80b5861dd54b0729a22901051ed2321ab44d92d6a1c02f058e2b0643df9445e69f88b7a5575a0ad1b44cd908ffd25be53c719cd248b4faa81110f601474f759886bb32635362defef5d104f6287e40e05fd234935d95c7e3d7592285afa7bef5effe58151578797cb55fbd61bef7edd2f8ce309af49ed7e77bf72393a165c21cd957bc2d9f8c99e6b809e8ffe8311240e0f32263f5a43bcf36a277f759ac9a326462348ed0c723badb9bc6788863e50a5b286acdadfc9ca634dd236fbadf2b05f9ca62e48385563c22a7d4978f3d4d9c8063e06da57deea44077db15a5c7372a68ed5c931eb111f6c37f4fda3b1eb324c33bcd5d7462cb3d4661c6161c9d4370db7082cc293e2d057ac2513e68e574eed30cefbfbbe9aae905f6c1f1a67382c959bcbaa85612efdc7aaff4276c6dcc177a15db69ef30c70abf0cd121c7c8e680c8c628499268532ce9918826d052e85bc388cc207340ef089ea6f1b8ead1032e6e38d126b167d3425d825032c7a20a5bea563f4229f781714fae39d57d3f42474ece809f3e3c09adcb0725e0a389346324585369c16b9ca17284e638ef4e51341c97e961ec3991497ab418fb9c59a43ae29cc408dbf1a470d079934994b8342862e6841bb267a39e2ed2456d5c1579f1d832c0f8be43b17a64c7beb906bda06a0a50b63f8d3905e0e47313df1c7844413332218a852595e5ea93688c94e741c5670ae7d20441908bf67743d35dd2f9e8f59a4fe9d2d94b142c0a5ecd7ffea0c2fa16057ee0fb00c912de8f4113dc4a2511473d999cd4ea93f0b3e2117b930ba1f535530df64236df73292318c9eed8af424d32bea29a957518f64bd8a7b48ee51d423b99722bd927b15f736ea5db857aed0ae588f643a453d927b15e929b957718fa49e8a7b24e955dc2bb9a7a21ec7bd85f4a2cdbe6f6622f14603b9848b05c143f305328126bccd8fc676eaa70b230ca81e318f1c308c942acabfc569cd917077298189733482aeaa697849143413fbc11c57c3a3c6b6cfb747cdb27e4c910696b38e8efc01fd6e3218f1f0522241d60004cdfd2b3cd618b8d66f8c8a1fa1b500f3efedc0013ca11f0c485c46ebd61ea6e8a1300ba32438ba062e4e928fbee822c475e641687991bfe03103d34ee5203afbb0269b2af03051e252c111150661d90fe4b9e70cad331dbd26e3c2f85818887b8df0e265fa856103d87cc5efe35b053d7e300102d097b043d432d6e8958b33d49b4f5f4c955a8b2904aaf288638a349e9b36cc22b045d99487dde609c71b4b1464b1ff4371239245d9b62fe1fc486201d6dd2f94272e5dc072e70fe78aa51467ddfc61f04309856cf6ef107e406a31cbf6279c1f902cc076ff84f389250bb0effca179b13485acbb6f186e50a298cdf6e74c2562593615be869f91435c982167cdf3a4d5ec7583dd1c14e8200cf41ba4d5f54b941a1894f546dbc5219381a83b0ede3af05ba7abfe522c1cebc509cf71f2f11f840e47f6cb2c41103c737c249051bff083fe51cd57d48b3c7dfb9b848fe6c443543d6a8e7865fbb866082eb23b7a32882d785835d7955158cea627d5f7adfa6d1b67355e44460e63d93384a6a7fe1686ca43ed04bf01113c058ecf868a8aac6960d52f486482a3bf8247ad1adba962054b687ac2c9152271834a9bfeea739d7ce9adb111e860f72f88411ac1ba7b9050f5ae59d5c264cb5560c943d5c4a5fb8260b404cef27ede004934bd4991376fea3bfd8fe7219dbf30585b5051004826567ddf9d5e37fd951bda56ab384064b96d13524c18cd484d6f8dc23f57d5e3feee05c180fe6d8be9301ebc36cc2b87aa47d27efbb3f71df3a60f7e02d1640f913d963f5860ec4d0595f3077f07260a5cd35751f9c95df599f57655e171e0452bb0690d1d8ae8643668e832ff47940d41a4ea358fe95b66473f6691566a9bb4fca423be5362db6efac87e9b9a99553d4c5ae6c9571f4d1f587de137eee86d32e2fd2ca2193b09c8fad6c47d993472785eec5dea2914346cc66e619878229f12c5e23cc54575ee2f4c64b690d8679d50c4d3a91f09254c7ff731a106ff9091db7a3df0340e430ede77d33145368be091df5fe6ef583da00b665431332e9e4623ea4e3a76c2dff59712c1b5c06e5f9a98fbd037085da7c17e0d29db4488fabc9eff11ed5281888c0e793df353eb76c5c1afc3f471d89e9c9bfbecee6406475edbfbe3f7687544f4853e9ca26a4ce4f5c41f1f9dc22be87641e415a51f758b1b175e0bb0b87ae415eb40df1cc8eb89bf975f66345c0e9a1ca5fe9386bc82393c3313e4f5ccaf1dba56c28b458756c2c4a25d4fe10607027925f077ed1a8bbbb081405e5bec4d22fc784114619966445ecffdf169d1350c3086bc4aa6b3dca21ce1bfebfd3a842d51c08eb8d3327ea65715f2aa4a73ffe42fea373b02870fc7bbcd55073ff2da624dab43c86b017eca5576fb48ae62f37b9b4a735f25d3ffb090d73c7ef153bf9568425e232ead1a70b6b43ba8fb3293fee63ee4feb9f508ecc8eb2f9b9d1e253a7e0e484ee455491917bb445ecbc3774fbed0a5fd174e246aa8845b23cdfd636dfb218b359b05560f82415e79129cfc5a70ab5cb6082d2877f978d5ee8ebe56c66e6ff23dd8dc87204d03a0448b1e725a722d3824bb86469f43fa3af31193a79d88dd51ab28127b18931c7383df25269bd930c82907fca17182d9e5ed1fed34277044fccefbc4be59739f937a92d44dc0ee2f459ec6ab30a42153bb728edddb61ccfdb7e981e0ac4d9b55971915ebf3ec32b761cac237c402b67327eb5f7bb38eab1c21dfe3e4ae485f3e96db422c292d6e167f453bc16bcd340b6df9cb588435fe6ffc5776c70bed1bd0f4dcf0a17a66e98d4be6d79508f4be1d51c12be63f94b242d2e411392cb4e68b034f32383f3e5e01f6a106576b3738913ab195c560fac937c3599a4e848d6f8f5de55db75a621a5f517e845838762eb37f17d2da11bbe4e13540f636b11e0d82f49cccd715c0e3ddebebbc03be16a6b950cbbf8805cc55eb454aab45438dd674610745be3a8c1c4449a75f62f270b184ebbcb7562b6c332aca8f108bcef49fd9e9cd33b18089c6456b36aebccc9c9bb7b1753bc6c0f1edb7abbd2b5fd1b6f9a885df8c056c8d93755598e0c489f734523822296f7f10d4a5cd27197f05fc4b547dae2ce58af44f17ca661a75ed97b080057d9fd1432600bb12354197c4452f2f1df542c641dbd6c24e387efe2a6878efe315dd092d0bd3c4e8e55fc46276da4e0aa20d441279cd36429aed865a4bae9e9d22bb051b7a79d094b97a390a3de9e254f0bcc11b21ac90e98fb2400620ebcba96494a9ba4c45c9a9086123f13858fd2bd203290b963934e55fc22246e22c4d5252663f8ae6e0055a03566a23879a23d162b51d66da23a047269c042f36bdd104ae20f3b24df21eb9efcfbb8d6efcd1297390c51939bad5fbe010382837fd4242edb563000ea41e5dd7db4a3c9ef3d67fada4a51c302911f0dbeca99861247e30e38ba26b05768c4d90a3a42d8b57a56d91293c6a7521889bb14a5b8d16824fe33f7e42633b47b410e38e006e0c5d0514ff7dbc26fbe345659b07bdfc8b58b0d34ac57df2843aa9d7fac1aff0dc2b9f1e339e1298017d9086099cc7fe5fe1fb93121edfaaafe664c03e69b69758919deccfb820aee8f2a015d80b23664530f03a17b46e151725daab3510c389c15e3e1c9c766e7d44436ffc118b2e04a6872eb51d0c941d74f01eef1d6ca36f2007249cafea36022ef3a2958775387de3ca15aba175168a17bd828438c6978b58e0a1c116d42b22f11a185eac775d5e113a11316f3dc7d0b99af6a2f05a874a3989ee31185fed3d417cdc13613ef7b0a3491d7d62d727a5d7a6328891c5e308177590ca1f49fd988ad717c875aed358934659e685005b1f3460d98e50fc08af18d604f7f8a1d23581383354770521b05820aca0fb61536538e3ca6ef569b66b6b2fa903436db1a04cb1d97cd7196055e6e08d2c48827a56fba1f9a7d2d7d69e97fffebe3755f4d40da7e509af3d6cc8f6ff2a82ee85fb23cdd5699fc4c8b94dd0b26375a979bd5c4b67c729e434d30a42a0144f252ac081c0c5bc60abd8c05ac5be72a37844e3796dd3a4f08e2e45758a1a2eefb8a70a7945422ece8b91eddeeb5141ef63001c1e07089be79125236c122db3876755c06257bb545c561b15860661fc8ead7679d2d2f789fb91a065f761218a13c7dd050cb717c8a57fbdacc16d65e919eaea456c736212c43e6c4016b3785c0438657d29d05e48fd7ef86df7895fc4fa895fc4fa8b5fc4f2895dc4fac45d8e9d40cfa09f813e875ed572fb053a9fd845ac4ffc72ac9ff845ac4fec45acbff845ec04da0c7a13e8d3ee11a95712f62a8680ee46735e8e2ec1ff93d28396cfc867a5eda8308e38e4d2e4fe90f0896c101252ca6b5d4cc9eb0e3d2827f044d44b4f9b862a0198cc097737bab9a418275a96e914fdab6ccae51deb839865402259a56756521bdc2047268f719eecb5fe0ccc2169aad75a3a2d83258ae330a6ac0ab00329c634ab08746c26d901a899f524ca87e13e128f55baa58a28e97868688fb8b2597ca8e8af981e77534bdd71a9dbf1d6a722ac9c1671262dee6fd39879158b47c3385fe6f9af62149638f162d1814cf05cc7c92e953508c208b8f46d57b5a25b2a86255a4c1a304b61219b8bb8768bc5e605159f2d52171b5e3c1bc14c116228bfdbb94426f015492d9250ee558f205ef4889e925ca939d388636e01c589be38b4b9153e946975f28d1f5f9f69576de6d158f6d32cd82df619bc6ee074417dcf81524deec95adc579139c5099f20ce862b53d5a6611fa28661d6f12ec9cff3c0dd8e29926f51942a1043c791bae41c86729580628e1c187663c0b275c1d4089b98f528c90c071de03a41728ffa51af59e96fd3be5d971790db0780d59ee212afbb4832ed018a5069d5808fe49505b0b03a92ac45aefd175702add6eba27f753600c4da2cc2f2c1cfbffe6926176c2bd172780aea74b04923dc5a8db95105fc1f298423a3bb6fc278213ec17551756138c4eb01f0e9164d46c9d85e4b1f8203eba708b7ab16db649c5a6fe1365ef29461bb18ae5c67870b101a0bb4d59d34c06123ab09bb835f29b758af9ea1be139dc890b602019dcd945c30ed8e1582e522aaaa2f953f38751c7fdca0a1601d29e6165455a29b3c2c7d31bdeb9f5ee2f006943cd058490e3754d2c146943eb881d20768acf481c69572b871a50e36a2e4c30db852b01e5e4d60a421309104004e97dd0880a7b09f88fbe428a8ed3ab7b04314557464e647e13d396276f7e294196b18d3298de56badd9369d56abc7d95a43736f8c5c035ab2fe8858305a554d1b2991df178f490e223f2e36912c4d058eb835e2b2a422bb6611461505b893f7ed4069e1018426fca72269bc9f6107c6069767a94bf304a2350aab5d7b640d581e888c30bb8661cf055a6f33da924864776f6e1940087a08700874c3e1ffc33d1bdb36e87760e48c16e8b2e1bb9ae68c1b8eba6b17b3ed8473ce396bad73661f2b7fe69fa94d71c4a8a4d2d3bd7803cf18b5995368fdd6bec93bf7b94ca019146b68da8b463468d0a041a334495a47e7a603fff67802396a8a58a312e19e04e29e0c22efbdb7449a7af4d9d87289bd74c6a8cddeb89bcdd2113acfd8c4730affafe54f264eb3d8187f0653139ee4638cf114738a28833e84a6fbdaabf5bbdb6fc819df721f00b6fcca7d78cb39c5049a53c43c408a790b10bbbb3cb6efce761382d4d5fa2776e640995a411f5ff8527aadd359f7454ab1e8b1bbe9e48473b18253c14149f3a8664dda604cba1207258983fb6afc56e773d7c66fb3fc1b71fc07f8dd85b1c7b6282ba9f4e62eec3fc0f869ceb9ab5fdc18e38cf186b108e311c61a6312c6258c4df0cd449abfc7af9cfb0f620d1cf44bae418151e0c3ed0f59e4938aa06d609812250e44f437a300fa832e18477d10d6a3c54892554b44e9e8f9fb435126128de04944cad1303db8e78f4313740dca500695490eaa23c8002584124a931c3e004d723802c2204f14c3dd36d866cfa963c5121b233162c48811c323cc42402356891a9a7d13a26ea79bdf8ce2c3a44febf687b333923dccba0e641e6e20b71cf229852852fe40611c4314d8c565ba00716fdad8f3dd867b13092d7dc0195d14df5d20cbfc09c4bd19213482779f3640f7dd8fc68ecf025341e0697e8c4800c30836119065be17f4102116f02a006b7851c6fcf941e04bfd39e34172cf3bdf9b73874d670dc115aad70c593c93671fa42ce82fdf8f3126cac41909c09e9d720102015883479451bffe0ff862bf7eadd872d145a666f0a8b525c6853ed0c75e7b2da519bec85d3faeca30456b095e69e9683ae139e101149e004113400002aadaf1718debb8177d0743036c4863c38fc1b265dc831405581fca1eb6fb4c26ddc9163cc587dee33cee398f4c6d1dcc6c1df018c23d2895c8211c8ea0e5d53ee2477db2e5e3a84fdaecf8b3e5a8cf3f2bc29fe21cd941f62e04a54e6dcc0de0e3c79c089e07e9e334228bf501d6e481c9c8f0c46de30c17a78c4cadd05629d2a60a266178f2cc1e3fc5273941b62c279ffa76cf2e5d394ac217afffe24d2c483299a46f04bfdc998fbb226acb8b3bb840c30ec51fc57df24c9e9f47eaefe88b45f9a6c7bd1887dc8b30c812ede42962be43f86205f802e153a84108e19ead7933711c55ede37839b8a512f7a2cd64d554ee37e48c702ca9105393479ea0802f11fe27c7f0851da5163614908547a6660de0297e133bf2f860faec4884bc918ed0ac1de712477d93b57962fc0973949084752850b67086e6c7973099f22ac053fc2d5c30683298d4b0236c47f9b2c7533c4a2478947dc7797a228c5e5324e2c0e26797a4250bd38bf8ae038477a0818ee11efc3827e76d9c730cf802f77c4a29a51042487fc00b04ffc2699ab03efddab9a029ee7961c730ecd8861d27d0f5700fbaa42294c981962d371c44b837238610b6617fd1e543085b624016d84d121198e25efc8942df48fef86ee32823f8f38c28234e6e08f7643773e7d1a37fefb564fc1b63fcf83cf413fa8b403bcaa0188b4b3a1d700fa96420f7c33d888240dc83efc3391f54253da0f90a123f51fcfcfc44f1f313c517bea0050983367d18c43d1a67e28c130159688c44b8473de7903bfb74f1ebd2547beffaec4edd10fd88d5ba4fb88b504ae9ab6ec8729428479bde9b429cb6df609bef0c1ce3c3696352125ad65ae563d2892695a648f4692fbfd6fab3fec428714bf781156d8e53b7ecbe5cf2b884b9f4719d479b8e23eee5b022bee26be5ae79dc04f3f7710f4866d928136d3f586d6a7f025936be214f0e8776af497223ce9b90454ecee431248ed22f5d32e552aeee4bf39860ef834db845b6f2299421ff869452aa206491ff23d68850861648248d55b24f0e0c87a7e534b2e4862bcf361d72e7c7349b5a7cc52212e20bbed84f7422d262f1155ff115df6a60eefa1718eddae1d7efdd577d107df6d86e39449f654548967b946645ea8c9cfc0154bcab44a217894422ec0262971ed34e7495842f72d35f4922d67e95abaad5155b0eb989802c746ae0eeedc74ff483ee92a198233eaec4613932e5487ec41ade0494e1388ee30464a1ff412dd4cebba0a1a4812f76d3972e4cffc405fe2fe5934876e5ec9e1c8ef8a6fada24b134fec969f606e94924e88ad2455f0776f4828e3fdf5f7e044c9d3c7d57c1172d9a74f70559eccf55f53fd2fe5c55ffcb7e3408596a7d0dcc2dff02a32dbbac8b343046012883fedd84a823ce553132750b714d4d2e6ede35dd7214217f4894464e9ea2483762520a4019d6553334d7ab1cdd18d34824ee511216e83b09a210f5a7a3b29f3275fba1fe94f2dd09f8a201bd9b8035ecd3f71cf71e478db4c879b40967d3ca4dbfa1a5496b5a69a59556cdc995f63bb440d3ffe24bfb22b2b8e328dca1901ebf91132386e8f872140aa993488c98fb93abac33a2820250c66a2608119085bee4c0b0e9cb954ca9e8228d9fe8d7dc222bba8a48365d553a61a4a2dba1cc7d3b209085be9193d7b822eadf8f3af025eb72dc6e48dc96d22e367204a40053f950de97d6727263e726e742daa965f5babb6b533bb5ac5e77f9384823ece3f0186e9ca7add54ecebf72397cc655cc69937b71810ea8eed5a69951b81739b8dfd0d6122f037c791d8d84ea686d32451de9bd5cfc177570e83e6f5f142eee77f1791362fbe15e948b030e8fa17c9103e735367ea22fa535226e1717074e6e2ea5c83e0e71cbd8828b3c2cb8d863e222ec062e2a59c1459f1ff7e89fd037e162508c717149148a43aef2189ff1953b8d739cd7bc80b49c3246eeef64ff863bf7c33d20f4dd6ddc76406fd1c7de846d39ca669b10f6dd5b378ef2a7ef38f005fe60ad8d71b56964b188f56dadd656b972e12b84bab0034f449758da29ce5913d172d391edbbf9c4c1f909719ba20d07cc2b5e5a2b15d1d927ff64a023b19d1fa0a0181ee10e050789361c1868fbc93bf80836c9a734e8cd47a63860b3240a693632456a6e6c727274781cf55919258eaa7f046707c9cf0ba827685bfbb665df55312ee3a8fb479210da9f75b5f6677772f66761db26a179edcffe08415fd4a1887e6eba23d0cb5a6b270e51f7c3fc89f5f0c0946cbbf38324c7a563ff6e3bfc08ac884dcbc61c7153b8b367569126b2b21b39cf3dedeb86c364eb50281c22820e70f60e3028499df809773b827ab67d9333d0401648c3dadd86499210c18e1b0deaa194ee3803cb3db87704f5c023345c4250cfc670479012215cc810f8e2319f0188f21040cfbeb59dab5672b4b50142810a04812ff1ad2a0c60d8f689803b2e4c29a6b8b57f2e86f4bc1e0f8035347021006bb82acab06fb50ec2b635d1b72b5e5adbf06764b6c51671cf6d0da00cfb96896dfff30f6cab23dbd45a9b6c0359ec639a29d7c30df7ecaf6841db2236eed91664b194da772086f0942d6261a06d8ec13082211ec5cfdb73c54b97461b6632f085c696a618e3b427cfc5d1794b79025fe84b6badb5d65a6badb5d67e9dd9a4a91ff1ad193aca6e983f72a36b1285be1d0ff76afd164f4383e6d1c387a3b6afff43a6485f9f88208ec25f5fc80076fd21556bfd43fc54df45a67cd41f751f74d517d5ad13e25e1d82e381c31a74fdace5be3fb549a6e4df7f999a7fdf6b7114cbad0f3798ebf7ca7be7bdf4de7a2f842cf6f270af421eea83fd52e1145bf4e8f8747f93078e0fe31372c691f5c9ad3d7cfc40edf9401cba8668f56c3798bbc16c30346b1b4ccd7883b1396f301f5db8475dbc7bb18b3f5d78f034ff5ead713c21f6706fbab7e8810ff77ef0706fbe13340c1043c0171d96d0f4756069fad1bb6b2bece0756fbe17a3af7757b42f64891d448169dfa6807189887687908866692873fcf62ec6cc0559227c3c2af54047019f68cfa527740c29a54fc8d2b008baf444e989921134ce252368084440babb77a527748a7b50965ab0c20cb84444c3c7235c62699862c0be6c38a92f1fcb0cff72d069c4bfee3e37292b9522da654c031085c8b22f0a4ce77c1db5c386efd4f7ec3e06c82978e21a5a56fb926276193dcbf94e5f90e5c6a8f14096fb5fb5992ed0d9638865f529a728ae26173709becccc72448b29e8fc9f8a8d630d3f6247d17cb1efe3b9c1d4ec59a615672b8adf0615a2bfaf220a1540b2fb340f36962b4ac01afa489471efafd0c097a979b0c4be36475a374dd350d9f6469a54323951b1023fdeb6d28b3e7652c401e1de85e1e1de7d16e84fe79488b070a9051a924a4f5732556d60a0b2efe393124b7ff0a746b75841965b62e90fc6108712bff4274fe2506267a43ee9e9e313ce64a5c4022d75d8d7e42b477fe508f88253f6fd134e05b629c079a81de5545e269c0a4f10f4a7c2daf75dd98efe54845829ad22b4423706d42f3ddd18409fd4a908c9d3fd12b792b9f4f7228603edeff322862325c70405fda5c8e4e8141999f2fcf75352005ff0df4f61a5c8e4a4b45270f6a581f65711521972549429e7e1fe8a8c4ce91c79baefda5745e8c5cab1c941057a8525530e63df2fad407f3a471b791bc690a7c4acd8606ec8710bc2c4a24546a9d9c50683c30613b978daf7f18b0de673c45c768c25c630f2c43825538c315ec9166392268d4cb6d2127a7bf9a32e484a4c4a08600c394aaa1cb58d60c718d053511172e19e2945fe677a15a1df4108b25c95a11595ec5484568e5801018b5c22d2229758fad3309f7287164ca5c4d2d8250eae4226658726b600f69dd9df8b58918d35568da7487f7f65c6532a2aaf7dff5ba1d9f731491320c61931d2881115632a4697180b10e34b8c58935b69093dfaed2f10db70218bd45af67d3c6383a191232a7b2a4b973c0b90e94bae35a404926d1207795071c9548a8c9feedf14997d555cfbde9f5c49051a887b578b9bfc9414c01a2f6231e57eca8ca3467f3f65358624f67ddc62c3bdfbdb4797162f8020cb6d11e49eb7007a118b355a88a10519f6fdefc518f6ed416edd8d16412d805c2d622f5890e53ed0be3fbb16b153e1b3ef8b321791e06212d506b6efeb9c7bb5d639fb3ed62a4232e57f7f45e528f9f757eeafc8c097f8f777c0812fddbe8f4d3698931cb7205464df82b821cf2d0853a65b102c72dd82d882d0361dd98edd10ee5ddcda3cba0559eee39c451cbe716fd347620ddc049471ff6227f6fd4ff3608b381feedd176d39b27d7f450b1adfb4dcc33890e58e6090e57e4c0164b9dfe2fe875b42dcbb8f337bb34c243b205c10c8727f7244b877b5ce081d71c72eae20cb7d1d2cdb08e94da6988a907bf76f789602bda272ef7eec54863a1668ff4f4568df0f729f0847657f65f620b4ac45061b302c9520c6e8de695a3ac1103f80701445550d0d4338aa87107c01c09e7e9aaefda7653e96710b42e67a339bb50d06fae5b27b93f250257bbe1247c5fdc53d8574ec28ccbdf9ded19e1a99fa87d2f5a61efd41d797b55e31a23fcab34f3598f36ff4000384a3eccf4ec7f3e8e1e3071ce2a8ca0147a178972fa7ddc36144ed4e7c2e125636c37982baaa3f18326f783ce2488220d3450e76df10e92b9f91f1951393b484a635366a28a5366c28a53658365660a3c646cd1cd24188382e9d1fe4449c1f5057cc094c6c4838fa0b127da6c949cbc4669edc4c2313483f417f415c964ca039c58ca94a258010c6183ca59c3f33843cdcd34edccbb47b19c43367bf219d4ebf9dbb5b293729b729adb45606d687fef5bdc6990bd85dab73f2dff363eed3dad6baec5ef6a5199a65f416d95f907cc3a78c724ee92f219deef05b4a2d987306847486cb1c408bbffb8c22cc09a16f948bcff5a8f5de0cd6dac580927ae002b60377bee0df27ac9dae399ff83b75eed481f75a8a23eb2e37dd839dffecc9c9a05a6bac7e81d60ae43e5fa832c8bde81e9041f529e7736a50f84fd6642181a28352084a21d05aa0ade5ae0d76c98d50aae44aaa642af2a0c4512e644854f96c60fb8c638caba25096ad1c4593b11c055da4d80b83b9ce5de228b7f48568f1f3199996cba6d3255534fb6a3c8eb236dadca1d8ab44899e20211c24242485ea876975b47d6cc2915e73268f0100803d04b6a42f95b81ef2446db847d1a0a5ca51a7d3963232a56d0e7c79981bf244efc77dbbaf01db762eeed17781d66ff2fa4d54aa7df106e301c852469e5400b90e005f6b8a82be1e7d13fa9abe54c9137d93276869f3290dfabaecbd3af6de2b1385642af240efd3cf64b2996c2555324616992f6532ae9246dac89b4dbfc232ae2e377a80a1a64ff1bcabd1cf5eaa3c457a7a5dfb0895d133a5d726a91893a7b113cec569dc37e166388dfb25aec569dcd75c0ca7715fda784ab76ee84b1c9943e2b893ec27fad7e5a82fea386ad621477db766d3477d2e9bbaf67cd791696dfa17b6e90b19b2010ec824666884f6e7499490d99fdf968ea35cf11577228febd870b9d1030cad7161fa14efda8c6275be9b0f735f1a201b1464efb53b82828296e060f7b1060c533e91cfbeaf29c12c4c8369f00c96c133788571f08f8f7bf7e46fb816734f56bb714c0aa9509cd0ae73156d0c5d108e449b4dccb01e80c0433d7c00c121020693a8a066dfffa1b3ef0711ca328efa70d08e214cc35ab190d8a834d70f90eb67e572b95a6425400fd60c5339479e2e2abf9e05c6af8a87fca4041c7b390a97017af76fcebecf020a9d8f38aa06c92af7728cf653fb22669763868240d8d63edf38aa661c474d2dc8bdfb95d3625add26a9cc8299758d98ac0df42596b49aa6695a74c2d69040845406923ed8da1773b2fe2f066ded230e7c31d95af704fde1a11b3099da50eb3e1804db771b01149b6adffbb4831dcebe1b9bb61f918e48c7a4f36ae9984c3f3f1bd016a44722150b1d1e1e99da7eb61f91ce6b67f37154cdd6da8e6cb0cd6653b2ddf8e46c45369c0dc9be2fda9438aa66586e30518c6846b4a27154dc5c3c1beeba096d432adc62f103d4fa61c1228956ab55a568551c2c3b2266de68e686635be5982ce26cedbf201096713926ab86a0f1d0b672946f21477dbef15f9b5dff0b12571bbf7c8c392cb4c4bdfb232168dff83f1cdb17bf50cc51f947afb3972b32d0dac79c65328fa7ee491774104fe1237ebaa5bfdf43a6b08dbcd1c37d201c357afdd90c17aee1300bd370788567382c2323539a92a1ac8ad14e5ed3b4ef015fb4ade1ecd81247b96ec4954ce5c043f5f1d3adb5da946e30dca6a4f55533904c6d2eb9b94a4ce8fbf53f4d892b28880bfec12f9a823c28f9d99706ed4bab941a8610426c371c19c509ed516230ddabd76e3a349e1ccb419af670cb40eedd37629658baa6450fb4f637a4c67ddede6cdcbb735bc91476f9e9aeb08c3cddbf576b93e9dff3b69aadc8bebfbde08bc4d5de9ab32ccbb0cc99478b02aca181ab41016b6cab2803065ff0864415f6d5fed3a6b0ef6b3d38fbfed460967389a5e9e32d47b62111fd4117749fb1095f566cf8306b1cdd714fa3af6d156b50274001897d1f638dbeb41764d1724677e80b739407b25c4deb3221e81a69adb526695dd2da44eb13ad5568bd42eb7bb53699fe3dca8d34a96472a262c548934a26272a566c2bf7ee8c7bb73edcb08c7b77ee0fcbc07a9cd01fedd9f7a2c480ee501e1acb368d01e1de10eedde881beaeec3eb8b1e08bfe4c3718528ed6ad95d64e6ba9b5d55aaa2925515aa2d484d2134a5550ba82d21b2895d8b5efe35aebdf90557276e32d56452c283b947ab599b1764a83d62f62c9d41673d69e17ba78603bab58ca0d4423535fa4e3a89a61e93b7cd74f84857d6b86e5ed01c65393874b44b56fcdb0bc58da0d47acb943a9db12ddc5c8eaa9521c91e2887bb076521cd9ce62cb91bdec3e17978d1f4359df6ba12f79badce7b273d4ee83d9dad70a815c76c54f5f526edd67eae80bae14d11fcc962f3107b7e43e97bd8284fe44585061da7cf02945b5db210512c832f70e33c4361cde8dfeb0a664df77a9dc07b3eb4739ff84a32feeab1de5b98f02d32b46b426244f178695dca9997039b25dd25748334197388cb3e319852ff8af867be4bd5a9b4cff9ed7a209ddfb1a90d47ee08bfefb9a12cdc784d2f2e526698331c97e9225bd21575386b5975beb7eecb9e5531a34fe1b32258ad132910c16c56c9b0f73d3f0108efab618b7e30c2cc9c3517913caacdc6a8df2a8fbb61fbd0634c2b18d3a94118fb6e1188974ee855956c6a5709e48b4fd0d4fadf8fb5bcc519f286688a3bedc825101c40dafe2eff330ddefe1a9fbdb92dcbacf8273711af94ddc0ca791ff06aec569e457c1c5701af97f38114be891d9f7856cc0539187fb2b388d53c1cdf0d37d518ce8be6866f4f713b1be2cd3e3a84f84e3e3a80f0739eadb5c5f065aad1cf561997dffbec68265d8cff613d3a143221e997db54ab3ef531e1947e99915a6c12caa84e72ee1b33fba64df2562fbabaa7d59aafdd5997d2b6bdfb79b10da93baaff4a417f138aad2ac5835368e227da9f3417b52874212e9388afefd1c9481722c2fc9428e9aa4ee87b9b5df7e361d4769db6bdbd9781c25f7fdf919e6281decda71148fa37c87b31ce547707290b83ccb88ee8b582fb2111511b5f468f498f3dc1b8dba1d413e225187a2cd40d15c66dc1789967069b9db11e493e1d7348cb58cdb11e4e30324f2d97c0349827a827a726cdb87d11fe29e10f72ca543dcb3175662e92fea9111bde2a5e5862fada244030d7b641e998a53c848800720bdfdace3a8f8ba3cdb42017af67536a9b3268027fbd62ab16d4dc4c2b63fad8c7b766606bafee72a1b19996d734b9e5a7e735b1e03517908f00888ca48dcb33255c23cf0e5b71eb55240fc6475b6fd28e3c33dfb3ddcb33f204beaca535c72854879082d9932c913922fe3ac78e9ba61b4f64b2ad02d90858e9e7630eec17c2e3a7edfaf38f0e56e8f73b0459f5fe3ac0d6481b1eff5d11f848d5ec41911b7ecaa6f3691714286b807c4ce8edd06dcb3012fc8421a4cd082266ad0051fa0bcc00b69c879014e0d4a500424a441474bf9a33fade3bf20043a6cff2c6594b0a7074984400a50b4c10a311e261b7a6e7610e312010c673ea15221a5869301ddecf8da8da33eada5b5f486634e25fb3b29a282a20814db5fcf6007db5f33a120e1ae027475f6fc4ca320498bc89e3fe75f9414c4242fb8b177b2210a11bc73e6da04ff8b8218f4c00afa9b1a8ea3e68eaf1dc971d49c279b0dac3d93c02036b596f3b3e3101f9ed270fc143f090f1859a2085b6882064c70020916b09ac14feb88170cb96012010a9687d97d41ae690afad3496ca25091631249f8c008f29599dd9df1cae00adbb7e6a2b14519e6148386b161921b7ca046e70d93dc98a1b2e0c60b28d07ac324375388ddb86817f48b0d93dcc04007fa374c727304b581ce61c3244c6c01079ac586499848c2113469c3244cf8200cda6e9884091d5432e81b364cc2040be6147ab461122666d6a0e78649989069d1c1842a890d724a1b2641620b7b6e98c40647f667a2310c533e1627ad78d2f21861acd965c49fe10e663ed890ae4840579005c696272d130cbec49f4d6c23e2feee49eb4216fa23181061d3cf4642262860b0e94b6ee28c84367d4fa5bfdbea36b7b1f40865fc2d070c183b07b2b88c31465c22b2da54c507f379604b1c1de2a9b158bb623c717ecc895e90857ee6bc0fe81dbef3c76d7bb8e940d93afcf9e5cef9e46e7a37c6b89b3954a32b183b538d257a656fb9931664a14fb71c3036ee4c30c842fffae8f943c4446944cc4e5a4644abb136852ef8026353182c70b0095eafe89ec3a34b0844816890672044b8672385a5e88f9f646a86d3ced220ad94036d5536c6cad0233b3f43341bba3f766746adb5564c87accaaa648ac662aa6d9f0e5595a3e8b65f63ea90a3be961e323e1cf5d55a73b67d5b79b63d02b4b36dfdd9d6d6a16dedffa8408eca821c45634b6010148a3175db517f1cf5d19f5a6badb4eeecd45a6b9df588a33ee82a62d3ba89358efa66d45a6bf517a631bae4456318139179bd5e3cf4a706d12820aa4af1b3edc30ae49efd1e4024a002f1a8405398e18230bb17ef3d915adfc0518160ea175c2e4c2926eac3bd1eee5908c02dd42f3c843d85c598de0f2a33c3c5533e5aecca46164a886d9753fe2002080b34f4092244a6e69b66f8c97d86cef68f30315abcb863f4c1a3879cb4da9b692ee4c9b690c2ddb1154829638c524694098148a9e04991524a29794c18a59452be154edb0cfa73b1557c21867bde92e2026eec2447a11f2fa52e3c65e24af164f6fc189e52e161fe0c247bbe4b0f78983f20c39e2af604c2cf9ecfc369f4d9daf3f5dcd357d42748856afb2562dafea2a2bd6dec5966cae5b0f18433fa94d38ae473a33d69a0e3ddd446a6ec68c9484843831e0d69958c9ed1ab93167c21008da7e88d9ffc7d14a3476ab623d9fe9f2eb2fd9dba8ad0967b3e8af98f62a32523a197163bca1e1e47d5b8057137986c83c11b4cde60b60de673d0d170a33f8a8d84464b9aa03fd3378aed177c79b1dde5a4d5bbab42958121c2a8849a21c90d66103dba92245930c3feeede49928520e932491670f6379364e19505d73e69006541e6f521116d23a535e7067e0f99519fec6b8e4c8d6a13f000a5cfbe66f5b3ec214461e8657f53eaea12e029fb2cab4af60d3b7baf2faeee4096ec4b33d0f73ff8da19dd027cd180a6598035641c853ffb3ae3a9981b689f3d1592a9ca92272fc0171b6c2ec01ab515a90f7cd19f3dfd812fa3cf9e02c9d449660293b9cc88d1124924279124893449244a225512c99248974412650fbee4cffe53262555128944da3691ad55a354d34a44b4b5b5d60eb368988406b67189a5f38f6ea6e1bc89ec2813893a98b90b59461b67c4101da18cfa95d5aa9f65bbfe576db0b337e174073169db4adb66b26d27dba662db566cdb0ddb66da60e0deb611c92497b22fb174ae3dee65db5661ee6555897bd9d7d7cebef6c0aa1247c59d7d7502ac1103cac83efbfaaa3b5fb300ececbf0a859d653f402fd378f43542148c7bd9d7faf7ca941018473900fe00513ea0ccfea3f3b90e468aca8a0ecf75305254567478ae8391a2b2a2c3945c0723456545078feb60a4a8ace8e0711d8c1495151dbc1207e5e983403aea26753d204bd6419d7df6988b31ee55ea234fd9dfabb5c9f4efdd707154feec6d38aa7e76aab8761b0c8c1c53b2eb90a997eb29db2d884d74b7527db92b76d91f063cf0b9ecedb7a73eb2a565fbdc7ddebfc924b7ecb56d477ddc5d9d57bcf48a4d88c7d9d57026c25d896b8102a8af7195b4eda87fdd9bde0734dd81e283dcdbcbbd75ddf7636b1d0aeeec675d11d5a72508e3897380b7f65162a0eddf9072ab2fca38509cd0f345f63169ce5904be4c6e53983cd1cff8fe902793cffb8f3b8c7ad0a6f7d2973380a9f8443cd14fc20d368d4fd8c1a6118a4d890084d6d4dcd69631c966cb586f198f6e5a3847728ad4f8a97557355b1e79b6a944dbbdd775d3c23992936b6a5470535353b371cd3276c3b1839be311ed5b8cb18fa1063d4e51c45b8e88736fcc718fde15aea98116c3bbba3497156bb4cd96f128abd93216f16c194791d6aa812fb17559eead6a8a60584c561393d5645b964ae8384b14e3a86ccbdb0d6a655bce51e7155d4a20e1c9b69c6d99c3b8db21c56a7569562b2558abd58aa5a528a2b38323ba5cf76ad3ed3ed37b9e546d3a46db75200bfd520c340a4ce390c38b0de637186e83e93618181b8ccd291b4c89555a42cb981579c54b4f51de361c5206be4021f0e5c6a018e3a9e89236666c3016737101988a6880276a0368c6fea250f4f9a2d017613c51280ac5a2106459f1d228f6e346c951b7edee6a976e8deb400b6fcdadb936b78868cbf75ed16b9fdd9a5bd3f297efc899cc266b451cab829f2454b0245bfaddd5a659a56d39e2b69307fa427236ddf6fadc1f47e1146fc321d26cb26e871431354bc4481123458c1431337725535148686e4b85b49018f7a8135a2555140b19b201f8227a7a2fdefe932afb39cbf83920eed1c74ef8c1123bcb5986636c302c3906207b4b9e02c87400b96e4110205b3b12fd90dcdd2b5edaf4f7a54aa66ecc4f14069e9da8c44c1696452d95aa91000020009315402028140c86c3c2c150928589a8b90f14000d86aa6250421749b3288651140442ce30820c2140c0000080ccc06814007072eea6d659eb5e04a5188ca7aea23d4754656e696e086b650503685f6f4f0ea5897fc1646e8ab14500f3f2ecfb7ada35d251260f19d80715069e8187b99b177d8c70d85e7fa338939c24eaea2da06cc90939a2dbee53556ca8b2d4f7698e47aad63ee18e48d2da413f725ec42f8d2b143822c76210a86e61117651cb04a03922367adfb731f1d928105ad35c70638469127d668a425282d94b2b3658ec666640b6c49b34aa5136ed06fbf7daf0d5de9fa89ea2b70f592d5e949dfc5b1987cd8ee8630ac48807010b91f0508ba57a3944760726cacfaf976d7d99d83c50aebda8db05647fa3975b508234ff0dfab2159290327bbaf0ac98062050d508ddd92fe9542d347c08aaabd8b25e79141121cfb1d3ec12398ce890f2223ddae6571ca1cd7b330db9fa4d5a63a28b37172ddef3563e141d534c5fd2bc809a6fc20b20173f4bfb730843131da0193a03a57dba8fe0ecde276a62f12ca80bfb58f928688ca94fa10976e6233acd040826c3f0da8eea8afe8586aa27a8d2d9a05713f50505378d81d19ece9bc8a91e0e597e4d87e0109b3601012b75cb1c11be325a9f3d58dd23725d4fce3c06627c319923768a59ad857091125d558aa91ab119c95f87d8ba71e0a42143f137998ea094c81c4a7b497823f958319c3989abb81c47ccdbc2558b8088973cf3c1b9fbdd72e62c2a6e535752b169937a823d3cc5afc53fd16dabd2d30960b7f94d2560572ca00e695035013dd93d9f02c85f7a6ec85d06eab56607940d30b5f8dbe63ac586258c33145168635998e71da7f75dc8ef670ad17a10c88c0fc2305a4e1b471305111b2c1da82e31ac8258802c7dffe288c8d108453ee93b3a4bf9ed62d7d6fec2518ff865a8ba7d6e9be28153292f744ca8980d702b92d60ff412030b44d9bc780816a3027e223489b0bc779cade43106c27b08cd1a960bae76cdb917146fb2edb4b221336d96ea163b3eafea335bec5759072b4cc83df44b3ce0085526ec427c696c81acb03968ef30dd40cbd09dd0b867f9a7518b1043eb3231ec24b8e64fdcf6dc67e26e9d8fea33e2fccf09911de784866821682752860dbb288e40a0afb4d274bdf8f45f6721d3af028d6ce5e6820385d0efe6457f8f565a381f1ed9c4aeaa76efb1119f104206bd2df51ec6c2737f1b7e5ed272379284e5e25bca2bc187762446889655ec0bc53282ee5ed9652520955ec5b9b0138bab39e6d13b9f85149b103bf200156a8eeb4e1903cd214d050692fd2fd0e6c10f8167a637e0f99fffdd701da4d70bce7098c4a7e6d9e19b521a014480e07f676a5bb3c7197077d9f2945aad441a13bf558e9b3afd0a69360df1a4ac425d776a1e76104b26d0466a340401213c6125261fc68d894198b173d481b9992d4bac975278941fc25c88afef94b69772b4814c3c3a3415d1224bc462c34d5c32e3997b7874e7466baf4c3e415d0ecfc4a0511c3a0cd82e4d1dd952de8bf38477c59f2081954b82c677fb62b7e73bd06ef8c8ab0aa92876a291d2e81fb0cc69f888d72a4c5d361b646d045109e010be5888a1d285b0e88b48ee43117f842442a1280a3a616767e1a936bff79f73dfff2aa821e50351e90e49c6d090b879053901c35625ee5be6500321d9d9a832a4b98d217db06c691804840989ce67a80c521167b8c96f8c2d97bcc05962a05647700d126c5b776f0cacc45ca6a8c5226824244b69b398a0a5b14de5f329c40f5b2b5d1a3e69a11512879865a9d8fb86ccd6fa44283fff6fa2023c0a0cf57e5405b45625156cec7721adffaac822200a83214d2684973c2bc527d9efdd2e4372d2ab4c225e1e2d38568b56f1d360435ac2adbbe11ea3df90b2602c2d1b18096689c24187255dd5acf14ccdbcd42d5f5652a9999b381d46b861891c8c800472a0c5c4ff728665821357cb10e1763275a7c03c02725fbb1e3af43734ef61badb2852436c105a83e4fa06075e01d7f88af10b363575c9bd71fd8fa2dd8788116d0571375f3a189e3872672dd2b67232ceb49ea6db73e21d12221403b6fcf56534de7c7d4194e68b190f22b727cda5d4186531b738bca7b9f45834b5b4597a4c724b223944ba17dee94b8ad5b02f011fb18c851985d898477f0bd57c33aa2029bdb35e7d9b3dbf46ad505e7adbe61119f9a54d0a94d1d85e008fa69ebc3b4e98525cb5cc95909b8b1d5d8ac5321a14346ebeb853b255599d82932d257074f72db838eaaffa8b947b908e3dea5b9ca6d8233bcc0f3f373f0ee30dbd883245755528296d3c42510d4e80b374139b803c3d4daf760bbcf83d2d029175f7130c9db89a7613d6684a6f220008c81eef0b8c412afb0f7083f43c82169b65241c059e9bf6e9acbd796a5b58e297136878543fb185d8d1df1cbebe3ae5a504996254c022c62059cdf308f46cf66b51ad452f063fe3b1fb38b3ffd1914efe66e81b666cccdbd0732c4b8e95d56bfb19dcbaa342263002cd80d044049a5d0c12631d358793dc1e4d45b15c5dbe03a27c236edc43fa2d001a7e944a826c6b27c9055e8179d0c1911843446b70423776eb233723659c533cc935ab6d132fd924ac703f5c8fab55f9ac870cbf2953cb132b3b0c3285c9f0eaaa7abd4fd905d850601c46482c687f17f1945bd81cf788d799f76e9ca258d3439365c7a3d11327234c3ed65a24b5438264fae55ab61fa9d7454ee07299e69bda91f23cc38fb2750557474350232ea0732bb2c326c32c09503908b2daaad084f092a87af023ed7061add092e5151a14c86599017df015c0ecc0b6e92ad404a4d19661218d10670b69bc8803d2c893c990c65688dd572967977cd5f8a565e657d238f778a00b16b265767b3228735e06a78b56ba047ef20ff28810bfcca0cc51db9f48a358d83eb4fdb22c6a9343da0a83332424d223162c5fe45c1f0e3cad655871a994ef2d8ab479055e2902f836442a415353f631ac5f7edcf5dd6281ddd35054d9a20d921fa1103a16d138953c13bddfeaa7cb214ff054d1084025f60be8cb2cc6b088ef49941b9771539584527f8019ef171b36a7c2c75c3fb9855766b433608d47347f21872274d68121c80ea611f974b1bb3cab14f73cd86265641fb31817f32d53ccfc969c768880fac0c089456e3174d231566b0eafb05b3330d7b421150c334a1a971def00c23e29b661be582e42989608ec4d1ced2032720f36ec9640c1e94dacfdd5013e49509388fba55f35da841d0d0f77a02f6d2036821a3d6e148af022f1208157d8573db867b23da822e62d017e53da005c022e2150fd3cf3aba97198e647729e26f1919887a92ebf06a4a5f65925dfc316e717545f56fbe556945b6e14bd6ab9c9cb69a2b6dcd8f13fae5914f8a862584535b17b5f74524a5f15a289c910adbff52ee3ba84087727764b4ea0b113117aab296b356a389fbc74b80118e6dac0226013b167fe677ed188a1a67051e1133ba8cb42abc1520ea101babe1e73df165212186a440f52a28974ee9dbccbf681c05fd00bc28a832a8eb4ed7922721db0203ff8823657b17f04a31bc90b5811ba7ff988092888be33f14b6abd6dde8ca3c6b7a9ca568c78f2337ac5d15f388842bd1285458a2a4fe38f138b1226253d5b2823c3f9d4e8cce648043dfc7a6e1c7bf1b48d088ab52162f24d83e2736fddff390a2f79e342d3ef3e7de3822fd409546a8fa2650bde384028660539ca7e9f7bc8c48489397442f8336d1ad1a813e8a1e9858369586b96465626bcb04f942c984d8f45536953743abe25230b66d3609596758c16256b66a663a5495a2eec892a2b33d3b0d4248d145d876f64cbc2dc34665db27bb529be513f32a2085c6fc1fa715ac7c937d22dae7cbc18a74caf6613501b5cb86a514706c569c253829c83c10993f0d12afd77c19e0bac3683cbcb3b3960b8ea9aed48fcb5bd637d57c5fd460fe8b342e284ceb5218cc10e98519faaf02dadc3e41ff9bcdcd00f477c9a5b452ce1e34ea293d2b5a56079a1594ce7ff04fd2c698e605d08349ccf71e42d9e687a5804e6c876ada277a26b9d066edec8e955a5fd3c4acf07cead276f8718fcdc02fe8d36e3f95cea519e49e79b51f482a90711efc395329dbe732cc5a928e41afa4078f06da2805eb3c332f60996a73a072a0b310470697bc1574a825aeaf61e9808eddd2e75e0aac2aa134ff8d0d2c3afbae31ae84961cc428b01761ee1ebb816eec18858745abe5e5b4948c8f74b5c9bb89f332d3cad4c18d3aa52910a950f12984ff6cb62cf59bc770c9bcba08298c5df24da41dbdc4458a7fa8dea4ce8681d5cd2acc71f4c49970d4f5c273c04cf1a036a556892bd0114a7f77f83cf65216be1f73d143899b1dc9fd5e045675a333523e0da0d3de100720daaf6feaae0f1222cda5c14093b1b75432a12d96e90688b6e695d0d574c57be63cb2a758fb542464b74c5e0f4faf606ea0c0d61faed17f5b83f99b45b19bb286f78e65df98ddd8f78dc72fab78b548200dce2be3816af327119666d7b22a7c94f30124bb9060ad65b778f70f8317dcdad0566edd528a2656ecdd3158a34c35839f3dbe89420ab7c1c3dc053e2bd0798b871dc9f136edfe7147972c830260c1130bc68d4fe7364154a6e4b2baa1c20be54a7c42d77e400a1868e52f560a8fc5a3bf4d1f3e108c5c0ca533e83ddf2ae752acbf7a14baa1c58f8fe7970ffd30732c6ba0994b835a23279dfebdc841f221891c84586530a1dc8b23e91a775f2a72a4f0cad1906c2894e9afb2408474a3912d8407c84e787390dee27e0170cd004cfe1e49e49f49f6fa665f7f25b5767a13234e2ab57326b80ddf9062398da624fc2cbcebf3a42e2fa6eadb2f475f659eb0e8e606c96b65951b44cbe4f2ec4acaed717857b54f8f0fc95bb0b9ac5277f5c5b1aa1aa53b0f5b818e6cb3d3c97e95bd2ad849fa7e71dca5c5e131fa305b74c751a75f20562bac478988586780029b5993dfdd8acd06b99467c6e09ceba1d892c420d42fc566af950f762b9679c2a4623f24ef9021b9494b72237868bfa5a2c1bd6c186826ad9fff3ebe6f9da60f9355c04ff150201d58e4bef2e76b2737ab9ac2d0ed15199f28defff61c3a96abef88facc9dde54ac057bf3b223102120081500246efb83ddd7e7a3d784f94801c470c342da7f2fa8436f69a5431b31c3fbe44a7b2e1c08231e2104fcb02840540f36c92c629bd7629460513196a2de54d13344c8192713fe0e919b326ea8b60a592b108bfc859a9d3bd9a844add5e05e56141abf1e8b2c0911608957a475a6851c514b983bc21971e665b869be4ae96529ec456892d73b135a4eb0850861ac79010419d6d47ae68f35383f7e052bc7b85604f6e285ef035caa41b8bba221017f2d167097d158fd96b899515bf7ae8139f347e8b1d59412d026e5da8af945c73e02a3bf59f254bf50783ede751239d279ef1b1d706b50154e653b5adb192317eae76f498123594ccb21893195f8e076c6342752e019c604adaaad73181324e635a680fe6459845c5e0ff9a935cf23132d503f08a3b09de6ee02e8d7e6b9ecf360829031c3c62c3e8a2e8aeb065030c58a02e09d9bef039e6b90bb3fe666aec37f7e3df0f658042290a2a109e33ddba696e11497305563a56a02a8bd97ef711fac8525197bbf2a6b8e300bb753eec6a5945f8e1de27538472b1037ebc67038b0a6d1dc8ae2ae91ee67367ded2ad484536a7ab9d08afc546566958dcd91bf1a57fe434bfe3a48fb6c7300d02b4c7838aa161cb21139327f3a8e1ed484d9aa0ae7649593c4cd9c3955027a6e97af46394026233b8bdb3a006dc013ef287349876e4b0c92537a62a3e437b8e367058d700c7e235d418d57ec7b4ef2db70c8a43da25c5cb7f7d485f3a7fdff61ff69cafcbfee4212c2e9f9fc4d9eb576977b463c9c670b2a474a2edaa5145299e9779a73ab28822e3310145fd170cc9768aa5a4f61f3c8e2d650ff408aa6da1f6d0b6f5bf45b922ca4d25360a1c349996ee4bbd15e2f1e81915c107c6373277046b22e78b4578344486ca6d7d899b6e4bc67ab3934b2ec4ce25b78c5be4bc956ad5517e39ad8efe956c923cd96e3961e144a544756e6c1e40b020948245fb09372e81bd75d49fe10f63a5aef01546a655887185010f4256d00cf43a8a522ab860d669df0f41ec08e4827cc4b8ce766dcf815c04ea825a3601c9720d70f478746e753f3f31c81bc3a179563bddb30e5e31f77a48a283f4090e877c0d5ce72c35ec27ec852450d5badf0b22f899ead4b59f1438a98da203721ffa08de3d148340d19e95b0ccefb1c189ebad66d0e1d69aa5e5991eb0940e191740b585dde12b6ce3633355ec970deee6146743aacc0a5da65a60a8123c5ceb01224919bf15f41619a8bc458c0b87e4269fcebc9483a3f6498d545b21606389c525b88cef581aad2d4baf296902acf1c10becee87b587674e98f98835a68d8cda0a213198d78764f795fe2ff815cf9848720e3e88e2e6a5df8486a37e730b9f86466b0f5f31a2a363d46563e4dbbacb6cd39761265cac04ea57b84b9a8735d5bbccd360bd4182aaf98af67405ff3e7caf3df7dad1ae332ce664a33a9d3fae27ea04b310054cd34cdbf2331b8bf53409c94da863c9c7121fdb28fe510b57ea9dcfa972f09a5b71b7292cc04c6a48c7a54ec46df0fad70027b2f62028017ea013e6bde3a7e4f7e7207f9f133b25134250dadaae6cc5e301c58a307c388cfab2a5d08a74dd48e64c0bd60fc5b24f46c7145575c9921b72e35562e018289a0299102cc1328de26f27c2521a2aa7c709b487898ff3748a8661d769b3896024a29f8c828f5cbc07a819d418252867fd616ff125cdb7fbb6a0ee653058c0fb7c919c4790aae342bd1a91b6ecec2f13911f2469c961d1c6f57489f004fdb070506b46d07105d8468b195dc51e3a1004db5b8af0b167ed94f399d17ee14728a23ba27364851f774b275eed77b4c2d0f81cfa9844f3530c059b86f58ef0405c18b46e91b0db405c3b67346e6418f3b979105195c6701bb99f841755f843b00d0f46e5cc7bf876f0fa589a13adac7658d03bc2bcf6cedbb30c601b18aec3a638b5bd8b0491d0cb5eb412b58fe7b2eb0b1bd9d55d85683553dc3ef770a550c6d6b5e5c235195bb2a5512ab111b772fa8ac8c79ae4822508d6eef9ad19b81bc5aafb95ec944a5a8b9e2492d1af8f338a3f0960ec9be41de1e7dcb943cffaea3fac4157bbacf6c9bb23cec5c3706e5385a62946ebb8345a515a1f6b4841bcbde37744c419a3cfa5e3271372a07a33f14ce042a0e482a193ed08e065c47321e11a6303154d08fa05e2c9970fd4a702158e23db4491c4de5741180db140bccf433996d583aafef8f8b98b190262a132bb1623d7208d6f1772869cbf8ce8c5499ebb5612dc5a7941b0b097bcccd0fa64f6f7f63846111318a400c5a1559049006cdaa67fcb4e780ee3aed9e1f0dcd86cbf702507e20341c419c649514f1a05dced98bb1055fe18d359179c8704db1c0afff50020138c4e64a839dded7fbc139fb817d42705d498803a60e06db13eac8ecb4105313edbb4e4310c1641054ca11ed07f10a5cdd05fadf0215a3af4cfc7e71fbcfffd372a2585a18631a10928f223f522a7486fac5a868674485ac1dc95a2bc0693d8423676725d452f04032b545226367f339a7c1d9166c20c5e5c50e60108d6246e4afc16393136ca2c30b89aff28a460ddbfdbfecda14f96733966c6bc50d6c8317c52111fafaa1ffd97d06ec04711dc245db5d558baaf06987a9a1ab70e69cf385cb4d9d2f4c908b73c93a3e62ba715185e8f4097018589a2d35060d08063f3cd00f0b3263b046e713d5994648d48a978fbb81b2642b8938e424e48c0515d29810e2bf5089d8d3b672777273d4b38c7248480e6a56734b7b05dd178bd7c482f22ca7dd407d34b063d6c19c527eb1212fdfa19a0dcbb88a1ccb1e8ae6d5f683e24e95c354d8c05984074429d4265ca447be33cf8a43dabce0b4933cfea6692da4a4aed9d3689adac19753c9c91acdb1518ec8edd1f2336880cb2763fa16b45287e4038fb55415510a7a00036cf093cc227793f4dd877b2a4b91f14e94c2cd7b7a8b4ec778e5cfdd465df5a8c14f7bae44373f172a9f71c53e77b81709499aee5f7d6b0989f491718324b2b4f032ce8e5d501d189c0dada6ff65dcd5069a1fb01fba6fff1eb033458c5cbe09698a092119136f877287ddc24f3260641a5837bc15e91791130461597a060933ca1d121c9e12ba5473e7103c2495c02bf4f2f9b9c0a2a32782b14dad202707bb9e8b9f6fd11d435ec0c5c6c56a4ab11352ca8a53c50a11955d957067e670c227745b4133b279a02a8e8305308be93ae7ba33720a0296da40736c39cd89bfe9d7da9eb4be2a7b88184cad21d178a454dd03d976606a63ec86dfb1562524e42997ce7bee483050a9be4a41390a028e2419f995cadb1ba614aad13e91f703cda637f8648dd50e241f2fe2d43465cffc1a0c3f2d8ae2176368799d31e6023ff4a6a972773bcd95619b64f3e3b01d419e4c2a7d2cf3ad4e40d4c73559de65753c430d0f79115c08937b7cc008b402c1e5fca2d46e14c69bd2e701184a1400abdd9fba970d09533e2441e09dd2db520b674bf73c34a186ad894615b9f7c2e7b319d9e902ed09a242b90d08face02af9140a2a400ba18454f16037e2b219da9ebda8a082ab5f868b5e68a0fb61e03eefba500589c25df02579130b00977c6265d6f34f6866970a2ba0d77017557462d3b52af211382cfc99e7c3f00e635bfcdda31899d3da77558f8a9b678876e730033d2f28b4e159bb6d43197e9e3591f2db8a01de6a1bbf2a4b10e15cf8dfc89670eed31f4e058353d42391f6021c8f0734e07b96680488a22034a4b13f785a49ba1a79ec870099f299bd2804a6ada219d610db82c0c4b2b01350e1a5da9088007b12fbff26c682081edee105f433311267c17299dca9d91b8d0ef43aa15113a03c29aa7dface35d5265563091ec0509066ea66eb6790af310b8fcdb0eba93c096611e27b7cfb1cfa58fe64f89900b0eaf5e1f7febabf8eb7c125a85a009ae2feb306827250940d41a40445fca893fc834c20105be572f3f05be522a2eeb7cae5622fb92186fd41166b07d1cad01c39780f183362e5d070faa4a468116b6c90de591a9c9fa339a2a7c4ec9177f7c837787bd6d29a11d9bbce476c38d4f13b88d02a54d614412e861e144fc4d9f6cb9180c2809ff478da07977bbcda46432f968fbf6e2a04b7530b5120eb797aa3abe6bff478e655937b1f8a4fa242bb6dd582a3475079075192bfac4dba4d201631978ade0588236a41cc2b426abba90b8aee2eeef36a3ed6fbb9dcafe57c2ef6a30ac034024e3bbc7d66c0c27f636d97eec19549017fbaee884422d6be51e37680534def0a0fc0d833e61fb8b39b37326161463ad692b228b032230d0b4c960669207197b34c612ac2dfbd7662613113a68771350b3bd5261cf8bb1d962a7fbf26133f4512d3c9c5aecb06664371a94a2b41105d0822425b855e7e281b4c21c0a566bce137d5936c45a36ed8f1bb010bdfa773ae558711e9d5009bd61f36922ddeb2f559b055c0946895614bc3a8656dba921979a38c1f74f5a61127aac67b4328d76ccbd93b8766ee2af19a3e0aa9e341ce6e0716904a8ed29978503c118908c345975acb09e837267e267b4231f1dfd2ce84715429722085410a1c688f6f9d01c1682252f66c5bfcbd7b12bb923529139122bd10f03986a551361b9bc986a392abe3c10bd8cf3b4ff8780347001db8b27b3ef66d4c0b1ca5eaf657c28f2bdb387c02143814d0ef9149b5c1a6ef7c38fb5027d8f19272190bb547038ee3fab085a49e3b100b8b4c192bed5689477b023244e803302d53d1db013236adf49a700cb0a7d5c40cb4fcfd38d9db43397d90367dff7c0f8b883750ede38a638ff0563be984de9b173fc509dab60d8b183f918883bdec830e640a3ae2db1d2f9255d5bd807c0617aab76871a668fe128c4d3b666a8a06ff75b080dc352d10fd7dd8423febf36b67609f0317e7a76ca22ff5ad0545fb591257230f38879352ece6ceeb6ede3d8513f8b857e0cb9d9f2ec13d915033cc2c1bbd65b8a1d2e358926ed10596aad2e8a5a705b1ba411fb9583b3873b4bb01caaa4c640b811f8468dc163b8ff97c2be92e0013f71d4b3b59b41129676344375b84ef60009ee2e68e1e39ed4e7c59cfc3ca70499bb84fed04a7816894b117446580b71bc9b215c0161b8df824b2f4dd6c5ca2ae43df3e23dd23bde3a662884f5b9e921e0e50c117b84371c97b31892c8ef7db4dc30af9e616baed9ca50564150e7e76aa377422fa0ecdd73a0aed21a95efa5e9d787ddd84aecad52d98fdba4dbf15062b1af1d26d9a2ab47cab0ec39c9acfd8512f2156f385895baef4303c8f257307f73fd984c6d1da39e2b612f03bc70ab793bfda2d9905121931ab8c37492ca920e03873105fcd20c978352f9c968e2ebc1b080b0a94d0df7306b9a9ec420a4978f1aa8049eb9de22a76d10dde0c63057690ff0498797417077bbfa447ff75ff2dd9af2c98b298e823bce671ac1e6904e20be58b812d351f14d6e903e10f9fe1f9fba3938e1e968555b43a946cca3a47cc5d62a5bc2b765dc787cfd3c911f3e0577365f8c359ab0c5d65d44eb9e3501f6d182540e8df4ec03748501b3dc8cfd403d91b6fd8a8a0967372fe389ee1714c8791f363cf355ef12e97e3e489fb878538ea0fefbd0210bb1bde42e9c474ff948b500159c49425150f06480149c912d0d2d3c4e93f7b0279cd528013446a88ef67ee713e963a88abcef22ab2c44e2c9e01b0366f032e98e689f633ab626bd3c856ceba5f4b1e17b1f78ac0da646842da396d032b71ee4e7b21cdc3bc57b8b947767c3df662c64e883a0c9e34d7d49bfa930d5ae2c3116f5e405d927516b368476b708750561fffec0653cecb17a9a03989c115d0e67487807117a0bc4844072fa707b04a4c031f30b72f99fdc294d389a909d719186a7b2e3ba5d2f359a1c5520a84b084a040dcd081cef57ac0726026a1360a3828eece8416bb7cfab3f5030dd8a3caa19bc44fc7fc8a58d9e890920790ef681dac46c989155bc7b5740359e0a1129a18b6c00042cb5fcc483d9dfc3077566d7d829dd70a1bf2b717cf02eb4efb7e308da2a86fff33e81dce59c15402e4dad44d76b26a4b84b74b00f708b4fd6d0059055880f7fbe585a65963bb082cc49f58909de2724fe63fa4251814fffbe8f7eb09b60216fab7dfaefd0e2e5716ff663545c06515aedd60e8c98110835e4c87525c27b8f4c5203c1cb13c55fb50e3aac8c8d2ea052166347fcf147fd65eb0f9708af73158ff873a25585960d9b873034db1511b2b62b53800978b074bc8d03086b62ce0b467e5150c382e992b948615c5eaa36b4b6c5a932c1c49d1d579e2eb13ed76c29ff6d561b1a7db011fc48f7adfdbc0b4a1b89267462cd296bb98c7c907987236e66c1fc91652def72cd7606bd1e613a37414d4d87562846dfe792d4ef3302baa54176461d09ca053fb07a4e8f796d1e9a90fca8e71b2ee83c0608ec220325148ba0c2fbcba09ba5d760d112c35f99aa7b0b7b01765a31a85693b15e1436461aa4b13fbfc3336c9fd16aa802c60229368dc4aee3fd9ec1c5c698cc6c0185e43c4304177c2b97148065d82ffb5f1e002581e063ac5743e8860ff0b1d1e70a1e675031c05878ee5809441a96bfed41bdac670fe8218134440b75e7e0ae56ef9b040e01617d779fd5fda713022c705ca3c4609c9cfb48833840e16e472ee6254366d7e4aacc3a4b97aeb67a2fcf4cc9e9ab9bb1d6a9010c3c9572be5cc10f5e44b85703c8dae00bb8a01480f53d16717bea107207d40b9d2103f80e847c3f81399029e8f25e7c13291136361d479cda486214c74b784f2b5894e5366f9393f3dbe72b3238b54355be618684214be869700bcda26115a498589f7b480574d31e6066d1c2572665e37ace61a029da071c890643ba1ea6dc63cbaf4813f0c9ea8b28a99523f32755d887e99de9bdbb254efcd6d2ba061dc48f0a3303d1cd48056998e2428244cc4d799410112f7293da1fb210b8d7be3b55cc2bb442ac92c687ce17bcd2c14e57c35d471aae6d097dc5db7b9af0c76c9cd597f07776459f2900a583e3a0a16400aced53f274eb9284c56df05bce380027ca123e7767cafcce691d7acffede20a3ff03fa34daa543ffbc1e86b4e59e02f5e4fd7bd26ed17c6ff7009b9e4213210e5bf130cf7c50097996e7bea9588ca95ff6346af8da7344007c13fa5574afcfc355d4f88ae5a264b6d10ffc13e8573e8ce9be529bced5c88fb7fbc812a3c31284055b208f234333b17c3a8c5371c75be8ef4687ea72f5942f42268bcafbc62e0ce4b3f4fe48886a28dab685e83ea043b4ebcbdc46cf522f0be6ae70ce94c582540b53bd7152befb20ac5b102f77f6f7b334b5b85e909c6a2fffd49a540b5259d2ae18ee6060c90f8ba6db815dadeb3d20bfae7ed9c94afb478285252ab9b780e42b4d8bdf98b6a38d924d74ead58540c9b0361beabe3a6ecb7b9ac22da5e66505031d56263c75ad80e5963969d8e564cea81f28f0bb70ad127cff10114e667d2ff8487dbff805d7000c222dbdc7eddbd5dde4dd7aa49b105359ef52a3783550330972670ca8486cd3b53d7bc67a6a45c6bba66c52171013947054678f04e67c73ac11cb6c9a64354021b4e6ea494171c59f624f547c0cc822eb61cf8d67b4a1350b86111309f4194774571ac84d78576491b9d574c348d263acdf5469809b60c08e5e53ddfa802512c5de25511274bdf219944bfc99217f46750d65fa5d3c3cee0cd4f6d92d3c010aa339cad7c993afdbfcb24c2e2206c799f9e59c54b1079def1c341afd3168a93f02166f7477973864b5cc3d43dcf1782ad04ad85ad05ac84edba05cce8809e4100fdb401ea95443f875e93354b91bff59aebd515e9b2a3f15a4b01c407fa8bae58b05a8a40fef39eef889aceddf2cd36938fab26b775c2e2d172e2f61f1851d4505a43df1bf984fb2809f1fe829f50b41c02eddb96589346a0d5ce7a1762665b7fee4bf8c9e29d2f01f9215a80091b6f8c075764103b6f7b9a79ee8e2638196edc376e9da11d8dc96b6b4f6a38e564779124a72a75749b5d4904a792d7c180a1078924eb827c3e48b779f3183e5113da21a3d60253b6e098f42d49e52e4d3ef42e006ee2abee2c99b02c6865ee250cdfcbcdccb53b580ab155af0400716930044a05c20774a0190b8605941b60da0002e92df9d7eeaad3af6a03bf46d5434565879ceee8a2fec21c270e439dc09488ba9b41163ab262e23142d8ced8a146400938cff442b2176533aa325a2ae016a0396f7e1d24771ab89abf046d655e11ca8fcc9a70b9afdbc6d14209f05fb8f0d5c63e57a3fe2b6a4759b10df87aa4a1b7111bfae314fb3ca18f5dfe32e8b99626adacf8fcc3e732bd1fdd328dee658b52dc234cc041c87d1252c2db1cb7f47a0a162bebc7c53cc5afe67d58ab5fcc2da1dccca7686aac90094f47d02a41b988ff40d1a6157f28a03d5688dd8b21963201e6c21a5043affb315382dbda8ba951abad4175112cfa42c26a28f7ad258fde7d1f112013aa41d45bfc63225c2460dd52fb9e7af718090565e873167e76b182275e2514e461d24fd3326464d0e12e1f632b961cac7a9f8d1b5872b6bfdfe4052c1ec25968bcb2df9fa9052f228cc7eacd629962bb7e1a202cebca74eb558ac3cabab7208d30d895d58c8c2b4574316e4efe23ce8bb98c6b5f7dc7089af014b82690386a7c17bd08e822fb2e7ef0ba93752c70f919b070f2a33d7def346b1a00285c830640e5294eea0a2d0596abbc7bcb9f5d09fd749c775f061221c6f253c5d308f5cbe780a7d16136c1bd98b88eafad8c1e16de60f3bbaaf1c13d65c9d65287a5dc3871115a1f7c94491eacf69faf5f5efbef57595adf255b8f88da53510f7d7135d7c13fc35050f53f2823edf5fad792afb009394c26a4fb11933e814135c0c6f02106c50f01090711bc0ecb9018b2ed5f1ee3ce6163bccda6fe86b04031d6da442c2c9b25d870ff97248c2e8810c73d5899185731ff0239ee197f1c084d1a61c81a2ac5b1118db3275338d6d3a29f90022fde06c16c1831f557c1dd329c9989f4b92f72f26b2d04af1c0fa0ae53132876400f1bff9c600414b8b40dd52195b17c891d5713bc1fdc70fcad7c17c857d9dab3710a539f0817b6f0c90eb27231f207861a7d168af6f40f21748036d3143abdf523f40a4cdeeb62fce38e3364053a6bdb1633c00d80bfb1741f883598d0230fe32d0f48b5a1b651db42d2889f5e80b9777be3a88d8065db456f493d174677c0bf4639495ed6192189ea40035fee7d27dd0b831c07a95a6547db741aedfc783684f8ff9cdd566a4d195291c097538e119d4b187e0a5d287348230b437b10b7d3ff6de5ac8a1f8e936a1774374ca3348e0704bf93d3f4a148f64a104abbf472cd88ec520c401185f61e8b0ac3a23e68e761b0b2064ca9413e738b33a902ffb749c7ee8b1df8218226852e144ca4304cd6d44a500a3b52b799aa079566f8328f7a22ab96fde563eb55168d7a16a92224aa8846f4edc503059b6ecdd0f3d3da46e4cb3b5e9eb0db9724e7159c69a64654b4e451a586965458eccee162ba9e7afac2d78d77a001e7d8b5c3701dd61e2c06a98612724fdc663f471bd456087282f3d2167c4c2a41f6e277d1c2733acf571b8e771b78836e6e28cee1fc530bad03173f6d35a2b271a4d9dbdf648e0d97f4d8ba36c0a41406e8314c688f2f8bb89a9fcd05f943a4d25cfb46361fb7e7fc66e9adae07dc6ea58fe4fb06b1e394e4ee37c960a9593acf8a1bee5c06ae0b851c8f500c541bb80417fcd90b8ec8e769b7872e9c80e1d12e2125823d186b483605f33d0879386e2dae39b4afc6c4bea7fe0b165f3cecb86cf65b3fc3dc4195de9457707942ec6c9999cf1272451080d57294943560b2bc29aec1dd223a5a93b30fcb7f6660df4d42828579c207a0e1aea2101824a30d9385836c9582836cd39d71c7e16ddf3dd945551ac1bf896332b28d93b1fb581a21f9dcc07c9c84acc063016404783ae68933f2921483a8211c3843b2788184e5f490b7244cee9da271a95cf4c84a58a35afca6642c0bfcae9cad71cf6cff0e02799fc6bdb4bcd32c0ce822071744902e8ec1cda291b078e58afed7481ac3728c293de23aa97d781dd383b382f672bc5c6ffcc3324226a1b9dba5cb86e610b66653f5efce46f6fd5aec45e871e762253b3299dbe6a942d827f9217dbcf4760ac8c5baace493fcb326b55f43f04cc2d044892530ea8b5bffeab3beecbb610000ccb190974c9644026872826ac0227a14549ec3484231310b6cb38a06f410b826c10bead5c4b8d0f7deeb04d6dd8027296813bd61740c6ad8cebf66087e84aae08903e24b45f56cd02eae0b90dcebd979cb6d4cbd70f907fa25eb664e08d6d8bb72d79564b96e92d3d782472785adcdc400b615bf0c5f996508513fa138b8c0e17fe38f093c7850a912f3c7b133b70e9e0c8d19992fd2f4b53853232a4a8c0ed3d32bd4cdd6f40b3a20b30decf2d92c52b21769bb4a6e84efe86813781bf69664d2ca6296bec113f10c21778849e08fe7ef23ede7491cdd8ec13d1fd673748d475870dfbed73cfb6d7e999e0ce1ca533801dea80ce8feacb1a390639c842aa3c2313e9569f255a4f8bca1955971e825e06eabc62d0464ebbcd0e18f4eb95619c53a47032d9b4352c282fe250199bbffc4a27c4017329b6da0276460c946654890362c0cdd9dfc72af3acc7958ab5478ed3c6a7c3abe5d9a9a38341d9c92d706aab2511ab10b632ef74aaaf4c0b51795aa9fac34c1d49636693cb6b45c468150bd89f886de9766f39de464261c7d0c7427ce9410ff8d758e4f9b114e185ce70aa33b399d6822b6ea80f97b8ba2535e0934fc6fbda14780ed9ba7cde22a4ce4fefb5e17fda53bd1023ac32890d2e614268d81950db97a6b623b768871f654b2f0091ae616aff4363c4c478bfea654c336f410b143c6fdbc547b753dde07bef8e229e395195a5e1a2765cbdfd470b0856cc1f31892d9e252e7be6c70be83939384cdb2f15c4386b83dbee4fbe54b55122e0d0f4033feb3b5e1dd4850307f48af37f8a16e60414367ef80028af42ed840c477f2f9f571002f637ed673fbcac4323f338c40249d2ece3ebeb4de395171211cf2f7c84c226af6b98030dde3c7ce9b4f2ca1a5dab094b053f56cf39292867ceaff7412027b63ad0a565dcdf107191538331abc0eb2bf4a1988a6cc59dda24cc22ad14abdfea00ff5fe4a700442ec0e7f9aa4caf0c1db81cd7c579cae45d2b66970e2d35b4fd14d0eeed53550e476cc369c8dcac89b76a7497e81b950a2708d4147dac0112a84794957fbe2cba700c6eefe7d1ca24306ee67e5773a11e14867c20dd5c378906ec9bea5f359da27307b46598acd01af2a0cb152e97dbb7042694a1ea2de6096f41e2d670ec0236fadc142d15227ea0052e241e9f1339808a52ae8e055a1e407fd2bd4dbc29a78c3dbafa916b5094070b237d270923f6ac4c9a491244eb3933d60448e047e7d90f596ffbbf1b13e23081c05763c72a81eee1fa85daca139fb4133ca184ebcd676c432265f741543081a1f7896fc9f75e1fb7a0f6d617e413b14a0b4ae7d7524d94a69aab8b8e508e8608510c5008dde4aa041a5ab1f98bed698b180ee0b717b336238dea1aebffa21b111880f3e1c42b99b7de44a23f1f8258143566f5e046f6d8eb98075241fe82b29b68be44290d8768f7d7e7d0a1046958a0f621eb1410597268e6fbf6710136624af403bae5cdbf2cf8703108323f0683b6f6def6fa0af9c41ff2fadc68d8b59dbb6adf7ce5e5b0f94f1b813207072a5b277d3c0829b5c826303ab4cf9f8ae028d8a945e645f9645ca6fd7cd26bf49e6d806d5d5f7d855f89ba561e45c532bf7ad813c55e0785c65ed5c71df42ba9c8cfecb0ecbfb30329c15e0e7c7c426758d87bc53e53140c01568e8c9afd34a8abe718a270e4c89edfef6345d19dc5624a815a05a25a18e034eb06f02906854601ba21afaf6665a8b2d8367251308dd1360297615fab28de63a29915953ed1f5a4e8aed90ec790eb77cdd3c07a24f6bd96b0b9cc5390cbdfbd0cf570e8d13d78218a3a0d8a2c6f82135c5bd0751a07fc53c6a847a63a6f99862a009c3fd554543741674874d29b745eb4332766c40dc35f105c65e48e3f406ca99711538106a038adf926bff1c9bdfb422448c6a0c4721a3c6bdf435aa0523368922d0228ffaba5c1145a7d2207b0d48d879546af257fb7c5527c81fc6e362571d729ff342958654242164f1e134ce84521d70dcc4409eb930903a7b7d3c6d41e991b304b94e3279166329489007a875f2307c32f0c5737aa8a7bf8debf70230ffc6f6bb55c4f0f36f24de3eeadf6ad28e9338c5a44ffed0280e663f3ed6d9934556a2758a377f7521b6d5aa3769c82d25a6ad3df3d3c315abc8fce282a3388457a5ed4273259f6d01f9382e2bac9be8734825265108838c4a74bda1cf776a752031782aa9447d22d89594e78723a51485e58895eb20657fd2dd75be43072cf7c2aec70660df0df6f1d9a3ac1ad915a166e48c0b9306228bfac3e2c09b5c7fabd099c04621bbe959d916bbf520bcbfbde60ce1237d64105ea2ebaec6b9213b5b5f2b54911a5b38720ab38ddb87bb9fc7c7a0ff1dd98a5d3ca196c068349c1cc3c748885f1b52f845627deb50d3ee534717e8047f3cc915960c857c163bb1e56c2b57f2f19bc8d4f2e247439074dd05eeba0ed1a3c079c4a0f8e8d3d924a861652889b236676378ce41a49b43b7a7a2aa47533cef13b287282d99471eb7fc1e31535ef604d7e08d714664743fb468c994a45f4d493a45b2db8bfe186d4ab26d740662440a2781fda295f3a82ede41aa0d8af0da4525a7926860434190648f6f6a8f543b903761a8789bda9a296a7ed62b5df250eacebecec852295e035a0e18b92a1e2f99c4033720dba92fda2c41cc5c50767b76068424fe79de4385c407adbd1c9dce9f9ef1e6749ff7c8b09c0855a3c8050007f38807debf2b2aa4f0aeef7404d37cf729fb246bd68f90a199b56ee8130d2700c3a6a644dd5a8de57e8744185db3ae6d82711a437fdbc804609ebca3c4d692872d0067805630ec9404cda9c132e3e6f8e2ccceea0c1be256578938e24d222e3987c000f868551b4c1e2c2177e7d6cfe0e1b5cb2a838717f6851deef5f56e6a1de6a3f92d0a79e19dde583d9e40c31351626a3ea3632fb2100ee22056f878a549158e98a14f7b23c4c28e59a8c2174041e80fe5089347b33a327eca418f3e4945c540b0dac1bc891b281fd711840b23a02223fe340d32a4c34397685788888ee5b2652d20329285fdec538e2f81630dee3aec359d4af884ae13d5d55be53fc6e10180f73ef2ff7b3760fa50bce8f43006d7876ca9ce552f55d006b77739a9c8a1a68be04bf721abcad3d4486d6489c0def7d210b56d56125b47f8c633a628c2ce122f58732d18aa104273f7145d32ae1e903eb7383c435125bbec90b7053a11c2b2e883b20a6d094a815b0a05fd4b85a3388eee079d395650dbc0392b4faec1c01986ce01576c9ef8bb06302a0d8acc1f5023fa348bf9513a8c497523cdd8f942cc62625639ed4138623a51ada4363914b866091d74a95440809ae32f8f2b05a1082dbd50638e2e7b9e31591e1efd64da8ec35674d8e26d0fcceff909a90069143aa943535f174cd86b4b4184a208e56c0513a2ac7fb33154066333267373b5a0ed92dd727a89df5ea3e967b0c40d827b2db622637271120c08fee7a5096a56473bffba1051fc8297782a67527ca9fa9447de1a05d09cfb4cdd708e94203d928d3be5e7ee0449aa51f66c7ba99c8905d5e8d1bd39bb46c50a024766c0608b05aea36c1b4026b19992606e1d3e281e25378648f529d118e2694a453a9c27bd65506356fb49806cec5eec1838e8eec9d5b27432d14eaf80fc50adc884f911988abc82212c20da8ad604de5d26f552a3763544709cc93129b94c9a697ce1e4819f596bad402146c505c1fe30de1405ab05a65132af332d7a84417078229144a80f3ce670268e736e17c3da6c2d37e6ee85846b274df45ab52d93084d22418e0fcccfd1286a3a1b56187fccf1521b171847bcd52588fec3f968eb56474f78557509be5fe2e946dad75df740295b5cf681b4ba1aa9049ee861f338c5a401aa434903f025369aba2134320de2f923af02f2060dc0930f14a21addbd6cb02d442830287ea345a7600bb519abc54da3358676aa1d9b25b7a1605f95b74d2e6ff403faa43f7fb1054e40aeb9165a938046e15674a938105e7af92e0f7a475fd7c805fdcbd6f49bebc65a45258e879b9d4e706fb368a0e6b76c7ce9cc1c5270c725447eac052bbf457322a0c417eae00022714ff69dcad6d40d2b04e1ae414d56b3b2151e559a000c8abefb7222c4796c108a6087116094c4c066ae945608abe82bfd9869b903c3c47452a8d1becee7b637fc4f40ff24ea64bcbd11dc32600df4a3d4e027c816a743535ea2cc9b5c6a2902bc7d0ef1f6bbd61442485502227b5843eb4873dd5df0ed5ce8e119cd4c308792460754344980132d8c5226b5d8c300bdef308a51678151d1d90c8afb1cb7a10342859d038797ff8901915d8400febe41f7e5a548630495c9243ecab5876b626250f1105a50adc6f22086ad2c6385fa8904e5ac555131673feeeac1be4772df8bb937807b34d53cf0d007a44ab9456004d2b023a5cd326b4259debc86b67aec37abe5078838e5f04b5b2947e0ebb707d27e6d043ab84808ec3b3d5409c463705f87c50fd6e8b8fe56d80429b6d54e0ef7cbf899f625395c83e70d205508fa8a9f85eed2635d6deae5e396887e353aacc52fa024024a9e1db740a70483db7f392e6f941d2a01c70cfc8a0b5e9cd72789de56205cfece5172066a039029ed1ca8a5be3894598f8bbb588a28d3a31ed41152f30faaecab71171b7eeb3158f8db8e7d5b12030de60384d1a5a7a29ef765f270c5378bae1df28e5f7db987280ad724e789723656ed8eae5515c88f99fdc79b1a7ce3260aa7d410bf971c9c2084f872da3d6367f2db6acc1bf9db8319df186cbf3d8aad8d6a04dc9386ee8671a5d8ab8e4bbbbbc7dcca3d41a50c49b48e3f7b759dd57a5ffd24f764241c816958de04928dfd9b25390e8c85aff878be73372019cc128b2af690b42e25c9b9819eb61d9dfb077e1842fa5ff16d06d0769501a4b28a873f43277155442525f6da738f0f06d2580d000af1c0d178264c26d29920f15f10bac76de295345d654747b37f0cf40d3e063ef3a8e96587b285d9d6ec465c553c108c4b1ad27e9339f7885bd84b0313a7f7e99f5bf2f385c42e4f80d203b84ed562791d6a61281c081a48cbe9ef058cc2d222999b9bd70c7d3e0ec6a3fd0334c1283740e7a3f40968c95cbb9f7ccd349e28320341c786544bf8a7aeceeae5047603055d684d959050e84cc9b066086238de8d111b16ad37a97136330025cc4462ed90dfc1e5459932c63ea5279d2d77b9e52d90025f2528a3334a2865795617d4d8cd92768a44648cdd24afbc3feb02c3eb351841113620cc7c319f22027d19396a0d527ef823293b032653ae5481b8e1b9ba2739cc4ab857fae146c1f6b182a7d861e8a033a8e2a98d32ec417a35a2a5a86a32a9878d2a9794daef284d5bec869592ee2f4a734b41a9a18fc0193ca85ec5f56df3038e891aca6b156a534b3aaca16aa839dba424215fdd72d957af640d4d45372cba404311dd6508e34b56b21f9c9acd5167f301229bfc633c9174fa0536167075396316a1a884a21fd1c9c1b2eeeca6288142752239bf20bdc498933d50381c2db1bfe25b6d9963a354ec892dd7039ba830f7e77ca70312ab91946c706c3fcb01b37e385814e9d5f13e1988922d28a893c145e2ee2a7a580a7edaf42e52c52fddf0460f7d7c66f48494d60111f97a6c0b5a8710c66b8c81f3fcd9a756f14a190a5da57bf75731e79e3b44e9bc7b5fb1ea41da4609bfd02bf6bdee85f94bf21c7759ecee00132db148f4a13ad04bd9c743dba91d8841638504fc2f6ac0840812533a20ee0da649719886d4c494e5a4ac1e90f60503dfb83f4723f7af471599e489a2e771af2a750ff746f3f7aab8eee3ffc520d319230facce486362c7dcf0ddf801c7c022ef24587f52160302f8418f8f8dd0f357067b911cd8b2857704ba1c2ef2df7102f1ef27cae5a4bb6469793714bc45c00bb27bdaa5b7af63b3883a8915d35545f36788a30b77d2438098e25dec7ce09a719295d91f185f62cd666746c6a9b17f885a9d1d692b1abc1401f16a023857d13ed2b3015c36540d26b723195fee2899ee0765fd57c100e7c559b59f349d4aa30428968c3dd8a44ef34c85533e419d599beaa97831a954cdcd2bb158ff8380aad5d96ef83d52fb04b1a5dac4ff397b05a062b707ee9a42cab4692c21270a7fb42cac3130706bd18965afdb08a318317162354a6cc5d90321a21f78bfe3a58b8894ed003b521c558da5a0f5e30da0af1f22a72d70519c804c02ec9f663bc9949a78ddaa98d624802f7414ce746fc0e86c7c09e20213e8f34cb7ffed9a474a87971caf09b1698d2a96594186485c73ad342da1cf56de10302e7326f59866be51ddd81afc568af73e5fab5819486acb1d427bf9c34d1a375a46b0e3abc3e8f8eb60ed2662bd106781d2422ef317f3225dfbca0d1e7e15a8f82f4f6205168cfdb1980cd6eeda63bd303efc891559ce5fd0eb22032e17420579c7adb6ed9bec23362fcdbd575451a388896379611ecec598959a4fe47f234a8c1cc36a22f201b5391639a1b861ef3063d6544e5f42bdd3121d601436031c650ad175cb244d0a51c42766b9a496d631330600bac190d9045259f8ca5a27d5e585ce71cf173e5beed56213a3119c8f77f148d17afd80937782351648d28738a15787f79a61e3dc1a4a14d1c078877cb14389d9c2182a9f7d9f663d0a5fbdf9e5be76bd374052134d012ee161bfd60fd41c0fc4a7d3e7b1a754668a3ea2388b68dfb3b2d7c35c48755592f2cee220a626fe8f0f61c956150046aba26b395db4ba119edcbdcbe7e2ef6988452a1c03901b7cdb226073e22438ca4d2eac4a024ef128c44278cd75a4994644e122902733f4b45f91d4af9f9209677a8b3901a03ec78870d0e6809e32eb274a3bbf7dc7682659217d7b8a44fee93940045cce872280ce563db97a313dc21b8648631f09fb981572ef56fd4f59fa7afc804f6739c66af7d20e76a1b752209b8bb3c3ff3d1e96d3ae4ca5506ba2521d02d59c7b251e4bf1be3052834742973263c3b308cf3e4e1246ed4950625eb4de120896fd7066b000861ce720a089fe923018910c2c8df0f3526c54440b109809949315f42e2c1f4c53928f557cdaaf573f67600b3dfe59170197ede831bec55b2d7473dcedaf8aaf67705c1615740a6f80df8655d1e5dacad3799941c1a556f70375ec58072cceb7e824483e9c4d3e6554547f8584952a9dd3208244da0d4a5188621819654f53d581528e3c1fa37ac3a3e5fe3cd24d362d0c2d05c7a19582b471472812ca5c11cc2f34a0b2e254f342834f92e897ab144663e47d44c93ff9520d2743da3dc651b8da26e3902fa9c9332c15b2a165be0658306e7226e6d664dfd539eaa1130e34fa9321a0f8e0bb4384a264f386763ec2c6325358568823993acd6ae24e05acabf6e08fc8a6c3b2097ed3f4968f8637b3d689ab9c4e7c736283d980e52df2e0e47ab99332df0cf2eaa90d8336e9f64364a35e5f33ce7667c69b9d3b95e0340b95516fc248200083b0df00af5e95713a0b0772e7619af0c2748b9d1555284e10e4c8a506ff17f15435f5ffabe61d14166624a4364a69c85bec77a95fc76b1a4595991e846007fdbab471bfc37d6ca8351d1e790d478d9636cb0fd910f7c46b3d020e8380c9d1a7d4f33a189c289bc37ee2e74816c0c3996d3f0a9aa6485c4379eb60986b8db0563048f1b8ced2b9e73e1143ebf8bfafaf839e2d8ac0c451dc2d8bc10b3d2276229eadbfff96efd3dc4b50ddbfd8fd2a7b5f4af773e1fd8a7aa568eb6fd10b1adfeb20c4aa43cf0b0e52546088b21b9b34f26d8dc8389128795024db4d1898cd6ac7bb504ff504350b371eb1f1ee882363b0597efb8eb5e84c41e4b672192362a9721d2e330d7bef767a3bbc58ab3bd00f486cbdbd59802078b00a1a47e045b37fe1f790b6b2d51c57b61712afc11be425821f5b419bc42304b834f69c49d38c5e3ef0289670a5156c3e666fc9c13b27710c1b16b1ee8abdaf490478faa94f4744d23eaac09a3d03baf3990db4046d33af8a1570444868ccee44ffd47a20d4785c57979d86865313c5bbe17aa318f1e88635db850ae46d6ecd4ebe6d8b7d2f36b1c72a629ad17674c62d4920c1115515dc5507788b3d474efdde2f7ce741345550ab989d4d4329986cb92a819164c6257c8ef5ef68ddd43fbe7766e7471e9c25027f932ea33fdacce7b9a879d3713e54bd4659ca0e2e891bbb0e1466d5dce9d15c91e1067f0a3c743ea674dab651601cfb4a90db32523cdaf279e4e4ec025353a23cf84255de4a132a773e4c82b6960f61f3fa13ded8e5f30beae4e76c9c5a726a553b148938b42840e8f607c983f8563be9a229538406e540d4e393857b08dd5107bf0aaca404964e84de7aa5b033d652d16b7629e93e98f2c2be9aae7ec6dcf59187cf3da992b97068cc02402f7309326f51c001b41e805cc95ab6ad2ae7e62a683a5acbc8ecda8fb2c9aada6b470e013122ace30a2c8b4b6f3d506de17bcfeea0e07e587ae9fb7eba07f927c85c903c8c9529b4a99c8e842ccb52908f26730c5730d904569d4b91db28d43b8140ac420dbe4c49fc0722acb11842bcc1f3188fdc1420cd9c17cefddfb5d94ed039d6f351cd32c2cb2d29c06026d84272f03876c65dc97239e33e327069673a09909d205be59eb74f140272e0ef6b609149f0de21b01141206fa08a0fbcffd4b92c05230210ff67b618eefa0c52c125bb6cc765ba3fc81961a0bdb98670741c802c334f4bfadc265c436167c1d364364d2a38e7349d4078b203c200d3c9c7f88fe957e968f0ebcab6f36caf9435a72147bc7c74e76a37949ce8f4b47a9ccda1590f02ac2d2aeeba14d37182746890c805dc69426811482f5c4b776fc6185d6b038c644b5555783bbff620b020d93e539b8e5dec5fec7807ca97d97c79f0de0856a1bf2f32eed7d674d9b63abb4cb339f5474afa2083d27d9f3a2dc3bfcc97b30154d0c5133206bb1d5caf0fdb0c036ca4bd5e747a5715ca8b52e03121ac337e959348fa5670ba9b2f41169033ee0da905eae7be9ee20280457cad3e844f1e45bd4e21303e21f9e16e245ad209898d2a0afebc9f5c8c14955688fbf9121162860026e90a72835eec1a2be627a66927a73c44e1316ee493489673cc375a59eae3695c830171cadb6e903723e780dca42b37b8f13aec1377d225aec748bbf5394c891921df1c2306feacdc3de693092216a157043a325db9c0f3523d5fe43c54292158961393127c72feafb000410e0e0cf5a57b3f43dcdb70bc837c173c4c225c0e9ba2b41ce15d1bd89da032831a85581af71bbd30d3e3c7890b363697c6d7b3538338a6d3863c59cfa54c997139a15067aa787aef79c037f64b74540a7f484335479143ef4fb8b2de0ea4aaa185f9e6fb968a19b5241b318860e88a7e2f1c493578e768f2613212739fb4fb8c6b50d871000bc2891e0b8fa83a2aded132a4f5ad410c1c7d69cc3fcd7c1230ab1a8cbd08af151fa211d45717150a6f4ceacbb3082c9c469fc782670e28f72c3bb4cc20e458b756fcf565156be260c8da5b5ef285dfc1e7142d74cff604c3c13cdcb8570133c7454f95eb9b54be887e9b2ade0ce0aa953cefc0fdbdf567f8485184f6a7b9ac4f8c31e5fd95426a966118471c4a2cca20f7fe7a0c3238862452291e6f4036b9241ec13bb09b9e22ac3a7b92976e763559bf1ba98f52965e3edc4c5bacabb5e4116b77dbdcf6011a7a88e64188f697dccaef8fb9f4f18d60b5ea980d7dd1c9614c7a514915faa243ae7a030da0b076826c8b77a7a72d6161b8d2bb1ba78d218fa72d94b3a521d2d342e8bdb668386eea7a76162ae1d6a81b425670279f502d44fb9926f500ad2a5d01f712d73a8729431189bb2babd96828c3de57e2de2a97815d27f87f38550b2aafbec5f3dd76b282e1f3d30a8f7b1c05de19925d2cbd7645e22086e57cc45afb5c05a5162eaa5d00c53f6300b1277ed751a142d506bcc26c32914c28172b812159013977042cc967de1478e3993885ea56ab8f5a10df9a92d1ea16b87f1fc55a46779b6315c4ecc766526d7166f68897d58a31e7ed41bde59bccf46f282bbe8a935828605e0829eb58f302721739da2d94940e42e5442e98bdb4672f1e48ae4cb3d03edb3eb4c5b37878370d6877459d36a83067dd194a3827dc156da96da2583634aaa53e10294e4bf0fad62f59d85aec166403506208963fc5edf0d236c6a3bcc0037304ed70c3754a4d46e0b79a737e3de789cc91c100a7df2080abe474765df7a3e15bfec7e3daa22633f9c11aebf666760e7b06b15684c676a6418273a198257bc21d1032cb5354e831341e5548ec8f1ee1af39ea92b8d28fcf20142c32a07b0b6f058de97229a74d31167ec91df3c0f20d3151f2b64e114c631d1ea74e1e47509cfe0b71a9664e6f138159e9cc88b2c1963bf715c1e23e4128a7a90ee799059d6459265ecba10bb2e076b1b3b7b6394efaa41659871d3ed5410359d4fe7024ba61202bea787fde473229e650c664cada90405eba0160519f33684f8d2f0a24a8732f9a10bc4cb03fa12b7917cc612b35c10aec7d86a5dc1b11e643a005cb964f0644b8b29f69d42dc3162eab72fdd6b2a65b3592459b3e86cdc17ddda6a6ea5040b90a59240af3bf547c5342f1972d93e5c07f6fea41671f8a6bc540bc35f538dc9a420c48f64213be03c0279b05fb5913526be1815d137a2433125f897bf3fc71bd1bf1cec04e5e1a658c1bccb6322abc41229218acd953121e1936c34aded5e98dbdac1b5e8d94d7cc83b6f74869c14fd4a3018666c0ac7f486b5daf8d60331b37e8e65773e945aa1a65ab720a5da7f3b0edcbd04e7ace105b7c4336d9d8fa9fdb2e4216e19706011ffeb92b496d60ec8da8fb12a022a1c6a6eaeb02b2cd7f525f79fe4fa38ad8d74f4392ce33ac65d2f26aef233f3ed1b85b1dea7565505a8f84c6d580451095a95f2ad2df20119cde030ae6ae985c304cca9a0e7d89ec14f1fe1da13fc47faabb768ea9efaeac7f7f7ffdfcf76b37bd7f065f46d2aeacde3d640980383e87d905b2a502b3d3d5d14d5345eddd559121c6b5d0b6833eae20b54f6aad5ad10ed292ecbddb9adc5bca94a40c5c093009cc0951264fd2ece9b782244f1ef2ccd190247f302270d9c3c74360da6c2b409939810f3f4011c50da9bcb96f91cfa377b4a3c71aefcf1c0d4832f5f74623998e443c772415433598527928d6ae21cc1c9959a25f548b14c6c052387a924be1875c9534b9a5262a0f511f7dd0eacb188ed954eaf36db5d65a3be79c63254b7b6bf7e4b2c090079052962b100b822d1618de4b2999908a5fcbe6cf0576b6c51263ebbbed3979a6cdfbf6309dd376d6498beecc140f4b467848b0e7995bea628d580aa23bca2dfd806bb97d969858252ce980673fcb33b76494c13c734b4a7239cb258e22820ee93aa4ed90067359feb56009b7bed5cd0f28c7ba6c24d3f17108d2f1e64f2c5bb99cca44ba2cbbd699f338abfad8d836b56f2382969c5ffe5e25cdac6c410b783a0d2c6d9ed56afe2a1804a81329e9e405e938a4956de6d3f94166548e8174b4a04acc06f6c2325995b54a983fb305751a37d9dd9dbe539f9402fd9479acdad8196c3625279627beaf39e79cf8deeb815a5c2fae7077f759edc5d69ce19793b7f8aca09d75d6b3d7da2b23cff766e4f95d4ef8b5e69c73b2dc6753307577f78beff45e7776b3db3cb5c99a3db7c6c0991477777fe7711bebefa4b3677edf80b3d924bf56af954595f3b1d933bfb6005fa87177f71637b2d9cc959d2c3dc855004494b5bb7b7432bada6a2b59eb9afb38c487b8c3c81ba05990b9d6eae477ad7366633748e4aef3f3e958f6bbd7b23edfdddd759ebc360fe93ccff3e87b9ee751259948932b206af726c192669bcb5c135d32912641f06b851d09823662db859aaf32e5f977be37bfeba73cdfd6f90e4384eeee9e93e58db982e9cbc0c1f504d3ff9c59086ab101eccf5bf5592d27dcdd5d46ed6fe775384464166c8b7b256f05ad60fa33ff3a06da80e9630a5ec1b4ba8b3ec25bf7622e6976d2d51693be7e7f56762ad54dbfbfc9971a7777d71a77f72c8a709ec515cd80bb9d12cb93a18e34af1d0a798c2ab87eae64bd3844b9bbbbbbbbbb5777f7eaee5edddd6badd51d167b1cda0b0b481d0b640880002e0002d8806a24e026001bb69ef1b942c8cb000a4cbf87044c5f462842c120003ca190db7021cb138a502e00ba115e60c10e0074c81b39fa00393e0090638c879175d87aa683f12f72ac8e05b016b0638642be8383dab366bb6c3d60415039e0616db52ec21bac5c49d8930b1c0628e1ee60955928e40be8a0ce5ad89b507c527bd81a1301d3b709c5273814b24fdcbd01edf6856c283ec1fede00316a44a1a9d65aadb5b6d65aadb5b6d65aadb5d66badd55a6bbdd65aadb5d66badd5babb77b7850b0c8b3ded458c9a8e05b50cbab7ffcd18c00c20036c001e204868068e6a9d00a1d025f110a63f8050c8134028d4912e2a307d1f2c307d0d42f1859e50c866202314aa38c01ca20d808c507c01830d748418f0d42cb86047c78ed2ceda05413b3e1d00903fc6b0c141b58ea606e385cde180078b0703c0c900b003109cdfc3d70158846b0f10ec9fdbfcdbd5065018e18e0f94f608a63d6a036a12498846b8561e0ea82e705acc6e7a3c00acd66b5deb185870cdb51b29307d592832c1f6690cf6805a6bf5d1d5be42211b8a4c707deaa3eb5eb8294611fef9c8ca1fbd02d36791af2b4c9f953bd3abead4ea0a87d04fb6e6af9b327dcad355052ec27916571403cea97cea763ee5544995a92ab1bcca44a52a0de59bbf16e823ad9f956ffedc0e35518c29d89f0af9508f93b657db7933878f1ed126b86b94c6047b3bf15aa0bb7badb57e212c0bae5fd77516e89e52dab59b892296b5c88171018be7f2644000b0595fde16f903ee80b01df07d2070d63f6e3beffed509852ee9b202d3074028e491ae29307d1209a63f4e8101190a55a0119605fb7f8ccf002988218346f8224783173472a6dbc09b006a7c34173368355c14e000e0745beb36ff75faa7da59ab6ad6bc59a8a366a0196d71801b992c0141e0749b77b374d6ea57aff3c8201056843d8360ed2aad3a196c9853bd09855c0bf61b88ed6d0ae39b939b50c811a0801a0b922920964158166cdf061873b714160a59d275851550ebd3b70985aa0d980df015e2f01c4403a64fc526d8855c089c6e73dde67fa2055d4ec0b309a6bf6682b30756b750a6aac1a194cd826f548502cff2cc51615202dfe499a3c2040d95115427b098678eca10941548c1385cae702ccfdc141c3a1fa63871c2b23c735352383265842f38bcaa61700b253a228c85e84c80613944619b3c735292ce48592205be79e6a428d982c33c73524ac0826179e694a450527aa232815979e694a87c70284dcd6e9d39a51a58b8f85e8cafeb7e94dadc1878b18b0bc62e66329b7592118e52095c2d64609a4901e326ca500b9f2f2e64e0bd3886ab9b198ab03650a464336c01614db1199a5a2f2957363e516c700c4ab014802e19ac5e2ab4c428523837c3919b10e9c965f50295a24431e2e7c42afc36e26b5551526509887f68b1a4187d4de19d42d5a2127a4f88583e2a103ba5a16b642d159c97938168569d307553c07c06248be6f6c555a29a67de31dfd292a5a35c14a9ef89d5932b1c252acf8b67e5eb88f0d174b83b6d779235e76c11da62570632835c68b690dec7d651d7e6bbb770ada23c5b8625351c71020a14153fdc968012e10967c30a4e70e5d67587352c1dc09030838aeee551591d5e9d0e5fa2b877d699ea9440504e70f1ec919a665f7ba2e6427d349a3df7d36f486d5abf91dc17acc146e69cb77abba56f2453d7f2814eb8bbbb9c5fbbd6a0164cbbeb4f7fe30881e97fdddd4d4126500ba6ddddf36beefba63b976e77eab19c59cc358be1ae4d170c05d875ca18ed6ac10e8459c15eedbe3a6e76b77fda22b7b58c66952c9fb43823ec334ba21d98a565e43617d29d79e10d0db24b090ca64f678f6d19b58c5862d4ec691f412e2d6efe0972fb7bb591f25c482e2456d30deebb9072df71f6d4bf9eabfdd943bd2372bf8dd4a4e13fa79074689ced266db1dada32ca9f594db3a71fcc01d32f2d0e9c2ec694c018be3969388e114d671651d47c66c87496b3e9053abb4ca93cb1c8eedfe1c541f292ef540eea3e220a5720b0cd33f7848a6cc413aa5cf54409afb3d5499c7b52c48767ffe5997be2432e6b5149f800dd19a6f881682b2a7fb41f37bdb2e58812df543f1119b8e556c672746470c9f5ef1228b93e5e9243aeff3514c47cb250e2faa06dd3cacbdd36a1905301c472d5729331a3081864c83024e1e4490b26cc5c0b49a8402ad7878542b55620ac704186297dfdf438a9cafdd89630a348e2c8a889124b4dd4308ba0228514554c95e0852427185cd62ee172810440b95f0ce3420fe1a57476ef0da9941e7537f140af4e1add96d2a731c1f4839c8edd0da94420b88de29cc784f99367ad064d12347b6c8d3335bc1ea991153c8f28f528ce7e498deec5f8b3eb781487f36e259eb5eeb5a7d3d4c8976a58a70b958c6679b7f3e1b16e97f355236aa463916a92f84b4e995c359d6c81ba00fd3ecef0e90214a06dd593ea9ae5b14f95605b6302511f74f1e02a835feb06a2dc3d826ab486aae743f366d88a85ca6b9247d550d7ed795d3554355445d4fed5eac565569cdc01f10075cd044006a021c4962c5e77818280808258fb03a86d2dac826ce4e8e163021e7c80cbf58578f966fd70f2bc2006bb00f56954ad45951e017905e64f0ecf7efd5a6bd1a54bcd64a951dbe6ad3e4dba3bea03d5cf519ba6c5de65b5beb06bdc4349be3f9b341a80336d0ea8254fae5e7acc9efaac1b9b02dffeb995d25a9f66bb5a6b73818bc0043cf8118408084598727d4ad474861fc7a8520bca37bf99db281138d221109cc73e2c0473b27e765e37821611108a502444165fcb7aea758eb3326bec74528087d4cc8465a44dce53026c23f04348bf05adfd2f7b4e337da6260a7581d099ffa03839674394fc39f8350986a28be257980366e391b54e869014706720200394404040b1d9a4b181c799b62193c7bec5c9e5b4c2c93484d7b422db9990d9639f09c65d03bfdab7d55d61fb4e04044ad442a8c0f66353e0725ad9ae034148f7f44848dbbca122b61d222cd93e4d629f2ab14f8bfa4796edd32547d922b5cd6ff6afd701d920b7218912b3dd481fc4b1fef18f7221f9a6f350df51dfd2ee4f1da62875f7da6856b1598e4ecda74cee9f01d45fc3c6f5ba09c47e255fa7d6586ce79e5fb7d6da3bdfeb70a5d7b9b4bc5ab69e55fbe9dd0e1dadefc8d97afb1e597acffaaf6b3d0d3b6879dfeabebdb78ffbc77b1a76d0bdd775f5464581c82f01aaa0c129812ab171426717a48fcaf5e1852d47586062c60a11e80ce0ca14940057a84822b7c83377e569892f366974fecb6a7dd9d3b2f97d7f05d80192b1d963bf622177bc0e12f1c6da16043afd890f870ba618bcb6d67e62b2a870f7df5a59647bed26dc68be397f6a9d351dfb5d9bd6da9c6a6b9d916dbbced6dc55ef8ebc1d0af529f81d59d6c8ddc39cc031cff3bc32488d6cbfeb0e8cf54f07822008fe478260ac6b20e8fdbd247dd0f33c32488d6c83d4c8958c7df7d4d5cf7adec531029735976d85acad23e8d9ce5cbdfaf6bb2edf1b56845cdfeaf07a64567fbea51df568cfa89d5febbdd7c9d95d85238569cd07e86fd7f65eb2c96a23a8a3d5876f5605f7126e1a15dcf44b9213b314839a9c98a39c9825772ad7af415dab4d9492dd94613879c2f2a443e1cf4b34698c524c1b1daa4972ad23e4fa73fa9a4923fc4ac972f6b9a4463c928cdcf6ce53ddc6005a8d72c55101269250dfe74ddef4516f72a7efabaa2dd615c3bf5d55d5e4d4c5c13815529a99660aaa2a57307e257a3d556bad7f9f4255fa5e47a47f28adb29ab92b4999fa902371221b0ab1429246adaa925481e095216a491e5549aa925425a95252bbc96d3d2a07b3a7fe8b29261459e2d9d76a3e3ed9890a9794eaa7cbf5bfa6aaaa493b2b5b55bbc9e949f43ad1eb685593f75d53f3d42ffbaaabbc74a4dc5248566989894caed956ab727d2fea42212b45c56ea251a78ee47146aa09cb19a9335267a4ce4c356ea4d9531fc6045328a8dc51ce53bf8a6437d6a28a6b9efa544ddb9c4cf3d4cfc9d1d1912163c68c1ad9a33c9242e5fa1c4449e5fa947447ea5aadb552814b4ae5ee52e606548a6a50bde44aa4a8da2a58c68c253c85e8dfd921b59abeea2aeab8491da7a406350f1698c719a89fd29bbca9ad3a0d525fb9cd91ae5a0929c98ad6eb728a70c575adf258814b6fb2148cf8de8454ba54ff941d959dfc49a9f6adbe4725e58eeaab2db97e4bb90d49941e7275a4fa342fb8be0f4d1adfd7efab56d33f9e285e516489624b143f51044531144551145ffcfad48aa6b9628557a4344aa7ce80a9ef792b14594af2380345ada567a0ce40d1cc630aab22fd53adb523082e2eb89c69887864914e04bd900130153a924ad10d363035e842a1a2e613d5c90b735016d82dd03fb082a00dc14e64b158e2fda0be9748fd2294bef85df874ecbc4e1c6d74ad766117de1c1da51ea5975216a52d4a3f4a414a434a6bcc9efaad11c8a76b35c8c6a441ab84e60f3d336bf52bbd4113556718606ec0813fc0dc8052d11a93862d1390eb06b9ca00e7fd5c59b9ac1ee5364ad53c75d2f02e5d738fa21bf8115383fad5bf34919dc44970e951376af6e4ccc460ef123573a9d953efd0eca9b48a5275adbe0552f55dcaa33ecf033d2ff43cd1f35c9e873defe57930cfeb4827ae7fb7b9488fea19751310022ee79c73d23a67bbbb7bcf39a7e7d017d0c0650a939a12ece0728289aa48aa367575525a1ab960770fe2ee1e7773aabbf7c052a5aba1ec4f952ad88db5873aaafba1d13bcaa8a33af0c5825b75ef462398b16da9c9aadf1d59ed38676dc24bc4901283861851622c99704215363042b899e2668a9b29a898c215851a1c1a709670a4e05099bab991624d1a5c028e0d385370ace05ca1b55237e29f08fac8ca9fcb150a552cd89f3aae01fb53217f75532155956f0a86c384dd66845825c25456c99715b4ea602854bdde8442de82253ae9210e965115ac3cfbc77d522ac56b9d010598fa90110b03463f8c7c9760fa38dd90bfbab72cf2860e53a82c53db68086c53ff383dd928dbc582b9c9fd964cffcc1cd352eeb756acdbb5becf3139f5cffb9a790fa4ebc81b0beab6feb49fe67596c9f34c68ba37b7fed953eecfd1a922df5869faa15ee74c6e6b7d3ff53cef193ae9047ca6e6614a22fa1bf84ec02f2d937fb4368ff79d0e8fbc0d228952da2c9e726b4412a5923547bff39ec04b3e7a580e66747bedbebb6dd75da36bf308fc853940181a1a0a2137b9a6fe4d03957b1882295b0e7af44ff8f39f66c8d0a9cd82be1f976d365fe4ed1f9b87fd476dbe24f225915abb061b4b9ba7b0af31191d63b2fb35c3deab42f2ad3546d249c93208586bd7b1eeb39e8ef759235da21ad04bcedb01a5815eca743b9a59acb10b720b7e3786ffc23133f833142a89d4fc9645af6b047275dcb7ffddd17bb2a4fffddcc02c8d10a9b47b853f9794224ddb778210550471250d991d6efd5469da6c84c8f2030d5688a6aedcfa29d3b4cda862c18a2b23905005935b3f6d9a3623374c81e40a698d089680ba35ae79ba6849d79250a2aef9681f37df48da875c86b9a44837230d47569069f2848911dcbc02917dcbd05576f7fa1ec49f88b514056064cc7239238c0f61723f86aa92fb3f6726f7d79eb2e47e9f1e5af06148a881baad1801a722f19f4ce66efe1888a4ec3f7f2893fd59b12b8a8861108c01e57838e1d61faa10bf844230c1a585ec8fb95065ff2e14f299b5dd4aaf23a80bb79c2f973a4e52b27ff5bf44d97f0643f61db2c85ec3ed3485ec5754c92ebb7935e13683005384116272ffcc881548d570c4098c4822d43e256d770e841163c2131713c824716b1c9ed00ca9194325835285c2c204b9df4605ebcc0c2eff7dc83a3905d9bd646fba22bb0e3c64f7c071db8cc80085104c9058811065a0aa0f5988c9fe36daf6ba4d314f6bb0e060421216656efe9f67af23d525e80ed3aeeebf4454c9fd58044518e52e624dee2e63725b596a4ba2d572981378fe785fb6debbad56cbdd672ba8ebfcdbbae39df792b7b3d567ee50baf23b6a64a5260d03e47eca84dae8508f30abc1a7e4fe494928936e508fb45ad76bfdfd3c185b70498dc46f5a47f64062e43c4d955e8f3f8a0fd78b2f8aff7a1fe2bfc822513ad187f858741989a27fe9c3237c0ff4fe8380190cc3efc6d2a72c4b6f02b9fbee73f7e1b88122f96bd5fc6dc0f3f7ddd839dde89ad660245d9bd96d5d53c9943ba76eec9ecaaea923bba7a6ae29777fa704d53575fddd539775c83041c28a841ba44e30a20406290a27122cf9b2c4ad9de6aeab3f7604e95f62448d7cbc5160bb56984070d7c8b9a3a43c289ee57c55a243513e2210e3d6ff41ff8fb67dbf901839874355ee2fd2b6d984a42b7590031f13f8800ad8fe4e825f47204edb41ffbef7b52cfd3940737dfbde8de054833f28478ffe08f41498222088e26f9da479ffacbf8e3a5d5b823f0305f5e7e83f725a420a0206207a30e2d6519c4c88923bc1ea2804374d9c5c795265c4101063c210a1e15245d465cc0f238e9a2cc1c2e5a84b03aea84880aae289243810d65869c221891f982882023ec070c3d59222a69cb8f5f7c3e0017f76bc4f60d00cddfa8d5839018b2ba4584db972c2140d3810b1821174b872c32d0bfcb957182169e8362fee9f755cbef9013c73382cc9337703159967ee86abecc1073f82dc209567539eb91b8ab014dc7a1831e0921ae1f079b3ff5a8d32c148c2e59cba1f595e8fb49ae52efbb3debb52e87723110f3ef8419f3e81cb0945abebf8de23699aae51abae519a8ece499af7337f37be4b93688204cb9416355f6cf0a065861dc48c708212dce853a849e3cca4d1d49462597acad4c91b9d3b496e9a699249a3337d7a353471e02f98f5ae2f6952a61ca81988eb594f9f52d6909aab3456555464a6c04875899a4d358066f8dc7ffdf79f8cecff1a67f3cc9cecff8dde7f9fc71a4bd6bb3e30fbe87acff578f4bca72ef283d1832c98a6c39ff6fdcc1f8963388a284f0c2165a5829598215c50a086490a31b480c28d7e38ce40183de01952b03f0c1f28656a1e67b272266ac564459948c0d389872b2bb460041063442872840a1aa613887095c48db23868dbebe9b7155c06a99189748d0ae95af37c80c3af1a0c0c51c50f67741801949a0c5744408108b488c0cc8d921449d7a88d12f50774fa644aebcfd08325e00e4456477448b2c30e5a44a0227a62aa4252c48d3e65ea9e3e08413ef0a06bf455c09f4bca94e933d1a769fb004d0e659c388164872e373a9740f383922b1c9c54f0e446491612dcd92a59b1722204294841654405252c61d1021aa32c8e0460ca92a1a32a67a880a289267468a1890a5a947cb9d1f7e0879069bb400c493cdc3064c50b4737fa204cdbdc925425a60c0b564426681cee1b1f3050ca9df33090300b6465ea6369712eb8b8b0128624f835d431cb6427bf9c49050b65863ac4c193777050fea319c526c63743b3a78ffa8786346984b5ebae2eae664f3b79f1826c9a51a794fd4bf0bf16c9d2e2b2f8de585a1c914d427ae90f86ef63e901abec202e771d59fa833e26e99a2876207e481265f17bf0c5d81396e54f47e76f07d73fa58c28f78e929c7336f8614ad30c71ece052c051fa01861a8e24396da940519330446c913202196efd1f0c1bb0955dc9ae5c284d1ab6dcff53fd4e450656b4420d6f745d28018715ed14ed2879241f37b1fe6175a0cec7fac03183fcdd8c30c09b31848d3b453b4a32c837a37833ba72a763e5b67f6a9eeefe66fca787fa281024ea82cb7f9215b9ed0511ce6d34a316fe7e1d2b590bcb74ac76947670df658a8af585b198188bb962311c8bbd6231582c66138bc562b17fea5aff473d5497977a30b41b363bc9f97f828a9a3440efe7dce0a7a806fdde7fac714749d7c21bb5bef8f03b7207277ed3aefb3b709451037b76dd23b9cd05f90263dabd8f94efc5780a7f6f897229bb928de58e92dc8f77703b4b3e973b38562e59b9fca74ca3c5889a3dddf58fcbc8c864525da35456d5351955d75a02ad2a7670b4efdf29da41721b12115c5964914516b7174a3b4c9386cdf7f33c4d1ab1f0cb2fefac303708bff1ef5c991b74df3b228c063d1465e3f737a3f73623f8dd3c6d74ddba11f63623f8df288b8d19641fc3910337cbfe9b757a4f3a3dd13fa83b0c923040ea9a4c06fb6f043f36cac82f467bf34627447fa37d370ee93ec4e0a86b4d04e7ee6d98c018246180c494fb5d0881cb1d5c89c151eea719e16426981af4e78cb224a34cc9ce50f7cb98644db228d993db5e0ce59621754d461453b3d3bf83db51d23fe1f7c3c62144f00786a20bbf60fe3135b2211992eeba17dfb9f82ee7bbaeeb9eccf853e353cd1e26c0ff6eaa7f6ccca01d255dabed14cd9e27d33fe0a4117e3f38cef011836bf80e1006b8d9e3a313daff94db68e40ece799a664f6d08bf18692e72461a91f3943215723f1ecb1d1b727f6b2cbf5cfed45f1951b9b3a4dcc1022b029732a95c43f0825f7ce9b27259b5a85c45b421e7695155245a54ffb518e78d367e2e93c23229999493374437485c4c619b915490fab718e7eda3218ecedd47431fb36ff133f4d1bae17c50b718693e5afc8b7f4116d1c0882c439f8b2330f8a5cd762af7bb40ca02dbee69435deb2bbb025b474634a470072782bfe3d43fe54f89e24ed30e6ea76867c98ed10ed24ed2ced20ed30e969d2711ec7eca6d39dfff546e73f135c4f1b9235d20d198c207d275240d09cbec69d9551896b2ab9ba4fe2977706128bb4242d4b69b9b25374637473748374ae10ece6d396118862f646aaedcb6837b41cee6d9c13979f1e50e2ef7d394dcf6e2fb69491f4da96bb4a417a34c4df3843afc6f8646999aae350d8976d4b5965d758db6a4d4b57e9a5b4f33729becea622c9bdd28710106b7be945db5a474ce58d28c723f8d742123eafc71c65991f3f4cfc6a1d66d86935df5b8e124072dc679bb57e0cfa5ec4a76d57f33d47f43346d3c529876481a13c50c50b7fe1bdcb4091992018a0a9ca678a1e2d68f8192ac8572dfd479b7b92dfc39631a189165e8363f1ce95217c03ecf51f3d85dbdb7bf9b5e67efddab7fc91f5dab6f0303cd1ed9911f04c97182cb5909eacce0c0079e3ad5a9f8a60e134ef97e338181f4df2ffbe75ffa9d63224d76c7ff7db3fa6cca2cb2acfda009b89c513ddc46a479bca7b9964162f9fe7c226976501d364236240b070825112e6753ec5db9269064fa2d25197f9361a24b7e3decbd1e3e22d03fe1f8198f9f615f5e1bd6bd174696176771da7a4c1ecf7bdce01545ef43fbfafea0c6f9b6c6b2c57a1bb20c926d9e359634c770c0fe861d60b27e797fbecd08e4924162b9f5dfb73ea8c31df7c6ebfb3dcff33cef09483fec5db08f81a009d81fbbad870d0c13f6d48667d48ed7c36686c1469a0ed8df87b170d8bc6b669b7176cde675b0fef52c1bfcad7f7d90c3c61739bb86c570c41a88e53248fec8d658c66afffcfdecbd77bdeb5defeff5bcbf200d7150107fe0ed9ffb9f0e1576f276cddf136928f5d17c749126aff3d037729befea0641d3ce84cf7d4c14263e46856aab6d14c69430e64815eece7212e3442e6b9e3931632e4b4c187c291d71cc7052314e62bacc2bcece06258894802197374f5de5e98212455d37e7b4b1eeddbbb6ebba8e65aff5acb59dbbfbec3a1bebac25693aca6cc9fb4f7cf373f5a4d1794ddeb1d6d14883a0bbb57c93e2ea9dfe7529d34c734d3865cbc3925787377194679e39d4f3bcbfdfdffdde7baeffe978e9b0b53b68aee4f5114446ee7e0a91d77728c2ff73cd9f3adfb47980814c3a94e7cf9e29802eb1fee9ce7fcb3f346f8902a5539b59a80b6690d821334ae81599283258c82091514266684cd518a9314e506bd218e59944802454b8f2dce2240acd99a932b3448e75b7573361cc7031e34367264bb7846ae9cbfc10087727fa392a273447e5029592ea95ca8425aa9c2a8425d4e4d8a78415a2cb2da1438ed1dc1250686e09159610a1cb3367664d8e758d7e224dc797e77b9507ef7699a2945e961394bb3babb5c4d402adb5b6f51d1d799ee77da0123238168bc502c33248d47cdff785621aaa300c43d145864c6e4c97dc981b4811a90c993269725796a47253544938e5d925cf1c1256f97bbd5e2ed707b57539765775d763f276edf57a1a0abdc80b052e2992952cf6f3b18d65d7cb45969d5d2f7a11776d0004654e7e91df359bd3b5a744fd53df3eb682711245d420319579f2cc21b194bfaf411ae2089f92658d4c91dc863379e88f993ea58f646fb3873ad17422d25503a6140441b0eb404ac37e2a1b6323d68269feb4286a68e84673b207c5f1c0650b6ee806fbf059285ca1a1cb910c6b80b0c28894125448e3240818c28881bd93652c833fa78d124d1efb7e3ffc22a2c2a2dffb224b8c84c9aec260d7c0bf5d03dfe6c511770d7c1f5d3560f0bdefbef5ae91f51fd3eb5d6f5fafafb5e2ff3049d3815f7c1c989c65933152d6d2ff75ff7bd768247faf3ad2a1492df8228b74cdd276745fbfd30192fef53dd2f53407b98fe1bb28146ce64f88dba8fd26f6a9929d448c09e104228022044a6eb8591923dc40c512282741b870b3b1fcfa6f2c63f9fbeffdebf7cd307b1924bbc29fa1eb83da759c2c5d1fbac6ef29d2ebedebbba7ddf0175fc7ec9a8e1924bf1e93b30c127b8d652c86032e2951e85127c231e759c0a58e4e4d86cf0ca01a4136724ca07bdfe12f3e1e813849dbf17ad7fb8b244dc7eb5d2f3e7e1ade7861fcf45d1fe42e9ab4f4bdbaf6bdbb9720c8a2ebc1b1a4a2ebf1fbb84435f017472117e98f47d01f9c99222529b56ddeaccbf54e9646b2f83ebac6d208f81f055d22b9012f83df8be3170a85a18fde7fdd3d2bc95b2271cc8c85a42ea4eefccefbde5a6bedd8fd57e91d67be351f7f20248e72796ffff8d77cdc86801f6e404c3098609b27ee7754f8dd66953c68ba77159e5d6bb5c8d2b2c6723a79e453f7af0e8e45a8132f6091ba8100245a21c92d4afdcf2ab96d9c3cfe3cd9dddd6df3c6d4949fdedf2a5926db346df3cb0c3be0d0020b69aa90e0e61d8881892928275015adb9f9571b758f34968281f83743a0f99e97324b82d50478f6f46bf4bb09124a9048e21dd076d0dc4fa90838229a6e309e708ea79c96264323104af67818597039a97edc5bab8571ca9e0b83257bcd6d399cc7df6b3ed70acf1c18353907264d76c70087279cdb323079fc9fc8ee55647f7a24fbcfdbc5e17eb8d7dc366f3e40d967d38fd9e37fb1c04f71b4881af953249f3d3ec4fe10223753124c0dfc89cc322dc1ec71929260d6dc568a6bbd78a0c1627349713ffc857818a910604833258c0a476efe7468da2cb0816a0616a4a07242959b0b691e7f3b0a09d235fff0072d83a9d277edb3bee669c96f8116775f330dfc993fdacf9fe9f44f28fefc6fe6369d991a4c75808272d45828000aca018e17040acad11a65744d072828878caee99c001494a3ba0f50508e4e04768606fbf74f1a4c7e4fc09f9b52dc45013fcee2fa4789ef00bbd6d4e22cce1659238b34c30eb4f0408482965c13dc00608001062835a03005092c13f0e7ee9f65abe405470a5bc7787e8c7777f77677f739e79cb66bf2b9bb539c03a624f8d700498061696607e17d2dd835259cb668eb5437f97efe9c550acc0e5080497a018c922f55d0ba4e160a46dec397a95cfa7c791a12c1bc5f53819b6eeb0b16d0eb22d697185eddd4fdf202686d8480c9fb12c28b6aa304abce0b950bb7618292f522a66b22291b445315fb5c2f40c428cbc60957cd332ff562830db69184a879e66d91c996c1b33c735e9a8cf182bb20cf1c5397a6a39c17125ab5b6d15bd33e422a83fb43ab6f83dab10d10b8976615cfeaecbf5667b3daacfa58ede0ea26ddbde4ee2362399420fb577f9c4398ec0f80d90a385aa2144186428ebbe71ca3e4625626835c823d54711221fb8fb886f1fbe76b8d5c8247fcf0042a2afbc70885bcdb498005971618476160030c3195fd5f50ba068a6c4b921cf75a5114237240a28814acd0326ad088b42c0e041031d0665d9c7e035145bf8b990a210ed29650c8675748e13f2dea06b98cf9e33459b2cf6af784420d165698400a28b00cdd3a888613ca4049e128055b6ecd25771637e46e6c05e32977d7a189ec5c6eeefe43e012f4e0831f1dcb6192fb865b67c1a2c504b93f160af58b2c4a60d142982a5d62b8cd15a4b0454c530aa098a212c20a2a2f9b2d5d56c8fd30cf9b8da68419d60cb14488352ac4503aaaa2ca85114849ba7954f610ac64bfb9b997146eb11c1d1933b848310410eff30222b530b1057785042c4c31bf6071f913c15f86b8050047e172ff2c6a05b9bf26040e412491fb5d3e51986822810a0a5640418559a6851c9916aca810a54c0d228aeea8163d27bb8e0d63ff99ffe766c8fe6128e4b52c4194d0821568aa9849e15542a353a8742cd86541eb10d58800000050009315000020100c088442a14012a7999c2a1f14800b6fa048645830964863390ec3280c8218638c310620408031863043434402c33265a1026506f4513121c7a4b673f8b98409390a73d8e814505117f4ffe9525ba2bb3a1b8a9fba21dbbc8c8ba3f675af286effc83c202b53932d838608ab452718eea39472dc0e6c84cbeb6de9ac22293bfd4976df66d57deb20d653ef227906692ebece0f394db01255f936e942f48a1259e5d3cb589836ce63d5e3aba085e759857f6d2b9107de50a4c1432ad0ba21c9cbb8cf9d26bec823ad3bab16abe382e9107ff39f42149106ced47ed2fd796b283526f93c0b7cb73bcd142298c72408d04ef2c5e47b1c05ded066983532f6ab14177a75d22ae04412fe56012fb3c534ac9587aa68d44f56638cf8c4581037a6be182d9dc56fae068eeb2c5f067afa0710c73e369a81de332a53e31a592f482b74cd87114ec47666cb5281272771c7182a48b9b8149cb7a6c49dd4fef640c9b77bcda36d18205ce527648f9085c3bde17c5dfdcf5f41c950273d2b41da66573631e21b503841c8b21d6e2d53388d5322b223069c83dfe33db156342717927192d4443f09a4ffd62cf9c49e62817472f37516dd4dd8ebf8ea01f021a8c14349e29199200d3aeeedea34624a50b8b0fe65b541cca8d5540697aadcf893c6017e17a0000bc453f00c03db00330d27a62cb06be78528a1c5a6bbc7cf360809e355c22542096e6e17e4fcd51b9cdcb5201bd158a0ff48c093b5c80d977b3c17e57378ca4d55e8a58d1dc0f1945c887c5d01e6de47e6108dcccf25c36fb1fb8b3e3bdcbbe3aa7ca8006c1523f93a5c1e2ef9d6962a569fd74b277fe783d1e9b2908e7b162f1f3cc1e9a8fda7fb1307c2df2a207d628e8cc4989e028e30c7e46b0204415d06816f5de33188e3f5b10390dd11e390015fb00e3aaeffb2ad56eb12329db9f4ff28c32d9da2666775a8e623e6795fa9f1cfa894f459547ca53748432fe36d823ee572a5c7996f7692e9d5d88f514d440d9dacf3fd6f0746d0a6d5e5af2c39effb1d0a4d9222773f5b8637bee4ab65e5e4c3909ac4f52697986dbd33c9a7262944da2e20c0e6cfe9cb595ab1e3794b3091e6a8d0b2efede981272fe325833b622df6a95fb9fad4ae90761417156a3eb2203fce571494d938789eae152b2bec5bb0cc16f6db16d880dd20e3d78120f174b0a1aa22607695b27d2bcfa0719865e1750026b8e08fcf1bd33f81bf81f130a33f77ecd8edaa44b30e281456b66d4fcbc61c01c0ed52b126ed6b88e31b509f2cdf3bd2abd8c45c1ac85bc716e51bc3e50dc7a816dd24e7cbba8fb7bd3bea9894338f65a3a5997ace1389898c3a35a60d54d52349ee96e6a734b5bdbc64636a3bc8c6e0310a1a744252fb1004a1cbae963e8e0c0e93ff430d11225da4bce2278343e1050037d5945d9d77677886703ced7560997df90629a285deba303bf7cb8195cdb55c095d060ef3ede2908cd6621202514842a493275ed281f15a9da3190f7c541768ad704e05c141dc2db29fce574ef56f69f058eb1da6c4b2fbd7522350de452c9720917d195b5978778af83ad09b64285c39b11646420c59c40678d7a854f527b135342529acaa9e2e9969d244d4c9af2438d7d9d06343549a66aabe34565d61d76d3a09551d6204774868c76d6a829fa22c149dc7750662fd6a91b4a86774c55bcaf94e90bddf53b9627ac4ec89980e57b96245782e04a83c612ce6a58cc2268332c38143286648626045cb15b50e024613abba246f6b5aaea409269cf9548ff00266a01926a912796eb07d34c261e482d90b455a90e3a4b5c395a6241a8b1b1069648eaaec39382dca9c4da704fb812eebb8a0e9e65553b5ceb348a468eb96f951e84379805ad915c1c5a5d85ae3b9e9047a9659ebbfd74221f56b2d8806a5b8926c2f455b1fb1f87055eeb5d57436c733ba13698dc3584df51dfc73f7c2bd69b8970d07e65cb86ceea8eced47659f0aa456c61764a9efbd549c3fa345dc7d1d00f5a668765a68b642b3c017a379391fc7746e5bf3ffed4db77b76abb7db37bfede9b6dedfea769466fbdcce1041fa0dbf7a0513d26dd74f520be670563af5a95c13d0deb881124a0ae306b353058cce81da04c9d5532275128d593000bb47238007fa03f3c35c346fc00dbe3fe3c2528a09ebf25aedc535652a5a9550be85f5715eb9c42aff4baf515314d0185a31174a8c88ee3499c043a70d5305e45f7b547aa49c064c68c50c89a30e2c99d4c0437376a9175a02140121ac2a14d11fee713e8ae2095bd8edec1b290e334be514a09cc9f902e5d8a8148e54d7d651ff19d139bfd32eaadf6d24d6c1ea8adc63a4d051191c77b48ecb7a8a13987f6c908ba0500a5b1549a93890e57eaf7a6df6a15ca0cbba09cc38adf746e021be79cdf26ae31dde90b6142bed4395d5686b286f1858cf2337f04593239da1b930c83a07e460548c23c576a611a5a4c56f529e293e17ed76a4019531914763a258335c3eac6ea287cb4f904d09eb86e587352b95e30f6b50a94d14f60fe7855526faffd8a63066cec0ba090e5d5a3dc9f78bfd3a1d2542132aa1fde31b41ff25f83162200e2363bd0396451d28e5ef8063971604080829467d03b16173d71b03612b2a5760a83be8675551f702cf0e905fab84f158022567865bd796ff45bbe3064a19ef7ae4ffa7c439e23aa1e3e02bdf5a1a5863e143edc961f24623ed31907ae911b0464aca2987deac33615407d7b80a3b17652a8b82988c9debb5172355dd404909a267e7b83eeb18e2ee012dc4cd741571a67c0873f6945f3c8703dd2e084115d260f890709e8728f2e0270e4c604041b3237e6112e2627fa51a9d6d4459e4113942064bda6d7f463673bce21a15014c9be3ea4bbd11b0651bc5287d9819197e67fe0f31317c95e28311859d5472b83be7d5a58c623994752cdb729b430d787c16bbe1b0ac2d5005c525565879760c02eba0945c6215722f82bac68a782a000cee1004e64c9a2ece2df0c6f099544fffe0b1019d0fcfc89d3956e3e02d18e8df68497823cb278a587fd843b9b15e7cd3f82661ba6531645d0caa20cb5e9b5d2b056fc28839f36e502375ba5deb954642df9501837524768e7719d436184389224c3f3dc24f07d082bcdb8376030e6323b9be8fcaf28720b2dcce0cd85fa0a0e20d44346bf51a662e0431bcd5e357499d486021dae0b814111aa81543017e2c2aefabe1d9608f579c4b20dc72b0f006f6163ae6813124354ed3db3fda0e9ec0a497adeb86914ef2a1e41cc5614a821463b1a0d4761441fa5b52d279ab126b472c53d8f08af0f5a50e380677b330352aaf6c849f0b140cc4cce6e959e5f96cf70626898daa603392e071cc5e430a619b21804896f9d9fff2eefb442ac9ec881d20652c466506986ed803e74b06aae10cc6f70d4afc63e78d3c7903a7a4f839768b5fbcf773c130a7a91596562363bd4eb609d9033792d839857378a48b8840f021b50cc23bc2d5a356e751f2ebb6ba2bd11e6116b0f804eee401aa5c2da7079dad966f8de9139bd130ba03d17d20878330fef7425867eda554d04e1f1d11d71f5511278bace513102aff660a7d4a314f952e593cddddd9af3ec88e4ea09c1953c943f2cd1498ae9e4a72d712569e0a56e64d8ee21d40153ec01cec9835035dc68c7a0a77cf63d9803b9a704a282013a6c1da38c18ccb70174ef9c1bf3d610e4a589a9c8e1738c538c6090e25ff0e4706f287b905867ed7bc876f8264703dc099b6b108af080f4bf67a934343b32d18720fa00ee176a9b7a46c64ff56d9848a3feed52779fa45cb152da0e0a3f007a8e43db8ab4673ff81aacc9f6598d8ca407fa9bd4a013188e11ff5e0faa1ad7c6c45685ff2379117999ca57343329a21a23321da8740d67d92feba2000c310e8f96aaed6f9b85ec581b5b2cdd1108468e16640154fda597fc92fc5b545eb6f53382822240dd5cd9d35e498e1fac9220574322670bd47bcfbf508e75db63b6332c15ff9765fa4c57b25a8ec3291eb07268ead32dcb2eb6696575972d1e049b422f65894b05d446589a4c24cc7703f5eaa17d746dcca77bb97ad48cfc27d21d8dcb35ab55967351154331a505a034c4efc6fb039a66bd6dbe34eb4757afbeee17c8f5a49b17cdf17ddf7a2bfb89c9d70b294de0d1e647008b4bdaf5ac9b8e1544876d26295a2ab0dda5cf96fadf79f29270042469aea52692383f94ff062ad9578f38f04820d9fb1c7bf1be958c55240c6114ca1f32f39318f8a7e76cacb86a372fac664a2ea4de4f2c7873029c57e8b7a26ab2d8a5a3384f43736f5db6d1d528b5a87fc67a66e1c8621c17117c2a39a22f4578bce443b483260522ef3d3f0091f400e7cf2ffa348dab6c22b2f17f1d9dce5025a42a19419b53f8d2c53f454061cc5f4d8501f0021951db94271f60fca45e2895263ee662b4690cb709b32e6aef1cbea5d226c681636c9166a203df36d3c12686c61e615286e95dd533baa14a9e41022969b38c8215a2e1243d681953c84daccb02fc39d018c531acfd49f6686e49e52f554368da6e850089389ecd16c3d579ce562cd6493428a4e36d3d967f81005be0b71ee1afb11d699c8a893654bf286fe6814402a3450f818c1d60a7fbf01cac2d28e684dd3542f1f951a3065248eed1ab4253d49c27a0fa99da312342c6242225d3de961c3a5643b2c498d0fdd682a4bf6504a8ae700a8c3cdca838e5a9375a6e54e77f79d37687507048f8ef875153b8e63ef7f49aa7c8623cc2c7dc8b532b87886071ed20abab520b2ad9d36d4dd567b2ae99548914635ec03eaec9e34df62aa1acbb7140d16aaa519d6611ab6bec925b051857a7f828142e6c8824b60ed4bff01eaa65794fc6a147e3befdd0017c4942b414e6c3ba8bd5ca2ecea52202f7303722ed082f1b2ba437f2074396cc1540c921b78c927d83d8cbf9bc017c96235c8acedecc8352788d535eeb38aaefc8642221e2aaf64ee7e99bb786036cd91372f98c88a774434514a181e8a380691625a106c5d5700e9b065aa53167b5f0edb2fb33b1804467ef0b8aa106d274330acdb999b598216045cfee3add4d066d6c14ccc5af0fe8526d2e119ec054214550afcde25c30284a25d91cf636ebc99b2810e09fbfbd1545b9d60672101a494ae3ac29f67cb31788edf904b446bd4ea109b2e6672e65d080c320439ecd9f85aaa0e470325e60dad834fdd13fbe22463c33bcc667239ddbf43bb6efe41c2f6aa54e61d7242f64bb48d9d914607bbe14b4016e8548b33e37a21c955369f18b4e2cd92ac5ea7f7a84328782b40a2f79fc7494876992680448e25085b128eb6109fa2cc17a1e8b6dd0bc4c9683b8d5e3938a19f85eba73a831d1067532d079d20829566bba4dc5f82fbcbd4292792726415a02053a6fa14d2e20179b8d6a5eb4b791ae1b7a24383eb01c64a232285765ebdab5d366b5102f432985dbf7a6d2186433b9c1887fb0c28bb0a416cc6cbd1e9e46b2b9e0ecc5f262270a3654937408b4710c9231e806c231afb70f9066dd78fc827fa1204027a797b7dda753f1099226a482165f0af0dbe831ee612fde006f66d124ba5f9878e16105df681e82e8fe170c03242211c46e240c188a804f7636b6bf799313c322708c34dc7f4b0f5cc11ab2cbdc91f84484fa896090ea150a6a89ee10f3e626f1c0e210b452b59e33b48e58ff4504b4f68f4a1cb21fe4d8e89f4333a8258527f5e62e5894de21df97bd68a718e3ccdde5d2846105c6bc1bb3ead06e6b60367f3b8a59711cfd1a4812a24897827e5c70776597b01e73f1f563c8327534e0d78026ad9ef06397a805b8c9b737aa20406a0eecba0fa9e53919bc33fe14d70057d69a063287fb9af50c4944133f28237124332c7894e831fb1d5c9574c690fa214e2774200419cc1d0d5a62cad9b59436755ea459e7078453954aac12b7887d8c7595debbe2be0851ef0eed7ca60762e4541a03fbcf34e256383da7b02b6c0695e7b60010a47a407d29d1eaf6e80205adb9a715da68b3e6b3aca67e0a5c3c67c4660c5995fc97a055e89c6924f917bf79f47374bf1a9040f8113183e8d34a0d7aa923625f10099dad82147a7b1f550efcdf170cea6df6b86bdc9f86ee9eca291773c98dcdb9077df83abffac533ecdbe4a5234e1ac729a259857503b0104967ae9fc84c69bc14e8e2f8f15dce23bd705cf64fef33eb0e0054a1fc952f08d20d2e830850c36b86047decf9dfca9734f6e3aa6b05c5fd4c87715a65655b6344e782373676ef18a1b7e4ca53b7c6718709a9ecb223bbd344ca5fe23f565f0ceab0e9d72714a5f743468aa5997409c0b423b459d023869990b66bb5ffd2dfc860330d50eefe965fb1788360de6a7474b5688ca7c5ef3ad55aa0caa795b27b02abe889b449610f7fff36ffeaa77964ee814ae2c19de26697272b0a4e3907c182c02b9c8ccbbbe7463e9d9777bf719522bdad2e1c48b963900b545f69081ab0f1803644c2c0da6ced0d24d6c342a37e1cb8a8ef66b99fdd21e0ea8d61fb82e309ffa96d1ea72d8619d54dceaf9fc3cd6ddac10bd96d5f300fb80841b746f0882edc8c2e4e45895642cc0d519b8f3802ecfcbd533b1c43cf253fdd97a8cf22f1da3b4e3c87db7aaa01ee796b7b68b3b5866e753ead501e77e7fae8113c97939967716ca6b8965c5939d5be42f5e7144f57f1d8738b22e66026daba8f1d2d7c23aba4ef71b7c69da894850c23a07ab718b71226c853114f27013a7c3ac38398029b2cd39ecb90877305da5e0a1152846d142d19f0825b64cf2c96b8e76291b1558f4b9d24a736e60bdc10c7de37f5a67c605ae4d83ab5b76b1145a94fb5ea56f37952499f103d0aac9a63b1956a85904ce55017637fe0c54ca29eff5e10b594055e94228512c62dc1e17ede3404ea62ac02d018b0000ba6f30a835431b2f0624f5508c33052800e18efa3a28bed1ef9f395dfd41acf460f436fdc59714613954dc2817c18045be1233ead8f8c2307effb163b71138918a3d9425528a209d1824323be9a95e8eb934654833113c53865f31abdd2d9f39cbe6199d30a2e01d118ed35d116c47da9318fab1bec80249e8c79cde7e79b9372aa800d53a3af77db2f41b8ebb197858579ee09011dff265a51ce09ba05ec0bafb293a3efe3721076f7c42e69148731c091500d4e6e2b8be41eed6b090fea795c39908b69be7be6e107a5fe1979f21290fa1dd5c849166b03be5215d3cabd72c6c5b317eb8c41760a21914ed3744140a9767bdc39f41901d5b6575e08404d2e90e9c89b10c6b28349466ec1c607e836c87aebf7501f2169ccaa065501ee4fe0bd771e5940ce29fff4626f69f84fa314fa1207516eece1f410eabbc44fc52f5d0524002b3ff0e53884ed5a32701bc7f5ae239d20205b3cf4f337b85f72c16647fd1aab3f0282a43f44c9209328049ec37ac6f79288828ad264b20bbad66dbfbfa515f3478304da589b2bc87f3e7a5171e8ecd6292fb5e3f5ca235d800a6bcd8e84129b072cbb614926bd77e37921222ca7bbc303a551908134f8be731517e6689036bc30b15e2527ae092fe99b1f7eb7549600bf42ea3093211bfe94dc101945d0a716f86eaaf0f433b5231e2c05ee251d3db21be694b3cc2bdd18ab9b0c4d9c07d0e219b04be7915cb226ac6eab88e03b058fb763a5b5b095b318d00e1cf399185489f21f1b97ef1f0c7a39aedb247fe57b6a42caadc988e07c96d89933e3afae496f89a62f2f34bc8a341491aec5fc1214ba6c5f413119669e1200ea87492c4f64a73f0a3ebfea912704d9755f19205b9efde0eacfea8c06abf2030818edde8cf040322f7b9f13afd37acbaf11d4b57ba7872063cc37a568219e5190b1cce9a2b8315a09365dbb025fd16607ab35b5a2d6255020b83452664561f6aa78fedce47208f8d2c390bfa1200e5dc3d98d3631a706274c1653193f118c612e2d9aba166ab990e3461eaf89671c8318df0b2973256fa42bb27793e0d175472f2de6251eb87adb04e359fb8d28be2d2223ab1296f081e19d8077cd4a8c103de70b2d23457be85a6946f5175dc580dbea7d4211ac3cf2d1a85350a34424eab79d1805e43eb297dd311ceef878a798dbc9431a0426b59dd5801208c9983294af7a3de9ca38b3ddf05379c94270310a1a4e8f5684afb36c1f62b80173d8fea6b21b3a35a61fc619a11a5ad8286a690dd45be8f55f41e863229e6b9998f70baccd21f2c4c0985c9d00ba7743a2d6e0414de8fc71072d4da6e01dadeea0c2ebaa215223985be2441e445505a7445138ba589f3de0fb2ad17a7f455086b4e31f365600574e40723ed45468a7a4f7e63b07f234707a3aa558726a990ce12bdc8a548351929ef08c22a4df8f5b6671cb39e49ccd6fd79a4f99e9d3de38a16bbe002e8a48c16ef57657544ac294d59721f748c43207a38e9a6ce89ad3134a9e34e329cf7aca082199e2f3642dadfa6c8b02dcb78b53bbc67ff22f69a5a9c148e728185aff253fe66b9bd2063978eb4f7cebb9d1021321f54992128ba02be065f59ae1bcffd0313dd9984a82748c2f349df868913827e81d7d695214f8cebeb9b990cdb2f35462d521796e9935dd176336b930aef4b0da18d3405a42473c27c424f74d1ba8f96d1298109e089ae5268e91dea199070011d721fb00350318448df466097ea9cc18464380587644d9b2b06e48c72287e638c87c585e9587703c462d916af58199c96d311cb344d0658b0a63e4ea59d41dacfc3b22004692eb1ab9cc3be6758913c07bf19e6c065072bd89e97ffcb82729385f496e029a1ba3ad317f81060c4263f39d83c1ea1c51561068f57f0231bbc52943309c5d3044332d564c97b7e9615b5184c87f9ea35a6103c4e094adac2f40a3c5e07960372e8099155b39f14508f30b9d7bcd8a324a52f39a4362eb43ed0962de84de6922b43d89c21186c460812e56a8a7e88a1f0629d1351d06e89dc08bd4a70b3a8c58230f6de87126529cb92930e99a48ca5875c69abfea4ef29470464feedcc910db800313cc052994685083e25716b426c77fa492319a8d18a5c8c988b0892a05cbbc581f235507142c45590b060b4aec1aef8e6e10342f6e491f63675f99e41bd19ce0b736c71553461efe88d8689a8de56996058bb6eb4579612b3daa0d985d1b212a5d3b52b21079df42cfb027063695d9e1010816a3cf04168042c8446260b402daf350ff4d85d7334fbb588f6ab5940b2e734ce370341906b5a8ee8c1209dc645eff9124886d7d5f99277b3549ddb53d263d3a6450e9075500f1d69e350f4e925a7ef1539e4fc416a10abdc42afcb0fafccd3d7b4aaa3d81cfd345d7f8028272d42f6452ac5a38aa74521075def9b7bd1d1df2bec134ff2acf286e2612ec5e52e01175beb8c2d262298b80a8464ebedabcf2d258e2cfce71dfe1706a56ac92c912ecfa23c813439e18f03174f1841df017ef3cf78fd93b1a3a909cdc738ce5288a35286ee4a33482e6affbb6b0acf6690efdeec2de0eb2d30a74cccae98e821a1588e66cac2ce44001a99001ef8d822b5b2944c40a6d7e910773f1c85a62cf92592d2e2f9bd0a1962bf6c04d280904d8357cd58cbee03ae67cd054b33e6a5c5bc6d96491598d07bfd8771e9bf3c9aec0813804f596df27fe45981b1980527f4e52d36d09c7acf8213909424bde1aa9b13a880f3b997e3ba3ef4d89c8909269ff1ed3f67d80d73a511ea51e9e103412867f48e7671d0efb9911cb431bb49ef530a307c9a290dc1523040aeb1459f2ad1871d5f73674100f2ca61c5299f466bc843208de21eac1f86367abf1c3d26f8450402bcfd1d36b16f0d82b1c77cc2810e857fde0bbe7ba449f02eb935351c5de40319ba129ba092156ffc6c8971ca6c3e3c010e3f58477e80fa7c9375a3339e91ccde3a6e5e18d5b8376fbc7ddef0ed933447c914d109e7b0b73ebf7aa7f93f0feae89be6568e09073c20ba0f85246253482a283519aa9f57fdbc4450ca96e40c73e3bb01ac3e9e8f05c9e654a487ed2ac8d6fb159599897b3fd939018bdefa4fdfcbb8b4584845e21ac8d6162af82b5513b054488941fe4495fb62fde5879decbe4f046e37397335ec9350248d63704ec0fde710522813a4fa7b4f420f6ba4f1ebd493149a9ad4c061859dbe0a564abda69d3f8090812975481dff1db1fd5799040f82c963631726f07466700b740aec80e3b963239e34444316d70ecbd73635a0c6acfa903c5b25b623a7d910e23f573c523548d594c5723ad939f19a8ec18db7497bc38bf1ef0585710353f9fedf5d2e8c645d6e240de115c31b215f60679b93a54fa98029accf0bcc38db5fdab1548e7866075f609458f8ac2df95de90a9a4f9f80a98baef87e8175fcc76cfd9b853da4cd5e7afac5aad7b9089015b9f4b86a5a26c94cbddcb7a4fb54afff1966b1c084ca0294390b21469e6d7b033c3a6b5fba15b01cbb5897643b90554f58a1552de81b1cebfd438e4cef143ef67a820afe07625ac52408738a4d89744bb9483105b30bc2fdee6c76ba4f30fce3011d58a34a10802db74d5c1b3efcb1c539bf417da4b8011b43ba5d2cb043c7c0a6036aee6e5fa8d0a85ada94337e37949d34593788ab27ae9b5f67264c01deec1edc7f0aab8ae616e48d3b0d567c8093c182e1d858a0605f6d409facc6e9556342812242641bf9d2292f364f3e1fb89bc29eb6a63b1cf116b84222632b0d717f3e20d5117eaae57151ed7a15ae710bcd6b9529b13dd2ec7a891d481d77082e02a3b75fda31ec0be93a63d7c907331ef102f98a7e391e08dc0512fb32471be2c4933e68770ddf603e3f7e07f658d2d9353545ab76aea76d10fe624b23259cb07e0c4969ebb30cb87f07ab0257ddc40474daad91c8e4ae0d76451f18db4e88a76733801722721f4032864a0ff814095e0e606c41eb26693ec442318de4e9cb76bb90a4b65697b2983924bc2db7ceab0ca5fa83cdf0723358de0a971bc3c24db0b41d2ccad75caaeeffc5879ebc73b3100fdc6d0b502ae32d7645b6f7d9445702df64a2c6781c04b82eb63494c73e5f55b4c5245c4c9d64683e4c32340bd5f32d97e89c8d20fd9c75ad4e85cf3ce958f613e1bb63d39539af74f95145ed991d35de9e0a6c679f80d9014cda23a3c691680f04a12b89cd11cac78c6ac8f34046aaf5bd1eeaed87b8ff47bd0ee479da3557449e2b890757f7fe5cad2bc5e5c252912ca1c6db1ccf0947849123b8976ebe385797705176697bcdf452a3f2695ae2279a314a23fb709dc0d1103c7609f01c429a66205368596c613d47aeaae69f5c12141d74448cae0b42ac9009801d30543c602eb5646f5608aa9f42fc5da7f65bced00eab281da6cd0be0e20d781ddfac008241c98e99f1f6eac7d8ff5bf8713769a127fe6d9a142d839be142b6fc9356c43f1ef1f4a250316beca5857e76c9941e58df9ab8ebfc4885d4babcb42a27318258422dd566415c6988654299ed402477877d63894f4eccac949cf1be492fe225f9217d1b36a201dd1ae1b72351ffda61656226e103913c6ae670362182b199e9bca00fa153b963dfb8cb603c4824954e1c7894de6bdb66d99821aa5ea635f68aa6c6304de964da1f8ee394c34ecc88a929eae09337747af1ad9b08d9c3490102a1a4574c25d08db9e288c9b1a923e44593e782bf9c5327651c26eaa287ff16e8dcbbd3dbcf5ef6b5c75eb15742f9c4d13659a6dfc6564ce39cb82e58b4b41cfe7bdec3c9106992c238d7c79d0522b8ad04bfe8fe3509a117c575fc4bedd1be2209286ee7eb9223480712033f60f57b4a693ccf59bb0d3a31b1dc0c0833067507b749050eb5b1dfe670e38e9443e9a536342376dd53b11c2afd2a9318562e831bc33f01901800d091a7442b7c5584d28c749204d63179fb2d73dd1e2df3c80c254693eecc29b73452507f40e05e47a21b133c0732b2e4f72574f8f6e548507c212c601f4d0dfe27de047e18a0a0c7744f6b26021663f61f6ee2cd79d0c938d241f2f04e6a0015708d19accf29bb1d8304a8d14455b6eb85e942f4eaa014abaf0e702ee59d6fc720de963bbae7d6b7fba56920c146126fc9a2ee4c1a6d5e5821a39c0a36d575b7d0ee82bb0ebbfed5e5342cc67db200ae2be4c2f708fb498ab6b9786293b36a0c177d9765dcf1d660e6c11313b5967a83bd8c99d47b88477d107ab715d975770c9276383c694003d48ebb3949b8ade38b9d9f6bcba22b8f79dbb5fbe2ec992e003c9dd4e811f5a5ab7d7fcf3b01b8896719f3099dcb9fce3714c050430cd04413298843c07770a7006105d7b8cf4ea4d46898545765173d89138a4f8056e9c85761819209903de9d600f212c077433ec97f04c85c836104986711e030e4e675790b698b62321c5ac01d3f78d3fed0ef01c08a766553c1afc52f01191b7eb5ef005aa07d8b33b20e239b03d89debd825e3fc1d0178003a42372143da68431d80d863e7c21f5f5efb769cd67d272d36df36fc0870d3922acb89277454c309d8487534ea67368395bf810bf653d6173774bea7cc70317ea17e0a5e2d223a0aa9260b08ca1904029b3d21f6d47ef68614186054aa738abb9c7087fd93f79fa6b7f6d76908e3db3f9927d39fa5df81522a856b78dfa74be5db0e3feb8dbcc15c62445ac4118687a825c91cf9b58661b84929bad8da814217324696212e73ca6c5b65c113d124a9458762cf53b3ca5842f43a142d969dd3b0d7296ceea6d6924843b1588b0fb4053ea23af4d591a5f00a3259ca4f1bb66461dbae2e1de5b7108b7e40a38cb6d9517553f4cbe732574cc55f0b9aa88c43f5710b466851d0ea29f0cac2bd7f8f94e4cbf599569c8aef66fd8e6b4abdc33b1032310cf705629c1b72c7d816fec4c2dc5a791422bab91ffef88af64a10ffb636c36d88f7632031299547f7eb1432ceb60714fd0f5ec42e73e1e2a065a133b40e3d5feab4e7d3b8504125e6004e0eeba09a36cad5c5db9cbb37f577eb5cdf7efec8214b9461c25b2f1c4b27b5bac4798ad1bc595700257f1837a4a70c8c69233db6c0ad7cd4839625e57a75aaf8ec70d3317efb3444871291df28a26c981c046af9ea66b61cb850174d6a55bed6ebdfdac701f5a8ec2d32c97992eb9424b30c748c2f40e76c690eead13c6355c9b64376d5e2344e28a82b27a69925c7724ef6b59be7285c44191146b9b4317561577afe35c076cdd5d6e7d7a8b01701e0534c584de24a50cd7e01c3baf59fde666223c1a1e6d9d355eb58b364e1d57b45c82429831b1c1f597f2daea336bfc33dca2b4985c1665c450d7c344f5da506006a875235af3891ca92be7d2a7918782da8ae1a9db5e6d4dc61f846582b50ee2a3476713906b5065a9d31baa052170697c46b0a6fb2b8d6357831536043e9f6033b8c2f7e2acce88fc8debecc8196823957a14be522d3e27c7c9126fdf27bf85092ee68aed6775159ec6f43be1b56e16263a44cb31a03ac55f45771195714a54f3d702da2555dff72646c1d5c1d508beec230406137fd3fae1647f6b488c2165424b24bdef99d0528ff76ceeca8a922d19c98af4854d5adf2362e5d42a3036241820d5f0c4a177171edd711355a16d254c35d321adea9bc188b970e5bbc7a342267d89cfce9ec8c5e9a97b6586cfbe0304d731b66ad684e350262568dc5c14c4760a54524fec844968d680048001a9edbe06fa3340697c4a404202bc1ecce722c96a268490436d89d75d560573a0121489ec3a59bc45f824ab26cc08dd94cdcf2e2325ea22fe75608cc3086741173b85359b464076808d149222cba2a89be9b867801dbcea6a30b93df456911b52049068befcca0de60de16c76e156541645fb4537fbce5f632be2d495818751d49a864753bf93bce680e870026d619e0794756625bc72c86c3361ad7a166053f020e263aada5395a891e8e12e2845839fc266443c7a666b5b5d1a7ab302cef3e272be867d44b78629f1bf44323f8be0fca42ef67e85a2faf59ce67f8da79279d61f820ec17c559c65f3ace321edb1d94c1f12e67191dd0be2ba3626f36abb7144d43dd92935ee6f3478b60a4d7a1e4782e6aaa23ba6430f2f18feceb245568e90b81c755cd0822b2348853887a9ad4051a57dd77180c5fc5c6286d63f894491ae9e7fe4bb29632fcd512fbee9016f9537f62d0c5761438ff6ba984fd9691408c3de0535fc7779ded33687cbb8ef3083a343788550ac95285f8b05a2568dcf6077fb14a87ef410956ddd1a17258e98e31496ba24497ff8275692861fc3a7d2a768629e9e18bac35afe16583185d9d2d34e912086d777972e83d252833952988484424edc2e7d6cf4c58cee4f96016824d520be51f66a44a12b5442f54d4e423a2a6d3f30c7c80b36ffa946440a9f18f4903cfc661ae026ed80c38fb1df40ef2034ff6ea5d2f861d1d010bf3a45b959d14b142302a8180fd955af8e789e586ed0114e313e8d7435b9a414955eebc062d872d76bf8e64810c929fc1820a91c614e4a209b5eb98ec6248c052f4179e0627527e8021ffddad748f6c3d15e7835e38ec5eb1b9f8e255cb71b3d1c7def62d0e256f0ff618e895acd8d4f5278aa3f5372acf0376c3207dfea11403380cba599ba8726cbcc1ed071fa98f9ccb9786e206a2ef8a53931f96d2c6068ef379ec0a55da3a2fabe5b655052c663d4938fa5d7d990a78d639a3ae0f8040f744e7a2cdea5d0a79b633a9a7f137587e77805c84c197cb32adf2e5d20a6eee6af5aab94b27f1e32f25b99df760d177cf170b31f617f3a16eb50ff9090f7f68eba79503318a29b63d3cf62953a3c6ad70a6002fdadf41bf3b802072c141642556bd21007a1b34f1eb704eb790bf8adbbf2f3795dfd582df2aa6e0d5e19d7ddd055d8f310e1213a037fbb69a2bb352ef5386012389cdba8295a0ca3101beab3cc8016140ddda061a7530b9afe1cf2392483f7697cee7d5df9dd8298f249731a01f457c9f81ce3a6e5a5f56ff4b10f99c490b2d0ac6fe68012699316524fb31f0349adb61a75920850cf490f529a9a61cc4bf4eb95b3a8dc1bda92e9a93258bbae3e549e151a0899d680d365c19622571df8c25068dd840c9409aa8a14e26629b5e13bfd2d74b741da7e5a56fc57423bf338ba1e8ab4e8a0c3256750250b0c91403eecf4843328517fb0923c810808a6e8df410c2a3b9279ede94f510cd2d30ef31bedfe116a8da088aa477e0fac922498cb652cd2d2ed58f2d198c11d830bcb63ede9909ed7ce507bdb8b85ce686e509eca5ed163b184ad41a61ac1253ecfc37a203f10e2cf9eeb85f671465ca6734d7a5a0eb45fc4d23bae5625130e69807d2c686d118b8b39246ce3bb3b935bd5bccb4b72ed484c2a8c66403727c15382bef1e4b40162028179881c0c8a50b8a83ea6a90c46b2257431093a004e2ea2318254cfb69d523d3ca39c1bfefa679ab4c895e08ad4fb7e72f869eff2a24065d38d48b05d06f7330595a9930641d4984f9c5a48d4218ac5265ba35b7de23604c27c1d042c18e34ca04bf6f24ce5e85a9364e88d0be101221356d4d4c45eac030ee12111429d35382349c56c871ea2df74756122f0a18dff8cb53d1ec46fa0d5400132337f1aaa87e636b0edc099de90ffe01aa42f988880dfe01340f3a5f136d1dba9fab9038b2588af3006e92295132f48e8342eeb0f300ac289e9d7577213f235c533d5d5fe28648a73e0fba36d7a45eafcb05132d7c1e10dd440f0ce8fc4cea79f561288332b798a180b585a67de138653ed5101b699323cbdfc13229a5e36f861593af8b5a785aeeff5f9b2f4428492074b691bf76f2c720e3222443b7567071c5d848b10c295bd5a86a310fe7bc5250ea562c0e3188d9457f8d2e88b20e9aa30a58c85508979c891517d0d48c3c6193dbf68d0564ce022b6c99373bbe39ba3f995bf489cd0258258bb9b4e170d0f4c2396f46c09f946beb053a03d199d1b936d65f6d4109c3c3744dcb24fc6438b4c443d2027157362e222b28fa823188ce0a7f8afa113d2a29ecccc458de3b03499f27d1148f5515470ae6569582ef2a790372fab4478242981605a353037ac4d31962b59d8e9b9b8779fced4eb6045165668e3320d202cf7ae554015fe61fbb2d9b06a72805c6019a94c31c905da6a6770fe62f4445b58046846bc9ed9e2531e3e31f4d4430b03e1d49054658e72925fb63a093bc20dc4dd3a1c98b00e4e5d6ac92e576ed73174f1a77a26102abaab7286b9f6c982bfe1679b49f43e00516af6be5f89d543ed8e93fcf289067c6214564bb6c0935af0c9d6d8e8b585c662ad8e1fe268f3cd8728accfff05efe44496d363aeb248df6af1b1022d8b91cddd2c8ee6277fa42f8e5757e157a4fa3e8962e759a1f4ed53154afbe1cfb013d514dba9de718e6c443f48cd215678ef823314872294b16a3a4af587484aa68d345bf6c9186ab1c415d0969421cdfbb3c9b0390202d32690ca3a80f0d4bbec7915fb761c98c7acb9133a0bd731f4fd38a8308e4af3066b88052c33e1d04369103a60d1f00d80a292ad6ce3cd29d63de5420bad40d4ca1a8c6bce50bc604157da5538518ab3b6ab800795327b8ae884364cbe22c6cacafa2d3b7f9d6e90cb3bc82a14d829d1d89193228daf4d4475cbe1a794c59059172e88463203413ca537e47396623300a0f57e45472c518af90f9d894410c063957cd5aa3d22d3629014b5e39d675e6e414dba8dc7bec925717b340c240f83313e42f38f748248012a12a5fe54111186dc42db60ac30061553232726c8e4faf6099a0df5af77d19968bdb6acafbb889c8b2db37f5f1e865566cda57506130fa0f7959fcd07903618868bacb624a3693077642468b1c271c0556e7b94bb3c529f4b482666b3a6c66116039fad2e4be78268aae013bc7159ec38c3852b58209790c390e0b709d8c726940832b2da52133581fa04217a89016a7519b118c11045f1c559056aec361614803e5af39b930ce528eb49a01c1854e53c0a72b38b62a0ba19f2c37eaefc21a3394dfc91bc4c208422fec24fedbb69e7d19ee10ccc02b2f73e62853a03c3a3db0fcd9f13c9bf58c2935654eaf0e5b66df095647cb74094c4e1f1e5e350d2e0d39091cc0225b88a7da3d1fa71d4009da4a5f4aac27866c33b8940bca355a8b8ff0c352b5eb2cd0c7dd9f439c06d82ffd9ebc696388b9f2126368e0b23563aa5b407d9fb724ca06f5e38b728a69fcb11be5625a215b20cb8e0d5d8f20ec29e29682b2fd104f3ba3df26fefcb0e0579c9bbdeb2111c2bf483221f07ff796936745052f990b6bf157a12dde3c586efa8d6ab04f8aea14ae217b0700f740aab02480f2536663f2ffe394bbf0187008259de133590033f7b90a15a7d7e828e999ce3a7968c27f513bdbc28782c40e88eb69ff7512e56ae29d5c4ddab16ac1f129bc9797af3b02253ff24b973a63274493283d7d43851802e1c0616d14716572b4468d45be4bdd20928cdd0c5d1ae47637b00c154291f9c3578e9fad1dee89fd55b394b76dcfa0bc4e817c7d309530b46dbb5617a154d9fb3891fd6d11578d0ed7f3e6c9b2f69a6420da5cfe506d4d4573b755e705e8263dbbcd03723fff9e5a4c645e5f339d8c2604773118b86d7a46745cdbf1d9aa40ee8f662cbda681191a2ef8426eaf9304830f8426d359059eb05e7267f3fd6891ea0bda34008047557b8e0ec5a41d2031c0aa500d53744c8919b2ca5b8049fcc430cf71bd2d7b6b12a015173dfd04b8fe1a0cb2ff969c17d3ddb1405a026aa7a55e5bee444e534a5028a5d89d05524a1928adcfe6884e24ca43affc9535729aa41404a492e6060771f4f9cf772d935087b5a002440b46f890a7f24eb35d99cbdd4ad9422f56c6e871738a09a98c4dc5ca09a7084eb7c14653b96593eeeda00d15c60eda9d1441cdc7c3bbe1ff2d7b8b7b4278b78da6a8524e1fa8b66e4472a8d1194516d9f03c83ee49e9b1bd295ae44dcd55b294d235437c815fd75c245efec96424a26cad8594cbc582164504d082224885523247dd1feef2d54b345555107a363f03392f63ed63646d2bf7b99d6bc19c9d96169d615df0ab99f9a2e7e3d212929b077b59b8f9120efe46e78de48b89bf21351f8396b7d6d9243474deb25993935d60a21065a706cd157466f123da61aeba1aa3ce6bab1e4fd36cf5b11f10804fa9f6d6efe5292487ba021e1e88b4a19555f0f0b20f5fd003030c8677a107fa21a17e34cd462ec2eebee30fde2b9475ace3f0ab3ddec2a1090f5fc12838302a663bc6bfabfd6afa51a48c554be02037e6787b17726ccad0a9550bb2aeda117a3b8469e2b9c5b914f0f657cb00cfded0d97ebae8c6fcdf3e25d58022e8f237f0a2a5b8d0b23dd8819e646109f880e4c57b281442e41318f6dcdc1fb4e9467fbcb319deb10adc6c9047088c98c7ffb33e98c311f3079fbd6084407802fab277751e4d500438f7ad51890ea14489fbcd5ae67acb3648c69c7dca588e5f133952a2d484fff5265d8429f244a7386eb89ea67577a646d4936359d5350aebc84e6dc2ea76fc1171886cedcf1401bfa6bc441fc971c7ecb0e7543846a2a86bd5630554a4619cb53d4e88feeea190eeaf9821b52967c7e9630ae672b20e9d6dbc9ace9af222a644c75d6057e6139f2b2ae5618773d03d44d84d79965bf78b890350825151409b6c069863f46f9a7b4a4c11ea40b312b83b660458d8e4175d59d9b2215c09418f4f2a8112041efefb4044587b87c637d4242cb2db0d2d1acca2432b5ad1e62b9927020dcb82286164a217bff97f92e4bb1b7f9b0cafa337b074876c59876cf6de82e2fc3a52b14fb638a091e7e21e7e5c1527d2dfcd2d3d9ae2b76e45641b9ada50e7aca4969ada0e64968880a422012ac8f82c1ac963d2cc5e0b4ad110038a2903fa2c515afd28ceb28cd27ddd8bc205a5c6c238ddde85ebde5f8fee3daff3999cde635dddd69d6e4d8f6d0528735791a59d02ae8486a03ac791b09c0248774715d23ae645c0952c217ae1b5393e23e5a8b15ee788cbbaebc0c37665dc53ba60fb8c8159c6a9635491d4a957dd635b27da3ecbefdebdae6263cee35c11a2e5b7d3f5d7a7ab8774cc3d2bd64ebdbf1234c8dccd7c0b085a74b1b507207f68af4ef94503a51100300377325e5dabff9b8543bbc714d81ed7b0cb4eea357239d3b688b4f61bd78b051db6f1b5e02078bf89add250e069c45afcc7f7902851994014dbb7b16f492c6871110e92355fbcdecd5435f67492cd6a599c6627c710ce532f691c179aa17a6cea647cfb73f181c8641fd0f4b857208f02c49042c58c217ece512f49a1fa9936999d0482dbd03f470d85c1235d053fef52a87a5220032189d520398fad1aedd8b09e8bfe9ef97f571bebccceedf50c95e536fe8b42cf4bc90dd8ae4894f37b4922ee1426bae64b439ff08677231bcc9c765c034712542671375575d4728c04ccfe797413ce6abfcb49723e744bd029c115940c046509707e3bdada3e7469cc2be53853703231b05ce03c62a03f4c3c076d69024dfdec12d15816eabbbb31ab09c386104ac664cf0d17f08f25ce93ff454926bb886b0adf32872096442119ddb83c157f84eb2023380c51e6c78d12835f3fea35dee9334f8e6a6c4b961fe04094c0d582e7de663cc6743df45af3410ebbbdf1630033fde9ae06897f872f48ae7d9e92425a43b4cb6b3cc83c8c16f7de804dd0b8874f37ff35add50c9cc4aa8d0051b5a2af04e4802c66fb70a91c988dab89ed9e1cd119c3f8139a1ced442bafd599c4467a3748b07f228daf70945a5d9bdecf1ad87a24078753129dfdc39dcb70d497f9b0d6da74fed924b88e4cbbffd59ee7ef6bedb39b8c64688919df655350a5376e1474431bbe0138785fcb0d4a19ad538138ab8a0975e39ae683f7ad68fc7a00c95fa25be6b74e20f691ebc3d85f123196dddf4749e71edc233ba8cdc651354b6270d3c8e01013a0b30a633c550d98c4a84d9f3a8a921a102dcf301e869a07612586517e201ab5fd7d67c0ad848c7c4e963c78aee3919b3b80fe26e2114ff114d38b4dbb304c3b8c1f7770ca7ace04c50de1469fe04877a4ab0f625dcd288155878c4db02752a0624823073b1608c224844a0453118ad576d55e3e361781ec280ca02d3450065ccaad61da1c0f0235a0e071b407a1077ade82d01e3f397098bdb4f4049b42f997ffc3a268bf80e004d9feee4aa2b55be9f8502d4e9fbab528261e19a725ad52125d580d8e28989a7d4e768f8fdf63daa415a0201c92c6ed485ed16051ea146860b7709e301107e992f728f77deddbdd27241114416385f990593257a008b007c6406360772e3bd158d2d6c984ef876968d45b26e9377b3adca75b01255965e459bb75b43f4b3c519338468585ec94dcf35cc95adc4329d372190f88d31bd4fd305df05875777e25c73cdd0a384b3dec1e865c65cd0fe3cd36e9459a20946cbef517e7dac71c57d7d8756cd2ecb2eef1a1d9ffb26eccc4cdace72a016ee81d55ce48bae7d8d06e98dddbacdecfee46037ca857882513913cddde256608eac0007d85328814b133b8cfa0cf80de1bdc64c09e80f32e697f2c40fe39ba99535a3674c453870fd3bd57d6e944a9f6229340835937e924830f5a7e12815500ee9db7d28dd962424aed65cf277be0478ed2d894a339853a502d2472163fc62dee9b44a00d381b8d6a17ee1b75110e86769f56b86f9d27947385bb9660e0ad441de693bb1617d296ad0efffad05de33ac51b68a08975e2b7d2f14177ccd4a77a1642929be3e819e48e5194777e944e2a33fb6dd378c84d3feaf8de73a76668204373489deab9d74f839d4022d9adc63b08b2b7db8d07285a37c13214ac4a0311ca708bf70010e3afd5c18a7cf4f0b476f91ef9802f3d74016ce87d0d180ef6ab48ecee1b1a72a6a13628db53ce6f56332bfc9665543956962145013fea9912f5b287200845b3c2620be4e07c136ed18b28e63e80961470fb56795d584d7c2507dad310a282d77f31ae18a143d0bc65e45a2c3d82e67522087977248477bb417538161638685cf8e082a235ce49f2d4d2198df0565d48095ba949bf3e6548b1f47bffa336c38f071eb89818412b1a352512bccc31f4533c5c2ab38a2eb5e0a26c5034f3f48fd5d97b0333b083f4059de47045c1ce706c109d9e5ff00dbb3a9339cdbfaa1ef51e6848f316461dbcafb8c5584e25c7850a1c94926e3a95e3405cfe40a2f7ae612db11a26473e808e75b4f104502edf7e19e464e4864abc33c5cb96f956c51717695e420ae9d58fd662286cf567566adbd0d7b8b4e3c73418de38c84fdbb668d56ea047d2ee6ff61aae474a1d847cd5e813a1d463b01ede02813b5e4c7531d85f9f89defa74d3ffdf0c2942e5c8015d124211c61dbb4c213072d2f26ab035d47681dbcf6257f820d0b63c4a3dcded92abec68cb11851552f70b4e72cc208bb8207a078a5ea42d4d8b8907342f3188e604864989e1da24c03485c8d015ef10d3763fbc29a0924e66478bce8c1656b6f99e9567e42a161ad5d93890a74d974a0c5d193bebaeb3831c1a041639ae6972d9b1c914b421fac7db4217262d300f72098617350bb0ee73dd252561f724dcfe3c6def0cf5574c6c66cd6feddc608682e7de1bd76cd4e7d398893ff66ba5e7c59087db4214d418693218d8b639002c18846c8ed20cb1c632e857a2a0eed467fffddab8d95b6cdd2844edf7a7a293221b3dc98ffc18519f27a8ba2736e7d6cacd4e573a577369a906746612d16f00f1d999cdb8cbac7da4a2a074eb7dbe7f96f11d2e0f1092b1b6679f8b150c0e60e64bfd6f20f25f9f3a49b605c31a037c906f528ae3b4e84644b442f6ad318ed17ba4e2e51426736cb4c33d31e1b6778bb9b3f708f5a560709c17a170b83b8466b2ca38da13a8f372f34cfd09019db5d15df0d570539379a78db0ee61fa4de0d1ccb894add1a8e9b9d507e7041df26f4106b1249e0201804561847900e481c1bf34c484cd0c830656ba4ef0b4462978a78b103d2674c3160e775c2862277511a2bbf0b07d3043f99a48ee21a46b473297db317ed870f8b475cf25366e0dcb403e220239edb151c59d7e3816076dc7a5b211440c5d6a1d28a6705061ec6c4c0520f77fe1a13d34cb8749e0b9b4dee2d994310aa8f2f97ae2141bf06ffedb516e4502987550b078b76abdae1e5c2326e84d6483f12347ef8589bc41abd4ffa498b5c180a7052d656e67e56b033de7a9a3f948f72a9b4403f3a0b869b94cbb4620e1e81eb6790f7c689a19b0df955e87be5bf7b9e026b53f6d20f6ef69504955eae21fcae90accab8adf99ecef2a033fe82338ca1b538e2606c7cfe35b0950a279e1b3c419cd87402b7a4306a67f492a543db981e29224540dd69975826cb5c6b75df2d46a0e4dce2a7f24c5e9d5245672a061068d9e3006ecf7bedd96aafc964393d612230f1ff4f9aa22e0489ba9fd8f327f2b46e33b110484825f81c7fd5b544becf2b3bc1e9d4de6b651ae62613afd27cbe614ac5d208e1986849f4c318e656c712680ccd45763587dae28e724ec75f21e14e3aa489f4630ced5e341d3c1a4a8c53a9d737ad63077491e0cad403c34cb995516775a423a3782df1ba69f8b20a69f8ef1dc48cde4004f8972c206bbf607b27ecf256bec69e3a1d702403237549e8947745675eac9ecfd5b85372322ba42eeee6f2e50c60dc9dc3fdaa09f11ea8f293d937069957141932a81d424b52ad5641c93f6881e0168e42452be648d2385f82b23085c93088f5c3cd68109c2324bd7e6aa3539ca94e130229581141a3d84fc276fb21675ced2a40c99dfd826a86be694792b9041b68e3401425d739f2b76fd51fdc07cfbfe994b0d0dd7190659685036fbb1d7914d73bc8be72557fce2bcfc38f96a5972a711fdf08d7bfcf95670e04dcce0b69e009401229135e341547a05524133b22a7c8b0472ee29665c93b5af71c65586b20a710c8f6098ad9960c592dfc3af7e1c8b3aa49c1482541e84895791f1c258b89c81c40d9c1920a1185a9e3640a8119bb0db3aac245e22937719265dfe05e1dbd829aa664e12ce0b42525264bc80eb96c125bf46b07b6bdfac2011d8fe519d6785df5e95f1365e5d092c749df97e4ce7377bec11834c25c07331276d34a9f39ba0d073fb01ecc9928bdeab1996c7bc2501162fd913cc9528d6f212fe0eb1f25273f478d946e5a523c34b43aa3b2da98f957de2c80cbbe208f951040adbad8b90b4dfd7bad51f3e5639564960018ba2a48b1d30d816047431bb761e645d1b82356e01f73fc2adc870ab7c2bf9472684ed0d506ea0b795af5a1130c70711aae59c4a1e2ffec6a936e559d64316aad56f139102ea7cbf6fb2b47889a1d1c1d7000227d5cb26fbc85856caba5284684230de53c9945556b3c2803b9ee208714ed6a2edf0f2b8fe2f749cf992077ab8a5ee21ec5fe86c6488ae1292d1cb3249a20a628bf369e1da2a22f280024b32b777f8994cb1ad60c5aa4dc2e270d3a3a032352ec59a29233e8443a9e0997db439f691fe781060028baa95cd81be8f2df975073bb8ba5a2cd30575e40a85e4bab1c24a857f97e869e6fec53f2b56f339fb7be166869b203301f5013237ee087f4991c29943c8fd272c9a161f23808c4feb9d659a2dc01e9ab1cff44e9cd95e3429f9b7b528c8e670876e018c203d34c3cc846860c69507f0a17225711788fc1d54f7564aa637604404dfcdb624fddbbfcfdf4de0f8dc5109db89e5027e986cefc41e189c56b27c08cbbf6b5f864afcc512f19598ceb259d40bbdf34157272ec82f0ad134095bc467ecc83975bcc57ae22564bc4e5e2dc3f957df51ed4a5d855182a4206f7cb51287d56192ad2125213cd93d4d1193c7979dc636e1a9b56c784d0a72cdc02028e49fb0009dbc3b481f9bf83ba0e3ade3b8895f85abc31ec3e37d8518a829b6eed09a3840a54a8bb0daafc4101435328c6e133a154c76f144f1cae9da0e027714486e730bd7a85af8681a05eb2f12113ed594530b40915b3eadccdd24e4d5bf43506105a15df4091a3a7c7b53bc5737be71049aa94a6115315c6077e57651ac5d7d690333779bb8d5d7857f0481686335ac48ac6b49d6415ccd6f2c59212b0cc47ccbc304213365dec61bd14730d1fe258be093b91737fe9c686987e0268142caf2db009534d37c423c5f6a05f5e5b8419b369fc2bb7df187b5e2366eaf0cfa3e0096022650d79675c5217820c6778aa10a0f5af8f638a7bb76c052dcff810361ddbccc5899b6db0530aa8f694442642dca336ace3180173b821c5d056b31425ea43cb5fd8ea5800985714e23b58e10c6757e17c7c0460f088a69178020ea165ddcdc97804e50846343fadc90b26022a3bfe4f19a21ec8e2d7bdfccf1633a7fc88c0d5ad231db2f7821906fd7c4ee6f36c6e183115237481dab083d427fa63543b74e26a459bfa9535437cc535407d457a374049908c969625564982df66326031654a4153899796a2d55439680a3ff703b9614babb32ff88b7afa6e6136f8d56e9243fff1b016d8ebd53d5dc489e67b35618a2be084c4cfb00d8196790aa00bda9ecfbf74050f8f15bffb8376e91b18fa89390a90a80e93b7501b16b0c95869f82cec9ee3b79d9b74c32ade3df5b153a92bf071ac15d92d9817228000d0e063ea78580d49325a564906f798a2f77328825fcf31d47551ce8342543ef2de5000dbe6305dbef04c4d02858ec52d6bfdb784529a0431069d784befb750125d52cb9cd425ca65bae83bbf739dd0329cf30543358da7f925817be41e30276cf69e57f855396801ebc58ffd5390aaac24533c2194ebbbcb7496d6aa799e4f0f97ba290b84db7f2a27d0fc7353424162424269f4a3bdebafd5dacadcddd309516f5985bc1ea11fe8419b61b1ccef757cb0b341ecea54f8074355e1c18b923fa86300374089f4c367c51d70edffd985a237525d2ad22cb471d4a8e6661fad9b6792c6229351445581916949c269a8e952762ef316ec2e31ed71f47ec99b4efd0a0fea9d94297c68369e438c85a1303c28e05f29d341f8ae48066195a4466c2691c7754479222fbdeffa88b13632f349403338bc0ca168d0dba1d4e24055427a678dc53bce105d976974d9ec12855edb1f71b700c066b73892544ffd44dee41f94d4d0e94cd70af78a78b95b77037111517e2aa460382eb163df00c648bbb9160829d4a8acc55ddcfb30cd69553cc12bf2a44a05c3cf6b8dbac4d88ed86456e7f4d4392d490cd454bf6d9aafcb45351a4e227f7cc9bab4389c9c2aa9098be1c8b0fbac7f48808ebf4292d69acc14c24dae2582dcdacaf711715ec5461ac0ceeaad4fe69b38aa5aad9478f5d09bb5d2108aec6876864a53201a08083919d640a118615a2f555e066dc8d20942b81ea8ab4cc8a3389282b45d00faf98880fc4dba278bb844688a7b109dcbc73e5815bde1b3f580e6731a1c5c1ed06b4aca287c0520aaa2e708d46ecb84313c8416d5802ec8296ba5278e14fb7488a52a938bfeb3ce143f10d5b1fd979ef470f4612a5ad0c0f8bb5c1061f9ba22093d1492d4a86e7d6b96add5843ae8f40f5bd9d12113a3329ed8f47ba42c287973f09687130a8c68f5e7e329f11516ebffd51f7ab07b151e55beb8b92a06b4e7b3db7514940bc36224a4046ab6022181885ff5e586182285b9a6782081dcb413e777228e09d582538774572d1dee2bc6beae219391a3f41d115f15f63578fda281fba32c209000092ddbf3ff0a7a9e6d3d15e6be545aeb788eee2598bd2251e6351dd530e31c8f4daf4ebbc8d744b39d420b3d799b8095ab7ab57c94a09d7bba643b87ed5de851099b7b6bfabb03cb4dfcc722e0f95f167c406f3496e90fbc7c1362f7d457f133ad285d646c185ba58034ef7a31f32fde8081a28a485a58317770ef2e2786d20e71c1e2f28eb986f7d60584e45bb21fe58f182fa041c017661c856c5aaba28bb83735b2e6933e4e7ddb37f4fa543a02060dd9459662125b1f081632ce3f416e48234678bbfbf62fef8542e7750246b64f40f23523b2e2489450574190c5ad5b2ab1c7e5f726628f54c4f45e42a59927e0c3176f2bd330dffff0923685cc86fcd9c7445a6f21ca12055e27e1f74e87e0ab5167bd554e1f47ed2f9f3ec2f816f7fffe97542b25283f97e4062967d4e715c911255351b284974417cd1e10e5ce0b784f66b86a43609b4423bfc9ab7b781776c4add33d5cb3c5fc6426a6434b590bd604ef8af35547b22e172b28d92fc142edf45ab41f9d849967d5a8b559f1496f30149fd542043b96c86b052fc41e552156139c375d4d6a5d35f91acb6549fd0a90cb621c30ac5a588436d8ba56fab2490c0285e9900be0991d4a86f5fbe62304a68622ed7ae20366fae481887747905d63a3002773a93c8e7305d06c59dde04f070a813a7e1ae3105bc1cd09b211dd6b2bad07dd97babf08edf3ce88bb0a74be1530794291c640af0369e341e9b9363a5ceed264adada025294ddb898955aef6e53f2568a4c36f16445f2ccb437b7004164a354103e66a323e81ff2d3f5fd74893aa7ba32049d61f538c52ee44acdccd476c5fc9f93dea8dabf6b3328e6c72c656dd32efb0e7401b9dffe68637e746a1779d0c5a678212bcd7fb073b7784a6728c3cd433923c53af410a03720643069d352fce68a6383a74c143e0c33ddd5569067b17ca39e2fa308ec028bc4069b9d32ca60ae5b5632177e1609c450c9ec0ca22cc984e9a713f996097922ec916e457d343b92a0df57a26ae8ad6a4dd4116d0f06e91c2d0eb1546165d889b5c202dadd405c7595429ffd3e638e1ee0abda76beff0d9a29c7655915f1babda37ca431c5d31d23b264d74e1d0b4a5b91d911456ebb4838c70f7e83f19520acc99d8f693d309a66eedb4882efe7b9f37593289ff27e9222260a3982beea753dd1042cdeb38a74956ab813cf693151d769c15b6c623de37eb9c45b76394bf59694c5025f47900c118d39b2e2addf5d251390800227e10cd139ddab1b8767e65749587dff9ee09ec63ea0fe172997ba84b50c1e3d8cbeabae3d1a84a355f58d7ae224ed6180b549736fed956af2d8d5b9fc2c3f0d71d7b2567f0225e9cd60b0522b45b3920d1c647a90e270feb332cf67a249f3d9f23c0a1d8efc84dbcf59c1fae4eeb4d923725997720aba30fd99c345c65d05e128a1540387c70b36f8886a2e271b95d29f93bd460a4533e0ece8f8da77ae302d72d55c050e87d26250a78d24f09d163f34328405a04777467924de6f4adf01a09b143de4f920fbfc3635ee234c2fa8bb4154646000aa5bae2dee48d6e6d5e1ea8570441e5f15a1c38c5f8d3dd7cf63c9f8665002e5f76dfd802ec99e16be66460442c5cba3eebb53dec09b95ef2101804364c69b0a4d396432783d36343aa1c3845408e38cad79eb0c08c1e52cc7b61f55a82bddb58f8ae03462d445a029360c4f20e03e0796a68abc57cb0f125ca46d39df351fd50f54a9a80112aa8796827f9ec86039863e052804b6b9097b3f2be1f5da42af7c04539c2b29913581c5f0c2e6f8a24b1e20817efae155d3163884befced024230955dda376ff59513fcf0123165f0fd811c60124add5068a417df811abd14947a4a3ccd6a26486b2ea3a0fa540c322d1145912c71eff6e179077eae99741f8a741cdf233145ee8aa41373eae61b91ed02c1f2e7fa957f680071b5a8c7efa6dc8d1cec2496a830c7e71602b8ed0237dfd52fb1a40394e7bc88a5b4e679b0930b5d89e5a57abe011799cd35529b2b0612f3d095329bab1e3bdf7d00ec47477370e9002eac6b625834771d64ee78077eb46fe0e1a79726fd2b57653cc92eefef80e8639b83c9179ff18017e6fef05e588ceb0d6b26629e25e499f5e5cf155ba5e6eb65f06c598db7813a77a0c3761addb9855c19300976407b1171de8af72870224ea1ba3f7ae8c01061b7e4d41645a3310d992745438b318067bce84609c841696174199d5ff07d34d8f96e219fd970ff64ab12b1ef3ecedcd050c66a58d65f29bdf32a95a38d896d0c1ce7a5c5858b8c3264951c398306d00fd7903c9ec542895cf8548d4222d641be4d5d6d357f787aadbea0a6309ef2fe117c965c30ce73ca9b0a19244e8bd48448c4f21a07cbd60f87f2e977e05d3ea9cd14e54d4c3ccc983d29aee44b3b5187e025946bbddeafec6be9091110cddf1d823a9e0811c31fafe17c57e33bc37bef8a34bd7a8d2bb0967375f755a7b3cd31fd5f559af5f5518d2a866c4306c35ee976c6ade79566a3ab24926ee16196b06a667eb3c026849a879fa8a96a28aeb0a5fa82b956ebce6e651af437a7885e4387813e392300f670fa242308805df488a11374e671a5a14f60c4eb3f9a9b3e9a9e253d3a747169f1b438709fb32cba81e2aefbc511325f336df51803dd242577dcecf3801cc20da88c825dcaa68716927f1593e0b0a4e3876614a9d087d262becd02e50fb9d4627513e6d53bf4da5c2c8ff187c6277ee46416d3ea541daad2b003ee4d530439adaa8e073293346e108ad2b7c49714cbba1081f23437a10bf0357080926c52501f14c01d9a58cdaa30e0f9a66539c8bce30375deaef7de838ef27608e7f743808460342c0261842854407a96f6a4c1784af052820acb4458142e5d463bc16c0005a1ae11f0ca93e442cab5b6e51e4d223955055d20a84403e5d4167f9864d454557881b84502513a8a2a1a4aeab4532fe560f60462cbf51338287bd5b69c46dd7a51744f07ed2d6db4e8ee7aca1cde7d08dbd1fdf33cb7e53574c58a3d4c1a73550658e0482183cdd206ec38a9dcac1ce4c2e08d0467eba41bd8568458c2ffea285ac70999ab506016888498aaef0a0b8dc162bead91257eca2e7510cb2a8dc1b6230ba3e30d720d0b549aa0cf9ee9fb4c2cf5d1f36063fb38718aca7d239940f533e0ea0971996a5ef490d435d72b060b30184d5dc6904978156f419e97528f1a9f887c6c04511ab5366feb8d4600a5c6395a254ec279982a0f01207d319a289ab0fe93e6289b377719779409bea17b230002d23163ffead3f4a3933c9249ba3035ccb1a6b4ef0e5a757c3715656dc8d9527e3b7d1958da0826f75038f4ca100e6dc1883959b8116c784eb58d2d6972e89d9aa7dfe55e69a1d594e5bb065f4698f1b3ec7dc2242d470e3d6792ec34c9b401f95a81f5a327683f557f23af8be6fa87e2d6bd1968dd0a38f9a67a00979db90757daf505fc4beb36cc2edaf56505a4d5e6203c96af0d83289e8b6f3cdcba71e0f19d5583d585cc72c4f1f18dad7df33b1bc1f9ef4799bf75f4c93ba22368a0a66ed99fcddc474335bae7d702b448cb7da3894b0162bce7de008d11cd46511163c0211f44d0fb0b206de4a9f9b8660ee512e29d4e75708770f364acf3c11e6bf4ddc1e315230e4e6d1dfe8f9abd6f8c6c7572a1eb53cdd0ef74107bb0a540077d2a7464b215d88c8276c4297dcd1e6f65932c1fef6dee0b0b20e075794e72824ce291a602234f02c241cb261fdcfa30550c4e529ede6fa2c902e09c7dec0be5c62a2e9a0e0653afa58f2138a955c98733f43d3916fdbc8281146eda323cef47a6bd11fda80adc54b626e889e1c242080518566b3b6201d58e5c998431064fdf816b705665c17369a8489d4aeb155c2668245ce5cfedce44b705255dcfab3347e6e43971d8c41a43b591aa32c4c7454b4bc629e8af1b5d630b60a45bb8a6c90191cbd162b5a2182d377274df362df695d919f5f9f62a9e3be4520689dbc4ce23e0a5f686b053884006cea6e718402d4d314edbaf481b6633be8fe1bef7a3e1940d132820b9f3505ef2461c32fa1a58ce5c8e066b4c04c3542352bcce517e287bf80099fecf8bc8c8d0b09222d1c60cba29e7fce53b7174cf903d8b495249afa2f3e9d023f4c890c7e4acd6e478e4b233f70bd561717844a1c51389cbec85aa121df7d166976df233a25dda7712d54e3a03f28925be28b2d50349daeb0da133bc671a0b3e4652f10db068572b076b1b538d6ac1fbf5c1d6fee9b4a97c14931354aa463660e2630dece9b92584faa7438cdc1d583d2a81cdb506b377b49ceccf9b4fdd96eac6e96f7cc8689803a1ac5c87082675bd96638d5c5802d329a89297a8e55e8c03b66c086f442110b968ef596feaaf0610085f8ebb5cdbee21c5d94889c388d6df38ab022c9964e4741f60c91e094900065812814ad2ae868c1d43e88cf4759d406ee77ccf0e5e8794c3701af003528fb35d87429c054c5ab2fdff51abb5533e6cd0ed5a9b07912353946b4563ed24161078fd3ff16c6c5ca2efc3428428181be9ee50accb5b735988038a2a0a32253e0df60a4da619a2f83597fa4ab3a5e70ab67d34892900cdcf536d8614d2d19fef8e23d82bcc9cd483510e23a19816a59c6c9224f9e698d1f3a06e4421a02a69215d45773376b4de2e24c59fd2f9ce728220f4729f7e9b5311adeb07699c31db4225ab3299e61f22d0deca72989fa11f00c4d9bc5960d7ea0547ffa9508fb7a0eb4f3bee023fc6d95a168c47a9aec931364b050d1e5f36506a35c8ace94e037963a3ef2f81f9396657a1a162ba2951b0a709b098a75544dcee06718fbc8df5d9ecb0914ba119dde25eb1961d16ddbb762e03a4b7ca6bb72423eddcd7cf60993bf1d4dc5cf2b6988f9ad7b3c50a1ad316916187144fb1f4c2033b81d8ea4de016db249889a51a7869768bc407fe8b4f7c9b4c6b735dbcac5fb5938871ae57d086d2e70fe99f9db6b76bee6164c76ff7f83b34fc8d44d23f3a9499bd09e6ea7000b864e5f464b7e994e6b76baafa5d5e9b301efad7798f7036d1738b976c6d3bf58aa86b58990fd91210fdc783f425bdae3430b9da05aa28afdb46c04c940d91d67a66d74272d8bc7758c53864148dcb8ea7b67978542671ab353cc50c748e037ad792955a300a434e077fb61f3238440c524d5f32e4b40348d74da028d23f7410903340395811d0841949ccdfe923b66e35eb4edef0b99fd7f9f666e177a87594f7d2caa8292f3abfce19a8ec3580a28a4fa54f92ecbdf7de724b296592329d09e9085409d67ed441e0409c60040a319ca0e4c3a8240a50f693e2096ff6fc7cd8aed3c91715f345933dc57cf185dc48e4866d4b2de0f6fc7a852e53dbe1ec3ad62ff46a4f2f519cf608a97ac6b764b2765ea2e7987fa0df2a09df81b707344edd404f8eabcb6fd78c78d865de54347dbb67cd480a6be94c0d1c094e48b80423a314c0a2a6353b4546505fd194a75a1221e653a6b4d2a5af9644a9a3d38838b5323aef594b32854792249d6df7ac9900c5ed614e6badb5f3d6fa37ca6f16dd4db6fdacb3ce3a65b1ba8d41583cdb7bf6180f32c7e0d8b53823e9f1c49b4250da842d8344e794499dad9a8d0c094cbbbeadef7965ea083aec2a805dbf0331a8f7fa9c312a4aea8106374d6e450a391c8841b53d5b6caf9590c584a2249c74b780123e2c45c1a921116736917002872f6ad082051eb0d831ce4892c2da9f5d7e486c6862fb6724606c7f5c6b65e20c2dc0f72f674d615e23a186119ab6eb5a2b985d6badba7e396b6ba3285f4a2b6de2268cce0412b42063040c26a490e5e787e562d58a4eb8917568c50e9a3e100f33cfc1effde294cd26cc5f8a9f27fc4bd876bb67059a38dcd6b103cf89f6e9338d377b4abab46b9660caf218349606c8e12569fa175811a1cb59e3513f97187df7d413f46007d1c61f810964eb8062e19c68201a38f99ccb55e65db94df352cde2cd9f3d656ce2a04fe97b4ef4fcb22702b9cab65ab388bdea5150026485f9d03ba1e72c07d1233a67fa3e609a7169d94dea6992bd6848dbbf822a337f1d48ec5da31d6d9751fd8db0fd9b15096ff6947569d7f77e96ab6c68c8d268b34dc807262864e8062668e2ccf0ccf3af14210a3f276e41b8a70aab41f2e371c89d2aac4660cebcc909ed4f7fc605d123f729f277b47813b9252d017dd7cc619f9612d80d9cb0eb5b91464d1cf587fa16c4c09b268efa5c0edeb42bad5b5c466914ca65430ea3ae898396ae99376975b7119645f61d5f412a98e5c75b4ace75c932e1cdf9b9033ee470a549d20d370ca185125294952a8a7093647e9e6b803073821246482c4881a5b064450b4a740803677e9eaf812a60a60b1a5cc022cd0e2660e0892f6688d1010e1267e6e7f97abe6bfe6480abd87c51221858e244b151d9a841ebf041221d4680010acb0c5d7489e21ad18688a82dce28a1c28c7ef8314ddf45ffe993719ee238f588a3644f26385f647b32c119b3b5fbb8e0607131c1a1b22977bd7bf1dbb12442ee7bc7d2beaedbc83df740ee6289e99e5aec6ed43f5abbdecb59cecefb7e7f7ba05a2db677820fb891822e85ee74d9fdf9f6b499c147627471438ca51dcc6c30376ca64062cb1a2cb8d8286aa105353f5c31a208b4328415d04a0b427c443aac70c5511032948166cb3c23831632512881c2c60a127826b0e4b4df94c1043dcf584399ced0b229fd5ce9eb4a8dec2c3731136386d311bb7e7e43c39b2ef27fc61243637d0a2fbc6c5467d68c1fb6ff34c385edfe51aaa7143b148142102a18c146cdacda35bbd2aeec5aeb0c4959c0f002c90c354d6695479324cf53eba68d5f19aa087a32b1b15246a8421fdb30d25f6badb0cf49aa77d039270ecada3bfce9c790b8d06ce1c1052edcdcd410e00b2a74bef081cd9731c06c359b0d2d4c6ea06476c6e4e6e9dd50d993a98ca79d803d99ca88da9aa502944d29f839e9dadfe5fffea4c760438c2e4972e6a8b22111681120988136ab725f04fa848c0f50b32a2f1f40aabb0ef00220bb521a3e15baa15802d9e0573128b6e97b58bcc04b25f1a58e17fdd88b8e3b26d89f0ea00bb476b94afadf7b207e1057afd25a45a1bb71ecd37101c995c02dd1e54c1465e0100608ba30a4bcd0a54c0a4a70319bd6490ed49cc1c2cc0c5a9461f2c08b1dc278e2cc98229acc586774396b41b1fdc25f3f6f1e5eea006237cf51a649c809a3e3062a6c52e02fe4da039838e85bd824bdbe931387ff2427986abaa8c10421b0b8a2e405a2a215b2ac59a2cb98362c4c364b9ad8b283922c57aacc29b45491059a22aae80266e6b692d45a4ac691ff107f225898d88c116b466fc407a079f279b97aeed621c6761e408610f1f0893d05b0eb97344a3145799ad03f8e6dce58ace0c7c9fa2e31ba52221c7460479f38ea7b142452650598b0fab556221dcc505350a28b2b76fd211bd4ffa920b5eb7b4e349814a5619ca46ff2cf6944194290d90286236878e26e48b2258c1b1fa8786146dff3961bfdefefb4299b4a9ce1820a0dea490a4ccce8bbd19411256509c30a9c12c630136746df8fa64c005e64d041891acc08c26846df91a6ac626923841a2ea086f862468bd06e347a11143d6b5a9af62684b7dfb629d22627297d265d5233db3bb90f9de2f753fcde9b06d0f33bd18bdcc8ab44396b3ddfbf823be67bdf7b9df87defd96ffb7ed545d34e9c7302d5cd7e10f74edbdb3bb5698aaa41f9d2d3d312548df646e4516cfbf2676f53f4e746a1bbef6f356fbcd893690d993561f6645aa3843e057b32ad69b22954957991c32893365e2462309f3aad8b9efb13e714bd77f17baf46278686a2cb09e5b48983fe8a085dd2294694526a5433cd3f3ba09f29a5fa29f8a52bfc52a7becc5bf5ddcf39e794014dd8fc099bafc594188aa0389de634afeffe1efe592d9773399736be63b6ac51fb538a0c2fbb0f087817994e4e9fdf4f3b4baf88a64fe9a4352d48352d53bae0a2a2bcc0c20406161b460b68bca3dd1198a2683927c00a2b9e9eaaaeb26a67d439c85934e9c6e410ba9931471806ecee6ac0d8feee6e460d194c6aa250f304ebc3dbf59a09ac3d99d474f18debd3dcf87958b1f16be032d80c7f10251b0f31c34f8469bb36ae4529daf883f00b6dd56d20a175e0525fe03e65e6e13ee503711f3cc12bc87c5a7f3ed10cff04735bfc3af05f805f03fc4182d0e73e04aeca66787c090961863f575908dc732297c757907128775c165d2004886673943229cd885ae74f599273c9556b35c4dc15754416456c34891469ea98245cec4b4d49ccf62526366336b8674d49cb2e7b9cb0210688912af3222576a8cde81fa9d3080d2374a4062347288d1ad10792b3d6467486bfc80406ccf01bd1d9fdd89e1a7c01c1e36b3677109fddf135c797904a068d0b7166f885dcdfc610aa04c17f5fc8d00d4cd2d02608647b200762e4724ef490204e96b1589519a9792cb58e3232e4932aa1451b67c142192ff67c3b65538b2c4e3d20418313659a6673d226eb988a47016da710ef3befbb9fbfc68ba2cce55c75f05e428668174ab3eeb917a27b08f7ded3cd31d1ef60a08121883734c49024ea82139aac24b139a3059a99ff4fd98f2d9cca7899c2a48827337f72ca888680134392182d4c5e8ae6844d276f1a2668d2ec3466f6644a1365e3d893290d96ad9a3e19a0314377a605f3296afb6b0b324003452998bb6cf9d872ce9fc19c3333a13133c7ec2a36ab0940958adc7ba2e574883fee939f32993836197d61c2b6df785aad9f5d030abbb7b96d9fb3d62ed77f49e66d23b28193db7b4f34f56cb04fc55961af3b02212bcc7e4b08fb530c1a33bb24c9f87bb5a9ca863e509b92a469c6bd1df2001c2266dddbf77245694f2f4a4c7679e36cfbf3694f2f4a4dec1b67e6a84e4d4e5b7537b84e9188d9ffb10f64ff02fb1a04b14f64c3b73655a717985807855c2446ccfc3bfa9306b9488e98754fc120564b146d9466dc4f104811f77950e3501521f48b2c6086b8f7ba51049a43185268b310441869dc73e38daa305b9b2accd2744902f1a8b2014041461925dacc3e902aa3514839660033658936b3be349b68b4999fc1e588e64e9e3425a7290633b4997ddfe24755e651a5236dfb6e546934aa1e1dd11a6daaf6ad912ab37f84d2885459551a52657466974877725a759fd29db23b6d23ae4a3bdb8c695d92e782d2b456f0a3c37decd75aeb035de06de2cb47f7e2c07deaeb1b77f88eb9ec15f5a30388870641866c509fc8e7754bb508f7dbffd8138ada456dfea960fbb2090143a8b23d38ea9790f0c107c710c00f47f2e5c31679f5e076febc33c0ed3cbe7c70df7d3716b1cf8d3d4e8ea40e204740f57ba1ecf877a9ca62b15a63fac91a73b2dedafd12a3394eb671a5c2dc87ba685fdbf1ebe654d01b38e99ec7507fd23fe6ff8385b8c6a19710333c0e4d31599620cdee4f50080748ccb00f60a2b8b8c1eb7ef694776973ef7562f5cd71dc6f40c47de890fce07742b60f1fc8f1ee44ba63413e5565e1736fa4cac09980e9652ab1b939270ea5a41ec8696c739cb544dcc737f73197d12e34ee75700fe432d68c7b1edc6bc07d10ee87b84fcee67e03ee3be0de5eeec917ccc4363764fb7e2352652f213904eff3cf19c77d01660e0fe896123ef7dc736fa1660e0350d99c309a631ab1b99f7482d9dce7ed3707013c4b8db10ae37e8af9e2cb0ec59f0ae31e14812a8c7b57139a7bae13ed8eb90fd74dee670f974ff0f07b75bbfe8b6efdac32fbd88992f1e1bff33b63919df7ecd271b95eaf2b2e9d5c646767fcd171c518155b22cbc9308e3d8af442530bb5254849ac8d6b2e1c0d21e282d1a6b5273a88f7d6c99d9d71d21a7eea84dfaba277be9c53f4cee87d1020cfe330ece23b89318841dd15ec41e2eda3cb49fc2206dc7b9e0e27f1f800ca89af1e5cce734fb4bdf74620fc4e9bc274a2739023beba27dadd58d29df3e1109aee580855bce719636495bd84f010cd78c65938849e38cc0e6e426bdbbd2115861fd3da0531e0c0410fe86e795fd25a6be7e91b2f0aadb5e3dd78fcd42db5d56f588ab05bfffac3ff86388977ececfcb88fcee3d7e13eae1aff7aec3a5261f8e9d3e0a2e3fa1a228d12e91a27f11fc979b6996dc4b95de2dc3b62dd3ae2dcbe337ea131d2252e2b31f4f5bef541cffa956be7278881cb35d230bfe3a4e389ad313b89432174399d5c15567dc872c4d18ce7bb21228801c3454d8e38374b6439897f256a2731074ee21f52f1ab468df574a235af7bfac6f35c4665886a1a839f3ee1a766f0d334f869147eba06bfd35ce633fc5ee7ff361e774d4ee2ef461ac6c91a5068ff1a8de02903a070a9cd789e82423e6026090a0a012a7384960d58ea7af18648db3c6f4374da3c23f8001f758021932e591b6b775519ad5518fe9cb576b9fe6bae8dc91fa09a9318bfe3f79e689e08de5561154cd32c829fa0105d61b4cd126796663c3f41214459accc2218b31011926081a18819cf08e4f848c76f3ce15c375f3e6691fab348fd597fba735d9d5eea5594aef32bb883baf2bd2ea32a28d56e14f9f0050a20be3cb166db0772bddaef81b5bcd9e591dd2971625195f9e509a829967a4f1c83577f7e3ad36d836d9b64b6d7f6447b0bb96832de38bbd15ed1f33d4aeb2463136c3fe736efe7b5beb23e53eeebfb87548c39f933244257cf3604491b86d68ca510b4646c8abfbcbad7594652ad2d98b02babeacac29a5d737665c1ccae4f9b7c9b3c6a2c4c01526342c6924ed6e7a0689a54030a0d8e25514991be22da9093f595783c808c1adc23264e2ad9b568f53a9f14050275b6d2114930a2f32b91049d718a0eeb2ccf8068408b5263155d52242b6a00c449ba8572a15555656485e57c8e687d72be3e6d92d22a52a9ee54dda1d5e0f8d19e8644912ad112322338e142062d388031ab44559c9240410a2f90d8c18759fdedc55710d657f1673dd1ac25be80ac7e350ed1d9ea8966a493f53d9126d1284ed65f89748ad29625917e71b2e24d919cacb1099cacde133dbf249fb4b3c0f8a22ff9f2518bf8570d5c2e7b457d8f7dd27ecc7e05f675d807b27f817d1eee6373119f56242bacfee80072d2d639e3c4e972d26aef89b6aba85aafa81d4df1f6ac1d35f17cbcd933b246292354b17fdfe5647d1b34687ba78d4579d97de67cba3989f15b5dfdef68f51d5d24b222b83b0cde3480deb6edbf0a9cdc46df7c73a74f038aee7309bafcb6dff0586e5f6bddbe7e91ba891bf73497774fc03d97f118f46da22f53769f8eae2bcc33f889833af5af355aab9cca82beb6da5c67adb5d6e7cee8fa6faffdcb5dd1e60a9b167f4be3b762b82718642e81facc758b84e793b93d410c8014e5f707a2d83ec598de383aa22125614b97f6ad3f67f5857021e4e7ac90fadc736308fe759c85d0fd7c05e1fe73757156d8e5414277e32b487e2f27d491db7d04e6ac1befbd3f442da0b50e8cdc5bc55885d9bb64ed77e0321b4a42f78fdca7b4fb54c97d7a346b4ba8ecbb610b749fc7bd0fa4ca8aaad0f7f1fe10bd699b7dc92a8bcd9ebb415953d3a2a40684999a96a2da951af0e74d45ba7352a0143fddb8cd5224f7b94a306d92148552e11edb2f72120f39892f3572124f7fa2d9f61a02f57d1caa727fc8bf8eb3c2b6318857df1bf5246710efbfffc6a118c5773ce224c64fc6d1f69d4795d57102cd1c78e3efc0c8cc41371ef1f320a11d6b2731ae2fa58eae0ac3bff1532ad402ba31dd18eb8ddf7391ac30fcb3aa6e9b7d23a0d1241a05bf66f8a9127eca053f5da25fdc67d656f8b2f1d39afbd48deb0c7fdeee11726332367e8a9f1ae9d898cdc63adce77ecc6999856d56ceef155df7acad50c2ccdccc5a0d0e2a84019ff02c3b144f38cda35ddfd6d729fcb0ebbb4cd85589d3ae35159462b149867ed61c1824474496acb5dbda1cf3b3b712731b8e5661fe148480cff0134d9331ff9f2aa35134f7258a5493b6f814373a72247f4ff2bbc5badf1a75ba4e4af442410de1516594e22d3569cbadcd996fa95d324e9fea3d1b44e812537cc5b481854eaa30b7914597574ace7b76c92ef54de33ee05d73db349551ebe114ecfefa5faca42fd84d4ebca7d168391c814c65d06ca55017ca7db00a49db1f033c057f3eb00a49d38aa588a938e98f955ef555dffe679fb89e041fc82775bd00aa7a206fbd513dfec692a8552bb9ebaa35b2e88ae6504ad2b7dd03d54f5475f89271d2bfa6e2c489b3550fe4aa578df7498b176ae2f07fd5dc2fd476bcc57d2817f7a1f7c94c06dfcf4dc5d7b5e2eb7e5029dc30b5d23775fce43ea9f16e71721ae0f1d311085d42a0040f623c81658ab7428309544a401a218519387a4037fe961b7f52086fefb576b9ea2d85f0be9fbfa734a7364d5135a8a527da9251adc969e96b649313a50f54ebf7406e450f400cb851e86eef5ff5bb1143bdea889fcc6c0ee9c99fcc71f4ef5213497932451433e0700614261390c1ca9a273550b070c3cc2d9e4d2e1e26dbff491f665305457abfd9fe403caeadf8e96e11e36e69a3fd5d218499628c12922bd28461012d31403d51f252c61b233c479baeb8a31b51a6f630ae5d89b2af8cd9e5db5998898175d2861119fbb1d183ce3f4121f96d38d13db23746d4527d95d179e3719b61d1abe00efc3703fce09c38b6b1c465d00e626d5b590ef3b736037fd23fe6ff7351989ccb8be73ed12009739138016661c4143ae0285c92595ca961b567ed4a0a5ab8787ab2ebddc7c593c32a8f413fdbdd9f6c5b10799b4b176800c4c3f5e4b7674d29ce2e634979b241d2a49a81b48de53606fd38316355f6593861805f68712288c0172a4c8146892ec08cb1021733556ce84109174a62bca65466777bd694c6a040763689313d4cb4b72753184a6011061071b4de93298c1c66d839db9dedcc633019a3c91851c6a032061632e64c6194d0aa15c4623f5e44f1828a1758bce0927f0930c4a88151851460848975572e577feecd73ce49b78aedb5d6baeeb5b86e9eefbdd7eb3a7d86975df4de4c75dd1cd77befbdd6de3a752a7bc78118ccff662e89b63785524aef57fbf55e7bed86effd6abf5e7bed575b6bad750cee8b19237fcf02fcd8153661bff1ab34d04365f376f7ddacb51a98bbdbf44b0c8f3ba3a72a97147c49c628d06941d32f2998139652e5e410dcc06f85f7e7b1ecce37abaee007fad0804aef5c6f7e74fb5060801c23eb73d273feb8cfe3be4c252a45531c2812af4e20675243c48641abf6acdd90a48e118ca0dd1ce99255b3c18b6d430e4a4e7619eb71a2a44489d66f54d02c285c458753e02d60ee19cddab366058817f46acf9a951bae1aaddab366a50510581961894ace79d543185a3b15463958e8d41434550f4cb0422994740f5d3448c553aa071c687c5138853d20815e9929a01911745c154f5f95a71757c6c9ab0246279359ea763632515c6c8814fe72d63487cd5c65cacac9a90a131699a32a469f15342a6db4d3142a57ec543185526952e92994720d1dbcd9e369bdab76d594cd599b3914b0ebeb9963db15b6ab4823b5b58d1774994acd1cfe49148ce7eeee1ba8eed5bdd69ce7c7e67b94521c93524fc0a460be906b5b30714c4ac7044c72be53f7f167e29873feecf9bf4bd7d4b1e7bbe693f363f367cfb466b8321b55ae6ce09001eaa32f679d35ab8799bf9e02c69423b6ffe68aa28a55fbd5c083183c80c065850e5e76ad6fefad204a18275fbc2cb10298998e2fae8082840d1327679ca1045626b32a48ffbc03971d9a78a8a20316a4075196449591c58c2c63dea401e712466666c8e18a246738b152e26cffe211418320b3857c6fdb38270e4a69399b763522746488d278389116398c8aa13f4a2b43b3404d951419511a1c4da3ec92e793ce39e79c93054a9ad9064045943670b080e10b992f717e3821051a4220258c3503890fbbe659add9da8f0660972c2952d4a4dc70af93713fc27198f96b1caa6c7f570e276ccfe1090723720b4caf7f9d4b186f22e93ddfb76decc924860d5328d1f3ef19badbb3664316d7061b9cb0c2861a14adf7acd9b0c506251b8c92707df6f237c62a67fd654b9763b50b6fe38e8872049523b0386c6ece3597ec132e9cb517265e9a7889e2858ac3e6cebf94731bb0b4c584c0d608a41d74114a50382f4f34e0239e6a508eba3c35a00b1414234d0533e99c3d6b494fa4d1dc9eb5242578f6648a5a52decdc1368eedf997feaf1ebeebe3eddba394c62acc7377b2969403a2dda562fd89409dc5bc67df8ae4cbb5564bd65a634ee99ce0b7cdaee93f71e8f8e9726a78ad395ad46aab53dae364ce3953aba9f078f0bde3b5f8e25aad4f8cc77bafcf9cf65efc40ee138f94526be78643b771dd15dc1517e35addad7d6a2fbe4f6d7d6aede6d688237bef864225da5a95bb0e5b4fa5730febad50007fdcafafbace5d8e0bc1cf7de6ed38fbf73197411f1fd8db5bb1c4db7e91edebbddbf6f5ef960375ebfdf4ba7a64e7aff9ebddf2f5cb59eecebbed2cfa24f1630fd46da41307f66a999236fdbde7c6b3928e894a6ac2da255dd3c69b247994ed3fbdd6c4761a657b49a76cff5952a5ed4bbba45ba6acb60162c37677f7d966bb17c9a0b4bdd6a6360ef359b276ce3d3bff24b3f3db5cc30f3bbf7e42c2ce4f9ed839cf1c96f62449fe0edb3627d8dbcf1d320d6ef6d624cade9a64b1b79a1321b69816baccfaa8c2aa2c7cf0fb101c47da3762a4361546dfd2e8ff00d1e771849434852ad1a75b6a5baacc9b4a5f4a9a42df951ccabd0d8572aab26a4497664542ea80be91237589ce68d33741791ba5a50ad5d4510e6ad3369496b569d38f01bb646d2cc3968ddfe2cf4b369e218b8d5d795f6b4b1e6b6328625ba417b6454ab3ed476dd2076fa1ed5a1d2779aebfe4bcf4e54b29fdac62f3c5cb153560d982862849120f4f5520098193286e884860c2a8c99320a85421614654458c302e90b0830f48bcccbc8ced6294b6df99dfeb2aa3cb9f167425380c34ec9add8f3043c97677d79452b0eb0b6936159ae5e2818188036c4f678e4fc78f7fbe8fc7214152a99148856d4f34eb72c6d0b9d65c73cd474753b451f4d6c48d13b598fbbc7cd0d8debe0615bafe86454b4310b31a4ebaa4479b1e6d9fb3d6f582c7e3e321a2191e5d15b6fd9c6d1f76d1dd973f7bf36d83d5fd862b3134d18c68f6e5c5bb832abbbfbd912ac373f60482ff8976bf1cc460033e6ee0071027b7ef3e83fafee0fb48961fb0e29c935aa0916cb188bf7a74ff8de525da15ece1e0587e60fb577087dd01f4281441b1ccfb1bcbf9861a35d525bcd9537a493b3ff7f37eeefe73f7408ec19ea08f19c5b6dd18947f7b1a4df4b63d7e20efc40c744bbbc8f6d8c3ef7563c971df734fc11db1bd8da10bba9c4fddd2eebe9c4f597f374e3c7e760cea96761d3d8f5624cffe68df82a2ce11fae29b81e9b48b6423b4b53cf4cb9e041316286b5894f6c4b2b4ddddabad615192b3670d4b13ba97205385138e45858a7b2a72a91faaef5be0f7ad56ab95eabd1c4e7fa91dba887efa33350addad41229bd30e6ab15cbdd61c07aa84ae2627f8e19e7a44dd6ab59a4b40db73fde818a93f60409c3870f6ea535f7ece5a7b3bbf0ab915c709ddcda99eebbcceebbc518f2591ad85aebedcf720dcef73d69aebde1b8fb6272a8838f9be98e20a1ca4285bafa30a89ba9c994a3d1886dff7a5be158661ce8339aa9faa542a87e33ccefbf07f783f522930a7e5e22139a22e7cd7ce974a7dc913c462bd2bff07ba4050a7d56a813ee1ab47c8f548a5c0564bccf994c81acbd56b87f7ddfff0ba713aa9593b67cc004bbf767c9f7a0d66f0daf17df83dbeb187ea7b3dbe76a43efc1e29afc709504138e4d0cf8993165198c92104a9562bd5b2a9562bd5b24752e317fe83cf7d38822b60910308150504abef0b7f157e2b1586af411004c1f057ad4e7fe1f7f5ec2fb5c1f63e4f81ff7dff02c71fde586eb0bd1eafe78b9113fc74441cf83b3ae0583a276e29e717970e5dc107226cf073beecd99ccbf5bfd3852b70b56a05f5f46c6e15f6749df72f70ecf18de506fb0bc732a8e7ebd15a7fa9b7efd9a931033dcf2da147f44d171b44994b298c4173031434be068d30f4bc55aa86e7adbcd4ef84291a5f230c9f3e8da06f8739622896748720e81c08fece98f7d771a158821fd2f81a200986618d7ffd8bc6e800a21d864f23e401c3f0f5e1bf6af0f0b0c0f05fafd101449b06c871abb1548521d1b7f3ae9db1f4bdf33aff89a15876c0dadf0722ec9d577df9edcff53be2dca1ce4e49e36b7caa862881164d630cfa36f8edef0bc3158dffc6f2db5fa8b3b313ee7cf8ad9d0f7f27d4194ba19df315d1f99cffc652672c635be753df124b20bb15ee7c4f231ccb1a345ce0bbc00f272081b86a8ce5ab060d1a0fd278f06980cfb3c1f7e06b7cd5185f3c3cacef60872e1a6319f4bdc6d7eb8bd4781affaaf134bec648639c4ebac632ef9df11b4b9d4f7d29b4c3b16c7d8ecedca9b10cfabeff520fe42b91fb9ca06fd3f9e0675b482374830ecd59f2c4164e64d1644513659a3001821cd74a7d9f9035f2a562af852c1772a190cd11a9116d44c8cea558c76285407697c1b104dffb176bec4164774684ec67f3173ef76068029e514f469a844c2489d1f8555fb2bec571dff7ad5eb5fa16b85a7df87d393939ab577d5fd7fa55a97f727a0c626d0e0cda9f83abe73acd855335962c8e23eabedfd1c921876c6ef565cfee7876f78108256b775cc775a9cf9fa3f254aa56106b7b2ab10b52b1bc526f8ef3543fbf5389e007b1f67c2ffcfb5b389641ac0d8e1960bd78ccfdc1f7de7bdffd071274d1ff8d1274d1797b29cc26aa448aa024cfca138d9f1526ebfc4e059f8ae08faefb5e7f9fb3f37d5df7bdeeba9cffca14fd9d2396add7f91dd103ba43f5544794408b6e8daf124bba5520e85cf6582cb0f33a4e2596e0ab5ee0e800a20d92afd58eea55aad6abfec5dad96165ef57a0d7716508538f654a25ce3ddfc543824fdffb88bc1cd5c87a4f2c9fc8fe4ad7ea83a9fad497daf3f4abc2cfcf6a81a5ceef7c8ee801ddadd68ece28643d954aab54e38ba57a96ea572a6b647ff3bd9cf7bc07e1c6067f56aab164adc0f1a5f345540fbe8eeac1578115b4c66f2c8148d658b658abd583ab077f05f63c1017a8f3606b2cc107e1c66eb1c6d7ce0e4b67f45fad5e3ce66e8dafd61761fdea5bac5f3d6b9c4eaac695571ad95fce580a59d5ab3c9d1acb7014b29ee7fdd77579bcc182c6678c3c5161f1664f3997b0ad2f59bf02c1544a2c733ed50ac3d56a05545bde043fe5817a48a76cf8a0178e3fbcd677634bb71ef45aa92cf46a8d3f8e80ff4a8d3fc2d1fb7268779ea8cb10b6feb9734621b73a7f0fa0df89a52d8736d7b1beecbe48370af9ee5ef539b49c088aa5910dbef9ced8dde708f9fea0c6891307ceee3ee74bbb39eec194e8c1d06e3d27962c1f43bb08edea6eb556a2045a346b14f2edd9cd756339b4bb55cba6deebc6d6eae773acd67b465aa92c3496a9f7fed52a8feceec37fa5c61ee087e310ebe56315c25efddcfa3b21bfe04f2741f05d64fef7a59efb30057e38f6006fa020647978b828876cf83d014094a21f1937a0b0c0dc484246084a2c04b3bd77a3068dbfbe7fc75242875fae9ed53d15bbda0f6f36fde1ad58a9f041f0bf6f058edf83ace7581268d139a32796747b9ef2c4f27bcffbd737fee8ba9fcffd6a2cb5e7a3f6439a5d5ea4bdfd4dba48ee336b3f34b9531cfc4114a403fe27965d12079eb6f781089bfb9c1f25d0a275de134bd5e707450f4428e9ee74c472f5ac6f3ded9e3e4b94408b5e8dcf71e07363798fbeef9efb32e87e630f0f4401d509fe003d31672c5563d03ddaf4bffba1ff1e6d3d9641f768a7c60cdca3dcfdf7e0d8e3f3fe860a9afbeebd9f4b6219c45ada5c190480a8cd8d20d44d9f670a5b7a20ea460d57896b81670abb296897309124e81eed3bbe7cc476fdd8abc7b4e2864d8fcc982143060d9aa7272db4b8e28a3367d2a4e152451550505cacb0020b2cca94e96282d1c50f185930f5cc30c0da0a9b3e585b61082a2815940197a6a01c6dfa2928473f785c642eec9ee09d429e914c3727d036fde9e60420bc69009de2d962528bc48611499bbe0d23928290428ab9c50f3288615131ae2cb44ddf9585c693054f1641dfb62178f5209d760081eee7e26d7fbfe4f909b3579c1366eb156fee17671e8f9783caf2d7041400b667c785631bb07a4bdc57587d3a65799c75db766ce374b23e77c732abf408024d1cf5e9934ed6fae5e7bcd15c54e5eb1847e6b3303b30d9fe1f75214f55e3500ae801aa08e3bdb808f1ea2245003c0a68dfb3e6c398d922430b534d0b10940afacd286601a8f05e43bc88a81d19d125262441b3a1a47df8f213f381cbf6af200804ec5f578589f5e7cc3ee7823f0f7ffd03e4cfc3df8bc5fc7ffc8178d42a3682d0a5ae32fb84524a9594b66fe28a8da63b6fcfe56dfb6dc448d80ab6327358a389c323e0334bc3ee741dca7a9b6a64546bb53af9923b3954ad5527f725ac84ad704bb6734b660e0c75b43d9f2ca8540c57e5492c152a1a09002008023315002028100e0744229140309eca82d87d14800d7fa648664e960ac44112c3280819648c0184100200308610a0a1a91901a0768a7d818b7eac3fd089e1e02090b2aa5f6c0f40436d794201583f976c2b742ae7b143737d2f0f73528b88e1dc0ecaf800590a2eea4c0c5b3a3e1ba4262520a01f590725f6d17ab392f6e5dbc5e76e9d9082e16118440b27069720a28951b40515d0e9919a69f439df911f56fc5392e53dc71b9354fc2c3c673ad730c4ac1d183c48851c0a3cfb22190626a60000987cff88102662c39aa737c7873b49f9323af0ef2b5b136ba4706ba240fc257f959908ce4ddf04d85687ae11071bdd97598caaef3c6dc34745e02c6983dae976251c64ae8a4c5d827c0983ee644e37d8edadeba92d22802514122174eeed4ff82440713b14ac3a32e6495b1c4e338182079e28ec71271d86a08c0636f1482b6f923b95fc10a19992acc674b4267bd2923f61b80b29a08fed79328fd039bda46bee4f05fad0898f62000b5eccd559dc8c27fbbbd1b3791ea979a8651432a08e2b0ac2666396d8ab6e989a8f79f2562424b82047eb1b8fece82eea58232c3d4b6a968c362e878a3507b2b0dbae3da9d3f1c3a616403f0ac53c244164402dc31e13ceeb421c0b41f08c81f512f827d2e30f913493893e508bc5dd97a6b711b9220103bb94ed390ab4bdb154f2f59a723943a035ffaa958bb6804106ca3cef6ec0ccb91045bec640b5c17163e46079569257c4ae9b911a3928c592502e480561af0e86dafb9aedda79bd34c5d24c1b2ee75fae2507038c287f6a07c8b52b112040f427eeaaa99cb5be0985081eb8ebeabeb48a229c1ef1cd20d6c8303a4686982549e57c9ade882602e6539c8571e47749131f67d6b01e382aa869bc6279b9be04c0f20bae36043b2eeee31609e65eb00d61039069458b33bdfef974057419f31635bc88cc82a935c43da2b6528f28e13b60ac2cb14be07a052463eea48860b16a948da52ac3fa74e44d5518facd210bb139899d382c1db1eba15e2a7bf3122a90644bd74c08c94b8a207385c7e0ca4c2c1921d55317e68ae247d4b474a5df07efd2d79b30269fd0b1276010f192c38fb7b71a517238a81b15544ba7e1727099fb810487ffd8f964b9a5d320de0360076b6d43ff358a158be0b95b5c1fbdbab9abb56993d908ad57d4193a7368ae3ff7c45ab6fbeea343e4a4c4746d54699a7b86cf30f86b56b8ff45dcf013fa526e18f8c7f5eed97f1c57bc18684b2170f82ad682de855404bd487da78f8cd0dc7b5f73334cf757dc9110f765cc8ffeb821e17dc0ca45e9881ad4d25f94a213d4ec4b63e6fe18281e18b734166b01a56ab553d26628b5ff64389e49e8effdb446a68c75139d9947c6c2db276fd10903c249fec1a764028a9c5d8faca710799d2ec611f3634c9b1678e9b44052a3253ca2523cad4b622801f49d6e579f4894977d4a22d1d4cc6a3c30851d6b78823b47b1e03736329b3ae9974a9e0702f9917d9832527f2ebe86c77e2c663c6eeb99d4c8a8e69f89e3e9c79b44c14d4f94c882a77c2185f265fe28bed124841d1fc085014cd8991af2b9ed8569aa6b77c59700b117656c0acd99c7bd3cf7b0d875db068ec1cbb4b87ca3ae896fb3c49d69270809bef33bdbeb14d68f3d03f0ed057a38f61a08c335b67e684b805483ebb6f608def6ee44817f92345c54f67b3b0c4563aabec76ce79d3fd2873208b0931beeeff683ca2494015b1a7767805400eeef2d743560c8eef239571cc0980b39356cd346149a5f95ecac26fc30c7b7f36b4fb6b25730b1a167fca5d7ec7ffad310885d9e35a741a6b8a0a7fd061b25cb566d985db4ceadbcf9de6f626e281fe461a9aefde9b975a5e191e3f429a5d0a0936133efadfa75886bf00a19806a70108c903aec9fa7651afc2f5648402da2ff77b2236ff1369c0c888a0c8115c545871e7543acc07ce137d47feb440f2c7cf03fa720209300424726a17eaf8900311baf9de2a43d98b08b0405703e5280931b2c474740fc1ef0f9004de005710c80409b5d16f8870448b8a1e117e7b0790b347894d841ca818d340340aa86361607e2bf827815108d41ac02c898f328120e88b7ca63ed1214a4215f6799fbb107517f8828e51745a3889ea295cf7744c86c1359408aaa12be781a3b80d22a0b255533c4ededab00af6d407bdfbefef542f1046d9d2488ad7c48e34807c24507cab2af6e0023ea722bbfd7fb1510ee6d1cdd7ea71546c38952a7ba765257a4d78dea1ca278ddfad8a9f55cb36cee74245bbc3affc7ebf933c5eb701b5e0c908836c16824eabe33f0b58bcfd30bfd1df4443b7ad1e3551118806e2d2efd6205fb15c0d064f01330aebe43e8eff00587d536b6904304158ca1559c38efe7185aa75dbd894078258cfbcae13a4168cb19cc4cfba1840850777855ce2b3811b83b9f039f571057e092df56e858645dc3144d094ddf3fdc891bf1640140efb87bdb78649d8e6eb845c2be975c4077dc21c1dc896e81d2f0028519ae90e45f7eefea6a820edd90c00017c9c42179d75da1dabb22f2d520b05eb81c2f001b41d8353c53042c46d6d5d30fdf3afab8376d05ed954c0eb7b8d45f2e5c69539eea191c6c8320ec9d6a5496dbf0011e2178067006c2ee8b3f8d188120ad5c40b87d820b5e4164167e3cbb3010760891fcfe3e2754d77840be481ad30261bb4ee15ed31684fe942509d876b8e115351e80a382b2e7e365fc55d0e83a967e91c47e283f4539368755d1d7b9d030b860b4b040d817d79e64370b14b52b12fbdaf3a40843b6900df6d6eede028178b840911e1471128e624bcf0c391eb4a1a69b935587ee30341925df93159c2a1bb7690b6d31667060e1b2a9d03a0b9592b6ba713a4e2a4b4238e225591aac90c7c5b22283f88480ccaef264ec83bd4166fa978d5b89447a4c9ac51ce15cbc8a051ce26493f81887afa0fc8f08cd1408baefc952a83c30d150ee0cd338f10e7dd40d024a95e250ecaff53253c8e34e9e395b4e8637a658d309f799a854771c584412b0ce8b90608ac4961c5ea9bf8e0546591a5b64b5c5061dc26169f01a46a6e1d64faad96f8b248c6daab15b8fbf2181a9522a25a58f8a01b0a5afdac3070875153e8d8a664092a2687b6124cb8fb45547464a54b62442eaf1b67c4280052188d0d00922a4b48013b5a439cd463b19330e52d8b01c84ec1e5602c489e73696d5a282aff880269f1d3a5003622b60cc3b85b9b9a60a84462e807c3207fc387d10f92aea1e29b786b2730fee3969896e5ef0ef62a0c5cf25ae5cd17ab43ba7474e2b48d7da4b13d35d8a905faaeead05243c5d308b2fa26971ecacad981858e07527b4ce6eeff3e57c888000ea9f3f297379e83a3875286f4acc3025f2bc524d747aab05db8b1801f6ba7240bb227b45d2a03bccc813a1c5aba876741fdf4c140defce1e85cd232e53e753a94305a8396dc06be5faa571f40a8ddd8f3f4c882c95e52c125e1ae36d7ec236217b2310ff197fb52bf58ec4863ad34d649a9f7f7904f62aab4b9817c02ada30098147d33b43447daaf88bbf23abaff8cf365a3fb570309a27c30f43feff585138ca2fe7fccacbea3350810317a10e744e82761da1cf142bdb17e8d36b319a48523f92304dd65d83597a150cbc233d50b11323159aee13b1cf92ad37bbcf01523059f44a19ac8cd1020c0f83c76217c744a62cd2ba183d38a3931a6ff81a201d80f553055c8baf8646c610b441686507979e9b5e7bcf167bc459a45a72f4219768644b2e53a2110b1109e253721958cfcd44b06bbdfafd0d412c4f306cfbfdea235a8e67c76de70c1cdfe0ed9ed1a098bb10711a4253af1a9b82bf11911fdc813585a9d045541089cbe81049d442fd2ec8c1c023576b9696e3fcd29491230d4de4ce80f2b6d4248339be4daf30e64f850c103f54a52bb6c797e244296bb5e1b8e36fdd362e08af4362ab62755d6aaaa3b181df0225415e49c060fd061a80dd983c7d17225ea70fd4e3df007044d108be8c173dbb5e2158742f7271d526e2083642c37e0ac9badb95e945fec5af9b0ea29a6341ac0ee18e5837b9d215242bfa2d93551d2924e5c37ae5ca3281e66b2175b68a0b360f52ccb652b91f3acdb8c9b243259416359b78a09783f87222e3902c3cdbf6212940c11fb42a66d98ca3ed194e3be815194b036e0f247407ad10810042c2d3b493fa91b9964ada724e21c835736794f9fbb36027705437178fd0b624a2f83d0d020d81655c144723e2b3b6de7cf4c4dc9f5222730363687f64830f59a80fc651dcc450e3eb44bd10f29394651d97e201cb419557b673a41532a9c115295c24d8be6553e5d08dd9e9411ab840030ff2760cd920061df018b63c5ea9bf0bd2e90670bab1a87cc0510a3842c4cceac8aa865af5ca25dea4e36bb90716f41a89f9d3cfbff91a6567a81b519bc8b1d7f5e47b172db83d7fe5677d177dadc423196e496cdb4e691032797b3ecc425781a2aa66577b80731ee02ba5bb51610e87a9053eefd2e6e66322f55917c26fd364d36503d40eb883811fb2b3387787feeb7b0f32464ed72c06eb4ed56a9b3474a5e1e9ccaa980ce6fcf64a24b4f450955b4618186aed1e455767f9d270258b13463d78c0c416f7e5970bf0c433b86948f18d599c10715b885d06468c6a413576d53af52f5f04910d09cf20bf016275031af61bb4568186a54be73557699bda500ed040da95126807db1023d17814833f10689a6b4499be0655fe97aaa5fc2f0da14c20487ea91917641706102b515f56a9aa86ac2ac5630efdefdeee1b760bdcf258205621554a803668fb4413fcfb9f945e0264e725d3ffa25f39d9b4ad8e18f878515aca4066015a43fe25365bab96bb1a657624551915840d300dc88f97d8adbf52636d42cc374e9ef0396e271aa65e08988a238464600c396532575ef7f32f4d52ab9b25fa7e41d9a116e3a50a52ae410c39e63de70ae29afffacec29b4826061addcae1f794372493f20d6452ba41ca04f8bc9d437c07a8e791917dff2dc0d8363107ef2edcb0321c75c5e6b4f98032005b7c67fc7b1a6e9469e153b61a458b8e679e06abd0265093ae3b35c6a8e3dc6cc4cae51207dc6da7fa1e3588e64859f93ae1821dcbc1db10c4831e069e9308cd86bef0491e8dc0ca279da16c5f2d295357f1dcfc6e688f1fe475b54012fe96a94ebb38e6fe4c079e6b2baad1958847dc7f1ae983aa2cbb1509af9a8181ed1aeb8d0c32be37153f05ed448d967956318a080c4ee32749be5544d48e2caf8129c96afbe636166daccbfb06d69dafc2bbfe68063c4f33ea0f235ef6b0637aaa1e6cd4751180469d731168128024f3e11b5f5565b47d0e179a7862461216fae9b2779e5d9bfce636f41578613828446514663c0968bd1803c9c92681edf76cc2424e8b7d5868b4a044aa1b4af2e23d09840d4b1620ce0862490fc0b73cf7ca1dd3bdbd8e919b0cba513931c30ff79a6312e9bfba5805ff5ce7604c8d9a9b32494f2aa97aa6fd7ee39939d672c7818a8e69f940a68edd87521d5867b4f12aaf6bea9ca58c889a7468400141be10567701fbe783e1275ba16dcf1e30ab95e609819f50b8a47005b7f86681cd91ba6de3205978618760e6789a69ea89fca24bcd927c296aca645c67b7bfbd058dfe53d76c1a5da8d06832ccc9b9c42d80cec29d54245e26f182df44d0bd8725a181be60359522b44a578b1e1fe0b702b1ad9a22ce46028a814d28d1a95fe49769479a08fbda550007d7d46419e49958c0a744d977b109412ba1e523626ade01f1b96388f5e65798da568a40ba23292c6aa06dd732fdac0811833de917836041aa9e0a367c205311b318e9149a47f0cc4d7f021feb4f67a7bf39d4e06293d04f942e2c26ab212a0998513c05d0fa9ee622cfc7d9d27e96b7cef147e3df32657dce4cf17e4b349cff5878a71b36ae25c65cace40377ae2976e8658ae1a1b94e47b585f4cf335263c5bc785a6ff216777d782cd2f7b764cf24e2c818a141f3daaaa3c64bc91679cb7ba3d2f89070da124f03d7e47a405b68885676f8c8ef9bc4c3ac7949d276d5d056e537a881574107295b1701a143428f4923b7b596fc6dc091aacc5aeb139033c7e6b6183829866e84c08c4d79e1c83c847c636c5102488b0f0d11678ac4b5d0b020a837fa417b22bc1900e0fd5c2c1a90fa2d080b809d862d2e9173c41420533ca6644e6c217db181564b5a745e7f369b108ae68120fabc42e3bee7bb277ae819bcb4a7bfe823b8b915c1064e227eaf9e23dd3c9df98b2617466e335bd60be5c35dcc2eb6b177950bcd14d21a83341a56b9d91fab80970f874d432f76bd19644cd864f21e62b3872f9ed5931764c32202978ba6152c1a070705cc1a461801e18011c699745b241f86674d5c34845342bb2e494d13bad7271924cc95013a49a8c87a201529105ff28579d00c916c14c3f6c442780e2d4b6f0cc984cadfa4ed6036d1072cd9ee05140341b2c78cf205472c2b9516c1bc4c815ba9fc11c66c91db56f38b7b18ce035f7c39a2930fe899159cc664920f1e4ec347f660e9b7d6c508a6b0b6a06296c21bacb8272d5a52c68b29551699ac4c46004f9c85caf60c3e5b0838fb36ccdb52f5b99022ef060ca8505ced54f06a6697e749fd26958f337652d7640b0cfd3aab6bd8e55dda9dcfb89494c905d45769e281295e1bfc3c6c1c39ec00098e555ca50afd14683ee2ed02c71a4b06ca3113efda2c7047c2cdf9d334124960df56bc4be18beb3f9905b3b226d52663e559794bc91751d27860b9b4fd00ef8316e11036dc39ae3853753060d5280f7f46a29e540f4d494b6bbc098d11b862c7b5466d7be9c0ca13a0f5984ada99f28f203c10333a09337fbc8c8ed65061a8940a5cf874406286283d2083b0ded2e0e00d7a3aed639042294347341472e77973beeecefeab5a266be2a40702c0021c57c1e993428d21321bc40b3c19707010369c2127e426c880a8f07d2b458b56f4c02c338e91cdab1e6af8229abb27dfdfacb3123080be5c21eaeadd937937019571bcae4090ea0003af322daaa510070257f5086694393478a0d9c116ec83fcd6b75efcd41047147e01a71307535644acd3534b13edd0e38ac710d90bc18de2a5cedfee95cfd7efc0b0a3a55284f24e80c39b9a138a038a7035a6105098719d4a97c95a98d06af0326ec5d4e84f60338dea20a15d40c0933a9d47d25f8915c0b845f4df930fe11a7730d1ce505046cc83814b6f796c428c430374a0e683e70ae15a4bff9df844c9f3c6a8c15166fe5f08622a5e76e4b32f55c395f4f8c39a763e3d804a484ba0daecc2c4f57d57447eae156e619083c1fb91effee082a55bdc1cfc5cca3b0fa22a058fe8accddba9fe7a5b2ea43facbb10a96f51887332f061ecbaf509840998a553958ee2b2b72b9e49acedf848cbb87d9d811d52ac35f4aa7aa415d8add9582d1d59c44614b3e8596843c20f243c8281f9dc8f20f89c973e7ad93b5f65ff651eb5db890b3ff41dc1a267dc1162e620b611726b988478e75c762925651e93b27c1183f94267abc087e4196189633c5c71320a4d2c962cb5618a73025b596c0361a9802a30cd8e88abf1ac0757686fed7ee88701876edec9b506cd11438a75432a6d2d5ab906f99e49ccaa715567826000a2429d653e10c4bc5721bbe10934d85ef8780366843210c1032fbb62f19b03cdf43702495353db950dd5524321c7e5b5c18c18473d627af884113181403e5498a8a861de63a0ceebc3530c164f613163c525d428f591e7d6b38dfee4deb5d202f42418b6a112d44abbdc0a9955eac615bda6a6c080503d6591efa35f7d3d01ea10223efad5b4d888d49d197ad598e5114d118b02ae04022f684a7dc11445d85a1a8ce3e8cddb2ac35288820b263e886ba932cca5a1a40040acdfc2dac0389fde32c5807d5d3a2bac83e187b7bbb3eba34c0ad15fa4ff4a59a84900d3e0f7a94b2ba4077934d4299708889a09bf6941897ef4d54ef425afe9521aeea7b5da47b685eb4586b3766888329cd28b028be7ae8343f314c2864a46f2fd8a7a68019b52746282329c0613b0d810048010cfdb02fe0489b29eb5bb518ce9f5d44ceae9e2297dc03609e667f2f5bc872d2e0174f19bee0fb4d65afb124a2a661d1b00409f872317e08ebe00a75350239f495433e8e1c439d62e8b41959103400d1137b657822a277e6c9f4af126dc582c26c0b80bfb4c5e796b6f53b4538837df3789e7126d836c4c9ebb76fcdafe1cc858b0746840dee93f074d678498712c3009db34800e76f5581a8a02cc196691200645d057233a5e2fe6fb4e93fc414dcc8ea5cf3291b09b903e4747ea3d7fce2c7c27add38cf82de84d581cd55381a51f633e39b8c93a596fcd83f6161f190e8e445b4081639e0c3a2bc16a0ddc1f724dd9873fccdfc08fd8c992bd3d848c25f38b459d008898a07fca0221488b735adbe527f14b932d4bde7446456a801a447d5c9187540d3d44970cbec3ce406dd6a3767c6f2bf499b8ac044b7949087382c09fa6133bb325908ed0a7ef1fd750670108aac62d1999084d211d40e9ba04822e006d215c3338e35ce8c3ee342f0eebbd14d64d00b7f87e821cb600ce452713f0dba55cfc3f514f13320efb7e82608548b4f80cce21ac7b45e0a4c642ea2fc99f94c09162c097441f0b4c2079bfc963f17a04c5abc8244ffd3f6842d7ad118b6eb98d2221f2d3d7c80858101d4b7582c8bb93da6aa051298527ace49a05a56d52ac3fd37825548980414049b2ae2cfad02d19624c025a18c3c4ac804af6dcc22c6070276946f326b87bbc34799e3d60714b1279c2a00cb10ef4f4728161c368e3cbef67040ef05955506f6d2d729b9538f210abe21f0a246d4d70fb81a8409684b4d9c7d1bacd8ac0259dafc16c6077e1cc363f2e7dd53ab80f3a62d3e311ff11d1715458bd139cddd8b8d839892c78012c5755c4bc73e18d1130b0d70600cd99f44eaf3c5ffbc89b0f11ce348b5210bd67dfbf958f8a0018cf27bc60e3aa436d74e93413e506a5710185417b4301701ff40de9d2f9ac8a24e4b3d774ce9ae0b3606492590e01e8d5b9c22eaa1ab58379c602cac366edb79620a3d0416e211b0c1c4d85f1eefa78e7daef1060b88bfc7dd10710dac09d60ce3d7560659babf11be018ee4a84c05433d65d8609387cbd10c35860e1894a0477ae62832f1c3571e9192686d638dd43a5d56d3ed0a60c5cf25ef25d66120707da4ce8c7f3746f2a02d04d3cd760bf9fd30f68acd18103578e029fde18a0ff6e8a173770c54907d5bc6e3733af948d08b5f19126a12d75825d711c963c5a361b2204a264d7c4ef8be29e55d388da1a22aa0c0bfeb867a2b39d43d6d04b4fb33838da1892cbc93060420b04213bb97dcb16b8630bd13fc0c40d23777503e60e385744dbfb8968ab6945ab0d52cea56cbf1ff482bf3ea2422406abc282162e930f2992bdae36e0398bbeb005fdcb168315f54a245e9bdacf8531ee7ebe6aa3cad5453c449785977a5a1436229ac5c1dea661ddea5b522e3a0d374069602829be13e161eb7293caff4bdc64e90425ae3689d81242a6227776148acbcda47c24d7576d9b3c55db62330b63dc8028817e2c7a4f4c6559ac92ddc05133e70701f415febcf2d1b064b7178148f60a32bf10b27b328ff8dabb0d688ab45480f822b21c855ccf27a6d7f16888c44cea2b614eb5beafa4ababbe1d3f66baa80369da1e0d2b7964b4d5d6f33b8aea95d4719141300861d452e318fc63397d3effbd8cefea207c82844570672a582ae64f300b6ec358355bf4efe7c2f659ca3ba42a801e5d476294e62ed53396de74679314eee626dcd1bd936e54c5abfbed10725d2b950cfd5b7b8b1e303e27cf19a119b811b250b19267a13e9f63b1614ed94819a7f588e20d42890c0bd3755dd09a12caee7f25a6ea127b8171a312bd1c35d0424018d7238e4aa55d820c377321b29baa6f5d9a206ee19f877aa5d198e33d6167262b06d9b0526fd4c88cec127275bc022e55c56c8e889ba98cd8dc01773209b2d501ae3297b2a7035c652a645f075c3449960ef15ab1abb84e54c8c666b8904b881d49c3b5c01b74c0960e0617dad654cba790bef0866c8a64f296695344d02ac04c79686240d47b0ccd40c82b807660ee5d80de12c8410668c8f1dfba42ca65a1d518905715f96a0259aaa79fd5afad03c9bd6d56217e01c32a0a0778f7461f8e953954dfbf239c4e18b2c41084d29402399a4262d078da644b091b5a2a70b7f149ff529a34bd60311c64623d6d79af9441394d471c6b4353219f7966529736509446aa31d11452b38c65568a9460a5fccb0d4457367baf58bb5e2de64d4715cc6a4c8f6fe79d682525c3a199485b9bec25f6df0e2fc385549ae6739b644811b803a0c7be56260708635c294e094bd9bf84e60864fe90834577aa565d495f7146e79078c953487327d1c264be9d9c6277801395d68c768c7cccb6a872464898772f54d851ba12dc3d2abd6901b6280b2131865f1e0a123b07a746945c409ce39b97fe716c2eb52e5828e91019724479f07ef9273dfb34a8323f95d5646fa9b272c2a801a5594bc3ff86ee37b6c381ace488a9f9d8849be8b31a89dde669e65e35a4eca44d416dca80ac4df94d976d77ba6c5b3c32eff095ddc6eabb8defbc73a6639491ed93caa1ecd8fe8c383af34ec6144eedbfc9b077f47ba7b7fc2489c2b12427e0824bf8ca18b2152260b0ba1650d8175aa1307961902d993b843301b3b00a20b2e9817c96e3220c7c3078943f7a877f8cb56e5d0770c821479848536b55347d36d8216519ef8740c78c73ddab2dc5dc0325d234900588e902f95294c6b5b63c424715ed3490c071afc65c5bf7210003f3182c0626fa2413d6c147b79a0de0c927f47bcb224e908cc80dafa42304ae484a76f1e22b24d66c81ed279ea7c2426bc582700c13576d7dfe7481a41a87d21a89eb9c708a900ba93d8cfa902bdfda9f61404d77400dbec33bebfa314abc464a96f90400f5263988f1b42f45f0f9cd6dfec0ee17d7578c80121b2531337901a7785a0bf7e19de7cdf8ed6d772e24fa0897a3e76fc373b262702e9e562fe4036299370648b3ef8cb17000f523e408e1d325a529257f92b2af7ac73da2821a1e88fcd3775cb8ce4ef38643dd19fa2dfb78ae78f9724256b1644fb85a5dcfe5fc9d70902c15daf1f7d2ed055337d21ab37efbac62d987fb5e0dbb1e2954eb97810171658a13ab440071454ff8ad7e9ed25ea6484e074d579d88ebe4e7fd9b811bc6806970257668cc9ed83240f9fa270b31c37ad59067bdcdd0a76ff89c868ad132ef883d764ffb204ad2b37f7590f76c2ab38c6c240f0b0a1e44c5fed391ef4666553998237e05080a9d77f49d6e59ccd7d147faa6ac28edc3465c8c7e02dec216810e6c835e492563695a8b5144d969ca5aa749eb49d2a8431327ad2749a21a4d40b914ba10461339e0363afcc010240fcc5041836ff7be0abc8bd00fa2edc82a7df2c429dad2ed78b60278ff5bd258665c68d8aaf508c859421a131667ac98502276a1dc14d6973e088be092ae982ac4d6750a9f8a1c7aa58dd041127b4ab1210226bf43103e218bd35fac069470a73660233f209d9d37c905623145e24292b50beb628bef11e93616481506e18cede242332b5032e2139ae97b2643fb994de9a255d2f3253d086effebc79d101b97a7ce2403fe8f345fa2c19c1b44dd1d940fc0fb418cd260ee0e2654cdd913dec700dfcad8452c31aca7a1346599a30d221ebf789c8cf42028a9ebc182824fc446c1767b832080794c063c32b255a3c493e49e2a3b133cf7e898123ebde9d8c2c223746962874c99d5bcf1a1a72a6624e842ea9886405f4be3a30d525196aede763a669ef9d616a615df7f1eb43d2b263ce190640aafc2587b2c35aa9ff52cd9980b6611194ef713f11f14e2c8c07080ea6a1a525274ba1296a22e478de94c71ef87cfd6b15050d75738d3e840b537e288153a3fed4c9cab60cbaea47a061f931b3bb459b154b05229fd52d306f40da0ead1898d96ec5a8db0c4f856b4cbb2384789400841fbc7802f927d9539133d18fba86e509eea45d3bdb97214ee11280f620c9191bbb5a0a7e7aa4aae179396021b251e48837fed3a8579b9a3b54666f1cfcf47f40c2cb965e90293854d6584d9f8aede2b442ff35fc10b3771ad7c38feb9d18499340217f491feba5b5fea1337e5064ef5d0259f32be418c1ba05bbf674a58356e13ce5c9c1480a30a218e07e645c8fdbd5891a4741803ef05cbf8a2e36231482956f00d8d07129413c04c62770b59ac752fcfdefbd1229ab272ca08e30607bd5a016986f63dc4997305e811cad06b1ca14228a7cd7b85e0155e919faad1d6cb57419b5d3debe6bea92bca680cf3a2fc7b314ea7d660fd7703a81e94c63b7010cad907cf7f21bd651947d86932059be5e8da4fd312fb389164033994440233206ec709261bcbe2c92383480de5d6e39abac593f7cf7b76276981b4eeb098e59e202d539d2d306a7436035b68a8f096da9f1916325d30dc662c2b4ef8b38d5a3a9c5f9691c217cf805605342d0cdec944889085feb7a7fc317682c6e953f4e9db0ad5810a06c96a935f248b893d637a688cd642119b6cb2af81c9f46610b5eee6a42e9d5adeb4c764221321da08852568d94f50a977a59dc5e6843ba047acc8fd219282af624db2743d2fe588a333a195e4b121326d97641ab86e7f27a72a88c159111ede1a3c351b7418e1d30caa4219f37f25ea371d6355cae23271fbf86c2ca1953fe3931c628075ff7529465fa5714a2f4e083f2e8111890bda3f595291163433eaddfd2102a5458767b7d326285b42b4104cf5a97658b6c61148c54ba1a01b4457f6a0a1776f3afd7efd21b62bf1415e678985bae5d31b159d255d712f19c30f6ed98cc5352c27d9dbfea31c705c90de80ab94890130eeed689d9350113e694bcf2d27b4f05860edae620c9d7daa7ddd333d0a93137096027b3c40af378d2ef5b83184cb132c17107a0204ea5b05082f589c56045a02ac451b16f10273a15a576cfa4b20ca91722e24bc14ef2ba007fa6b939cf3e1447bd09043b5f46db44156d7fd6c05b7035ac8c665d7fcbb69924f65965d450ccdab5598aa460073c6452955adbe1514c1ab44630aec7b91c988e0d80a4c2425550a987b373bf3562ebc39fb424ac73f5120e18078bd867260ff65007593c8f713cb162b097b75b5502a6e9fc27e179e9f72ff1bffacbff956fb8d66e641c2e0e1d1d6e4117199d25c2beba34619f88682bbd505360f58b0a3c9a1fdc727dee54b5b0d2d9585868851c7ce7596a38dcc78ea6bde82a730a34ec79ace947668c0878195a0f8daa6b334b8adf341af3e7e27032f295b697c24fca32234121e13558db7551d22f62fa49324413ac1c1ca65538ddbbe33b866ff050b3bd667185398ec352099229501f2d6e3d837add8aae26a176f451848a53086ad7a895fd40d841e2af22b7ac842c0dc2e88dee1194ed97f623b26e830562de6bb6be673ad9deaf256dc168e9cc3cafae86ed96dee3d3d25c7183dcb80c8b016decd1372abd7a8cb7d0f78dd23261492aa65749b65a766e16dc33fe63c2ddb6bad4167bca5646bbd792a538f4826e51af0d0f59b244b619559a0a2be45fc19cda4628250c1ad5528e16cade085c631b3bf57860110bcc1e4c8a960b8ab888e9af04b45a0f85bc3d474395643d82da8e9d1bf63ec016324ca590000e563afa5e3f5f05253bb40b0308c7a4bd3daf38b2b0199eb22702983e00a25cfbe528cad65c2a74107638cd6f4963f5c1d7c75b39c331b860953b23a51e9f3529c68e715537bfea15d5745e00f65c33bb0f295089030c7e922c156d157211c2cb306b1aa835cb7623ba0abbd92738e120b542f814e699a5f9bb842dddf979f43e23497ecb747d2d48496c0cc2112d188d80c5ecc861922e1aae9e434f9f598fc5cfe5dd4c70627ef91617e9530996ee3b303506fa0b874c484c32e9ef15795e4fba7fadc42560a9615e01685c6ca58e6e0fb2cc8333a6b1b5ad50cfcd4aaed85567597003d04fa590881dc83c15ab134323bdc9b62d3dad01e5d42c66bf443743791edac5029672c004adb0d4bc17ed484d3c81273491ff51a0078b215201d8f12541242ea1fd7a524333788a5ec2dc0ada2ec1f72015f5f211b13c0475d8e7235d7e72b082921b0617c8839e09da057dbaab5bb56e5030b1550e032ef0a64930c3a817dcf64a8d61585e90317dbea6e1fa41e7815251a29bce51578746b6df4e65ab4d302edf6cc3e0457de4d7b094679068b252287e20e9219f338fc4a4732bf609a6c21b1c5346987aa7a10b9b62b38aab5721f9e7e8e8623c5e91353baa389aa06147552cd9cbc94f56732f52ac02f91c49822e3c1707f63aaf06d5c139a398af0f47de22474dc2898032a4f62c719e7cdd22b65ac5dd631614e20685e3203337c72a4d39a02af6de28e39d4d12fb2b050f30b5ea60fdce81646ffbe5a84436edd3520398e77bf95bdfbe94365d3b1abed54b4bf3b9b79dc6c14d69c650f3b9f345d27b7e918ab3f4be81bf36c282144b35f3aed5eab18a0e38ffecfb365df799323bbc0f9704579c62ec67e15beb23df27a1a6c79068545d04e560dcecd01fc8697eaeb71476c31ee9baf40d147d512852c80205a881e52568f42c56b79d72e3d7e1d805dcf11701a10ed3afbedf62ce6112007218a42ac3464f75649070da00c1d3007c1ec6d07fba580a9fefead0e5db5f6227723a4804d745b042a361e11e5339247ea67f35771ac440b56a5a7106914333cf15dac7a86d54975dfa4fb634edf4e49615c8c3ecbddcc9cf426b1ffb0582b8619d2b1aa5c398c37c3497ef639671448b1d5a9f7b1ad097d31baca5db3d905ca63843543c43d0f3ed61ab040ab8c253ad173eca9bbde2d1bdadfec43f1ead4474978b49ea9ac4c1ef2ef3b77b7baf8ab16e595d67cc9be108dba59f3118d5283acc9a9a183fd341931c7004e723012c5bd92015c45bf97740098986f64877de730e0944f1885f4b62d2438141bb4d408a3decfc9e0efe3ede7d6580c8f537c460d13f88887b56c12e59b37b1e2a90b8724683a51064fc7cfcb6c496d26764063d3c47791a6d9735411db8759275058657806307f55c8d8ed06c5b96b4aee462e6ebd1c92a2de295147fae3d90fbf876bbffbb36ef396f4d75d8af4f777a725f10732937eb6bf0e9c0bf18377b51dc20470477bc33380fc343ab83d609caf3c7c8a7c06e4c905c64616ae04e77fac9862d937a1e7a147a5a8532b0d557845ea846057cf6e12887ad6d300a99933dac8c46a4fc5af141e685f6b17a2c802ca167282d9ec0c04174fb0d00f8556da4b87f3f3463013f8f10e0426dc0f7d2b5b36a08f34c41b6c1280283a430e189d3ab18c28dea10550ea4044f1edfef3fc75a1cea711bf98f16f59e439898ef6c13f70eb386ce6419b2ae608ca53d39d3705df74dc87f3d6a234b3e41ea66dae2e167ea7145c113fef82a13c2b1373826d72a74453cdabc9d712b046963f329ce7b2ed211747bd52656b3eca823d536f5196eb7f4062fba59611550878fb24305027e37bdd7fd424da3893cea2f5b47313238d7363072bc897becc0beca77120b875eb6c1cde7c782aebd0ae17d073c2b1b80124b1881aa68beddb6abc3b2bab1e9a84df5fc533c13c63d21e3c4405765c4c6844df93b47f57c3379f8c22abfd2bcb553d071a63122077d646a4f39201371f2ac5c744258d8383891c4cffc4c193b409038c38d9ddef1021d9eba9433d086d1352a4ab3ce1b829524c33d2b4a120654dd96f9f8015cf5dbe92a9cae8a01a184d42a24da370e58a74f090550094e40a261686e45377a4555b9e6724090c59add67ee9c7c9103bc2802eb38faef8b39d5ec4117760febff4d45f3b204d54005173e513fc5f34e3b56647bd9b9a9f0ddc29d3fb56e636a965868ed5e648e03e582edaea842f632fb0824852d03bba4fb1051a63eefe8798576e674b54658a83159cf34f0e1d291b759e612ffa5bf40c1ba0ce700dd6600f783085f7fb5cfd59705236ff64f5cd1cabdb2d434abbaba3ac7a6320d24d53782d01087437c01af90d41da9c69533790cc15ae3509a086af53533084299165dda351cc3a5735910b8c50921bba1602d989e4a41c5cc4c8f56e9b22365b03756b9e10cbf4cb425b1f7b51f97c405591d781486cd6d920158be98c53663b4b39f5af111134d7fbf57f888f01364407da061f0e6841b3ff9f25c73dddfa395806b4ffd151dee699ff13af6be73ad1a1d488af7006563f85a17d572481aa9dfdd39fd6b039a98b58d63c15ae720739415f3294c96d2915c07a56c682a50b6ace52bd050b43b0a997c8c50d2044162446affdffb86f6207b04d302d5b5a01836618cf80cd09bee836f2cc6d0f0141f6249775add42d2986a05c5c19439aa98dca78f4ae634f8eb6105b8202f761c5e431fe186c3402e705580902d800bf5de6d596ace11487229e753ce472b99484f4e5150317426e98dfbb2e57555d5aec38908c0a9c18a417a0bdb7d8c94dd205c43393f0186465eb0bc60ffc818ac24b5159a977615597395357e638dd0a4217844626397eeb9d651d11d774dc64dac0bf7085ff6ad832e9794f20595cdcff3b353d3767ba08d022c0b6624e3e21279f305675909759bacbcd209ab58398cf481366a645eacbc1c322228a8d1b53c6480629c0ab339275f41ddd3c38484a0529768689533bdbe6dd5fb5be778b866ea9422b6adaf0400c8b9735a8cb06065cb3c580b2feb31d65241fa5b4063af19e886881d357e5546775e2e26575ed10939cd93ad6b11c2d78701fd1d2396ed9a980e272d7458bf1d57daf599b78d65e64a555687559632ea7c06b679b6b2fbc98d4fa131d33f8e4e7513c25cef3cbf56cc2999d23fbd2b89b8607e3c50a88a04e32c5bf48e95991268c62bb0c2866a40947ba6f231fe196059bbefdb49717898787c9ca49c9e80fb689a9ca0ae446728b3699039570de805d97ced7beb79de918cc786a6dcf663857c7dbecefd2920603504c2265571b868e611d9a058d799786139a7a141c34c5bb8e88aaa656667fc202c78ca33151f2d95fad839d8a7ad1e3ba45912c9142e81ab93c29c7b3bcb60abeb940278cf3a03e5fcd1c1760129eebfdf96194d048bc66eaad50af62ce5cb9406fdabc9c1cd478f1755c5e904132691a46b393bab5e2eaeca0b8128ab394e85febd8dcddd7618c5b44697e51b81e5adf7394e3ec45275cdaa604a2ca15b6ce89e2e3dab7620efa048990cd1b02c6bad87605479904a5185f7b3e581abe9056d616a2f66c7d71680c6ccdeebf40525277bb742f59c0a478eb9e71f8c71eff25a05619f18fc0de0677f06d4cc712d3d3a31d1e112fec199c7386bd2082a14ecb25ff9268f64e181fb7c7f9487662be72ecc9e04456c29f2672157de3d1af9752061f10713e064fcab4481c8781a9ad25e313b2445b9ddd57235fd2197117d8e9393ef04a05dafcad76235750a4dee2df80942114dfb060223db2765db56a45172c328a6fb914d1f558fd0433f6380f4e109ed13da1040d4c30afd766c4186669b561fb1fdb6b3768bfd212579675c9ac78b42497cc8d3b2210bed29c0c6d6924ce6c23912cb8c7a2e211250169a842388e6b06daa3509f7ad125f4b5ab1765adc4995f1220b5dfbe6c1604a8412989d55a1a312eb0cc2d7b038f10d5d1ccb6d6358b375053a8738aad0be563698fc5cc18ce9149daa70b47815f9186af088101b4d2108791348d564fdba9ed0c3c17c66eb764191f8ef54861d11c84936f24052ec90bc829b45afc8cea619e7159c6ea0ad714fc2e8003fef8b0cd0e135b092d0650c43164ca59b0a5e5de3cb13dfa41b097522d059aa16733e6c08155f4e5834f7426a84f976022608eff5541d24868340a8edac619c33d1bdea2c23a2b7f6d31234a127881df04ea714256f420f0303d8d055be09c8c5ece741393f5d7e2d5a0b2a05737edc43f80a39baf8d15f6c7126ea9cebae94841cf0cbc417dbfb7979a39d4b2143771e2ba15beb7fb04e9e894a2d45197190fa5618779dd004544d9920203b4ff303f5194daddd80a1ca30a2d2b23e4c826e2213f38529a9c9c3a0b050e01887222a71115c584a0073b247ffae0b9ceabdc1bde80655195b71a56018b862b3f712f454f170de292b7016f2ad8d5664161fddf2b134b6524536b4105c2a14c042908791947c733cccb09406bb4afd7fa9bf37772ea7ad4b2b81ce3b5422a913954b2230c739867236843f1c9ee9c16a9408ed36cfb4c4c7da4c2e7a18f0daee9d7d1e5c58c84daa599c360d0d457543c2b5b2d083c4779e91a685a50b06edfe83d8e9396c71572f02756b35a25ecc4d530a39b6ca05b70f646705fcd3e740a0485a763c7b52951e586c688f264f2f75d50207ef73e072bb7e7f65ef170e3424715f4543acb4c27ae6c237b6b79e75048c810eb6a57e64271d97166110c6c49bbbe3dc416a1111deadcfe83a20806362995c8c18c99beb246baed5599a68f194c53998e861779d3bb8bec6ea22c2a07c80c5d54238e7a050f686e08f045a6234252345dbcd15980147d3aa856a5538541e55fa60bc0cb671dc28fa3effb90995a679e30bcf3035da5cd971a9e9ce3453730b715f263373c50b1cffd0fcbd6c566c5b07f9407ede037210452bab539d54c8c17ed1d888cb342f560179d4fc0c6a98f23c5b08264474cd88457e8746ab100f2a16638abdb04356db1341dce4a985d7495a60e931c76a2e0f16d1e09b51747ce8de3ebfe34bbd6cc39624232ec38f754158ea924ca145e3733dea39768162b105a80c2efe204af541c38ac74ca49f7fc1d64e0de2582ba93591b85d0147af3c658756b698c26222d6abc4a4cd520c10caa069cb11fd5ac85d9b8a5239f19a46ac22f9215a2ae399cfc1f590a51b657e7789bc3903982b510349750bddafff77a4eddb2ec55ec650eca87af36d1e305814596ac3f839e5f1b12351e4f448520d56931319804ae63637ac32153446419d35804c899e0bc5c3467f50a8d0de54949af96fa9118b3a68da6f1637774c85d2f1cd239ef316d26f310b54c8391d949785e956bfa0048ad8cc010e1e819433521f872d38b6bc9a62cdae01e65ca6f8ccceee0dc51b3d7b5c9efb75660162cd080f8018d30dd83f74e816acf21c2d244749be50a38d0b4a7ceb34b69e724fd809516a682a42a03653b2a20d5ff985e660d69add2807a4f8ce455b8bee94ee82d9227d680ed595769af033cb66cf60122b35a22e37dde2f0a40ce7ff9321f96c7a0421a9ed901af7019c5b018b79ecd178d6ce6eb459eb7ac30264c6c7922bb2b60db8319111be4ae633661a3353e7ef4c0dc901e2661432f50cc6b0119fba62d9bf71145bdcec7aa8bac1d635f5e17b4ad71458af0b372a27a48a0b4686c4b1ecf8a5e98fc3c0a2380eee6ff69700c2646f60c583a409c697e264cd81e8ee36041d318a58fbb818f85d3d382b480e74a311cd9fd387d2c56b0029c49f8d89ffa5fb9f4eb3686765b2fa240cd04889ed100381262fa2f09a1d12e4063001b61e928ec02a668fc82cda89e7e3a04f04211ec2364f9fca3398688690580bf923ac83f849b515d90749cdff083eae87057f3f356b448708fa5ca66a1e9b3c8ea8def080e6ae48421e8adb0e103f8a891b9796cf1544d58cf80a0a0015c98f2bc518df8364d81681409d6b904b62c5996441b1ed07923b06a3a4259377a925fb42a8a7b99fe05b6871299b1861c75f63cc805906526d370440694cc8c5a0d81eba993929b1150976431b78f92da850c3752c8ccf5b20323bd3e364a6246359d87cf240acbc99c14291f0f25a5ea2507f9b4e04bedb53e44c724ede8a369f72a03f8b56654505631e175afb1154d3349f206173d6a2d103b1332c463849a8a4d28a0c483755055e911a221041a4c6df83131fa76b9260fbff75231e15370bff45368acb8c948a0369d4d0836359d6234b66b56284263e840d602cce94d8d4c10a499e274102f6b0eb44eb7b77754acad07d07158e73dab2b4b90cf696df273703342d0f71aed6ac8d199fe374de928cce9e66d9610f7dfd272d5f6916ed039c533ee38a1a1487ebd9bbcf3256a1781074a3439dfe84462bb91727c0c16bc7af83d08e3b07f22f86dd94d441c812f4ed74e65218cfd31e6a5a1bfec5776dc544fdb0124735994445184bc2f5a0a22f3a32dc9c531d91eb1b65f5a097a17f1dd2e08c4b4c9cbf2830057ac5c707095a4cc70cb4b3257681c7fd8804a4ae6a1c57da0c0f2c386893b08765ded76316e44d915fe818f870d9e6ddcdbdd47442b124397e85e75bebb2878818210bd1e82636558e9a2c0c32f11bea25814b649b2a028dd64a2488a3864f7e3e194911f93448c3f145ab73394b3a19f295f055fa64e88c1d15ca1a2b9a6ad484e2df68daa6c78028fedb4b08613e6678e994ce86d48526ec8655b92d849a31c995894f22414d7bf0a2022f87a29818610314314361d2c92eb6f805eed25ff61d31e66edd50bb2d666a975ccf2c4484302980826e3153386d568d4d890c9f56167efad615b437beac69f42887e68e7ab97ee3f7d6c993e6e759ce4655929c00a0da4209912ce6a082d50ff468bf6d596ef125fd24ef544c5054f7090b635c2b25cead012718b3dce01ae38e75a5b2e358fe71399c00b38d6c91c589de026c1696eb29dd12998b2abe8ee08dbc35c1fbb01980f732dde60908e0e7223657d9c6483e66e054af81e69420207d88fd18c1570609d36efea726fc0ac32b93113b7fe22c94a4ac342f519ac36a946dc6fb6f4bcf08043b879e988789de6c2e7ce4a1ad0a4cf30372f4b0779457b9400951a279b763adc287b85b80b72d21555160194c4a3ee1fd1b45caafa40683be2e022928532c674e0e56149b68e53c21d270afc64c4d5e2f0e4d4072de696fe0b83f18d851b467770e8876315dd29cc82c5396852813725eb71b646360a68d8c7794a64fe8f71d2b3df49934fe9119e23de020bc7752a3f4e44f0f7df89168a9560da68661e4d91633affa2443b2e4c6648a05a7b88f0ed8d7c7d34f1464aace74c38e91c41b09a350192bc1146561c3e549c8304ad3ab2a0ba541ea573dd052aa75877e983e7e7acb0130684c5314aff95513a21f21dc15879efd7e03ebcca99b1b2fb41c4619a2f8f36b6163261a2d18e94746e242c2cf1c3f9b1e2e7a841b5060896834f63e8269d853d4c5baaf6c3c1e13875a36467a77e938659dcd4858e8a3f65c045a80b8adfb3ebb574337a73c6e39b3523f6eae5e0201a2a185864783641808650dbf180219dcc055b25285d485913e52a28b5a142d337b156eb64ff8916a8c058c6059fd649c51e171c40e4f8a9d2a8ee4625fc279d99227f1d529088018cbba92bd3aa4027f866208cba4104099856ef378e7859f4b60625a39b7fffc1cbb954e7f4cfa4591ff2159159e14cd93e3d0e0ffd3c6df7561cd317f88b958b526542fd9807a7c9065a1819b318baabb4c168c7e8da67cc4164992c5c6a14d4f0b408efb93a3886fcc5905fb61de9d43741b074944de61b4ccea752db37412b22e71e6976f8362327e95dd937810d7d4373c6eadaf2a889528ee67e4ec93191339a7587548333f93fb998dc433703b7f58f1f5d3b35dc457a222a389bd808fdc2b8d3080b89214ac9f29435e83bd57546a2ff6b06ecd95e729ed8ced1d5e4c7c72b5080a74269780905cd38dda60af1a4d3d337f5767640ff52c2090ac5b557aa859dea683ed4f392976fb205ea301b4d9b94093bc33f18447886f5e5f56dfe54b6041fd82744e63f4bf79bec1436e6c1ab800f4c0f1b1f2f432f83f687b482abc8339ee41188317fe81432d12cd7924f8d1d0e6e944bb1faae9ca9c79a9ef4eb029a9864872368247cdfc01cae5b4921377122641503477f1794dbdd4d13c38b636713405274f5ec65e00813e6fc26dd24cc5bde880abeb89ad01ebcb98f6a8f6e9b152a209005df2e082e6717c68879e37f5736a764c0f4e7185f7b623125c821fb6878c8ec309845284eaf1d61b02d335e538404b9728ab0bd76c503c2246db3e330e340d3791311558c8ace01ee43f60a0f95785649bffa78bcbbad4e26041e5eeb702d022c8fece65a9b753accb69afe7a6bf2642eb4ca8ab3b457aa4464a961b87563b877cc7c388096410bb7bc2367aacda9912d2270745334baa80add244cd3ae87b5360f2ab610f25efb08fe1cc722ce8b94a00cd1b469648de27a04296a032064cad9064999ad06c6643ba5f7659f408235b43881af62750aa7c827fb244d0699daad4deb7b04b87d653b6905cb3e9da762844458bfd9439b08d6ff4591643f9cd64b118c317649e03bd624ff6db375acb9bfdc76f908b4be4a68982fce2588ab5c86c2e9301c3c0a6751b984c3e110ea55df4e4a9614e84dc017440228764a291fb77e31def9a242ca1e460c1faaeaa27394b25b57ee7fcc9104df8dd149b72c69ee94912abbc452605f6b89b106bca1a2bd9646e0b705e4e2e5359f053dd95052f23648bc97ef3d06bd4d847c4d3e50f4862c63796433c0964994d4453256093911f37d8f0f1528c443b0596974d2c8215d9c3521cf4f5f06615be2f2f1a46a1dc8576a6ba69ebaa7915b0e32fab3ed2c73cd58bb5de9ac443818d91c9f4bf5aad341cafd071d3ef2a3203dad797e4146bb73974c4c3a42704dd64a904c9dc700c5ab22dc7cc806dd68a59ae3e05d93e81d03b981cbfd45c0e081b239a133653ae5b3631574037c070f87eb11a5bfe2778c5483fa8ad9b3056b9e4ff4614a5b58b0218c6ad29fae3864ad8947ff4176c8e001cbdb1985284237123103b4e68507890ef0ff7153f114173c257cb5a765e6da0c450fff1cd60cff452a60f199964f124f73590371710b2c062f613de27de394a0da3718c2e106da14438a3fdd04eb2097a0a6d0bba32311be22d080f90ce5a273754d0672178ab6f754d8f5c4621c58aab4a1a7d6f06e7aea89ca26cea91ae113853aaf87e3656a6ee2abc7b0dad093a88c9d5a75ded43d85d2a4491dfe178403ad60b4d0b1ed6ac78ed21998f59a40578655fcdace46ab73fd962938686aec329fccbb0661c77ce54fb35df9b23e9bbd0381e64591f5ac2a374ca843350298cb47c60fc58dfc48ffe7f967c2c44fcfaac445eed2f1827d5d27265491de4a9a9c14f16412a6cdf9bcaab98cc24d3af383b5041874a6cc06cd347d9afece40f030ad8d9f501e7d98127c76bbf20089bce1167a56058d450ea7c96b2ffeb15a5a938f583c2c81ebf4ca69566f803ba00859f7847301513514fa2628868c3730416b4f23c365425761d171cf99ae4cffdefa37005e177941bec89ba8fa0b2269721438ca15d89dc559b43282d84e8b80ef1cf2e8c070f84cbc01d8678858e5b67388ee47841e02b7f7c5d6d677003f40df9ea1cc7b43633fa074d9a08ca518df0b7b3b75987d9fcfc014001e3df9c4de810e93db39ba767386fd0db643629d668e61e70909df28a5ba3bfca05fc207e8b48336385e857299c15b5ba455d33a94c98ef30896eb49cb33cc27652a2e2bd1a8f630ccf23f2155e1fc17cbff5307ca2f4e6924e2ba04c96d3ceac601f008fa30902ae60ecb732129171d6f9366b02b0d8a3ed26726673e16c2bf3e0aa99c69ba14447fe859709385ec3fc3f1bb0b7cdb61a182e7c526a002a863ab01dfe60e9f1d842d2fb85b8f9ef15d19cc3d0e838fa2a06b6e26df75ffe7548eb231c46f008a56a702672e35f8b89a2be11fbf87e861e30967ba08c564c0d7051bf98db7b50247458e681e8145cdd963820b4aee9a8fe668b5cb526023b00a09cc354d9cd7706c952e1cf8191b9324b037782da670681d83e47ebfe1af5d2afba2bb1c82554e79acbf3d06dad590ca9e70b44c4d01a59b113c9d1b20e95807b5004509fc31e8d407c52de21c6da0bc6f4ec758535be47528f2ab2775c28b4e09849ac8561ef2465a24cc151273ee331db4a50b01965f7cc39061e05a7c838a002e464668f0a44a36f5e3b66d35015b9bfed4d0bb1191834f0aa3930a89b922d595f0b1ce04ced9ba9b21eacac0c5741b38605222551f75d26d9c1f055e172e06933740270a40e70484d2a7b4e12ceb97422e2e18fd57a3e7c51a129fd80fc7369de98d6975b68843c32bc8406aa1698a060c3cbf0687c699d1ca3f2c91c61c085dfd19bca5390c9a1243a778484d6272c32b115b909e1f845aa7ae7f38180aad3f0cb01a9bd62718a36cde5f01bd4f676fc2744b4623c442bdd1a2938c17cd6b3fdb877d342fd4f3991673de6ad2f28eca81d542f80b11ee8b604c4d3821132690e3609d1af69a370f572acbf4f50555d2ebc15c42763c8642173f76d0ea5b457115950d94d776e58ae19b6523c1504f8c56a5791fb40db1ca06d50c1a414d18557d76fd790d89e7df59bc6f2f0d4bb12c94a0b009089eb85d45742bb236c7f506afcb74449f9e1857d042c01c4bb54991591eb58f1e8db6a02d2bfcfedb1b2b78f56e3fc942ccc928582c39c560635eda284cb48bbe858173f5ba19eec2fdafbf4a4195ea6669a0000a67bb8cce488ca56944738434763828e60938699815880104895427eae9bfe668105affb26a29fff4b1e1a65b76ca3ed12d086dc214c9dc649b2d0b0afc4e5ee5363c156ab0da78362dc91327c800eb9ca3547ada86065d6ed944e9d54902acb8fe6ce32cde75f70ad70dec68a84ee4864889f24b3c525481064743b2814006fb89e7dffd8c18a38fa9fa446e72886d25b0cebcf9e5be31de49ba66e3a1783e75f14c1e109fabb60a92c3203287c7e142befc3958982f281c2fdbfe2e1874bdb090fe65dbd53b0ad17851cb11f435bd5a1d5954dbc90e9b197dd9f5cfdbd64b95e9e8b8aa9ba1ee191d56ccb77bf6892b587671286355005e4b3dab3f614c3e5983c70d3b7b84b6350a09cb7fdae66e3d53b25640fc27e4393e60d00f865af5c52264e52672cf532c62ad326b8392c01016cbaf8f50516325a253d8a44bff17215bd2c1ff913e8f568c5080936da9900cf0dc09ec666cbc41d967b5c41d9080923e3b82c2fd1ce2d491eeb32724c8f73feb725ccf97b196cc4980c1b73264ad83cf67f081704e90c567db09af89da29a6c298c5a0b97b05038e8c78ef8d0d236c5e440884e1e20354d10bd4091f1900a51104a21c7addcd49792da052cc35574e139108758f288ce91824668837ebdde0a00805fa594966a8338594ab478b35a166d02bd60bbc5c86943aebbd2a91c88228dc769680db2fdbd1dfbdc76d4a66044474b767e6248175a3880926d1e68bf758d8de11570d8af8404f834577f368a229cbf7bb4738be557635a2ad1071c663b8e830c162272b206df234c1ec939d3e416f77e272587c0d2a13209d0bbfc12c7c288e9d4cf7829b8109fe7e8019ac01635fd793e1f6d0750a66617c49fe008c1030e675ca4bfbc434a80b9f68bf5be3eb93283e29bf984acb17e61a523dffb904bc90338b6acffa4bd8610130423306a067247e9b4081ab95741a22f87025445920d609a06bbf57865d2bf550105a91318e9fac318348422aaa248ec365340c5951a4f4bdc24221a342822a904249d89d1d5e7634b2dc4110d9ceb31b2ce45bd01aaf6cee3803aefbce2fc4953d51c4694987affb1c5e1ea814a836b994083df6af2dca1cd2010f6720022471a32d88d432cb62ae65e7b5175dc1f61029b33d6025eeaf1442ad56bdbdb2243989feac5eeda771a3b35c4088c65c7298e7c068c8095a15baddf3a45f68b3dda379ed9b3ca51a61a3453dcd094c9ea76f5f417130100978a98da94cc607746f57df7608139cdac54fa0a3a3c3c572b361fc2d0e5c7182eb5dd527406def60132a4a80b7c6823168cc3b880dc22c23d77368ae2cab284d2e21f2a7a198f51e8a9f2954b74e808ed2294077b036dff75924498c0651faedcdaf5ba5c0186c168484a809a46de4a28519a9685d4b85f07cc854c25ca4b1492ca18b3e07bae40361ef8eecea7f6a642fd412c2773bb2839c29e3a9fb4b94a976b2a5a220f2d56dce0dad42559254e6f5b811db4df907a8356c01afd621da69ffc33428f982221ad7e9442b549684e4272097d84c5ed12bbf5fec1da002a397cfc2bc70d41a55ffef464d1536d78c7c4d5b0225e22c206f3168098ce7b58c9b72d4c60a1261a4de42a040930b2f20983a5bbc79f51bedcf445ffc87d218f8592cda824e247b0b108b92b2be795f39500fdf0ddc57b347463cd754d79e3ea553b8dbda733821db73385595d6a7134217f133b65feccdfcb0f5478022345b9c03bde4ad4b2bb7ec5dba80b6d59f7717b097634d20789ab0013ea98e3d241c2b24db6333b2a10bcf66dc24784864003f91058416b67d1951106961c21d83b27d3e461213c9b4b1e22763ba7d568d665f9588676c943acf1f7c762190eb4d7f70ba8002f3c45ed34ba6d7894f93c900a549d89028a40a3e0c36a29251fc4c95cdb0a227e821f2b7e965c253a858f378da7eeda545e37537306bb8004b661c7dead719148601bf83a36eeacbf3d41973a68d69fe98eff4b57cc2fd1ccd584cc850d401aff543bd31fab887ac8a19f67d12eb368bede7bad265cd81ed944c0cdb3b85259933a2892f8b4280d388a6f646b96309cc19408acf6b0ff72e141fbb55ffbd2cfd4e155485d2e9adbe088f54ac025d2520d3826a78872d227554569dc0667cc649b4b5041b06350d203ebe4c6ad6a28733ab5f3734108c8eab045cb61a6fa41a83a3f63df0edebc3570e7173215e2861411c6d05275cda07b81b4e147b58049df02f1df6c66a7a6fa8a20de2f957d6e0fc33287b42a8182751f64c45f9e34340812b2cc6348aa29eda974d4cd3d848072d6c39f4c9344354f9dc95a334f68a1737bf211f1708560bc9f96b63c799c2c337f319e41c837191102d79b24c592bf1f485d7476cd77358190ece9e00d66dc73aebd3417fe6c669c6ea129487c698ba76412516bf9c5eef104da870dfb6321dfaab9066e20e78894dacc4b8fff5d2b00cb0d376416e2f0299cbce2a9fddf989157a1872a400d48df6fc9b4d5ffa36be359e2c8b74cc181386272f641c92a8bb79834eacffd5eb5edd617a994a6f8391c4cc5b2c1426c8d7927287b6d830956626b2790e338c76c1b66a6daa006b862b1f8a4927234e376ec4042b69c239c5eb3d289281726b2b30ff0070dce77ebf1485b1748fb4d5186bed296c56408704838ca57b48626e1ee98952a14c2e4be947aef83b26b0f9a2a0436e69e21aa81873b6fa78dba3f939332d00505731eeb2ae0dfa62f4ff9f73f86007721781d0464cb4048130c43add5e4b8bc5ee83c01f313ea08948d0d58801881df2b2224ff2df101477af37c7aa9d36e97de6dbc1e8b29a215a6e6ad77aec6162eb1b199730c10707a3116038834ee420e9f6e481918cba27c225f2052b22baba3db28055c7b00d526f01b4a6038aa012885720942a52071a2ecb7250757d5604a6b2821ba62bc78f58f9e3d389f53f01aaf328e91c17001797c3c8eb3d9f8037d9e0c16f9579896fe2ef94cec369aa9f2b08266586b7ac867d1812b4601dfa976caddd726f29534a327e085d085408a89c46c97a94f588cae9b1b740c9504e4ca3973840912b061e2528ba64d322c01eedea9fdc58832cc0e5275dd4a84057a9775df7d58c8c5cd0808369ba2bcd629733e60cfd534a870eed524314b0691df0c00762ba003b0acd06a631dd1016f0eb21e5e6ccaa696e39f50390733d36cd5b20289284f44a5ca510886034bdd560cbe7d0b8338bfee36e632d40df99ee01f7f11ee7f199cb5e608ddc5f704eb839d3a7038c5eb08064ea96aa920242f5ecf848b1fdd47a0c80aa15e0c7059b8c941f3e2dec707516aa27754bddbc85aa350ae5d32cdb2325f5834205a1703658155c1658a8894d4e6ac747caedd04d8cab7b526e5f50149f4b7eb9da254336b74b8670562421de65f6dc076986eef28b13ae5e85d4cb9ff29971f5019066a0973fb5d32cf245c6d555a99c1cae1e1b5336385770b92c2f01a0826ca85b151450d86324056189423c1f8b1545274a94283ca81d1a173b3cdec87972c5ac8a2c6cc13228445227b2f8d2a447da2409a62f3836301720171f171f58e92dd2b35c8aad5995d5fd0e97171db016180833c14ab01de28b0e203453e987882e59dc25e7e2e2b200942d254bc91600c34e640b203980de05a06c289bb33f6986f615503d5eb92625bbfddea768de42edc86ef4e6f6a36c2927a9997f9466718da76c56e72ef949f102765738e1fa9bbbb749dd66dcd5147aa8400ac22ece10e4a486513b308ca27935355dd8829c38612757c4a320a3142ce809ed77f1e95c7c3ccfc5c725e72d5229017f75aeafb4ad7d204064c4215f088c5e7220ca86fa41dd4eb89f9cd4ed845b21758bc9518124c45320cdd0303fa2088c547280e40977fb45289bb752b75675ca76fb4fb866915fedca0995d32cd26135188f9494ccd62c3245bb4dbaf8d87c523f3f364038a89cd2ab007910ae59554a174097fc6eaf4b7e413897fc725164970cd908a9d71f85d32c97d26337cb5d6c2e3f2eb766d119e8f547d9f49c7e4eb6d3ed54e504d42cffa945a1d578ca66f50c6ddb71229b3dd169160be1eb9f92d22c12354bdda460cdf2be3f85936a928a791de5410ae2a9db6d4f558940044a2f706517455c2679cc7f86a0588f3376453c2a42c38844e15e9860e7e725cec519826473356f478a40df19e2c0f534cb7dcef01bcd7d7aac358bf2e0a0c6a290efd29e1d146dce7815141793e54570f186dab9fda12afa0d35433de99657e9ff6a2efb6a5fedabd1523eb9a635ad694d6b9f6651ce718e739ce31ce73857810a8c44229f2b7e9105e88c3aa1329a435f9e33524a51cb619a1ea3bb20c389db2f6a5a7371d3e3388eddb4fb7604fdf684cabc459abd3c684f4f8e3a48202f2e3a5a4053a9fa18c3bf400816b209bdb2dc6c18689811dcaf6bc334cd448eee17718eb134adb6be1a37cd0b4fb61e5b9eb424489e7efcfc06c4f34237cd224fb610cce5415b12c9073f2492e3f78924904b7e2e3a7c80b49432a0389ac4e932ae621f3d8e3d9e031c185df1b2811dbc63870dee4ea98b1466c3884709c208f12eff77494d9b33a6db2c7e351d55802e52e68cdfb8f860b2bc8839b68bc37640f2ab7d1f200da994993277056015ff8c6596095d08271016e99129bde106bf399539e38ec5ad781bde554a29fd6ef0d5beda57fb6a7315c6b706ffa8d223508b74bb3d021ec188e4f3d5be30e6579b33f465536267dcc6f9c608526bedbcaf5e57eb4f25f7855f5e262d550f392c75497798d3d0a9d01f6c7aa422128cc070ba4ce174b113b0be88a70cc03add9f5e2a52588ffdd4c681fc560230fc6caeeaf7f0bb7d54e6ea5b8327e394b8fdb98123817699c4afe65f197e3eaeead78105ec9aab54ede2f3d5fce6b9f8742e3ed5c587baf87cb5af466f48dfa5efa730bf7562154f2029b426382204861a05cc200746c3d9ba7fb81e3b488716b835b97d892158e52cdc7e92c39c890c40d2e5eb3becf6bbf8786b36ede6adafe6aa7ee62bcdeaeec385c4138c3cfcae889999f90beab15ff4c2049099c50fc8dda9d3af4a8ffd9597ef579bab1d464e0524534998e10d1ea6691affe0c12d3762e45265aefa51401262ba2eba4871f18111ecf2d334a6712982c3bce59206abfadbc508b7fb453c8c26c9c5870dd0c5e7f6bbb5207862919469bfd5af461f88ad81e5a9764724520a276a260215223a9fbec05f4b16fba1bff40bb5463f85845e746a1515cd17f5cb17e0a8c717fb03d6ef7b6b434a92c17ee8bbef43df47bd86b58af67b8b2e6e59bce882f6f85ce5568be2391ecb5d91e2a3f3a46f1a065485a7c632ce4982c44891972090c517264ff6d24b1038e76a4e270de1dbcf2d488cda783982fdd943f4a2a7648f6bffd4c3697af00f7f52f41204926c49e5e682d7b3dec8f2ed972380d65a6bfd8aac3847b607d3c4c03ffcbd447ab247e203e6ca89f8c7e09f4924c152e85bbc00e9877a70e871bbf72a1aa27efb2151d43cc3ecb1fa835fd31cbe30013d9c3d763437671230e35dfa813573453f2609907ce18539335b48fea41dea85e187a147ca0fa485c579c11046061e018ce9e7bd41807fe9c7409f087d2394da110611488fb4366ba05b0ace93cc0dcd5a0964ee08e6f37bdea3cfda4511711134bbf389cb4fcc19cf39eef29f7e3c82e405c389cd7464af926f6d63db6d20a09a6cc635c440c469b3c62e2ecbb6d1742ed3f2b2b7c8ef044a29b52390ffc4fffca34ccd75aebf685a1b805deb9b88a714bddbfa879999994924e6effbbe5cf374d93d939999994462febeef0bd2352f7e9aa74baec118a17bf8a779baec9acfebaf63b318d1eeee6e3be79c334b95eeeedac11821284b951efd3964a0c9b7893bb243fbd03844fedc4e4973d60e4a09050a185076a05401058a5a6b0d89a0d894509a789ee7894640a516b9effbbe11490b1f2d6ea4528b2f4aa516a6916b110370542a954a608b16375ae4b48c3c2cb558a263e4e5ce1274e8d0a1c3e5e556eee0a6694405a45fa5d57eb5b486a82718e7b3220ef64e1e3a00473db61c3e0c631630cc09865dcfdbc184bb9fce3589487040927106104cd33f65e080c0cdcb820046f356ea346f311cacea9783f6c31042aec8940490ec26b75fc4398fd94ad7d9efb39dfb652b4baccc16124d7073c6fb239a492fc142e5e01f4d6d592aacdad4d75cd51fa6a9b61a496d150821e018579d348b5fd466fafe1abc55fad7a9db540a673ab4f2fb70e41ca269df00a70e72b58b53438e76fb6dc0a1af04899e786202f6bf4f84b12e6580567cb58073f19c619271ec1701724b9e27b3e47172fb6dc0c047e413614eae77550d371c41526bb8e1483f92a66f73b3df81d9b23f304db59933f44f5826d0810ecc36a695253232457aec5b0dcc466446d9880646b8ddca71a7d48d787f13dc64daaec84da480249026979db052e066709dc6399c44d771134e228a24a0502dae88829b10678f914582198cdb0f8070fef0174e20bfc21c78890e2d1ef10188d38155fd538edb3fcc1b0f31816ae52633573987b9f2aef32373c6ef12ce8191609a2647e64cfd890502fc837dac2ee38ebccc0e1680e4c4c59a85c3f3f217acb5fdc2e4e12b7c2dc94f86debe28148e7af4a721b5a127e9750f891e0a7de28879446f4dfb1cb50a06a5f54867ab2ac1aa7e273e29ea0c3a67e64aab3924213589b9ea5addf3bcd61a4512150ad3f0b36ad5a25e51a3b85d9b98ee356fca0298d2aea33e4a0d600bbe93e4dfe30c6f34a9ee5ed7d9efb35d170279f142bf63b6422ca6e1efbc03ac02a0c20eafeb3cafeb76a81080d5017af8787941824f9feeee63ecbcef72f05b3b2fccc16be542347bfcb83d9a3c67b5a4f912c733cdc73ec61187d30deb53af220d736052c925e5c04f18e2b77b917b6e3da7ddf775b63e9105a6e19f33dd9f54e03a575dab779dd7fab549b755b801e8c4e9945aaf36afdc23e174f11b6cccded1f9020ad3704fd923a731a7cb0cf6ec9ca18635ec9b8aae366780dcfe1d5eece6c9bcd96dce5099add27f2da89248c455fd24db37125b5a2211a8fb46a390cea8ac61a2b05d479ac5b7b982d9833b47925e926ffd36b8fd5ed3b973b6bc98ab4a40b71bdff8c6b79b0502ec9f93b5823992fc91f43859279863ab26eb488f5fd32b982c0acc9148775dd775a1afebbac943c32946efd99061273842aa74baaa7b4cccb1bd588f4cdc78b166319339f6934424ae6a57680e1fb78bc4dd72ce0b49c87a5dad952b0cf807d7ba0412f6514d15bf0bb67d7434a0c6a6c685d6b11b08926f32322f20bf9a99fad330071f2ecfcb3ffc8b768c5ed35b485cd53a22b16148bcd538b3132ce72770e43b9680e4ccc9ac05c15ccec70b2058da46d57a9ee7799ec71e7b9e573b6bbbeab98ccd372f231193b9ea1e02065c438226c48509d83dab721ca0f72421ce5fe839f431733f6926b32512ab609a27f44f5034136b9b491fd14b34144dc5ed6f58c32e7f1c048dfdee2adbcc191a05aa094e828b7841a6b32192a3f0a47138eceb81d15e5773a8e853305b22714e18304d453267e89f8ea8827f740aae3b337f0aa65d0232b9cd47fc125407f69943c2acd32cd28bdd6e2fe62d1957b1a8442ab95eed6b0760c183081e44f0208207113e5fe2e011040f227810f1c2e38607112f4f68d115c689788c4ab6df7ddce6b7765501a66cd9ea19ab9abb69a8dbfd31300049d5edef1accdc8a4983c9aa5dbb2db617abcb33674ac3a6c263df6d2ae6aaabe8220b21a328c0ae52f7ba4a7d8edb4fcad03858f504d03ff434e4fb5d17d948a3268ba797aed30346a973fb4952a9e3ad1e63aaba6d60dc3ea367ae6ad3bdcd19f69bc90a7dbfe34c9668b69ac9a469270d8302d652900e7352e86958c3fa3595b9ea351a8e7eb51bb9ea95bdf455b16f377b0a856c13f20bd6fd40dc7e27f4eb79408ffcf674b23517c9f1321bfc330aa7abf39e85d085fc5d2f9c97995f49a611fa5d68ad177e73d52156f5a7809a361d79c98a36f459ef8a6eba05a4554b26cd6a1a81e53403c1966d77ae5e90e948351e94351e945d4d7d7902c83e7a1c59b643f0d2bee60c0cb7dfcb98a5f7cc19bac5cfed9fd30748e6aa5330555bdcee37e2aa6ed76706d8b7becd99792b87984c771405487ae9a55776f95e7a69ad95b19d684f975be40ff508c5bce930114795256f783107f9977f92e3e5232e396b6c8488cbf09f98b9bc8204efc0ca4f1072b212f786ab07d81663d0b058c30d2c150707a2090494b9f68a4ccf3f2dbf0cf38882ec704386ed483b6626a2446177efae3d292ef11881cd420b3d46578010186a4a0f3eab68fc867ff4932cb8112c4e56f5be348a18e140280d0e1431c2812246d228e1708407d37c83071c8ef080c391f9c6ed676702e8dfb4afca5713b90861840decc5092972643b46a6248024e529485fd37ef3164974f169553f8bdd37283bb42f4e50bed8a1a5be40ed304d0a958282425999abf661ca4fbd875fb453bb9e3f89eac8af86c25d87d91bd8d159abedeccc66a4df5e75083a3000ee27926a3a56ca7722caa747544f8f9cda021c51544449e9b1dd8c1e9f344233d2e8f161a641d9a070ae4a835ba838b827159b2b7e940dd3a496983fe2609cdbde4a0d916222053b7998bae9b1df73fb017ae3d383f29142afc8a66e27dc0967999eaeb0e5d4adbb4abbfad1f6f9dc7a7cbb64dfdc7eefb668e99ff5da7a5c45180ed2f948413e2f623a3a3a347afae953d0ed779210d5659c1eafa84eae4e80a47f544fabfa51b3d9c9076089448444f534f76579a827e6d84fb22ce562938b9f73e68c7d7e76d2c464a1727a44d55ad54fbff3b106a8da2dddfeaff4d615a45f574799ab7ed4136d8339366cd6d12e05fbae37eed09b5ac8028dc20070e7873a7c8cd8e016bfc1aa7e17260d57e11ffdf365b8c54033f3867306f57ae394abc234a82527385040b071fbf9843b59992b6677d94b0e136acc5f623da241434a4941ba9726d4e6a270eed8a89d1efbc9138ec31727b29c988e194872ee927e83e1ae8b75d2a3acc7cab785dad9a9e22d144ea760de42d9d8842f7280246a860390eb5f6d1cda6b0ad9550aa7cb1562c181fc08de86dbda54cab977ce566d221d50e589f4d5639344727c512402892239de26d78aa48c8f4b36aec7226a4eb3483a93358b745b055f3e971e80e59ca1b3b91a63b6281553d57f3ab5b4d0924b97e459a454246609903cbd7ae4eed28ef2d3eadfb92ec45de9a7b32c7468cdc4cca6d29f4e35ade22f5b8a4f7795ebf2320a7dac593eeb9189c9722be6d88e65aefae9ccad7039ac4ca09b89c27a8e1f1cc89ff4f8aa54cc1ffd56cc553fe94db8fda11b90a4a5ad14bacd55b8dc5c9dae6d2401d3979e0693385d45c30daeaa0108f0d6cf369b8d9dd25a29756666e63a46e5a2627103fed11d364f8fcd5c368ba4252da98fea35575672bea4e100428815ae71382afa32730c1220378e52aa9aa5c6358bce1a0893c55eccb199d623c728947ed257e80c58d574569f2cf533adbd982c2623f4236264dc3812ac7226739ce5bce4b2d225690903d2be665d673a1ea3c984986e9d1901ba48d2d7e5d071e6eabba4e3ccdcc77bea8ca4406dcc168dd5d711b7997859122950abfa9902d519587ade2c2fc9b696d96cfe7201861343a1dc6f3eb7816c2f4380ecb6187aec8f81816e4b8d3c9ca720b0ef0b13b0a6d56055ff1a37371c8e2b4a8d38fc3af3d6f42cd7a7b8cda7b4e1535c0ecfd2acea58dc8ab7e1547a942a75f7e6e959cb624843f8b23865fe6820ccd5931c402f3b804e99634892c11d502fbf0800b6154841586c40480a52636b9cb76a15aceacfa2735ddcae37709be36a4fd5a1958ab9eaae9b512ab0e0228c31a8d8410f1d230c2e2e16d4bd6532994ce60418b98800a3019086ac461ef2409ac175a03e442d8c56a419dcc5b632c7fe154906bff4572407549fdc4ec51e0029888b3e82342ec60c9002350e276a5ce34a1fadd4dddd5d342a85ed1227ab6573ec9685c0a8b3d99cf1db9c49c0edb7d559d5a9b4665b9dd97e6eb11bde7e0682b56889c69366d126059aa2f435dd385bab1a272474d9a604e8b63aab33fa6a16e8b60712fdb0a421a6eb3b9000c93abb5d677556674872211e80e84ad496a8ed5848c19f056e4d4e81693808f3871943b8fd648cfd9a6e1b10b491b58d8ca58017807866d0f0804a848d12d8506ff016827610a94bb68d8e4bb64d5f6e9b11a9e4d912d870031b385f8886071099661c21aa5d57997934a2410d199682b9ea5700bf5e601a66327fa88088db4fb248424c31448024dfa8e7d199cd14f63b88968269ba6f9f33f54f4ddca083a8b5eb6a105d44124d44c1329eb6699bee6edaa3c9d4c454c359bbaed690cbf8e999abfe18178024f79086f86d1b8662b6f8e6aa1c1738c60288a9e828ed9847a3494b1dab989f7f3557fc3414f947ebb4f0432587ca13374239f01b19a9d206382518b18a440e4205f891228a243481078b8b3f345b4a8888a3644308287660f344f95384943078c4c8b9a2c94580b314e3e68a261b01cef20659aec88e46942ad931037b443b5b373bf0a54725f43bd269e420f5bce93d9a2d36021ef5aac61cc2ed17f174d7f51712e76988e9ce1310f8f53d4901c9e973ba3d796efd49860c73c6736686e13dd449859a8101012ea8421fa7937b0335ffb0c062197cb2530cfe85edb2354b06930533c7fe538fed25fed171b3cc558d53ba3bd0217d8aafc180992c26628efd0cebd15b8cd32ce662321151eef72debca3a35b058b0ac5dfced306d44e6aa4f97c379020297103bb6a308b0636d73fbbb614134ea646f71b79833cc7f39eccb321aa57ceba6781edb784a1b56b04c918369bc0e8b95366e5bb6dd1f3dcb1d7a94c99891246916f9c2ed2ff4fd313ce0851ffbd64029782c9babfe1d3720394baeffa58cedde26d0c8f628d2aeb544c1b5ebaa7b28835fe182339e30491800adf8bac2fb2bf8274906ef61445880fe4a6e277ab6c7ce9979c473d574b6dcbd2288660ff2636bbd765f88e4d63ab7531aabfaddd21c8d5698df6c72f4d0f225f04daf420f5714313df83d94bea507d3830fc35fa4e54b5f04846151022d5f7a1a5a447a7355bf69075be1d1b1a85f6c85734b180e20447d3203fc66e9605f075740e9491f3dba657a8f4d2964015aea39da240815ba910de7f521a6906136af26e0bcf3eec0d76faec2798b7f6055ff10384602065d174e76025b3257edd6fa6b896572c4128e01d3f88ba1f0d7eb556da8cdfb92abf80b6101496a9bd971fbbf7e7ac3790b7c0a4473b73f260bb0e5c1f748301268791de274150de08f2eba312f0045e02c3df834985e87d843cb9b1e147bb8a248cb9bbe07f04b3f5d221e81210c3ff84a5c2d210c8bcfdf2226b982c522a607c5242d6f7a25ae4972534b486931319004c2e1e84e5210162dc99286785f4ba9eddc3b779edd40503557fc32402cebf0139eb11386f1cb441a426f1488fef4486d5a80349308c36f7a6f954418166188944423b4d218dde11ffd340a9fdb3132e88ec9440a42df441a0256ead65a1bfaac7d25340bb579740a95836669966dce787fb212033a65ae3c6b3d3a8552a16d502b9762e157f7a4c7d95cf10edd611aa6825f346605146aa336eec1f10b87c3e1702deb59eb34ecf52abda8adbe4a22b5bdbc456ff401310c01daee530c1fb5ccd4866a0d7db5d65a6bf5a8f51c6d4269b4768249f197dee4eeee3f36958219d94a5dd402300577779f335eabe6aafb15da651ec5af5861850f5de6515ce632ffe2471ee6e0430e495e2f21a62f0900783273e21ceab083a5b43fd12dcbedc6b82c54f4592f2618548cd9f297ab684ce339fca34f2f979c260de9392444bde479231269e479a5672bb35512e911540eb6e231d32c7516d6273d76d56915d0ed76ab4ee6aa3f54b3304d8d62fe78794e9d22cbf5d7ab7a0e738943d22d223dc3057195b649b93d46cea10ea6bb83bd2c8051576b7d799dbfe79de779340bbd51db5c75938498ae29f4d27be114b0d15512713cd86b45f71b12e0bc2a1a2b6132613661b602f4073b8ed871440d2f73bccc41248c2b5734ab9886904afce7557247a399e4923bf425511f754f9ffd32e79c73c6e6dfb42401f2e4263ddf26a5a7b4798db8ab5063470d1e92f5bc9fb9e90313b6cbcbb97b78c311076fd8ae10c67f8557e24a8530fc31afc425823d0192f496fa159ec322301f03b62459e1531f1326897998d28429b2429215c4242a7cea95b862420b13c21449e1611e464c02f329bc12978b11206dd2a38e77f97e98f004160192b456c6c8bcd505b5aadf5a103c9d3ce83b4806a6e761759af5b2d3ac1d3c4e2898de43f004a2c00305144c38c0704d35ad0385efb7240c97c23ce942ea4955cc93e10a3fbf2747979f7c99193d0a2b885ecc63c4e92a71ba8a0423c160b87cbd98bb7b31d493a77b9aab492dfd938ef7d0051592a8ebf2289c4e3f4932b4c078627075e000c3d5412f8f905e8bd32daf147dcc149f4b0c768476c7ea785942fbb236a185f578537acbe2f4ec7665b6f2daaa1ce0ced2f6a4b3e514e0cef20740d78b95c42a20d905756f70cb8b75417386f4fd1d12e68c28f4a4a78467047b4270374717c7ed17855e96d073c25c79735829bc9a131ecd2ae1e918e1cdae10b73fc6dd0424493012ac59235107faa49b6679599e709dd906314e40fe182ac098786769bb628d0092f4262a7f602b7fe033f2f822e07ab991ce9c01127a4a839e2bf242d1d3d0cbf1643df614bdd8fc9800753c01241d7663059c651a57ba23dcee9f97b67b89a7945366d7cb79cb8bd129367a9382bbf4e62dcfdadc1e293d3d65fc5cd28be1faed8b04bbfd306212b7dfc2bca026dd7257bf5706cfedf7724a359c946ae45cb9612c91d2a2ae19c6929ef9dd2c3d76ce9dd64addadbd21d1e0f67b21d17ba290e779d5e646619e52992d18f107a6f17cced03f61a142dda9e751774aa50d2b58ea127aa3b7d09c7239648398ad0b48c134deccfbb04461a5893692b84da5883bb234890af8078cbd3121bb527d29659ac5ff05e4f15a8ffdee30e00e08739b1e3bcbcba65937cd9a4d9ae5a277965a947f01bb26360f3805bce91116e453de7084693e116908fd1c58c811e60c7dfa201620e9cdee8e90be5e4c88fece8d39c3a2b7c45cf593ae1763038cb101b8c4645524ca90a1a1e30d90f47236d65ececb79b9772102744b928125907a98afe98e44431276a51ee649306fa54498094cd7ab059cab7a21c4172d98b2061aaefe01d0009cae1670aee94abd87f3168ce8c95ce5cd7aecd28c9c3bcb328256b8b32c23cbf5b0f4dcdcd59d251954dc260521e2c55ce0c5bc5438a7ea5906efda578fad839765ae3c27b415e0df590b0ac225a917d4ac865dd2cb592f47041046447a391bf8bdbfacdebc4563377aa3b79a50e8e564e8be6ce2d31ea555fdd486a7960bfd4a8f306fb9b52048a908bb5eee65611667085f2be620a485f8754a29cde9d1be442f3757a1e7e53c2c4cb04c0b03a6a9df6f73bcdc9ca16f97b8277b8465b2c40d2f7d0c2fe7e54886590b82a7d3ff68a49964d8cd6d3ecb0774946ebd50d34c328ca473ea05dcf89bab9ea2ebde69add469e88349655060ae66d84840a0d5bd1aa0fcceb8fe3dbcba088ec61e7374fad39d652d766bf546445be66a52fa0e454911519488ed3099c3a60366fce08b2fe2c0820b2454173ce9b2e8dcfdad771a37a85574c00e44159a0d80d494e8073b8d17d488f080e84eede0e4fed61f6c96c398d02a4588dca110795773e22a31d3195d75ff67c2f5efe15dd7f99f9e70ddabd85caf2ef7ceba98c249e5de32b78180d1845ad65e178c245cd19d2518552e297391a8e176935a6a45d2dfbdcef9355e653dcecfe971fea706c8b66bad959e219a3d4890eb0bc04e1c4d4add99ddbdab7bd78973aeead7747b13ead3878e2f35c5db4fa29af93f166bd755facd16df1e3df2f7b5bd53786fbde589f6072c906151d62545cc091f9001b6864b17d80c982c02cc5126e6655ee16109d05ee9aa36e6aa7faed80d5631154f244bce7070c9977c8e4d02d48075e63855e08d592bda6cb73f36c77e970bc64aa0d79c9962dc7e1a127ec9945c2dad9536c91d99ab7e2e9100f62519688892cbe2c82a01d6f4c7a05303348220638a1846308212236661ac2146134b9cb4e1ea1775a5b7a60d65e55b73c6f500d3309da993ca9c32cf9863545a964770381c8e6d286bba21b853ea4eddbd56776666e6eaf408264bb078807f744dcd86b2bca1a656fbee86aa751d18cc33f3d6cbcbece5e525889127f63bf422afebba8e5a6652102bf28d6901d889e4dfcef945cc355cb72310a63ceb4fecbaef6ce8e97721f99786bea669a8811e5b01a3efd7c08401f6ae11ff06260d8fc4d1557e0107ecb82151a6c750d7b9bf780d2219072d12d187690df0133dd1adc8b339f3ddfe5aabe51c76c2329eb69c0b8e4ce2ec442077aa1c3c0581f5922fb7abe81b55d210b63cf405321092e10273ec1789d81af9e11a03197d4d03f1d6483462bb464a4a80248f3d36777337cf98ddbb50b7d444d335b9e4f4065e512a460720d9b81c86e09ae56da59251c66849469906eda166f0d42e67fa58e73377cf299d0c324a9fb9bb0d08e80a92b1b821c2e7e2301a02773bae8d33e1709e63029254c7c62c019232d7d936675a6d65aa1ac7b6997be3a84e0ec85598d954ba153e2b4b1e0a541a63aecab9da01abaaada2417b925dd87b8e8e8355ed44e694472d6b16c76aa04373158d739ce0a9b99299d6305b0ad9e62ac6715fa93a0e8452e3d8dd46ebcc4b61bb683845e9bda0e5d48ec25c68812b890f077099de8700b84a3ce50b275eb892f8e005e1b84ce21530447c6033a0b84ae2acab3e4634306d3c679dcfb874498e35cb6b5d83c97231e688450c662bccaed2773e73b16db8682273f9301a02e725dbfaa590be6ab7f2b35506209902ce8d51c21367221a00792269455980b565cd6a1c13313aeb2bfcc3c96c96c50a12a5efd8e6aa2e6db852589ff401fa45a690159345ad60570d638e9527090791c6152f970f1f1336d71530f4e78591c149251ca227a8242d7637390b158d000000500033150000280c0c0643a2f1903c8ee3546d0f14000d788850644e998bc4b12c096214648c22c818620800000c019899295105b844998f63b1ebe1e6dab77b2ddfc762d3e2c6daf9a9ba0529ad06903a2571adfb3fd0f0b736fdf90bf1df0c7e94ef461f689e5d2469bb02223b8acf82ce6375f3f7edf48a738e03144c2378cea167d2ac6e80d6648503d60575a8d3bff6681ac870e305c339ff35a5e54c16d4972d5f731c05a30f7b28566479ea33fbfdba31dd72a43d83104d3f0a284d009374266aaf50c40a2f7b00039a820bae86ec0046d4831ec0a63cf516bbde77fc106768a950f72ff6ba12c0890c87b4e79c1cb10084783b6143060ed4952e57813d1b0c54211a5429776a385cda1c31bbfece6d78f7df4b4dfbea5c677dce0602df47068f968adf3d0da9b4a1c189c097acc75a2f107a3455ec92c8cb63e5e7a5b316feaeb4874339d2a7a8065e85deee3c91dcdbc1be7b28ebfc65ca03a9bf5d5034d055d8e1dd9e07083c2e531425e3ad9c19019483f00a4482c483ee3bf931bb4ee3fdd2723c782a88d4ee065bdcfc13483a09c123fcdd24a2799779c462377cf65e9a27bab7685d55cf60793f291cb8c6bd934567d502d8ef2f149aa5f366d4e874701c345560f652867b1e3f70c0436c8afd4b60e05a29f3d02cf4fa08bd2a5374418872ad10fab2f52fc80df4f6a2c28b25a260445865472cce691ef6c53e7ca93b0f48beb3cbb3a5556829ed3e19e5075046722ef0eee605c99ee1397a54cbb05b3a5a74600880fe93fa48ffd339c763c033a3f5fc0dc0aadf730a9b0305a386d3810a38def6968b5278ba7a52b03f5938436820b91706130654633722951d09afdd1672524f862e0d82993a155d903612928a9020f031a743b71da2a529630a8bade40492ea9b07eea20520956cf049f2b16b9cf9c96aaf590760bd672db10e1511b0c4b5fff1dc88ac28c241d92113e00744b48366bf0e9ed2b67afe97414368f711de14451cf30bc3343cae19d0382b1f94c5c3370d0483184c01e06cc08c365a95720eaa17052644b90a35bf527a977b817c3aad06f4839e0de7ed8afe9df53011b06d47ebc77229f589399e3e921885470a2bc68521ff3598d717c335498af10808a7eea2d11be114bd59e1615477810f3d32bafd939bfced067cff1d1a1db232c56abe80be265b47d83e7f08ab58ef408886659c9af707ae03e805b7e20e313e7591f28efc20badba82b820ec8220227920fd280e3321a839c700e7fb024bd123d1ea1b61476a9758f13ff636ac339eec20f5dd9a8b5bab8acf465defa03c6b4f88f5928ee2681b63afe5897ddccc9b76c0bb6543b6fab85e38998f43b1e272ce50e803f45127b057c59a7cc1c550d0d043059828a1aa6b354499704748703ec7d8817940cc869207290d831afd627e58966ac9ffa1a4c800a7fcaad029f078166ba4707308ed60e77eb183bce4c60e67abcf0133adfc5b561dd7f4163dadb3d9e1f20379274a5ccbf295c74df3d7a4669a801fc4797afce54989b10af438077aea1e4a14020d180416c97aefbe7db57a05d8ca264e33d0572643c3471547f09927902dbe1104be72e4960d2ca45c2d61a06195196eaffbfe4966934678a0551251bd3f4716305f0cdef6938a7a64dbcaea73e0fe6af444f2227d51129c9b4c422a196a7164372d40f4b8d7cf03ff1c01ec21bbb5f420d3c738559b419630c9771c84937eb213b09e36696b8135b777db4ff430a496cecf710d9334b990d6be68f7a025ab8a2779168842c897955f88c8b315ba0918e1c8f537081d3d01f5614932e6e49bc45b62191f60ef032f668ad71d0fa2aacf99af39d382ff16436dd512bde3aa60b04e197652c51db8ad29fdfd446cc59f76ce8a0045b5e1c29a495c6dae5ca2717aec88218b458f917b1edb94a6f3c684aab98ce76204aa96dc3fe1adb74cc6bc5adfc89d5f08dcb706d71e6e16d82d6a7e13e5131945b30df2c37efcffc1e4310ed3b7f625e1ec39c03e05b45c404f6266f769d278b61a0fc4fdf92f111603024e4f6686082613d7e8f16988f9812c9ef70beaa8c911ff7056d343c7f404261923dbaf7309085b3f737c5c591ab4090ec26b03048b4c592f64fe4db88404a3b0f536ccdd25e3b71484c6e226e2019a1429c44b73aca48d47af665d02c4f3ebb42cf2124ab43c88885fd1ba1c2258b906520c8b0b1263504bdc0673f1b39333d04f70218c90db26e810c4f3b1d0a9bff0c66a72390bfe823df8c3d3a8d5f9dfe9c2d61c07674f069f77e4278f18cd4b019a667c1eb8226082070102b96dd1b33c2facc484e964f837eecd38a4d2ca55314bc9d81faba84f41f76ff0d907a58e73f38b02c4d2f28cd9cfde2940888be6309e1d3de79695794801b4aeac186d217f06fa34d9a7a67f6d92437da3b070c14b33f21531c4a2cb0729488f3b91ae57ad9b9780db87010ab40021c8c4abfc5875032c00cfda1dced37a13e43e88df27e55375c75c8b6ff5f6509e509c931ef8f5e84b2d075497c9ed5edd27396c2ac1d15d5cd1504188cd21500dd144225f5dbe04da92f4284551e38106afddd05654db478e296151fa3f3240f557ddbad7c20bea216308ece622fffce98d20999432e577a40e6d8b15ed2e89cec991e97ca72747158f8c590d65b6352ac1f6d553c246806e466ac7b72ef3251ff182d9df3b0b8d5b9e0e0f2bd96fb5165d3b0dab044373773e93f0aadfec49de012eab67c7dffe76a33784df77fc6b11c6f02e1963a23ec8a4e606d0f89a5a85ae6826da34e852482ce53ad6b5fea5086c7f810511656286330780837f9f2210e8203bfc1c4809438c4f3cd3904b6ae6fdd70459d04917baf71568e180e3bb960a2d07201b1f260478db015f306197ff30858a83eedd3806b38499c1c0beadf88168e2710f1933b0618119b748372f5afba50b15ab9d741af1f07a09dfdaccf6891aab4497b268b81c152e9246dcfd82fcdec16e62c44aec445d11a02016bb43a289e26c6a16941aa30b6622c0618b686d43eb69588d54a9889086c83f6de164283366eb3cfb065bb284de87060a2a16e6657aae42911dd261f6c2463d364619d11c5401f0f1c6c4428711a43f27fcd4ed2467cbc430be964d4c711e32b877bd0e1cfb4e8389ed82af45789e840a4a3f8433b8dbed99951a4c181517ca8435bf5511476a4a5b84c9cf71a5493594717dc604dc0963c0687b6140cd26e74dab49346b2f02e19401d5e3af6cb3d178986b0357d6165066c7f0b211cee500d7add1ce107ee9e23acab028f6e8ab0b677f181c343090cde6f66d11b5ea331c96760d8ed03280e06e3ca030614a9e5ef04fd1364dbabdcbd6ba8cd40593d148624b7f87437e4d65069c3fb013f8a5bd2e559e0301dccb798744150ff6d6db07ec039399b51dd1ae953b87442b77a2fd54925a7a79b3ae8a756cc8e5882fd62e8c92d75e7c42bc922bd813a0aad4d725202143401c3fba1d480a5d1ab6326524a471b2417183a83d32a6ea9f29a496eba7b26befd426996b1928dd0d4d8ace8c424a9d2416e5f32f9f572c401bf8e027f099bbcf52a77d2b73cd993dc41b22e71aac1cb215f8c6f541ef03fd6cc06e4cf90cda807ce2ddb5cfe3f50df6162390ee632ecc2636e738008ca49d8bbf60cc0757015ff7cc3e3adbbad062efcc4ee1304758c73e11a89bdb09b87d23ae79b4f992e620d9a198a3071230cdf8c3a9093c544235a1db0c84426e4156b69d7091408414f823443727052c81a38d46669fee20007ccd80943271f87e7025004710ed6758634ceb6103ebbce5cdeae338a9c902de7a0f65b9acef6b49f57726dc92ae6aa393c0dd75726e814aed7961b035f11559602814b3f0c0cee46c72c77c2e62dfab9af60d58f38563e185f6f9111cd1a9a9a467045dccd5b895f1d85b5082e635b5cfad6c152cc26c49bb347ebb47f6b8ae33521ab93a889dcc15ab8586458d384eced28193d76f48fb1c6515e6f9ca82028dfd44a96aa5b38b6c2a446d30ef8acb195d4be75535b9685d46b3c2adbfb4af96292daae028b004f82444cc3fe4fb0775c53f71c8c3f9f74102e893db59373b40841e29cd0c503e45cc22453cce51c51e8a5c6117dd432fb2ad186544dc17386873abc8c69896973c715ac32dc17910273a6dd9ed4eefa8edeea83cd4f2ddbdd8eb05f636abeaf58963d7b7e305adee1bdb855fcffed5eba4c2597f937d6385d2cd89a5bd073a94a0a9d2f16e48d0cf1c2889c98b5952f94b881763483d7d6893131020b17499069e54e800774d77f69fb678606836dfd718a2430365dc718de91576d5d89dd37302d8b7dc23c12dd1b16336ba411e63969cca246d6ff8990817247073f85e5e69184563a7a68210a8cd1758456e7b4b0728a5483d66b960c50f4ed1ac04f77f4fac81bec844412c6efda9b3b75e736e6406be79aabfa96f042cec3e0ad6a50f5d897afc75be8ebfd0847bca21c90030322c3e2bf0fa1f6268f52860c6c75487de4a12f26af5d13acc5f21670bdbd588318de5b337e59f1b35942868985024a3437acea63aee6e37b1e9f24e929c9ab50ace196f80437b235202f5e339a1f8b8f9d9c4897247421b77779b82ab259c89f2d6eb5275f342275c02cde4c57b9a9590ac0b8abd85d2993b4cbfb95292ce7fb6b7a80f63146b28cca0d3f14a2217ccd4d57de28dc1cab67c5fe6510eae1cef03012e1ff42de84ba432642df905081ac2c4f3662510356496bd00b2afa65d0e8b240dca2859c87179e77d384c4731d4cc5a380092322d2ce35c0aabffb4246e3d72831bb10582c421ac75b831b003984945065e58b497b085af6229e3b9cfd861b3496b826e27907a5f4ae71474458130c9e7703c8eda6a86fba82a886fec7da58dfccef77ddd7ed1e9053eeeaa0b1dd998e03390392527839d0753f0ec72c8c1bee91c7f65bd423a3b4004b51dd5889a3e4d4fafb026cdabd80ed6b2a2e703a8d7a1f2f6cb5b542f5878d3117e2ec582a9b32226038b393350ad6b537eba70afd92c2243274a7b5b5088b2da220525c1bd906ab44fd15f064591710323f0773869d67ee0b6915b4d94fdd8468c5c341ba043b4fbf7dd52dd22cde0f8435e7fef798986222d56cd56d352e76e76b0d70ad45819f2d342ede0c706d79664fb47087d7ffaf2d01d634d708b405a1263ce3154f4f080b2fb920bd3a9cefd08bb8358aeddb2221ca76278391e5fde5a07126b771d3199b2969ee8f22f2d62bc385d89a080d6a121efa39a1e116bb1e2c1d23cb2ecaa4330fb51902e20d20525ae8c8514faa0cff839367a447d7163f9f4ef487936e15de4da09d990a04e6806e53027b69f5d4d11e24288635d9d9480c460b595cc663af807ff51138ba0f8838532dbf26aef0d83f6db22a5b6a52002238799139ba566489e4168ea0f02a2850ce64e2044d7cbeb7f876427a1b5bfdd2309ff53b512d6b6dc818640e59dcabc37e6c02d8e801cfcb115dfa3ad16c445a0d1b17eb2f589790275886cd09ef0e6985ca264febeead9e462710ba1179c0bd2ce2884e64c19cba017678a4168f94c7bbd964a742d636d16c62584da18afa2dbb0f6abaed94cd77131aa48946e8d9d009e773083b8881b9c9b7b184dca074fce45bf36749c0a854b524cb11a305e113ceb2161a61701693c8071b7048309c7a375ba0277384c59a3322253a46f185aacdb55f4d578978c28e2c471566b80d7390c64aa4b28d92640b8c569771efb85d3b386d5d8357f6516a3d0b095ec52291e16c584879422b7ea7b284d18e3657413b548db7e9ec6ebcd876fa0a4069e3e59f27584e0e3232cb33fda74c8ad3d3a0013b406c35a6bf30f49a8b76ef74a08b9313139ba68a915ab9df1d9df722fc681b6537ea686560488bae1b33677b115c29fbada46528660ef8f97c4b84bfa898c4e651622c12593764880d2b5f41b0c2765dc2d233c7150e13b644db70ff80fb9310269b867ac773430e721d65f9b9ce215178738013b1df246c101e485c89a641181a300e35f161ad1ed3b8195fcb9db7845439c662cf7d8ffcf469dd479fc3105a9992dbe43e0d045e84124730524d97bfeb0640206f88cd7a60d55b8c722f2222d5e7916fb60cac2a2d8ab0411cff41eb4f1d1113ad48ff99f864db553cbb8ae8736c697281d4e3ca4e87d591e0cc658197eb57806cdf79d269e875b5c6442267f7fa200ed30ebc3647b0814c187f690948bd7661ea1de7ae701acebb5bef1fcce73eed3819b29da1b8a3def8775eccacb91286528d054748fc8379369eb448580915ace93f3e895105859b57c23396928e3895fc83956e1a6080c7128936dbab6a60c4acaf321a49d7c4b93f869d05847d7a67254ef7b9b691aea505e1c66221541c94564a2fa1df45d75359d0bb206510c223020c96fb982a6fe64be71c326b344cc5ce79d48d63ec17457870988f48e2740dc32b828198bbbab5f319c05f608bf631ee949cd8118121bb74f260868898da71060691f9213c80eb8d64403daf0f54a0e790682782bdbdf8687d82465eed1bb76d444d6be461ba7a3e36e28bffb1232a29bff99319e7bf7048e8402d5c4e587ea4ab060818f7284cfe129517a81c143d9deae8533df398362b36e98831664e6957f291113f19298c3cc7b0767347144b69908c10149b68edc8bfb5f461fc8de43c6be87bb0f29f1eecd371fd91d28f9248a56934b0aec95ac9c8326147ec14b6a62660efbed4c0621d5628c883128642f9414ae7f9039c72060ece837ac9738706a3fa45464c868c39ed28f7ead30dc927d98e4a22b85e8b912bd407b0cdceabf56e44a6b3fd620349e233f9b7d826a25f72378e69e3ef222cc29d1832198094b21ba2dc6a290ad58b2431a2226fd040c6d7944502d78775115a91ac21944cad36f63545f607441f2ed781ba8c5283cac2ce16fb51685301814e903cedac0c0905b5927b3f29e98c0e076e50da628f20a344948da7a0796f5540f3c1494bb26c4b5a3427bde90bca48214b0992eb7f2bc5bc2705b2b382db6096d17476255d76af595778e466668494641485fd3310ef8e8445c1c924de230ffb4f7a5904a2c8f66140b9b81b157005283f0902b3c33e33096593c4a54cf3aadd21c6c239c8f2a384e5d7f309decad9053f5d9e428228e32dbc49f66950895ca903097185b8a8ddb4f34bb0b0742fe5420684c5b89ece309ac9688b8e58c518ba41d301e33d7e2112a240c71c13b59a6304d75050cad61987cb25fa82c21b596bb289f527167f7f643d8836b6bae475bb4c89a5c44ea75fa7dcf1f1f515efb5446b57bc8735a94471d80a9ed9f6019755eccbb8f073c7592f2bb743441fed98d66749c44d692c081205d6e276ec729aeb17c7a3e9f29f270ed89710a0ed7801a914c0778234fee256935ebe250ba056b6874edd6739919ba91abd5642b314f546b9b227e6d5093d0cd67a24aea50cea022a282d9a3c70b3accca3fc31b450e5da3c01e8d645d310c2465c63b2d4844b1ec9ef5c4214ba18fc359c2d29d919929f577ab9a7429bd251ec3ee4e5999235832af94f41c86eaee92823ae6cb440a169c4dcdbee895f6965dd8e303bfa0df22a5a41972f0e563a1471974479e3547206430e6409ec4f780a5beeff716401878ce6fba7d126fec41feaf5a02a65751813b8d5ebc6d163b794c71a297bfaba25ce65781d184b09f320066aa9e00cd25120ba7783d17f09d6930038c06db871f4ef655262e3511f48bb8f4bb07ff38ccee3355d41329a52ffe72aa2b9215376b728ff104208ad953ed1245348626a2a363498b229192494cd1c512f6c4111b36610642a8e7b434be946a6421c199769738f09f160704a3f224f0273299e4e92ebadc4d4206e9e78f6fcee892d979b89727419c3fd112a4c2cd600ffca85ffea14e9019c2b9de11ad0f63c39952ceaa8c1fae04c7122146fd7ad64f3bbbe08a6654ba825d357a12fadb4f69aab674764d29a569bd35617fa28e8a1f204b63d411f496ffb0bff57a24c3062416b20d2a3ef3287177898e39b465faa394321a36f0fd8d9d7ff940e1d4faf303016d91aaec674fb01b0ecb0ff040b183a233eca2e1b8764b838064d32fc1ce0ef669729c79816971add2dccdf2dc8f77218bb93cb8b874a4e5da7cd20cde469e583d8085b2e4e7849000a0be05b59985ab775579bb7a74b33a9a88ec4c3d250cc5ba2f2c0b894fd18a084a4199a3c3218cda82d18f963adbc4229679419ab233003290200afbbf2c4e22a7fa84866e9a377fd1415bce14d9b640814d822f9320ab2e4cb774426b2705554188085357c98435a45682c5c9dfd7205a0efc9bf1703c090d9f64d265aff7fe9093279fb17aff484a32c6aaed8d3900e552d4c45433adb96b147bdb4db64847cf675943ad4e8536643c810d52e613bfa03a3824bd8773a4d16e37fac03aa7734d0d0ed29c641a461eba0347c360e4255f505155185c2dc5c8e39ab0a1c8d67149b070ec69eb11e633429cdfad523cdc902fa4287cbf00f84382a7ef56e583ea1cc781f3f91babeba298f291355937a9659d195615212b802da2dff64304c9116ab1dd3dc85931e281cbe970a61de02abf9ce1b6825cfe09239b2dd30fe40cf926f24983a1ab986a43a1894b7b00405fcc79907c08eda4fdb8c076f032446b2afc908b3cd02b1a119bae2dd3b5eb972ff0e7c43b5e62101e74be6cd77cc8113559954c17c51e078f9da083e41de80b67a53127f8261e1a1c8e577e44729218d089e6d824bf3b490279b4463178912855e1c9e91182fc591660a8cc0e71b96c29cc59638f1ddcb2cbaafbe5f5a5e888713cc3e94f4c8abbc5da2cb765dfe3d05274c088eec2f519c463fc22215fe3d08b0293c123566c04174a25faebf8517695df921f15fee92ec824523e140ab4f1efab8139b2c96e1082d849fff997cb193bf69e8951856e355412f16db1567b5c0e2d84e81923b1c518802a052efb6fc4201c6d857666be063f1eff167cdd783bb77460516cd05d170e43731c58d19d4fea5ef24306f90169346a2fabfa43062ce1a1195800c64c7511477f05094d30eba93f82816050f0a72a46ea927380c51257833506f680306350cd289bb3099b9742aa298733a89d83f150a814ae054b0cffa1ea2dd049dbc46b032900ca4a53ba0df8b99f5602664bf5648ebc93e814ff76d11d83d353719c3486b4eeeb87e8b7439acc741581156dab35191d900dccfef9630e33ab065a9102dde1b9642a7e5b48e6cc25e5bf616fe2648c554703f2276feff9fb94185eb680e44805a9db98442e510581dbc3c9250b16b35a449462910b6822015e81a255e8683369fff189477c994145edfdcfe7435cfbb0655b5a0da5ab8edb310e5ec71e63eec9180190051e9f0054714d22f66d7aa0a1059a6dcb3af7ff50faad286d09e99453502c60e7f0ef8a4320ce04e9f3c407e6b8934026df54c858548838305b10d7c1a2aa62952033cd746a885d4b9c8ea15272db7ac645abf6d1556ec06f4da23b0c4f451fb7886221b22e740b2c2eede025ad92ebacb7340423232ee55733afcfb34650af2a350e5c4e568c38e9b75ad44a5ca0c268f5219aa93bb76b16862b1f3e837d9227c2f06c90ae02a1932ea026a97a10e4831b25b5670f221065dff56fac3a0b43a17790967b977e6c54a654a0929ba1de201667a5b43d18c3c20cfc8bacde588cf6e088c207a6f3367888ffafdda1a40412e6fb8f7a93ce7a129604515862c0ef90e1f843146429604802e9dface569b00d13f167131ef234aa946fb1835dbcb20a5676f7a33754ba119035386c64a7830300550dc33c365507384313aac269196635ee2cf76e7485d1d1cb0b9e220c13b383328a0e68024578d380bd55bb6e661f42b9f42e8ec9f3a3ce66f79a4cc528f3525a72a8b3605a6d299205da7e5a5c3b60aee1bd34012b2e4705e5da05009f32f9ffaa1112228d1c1e3fc9d2229c7c3d910860a4b363a11259cd7020824702cc9819aa2e84f9936d027eaec51be202ecf6df48b435759902a15de8f72c300d5537284cd87d15fb23c553892d0207a561260362404e5f58d0d3bffa55f228a871c0896b8e5ba7637dc05940e0098ca8ea4ba5396050080f031e0f9275d4e1da99db1aa083fee01c4a8508bb38ec7902315b1866397946481ef08ec44ac40d255920d0acbb71616a78e20c3bd1997274d30b3c3caedaddc0cac11442834aeb5d96d98968779ef67130ad1ec6d40473b88a851bd697e8787092d8b03892718887eced2e41f9990b3a8332ebecc4a80b9c2841f1654c2a9b825e1c14edf07b42ce274fdd75fb87e4eb001a7c891dea29ac3e5234bb018e861abe85ae799c0261fa658e03a473188bf7006852dbc66338aac0dc8300b1f7bcf5fccf635bdc393d601286f5dbdf30f4865be8e4a96c658c8892ab187b31ae69d4989ddd9ad5da2cc8737442301ebf894e6064368a0a77b913728d6e17ef36306f6111384d2e493cc81acea699a89bf3afba81e9d6dcc482a5478dfffbf0550a7b2700cba8ef6e30b6d2006b799018b5167b1be5d4110145999534ef789df071c5d8f2832ca57baa4771f492add1656ab1b41ea00b66dc23bf1dbcd3dc65bc9eaa80b8e8ed7cbe77fb981ee8a0f1d814b48e681c1dab46fb422e01150f2d88996590fcf6bc65a1bd43420accbe1978f01c5684989a0ac0a10fc14a64df171c71bc7c665acc2601c1f3a47d564ef93739d349f61de2ec2f961d23e9da632ddf3bfcb0ab7aca4031032e16fbfbf81aba9191d9b060c40cbba6a8fb1059161763f9dcf04280201560fb19de955e0039e986786df1ac5591c462202c8c4ea2f2932962795ced045bcb893d16a760855e25f9b8c61c8ec7915988e7dafba5fff087c39f624426cb1835d817cf8aa88f576907f64e08f55977cd37ed1661b0d7646fc0bbdb3e08f5daa06cc24351528937e2014a43b0dcd01589402464c8c606c7fe889cd12a705f210796663d82f8eea10e6a8a26c424c688f35358afceea2ec10ee9577bc56a7bf100d0222cd5f15cccca070f2abeb0055654ef4e9269aca3aaa5bc7792fe1a084860e4e6ecbc3c189538454d21cba7a87675b71b463e45e9bd2dc98a331c6965bf63efb10250481b42d101515cdf673ab0297248450f307d124309a2b5352abf65b10cd01ac1ad159993e27bc7dc861c8ec3425474439516661600ab360a8aab2a52582b9d0e32bbc0f55d84ede2dfd2cc876a5951d195500f9a7555235b5478fb4d184b9410ac5adb30ba3b0b56d3c486ba3092d142f8685625199cc301415871b419316011c52aee304d6568766654d506a6b70dd4eb7f9f6de8d968a2ca6b07e9ec460c512a39bbd08c77e74c225f5940ed05bbaac21275201dd74663fa2720ed5a289b9ec5f4ea118b243c13afa4f22ccdb647c67afb95072430b53925244319015b79f1a2cc6a477bd8da7dc12d04789f3aebd5ba8dc41a034541b7bf0d977a5881b95131ce9d55c78c73991113c3a91225888152d7d5383492b372ba8a223a40ad5c57971f2224d938d2d926dca2c7a438a035a40ef65009e28521b433c9bc8adca826e978ed7887d1279016596ff2344a681ad344e5622c5b47e1f9af7be91c49bd9d14cf65c057ba309dc2156d2f8130acb128f482273648ce0b805a7721c8e21d3f83d88a4e51cd85145959c837017b1a0d78c03c84631d810742002e54e465496c7717a822ca7433009d2936002ea7be09ff851c47ac1a79192a1809c5108e1714e944821799555f81a403802c88fc2ff19665d2bde382e1b9ec16f4b1b250ec4a426a8039401873a8380709e44bf2c7d0d270698a806dab9802ca860a147c5c594a9a4ebd9870fc094836860e9580cc88e7757c419bac349d060eaa30c127077348f9493d3e501a75f70a0951c89724bcfade5738f166711da6e94d18107b7907e140f9bbcacb9455995a532041d520675f92e8786a72e304f086b083cae51a76f03032710107c0df990f6759c80651d1a45eb0040aaa01bfb74b272557ba9b2097b06c8077bff816a771400d769186e07566016fb1a06231e4f13d4da01b17c6e0428453860ed1b614fd59e8ac1e1f7d34878245d9e32fd432bea3dfcac03634ee1748991b122e1135daf2a08fea8d7c7eae09796b0fd559e69ed0aabf45ae2ead4f10861ceaa03c257d3d6e08a5d961004a6c71aebdf4a6e1826119721b318956f2433400c6d4380db4c3089be07d94475624f7ca7167d0dd66783a95c34e3319e5ce074f6cea9c5c429dfb7aeafe0bd1e872e74167143a1f4ecdefb869893d1e35144c027e2e3de8f610c7a2089420f4fbba8ac4487474721017b62830c76463b213740d535b6ea40dfabafab7906972dbafc9e7260f702fcf121c3944da45d07342c14f8628785302dba87a26151a8c3728e48f822ceaf85b789c597afd1da2c982ba7ef7f43ec8db9084ada7607befd3791287b79fce9777fda65045242a23e5ab13eb7484a692d2212a5bc3b1d03133f89517edd1e7f44ed4463c37d40a0154512d18793b1d806ed8219a632701bdb99fa1451fc94f233530c1f38201ef60cd240ef03c7907cd78015cbbd5644eb40f87485f6909526e211414f7c7ae96fb3c60fac04fe205b0ea2172b622c5ab0af10241ef3bfc929b3dd87f6da2a7c6e2486a98512e9a40fabbb582cd2bb6f34ee6191fe250ac8776945d7707090e535f0351716a38c4a1ce1d942bdc31c715d1a0debfede2b0562fbb815b66434b0a764b042c577e41c61b16ead5bddb162b192c09ba6aeeaa1a30ceb530e46f60570781ea51b8f4a91bd20eb28ee71c4d385d017d2409d128b463db8ce1441de64a15108d453b055614ad492fe73d6149015c8759bed0861f27a092c450f9f41af7c4561d66848b90305581bbe770921ab90841662ab5e4c5728f5d03453390110aed4037c1a2c2fc708df5252280a0d2d720de67461931a08df71c4694449c4be29ac088c0c70f8366295247e64ae284a0afb8c84b443360192847b832f9237e7dcd6a58341e75c511a3c5843a761c4d45a13665f953b80645f80bbd55c627e80ee72c1a47a50500cf67fd9cc94ab1b0752124f1d1c867ddd6e58c88bf9ef667609fac12932e16b1f83bc381000350df632786aea32682e64df6612cb6c9d1f5d261cf585ccee9cbd3d9a6ee906718b12ec0f731b010b88f298cbf476f8d457921b347f07262d5907346e74e25c0a82bbba51ed31ee5352bfec11d550fa099c713b1c91b8e93b1b652e845b62b37dd62891ab360a310cdd055b241ebe1299e570eb775ab98f65a5b950947a3bacfdcd171e2c8f3444620ee42ded47f409a376dbab92261b759b79a3f6c0cb7fa6080ca69dee32afa7a2ec1dc789d6d8cb0ecaf5fbbfc80ab6458f93287b7e98fa239a32ad8183163f9657ac7f0ad1bb2fac108deb90ff23ed7e4f1ebe11e535ffcce5427d58102861133fe40d0774e0d56ab6210effa90bfa1c6c3f4e99bfda741c9bb86bfbf5741f957b36db8fa6be071b1e79423530f6fd65e59a9e667637824d3dc844ed5f8aeb78a148b691aff2358150367c327320a97a184cfc508af8134fc8b5138a30907a49dd46999d43cb5c3dcba0aa7bd204f3f6dba53513f2418c3e88500d197795a3302e6089999a2be91e62a8fac348c8ffdc855ca57b66e7666140a7cd01f87fe43432e74484359a302f798d4d207ce1112e903e87372a1b17e5c5857ff94d46c4bc9a15314ad434e1a4462037ecef1f59e7da08cd31341938e53e0b23810c2e045d67d7917423748bd6428460a95d52282db4559047d3f181d42adc9ca9a1e92a5e2991be35caeab220718f568302045e94b67c50ec71cc82077314a2bc129393c29d816ad7a008b9ac9a8911dfa4f098229f1f50a59abbfdb69abc327950039f409d710b3efe086cc1f93747d2b5e0a90ec8e534beab8e6db6564d3a56e2609b2b8594fa37986dcbd4abb9192186b9701f887c350169c613577d8a652b9b5c7b9552c81b09279af91d5d2a134aaa78762d632db17ab658ce00447d99cc96ef8abfbf11b94252637ee543e6ec388d7fd5d0e19d3532e25a7520dd66193a12974201bd3ba5b224c670667b0d82f8f0d7c7b4720caf1b27009671e34481b109bf6be59635d48ceba070acf9feb51fc5b3cb9af4cd590450036a63647a627e98e305ad5cf0aa26b693e292be34afbe51f5c359dbb3c34bac6b669e9769e7b343d860ce461795a912929d2326f1c4c2e6c4d43b6bd348a05dc32deb7811fba9e5844ea88c13d5d73f13ac99e42fb99c237505942ee464c9a726312a0f32df6cb5449cb0fb1c8e10e76441ef20783001e43b726d265f56a1dc7f27d481389897cd5be1447c860e6440672ac64dc2ea24c4b2d294ed88a308b32e851d286a2109b558ff85dc7fa485666c25653730556bbdb3ae65418087c0203d94ac692f19e82026f0b874ac5e015188366a6bb52e72bbd0e94c53acbd5086bd80c520b70c9993a1eae89f25e514f6594092d1cffe6c21021ada9e34eda62ba8a4d6eb817b2ece1417e4ba35eff0fb70bd639e6242045761863e03df8d96ac0536eb8631e3ada6a8aa704059754f785c5c1fd5ead157076131cffaf2694d88e2387d99e565568a921d83bbd3a667a2e002c6601361b541a2669a88a873915af823d9ffea05b3d5c69629fa0ebb20a02e198faa6318937b8d23bb8e5ab95f0edfeedd44233163cb656f76f8ae2ac0cd06e1fad7c90ca6f4cba0d6c6db19533b37c6c8d52103fa04d0210a192cf659b1b0c58e52872df0de75adbce2edd8174f99046c36224323ab24766e4105ecf702b40591c2cb1d2ceca754450278143d191fbe4150ebdc7b63c6ddfdeb252b9232780f1d646206af529b2e9fc0541cc0222f3890486f2fcfc82710025667772a50585c292ec766ee73fd4a27f88c3766177d540072f87619e002044efefe34e38264836705de23088918403f84d02e685451f8eee7d8389242847766364ce1852d44c2a96ea51f698cdc8d3d195b316f97d7f91c3a47c45dd79dc25f41e25730b8a23c9766aa931f31a7f1bdc1eea9321e477a181b305092d7d5629944a2c26b1c7d04b749aed333e7502dd87ce5712531882fdd6a8c07610602b462dbb06d15fa8888b7f3ca01d135bca1f477408195f21f66eb12d5b89c6a104e45cf09083c5f59e521757f43875c4428e90283ec9517585b8fab29cf462907a570cf43e3adb849e4b809e8188a84328306fa8af2b45a363415ae59e8876a5638e4f8c57617369e5ff046c54664ace63cd96c81105bfe559a4d170440c768d27421aa02d29c5f018f194bef2780f81f3dd375fa58cc0067687d1a96663c33ff6a641441269e2c836b606fcde79c49c1068b4ecec1d8c189ac568d393a9714220ea620db7e60a884d74c98f0169a87b23459fb6776a7040053fe43104837d6b06ae933a9854e4d83cc380138f98cca0aa7b2b927c0a474008b23e8f605234607e1b3b394caec5a0150998dd84f3b30bbdf236071d5cb0f4efca4fa782aa022cd9d69c13e6fb280b7d99df7f631170eb4f97da4590dd0a7f3b3b9207136da1a900e4440c49fdec5e607e0b1271cf09cba41f51a077028e438796a17fe921ac465bb098fef1879948c3aba899969075b66bdda82e76c5cccbbe79e94574461b1a9dc4156c2e4a67a16374668cc104b8892123607386883c5e12298e27ea580b86e2b87fa684869c5d2b77319a4dd512e35cb51c85a78b90543a2082720956b8277b00102cd8756424106e94d74ff1ddb6c552f4df081acd11b4ac4a4f9e9c69557b28e62d241af337e9d5497066a7585c05d98b6c53602ec02d25fde450a389a7884b7cd3cbb9376768c20d5cd6e856d2206b56de9f33283d8a241e8b969c0a812434bbac15570f9f3d92a5180fe96ed57df3ef480cb612065af956635dff9b4598ba6778f6f8aa6ef573c33adcb03ab0729b8b82daeb8c3c60c183e1d58fb23ec8e0aff8a7a55e4e3a7d323243794f2bd5181878f4ee90a4339d41eb0f9a8d3d6307c2f8ada522fbdb9bc96b990cf30dc99f5603762f4e1237f3936329528621aa10150997fe1f15c2e8ab1b449a3c62f7578b12020d6d0aca7cf6683addd79a2f5680ac1703cf7e25c9d851ab6db5439af25dd7cf0cece3c86f8fe0d105ef87741514e39e229ccdf78298a8eab5f907ad7b62aed55ea8a8883e0821cd6d18e4a212b2f34a6dd56983ba871679179ee0f6d684867efddb0bf6e6be1dbcae716d0e295e19983ec7625f01c2b05c844bd881b1ae93847f4c580f71ef838e53a51f44b6863934e871b961636003f568d3c7cb799e909e8406bdf4f84c5c4f3018601c2e76419d876fd3d705076e4ae21cb0b0b8ae6f6ea279d357dea472fe19b75b3102fe70484407c6dc2bbb115801ff46f36ea80ac31a0666040ff1946d556df1dedcc24c80d987db71c5568004cd70c270f522b444e3fa9a06b8f3487379cd5b6064ed1802bbe0ca2b1b3673006bb2ccf48182be13a5f110269ef7c33704e5adf5caac55b665fcdf2e585d4755b8a67bd65672b6a083a7450c7bfe79c5e75f5b0b7a227632d243010a3111dedf316a1b678cab95b73c88ec0543703252b7e161085db42983cb01aaa2de043be102e458018f266013e949fd5b018db39a3c70093f080a1fbc5ab38c7a8b67f277c605894518e0e5b3b7d7fafee05f80290f839e79a9eb776ef17e80d307f35c71dcb4655c0738e72558f6a48bd1a0b30bab8981b488247dc8621a1e4b7aaccb3f96f004259fe1fbc23a2925e0a6144ff030598fcc83ce50e0378c1c0e476f536592c0377e654475a6003a1994596308d307c9d8bb9499be4ca47538d7cc0dd4869ae88d210dd14d5ad803350667c07f1ba90c0b5bd856dc789f49ef7a6b270edc8eb74bd465436118a09d7c10265213c66d100d3098e29bfdb1a371d75f6ce20a42c58d3176a98dc4a908ccade5dcf48a94273da3283f8384aaa91e120dc65e35d08ab788de36e5da2d91f1cd3f6ace1be8f25ac79cd5f67574ebb4f9c1a95f6db8cb1592164694af31f7638491d3737d953b3a4804ecc048ed42c87e4c6735ff1746fe0da06f936e98b060f1496a15847ddc2f1c4dd5a4b665fbb3221c59709bd18d34fbc3176f6feba85afd571ab542e7d06be56c2b11490c779c82672cff60059456201fedd71c0bd1360101a89eb915bdad8462c13d73270f972837190666ae6b5ae31c2503da9448646ec54fab74480901db945214b2a5aba085e31950f1c6fcc82b4415b05a5fd2561edb88ddd5e82942d20f53d4b9148f063d8c2a97ddc9146c3c7f5a581765643e078d5a9cbc064cc9ad1271dd62634ec37a4be02fbba9d8d84d39092b890406f1e803924d79347b7afcb8ef0273ad9d640a871f358e2b6d07f46e170fcda2e693c63203c1df1268ce9aea944f99535a2185ed886f4f843f99f4c32ec23958ffa932a9decb02cb1db2b59b8497a47d7b25f314fb6de5b429d8b6ff925e3f28d3ea9450d1b9047765a0f689d765fe488428bdb2be7f971440937cb94484a255457e9ba637061cebea3912abe91536dd28d74d591629b4d23da56f9751c71491bea9b7d54f20fdcf2ca42244004f39c24704ae26550404a23d1853b58cebaee17cf333f3ec6918dde2c0cce6704aba031e47a8316ec668c98d249c250a4b763c5812227847304d10d3f37b5d41eb27991ad7ba9ee9cb50c259b94c136453ab475d39636a624530d75afef90ca6c231e78d6286974027f575ecddff0cb67b104e9b87b23cebed782624f2b7f747b9491b7c340c7c9ef3aa761565843d7d1cafb82200fef8fe41b10ab282f72dcfe52e6b45f9ba835bc618b31538b335745b3821ccdd592353ab80a754c2be84ef9511076a09910a2d3febf7401c1836de8dc502a3d27653951b6e339fd20bdb1b44da637e72059374865fb98d764e50501bf9869ccb5c1661df6fc9d0b6aaf81b3f448196e895983254209b7716abfe1415dea2461231fbc94c198a5dc01b4228c6deaaa210aefec54429105b1724dc20d136b93a44116cdc28d1d3534f40f0b7a39ee22e266fd06c135fad307305fe41ef8aa8ef4f1dddb839c1178ec211421f1dc6d338486b335c4eac4db6672b7e199690479714b2e9a57e6cdda065175d00370f2f15a88c71b06fb9772b688bb2ce20a86adfae5fbb78536d2b4a9fcb626f9fa9607b8ca0d223856938192a2f6f838c9a4468034ec7a92b8ea7061089cd1c1b4484c3a904c8b2c60129c9bda651154890e3e04de896b15c7d445f00c5608e60f4042eed96f40b04ce0b5801d506d07a087aa43394d6c045255568fdc8402dfa5b9ee0967db27b0c4e87c35ca94a1d8de0c1675f50d2b0940b1559bb9fb277e3347536969ea3542774e017c21b355d26d02a6556c9072ecfb12737ddaac0ee1a2b2b901b5e861e7f2e78583b63cd4b4466763f6d45ce1a2de9e0a42632608b9c20bd10af6684015f1e8d350b05c694cc519f0cdf5f068b501d55964adbe36c3aa219b29feb4670ed125c1ebf59494d201454b5a114e0f569f68f1e8b8da6b465e48c0b8bfe5980ecb50ea6c33d28db402d0f1b01b230a1ea0bba4a410da55dc816ff8424c934deb1e7c0ffbca69189b1df50167d8cf34d9be800b2d2788ee4d6e0438ffd1f82a4adf37207d2c24c63e181fae12c4adc54e670bea1aeb0e1391235bb2e06dcf2ca213aad1bbb05fc58d461bdccdcc9ab80a1517b3e34c1892e4b35c765b4dd6aabf7ac35a2f30690569ae17105a9f249431558b1fe02e83bbf10a463ccc3a05865995668c85cd348253397b18dbda72464b919a3ffd11966cc2af44b5717d08d0d5d77a6b70700515a2441598a2f63ff0c675b67ead7a8664bbcf2f65bc11674a20db88a9c9b062badd8e2add28080d47a211b54d5113e795012d3f0b30e0135bceca4948f91d0d88d613472daa68278b9255d383be50780fa659eff8850718cf49a3733262049ee72a4fe071405f10dce3cd03f704ec33721a6022c7e61066189e7c8b287d1425211b182f720d7881249f0f28ee526f7da125ae7b17627ca7efc309d1f28c5c35a17070c8fa039d49cdcf0b68fcf54faae4f8fd95d1b9c7af65f343705a4060d6b866bc1d163cb12e90d78bb23dd8dcf2038521ef30fb4e447931501a52ec49d3eb1ba22233e68c101a7e81e5d86702310032307452075eb9309bad7a4953f39b152336579606325c2a7d9b4d8f1af8da5a1a2d0d726aae1c205d1ec1d6429a0b89bfa1aa178bb95a30163bc11f2c995fa722c8471aaf945a7e9147bb89d4863b3c96e5a988875b99ad12691ff9397b6db454051c1649135c25ec90d333991bc9e13af164f93a520a09f17ac00922542427525416747063945a508a22f5ee2bd28eff645c10cb96884c2edf73a411117b8088abaa304c98c4b7a43e20c684ced4d5fae1c581b241e84a325d1cd59789027a39e3043b284e9765c5b25a9b9fbd775fde5de9cbb07bbe23608c89b500a3eca28854b785aafb362c66c4d2bd1de9800a300f26641142cfd5669f3c4bd8fb33e8858c475995410f0d2431bee8bc80e053a37d9765e71904a15681a383b064c2f30e744818832baa11c83da251634eec6749f8f6b3537fac795954fb63e1291e485a008aa64e02d37c0bb1fc76475519dd93d4f3dddb56bfaa79d7473a6ac1dcc3ca96bb30171801fe8d88564471f92718b586a4bb70f9d14ec31e559c344442d9a68acce4696573416f4f6e17ecb3f168f0587138dbe661bf40b3d936b91959e65e6a35478feeea8603f5942a82ed2018ea0329a4fffe77fd5b04efba736e152ead9eb51b1659d4912a642bafab505ea57459d8c0c5198a60ded0ae22f0367b94ebced332126d8aca35330ac9948454f1795edd94d5419f9a54f9ecdc422d970e8c135326c37c8a1d5e4eb4ecde0501ebd5ec23947cde4afcc1c95d004648dc59437cfb707eeb348f8fed928cd92de2e587ab3f52e35f6a611443fe5a5a29fe563c245604326ae863488008a7cc871142327e7fb7663759fa3e1b7d98c2ca637d3b7e6d7847aec5ef1162364f8126b5c6f0ad2efd7bf67cfeec77862f4e7671cee7b216741fe37c440f6477814c71488d9bbe63c064a0eb2c3146df8474efd4d8350a9f740391cf8a639514cb102de8076854029408ccc43ff94e149dc709d6f01784b6cf5da63e8b9852d56fac1a84a05cae1fea1eaae421728914496611a4214c25f2162aa1b4a66d3ec45b37306e91f8fe49d621a33988864525f6a57f2f5dba6b3b08d902295e39ab4df5e7947fd7279378fd6a366ff1a9e7cc0a323075f309a45a50f915f791b213653c0a09fc44bc44477090db485df5c4fb6bca3bba3e8132ab9c0401c563b0849636f53eb8fe86a71d1dd96eeb2d71377604e3a5cda1a3bf7519a34c6be9fa088a0a352d66f909fca531f3925f720ea3bf442c9a2f0c8873db2fb4d43501a56e18b6011234ab7ceb7b8f1840824a935fbb79ca07a6ac3ed9ac8d09b716da34c7fd8fb4d3efc0f300e683a0c837cdf08432430b08ebc7aa1e23366b064e8e43e6f5831431ba057202ba8ab612414df94504d656c868ea1d243eb4a1356f0f85986b2a03c4298526e7b9e6caa0ec77ac170e84558718c7ee58ba2e3bcb71fe81878c5ada24a6a6b1f9273b45e86196121e8dda2914cdfda109340a474dbbd26df94a6b70f5955c2105e832b2eb372e0e17a3b6754de7bca7ddc94e31a8adb83d01e5526c42f7bc3c286ac0aff64c9ec6bea41ffa9341d3d8b71e3731878ee5c2cd50771b934dd8f0c551ae93ad7a1a94c1b74b3228c40a73b6014c127294a70479bbdd8d01a0165c86fd9deae22efbcbf47924fe38c00947138c3dd482d45dd487c04cca14fa5e93b2971f4e1eb0031b5afd4b3b785e3d52000fe651c4bceb8912364bd368473cb8ec4a155b3aa2afa960e99d36af5ff2ae49821f8b49fd2c261fa35e0df07e015f62fe9ec0254ab1d584e8705a5e8bf72e0586462f41f52b9b7cad936b9c98e65a3a2f68cb7e5173b14f4b4db9d0dad394bc62b8455a2cdfdb253e11051555f1dc7223fca83f56b84753a9feb88e85d9fd1abe3c1264197a592afa685bf6c2fca9273b4da84f3e1c80ada4d13d951ce98a0fdd93c181854a184163d4de4546e1be304251d43098670862204dc93a364ce5cc2653bf5eafa788663a41dec3e351807fbdc0b57b7fc5e355ed8565e9a6d1e9ccea63639b11dd5947226151e061cd9ebcc3b99783a4db88352852ae8cbd468b0a0d6a9785ea8242ec793cc717b2cc0ce1c3259f559229c3a26728636f0c017baf26a4e984ff044ae17c77ac59df2b07e50e30fabfd95d67141031d65662ab062d4b105cf1600f085f168cf25f2c96ec7cf9546326a032192e1004524290de45104d0f2c46109587f0d90d94c7b9b23a8d763269dbc3641617a6bef06c548fb9d4f26a24844c342720659fa1a90fe259ec09454c0278c2e00ed68267b7981aa8efd60d37e2524d1e4e5cffafe60ef934d6d2124aaa95839f2912efd5717b164de3481d0f4f036079f2c67ee5ddc24fc21b44b0b138cbd1e78096b090fb6e207c08f09b1dd64a0a673175408a9b03ab96edb81303bf273dc9496d19ff2a8b48afa5b577a4bf495aa6d4c602c8bbcbe6604fef0ec8eba6be0350f9047d8613e4f9876a63f9b01b6fcc23f466212c419856799676d0015f3d3b380c49cdc6bc654700356a1884031c287022bcb1eb020bd50e241aa901fe8053d263eb7438c1e8cef8cd1e1b098417b21a49dfb30e285eb28db58f56111f14b22249e2024d9a7b440d7ff69a2e5e9ac378134f4809a69674bd2ab39217dc6a846eebe1ba70e0fce672476d5ad5e5077db876500cc445a8dda55b4c60fea5274f6bde126540b0043d2f68a29ad2e1b9ae894b2ec77a88f25bd99f2f10ed7bef1ff203af3f7f515529ad2325cb03e3a7e9eb27d1cffcff8d84fb6b8519f3f03d7a6325c23b82a376c2268771144867223c4ecfe5b4401ba0c7003f1006812e0cb99a5e55b142b73a19990f2b24845125559d4e054070a647bd7c4045af58d5b0d93272e515fd503af65b59f539856b039b4736bf726c1977e16ef208dd2e2f9aead3d0bf86cb08a96843d37c1ba943014b84aecb1cf578261c77c65126d1ad8b9c50f2543e7624cd25d69004b01129f78e51de4b76f1712346783dc49d4f0ea139bb863b963d083afc129ae99c9b0468e6156591a95434c3adadf31b02a93856c33844fb7229101b21b30580c148075dc890c1e0478f4ec461d9d7138570420cc61997621c1022a1b3c3c9eb1f15bbb00ebb5e03139b7e450ea3aabbc8f1bd0ffb938c0bdfbb937458390a8281c308601643468d3c970b7685ac33c57f88831b9edbba635996f7cd8beb2a1d6c788b51a444c425788aa948e7885169f5e3f43bbf0090affbcd8b8334217410d6f1f22748d83107e338aa93012679a8b2eb46694213dabe216d22f59239a129da4fafdccde5d7fa58fcc178b9de758656465c406a2728f706b4546bda873a70f478e7a04a2b878834542356ddca2dc1ea3614122ef1a8f8a9b07d0d9a05a4770174c798a89223b08a620430d15498a93f3984fd62b0c42e3038d5653908feec8803ec0185c4b026b6b892ff8c1d4dc66f7a426816434611f085cb5d6578db782f7c3057dda91a78e45033e7f48838b8c04177050a37d987c3e4140685cfdd480e80e5a712dea17872e11fc8031dff7c6bd912e2abff9c3145ecc4846ba174ca6afb8045dd2c0b7e570efd354b9c25a585925d99c1baeff8288380ba8b45c4fc4878ca5c89277ff3b3bd1ff8826be10d0660031672ac71641d981999c9c9c281cbc54e2297fe9e0671577f7ae06a0370145ff5334785326febe2097ee14a11425179b721a74de3939f0317775e9210d734c8aa7f606e2ffa596e329a5153e4c7f9044d98d6affa8f512c4daa336100c7da5dd01b352ed3c360a80392eaa658ce4f433c277647471e906dab78343626b71da7ea9006c1cc1dca454d71836fba4dcf63733c70913053acb475b14b9da5516c98ca78fce0ca0bd10a12a5c5864e4cb07a4dc1e4cc4cbd613f5c1b8397b2fd54e9d5b04917526da38d6cbf8635232af012bc8ba496aac6958e64e24f65098a0a5b30254d7c9ea2655e720fa06ce8670616ca17efe809ccad425a4490cb7959e300d06e5af1f2226c4c351f58c874817d6563c94d92ed94d853be302b88bde9a7eca21c7b2171218417eb44bf332755bf9d3e820781b4c252e34a93278b646366f6cebe23bb67828491bdffe7d4a565bf763c9a6826088291b103e04402901f5f555fda8f3e08ee1bae151c4d995abe2b517cd5385aa74f10afc230785365caea8e7bea281edb3823fc65a24c12fe5ebd1b790d66b391652342ad304af4f1b6cdda3143f584e2a6d9382018f7c9f9895aaddba32ac695d2281a16c107f9d58482c2690b0491c0d900108206ba45bfdd5497948b1ec3252724f079a484e59990fffb4a141a713265ff01979061062382ed022a43ebb7ae06860e5b401e336babdadbc15282b103f3628d3a202fe043db62a5ff21ca04cd583382a3f00a9a216f676369e94239d25966e47e8dd385e789e00a4ed3f658fdf9f8cc947512dcfa6307da5c9d7ea600acabfc39eaea593680aed9beedb143ada29ed27136a2297278621d63b1dea1066ea4efd85b0982e3c16c1064f0eb78f89b554cbe2696bf455e17cbbf224f91b1301c4e226888a141869399a8d458883cbbce9f72b6956f147d5122165fb598ccb32b1262331d73aa82dcb6b2e37170ed3b7caad9bbd95afa038a56610e2eb54d28e536013bba76b54dea44143a5a3d4f8dad4cffd151a14be67f586bbd6c1751718c106b1ec34eb3eca01be0185b1ae4de612dae6e9614499f5192c4ee0f02d04aa8c35a2889c4f88cf3efec5e0feb1bc24a1a079298c0d17698974c5390aa408279c23a20304ef938e69c3a5147c8e921228a9ee53e0907c7539fd82af97600b38c93856d314b407af5e04b66658ea7bc11753567486291e7dc8767015e67c88932643efcafe4e676cf094f6dc9589d1633d1f231429f31962af194948a3cac90b0ad8b1cb643e6be9e961e2bc2e77d949a56058209424674df7f195403dce1860cfded4602ead2378930249db8d20e53f0a278ea902b6c0b452ac05dda5ebc696fe2a94c8692f8080af3315376f7e5b2096905e8b186f2b20f2c7d6e7819753fe7f7b0bee7f0067c9329ec63e63997f5e209190e2223afe704a7ba0b44f33ae1e214290a6308a1c3a9497a833a41c403f1d0897ffe4ea702553131fa3efe1ac1822f88cc2848a63e309072903b87f9cc1c415a8b2235c076ad8709edc1d1efa563af71f2eb0108b9b8a6349fae8a220b8f83fe5684fd5d36aca69ad753d7e2ca153d5d2591941cb7fbc2260b38985e068925b80884a1f1719a92997b00b823c21c6aa2143b92646a9341c92f4c1316420d064dc48b99b853a891d8e7fb677a66e01035f878fe1a75866acb789c2e6ccc118d15016c9ed5fc3b1fe2803aa74c971f01a173e538e6169f1292c4e2df8128e733bf6cbadee437eb3804c23f26234df4b52fd9d83199684aedf500bc44149ef128ab2a0db98c28a9808ee55fd9ef17af40cc47102ed63f9eb4e8db682ecca01673c33291b419316ba556bd59c3c2aad4552f19472de589b440713b7818285b4a109071a6ba2e5670b702fc54a20ce7e6ae603879623f567c411e980e44ba5e4a709249eed539547fddc79311bd39c9f947885a9070993cceeb9a8a788852e5b14c6eb6974d504e937dfb48b32f0afeadca0bc7a032dbafa18a201a3fc6adc33f3d49a7e82d88da07b19ab042238aa7fc3c974c149fa4df0f3337d1c23b2141e84b304b267fa158c4e35d55663f55e63e8da9c2b98a8ee7ee3ca02b6e87acd824c371bb9c6d5a907fb1674f8db17d5fbea700fb524322c57f59c445be42b215e10fb83c5e9382a0e2dd138f68a825c9c629a01c437bcbadc8fb174cac4c7757a6fba885514e059207312a857d309a17f9dc15bc603446beaf18d9a9d0e15556d86a1d47730fe82d664001096dc4a3f59310d2543786ca068113368a0d9c059d5ee2c0816e2335667b4d28be3a780f3bc535755592084d8d297d16a3bd14a532dabe0640fa2971cdd968acd8bce0b2ebeca0f8f39334e8e246b4b8f1ec0fea0ee7a69954b534d1a19da414c6c16ba57184157c758b02928fc3bf01a84b8c72734e02349251642a6e63dd04de672a138ffa2f3ad2b5d190fb0efec95394a92ce3bf6f6be38418e000d0612b809eae7873d2c57ca5e2a20100506455946e1851e5a0f1c8fbee723e9b20e40ffbf4c70d744ae57aaecb986718f357b291b57acbf256fe694431d859fd991a1c002ee0ddad200b5a7e93f3476524ab515294ebea90bc2717ad087a73a92c0f5540e527d17b0f5150b642eaa4b76e376095ebb765244830219d4816725ccf07bda4016dbfaf35449a57eb89dd645c4d6c32422035ba79ff6de9922097a97ef757ce2955f69f195273dd9462836e1aa919bf6a0d0f8e0e37de6afefcdca6fa30f86cdbd87cbb7ee984836df49f7303a627f318aaaa565723bcb609a5a033fe64b867d317d90c065b547dbde547256dae1466f9a4412e6219b46b257b65ca5eb0aa0e085955ea685afa7f76ad647b54c0d7f7aa39a74bdd6fabe6e1a5058f8f1fbe248fc0a03c498bb0f84bcaa28ba8c8bcbcc7a7a47d9195cdd403358e0ee1b7f21bab32a33833e7c63526035f3c4242219ff424808a8c3d51648598d06783a6d5df55b7dda3f875d3d3095f92180454d49878cbb88639e16cdd6853f4304e5add0a5e29cf74982d5ac9d99334bee3a9498e135554e8d3cd0629238360cbe6d3654ce72d97e21abf197bcec9929487cfb0f1ce82de62f560eb1911ff98c5d68b9ec535cdea5fdd06f7edb81530fcf490888b1e2214e4033f7f306f8919073dca1e440ccf46162a2cb3f45fac501a2e05fb9c1c9e43c2cb2463541f93186fbcdc0dd291b047f284eae9c44fcdc88bfaef0b5113964b13720ba64937a99a6f944a2e7cf9a60e5990ad9369db94c2c887a3fbd2fe0c8e10826d49991018bcc5d6e5f7046e48245e47d7bbecf41c8fdce4e3f998b47a2fc3f01a7a4b848a827b6038dd235ecd7bfdff97d6462d0a4277fcd7a07626c9c5e6979b74bfae5e87c65e9deb6f2653ca2d473a64909d876d1dde7a30895b89c87d4c2bc176ef901ed2f947e08eae28ca20a3bdb77acf928794f475532af39b5db192dde39b9382af9687c81b7650a26fb991c54bee94d69efee02cbe032d7ff74b596b5d39ec957daf2261090683509e57acefd788de72e6887330721a9a1694b5e1deba56b1311c3553ec1eef9354c883f72f01a24cf2dea65140005138f362f5bf63a49f18178a0e11f745b88eaae65713f084c2f012d78febf9641fc5ef0625910fbc0366d95b539b84226414a2090b7618fef088ab1e2765bb7413c8c1907bf954d2e82c10d4b019398180d177b20137aa5e2ec47c798a181599448ae402a7665980ec12ba61be5154f78cc621dba434ca0c0bd88793e22a1abfbe5dc42e8119f7fc8b1c1792d4893a169d0fe2fe1386df0bc36fc308d4dd6729091b0544a1ca9061d732bf0cca9f78867da0da15104953fca607ed2bf838a00af4f85b9c7b4eda1d40dd684fe1cb574c83bffddea77abde65a4a139675d7914bc7aaa74dbc5b5a08526d1af222b9a07e61d8abc05db4d07c2f698bd05483784b14802f484a2fc4c2122fd02cc388e753564af31c8dcd1888370456ca226ea7ae6b218ea6e42e95103bc9c86d2133feab6c05634ebb5ec37209b2431aa7c55e72ef98abe14cee91163d63bd418b44da10752aaaff8b7896c7e1e014a724cf57de0d80be94e185c552e7b82f7356397be9d8bb7580fb5dc96d504b2c00408a6ad04b92ec5935525ed68c325dbed81ac5d38b2d86eb74a21fbaa783fca20379cb5ba68c5f24196c0a8bb5e85efdf350bb22ce7558957e8cce616e159f76ce2859fd73e890971a735858659514d0b9dd0760c5ab9455aa89878a869aa1915bb87725e80d59e352fa1976654852948e1c19a39d924c5236a247dc100e2e773822a7c894bf17ca9c4cd9c4d95a078978b1db4b1fde90227d33730a3d4a51344dc4b5decd111dbe3d62793b6c9d729f7fed770e7d34343d78b456a8fe5a967b6d7ce37725ee9b65edd3b7b5c26fdf6a5b538a60ecdadcd97afbebaf1c205de4f237aed5812d40eae9c3ffdb24273a8581746b1c19a6c472716ec3fe5e7cf55aa066ad005e8c4bbb1935f3729d11b09fb441b42c6cc9e2390070af666c8a0cf96ff9b826d658c7e067734f3153c8dc5900141ca7a7f8ed08fe42c4f52956203e90db1050a6169bdc08d065eb7016c8a5cbb2f167ff63e492e60bd6a73c70102f849b606ed89cf723f120dcbf207acfd37444683255a000e6bc88b0c708fbfd0d0363f5d7516b046217a87df3ab06c6924a13fb0e21d652df8d0c075f1370934c236b53320c74ba8f5fbe5c1e7b463f7f73405b0cf33af8628b1def14c02ce1697e6aa1a62674a6a4c6d9fc54fe423096a6487a006fb4f2910bb7020d59f68b1560856c5463da09107316c6977ecca4c292d20d03613aea0a15c00397242da1894ce44712bd1694bd816be961d27905ee292bcfa57477bb40a0f1f2d722a6916b76aea7310a9dd6688ae2aeb569a0b0f37a9a50e8766d2d1475c9d6589a28d4cb6aa9ba9e22fdc14308cec13ee7998324a364e75aa57d9b6e509e6a33099b14e8ed8c4b64480283127f400c9924b69a4c90884e8dca8d71688c836a28914de42e36710fbdc24a875d35b399cefe526b032b09c77667a0ffe642cb0fc9932259e1042826bc0088ad95aa656b9bbd4df7117c4691ef128c647c9d01be0e157b2ab1b1131ef6a323572f4bebfab0cb683d26f3c8de307f928cfdb531665852cda0b1aa288c0421faea7d94995153409f7194bc02c759750dbfcc8f484b1774c9efa8bd34c795ab4d37cd976a1e20d7ae2babb72577e3aca79cfb41522c2136af19f9aa9d8450a443ce1c5b89fbe74889ac4b60091f40c69fb8b63c884a4ed7dfa2323d3a207cc54b76abd89f19155555f8f62cd27f30ad0cf170a56e6badc0a352700b0de08fb545c225616b09cde414d81d9c236964540b3103ef365705d1d5cf76cb16b864210c48beb909364093abf5a4e50dd8cc50a7cc2b1b1c0f0d88c6dcc2797d9d89aafe992809a9be754628158b113436adf6dd1838ad0e6df9616858769a4a23d4e630a5d5f199022e9a6f16139dbff97ebc69c64405fa541347d43785588bf649b04aaa6b9de046e03b93c8a6b677f81d6f7ecd24ab1d63077a569da1ba3dcb6ebb3d1cc0fe4852c1f693cc4198a0a8a363fdc7b55c35d3c4592a5b4af439c3e9d5baa579f4834e32f849319098225f27f92feae819b24da45f5dca4d24c9c2929218f6d60207f9f0e6616f60219b3122ef6dacdbeac535b38ee1442cabc711ebafb97018b7e30439943906b8375960a0a5e8b91bb2762588c73866d9f3da74ddc2ba248203af64550bbb77306cac19f7077c865589dedcd081bba5869e8eb9b17629ca1ab028f28f877fa090aa488f4c13fa3f7545a639891df584263b336aaa46deaa548a34bd9252ff04be55754ae2b78e0446784d98c252a5ec5ebaead0f3733062bc904aaf4f7da9cb6a2e5f7b7dfe5058bd01b10873130af9aa73286464a6d70c95f6adfaedab8985556d9d9ff9d473bd29f85424c9110dd2ac9b996a9a41fcdb36b32a3c7cca2b550c67a6ea83665e955b813a9f772ea8b1892a7a419d261d879b2b35f5122445a8344316adc238d0a1192ab942397beafa69907deb005c3a938c3e4b824f58a15e2b0b2e237b722d91eb79ae86711428f386579ada0e6326c8013a926b5ad797e8493b1d4d6113a0caf3834ee2fa08eebc0244783e6a2ac85a10907026d63f75d52b75ab6d04325f8dc1bdac191c83d712e15c603324fcd852697758b7a090b33c443c78173990ac4416c7dd068407787040d54f1f63d0fa97dec810b4bde8db0224a06c7c1e4ba2ea645d1d3c48e6ab163f81cacd525d87babc6ae072614ac6c41abeaa06d22d83d8aaee4e1a71424c58ac4fd40f424f8d52e8626061cc74900f3a0021587bb4c473dbca3cb995d11a1b63d6200ee70c7e9e1dd35e00541810b71f0ccb987966a45ba4b382b2a7d6d449512546dac330b5da59416014ff8b4bb365b0c84ed385b9af67aa65d6075f262eba6085d036a9b7bef6ddcd9c8d16aa36c0feec7ff7b446439ed9f1451f1e2be9b90be9760841a4a3525101084926953fc251b9461c6528bd794c8c347940e6c3354911abf8752c0c1415009dbd8eb377619ca9c94e753d810454485c78deb60fa86997764ceb0d341aa380a5aa45ed9a3c8cc90fe7f18ce08c70b73e1f37d0ab53a69d19c093c4d6a7146853b8e10f6f61de58b9542fd6f1431619d4cbe3661f4082f065119b8c42fd4aa045de1bbff109fba908e233bd6693e16f0294b8a9fa042212e29e0551aa3ea1086ff69120827b13affa69708b734efa3e25a080c2e27daa9f921b82d47785cd5502f121e6d43fa116e4eccff0250dc23cc2408708069646c747f958e184bd8cb700c04d5704a5bbf3e60ba7eefb776f84246f0eefe30f1cd2fde4c980e2e089cbeb2afd783df47c4422b9a189bc1edf2fe4ee839401ac0346a0b30f9923cd76bbe6acd432cc4e51e6c4a946f262cf4ee4f28d023d42f46509e95bfdfe6386f7d956fd4fd0311ba29da29dcaecff0c3a4b1d63d60fb6278dedc2d7f72154e8993b426f152f7c94e48f4bf88ac8d1c44e868014c7038acd328d5b309c55a503c9156f8d689b5ce0c5d56ce4656cdfa2d35c730d32bfc23b39e966cf5b6cd42415eb6a90cbc62a40339a90700818028040886c9da828a398f5885939f9d982c7c6c2ade08119163f37224412b2a5dc7bef2da54c490626097d0872085809ebb0b832a6e8e05a99b3e670b164b5472efbcb4a8993d37fb1e4c930cc9281b040e72b33c20de5ea49b973f080e02045bffcf1d107c71297fefcf9da77e42919d2a6c61a390820557a2a5fdec81739a42357476ee8e5fe9104fd10bc4ce9fb9dd55c03aecb6e75be1707209f624d7e385c39c35aaed25a8abd1af0a05fed7b35b81a05bccc556f49161af5e94b4c77cc891521a95c35b328787878789ce5434e14cad5bd34fcc66fe68d36b727610e873b426f9b5f8d97e5b77d200e0743959766b97c7c69b7919fc5b0460e1f0e1bf9325bbe5bb359ad9edf17fa70cc462e9b21cf793fe043a948e967a51c8d2457a55aa9301e1e1e9eccd188a26ffaa6716eb2b6699be666b064ec932b19e4607fa971707087fbe02f12e7e293dc6171a5bc912cfd5976afe7fdcb1b50def438d839b2f7a8b82b73d2161c57be44191b525aaee160471f6e460e35fa71b4a4744e1807bf2984731a72a8c6d9f61c5c99df75d0a53d09d13059fbb6f6392fdbab22bfcbe14be5332d681f661bae81c9e8c42c99ed39032143c8d832dad12c79877cc988321f1cecf123bb102f5762fc9eca1d147b0e4a0c72e1a587b3788db3f81fad765471af8789443b6cb2b89ad7af2721e6912c9b94ba8eb59d7dc7332cb3b63a8e141dd84816db2d9c97d8d2402d409eca1ebb9e0a35927ea969bf03907c1c5a4afb56dac753efa0cb1c403876d0b4fa75abc95116c50d6f6e8940d2b270e10ef990fc52e45096441aa541a5a6c52499460b373ad291380f3a64d5b6d6b4ba11a95b6fef3afe624a798bc708929e1b5c4a29df55fe72dfdf579e0af27613d6704d0fcee2a14b0f4f85ddea23459c5df5e4b07fcc687f9932ab234ee2541cd49ec32b18d43e9a2b78a6168752b41d57f4e0731544bb82474a4d9357f05cc173c5911d3c15730e4d035dc775e44bb75aaed3729d96ebb45ca7e53a2dd7c16e6b5ae7a06771d8da8134313ab271f08703697dcd2ef2a55b2d97968bdfd8b4acb3f8672a590682aee33ad28673175808f121b27f9c12b3e494192c597ef5af2721e6ac5f9af32b527aff0bc77c32c10d7b55b1afb87307792a66edb32faa9846ec1b23dcb0571de3bfd59ad5aad5bad55a6bb5b572b5926aa5f425ae20176e189bf4084203a57718a4b8a10e1fe847a052ac63091e7cf054d89f8aff8e94fc3a1d353149961f81521278f874b4fdca83fdba89e464486e78f33b083ab84ad1cfdeb2262651c9722d408e405eb0c9bdcab27b3def1f04b1998e7e6dd999b5597e3192e09e4a70b7a6a4a9e3e00e8f64e91b296ed8c9ef95a7b8cc8a3182b84d9639e885fb15217d8cec55af5c88a9094e90428a8bce39e98c020b51445153e845e994524a29a594f273d06b4a29af7972c5f5a7f3bae835e7c428bdae39a79454ca29a76481cce69c534a3aa59453b6b8a00425104144a665512f7ad17b746464d4e42807ab55102b4795128c9690a32a0848c6c95e2a8128475512903891a32a09407952f93176e73ae3c7393f82dbc7acf9df38289d88c794eccb71f008f92eaf94cd3edfc1aee3a0bc3412c8dfb4ac723ab44d0732a693234723c70b39f2b523eee7b08910e99cde91df46e4c7f0e3864d443b927ecdeb9a73ce49678635e0a0cfb6b1f3babe99d3447c64e73971e16648a8074242434345ada1212121a1a22156115151ab6888c512124ac21272c289295c8c527a746464d4e4c808c3b09b15d144134080b450a15285e0fac710dc1de894524ed984ee8aee0a1e8810b10152f5fca0a747a55a05a9543d3d3d2b95cf0a6815b452f9f8f4f420f1e919c210ba1a7180f170e022830a17a9e5b719bdb0cc2566e3663a07db5a178e3443cb59e95e7b4d2aa7d349466987c5ad288b62734397dc8f82d2b568e1bdc7cda8fc8a0d0c1674816273532c2a8b5b6358e166bec3a2f33a2cee7333b41cf3851b66f8fb669881d2154aad8d2b337cf861c08021430c2f545260c0700183d702060aaa830103c6098c9309c6850103060cecaf5c047381c2b9d10926383903c26d079bbbb1651afa98f3c22c79e2b06998ec4c303747b365fac5186356263b4c763626466898ec48263b4c7224931c26394c8c30e1616284c911264632263bfe1299e830c96192c30487894e6422a443021357dedcec663897076e86848e848486868a5a43434242424543ac22a2a256d1108b2524948425b4c41294523ae745e79c744601a4eae9424f8f4ab50a52a97a7a7a562a9f15d02a68a5f2f1e9e941e2d323032000815ef4bae89c73ce0ba3734ea2a19959eb99fb0c5bee639cfbda19de9e62ed338cfd85e973f8c29ef6a93838ff84c97dec3b69827133a10f0cc3fec2287d4a2737d34a8c308c523ae735278d2c4d881f5c96f94d07333aa594535e3f8410a20612238e1c1122a4650942ee952f4e24a713c20f8f14770e7e1c17fac0525a540b6e78fde6c66faadfa4c88f4339bc83580d07b18ff1ccc86f9eb8344b9a78aac9156c32cd92a352921b9d5862942347836689916a093859761947b3a4c992a26c49d192a225474b8c961c5dc166c951137ff19b252d9a25459ef241b3a4680991df2cc1967892c648a3a45d5b07e517e49cd7e537cee212fbc813875302e8d27723232b6cacb0b10288a4b1c2c60a1b2323a3232b8058f1c30a205604b102881536474746464d8e8c8c30620448d5b3a4a747a55a05a9543d3d3d2b95cf0a6815b452f9f8f4f420f1e9c9410e6c6c728c6004974e713324c412121a1a2a6a0d0d090909150db18a888a5a45432c9690501296900c6c60032a94e462342d21a1eba25f8a8dce22d32fa494d2eba2736218e6829d9d9b21a12021a1a1a1a2d6d090909050d110ab88a8a85534c4620909256109d18006179d73d21945caa473c2c07177773fe5983252c1849892ef0215832b4fb47033c922bfeb6067334a889410519a2969296961dc0ca5344a5a9446494b0991122225444a8c9434516244a3e44889d12b69f98ba7a4480991122225439e9222254443981ea7b8f4e775cd2fc54618378d9b9933e366ae8965f1bae6bcb278514ae9753319142972d139279d51509772ce96724e3ae99c524aff39e9754de9eed29950e34a47012827204715147c90695a59b317f3c29ddf9f853ebe141b59e4eb0b6d7671342d154d4bc5cd5c3395af8fa6a5ead181a6d593334d0bc8c198e575d1b4560ec64cd30aa269ad5499a6e543d3eac9ced1b47aa289a685e4b67c26b634ad9e2b083387524a29a594e66014c3e8534a29a5744e6c66d945e79cb40399fef5fde0855b84eecd51050514f962c23de5a882020839947199e07239aaa0e0c9e1ec1e28745e050a9b1caa3ce1b2325bd2ea4275fbb3f8849164a158c559668eaa277672e8b95051639c53fa74776feaedd4779842adbcbd0d960cb3d5faee99cd81638b7169f21409e3a94d7e3398c8c1cd4b0cc2d9de76fe8292d95e05286f4664b6075b5c64e020abb7a6c6f9a7812664733d46909508b7b506d23e3d41d77ef6bdcd21eef631db08c9db04320495375513363d3d8e85bca920bfb4ccf6ddf2c9db7713897d7334b0a7ced5cfb22cf30762268818637b1a1988377806e20d8de48883db6f41400e6e1f3db5f57412dc42983414f423049f5ca9ad9c8d1c8d24a527bdf6b5108dd237cbc1ed6727e1665c1b6cdbfd6d33fdf67dd4cadbbb8dfff04d758420797b17b2fdf63ec45329da47d58f50debe723885eba11133f7853667aad36fa16d9f06f2d4c96f1bf793cb1ce4beee0bb3cc7de4932fccf2e9c4f564f86b22269c7dcde3e0f62eacb8adfb611665d8dd3c1747c351f5a3cadbb7cef61b0e07bb6e5b09d7c8408cb17d0edb5b1ce3e0b6fddc9ae4309c79db5c00617b6f9bfee12fa8df62dee66f1b0aff48a206256e7dfb5cadb556b97d3cbc759253e7c7959f23b99790a3ca082cd30d6e68779052eee8c14155905c4d9e1d2443726c3410c43fb690833e632a12ff9b73a64cf949198b8e84a4e5610707b9eb6df6d95c79e2663f75c89ec7fcc21df26bbcdc3d3c6734081d3372f8355eae33f54be94fc7fcacc6cbdaa7f4cbdfbe987d31a5bf1b3473349d536ed0dc2f8370d09473bfc6d698fd75fb6ed0dcc3e474ece0d6d03e55f6b9e87016777196d661847b5d2d9983998c39fb52e4639f7d9c9f4d1a1c376846a208403ebb5bca96dd1d63cbee8eb16577c7d8b2bb636c29bf20a49d9e398bfcc29acf698afc6ed01c84519eb99f3e51e4595d81e2c6ebc31e9e352dec91b52f4c29b5e4ed9b9bd94a2f2d533a9d5a5c8605bb5c7aeb2fa09fee8d7fe3e95bfcc5863232f65d772f56c24aa57aba5fa555f1547d17f0547a6ec67ee9abc536ffcdd584dd3b5b6b6358bfab1f3f34e113beb5543f3a58aa2753e9df5f62cff5d2977e7aea725f6ac9a72f7d35e1fa257cc2a62beea6fd74702b9dbe305a5b8aa5b71f9afe74c2b3647aec4bb8f4a7d3c974fa8e51fa221c49012847551484b24b8eaa2814e5cbcecbde6a2d2e7dc41cee5ce3fdd387a6af26bce2c4bd6f7aec9ae22ddd8fa5c7ee177a1177d64e7ff105bc54faed96bed6199bced2574f4e386677cfaa54af149ebe9ef08a13d7f4a78f9c0ea68fc7e9f31c2cfdbda6139bebd70f887a42b1a87b7a94fa28f58b31c62972263a656d972d4929363c9bdeb3e9bb414f5fd3924d5fb999fb91337dd843e6fbdb76391a9d4d5f4ff8029e4fdf71341288d3bddf713666367d45d98ebb214f5f47f03e8abb21f3e9519c0d9a4dd24f5f8c31ee57e4e44d5f11202f73624fb0eb380bf6f5c4dace4b9fe7b810c20dad942f27783acbfcc8a5dcef06cda52f7dd1c1ed635cab263063da5f9b4b0fca170cc4a658ba41dd6f1cc43e2f0537f472b0f79c1d20d8d7d670089ee0782ae744c753f5b73fd9f194f6db77346804f4d6ed80b63e8661f631ac5e1cdfe2faadd99d6c9fc3a18fcc99be9abe941a319b9ec649fb93f6a6afef236f38b4251cf6c8a53f611c6679bb98f4912b5dec2397482739d9bead4189ab6d9af3a82051e7afacaedb9f5fabac8f7de7c5975cfc4aaadf0dcac5afcfbdb5918b1c17bfa89363b496528efb52ac7d4b69fd48e96f1bb76d4fa9a556c3316fd1c6aff4ada5947e7d4b29ee766cdd1e6b1976d12971eaf571e5575677be7cd287d98543eeafaf246c81ce2618dcb0470e5348af7d8dcdf73bcf53a5a7afe229ec9b9bc19e746fd05c831217e3300d99b93742901c8f725411e1472e7d2d95627311c8610a57d3924929dc778366eeb92fd6342b733504e1fae78f7d610c2263b664ed63588914c326d51a9f7bacd3691bb0131c0731ecb927d56ec741ec63c4d53ea97eccd7c417bd96a84ddcb003b3f953523987d4dac425c20d3b391fbb4fef21d4194b9508d7bf94815e40448e9c8d52ce1cb480cbf51e94388bf7827fb9d488e121477b4fa11b065a2751e5755db20b47b2ecc24e4b976c45ca570d0149be39aa86b073eda07d64cb6f6e62960c94b30789628be5c8cda2900fd572a5ecba324d23d1af071d36f95ecb914ad774c2b1c30ea7fed2a7779cc52ffab5cd0f0733256ef68511a88d248b4f4cf1884cc4d40db3e8b7bf3eec491653e411539d86fd66da562d472ac5e0f0f223096d7e0db776d28b6b00c635a0b5aee1a096fbde5bc4c626cbeef5bc7f1054d9c4959ec1126526448b6cd96d23bf7fc8283f958c095af6c145c55d5c6ca4c43e1067e66d4f42c4f8f153d134dcc969b517b95bc3f45b4a292f6a821b7a309eda1ed3b298e58b8ab3f8fbfdbc1edccc417b71e7a978d88f98857ff82b1e63fc18196f85a1a9f02985f1171a7a6272a891638708e8e881880f74f6833705d9df6595e5f7423784b93ebbd7f31e068656b1611b56ebb6598ec3308cb3d956710d4cc67ec31ace6e96d8f5cd3a2d9df8ca91a371848ad3829226b339bbe888f4fe94d27a15c54c6775d343767323c3267b21d5686047cd500f2e0e6adad7e2a0dc31d4438da6693b7a38a2b3a30dc97010a646d35c34168ba5a3d32c9d66e934cbc26c487a76788c1ce9d101ad8e0e8c0e4caf563add4ac662e15c2156a94dc3aab49e07f375dd027658a8d41c9d1d1e230eeea8f1a147101ac070d0116378f4d9b21417c7a4b286e7b05b70b4a06f621f111b06d979b2f6f30b61aa946096f20b6bdcf4cbbe91a4f9d91782f3270d28b86164f5b6cddc6171431cb23f0e30608d2ce5570393b76fe51d4ce98f4399c61b70a892bd6b64ec4f42c8232f35ea4d3fe6a65fe33491de7190a76fb0b8e1cd321cfcd9f4ca33b42ce3ca977befbdb9e1fa1251bd5d4629679c92946223fb17622047174adc108c13fbf0963fe61c2277fde18831e6bb38327104b59a64d2b3771ccacf8bd9c70cd5e462797e686b11aed7b6b294e5bf0b2fdce9600a15adbc92a38a0aa08c24c71cf37cea819b26c22abe0842265fda07e845cfe5e1339ce5600fd5c08217aaebfef263da2431e39ff5d0d72c1ed97bd74f8d52accda7f329d5326cd28c07fd1e998aa77864ef2f1f46bc616e73fa4f8d9bf1ce7e511929697e6d895dde943465a683ebe5b4f167a478464a27a5b3869cdbf3298ff9d7fbfb531dae6b5ef3ba40e79696780310f2e3055e2f6b2002a7c807337d30d30fcc33f76889319aa8a33b464957142c9b1cf39c73da29e75ffff9f16b16d190837dbd83f7ff617223204a2c23387fc35804e7535ce79c2ad929957446d2ef66504a2059ca482119fb69e7cb2fbaf464961fa5b4d23fec2c5fbe733a603f9b45fa8e1a016dd4367c47326211dc5ec335825b29b26cefdf469eb7cf5ae42df44c39e9b3b36d9667aced43b7b9f1b9bedb6c33939ba98f71333ed72f6e4335609edfac1a7ba394e7d7440ef6f7e4f0a524851ce0725699a23e765027696e06e57fc977cec60e126309220b9d21fdc5de576a69d6e5fb1a37e3c2df5433eb1895bd93b71fe328b473907843e7dc258829efef0a8c0fb3daabdaabd68cf675dab4d8dcbd85a9059e3f8068409aa6a934dcd9c31a6b45bd9b579e6b2c96c6d280b495168419614d4a1f6eef7dd5b0ca7b5b8aa7e114efbf57f11eccda6fded79a473ce57da18fec3d7d2d45fb161f3df52df00cc2cd94be14cdc39a6046de7bda872d3cacd2c2fb5ea585a7799ef6295e0b2dc5c38ae68f096402718d65b1224da87234261beeae01b9b8335664faf9c36602c18ab022146e91f2e1f53ccff34af68783f44bdcccecaebbc6f3c704825994e7799ee7b5782d498b168fc22d3e72dec7b81624c36345584b53790aa5ad3677f7ed7ddbb4fff0ba71f15af87e5eca474ff914cddf845d2c867f21316671f7f38f87f7f74d5fe8bdc9f3a683a8477d0b1cda8c42a1fee219de24a70d908ac2a4af6d4933e0cc416b32f1745fbfee51beee4f5fe8e518d96118fec32f035694e95f1aab73d841c2e6627881a9e03005671886afd25a190ed21607e9c3805d82c41b626600ea346fba3f3d0a0acafbc816a370872f0e75dcb73ef2c53d68aedf4c41db707a140e5d289f3e46a2586badb5566693f5ee4da6bf5f63ad76c8bd9d65d3cd2653f4175386fac2eb5fe8755f1210e4dac44111f4f681f8525b71132253538ccb3865f10546b2f4a0f9f42e52b8614b6ef964c03ccd3eefa3a60fe688c667fb83b3360ed62307e9db16d97ee46cb4c8d546ae9d147647dcfbf5c87ea62c6e8b1c554fe0c9f771f0d4ed3e84417de872fa1044f9f0f3fde8d7fbcc5f361bc942ffdebf5faff50e700710b2d00c677fa38d7ca9de176e40bc47f9420f3c7de1a3be1084e9bed0c5f4d5566d82831b4e2419121f4f01cd2096a7a2ea094432fd163afd858647fd872b2b1f7699d2f0692cc9421fc617a5c65af9e8171dd4581c37d3f52a6ca17c851cbc9ffd1351be970341f2e500907cff070e6453503e3d0a3e513a8d14e148e4205551b193ef9b70678d65a4b532d58850b836a935723329eac1704d41ee77bcf70b6bc06c7a59a4c3fd64eb934d5e7029fd1a5e7079dcefd1d9f4282728187b94978242c1292894f7502827281f51f451f0a7a0fce9a3a74ebed0473e79ef4f7806e1664e5250b00fb97190a2bea230f617cf20273c855c144eb97f3dea4fa80ff5cecdcc2328944f417d3883780ae50b7d64943fbd09cf20332829a8ef0698a711e766ae4b4af2200e529a3bc9cc0b1fdce9f3cd9ecda66e1ccd7dd357ce86e9ef7d93e94da66b4249c1bd1f7a90da8a3798b08df165b3892cf4b3ecbef0c195471f4e2495e3684cdf3d89b3d19c0ea6efbaefbe69c441fa538883d4348f3848af34aa5d931c7a4d37c9f73b68095d7d9dc4c1226ebc17572b620cfa91abad1863c8757c82427d468119d5922cf451ef58aa6414ea6d467d44c9a050d2e8e4e42377fa18974d3cbc6e3c88a7505a3c7d49e4a9224f794f5fb62a0ac7ece1797fe6eab65edc99fec6dce11a30771fb999ee6be44c5f184436fdc5a1f780ab6884a3baf7efc7c88bbdeff00f58be6fc23f0491ef173993f7919bf1be1a30a34c386614beb97a8ced4e49288fc29d4db87350267d78dd64fa2df0ec417538e6daa26f6966fa42d0b6ee177a34a37c138983f46b58c166837a9a75d9f65996515f6dc928bbcff4f138bde9ef179efefe090e6d9ed1271cb3709230922059c36197c3cd66e670b30912c4c88a5bc9e03646e01e73d6e1cfafb30fd99d44c724a04b8d2123b2bf8c298cb27f4b0f126804dca0d1ece35ffd62bfa2f4872fec07cafa85608b1c663368960cb50d316fa0bbbbbb5bf5842c7332eda7fd57f75ffd587773343e7cf084035071001274dbf004c824f77f51904106a0152e40f08449050c902106333f44266c3a907b60dff9e26e7419fbc20a0465598665dd7d59da7f5d5863f6eac7fab36ed9dffddefdf537cd06ed332ca30dda835aa880ec1fa5a67da1f64e3ffbed8b8077dee807c467edb1c772e46874f869b873bdb6debe8e31b0d7b0b78dd883e5ecd3e1a06338023378b8bc879f1b46554d0ef9028a1609062aa11e95d06a8a22d5143f504d5103d51438aa2988504df14348d5842224a89aa0aab1deb59de38ee35104f724e4865906575c3c0535aed4ea5e299547a85dea865aa3a77c7417808922423be2fb7b7405d9ff5b6eb2bfed19c28f9cbfe82008ea5b61a3b24290da6141c382a0d62e8b1b63cb6cce2ad139eeae85c017260de5cfd0bbfd11dd1bafdb98cdeb861990ebc23e7e60e602e3fdd77b65d8665f78ad4c394504df1dfb30c3300cccb2ac9fd2ebba92454a994996d6a6363b4b11fb9b9e47b1eff6ec7ad08b3b07e79cf4a240ccdc836656c526f6dcb94e8be119197c40b3fc89a3cb28e7a431b6245d34c715e92bc0e8c7c7be1b638c5f17a5c4e667947ed641af138b2f323019a5b06625d5068bd2e3625198b840cc264024c000ec0c1de2a04c0225e2a0a4370e4a2ac4c197924c09d31d3722351a68209de7681ab580bdd33a6023119281320dd662920c868b743fb176f28e57fea4625fc5189493b9f005b0ca003c0258027033da0b29c0a6b96f5586456142fe9183d2286507b7220093715ca4fb5a040828d37d74c759e497f08f24b677aad3834b59439e22b2f9e6d1341ae2d8cbaceb3b8566923b593186fc0dd321a269245f5cb532caf26792027033da9c06b0165f32190d51b87427cc284f8c3144895a3447a2a323c3a2f4dc901ac0a22c712b0e76c35a46a1524524c05a4c65344c8b1ca42d6a448f8ad0af48e9af22f6a3acd23b252a82eef80bea43bd7caa236988c2f5fe561c802472b024592c9e063880b558ca4c5ca4f418fee890b3c8bf52dc0c4a830c6ed83ab5c506e07355a7e59a6d90a932560032750116c790a92f6880b132c3875f0696185e5452f6163b15225f9ca875e3524403c847c1de836800f919f62331867c14f60e7b923800f927783b3921cb375191e55f1c63014207428c03087d892cbfced020536758c70ee42b37807c8b5764ea0cfbc9d41756c35185a30166ecf323365ec85406d812768b5564ea0d18642a0e4b4291a937acc555a636c0927094b9b0f36c3295c65aacc95407d852cb5cf2887c9112c6c50504ff3def4af9f22b4a102e2bc6c891972acb0fe74e4bcacfb0e48931a47c12f62392457e55c0454089c4dd70009817cb52c10d005ab632c3875d3198be0cb305ca03a4775400f657c63e0b648bad8c03c91388ce0c7b591f9aefd0aa932708cf8de7e49f1b24c9eefd3eba81a8914616eb63b00ff3aacd322dcba47b1a98650893fd630fd81f4e75498518638c31c618638c31d2eba7889d9f2290fc1471c44f11427e8a08c1cf102f504ab7cafa19d2c230ac5a9f21419aa669b67256f6cf909d9f21487e8618f13364881f22be10636ca21f228c7e8840c2e974ea13d93f440051c1a3c943efba5a64c0e090438d1c3bf0e0df83ff45db7312646f67798c3f2c3882123f2ce0915262d9cf8dea87052cf8618110aa2ba4c00b3f4864810a3f483c41850518fc2091e4078923fc20b1c40f1235f841e2e60789205fb842d7752dbc9f15186d610ad5b3518021c8c50f119fdc39d8f887080f542c0d5ec460555454546290e1f1a9095f13dff77d33acf0e0e78819fc1c61c40f114e00c18f115bf83182f56384eac7881ffc18a1838b829f132421fee0d8e007a7053f4714fd10e940ee7e88e0e4cec1194ae985fd1081e487880a7e7050405242f5810bcbb4ad6e5555052d4c405505a15c735455a128bbbbabaae033e79c1ca94512d7755da4d20c2428d92ccbb2d2ad82cdb5dbb66dd77471c164adb5d6743a11914824d2e984a80927f6de7b4fbace9e4ea7538732fda06cd7751d0a858887a80785282777d1d64de3482757544abdfb8986488aafb34c1742b8210e36154628724c0edef4bc063f40417229c79f267e10fde821a8d0a487f09b5501947b88dc0f932311a4a0cacdcda0b270637671b0ad837de4621f663252db71506ab86eb5760e72332e9e9255dbea4723662d666dfbfa0667250937e6ebbbdc392da45661840a4339aaaaf07113e4a8aa222823e1569193a36a082887910839aa8684b2e466aaeafad7130a6eb7a722572af7f3deaf73f07e8ccf4b9adcc7788dd164bad3dafa1a86bb95701b742c04d58324953d279d73ce1cd48a04282ad08d5bf520fabe8ae2860e94239007b50d6a4ce9408acd9d55a844ffa5836c0b8cdc5a5c482492ddaa4b8c0c981ce6b4a46dceee397b725b871ca9fbb96d4eaee79c39782aca4f7ead2a272db82f333ce9e9cf30b326a5f511237fc06c4babc927e1b0b17c0ee366645b292fa55476df758f7af9d5ad6b3528215f6b6d4786af1eb9ff18ef1e41f8e0207dedeffb5fafbd0c19c6d190b9543269a62e35d65d2a61d8d7c6bef4df0cecbf4fa5b1c6ba4b25ecbb41730dec79687f5f868f1cfe1877f115c3f01bf6fe845b7c0c18655a128ed96ad65e6bafe5384c93335254aef6fd734edced68f5fb01cb5ae823e6d915db7e9b5fe59c13e36654beb917d18755185b8d4fef1c8d187e7be7689c7e9eb8197bf21aeefe62d4478c67601f230970bbae8bddcf902b4db84d39db5ccb0f673ef9e9e0c9d7b4b43cf993d76165c09da7b282c116170ecbc0303806d7c091030547c0419a83835487a71ad59d3cb5d15b3e508db6b8c8f054e99aacb5265b2a59d2b5d6254606857190d25ef9b0fddf2b7370907646e1e86087a383b7fbd237c7bd9427299fe34e9c34ddfe12ae957b89fb39d9df098ee4be7390ae780e5295eee8434d85fd2cae5495e9eb88ad235cf05a174c8436b362f015276a4dc26988c89c41b8f2a7fc00a661188665fff91aaeabeb9f611cd05ac541cd7350d3b4ecb1ed717de2cedfde034341a0c873258cab16e9d9f5b96458d62d2df1fa5a5af274e2ca9615a552fa9c734a4a29a54e293da294524a29a594d2a794524a29a594be8b20dcf938a2518d2ebe70b93a93b8bedfbd363703c348a40bd31cc3a6ccb24c4e4cdab06f92ffb1bbbb48480179d676778184d6c8716f4f258da32133e935ae723364267d25691ae935d25fdf596e06e9af4b23691a8944b999ab39ed79f863af39f6d9898345b976bb7f735f1df3087d34e6f10396af8fd971cc58e63e1edac71ce391a391917c64cdbf131cd2c7481beedccc667abfa7effaabadc56cdbc8d19059fbaa69da93fefa95a93d492369f7a783f76b5ab276351cb3897b1cda7712e9bb1b773b31f2072c939e03597bed2407d7342bcbc7feb2bd1d77bffcfafdb85b8250eefeace7e0fc15266ee7f9604bebf417c196eb5b71703e922b576637e4c77ffebc9e3e865d1876750e90d89065293ea6418a31e4bb381292b2c434fc7b45faa8d25da494f22f39a57744d197abbf7ba7942947a70b1fdcf9b41ae1cebf7d8554655777166640997f3922375fee2a490ec9225fc65554b510cf215f562e616c815225b355fcb2b8b2a5e5e3689ccc7bd053292d0326879b1a9ec2e4d7399f4cc51cf22588c832df264964c5388e10f50587e7707046a0ecb607360e22110b7982f33defde39bfbfbf1c0e82f2457beda3892cf367e86d1f5eb02e21db9c90e7cf2a72a2d9a8842c18c541eb181a11000000003315002020100a074422a158301a4792b47714800b889a4a724e18cbb328865114a610320619038680008c88880846e300a2a960797975c8ac9a228adc49e1c3d1aac3951473d08c6d44874edd386e79b51752912c3b061b5687dc8d5ab2bda64cb8e401c7d6256b934d176384b5c4802ae4add49c0e9021797005466da61fce2e0e4000f8e169dd4b6ab6dfe6cd52e77b4ee176a444c9a5333730d88e73af59a3dbdee9d5712ae714c4b5c48b4209e2f196901c15dad4f23f90eeb72f0bf05f7617b9115a036825386820abb882aae5d10684296e2d053b55ecc80603565d53c5ae03d6ac5c38fdb554bdb7c8428d3044bf9b62526e1ca9ff42211899e52d537c5ac68791b02be95281c87253fc05e216a20e7799bb32bb0c07ff0dcee684dff9e91b7fc58aaca69a97790c568f0a50a07e962ec1c40a10501093f41114112f798f564ae8aee295b879e1d9ae516fcf9b579e93b9e6c70442314d14e6a00152a323ee5fe6c7407b6ba1012e3bdb9b3e2ac45b3c948454e14c0694faec309c030e18bb96686ff44a5608dfd2b5710350b451507c661dae05cb165cc4b4a50c59e8670cbde51e4651d69adde0ce2ab81346fcef87cd57d61cbb73498e6d516a97684dd6e246d9c1e3e2e0697f9ae69f0e697d93290eb595be971e03ce167138d8c3c3164254c158c6dca8b2f2ca0a8de9e4d43b6580d9a781a0fe990e7cefac16549e51b22de2bd8a66345a8c1554a84f06af85e79996e044dadac09a039d130c1f56b6cef47492a9ee96b8a79f3bd7021982dd38bc8a831e32f5fa595b31757d709b9f41aec5a90a3bb3eb24cf7fa3f3bcdb03ec62ebb108607828c41ef49a68b39ff867b1db92c11031435c0abe00c457b9962e62f9b09711356760be25c8b29d52b33cffa26cef79d0491ff18798f9103a9b89ef7d96380224c18c1045b0b2fd7011125a929cc0772e69e07f27ff8a40c5ca062be8a8e07e6811c7f665649ca5cb46beef796995213de82f402474b428a005d2353762f4ab682168fa53afb5d5e1f6afaa3125dc127fbc52330e6a1e01d9a3c84275677ec62296980ede5189542295c60614322146f689f7436f080c5b6f807b0082344fb03f5fb6618e1581601810ae86e914213994c6178c91ff8244df6f4aba04d3a0b3ae78e0337d951e004aa82938110decbb778bfdcc26651c97922fc53ed3ec6d847b6484c5ef9538b10b83cbe0a5de246aafcf159d61e122607725a0d789cadb2718eea2f1342af21caf0ffc948a4458b651738bc5b12b318672319e8af3cffd4d090452f510e6d53d0f9b286874b42bc584590e46c92c6a011ba080bf81edf38b442768cecbbce897650e1bb813e79fc032e270a1a97f6dc30548aa64caa3c4ae2033928e7567868499782f6177faa5000a26b1fb0dba6b844474c20c9e3dd80e10d1f1366091889e51e5d0e336cee12de77c557db19dbbcc84754dcb59d76f1c7a6eede7223260d440a1b39f190e3d320fd68a31e08140a1778e05ba77f4034f3e7fe45e1ec18da378265a90625372bdcc08eb9146b28e169d6095c3fde97c37f487dec839dce53773a3e015e4d0b40d3d83e260d18c0c1434022e50fc963b0699c09599b3a12768f79ede4d745bff18fb095c7ca25ecc8d4c30f6b9960df7883a708b5751f264e1287f5db4b215454fc5bd4d5fc26a9fd69ea951d74866798ed2e91b2daf654803e8f959155a3cb5828dcdbfe446ecc8244471420a5cd70bcaa057e1fe0fa725453f4b5302035681f4d829defc4bbb1bd47eeff8ac218778c25221c3ad76f73397d01c0dc52b67c63bfc63e12c4b7b472cef3bcf1aef18eb78169f229666145bde761589d1cd803475a9a0f65db74bfe4b5cc9519b10dd06ffef35483bf03018da80f341bcaffa63966e633363fbfed979882699ea1a42a0d1ae62fc71cafbad5a0407f28fccf8e03e9834b2ea73209cf1545934f174fc9fb0002d58e01bf9b1c371d6f19db2b6f71c59ddd955bcf8a07e664af06c833c098ff004d5393aa16951d0b4e275acd9b8887031fa405c37e7ed9c6d647bb8cd8603f04ee134a18532bb9fc7b5a1ac2db055e41a6078498ac8fca3a25e81c7ef51cd4fdcf6e9e2867bfd9ae47707b3a7649d6560bb488805958bedf91fa82f1d1657f9116865dcf56cad2ef7b1df3eee8b7d00c8fa55f7057c1f3a9f0a58cfb90ee4678b9271343c16ad99fee703a5720daaba124aac6046707320075d5c23f487f89ad9864af8eba679542b687ac0afc2226529a8f67e06c265b45f10ce411bae136e3c982815df74077157f839a4d6286e3dfc8052542bd878c0abc26c1896b5da583248c7511674432190dc7957cc2c42f3a81b7a9bc4e36ebaeae523da4671c50af75f5008d4c5590fd746e650021aee723f675000945ebfaeb55f0f65268fba436efd3aa03b53eecc5a4301978c7ae0d520a8556e82a2acc16fd8fd4275e3ceb008ecbf7ee7a7cf043147e86a9264c040f39fae06ebe9782b3709c32ad9d1e7ee15caadb612d572892e69f4e0716dec764e1ad2ca74ec9ca10993d2401c060b5cda2e712d51359161345b415aa8485b2fdd549cd0c6b30ea55225c5e7a6e48766b567cc1af1f14396ef6b7e76361cdd8e6a00252bb262bfa5a708d8591acaa5fb63e1756e4cc6c4aafeadc2d82d5a3844b140c7da63224c54d357d6216cfdfeb5ef5c5e883058ea3e8201d2c80a941e43cc1ccaf22b8e11354de252ee7c34656d697fa686501da7b65a05e683f4587c37ec53f300dd897f2bc32ebfeccd59e8042613ebd0da105b92ccf0f66f98afab79bd3f00a9f4a5e183eafdd4409190d065bd7277b139ca0494de61ca8e4477fb993052e30e6f42649a8d0a0f692409ef25e256de72d4180c345ebcc438d2904f4f4499261958ee0228533ad7609a3ebc148269617c1a742588af13ae4f1b2b7a812a4217c305fe211320e0583bb3b00d5380b3c20d1cfdb93798bb869d55b5fd01a36fd4ae2f88cc827368f5a57bd9d1959fbf43cd7959c07d962c29781033eaf141b76e07341f202f32c389107e25ad4403aa44f79132f4ac24c2458133597b541698cc809f4459360a92a53890c660731c98ed17ff3f7af20aa90365bf3479c57a6e458f3c54d667ca1ad46a1ca1d28fa5aad4c33b56a9e633ea54cd2af652697b136c35cd467932bf8537a0439af279b56849b290d7e8b69da68f29bb24a76f01916f821480b5ba5e64baa238dc4709f37169561fc8132d04e9ba13774d71b83e9f28463fa5b00a4fd30453c12d0ec9c898480b54a6d6855e47165f112c0a8a64652bae151f02dbd5822df43d55e0ddae6e7596dd43eb50a7da0271e2a858e7d85a8fdaa3f3f35b0a476ca340ecadeeccb2f18b64ec6e4a2e1fe0cf689cedbafc2c65afa778bee266a29094894678fcb6cf2957040ec58ffbd07ff31c2591d12758cfc8c00bfa1346ef103308de09cf3c52dcca6f76e0debbef1cbac031d03a25e2993fce5c53a7eb8b93d72bf2040171e577e9539ab3ae33907f84777ce96ba461b5485b189ebe2978152fcd31b8bee0b91054c610d11c355196042deb5017c7f5d2e94bbad1abae3de3dc7a851a4d5eb22488fa78ef155a1b0cd1457d9b3e725010d407bbc12d383b0696e782a71b60844530af1fa91f48483ca9465cc4da6d419b5db675206c68cb97140afbe9e96369a1471e23273282f44a2d389a3a26677c70536da2d2555b23b2c99bf6ff7acf8bf29f79c06059519618906831b032fd8da0d1044758f994357d969877bdffebc8fe140ed64c20ec9688f7bf4062f90c564b5713b10cad419f96fe5edc123c9485104fce1f0d69f35bcd738f154affbcc8b89bc8ecaa0235659f55425cacd30e986bb0f5601b889a32a22e8092686744d7513eb1396b2181d172b8a2b6427232fde1d120012a2d3adbb9be3966429417717374a7cc4965aae58143e379fc76cb6ce09265c2ca4de59bc2a83b31b9e4fb4ec35b56f47b626f373caf9f21a63d85c9e10b02f313134c28814924e2b5c804af2dcd8b2ba8bfd05f865c870f0f2022e546378203e02e96e19d823cb5a039663f297552fa8b499b88da9ea054c1dc260102a48b00a9c2f129faddb8f5d3db62deab1eced214e5dc70b9e5105bfc144aa0eacc6057a86a570c51c1bcb8669ea1ca77605a40c180e146435876545c697751468e120b90f6793024f76898d8f137c67c46b21ef5ceada0ee3015065379f4dc913ae66ad99ad8ce46e9f0a3790b47c3848f1d63a588c10a3af6e4a8185dc51f5065fc1c2f6a43907249f1cb9bf684fd84df36fc860c12457c687589f58e0acf8c73533bbb0b93d6e2f04787b27f6a0347017d489d7c341f4922213c979d429ff739779bafd13bbaf60e20b5cc5d4188972babe404848b349e7de4992ae2810fb3b4195c95fb1fe5d2e74d1730cb3d211953bde6e047dd19b41b1f7980e3c5974e3056919ddbb1d7ed326cdcbbba34d27aaa5e37035fc8469cd39a48c792a8d5bef851efe4814a2d547fbf34184467d7a4cedeeb13c40d4593cabd20ac0c16bc2c5b47ec7afafcfdc7b2996ffef9c5180a0fc4ab94a45b2255fe340c8345eac07b1413ac6bf6410014199226810f1203a7c824900ae4c11846965e307f1c1760642df6a3b7d75d23015905cceb8f794670fb68084c6e3116b30bfe06658eb49fcf9d297581858d3db049752c68c3089f4b95b231e17a5a9dea8377102e42eb2fa042be570ea72221e1da58b12f3e2bfe24a85cb9ca3242be6031d166cc412348f6f837722e53c65a5a6df3287ad999e70c837e7a944c9be1f62db62624e743034dff6ecdb28da938cf43697f1d1bf6a06699b1db4d1ebc3d0cec163296e51db08b38ddce5c0bbaa9cfbb46738a694b923045a2080aba6123b37f2da1d3e962152bb4323798b0418e8641518e0d41c806f3284242380f15e00a53f32ff15d697090372166685588f47c11494cf53087f29dd6978c5fcb76475ef047525f0a7e161293fb6945edd054bf923913ce97bac0a9fd2ba9a9df5cad4d553e827021e7ca633a2f15575561f1b82384fc60c3738166e89048c28ca2bfe57856e1ba690dc1aacd9c0a709cab5be56b6ed00282499da824c0ebab67b2110b5614b4a135c9558b7582baabfa43f6c237adc8e23fa6e0b23ba4d2ceff8d4434fba7c2ba90a2eef0145b3270e7732794c94eff3ac9d23ad42d053153efbbb5605e9dcd5d47ac8cbf3168f48833c7652068191054174552f44e7b823c012ee626bf6850ebf78ef50feec9b6e9af64622e4bf2fd2050487c5877c8852528a5a0c96f7e006053a065fdcb9cd9e7c402a7dec0d6f1465736153648e86f636d7636e6cb1ca3359a5de3c01e0bb3d374521fd50683002c7a36d0118119ff888402e6fa7abd80b251e7b333ce8e4bb9406da97ddec6a867465eff1ffadc83d5428362820a2dbabd41e287dac4c74badbc4f249950a6eed94f9f173bd133a340ac4512af46aeba64766ecd405d83fefa8c12041042519bf4de218189e7b3f1c8e2c4ce47a0f41d4ba4c04e34ec5518b8292c3e8d0249e68c6e7b45a316ee621780686825f13338846956afa80bce6e3500a6241e4fddcfe6e36704991631a24900f574437b60a591b5c3881171d1aba4322a4488f08e04ef2f172d6629a84c7cd0c12041fa1c30c003c5a383633a2d049529a2750c5d8f9ae6367c20d5a9fd684e9b8da8516a9af166e386998b527eeb47dfca3f3c0bc1de62c5b67c4fc163d19db46cedeab42c0aab5de3e9ad91680e7a889ab65f36594723ba462eb2700f906f9206dd03ffc8c269c5858124653f5e4d96fbe89f5192c8561e3864c3604e98f0d2f7966f7ee3693c4b0ca06f47e07b1358f73a766762485408485d067c2d8b2e668e804977fe762d38dfac7dec8e96330f0e017f6139b248172636c0d6cf1569e6bd46b4f991e5192a5c0fb34036b07cf5f3b0604d04b5b02d8d09aed77e1920415d741b7abd011df7fb0a2328e5247238aa0f4c54720bc143dc8680fc966dad3dfdefd9e654106075a2365b592fee42559f472d4a6d5266cf61a1078b1d3c9ebd5970dda13d20b4b8dae5a94fba88584616e305fc4deb15b12681947112b34e1f48aed00c7aa709f91b30a6193b67056d8f822dee4d92c353370e4e487635bb36433762717ce20e635a5482fac12b53484b90938235f09e6b2ce7d27ebcc8e75e5039e5e3343837ac6ebb23528cd7b5ca351c02478373570f9f37fa13d40eb82aeacef75718edb1a0a50f42ba9f9a1772a2df11bd2b21d84eb342bb68f8504d47dc79cc44998241b8c5f4d3bcc8aacd79a3fd52c12ed0e0e50c838298210619159bc85cf7ce70f5bfbf0123cf055f7da60c2e40c8f54c050945c51cf1886a88be6e22a1ee25bc3c1a99b6b0dda53c509f98a221df183c2bd9ac041052a7c9b3b64e88ac6c99b07e2b69286776192329a7564b450e2fc8aa5fdf86d30db4376bf3c7e2d50824cb03bdca59001a04ab4b8f3163e48033ed24e83ab4eb9999ceb7c2554fc45396ba2ca00022af996377bf7bd8e9309c3e018e9a17e9a45f0453a3e18dc7d83a42080d1ac4e485241dea3f84e6e093b5bcb3997147e27c51c28b5416da2688464e0977bad6d42204465d7db4182c231d242cbaed7d5984b06d5b111acbf24dde17e7c3f349071b04672714bd4319049ccd7cff2908a5dbb9dcf92ac591a49eb8745fe2c58aded7a0e5afec10484db4b91fd6804552efa1feb0138e1e858d0ec2d7d8f2a286ba09e7ee51cdb6f5d51f3b828acbef44c8c41e27c664dda7276004b437c109ce64faad801848736f26a263dd140f397622730a966bb57164fdefcccf467cfc6e3c98c683b0a16e42cbf46344d0986c5e4cd79dc5d2f68773472fde9170946b318cd50c0c3e7c1ac5879184576682f2443968e7f2798f04fc02a49e926b9024a1f04f943038204e5ed4eb6a13fc6166ca53f1a8cc8af830c124e9ee0122497701411495569eed89280eac6c465688e14510430bc416c63ac9cfbb26dd6d09826d8063deea9a08437310c49ee10c5aec58863002f322b46dd14a7dfdf0973e897c62be20051dd673eab5b9a92e04693af41567b83d8a8f3abd2264292bfb75175c5f14cbd211909220f4628d928ccdb5615032bc44fd5748864ff477d88756884a9bfe5454b27ce60a810148672ba015a090e433acd68aafa92e15bcdaeb8b647a43642fe2bb9621b0228d32b07a52f3bdc8e82c5495fdaf01ec1c3d88800128d00b8e06822570f998e5963425aa43970eebbfe90cd6d85b39962ad12812d48e023a936280c3c77169670fb4d7bf15e04fee65c4e6641257e32b560993251bb644da5e7b6c0d708f96869664494fa9c541cb84dff0cde911fbbaee28a801ab2ed008b55f5da9aa004e55bfd5420134437b859c5e3a1d74e838d88a1663410ce121a3dfd108a8a91d9d995293c21901e9bb10531632092c34fb5f5c035f46937a60050dae2e8c04b74e91aaf4743017300c3b3c5c6c93d7329b9a17492263d0d68f607d6ea5f8e3b7cab4c4806a0f6ac7f21771d36cf2ed6ebc09b2d8591be5834a1b9b5f69355475057eb95f3136e2102c0b926b5ccd93d8aa8a73b5e37ee5bf982e09c562a5facb4b494106360be19f4052769b28f3e0778ee4ae75580fc4d99e2a5ff3388def9ccefd5ce6a4eaf6d581dea480e8f625b0a66d9c5a7abc8fa1c1c0363e21d65f65795654d74d465dd56351aa6a9716e5219ecd4715738b4f183af92873db7f85ef0c7415697ca9d588bc1815f92e69111f248e4d6f6db65f5b0499e7c5f9212665bd5b5f8c5d9119f6491f75428a09d795743c5eca0abe603c4d99cf6a84b19d07d9c3adc1f4c95d9c531cfd02c23deb78a6ac1e6091077ca879e26a5b3032d0f2ed5375d08456903bbb43aa603fbd366204591ffa90aebc019466ddd91a676f5c36541a336746c532919c6b9142e6f68aca3e720eb5110ac4f671b0b260878d0ae708dff05767a3e2d852334e5fc47c578aa5a584d2df17dd96665bafcf5a2f53ecf9af431ec8e0a105d5eef888954c117193130661515ba798014809bbe9259c8c717e3892bc5b4b6f5644f66da0197e67a6bd01ff37d84bc375d7120a501c47cd34e02ed4f9d4c892db43a469c8e52c8fde10d34b130d24196d67c11546f81e7b15823c9df17eecad9cfca138f7294e16ada8f5a641b40d5761124846a4bcd3a4fcf9262bdb3014ae900ec2c2dd91946908aacd8cb86027bc17a139fc1d572664779b49a172cb937dc8c32f03dda358576b33085503a629109101f073315502672a94ffa0b6be7443c23be6509a0ddeb5029eb8f03668c23976394b53d5927c42a095fd662a12ad88d349f67a5380f2f595b9b845905069615e6bfb34fb22e9f4442faa6e63db9694c0269958594f1a9ae1efd2ba1ebe44f42854ee791d8573efcc75572e3e5ded12a4bbc0e1dda0edc195151d1483650f0f3e67678ec3797d12251b7662c3a2307596cc93f3bd4d225345a4419b1d5cd79d5245bbc358b2978bc5824fbb55440ef25a76f6ffa4c2ae384c0cf64520b26c4e265b540c26bfc451fa8ac522929ea5b2b6476648b8ede906a94e247e3fd1076184953bbaa740c7ce48a985735e8f68873c67ce36f25e2098d148ea863599b11362da6805f6957b498d1c1d41ec98d4832da69c4e74916775785f31e0b598c0163eb784aa2d4129073bed6633c7c3672e16e60e7bf6ffb953950b9fc7a9c978e139fa6eed728679c2ed3c8f8661e6d89b74a71dfffb201f07b0a03a95a2d77bd84f03b97ae9b1e56dfe6b134a12b9f5e1607df86d90f528c01142c30b96504250130a10129b29fadf949402ad7bb1602ef429afdda8075e4b6a5e99d3b38a348f74f69cb4f7d9a2077cc902fbfb52099353e1015ab01a0b8a0425047b66045b4c34aa626aee8b1f5a971756595b204c770e7713bf145dcadf1a56b106e33943da100856a786b359b0a117885c761309fdda4a791f8e4152001e1d99cbc72a068a30e68f185c035b080a744569177e9974b8928f9826656253e768de2e93d9370e3ab0d8b7b2e031a8c9f4ab2c0b9d64f318c68e7c4753483e55b87e2aa9913b4419625388a48cd8c1315a10d5588894615032051a792baf39072d62721c5b35c373ef780e2a90b6d0ab2901ce9d51d565e60a0083f0896f6e438962f79639aa75160acbbb412c854d72a24e956c8950e38dfd53d9643e50862132bc1228d63a03152b0b71a54ed54c6f2aa867ceb1841854939f3b743b55fbed1f66ffe1773a28f0ff95552de25487098d6bab8eb08ca58981b855f1bec1b57940ad423e7d00c779f998fe76a0d2ef8934e305252a6c07052016640c5e26a8d5a1cab456ce34e612c3a352ec94dd5787d1d7301ae6cf36228c304edbc21c33f28f6787509f859f7f388f01b77f256092ec750c68be1561989f04ef3167e715903fb9cb24f8673fb80db0d91f361c2d7dd55e5f850efece97353e400e09f17d5d47c4cf77d82b5957ec44eb130013549716567bd8bb04e5f88b71e9b75fa0a780f9e35f5028f96bf3d720af826c3d5b9602c8026610534ac001843612735184e9aebde1fab3ef537bb677db0a0d2fc65896ec16b186cfb808115235eeeeb53d1c22ba2786baf6f47937b033e2a908525670e05f3ab903b1733fd475176fea3e6018fddde083d252845a0149de48fca3ff4e059342f9fd9da6d30961b488f585c1b6b84a1d3e14c75c0d8e218367b56322cd3b1e2ab241ef2018ea4a18b4f7a502e267268d2c46cdc7a5b30d439f0eb61d83a5d4358d9700bd68f875704122dd7f084cbbf96b01f7cd547ccee408650df19f908e3ccdc232cc00fed5ce49e7c48e68ac61ee61ed9672e9b1824f631142e453ab70889ef40580a567402c801160dc8a9025d8b3fb8b74052c1ce5c686604b3e99b34eaee4a08d3f0f2839c42dca956824cf4a61a40cab0b1044f23db5e8945802e15468a73ac9a477b0b45d8705be450adfa057d4c915396786bd16411f3aaa8d79d0c577f24bcb101f0d15c79cba226b055bf6c0bb5f7326cfdc6d00379ed5bc8da90e9ebc598bb4edeffb5afe339852ced7b502912d51698368edad99d9663c4b81ce2b362b454668706af8ed6c0352e8b3d3d4bcf42c98a224c0ba6b37b4e1b1146c0dafc40b8496895d7442d804a426e36b541be7b89fc217da78d739eeaafc7964e9b03184dd961e406f435e47fd2a964edafda413d7ea3307e1e5b041f31f63a7afcae1d746225b72a1c5ea16a39898fe5f0120bac910d4d5f6feb340e01aa31f7f0b220d1bc6e81acfa8cee563d6fa9ce5b6a9b4d8e8a1622079bf879c61a61193bc756f0866b92638c576d638918bb96a50ee0ffdc319b0819204c989b35765a772f4f1bfd2096cd804daea1257827b47a9d5fe27131742f7a27e860e7d8a2511d8a75169f0f49f75b1024f0da4086113281354b23cd526c45b385d50fb4505390de7b9480f442f428f15ef31c50ede6570d278b4066573db15a4d1e93982901a5c13527ed4a8f30b0f188e9456ebd477280042a2e7d325a5ac634d4dc4010bb65a09c65cd66f8635db15b39171889b715cdc487502d2bddf25c10e84aee27258a42a2ea25b1ffad8f3c2613acb6aff30eeb15e4363442c60dd407af55b3a862d854cc72fdffb5be0e0e26225225e08ecb61caf2c7c11483b5daac6691ce837bc2d9aff6a8673794978a5e54fbdee6262767644de1dbbeefa8eeb46961bca29d802145e316e72d6f11847a28573f2a38141393b85080940c88c4208f8706c99399f174f9d00d2fe65b6c0e1bee99c38c462070368244ec0e6ce7a2a88eb8649861cd813214439b70f67cb76e291352b9d3de11871e7cf88d7baf84d2a909f57795f8246e8015aeb2c3de7de3904500d0ac8bba1251747d2340ee8aeed93fce752f036960ac823f040e94a86388d4e04380843cfc25e822ba1a10daed22ad21951cee160e48f03b15145775765f30ec9707d96cd5b58b22b315877dd019dec1bf84141d021838405bff27b3567be4389e591f44e08a2cf999b49456fab85f0bf223e1fb9613f0d9c8d29048f9ed0649937fe129e5d8a16a4d573c1354a81e3f98ffd343e54814604c82c74bbccaa2c86086069e0ee0ce1270e50d8d8f0f707bb117e19692f056c796686920015c662e974f72b1d1d9a2c4019764fbdf17a738e9513699573446feaa18efee9fd01f5a667d443992e3671c37d0a40b2c0921db61a1f522ba953b0f351d72343980405b4518442ab19da137abbd0f4c177f63f8178f6cb57320fb23f2cf50381d549f8f3b87b6901b6a859ec4ff94c9305385044f93b879cb53634e8095f1fe95ffc3690da3049228cea82a84e92aab303bf5b23489d0961b71782392fa148f9ee5a826277a9a78a818f2719dbf04337209d88dfb0252b0a0fb632e029f777fe2bfa250b191154882ac4adb10e55d8934864233b74101ba3a100c90ee45d0406bc1882ec1ddc52de8db0637543bde987a4dd5ccdc98c73e3dccbf2f7da5acc3aae697dce92b798617309d92d9f42363ca219cab1f4478b64c3cbc7e6edbd3ee0f1a1715c7c3f39c56e89070e5f8500a1d005ec5328d31974fb026eae27a38af15962c352f8e2219a68d98f3e0cb20379d4e82decfdc5166b9ef2c688ee17d120614483f3d1ca5aacf6d7640f3829da4842f94a50e2ae8678103f36cc8b43156c31863ef79cbcb8aa6b44cebe331593c6a5bc3d8861b327201b4f6bec330edf32fdc78ffeda7f724a45887362fbae273f159a5e973565a078bba1ea499b3859fb5d74cbcb57cf6f0e646244586c0ad4351a4eb8126ad308919716a3c85bb3efa1f5cb5f8fb7c2a32f783047c4fad35d3103ba2bc4bd825bd129c44e60aba8f68021c7058027ed4a21d59f65911d45b0e4292a396a34d664aaee2de6d4030ffadedb7a58831d7d4f6882c036cd9acb48a122c7ed8a62b8a450679093cd25f168260f7620cb1fec3df8123cae2515354367561c7fa249f297591bae1b524473ef4190284fe05fcb50c6829b25d7ec8cd4e12bddc925d8283fa61482f8fe1ae415f26def411902f46c39334f25aaba57f7012235bf2bdbde6307066ed46a8025292064fa339bb3922c9474bd22ec9b68c00cbf46eca4d1bf17f147a9e756b7bd67a75f73ba106c9915d51920c937323476db7b10b526a52ad5b87d076e7dbeb5355a3abc69eebdfc795ec62eb33a87d9c2e7234b1f91a70ec2518f9a90b8d6abc373722f77b504793227bbe96cd44158a96183b9f7669ecd8f9c843b8f2e8f526661a27b6f511f09089b015570efa968276dd83c511dbe9d3a6d8885011487fe9d20a2bd37eb2dde5ab4f75a8135302c1a8828e602434455e2495dbc9cb5268073bcc7de9dd80349a52506d7de13915ccf833b8e78c90ed813e7a8a43a83a880eb34a7607509031ec5e0567baffa0de63930e99052600303a532795aac7cb727ef69b049328f6487573b22470958aa1e90f5a69736b06fc98c36a78f9686b084631e6808ebfc6ecd2a46db4ce6331ebf3f67322bb17521fb43b8db37613db34fa06fd821c69547eb8af78630665a992b06d490fd735241dd67acac9bd21e2114d485274aa9f4741e4ea7a6da0b879dfba2d27a783756b368d128cfcea3ba8856382adf4b430b1e9450f073cec4c1e1378e2d2909c62e462a54eb67e2f990944725d6e0b42aea390702ba327967f7896befbe7314042861769a938670546e99cd4e97bb0998fe909266abb49dff41b599d8230e7a9020556b2e531a3d0964f5d565e8a2e9f54f821ba79bcc8fea782a6f514987ea3f046dee34061d88ac2b2d7957e0893a03ac69b53a9c32af5fc2f507498f87836a13134b96f71ac4496b4e9a15c3242d9de8e1d4a285d10dc6e5abc6ae78b356d3f70caa514d0bb94ccfd4eb3774835a1c4093767ba990f6c32fa807f86aac3449571eb04609e12def1e5bfe2b2783f1e8a3e53c64ea5e7e8494e023fd141b552332a859439d8c58035e1c6a9754d7a9fee142839fdee0618262f5a86ff0281d8fbeb971475a37fa582f97a77cf8b8a75f89feb7447f1e97b30b3523d5b4de1266881c083584b52e0e801042534f04caba41761bf0d8253640fff2260a86bb0e54f06105c35441185d176023340e0d3a96201efc8ab92472075975806a8563207fcc72eb48f6faf58a332c41f5a5ee3efcd26e09981f9a163fc6e1276467301fd7fcdf0f1c327d5bea4e575c0ca7cddeeaa10513288348d3c306f060f6385d357c9707b5fa28615953b52908c2e3c801e6117654eb25d52683a45d416f441cb4dadf4551f0040c6ac6be1322f6df4880b4b63649c48d67009be8f49a4ca72f3371b088e90de3e04e324729b8f3d39b7eb6e0f3c5da94c2e298dd748cb6b5d905bd127e5bc426ef48759f469976521dcb583a3cf66d5c83352dd432e1a7809663e0385a54d38a2509690ff2781d9ec4b050095419e1364255650dc011064ae9ce05fecafcd0c62cbb2dc20a95bfa244de16d25d63e2eb42d08c642c152ef23b991a4e9ff50370770091bbdd43281a233b4da1ae6a9b30c48d44fda2c8c8e77e7f9fcab2550b5a03f3c7c3ab8a81dc22919e8045e67cce9046b0b5ca2e410bfbdd3d6b7527e4bc2c64cb0fc8749dbb95b320b6153040110aab813501350a1a77ac824bc967dc0b5f38858e5fb41b868451b243d17762bb215111a919a1a2a0922c5adbef91ace12a9c8b1baf586b0a05479522df4927cd3555d4649300ab1fd4b1ae0548137a8cbc6407fc09f8d6b13266bb64ce735ecf171e24fcaaf96862766863541bd7ac898dc8929884cdb100da1daee5a98d6fdb1b3d3e24eaf48c5aa872ab80506384e9e2f4bb578bdc4c2bae56b6dc02a07402c83e0e46e8b70322f0ea466c5cf152cb0b13b7a1f4cc53bb40d67f62c9d00da840b1068cbe8ebad386b64e43ab4d74195ca1da80d818356ac6a52fa5838958a2b0170931ca68e0385cb44223cffb2d7d20f4d93cccc8a6472b1cbd451a103b0fabaa6110d1a1f1d75f704847e1c9c74e21e3f3120ee90259b2c193c1e6206905c3cf91cba1c9477bdaedfceecdb4fc8ca66eac824bbfaa1170e8c1f0675df623d17485a3bc843d10a9ab07e892c351ea15c3415b3b0cb15203fc9e13fe43fb3ecc9c478cf0db7ea9f31191e2adc2c75f1ad42c17ce41478203a5260ae0e10db6874322ea99d175e4d01d8173e682c6e85c05401a041bcfda8f16a42c16ad908861b274983beb5fc5fb47c577318817a05a946c332c2a554ccea9a80cd75d6933d7d68a0207a8306feef141cdf05963a98256dc778f56b4a31011e934364650023f658cda8d82b90ab3837d22b4b22cb06a21b1b913246fddaa63d9ff375374c5fcdb5340902c8f995c0cddb70a803500a6f432b511998ac089ad1b76b77ed0878e1746a7981649e91e8ff11b47f300c1f223505037c162d54e1b29dc2ac9fede693b39e1a341c5132b7c298a5e83c24e2bf82ef55ccf9f82d36a9891b561fd0727a46d79a0cb626eca76944c762a6e9abf846bef3862644c33967e7673bf6522b415fc0519f3b3e2feb31a130718020ed0056df9be6827161a9c4babdba49db661d5b345c38f26cc5d19a1a597851c03200a70188bdc3e52693f55c224fb853f6033afcee2a48575b6003f7f06710c98a22899c30b8fc803fcfc559833f857ee8acdcfaccb3bfbabab2930971dbbceb511d4cc97a2fdcd1aa47af4b3c83623d62c2346f0af6bafcd907a6036973922484829e5a93ef30c3996c17de88a29dcce141470fbbbd7baf898e2c3df74a2c75ad763dba68683fe12cff74d6b04305cc2a1e17348ffad1900ff304f80b4230164129ab43435b836b3e3ef5cd886b346ac8c13edbdd7573e3a5ac75cdeb1baf6af1a660b88da98e9d764b5bc449285845e7faf4b3b4b25b7bca3601c7f8e7ec503524cf72bd683854d73111851665b003fb8d4063d2f9c084fa00c6538eb6d3cc03abcc2d452099d4a71e12f3169aa2a0c5e2441669719045fb0a3240ae46201053dd5ce4e99d3de448c44eb340e2b2954d9fce5fe03d9835f17a78c925ef6f512af4b0cdaa6d151dd2ba96a85e9c42c41a23a0952106f9c62b245a6e607688130456b31ab0ae4791982132f4e4cbc1af87a7a2420e70aa35817a2ba6e548c229001be9325bef037e981dc099f5c158bdf71e8b005de48ff9063c0bff6762a1836055a8bf45bcfcb3ad2d6ecbdd9cd34fd842ca501c83e3c951d867b2d0586aac152ef5ffd681effa4dbc1bf0fa5c103cc40d49eb62a31aab1fa6050252964ad0f590b5b5346c96e097a624d81c8d49b777291f15d83007a60341e56e94d589fbe350f0fb510f28766a5e08aed73ef21e95a0a1bd789e726d28bb17d36f1d88a14f05eccbdc6bf59150997d8182a0f7fd417e1f332ce506a5eafffefa17c737ccb4899b090e95082460da5c27ff51ce377816f5adbe99978e25e78375cf9a9f0c63577b0ad2379ee540c45142f759596ca70a29eaa502eb2e43fee3850c16e6dbc6c8e88a4cf9f25fedbd1bb1f8feb9027f09187a5e4e18570bec06aa9e6ecb764c0e59801782aa013b493c971ef9b367323838bd89da05363d4e88b74b43ffe86ed4481aa69d0f6251d80e72a87b72b6c24cc935c95b1f7c656dfcefd04f9a0565586f2ed120e054a6d292515415b598c0ec3597aad3d2acf25fa87de4fea26e766098079bf855c71e700f046e08052d76d49cc066fc159402a7cf1da8adc92d66c1f5bd9ecb10baa5f61288f03bfc616c8bf2c5b931c5b55e01b6d88c1e0b43f432c8548194f7c6d85c6d21f454867e08e0cc1245d525aff4a1e54b52238c6c18321bae4ae044102fe606d442ba9b4f6a0b0e08e8682faf0a0b9b046cda5afc6c23068925f6b8da388bab32833a44a3a6bbc8f5e0e089ed646af11e5e26fde2b18f0f11b6ab9a71a9eab4f8a711900e65f4d0715891eb2b4aad87e67a937107e49d2311da90828916da551ee7b75a794b22395c7bfd6ad0a7bceb96148ad60fecbb66d317955fc29fa667b26cde8c24a873ab7d6e4dd3dce52410be8d77e90af0dd60b6ef97b8b00120fe02e951e3a466660b8026cb01915ca52f642201a82b824a46692945aa76e565a3347eac1369b7b22045fb703b933fe674adc52f081a1387cbad348b476deb8f5f1659fc441e80cfe1a51f82e6ae075d4fe2a648f6cf1e8c5782aca19252d1bce91cc132eba297c57dba6085cde91baaaa274e7e7f424a28851ace47fc4280c9798a1450e5bcb8b4719db3bfb085d2cbb4740b24f41e1f013353f938ed5a1929fa9a78c880b7c631702237e1315b7569b97d7c8e4bfe01f31056f5ea58c2e8f046e43f4d7fdcdd373ec6440da264bd2e6e4c0b6861c987a655688743012953108e2df20ba266504f704fea3a397ccd0ad1975f69d682427383f64b20ea3df5cf20f30d50efbd30b255321ddb61486f3c4752849352f5ea94eb8d39c640ac2a0f0c8bb23e14aaa71cd03823d9b0490fe2ac4f7239de2c67b3fd772886b5cec584f73b61d7e4df1e1d4edb0dc0c71c2a227feb8fe1d6505d6042ac0dbeb37e86a031e02e362996634aaf16fcf1257a9c990a10b33f9af1e9d3c5dc1b4698b9a77cf0238a37129379e19e0dd5f707c5acbfd7bfc5b22e6fee6855f4cd11220e6f44074f0297c2ab53f423db3fb2b20f1a14d8a88864c67dc4f7a9c1c5b67dde6ae0c77cb8f5ab1b0d975aded94f8499ba97fd6ae7810d41be9a0509b3fba5fa8c9162a3cf0bb02ffc900868e19906b7a4387b80faa8b755beff8bbdd59ccfdc0c586e006eb5130075b0c9f02df4c9b9fafb6e0ed6ac8d896311183c2e626ed5c7a4c3970382011cc6e025e406cab13980f2ba86956019c81a85f028f2b46d2af6b6faa7c89ed4de83e1c9a13420a72cdc870c42f08cf9b86a79c340fda2571ef776476cda4fe9780b3d4833df0161ac426424591b32241abc55389bf4faa22199e56b74193e07ce29ecd32d699f9338404d984fa0f33c56562576c748efdb08c562ba582f62d6861d556f70bfd28b5df3d6d6b931f52d05a0ac747620cb33f8879c2d1a3b5beca363523ef74382bc185ca17c8ea26ebeb9b7a929ef78373b7269b029ea7792d6a542953f4a517e024d3f2fb29c47fca3b881f254e2bf7afd117e6e5e71cfbe1097e6cee979cca5f25ae5d91b5535424946f9077216d1b97c30b7f1751f25338bebc339eaf4f4e3fd187198c49d0f52a4ba4677776a99cde9812825d72c54e4ad3815f8514bb3a5d68714f7e329f69c601c8dbbf16a642c503c4a652a54900fab3761a952b47b91afa7980ea1699944844aeac210ec73bba7a6998fecdf9d9c8ee45e798ba39968d1181fc229a4dbfacdd47e46314b635fb4e4772e0e5d8c1c8c9aeb79f235490ca0f6e8441132aeae5598950fabab8a7b3f126013c1e9319d68de70b1880e49d0f5f842f13d0b7e6b41880d0f0025af664cb205192659ab25659658cdadab911795c1fba95149000284d48fde6c975731378095b9f81ccd5903862cd2dc65d8a5f826deee5b3a3205ae45c34cb7dbdc570cc1612a58be3c2fb90e2be1ae4108508a21ad79b3b2b3481bbf0a9fdcf96f6cfdf74757c61c6aa13365d935f268301f4c6a0500464c80885ec1e50bcc58d0b43a4e68622c77c1fec260cd9e5f4249bf1c4f164c8a7aabaad157c84ce3c09d902c82db3921e3cb5ad33a4c38aed05e6215981c7f7cf187f1145b4dbca5aa1d06c0f6d6d81521fa01a8283cd83f11b2294c2c46b01d88b2e3c93066f0f38957d50963fdd190846841a6708510f2c6700a057078f443de6c79cc4517405cb5f0e92fe1d049eb2b3c277301edbaf934bbb36a6237a03f6f54fd38deb14319ff7727dbefbd8636d746fd860d023997f9d0966c093b5ca09ad467e30fdf16ab65a716bbd2e5c9c04f0873ee5b14618f37586664e4ae5531e13d4fdfc6f923d12547fcfd4b5ca1fc6a80efe555955befc9b829b0f099b19d2761145118d581bf8a36311fb4325088c69a52b0407cdec6ca3a8c69fbd1995ca925b5c55ee65a6258a2beb2e245aeb8fa78ae146df2b9aef31b787d95f31054d59942714905c03d91158ef742a65890d8513397c02cdb94a150fe8dc227dd98a56903225f0ca650d14bfdd8a791bf3eeca3d6ffbbf7f41ff954e192cc0c9d46ff74a389dd9f64b1f412b0aa238461bb2062525f1af4cfdd499417875a474a6086f1bd4c59304d2bfecf660e45f3f70a330b12ea1e982ac5eee914ae11314e2f9177829d9a0ec70c4e9f19fa2276fabca5c6b53a9cfd0370161dd4a669711903ad6cad66c00489e29eecd9a0a0db085121a2f49f7ac58dda65a4eff7ba35cd63250ea39aa1671ab22e689aeaeb51753768e0065765bb44e68bfd27f4bd49d8a6f890c2ffe1e5ab540f44afe2272a5074b0606753489c31bd61d804fc9a548005acf08d504e7f5769e4845f1a076b19c27c69741ba00ba3a2389c4d0b890586db2fff4a3d8153196a00aa7b18b966887732a40c2875d968ab1c44da5f843179c6dd3aae84c15f703289bb09fc3422e0edd6b717a98191a92c9f8c4af01bb768a696a4a292d32a9b069303f3fddfd8613758a887417fde45ad30dc702bf426727aee81e5e7bb26c342a53c2c2e82fc5bc1e7df49746a00eb4b85a09ec4d0e0f65c185482e1920c8dfbce80614388e3bb85648870586c3214fc558cc5e92b32709b17955bc7a4c2f52947d521f08ee1cfe2e5d472cec807a241af2fcdd782c071f091cf3b614f74939d917c05c1cbd29a2dd55742bf02022531cd034cf8ad6bbaeaaefdea6eaccc90ae1d80d5fffabda039c94b24d29d84db99bd8a2ebd4f980d0fe340784b650f980d0aa68c16646f95e0bd00306ce37ed0de122139c2da58902a210da0057197f64d3410021cdf3b8ce15ddd6cabe7e2570210975a95702eae9dc67203f066ad18f5fdfaf90fcd59667d48eb966faeea0323c30b2edfb35c6dd041332c984263834335129e6f7a2215945a3cda50a9ba44a247a02d0019f351a5709a1e1fd6d80a0a5727947f4a19ddae786b8a560304f67efd49f66c28b21bf1cb86ebc8d67bff671bc4f1f53766772f70c564425d43794445a24983b1f4acbd2dde616ae70529b4d51821c681540f90e307b07a2bf8cc951c4b2cc24b0445e4622075f9b2aec58faa486b479345dca099b3958221dc5557013ff1dce809d2aba8dc1633329c336a204134c68e2269814aedb33cd14a4827be4e479114751f6259ca66e6d75ae1e32f3b0af81424d36020e812b4d5d861a7f48b3408b3929f11a70518764868af03092cce5464c8c5cdcb75047e7624a284c2d453d4af524c758f49c3ff4534ba4a1d9b37c944d56cc5495dfa9969f8397f045e02870133c0d2d6bc57a38021e0aff68102a062679d6924ac40ca42170a00ea7df71ddbe3342c668d7cc4a4e29550e56fed0ee6b29169dec8b2158fbf28da5a995c1bbe0927370d969486e5688c66fb99ea1c4dfdf1aa4fa253c9aaefe5a5ed8a347a49598bec28f340c64b6f6d0f48d54c2160f153d5be0f3aa3d1626656a8460cef952c0fff05213a2f65b52f65df827184143cda51e5e166b4455576ed28621d7f48d2dffaa0859f36dea1c075392c55f1d512ab86679ee4e8738aaf0512c9d7b338049fb3df8981e7725bb36e9027e0450421c67ece6ca42fb67618af6cab1f4b1b8e6ce43764b533033a1d41157ddf201befaa0aa9582bb0a0a655c73c9fa8994070bd81de90f42fc49b230102a4d41127ac959854ab96eedb4c1f9f5bd14aeba0cc2866da8acb571b8cb8947b32afd2208d8a392542541cf830e6944cd5ffc13d1eb3dee447674376f911cf649f4e700930410b6a8f558948cce341f0f46e6d944e6de310ef9fe70e5933b2bcaa6eacb763d39ce6c762de7e304e20474ac4f259a72f60642814b494069eaa0815812a944e061dd4b97d62d8789347d76fa92a11f09e75023a86a37e434a5a2999b1d23ae3950c6b9fb0af1ccefca87a67022da9b3f3934297109fbd8a562924798d98ea481af1abb566a1e30ac9cb35be5d506ec4fc7e35f1d54e978c96bc050557305f8da5c9d623253f87ad9b6db8f8ea8f8f1eea36ec9802ede09695f2be237a4b92ec3a15997a13db35dc8b2b45c472d2cea7349e85a75195e27c11cd5cf7e48cf1cfa6556372bd52725a4f7bf1caee880850e98f5d50d010be1efde3e044e5c81ded68d4d10e08a097fb02a98287e767a2b1664bfb4e41ca17e306a8865a1402029654052c21e60477a89a1591bf515e333f57c329414bcdd957e632273ff038ad7710accfca934a8d1fac6494f4e956b0fc0c8cd2f1bae8d2344e93da5c49fddf450b608bf815ee0b1fcfedbbbb2160a27e4bea5d0de3bd8c89277b4fadc55398cba0cae1873f7833b7404fce1b6697d5e5673b7a2cb65a82d08f3abf0a43c6de1d966491d7095a4d2a973b7524d8859010a569872aaa69329b6636d3e74aaa59e8ce6c80f7217e2a8cc5c8e4880b8170e0bbda0ebc49e5cc5486192091cb5eb3060edb692a36ab40e7a893abe7b1e7298610e148aebbb11039626ba70b8fc07d0945e7ed539e070570c94e0324afea86961afc2e88b2cfbdcd9c052dd1b4b4e22c7031c7779b2487dd42a5d706501bae549a73be071e74049565dbe675070138ca3aebce1d2c642e07f09f90a11f595a201ad616ecc068e325b781640786f65001fda9a7e86d5c4377d77fa5e8600d82971af6a6c77697d78895bf63d3b816736cc857155200ff4ca5a7db7ef3130fcfda721a3cf1a027f1dc86786978c742f0c11586440b74bef8d6bf55b67038bcf64a5f1680242a37910202611080714d8d6bede9952d8269275df0e1601fbb6f308df70df5d68aed622ff8b7013dd9f73623ab39cf308f54eddc4bad899ced6c6295d7959135355e71de8e297e85c1a88514cdf86217142f901e42820efdb6f0ae91d76c55dfe40b30e55c7649044130a851de34d49639d7a746ee8fd1e951d3e1e4d0d25ad4b21636498856c8b570c824358d369e8705aa4f552339c76ef2f71f6557a2f20beca7d3cc79436648496b86b7153cb907bf52c1cd61380f384855e2d8543bdd19194dea4747b33869d53ede4dd634b8c07232d71096980dde51c636b02425db104efff02408109167fd130ea47b50e2f569f842e02fd6bccbdb9fd700677d6c698e61f515c73ef8316b430394bd121a582892ed62eb6fab7df88c40bd323e7383298899011f9875a52fd631f4993488f6bf000eec1bd085ede133f6c362fb2bbd3a8cba0d57bc8a4d53b828dbc25a95e4b644f50964e192382c9f4f4c9720df5175fcacb7045ceecc7c1464c00fe4df84da0a570203f06a37f13823ba0368ce1e78109c029f4ef32129840553c722da4d81cba8aa3188301611a06db42cb476772313ee75ba30f21e543632b8b3d0d60b68ba197fc1b0509d013187614eb875197ff1aeb877a662185b3ee72888e35559d60c3b509c806a1104ed9b5aff35d012faf41b3557e87879b5b07f1b22b14abcb2dd7c84cf71f82d115a203a6662ee43339e8f5bda26ea94dd88b1af76e01c3dbc661e2b75ce37237d8136e7c85354c13c8e67350b9f816e3db1bc5c1a25fe893022ab1a2eaac28530abb597a5a51044b0163c820498a34fc64057d79f26bcdecef04fd65923288ff680f86f9884c72851cdd58ef05c76a1f59d86d66b0ae9fbca985dba8db8c5dd50548aadb8ac01f69491096f082ec8027b46a9a34278bdc6dadbfb0fab66f1c8ada6ad42e07df5f65cb90eb9491c55699102ddb5e13a8067f12ed7f3038e3070e77bea5aedd67f3ae1a6d8b591a503a6cbf99f69c01b7efcc55ffc6b8035a30667aafeb5bc5374f4a1b84cfafd5486df7a32d949ed9c95b299df15ff781595e058c4a43b831aaf9e0f44d0fdbef68423380aaf4cae95a414325a4bfb8d5bb35e15bb0d9eb4c3d717407c0c6038a354f5beb1f223b3928e31c84fcba839af2073424270b4989710c704a39b0d976083ee98d4fc5547d980974f5ed8af655b25135c54d18487900ff00559e51c3d5191035a4c3adbc1cfb0c9c9d1157f5fb2ef59dd2f3ffe9aba55cce7e6a876a6db3ca436632dcb3fb5fdef2fc542a17d5142b4b59903d3a676881f2f5c671c3c4fb56e19ec75960a4312fb69cdb45aba20c4a012eb8dcd0dd8be4e6c80ce8deb89aea4d27cda6a42e09e2e963c247e8b49f09392a16fb8b1c1476f1312dcdc323289c513a9c0cc73c9fbd2c550111de1ba2ba4d283770c5ba51e3c9a5fed004d6858f75534b6677a728408e19aef2f89f30f87d5681c3c6908cfd7730ab4ae7473e420ff3de001751d80adc3845ab9e964f4db35aad494f69085e8adb90649660264bb9548b06ce77813333d97640d8a3192ac41ef5d74353b607a0811c61cd73df8d33c688b6c56165362d5f734cbbd3ffbc0203c982c82aa517fc39b12abe0b3042796bd4440fae3de1cc4bca04c96831de1796023f2a2db4e9eae14a5e748a4c98f14ef4ca3d9956cac06ceb6dd095e9645a05a52293ca80cf45f7e539d72262b311c55fa9ca0b351c4486730453459ff31c9136fdd5c024d7bb2ce67ea4cbf60c8b55ee8b55e48986c2f8c29c5ce32fba92574abc140742ca5be49a8745ed50ab6185a76728741423327ac2401b3bab3a76748df2e03384dff882670df3740d9e8b13f0b5fd02e30cda120be123538a8660759147a162bb76ccb490159a35fa0cc577ab779bfdd1fced975e707eb277fe969bf5b13d521d09778d3b940ba0c8218b95f969813aa7db204d623072e95d68109636c5dfe84712a0d2b110f46d149d38a92cbac5454359eacc35330397ca00446053f0d283f579c072b755fefecad0e28ab34ec13450066a60c63ca7685dc1ef53b6d870d4b18462b6469afc2b07dea7e79948ef69cd58f3de24b9971396f7fe01e73c52aed60a5b4cec86c44056b484b420c12387e346e105842f34f45bc19e5590143017ddfc4d1af2701cff79247be5e83c5688e730652163ca318e4bf4dd494e9dc376687185ff45d9dd2f069421575d854720d5056abe3473602db414527db35e7a99825a6ca4a9b517540d58493c3642385851e47265e175b596e81c8245f278e02eb4195e45520c0cc7f21278c30cb763bc38e69102876c87b930c904cf9b19d42690bbf01dbfc4bde6d5c654513a69c1c21f6ba6de8507bb2c3b773c479d033aac19046322fcf52019c3825f645e76ef805dd06f0987b2a042ba84c88d283220a30dc54e9b73f24544e875cef5b5258afc5418b43bb83dbb74b39a17db02c78d86bc4dc35e0aa1c305475cabe0f9426265a5d1d589c8661ea99192a313feb447073e22bde3d9117a13575e1939e11f21fbfe52b6c9c77dd8cfcc6d02deb61567f6a8088ef20c5e2d5ce02740abf2ea32a9995c06ad07fc6d60f6a3228ea5047e80149c6651360e748cb1172491fb4ecc72ebba648b4e3b4155eb9878efe6a6020e636ca3bdd58882815c57a0c99cf543799600da28d78d26c131df83faba08d2ae881512dd7860d57237eefea8f38e29f2254af133f8e159b46d58b88fe21a1ddef8883c45ad2d01251e68771abb96e507f9ac60592a2a9baf8ee8ec76a084a0874207e4dbfdbfdb9f68d7b2e4d49178142945b20131a3131000e55448a21b26f6bbe5d7d0fff825fe6186a1728eab14d21eb7b4b9a1d59452d85e6beb6c01521a6a5a599a68e093f6838a56a3ae11a04add920dbe24dbd7eb3479e8147ded82e44cb1797677857538bcaabf7149d4f4b2cbe91fc93a8e612ed1d56a16bc905bfb516248f0c3c3a1d3e99017b18742b9d267c77d40a0e8bdf0c8fbbdd2b22b1970cd275bc34b8fb02a1e27cc689ba29017933638529430254406c157854bcd3345aea55db8d49134c611ce0e5339e87ae628b346dfc067411f18804e7e168c2afdc949d1357bd4a2da2897261293fe5d4216913c9052ed3194cdc0aea8fabf5f5d2991c0fc4a94559cd2f1e0bc1aca5ba453919d714e5e69681fd107b13325aff48ac5d4c050b0c40b1fe6d5500dc2598f9aec3aede4d56f1683396f73fcfbac4b3c315262d619896d1179ed080f60f2ed13ebe8725345a92b04067d9ccfff8ff213df224e9d1af509d9bea09d8ef17ec24fda7280b6e7edc55cba710fc3c9fc09ae189abe8521f85c2bdea4b5f1f5a7fabb0fd3054e98ef79bd0fe38ccf75dc903dca06bf973170c70b27e4463a3592032a63d3ce6e681b53ad3ca7c65622f9fa030a7d6d2bdcdebb4786cbda1124e08dc7266d88cd94a6dc66daf839f3bc98fd13b798ea78d6cbf874894d038705174d995d706902ab0717909ee49f9aaac8c604fdc449826f500d13d0ac73c072c11a170e4d70abc8651ae7adc65134f988cbbe4a8b3fb974b076131a3a24b7af07f24f9b78fdcdd74ca135ac7d331d649139a1501cbdb5b86d9d46a36d325e7b6b403871abeaa1962f7385c20525464c9379c89c55cedea6973471dc2b711882dc2dfbdb83b55e842166052b6cd251b827bdd27eccfffb08cd3c93eff792e35a45bc544a28ad1fd2a271c84c53a1af266e58fab72c31ca9c337445ebac3bf4940b1c1d43088380e1203a45468d18afd39cd8eccefa146fdf75d10e75c8960014e1983e7bbc491ac8b84e92b133fd28aefe813e10e2531074a000b028200f200328eb0538cc58e18159f22818049dcfa8097b54bee522af273473682ab0a9ad62535db26981c26e8e3887682c25c964d3604951864084f20ba1eb5f14b99344d1735bb668cb81a6de581eb21b67cd1e2711238708b6778adafd68b39def6b457f90b154180eb82da301a9734e17279669d2ec367467ec514dec71699035833c83038f081ea018534426db152027f81c90f01bec081e2de521f6ac701209e4b1ecac0aed8032ff60029e7050a51034f1d4fc25cfacb8bf191cc9a18ee8f5dcdb0a8bc50c6a9edbf039d5317b2a8f3b774b622f44d43aa3541deec436711a8d87ed472db66db8ccba4b4508b5b378402c945cfc78658f271925f8ea25f08ee55d58dd9f6422e5ec2efc1ca342634f01721dceb7e336539fdf43830c21aa1bed732532f00a6e4640f21248cfad8c2f700e5e13218c11741225430fb51ea86271e24a6ac3dc2bb2d29931d040ba9630300cf12fb70cef7a25fe4dae497a49e05a0793aebb6c8fabbab847cc490729579cb133721caf13016ef5b710054b3d751be1f605e9ff15166f09abda0aabe8a6a52e1b0617e31b3dfbf07a01b86f035c69f3ce4e94c14a87c554fe53151cd840f128a6f3ceb0fd305a8cb38f4cd21c2b9858df834ca831273a89935d99259b95b9c6444df0389676c0261f90b243ece414927b8ca471c6a01bd239be72eb75f108d833fa5cb809951a5e88940721fdcbe86f51b8ebd8162c4c67393c474d9853a18f673bba1117a3dfb2878cb90c2f5ca4e53ab635870a6e138d0b6ed8bfa3de74ae12b4316b46a6c02f3cb1c6e93d41781ed3a1bc949f8b90f342a1a12fb4c92f0888433026e39a62b54df1b3b013d2818016a6ac15b4235e8505f4ac292119963ed2e857dbb67616493d401d133ee81381044637c18b9a239469ff35805170dc4c066909ba22758943751dfbd2b57ebda97a2759a6ea16a318594ca5435e8cafd0d7271cfed31b784aa635c96eb8d7f5a93adb7a237e9c5a1b804a1e5ac86682ca43911da8f0aa1e58cfd85c87afb3b3c3f8e52ee86a44a9e46da1c09881a6e935432cf5823a8471bd6a1a62311e73ffe415bda6bd82a8e7bdae31154389d584f093554f2a976734889ab1bc94ae81dc6f8c83a9c87c8180b7456b3d3fcbfbb41f5dfb3988ac8a6dcb1f0877d375830e79e6bfc2d6cf240f5a899caa326e510c7a62abbe1f6b4fd609efed959f51ce7682ba0b22f69c6a46120cf12288b05ae3a49c2e1a8afb40c724631f8c3a084f63139bb59433c135ff43f0c3a004c63c70b54f04963d808da00e6cdb58499d729277c863adc565d20703e9529d2fb076202ebc344076aed3a7b6850d34ed835b4118c265d17ca72aa8b11b118260ea476964ba2995fde9fc5629d911abf62d8b2189f46e72b3faa934126fece715b7171697e68a6dbfad848100bf82391a970a57841a05361b3572294dfb8122841b09e98f6dd4854a4a78d40a26b8b164003198410a97f2a585e886b4f1a45eee83a26533676a0fe886e6125f56383c07ed1c409324c2c244ec761087f49d34276a3cd44f5c9a9c7a4c340647fe9be1967acfcc41e893242213c0f0df6bf59a638f1cc8b0086f078131c3ead56b91e16b33015e4865e46f962e2a4904bf59b06c5f792c47f4965e1fa41b13a41f2937a5c77ded75099d17856fdd2ce4d482e50c8b0a29f463a6752530a850c9a1fb2c8873601e3fb25c3e3470822f924bc52cf5ac88c2901b62100738a1164f59426e6ed4808cd8cd31dfadd720a657a70a4a5798d5dec8f3f861483365112db6ed502c2fea5e3851704857dfa7c97a9eef67e6a43fecca9c3e4e391872a024fb101d086d4b994c9c014cf7e43c33cd9ab0f3ee324b72aeadb1f80d2b7ae7b4a89c4a52ae9d8774e8018ed95c8bfbf7e17c59ce03d4ef88248a362683859729d2681e2f257d3f997e1faace58a39f06380e3abfbc6fac9792819b0f3a79c51e425c90bbb9f7d478203712da4b1daf12b45640f6130c6570a50c3ee2dc071d4a878aa46700e3537194b4818606e8686e9dc7f480be778af5f96e4cd1b42a8afc7c202e1a80adc4f75441185a25e12201a4161d3fe72e3a76eeb1c10c3f6fe31ce4c082f3367f875d005442b2eea5149cb397f88d9d44bed08afcd798298fa8805f54ca5e11b89a760e6d0f24c96e6488c9bc36b18abc36e56462a51ca62e73ccf1401e7cd7ce8a54df69ff51a0273956b6d5f49d8a21377b038856a30eb323dfe3e610903c21e7371e10d194299978d415f2ff56d4b3d3144d861c676fcbe34c5958371f10f0adcb6480458f63d3b335841fdc8e64a19f8da4df9815d4068dda5b517d1e1dbeb1b554113d26f0bdfd21600095a21e37a629a044e8471f99cdecb12b68425f51c1e62baa43000523f42e100153c5ba7e3bfa3e824b7365d1077a9e973c6a5fc2bc3152214be03f4f834e6525e7cc3e6f12342ef8c87fa9051865b635f78342fc2dc464a38e4fc265973a581ae9031b912956f3bc574f1cfec6ab5e4493f0957f02c6a033117cb06edc9518571e4274515111907374dd49137b30b5a4fbb558a84ce855f9e20843f862bc1a91634ba0fec8377475730d1ff6d68afd14fd917e4324000e04fd27e667376677bb7ebe0873fe2372c8ca7ee5631c7e39765373eb684fe4b1b6adb4660fad0f09208410bbb6946f1f3a8d0abe925fea0106b96d0dfda050ff0bf1d989a3832814fb97d4831c37ccad887a6db18fea02ae7b1a818d2e7a4c0716b683d355a923aab5fc580bcccd0d9436286c3850622dc68fb5b937e4e91544ad9de1c19142a1d50dca085d844504960a3ea47cde9fd1151ed6338174efcaa5a101db13f6f5dccb931465063778d88f5000c3740638287a771e27700a4a0821dc254dcbbd09a6e40fb2d19163815ddbb4327b8ec712053b3e49574b07649981ed0a11b082f78453a2079b7cf6187fc2f4fd58259d3dc125b5b7a1732a526e44644401761a99b40c3b8ba8d5fd20e1e50e4b975de6154128389e5005b52cf231741806632ca3c7d13114590cef3831f298f3a5f86ae39847d0e969dce0cb393366b7355429031849acc39c2263ea416c74cf9dd4d3cbb20fc32b430e243de4439345c1bec58b92a933a4ae559a93e0de61a98c4020ccd79a0c2266f6dd1046f243526d3dc47aed136990af09d3c79ecc47c57cb1768e4a6278224af4cbd96fe28729600f3e61726768b5e1d552a35a355c829b20bd2c7847e07896c50f8900d6bf6bc9c5dbf7983e12ec74a749588e87176edbe46a46b69a53b97ab430f82493f4ffc626fd577a8c24181597584159e8c34d4923debe9a4ca8442919eb69979f97370c318124144f60e218a77042dcc66520fe5149240a5944c878179391eba72fdb8db4420165895de638f9672aa02588093f33e8b5b0cd7206f3dafbd6e8e9295bfbc1d0352265791ebe81bf2e2a91539bf67bcabbf98b1663d22ea47812452ba26dd449e8effaf29a345baf14051246885dbf346f079d4666be512f74e14658b6067fd4d1be0438ed0b43492c7ad88fe2feeab152a4dd347077d011502b03d8f254197fa3b750e4b158ccc2aa3da5625e547820dcb8afc773914ca3351fdc0b5a7803962dd31fe8883f615cfbd550228836ec159cd67a79629420e10de6a35c9b503aa42d031a451b5fe9540998c609b6eae207592028aef0a0d0c6dd3a654f611ccd1eec3757b3e4a18775e2a7fc0a19035c95a50332e861c302eee7cb41d66b040abb88a5252d2ceec3a56f8e020eb799fc8a1b968971e1120ed30f9cda9fdce5105e958bbdb742f629a665d8616bd94db598d2ef07bc3e5684b98a1aaa2762d0cc0e71bf77602fa7aea53673d9a78bb249a7782e3dd4390ac9ba1e1a7abd9ac2c08490a78c60e5eb21e82492259ac966733e6e01f4f04b5baeb38c88bfb00adb22cf2da02cf1537970dfe2b431d1b87c11ff63730675c585f5fc421ab68255978186d6ccf9835b3e50b6ced2803021e4873cc63ee6489de55ce4bb7af88ce1e82893955772fe4716e1656d586f0fd1add9881cabae2bd6a8a3de8e7443d946a0fffda204c90d12a81fe986de6eac259e74b8f62eb336a42ca1b25cd9e1b6d804814730610c0821f117d7e3eb8c3b1080b63f43ee8e23791333a5ec6a777d1abd53a8bc2be1078e5bafc0976dced19a04196700fcc13d05c6838638d9621915e5466cd200a06a01b2efe295a9b680d03c99e00ae1259d7f3c4f288a9b5e204b218a2752d4328b200c30e372ad9d94947bd0a4ab1c4be41011f42a2d0198c8efaed734fa74d11aacb469bb44d0dcbb116be1f98391a161511278ab34ebc068359df7c66f93811a31b97dea05ce47d2d93374094d4edb82a83ce1f0456ac38d2893ebd7ab1f62617b2f0e782926e92cc12e9abc689145f350bbfa540a0239774e29e836bc9c1ab47315cef1cd83a51968f32350d73c1e12e234809b925be974705d07246972f01d4dbfe8192c728ca9d48d22352319bb1538ec9e11f0dcee46bd55034390d22994e85d9f4ca62b9714912dffb8f8136c657e71973f031ea7eac9472e353528edbd0ea89f44b18f331b4bd7fd7e918d230fb6d2a03c876da4429617b330d92f0411b91069100bd19ff57a0acb0d2c285b296164381ee1bf1f13063f4bc2fbcc53ae6af10192d66bcba5609209c793393b4e54d741020123c9c43976ffb11ecaa5a46f38f503d8acdeb1d8f81a0e66990a84b7abcf27149e5e59264595dfbaa297d9097aec5edf5f2590dcd0d75cb740a05704c0bb0f8d86155fd92f9520a3dc36a67e54a89f0598ecc4d141144aeca3e44e7a5909d20d12ac1fc90d1d6eaec5377bd118c96387eaea95626d469d1a32b04f8c5157d1679f486083906e1840ff069d1ab47c262fd7200d73369a7eac227f84e26c94473911bab55f608ce9c5c45282443742f06fe5fb082e9c75ea83818a03287776dada718d0ea10a83d2dfc9e33c9bc3f0b8f112fc977152b0811a64ce0debbe23aa305e752c91f837f786d66cbc8f263698f96e34fcea6fe7284fa0d24873c39ce0bd1684ec11d38b02e06da171a38e0ff2a51b9001d7f6d38f35d4a7d08c5d626c2c40cd1e143d90f6a654b26c3d6a29ef28ebf692630c93c77dc5b8d3678d88c60420db4e400ce9f17f71be601110e31e7d091ddf9f3ddcb12cfd7ddc709882049de235edcfa2f1ebb7a3831450d9aeefecd3892f5516db2e9c872315e44d51bbd03f090518b225710a1863b6d27afa4924cd974e8ea8ca0cfa4e3722f1b26009399541823360cf90078b6fd2968361188909c5525d68207bc92642fa0df3d3b92002e56d5c8e134d7eed14f991b253690ea98fd1bbf289226430f3823b591384b0823ff825ae1392c4f5abcde74560ba6867e02d0a7965a4b4cb5a19185a103c96f9f34dc682a8c06787b4dbccffb97f4ba72bbeb2ba3362ffae08fcb6209e61259c43c348d881a8c81c1cfca7850b10ae6045176af8df091823278e65609b65e8da32663d304ff72bb1e0392ef37298bf5875eb8a0753d2421ca4cf7f91bc7de6164e98dedd0069b1a4e8908a5030c9c558b5af5c0cfca95952b178e8aa0276f8f8f38e4f575be0398dabde031305807cf964c13eebe24179ef75b2006501c8536ec3a6206190e3260ea6331a82914622733ef32c5d495cc4be86fef43fe6ecd1d25efd0bc88e39325dd05e257481b2bb667d36f5495641b3db9e177446f2b8b106fb58272350c282da058ad28e7c9b1fcf0f704e716b4f417c63217a6a07ef2694f89b79584d64300c2e7346816e5c82608e293e85c2a6d8251805a31b1ebaf0e296f5b9055a5f71c0dac4ec7395e5de6717b6076a13bebd370566c57a676f8170e7ce93e970f9d0a304b3166c8dcdf74a65020975166d7aa5272a0c1f85b369724d178805c0ab60b9c9a4fc661ee691ac204c05dcfa461b2bf031b3b9b05583f621fcca3a0a241ff91e785b420447f00f689153cd07f46aaf141583a67411da7ff99e197de264c820dbe9ff48a11e67cba41707a8bc08b72434f5431d43615a37ee847585b3e5eb7d96c48ea42a8a9f204fbb3ee0a5eb52b4f802ff6163f6f00fb64396117cb61a6c0dc0e6cab04610d26df403babaeb73d620b78bf2196c12c60a46fe243b20072c5aabc564082c7a029a02266c5e308eba9a0e0a7600b06f8d12c969bb364e36b1c28e661eb0c2ad70cb74987214198f5b70696c6337e4622f1e2a0028c080068470050927647ec47669ba4edd9e2ac70c793f887cfbb7ffff6fa5514959371189a0b04d64db7b6f29a594329b066d061a0751978a0b75b344621136a2326217d87167a5666aa140f92f54cdbb9af0d8eb58370157181446b7e12553f62f8c90899f8897364fc74897c4562c9973c04b97ccb2d8dbb839a4e7f363a452c8492764e2259908fb9868e300d83dfd929fffee2c51ec4765233463e268c76cadd8a7d17cb15fa86ac83e169bc5740010458c64c752f634acb5228ae2e37c17711e47a78b62b7b99e70f1695c4df361c77cf4383a2ffecdebe03cbe116f701ee74289d90a0ece8be2e37cfe6c85caa0381dfbc04776cc3de24d49ccf9fc628fd908cd1c1166c77c2b8219d1a1fcb38e9decf874848b3686f1305435641f8b7ddd369ab3a7612fd863bfb8264bbb29f5e7f1274fef2c3aeb493d3d3c1de3e850fe9e0e5453837562c7e696f5d00c6ae973931d475d321b5d321f651f76cca2988b5ee0b68b1465d26e4ab3d8cb3eff4c2682b8b7812605ba4820d8ba486696899629265aa6d0d419e4742b821a949f0ee5d734b4cf0f50a53f4040403f4d385c8fcf4fa53e3f3f3f3e498e1c217b7c2aedf1f1f1e9198284346eacbb19345b3d3d8f91b446eaa994ece9e9c1e956083af63c919ba75b5dcf53aef7ea83568fa880b263a640f9f192b6e189d9e898fe63b7e750a767d6c13ec3b2ce0a4163ac8006e5ef4f62b75b28507e9c6e9db0a30d7231a5053d366c8cfc7a833d76f26ca1da603465a2cdd9313f35350700e840c600ac8e003b0001c0600fb1637e0c543530520d7c4481f2eba8a2d88b220623ca441b0e53f6b16e733de13122f1f37fc679f1312ef6388fa3f2c73a066369b508a7e79b132ebef8f9b1ce12d9b2cee9c91281367c646651ec1f13632f7e7e7c44655053ecb10d94ffa7dfec8e0ee5df9181a2f387a7efa8614e9ec7ba8c6795ca66b39917139375db848ef9479e4e6f8e8916879381ca46688ae20d3b669ffcbddba8ef16cc07b82610b6ac5b2604ec9b6e7fa040f97bf293ddcabad559a7fc3cbd9e63a7a746800012a0c1ac27f17c8c47c44e96cc5f43654326e29d16b80debcc6c23a166daa6cfb1cf31d1e22c931df3ebbce1e23e377a64c81815cfd63752e1ce0df0bbe1f5bf99c96236356e649c6f8b1a988d68972850fe166f8f5822fbb9daea538b6eb34b476c966967e667755b5ea2e936d84c7e6e820eabb0ce669d2c11a60dc2849c3f150ed19270854e67840835406a80d400a90172a90b5703a40608ab46861a20ae262e9c0b886a04556f5bc0eca8787242a785e2cceb81a5dd2599a742351a1a585aebe96beddd94bef055fda664c209a0e78120e7b0ff51c8de70ef4e74d24ba39df475b517e7235713ee6ac26d4e0dee946a83bcfbd0695faffa4da90e597dad482b3d2374e25e67d855ab587bf71f1f474731adbdbb0f0b464632aebd7b4f2daa45fcb57727972e79714dbaa77b53422177c99458011f4776fc4187ee675d76b2342fef4a10dce5dddf00ce6c1a1ff9a8663c5b5f4fbaed57a95a1f53533fa45216ca3a61c74b844f28017feab5d6bb7fa7aedb6acceaf46c757ada53a6e380c10813941b66707224e4ac9de26448c106d3f60b58d1d1c493d9ea1e4e882666b0b2e59603c70c5988e08205540db9a2d3005b9818c265490a9ed872d6eee1aa080202d37614b8dc9ec8c16c75eaa44bd34e0812125e8c9cac8ec14975558a9a68a1470b4e8a4efde9d4debd9eac7e633dcdf3103a67fec59f87d019f3aed7397b771edcb39628309e9177f4c39bc19262de9253808506794597bc438ccc5436562628e611071d1d563d72c94bc20d04ec78ff5fa6d78c2323d6232919b116b9a4034678b2a3153bda1835c7b371af3d89f556a6df564f4ffdf591c7d4767f3a787f3dc7d45ecb5ce92fc6d4e096e9adff7a68ea30b4610dc330a4e118f33d3dc36e996c8e9e7a67ffee7f7a372506d8f1ca3c985365ba5d3a6247cdb377bfc99969d1017776c6bd7b8b13f71040f8dd613cbbbf4670a91ad92375c98ebbb7ceaf27edaf3defecc8ca515e51d8ea37efc6fa98bce5dea84bf358b03eccfba4677403b7d9dceec93e38eae747550383b915e9177b77d6f9f5a4d6af7afe6149243bded67e56bf29651f36865784c57c54a4c8bda2cd3e81b1b49b12eb5797067569327f3f73a0a343f6c8161cd5f201a2403f3f3f3f40e56acb162734a0e182bac84730ce47ec78711490aa86fd9a8d2c4972c445ceca13cd6944c44b97bc7889c9c7d1510aeff0931d2fa849c9d57414a85631efaceee929e7c2719c8d04d120301b5992e408f834ac76e14255231563e6ac3d69f5d988987d58f21ec94b36c63d3a4a59f0b396accaa109bb10a24241414fb81ea4d8f1e6f8f975bcd3467fe2271c75c922bb4bcb474732623682b12e67657785aad5dd0fb3fdbd65524a1bc192de6b2cdc46a15038325d5fc209b602f6667f67991a67b7facceb74f17b6fbd4fd7795687fd6af6b24ef3df57662c67a5d377bea6b33ed657ff9dc66ce9e8fc0c4ac3a1f1d0c05eaed6cc779eb3bfcb98332806467feabcf7357ac10e116bd5927d8f71fd8c1806382dd60af65d6526400459aff9efdb6cf524f2f9ce674089602f574b87b51af7774deeef61cffe0efaecef5fd09675d77ff74cbe0195414def6b54c637bef7222c6035c225bdd7af5d40784f5520eca8614e9da7614758795fc2ad8045c1d6a24bdb790fa7feb04434ef7d9d81ca9879ef2bd2a5e5bc27be378e0fa62a0da6f735089dc153ff7daf81f6f76c6e408958abf7fe830488b00017fb3b6ed174defb0d08f0414d777dacb75ed661fffd9abc4f00345f3f8312d1c89899bdf71b50a29af79e009428f6de7f406938efbd0894c6f31ef79e469dc185f6773bb4bfd717fb3b35675022d87b9f01257abdf702a044ae1744658c4d08e5d9f39e99d423a2908173fc9e326b7ad2cedff4249e9ff5a49c97f5249d8ff5245234fa73e76d7a12ef269cc0c14bbb71bff79edeef63bedd42b4d5a3b1d31a34e87b9e5ebbe4f73b7dbce4f73a3da77370c9ef611ddcae16abbf1dbf5ff51c3b7e8f43d369740d28d0f76207e192df730ac5fc62baed479b90e9bdee265cd35633bd23a6f7a18d42ed62765683a6d80bfffe7defa90a01f4cb0b509c5011810b3c5c39c3a72a04284007a5a51d4b92440173a6fef24b7a9f97818bc3da5a44534b643fd1568b19cdabeffd5ea67fdfc32e4d258297fcde0b61f4921f28464008dbca829096f23afe54bf297961bfa5b40cc517df0e864cefbfef60c8c43d4baa573d4f55c3fbfac19087ef77ceaa41f753dd4587ee87fd458760de8b1e68c76c472bee9b85d632d8d5a466d2cfaa1a313b8629bd798ccc8aae64685c4d38cd8a05b65435700e8bc358b018875523740dac85aa0657c2633117132e9bdd98f47befbd77578bd57b5f759a99de7bef5fd00c136dfff6fc1c50da3dba64b6f9fb95cab8f9fb96cec879d9cffefea644b1bfcf296dfcfb304ae3e9a1917f5f8812897fbfa444387fbf46693e7f9f0625ea7f5f034af4f766f4274fce5f274be3f92cfe104bce7a0e56fad7e0d0d0d86fe30fbd0ef7d871d4d18f19908a181175b517e7a50d425326febf26fb4da93a91b6ea9a68a4dc9c65cab970dca562a24b4b32466c91223333e01f3f567bd62b0b1e05cae20f294265c878be27eb689068907a3a3d5faa0d5c2e558dacbb50b3d9cd4ce766a693a333cbc999fd0c17cd6637b39b3ffa5e6f35f6b23c8ee338d429d9e9d9c3d3d3718c0067e44b114e86146c38499e9e5e801d11262082ab2208084e52ec1898e3d8eb297613c4ff9fbdd67becf41cea41cf43e874f142af7f76ac6330b9e892d9281fe51f438a1c4962420c77a141f94f8099f80b05ca2c560b958d951913711405ca3fe2c05f6fc351648721de481816a784824d05707054356462df114d105f02192832776e4afd84ae6567c73cf61b8f3f95c4279fa7df461e4df6f1d475939de7d476937de7d458076fb2e79c3a6fb28ba7f636d9fba9bf4df63f35b8c97e73ea70937d76ead426bbecd47a933d76eabdc96e736ad5267b8b53c76cb2d79c5a66931d766abec9fe3af5cc26bbebd4abd639fabc5e6db2b34ecdda645f9dbab5c94e736ad726fbcca95f9becfcd4b04d769953b78839758b4d76d5a96d36d9f7a9639becfad4b24df6d4a96f364ff779b287a7bed964074ffd9becdfa9fb26bb776a71933d9f1a67931d9f3a6793fd9e5a6793dd9e7a6793bd9e7a9489518d638cecc94e4f9e4e4fb15b2940af79fa4d89043b6659b7b19132631ffbd0bc8140ac890eedec8c1d6fc14ee02d0e1861b714f442432c99bfab6cc87cfa0bf1e6f3e27b3ad093fde7efd1eaf32a2a8acae84289649f7533b0ae06e50f5ff3747a8ea30bc7697e90808618298244db3e3dff60c2352de996749786917438cfe3cff1798a2eade7d2c8cf620820402121010109b970c1873ce020c739d076e1e2e84550908d1299efc98eb1d8125d2cf6e242dd8a8a669fbfce969698703752bc29c58e625d8317695c2a2e14c5dd283a14939189c16033332e9caaeb82825435b0d3122b4ffd69d8a0d807a96ae0c86431f27b3aded91897d45d52c44c756909e7655dc4354cb1a0213a34eb493e4f767cb3e49325f3fbfcd86f4a31271b237f4fbfe19d8d918b6c8c1c3bf261693e6276b2e4d050d5b828ebec98a1b253d665dd94accb4ef9a90892952956f2943ce506dff7d516702387abd50a12602862261ee37b2f8b0416c60245c69ed7f1bdf75edb08df3114d7f35eab6270be35dfaff765541fe08ab158717e9a2eaefa170326c65997c32da076432869acddda026ee470deb779fd8069eb11ad1ea0b4d45bfa2354197638dc13d71f18862918e73ca5f5ce9f13227b4dc82281b555740b148d2a52210caf36ad2ae3845418bfd7d09911ae0b94b41fc3961aa0704052549754c8623d8a82d7b7d5a3dcb589555bab623c4fd54136f16b991da3fa005b3a7a163071079e895fa656954c6ab542d5c9703a8542d920a839878242b2a15d507c8666f34b4301af255cd23e57d948992554e12b96f8b15a6018f6d155b98cebb5299521332304d67ac8c4c0769199234b9dac85301ea3fa2aa52121d96aa098f66b660da9e22a141714afdac42e53d76c4a65b85ad038d5d4df6bbb296d2d08c3aed65af35ffc378b17ffc57ad3ad8d3809b48c9419823a7fde87c130a5c7e7f52345f8420a847a6b9d0a35dff183922574ad39b58a38db2c715bec3ec6db0ee1366ecaec3678b7689ad3646a2b6345925aefb5b7622cda6ae5d6d618be6c6b0e0b2576dc296607b8d070434e059c51bd3931b2f886951708d5744c9ac362a98a2ea62da704e3ea4898a2f1af9837468080fd12ec53fa36b7b270c3d268744545453988680e0b25cc9dd37e0948a6fd13984efb285891317359fc30cd4a9530edebd13e1782f187d1276b348e16f7ba1b97b44ff4490f252590b244952a494efb34280d070c456071018a0e400124eab405b8c268d684d303d0f3f6c12ecd133180dffb4fc440feef730fe1b309e1fbc0ee8936217818ac14bc24fddcf925e9e30ebb2492b51f161aa44d681393529c19014a31c698624a29a520f823a539033302985e1cb8e623d30910e6fdeac4ac36e79c6b662c1113b303da043faed7896e62daaa497100e1a403dac48c40f67298da160026b50d9974a4389898f931fe94aa038abb268e5c71171da3a294524d29a5a1cd5a6badb5d65a6b3d4a29c5a025b211b06fadb5d6da14100f298c500f1d52c8b1800b151ca08529a2052f48183d5501c4ad09159ee02b2a1378c0a90827b2f8f002140d61cef803416f0bbf26cd41291902aa8790db092c990288103e4820c4adf63445142d18c1238996d32614c6b4d54c7b94c4045312187cc8e249093c90c2171c9400c1b2443501140f4678f898401655785981d31212c43014839120415200264a0e4c3c156e0f1d270812458fa3db8f304c4870dae76076e02d2e1f86d01205123b54a104c408fb7c851c5f0ab5c86372cb81490cba0d40b550c3699fdbb0e3cb9143772b82698a114441a253aae4e0e18a0d46f080d3b123fb80b3440bb81f2b20193102470c61a276535031b28220446425b1dc0a37a31da870e205c9134cae1ca123488fa72a45c71539b2100e7424e1a4c310503d78a138243e52a0f2f444881f4178555059b2c509214c3c2431c4aab0830355470e01cf0a4b3224a12485a627272c2fd4b0811b951f5143e41b1a90d345c101872b27c0828386215a5082071f4aa0208b12782ee4c0413c20870d505c78628515b72c966e4144d1414718221a28c2068890203a7cf0a1ca8f28ae2479e206255cc23039d2e15df131c10dba2635a880034ea77d4e258737021c4c60761499220b2f392a57c4f0e9c050f207f88ad268d00a728cf1f5be4f06303d642af88c4973606cc85380e991a5e09f497360368097e032603ca728725f9ac87d59c2094b814224f7e587ac42eecb0e1e0a725f6ec84c725f7ee429b92f1ac879b12273c979c952c50b220a8eb396f030928517a4137879418b1716bcb0404bae8b15238a725da0e45caecb52ae8b0e59bad090822e3dbc259c9b34d745c753540bb670d5956c14156507be4d9a8b62b2836b93e6a2927854a29278d40cba0a52d40af8095f5d8181e035573c1570b04a6e016739c93f28c122774511cf88dc153d320c392bb0f07ae4ac80ca5981256785115630c1bb7c607efe71968d841cb3b463ed022f1c9b340755c4b4519c7dd8100c5a51a60ab7f1f127630e25040a911e9a50f284104240418fc89d6007051057ac3072d626f87f0bdc33690e2a88691b757907de01670aa1b433af7882a5326e4cfad5099d49734eeccc2826cd390165b260988ed7c47406bde2d6815fb39aa6104a51aa13ed7d8bff7a8bf1de78fcb9a38639955acf633c95f8df9a8bc4eb6a72f743f37eedd2749eb572fd7d0f2c51f7a1d52ce9fddfd7adee7a597fbdae5ba7e33cabdffcaadbb4faea3b8cef2f4cd9b75aad3c549b41896238341e9a1a9dce2384f7f7a09aef2ebcfd1dc8d4dffefe63d6ec0596e845e4e2c0d27458abef3e668dca80a5f6f71ebdbf937b7f1f55fb3b0fdf3a9d6767a6d379ded567efd3c567759aafe94938afd3717ed54d98f9134093cbecef39a65ee17c17cd199488b5aa69ed565fbdacb3fe7b5f11dd244004bddadfdf9c9181003660edef37669fb9f677d96b7f8f7db73175cdfedec2cc80d274bed79836fb3b2cb6bfbf4c2ddbdf5d01523c8842001a176880f9a58d231ff92865c441404a2fbd3227c5311a8b813130c6823ee9839b87277d70f30f0c51b0d588caf090323e1fe393b3be1cc8c5094c89df507b1c5019df531c0e64a2c690220a9c5f7cedd2fe7200c5abd049ff2f2de87c988bf3d2804efa20145c9e70a205323c277dfa97b673d2d733343a2c58014b3cdfd53987c17e74bdfe5fb01b58cdecd264e79613c67913975673aa80894b739d5a529005cb6e892b31e7c3eeff7db0b64ffae0064125c013532b49a0e0044f2f60601897f6119df61cffd2884e28ce825a2df63c22d8e630d320b08789e02f9e85d9ec11816fafe655c206edc0b7f8c3f64a530f39963c4de047a4e9fb3e70f77ddff77de0f7e1af5313ccd9f372cef8aba22ccb32cc501f78a170c5187f80cdef03f2d126558d5d6a17eec0dc3d1029d40af4158ca1a46ad6ed763b98ab45a4e44e2527a2a92ccbb22c893035e97bb14cc599c3b8f53c8f0a229610c14d445459826f1327a229b4d65acf5a6b3d6b3d0f3ff1eebdb5da7b6bb5f7567b6fadb9e26cf3b51ffeacb5d6b3d65acf5acf3ec1370c2f543dc1ddb7e3377bf962115bbb44a452916ba2024ab5f77af90343afa9e28b23dc81bb1dbe5db6570a10bcf74a15135c10bc614a6f956aeb54083a3981e0bd477cdff7e1bff8de6c0415dd9422728061088629ad5321080411524010043d00862118a65221180504ef1d0204efe50282f7721102047739282508a2e98993263826601882614aeb54080251eb6d22c1bd57984620821f9640f05e2e20782f977b2f08decba5f4ac0d945aade7210131a6b8dd86ddfbdd0fe7ef8e30d8de1e7850c28001821d6da8c0f7639656bba4d55eb7b97ab676691e50292ad30329bc52208cf335ebe59b45f14e0436e85e9c6f7d2cf4bc4251428c7194b9f243c244bf9832a889ef679adae2ed756c7e3dab92406fa45fc65f296076107e5f7efb26c6a00ebd8c6f188616ac54c77822545996e5be39e70cb6a0bd9c133113568b5ec23ad1394a59c25c2d2425a7527229b9b22ccbb244c2945b52964bca1d2e52eebda52db145c28471ed6b5fab4151b1fb5e8befbd578aae291796dff5521f983a436baf98ad258231b62c7c318b8584dbb88c6959b18eeb27525bb9b09eb0bccfedb06cc8584e74b5d703bf30a5bddc97b3a55e875d124b0a8b915068a7ebf7c99878f9c0ebbf94e0fc7d1f18a6f4de3a15821f9524def77daf1e72a85f3cf0fa2f244742b0830c2fe23334382f255eff6584d5fabeef9bd2727d20f88161087e3ab85edff7cae10593d5c46c5e38d894b19a87159125bd88f0fa37bc86f0fa426ca801898691fc40f003c3542a04bf1708c89ecbe239def30af20394c46b86970c2f20af185e3f5ec0f83e286094df0745f97d50c428b3b571f2b11625edbf30e9c328ed7bfbb54bfbc49ffff9a1527ecc7c6dd55929583af0af04cb94aa860d12ae1a12b2ff96b42c7a833a85704402bc1b39b82a87a055d9c05f7b5bbb340658d2e26e14c175ced7fc328c15bb3763a8226d83bed07e19e3d0f4f8bd3cc5e5be70efb5b522e92147cf2b71be04c0efe58c7909b70548a510a62ca02c8bb22ccb32cb67aba62772b0e9059082b39e1e2fd7292c510ad7cf200e5329937a99833936a92ccb2565961d9dab6c0961c2213952f2235cb8924f295db82c65599665298429cb922565b9a39b92f3335229b8c4a5878530c9a06608f9d66a5ffb5aad8e66a6f9c78e96526a2d78ed0596b4175c605e2b5c380c131a39d0c0039be55edb24fc3648adc0605585ea959f8cef410efb314783bd9ea90e26d14b7a2abe04ffae55d9b83970e0c7712f06cb6909e136568e6db58ac13e0b2ca62b9794597674a1950b532a73fe3c304cd1b8a4a5c9c26b4881400d80a189557789700910e4fc5a08d8d13e2c04bcbe8de2144a18267d990aca170cbcfeeb055e3f211b39447a1edd7d6098d23a0583fd8fa390103fa2e8e583d7d0c5cb032150ea676886ac3e26fdaa523d05d2c0ab07afff722166bf8e64f6ab055effd581191d9322a15b99b58802cd74e4b0705e1ce0f55f2c946fd21a2f2d79533bbc60374fe26a20c839acc7ac46af0dc0c0d46b859a16b21636319b4da90c9b970664b30d5e9a5763d2d97e19ddbc7ebf54e8fbc583d7a738fb9542ce7edd787dede0f55f3a78f62bc7b85f45bcbe2b4c8fcf68233b5943ce90e1f789b588eac2b7d5cc229d578b5c59709ff207639a2c3f2e2cca2030bc3efdc2eb532fbcbeab0baf4fa37819c3c62022dab4247f28cd7b4fac456551d1cc135cd336a5324a93be2e63c028efa511616b93844b0a97143b8ce7612c5f96d3a8044c1b29729619aa110100000001d3160000180c0a864462d1304bb334ade50314000f5892465e5a349649238120465114045108c5300cc4000000648c41c829c7181a303e192271c090e55f11beb93fc06e3390f66630548fb1ec771c87ea49cd7d452ffe5f15e9ef62c8df75ae3ae62ab55b73092754caa225f9f45d6297e9be2f46c95b168bdf53ac02c06031ada3bccec8eb88a9d7128ebd4f66c05ff1000df1a4684c0e2a9ac07f23de61ef3006a058aa9ed83183c43be4be857ea3ea3d0eba7446f31151d6833481f61104895c7e877505bf4fdf73d5038f69556d8cafbd163cef751e6a7a6d08203e37d35a9e5942a758c2eff03e1280a170f02bb6f07f789b7ef10bc4fd2270cd8a6eac85de7e16b02c2d849387a24dbf6bcc4e0b59a71423cc3e3e44ffc1443bc505bf05cacd28188dba2ab864a6e46119f9c102643bfd03f7e39e14860ce2d4c00fe736ef6ba2bc7de30d0e0c477907a0c9ea98d76c712e81d9c398c4ff070793407ba01763606f20bbe8aa98bec5b4b7e912984d10419a8b9030cae8ba88fd109fe0c822566f943d9ce3911ee9119533a06bf821547e6c26c2190e9079c36fb0c610b6a1a95122d4503dc20c5ff61f8faaea682632556b46529abf91000e95ae85af1c0bde8580cd99844c278e8032950308df67bfb9c4c6644d0d8f200a807c7de87c5fc700c19fb1464658a816be349d56c1638e11f145267745c5ef0a1c366ab1edf6f318cea2968db1179794e204bfb18ee0de5b660ca0484728e68e335bd4030065d8d09b1f495a5e4152d8d5befb9fe7c509afcf6265e34c3908267e8fe2f37e43224c560f26042dede891ea3ed4634bcdd5fb1b72c1dba25b84a83a189b13d147411878e9025e349367c137fd82b600fe34bb3af20d3c8a14d8ce2ddac7ae939bceb602c8dc52885f13ecbfdcf4bd50a0121c3483d5c96c1c724633309f0b3c4736d7efe22d3d32425be4d8f2b65158631b1d3bdbc04c786798f146831ae85685ebd4d5540ea0e60aef68527c7b295db736ce6d32b010a69b8a3afc04a6d0ca3658118ee1bd01002157b7e41ad91008b8712bda018d0b411a6b0de0b4488f75a071e501e9a0ecf5de66bf5bdc0deaa57933313af27136beb645f8f647a936b665a816bf86b61a3a3f442fb4ade31a71c56fa7d5c3312e06b309b9dcaca1d3303f708239839c39af24adca86b20421bb3f8a1d7b73d1527ad4f0e61be9eb53b3f942212950e30f18658c01260b73c87d6bfbd6f7c5bd80c5dd985b91c38c0bd08f541cf3ff8ddfa826d79a4fa57d5d19e84107e116da9ed779616679f499f67b05f36578b74dbe7f9194b2dc11bd6bfedcd0a0e71dacbebe812078f632a052b62009207ba08100187d472c7fbe03b8fff3365a341322e9c0fa9e1178b6f142c0eb85321da195d34f3ae7387e5947b9887d706298802186180fa71f65cb0b01152a24bc17b272fc008a54da3e5013a883a1afa8256745be6b671476b671b6bbd71a590dd065071932680ec43129db02e486612eebd34819ad7fa12f0a87c5f5d6de4e1054a417938d8a100c92388367282d5bbbc40c297a71aa9ea21f7a40d3412ccbbb2135b66eb966bf0726409513229b4e84c7209ba17591235d47cecdd4a19a06ce4b0032ac7f9dc69f195c38119b27fa0a1b58b1411f38f0465e0b13c4e6bba4694cec474097812f1cc0fb0339cc4bdbcd6538275b7c994ddb71ab859731cd6d0240401596fd0d0f8d99a5cff8481a8fa2cebada7ea9a126bb46f61dafcadd21d6d344aa78cf160b5a4e444b99c1dec5dc0ec4289d5a5b4f5fc0c73bb821a62c6076066b1cc8f04b5791ee320e67532226d95186be64a7e10d24198d8b3c4f32e1cb577b7656890c5c48993ab53353d3275d7dca83340c174d3c950e9da0634fa6ecb965bfd4944f094f20b55c3a249ee38601ee3a9481596705e28d424ae40f24ef0d33c61015e3e277c3ef94d2a9b78d21f2c136326573de43947d8ce87ee192ca680afbcd524677b3a8c713de22e2e39ed0e7d7c97c59f380ff4d96ca57d2c0f42859c8e65f00a608f19c18bdb88407e35fa78c9a19f6b7680290459e29861928359ea9d3529ae9c6610c50b1b4789bc26980079ef94d16637f27a61273958f70ca281566a5451975dbdae4174773d0322f401719e6af240d83d752c832d7a98ad10ac4995f3e558f4c851117e4426ab2a4085b23006138f1f66c9dbd2685d6570e99b6ff594febe24f56c1d12bf762c2cb030c74d269831a1e023558c0230f866a0722882c982379a2aa3ef077b8a04df84fbb948c675b6092378377b6ef8daf832eddcf0036503d8f4d16793c05521711e112511a971fd9bf70de19e1423b5c47ae1d67d794ff577c9ecbfcc4b937816bd0a943e733318a6160930893c13ff3c2b3850bc9ddf84ebe35d6843bfd9d5813e6f98d6be798e14071183415ea080637d29667ff7e6094778006d497de8fa7bbd3974524cd5ff775cef0fb9b99b8a5c52530a2bccc3e523f8f0d6786b7e1cfd54dfb9cfa175cebcba8b7f4b607dce70fa9e34358ca37cf2f388444e9e6cf1646350c19890b43fcf009afbcd0be86d1a76e32ff8757c13a50297ed4abac18d4934294e0d11396dd00d712c7b4c53498655f7ffa1c7588d0e10341ba67e8cfb8c7e831abdb6bdc05f78c3b000d31f46669b3219cc6d2f74e28fc70acd13d076b1e0de8e675eb667893a8a64997f1688f62b9f5048cb2c1b96a3d3c3e3faecef2934a37a0339b7646a0cfc035121eb6b87610e5caf1057541760d5334dfc6e5900151f304b500048f69417cc179017d48bc2a8881345b3887f0188ec4c512b08177de6ba21462d82a073998d0463802f7f0da47f6983326e12bf09a3535abf1c597a4e532c23b24799e16cf8175de14cfa7b1a976874a68f219a4633e12a8da994c73420d7f7de5489ae4324bf951130fc34c79a1c925f83743793d9214f6461d603f13e64a5ad1807d92877d18993d606efe36df507e955233b8decbb5bdbb1c81cf8a5d23804ddd4cbc03a7e1cba75b29a8cb1423beab6b09712f3e9e8ab78eba6ff71d3279fac235e3f320c56950f3425bc5557b4e09f5ade6147e4bef0a641b06c6b228204297034ffd3dea293fd639a43f1d19bf0d4fab6838de9ee9c1cfbcd4a768079b89db751eaa12bab066824d2ad32b489fa6388b7c17ad596110910c595ff96acd48cdb47d07f8a4599190c4e0131021653ae2ae8d84d6fd169e2122c0068aba5279acdfc3f820523ed68cac9b41a9eec523b471fa21bc1f1933e9e0a533f3cd6c754ca639d94e81e9d20ec57ddc41bf36e2896e8b4bb6554af550eca70c23966aa383016922b408a19d83c14c9f2d36d595d3db23e6ea0bb1f4756b9d66b70b09589be524bf4dcaa49567c07030fbf00c2a36dc0e066e09f5a0c27275b734ef88fd68f421e88c03787b20147469bb690cf7c48a2fb1b4396e89c832965bb73a06bbe3fe070ada827cfb5d35904d4c73f4d83c9541d11029bed83973565d42e375e11d0502784c96af59330f1df744a7af2331488f82ba056438f87f5ab4f4bbf24c1fed468ac3ae934a767dce52b3ac40dc345ed546919b7c87038fc9daa5a888b2dd4961a472588f0e5f51547430094fa97ddca10db58195cbf42906c2d2a92a6edaace2d6768a0e2dfa4e03644f2c6523cd6af6d432a8ad80d169f9f62577c2e374589b574b37f27f73f50c14e092af005139701eda91378628b2e4df179afd8448a816eae470f2de220dcd8b97c0c8661e8bbad403e26d0ed806acb13ad25e03e58f184dd0adc5042cf4d3241993bafeaa875c4885cdd7bdc5efac87ab08b031ef62b5aa5e8f9dd098b3ca18dd1c65a4dee935a62b874d41225485bff73918482d69c5bd5c4f78120922b59e54e4654275a89122edcaa6b1cb466b710ef21d1df0878e805d0658eb1c2a07eb4b320fdfa2918685717bde4d12de43df3c47dbabd798a1b04b45e73818da29e1efffe040ba131e819e10570fb3ff6990bd9962c869c59eb38180fd9079673651fd7b68fce3f44458e4c65af1f3c8f0f96cca494c0d09fc0d2b29c34eaaec81642f5769d7004c06fd3f2d3d041d0a129357a6a6136266249f135644889a1ee0145a91d8d2429326dab48d4690ffb25bb02d0c641ee75040b9ba0032cb070f7033f4c7e20dd16b21901020aeafe7cad79dd7040e284578d4fbd18aaf2a6ef1fdcf2828644a6e744750e29c136f1d133800967721524ad735ff2359b9f4fde86fc40d3f9e4a80e1c4c41b8fce071732d5fc181340b8ae13c5c018c47a01c836776a70b2d47905e89b87d1aba3e6cd908c34ef858907aac6fef5f80ad783fea5413b02f38f3ab25bb7fc35d43968d24283216f362ca59ec580c888f1f0fe093d544cc021adf398480028c4034b8f3cb0032d324f3402f8176e4f90ad7c0174826c613282c9136f70093060c1f4433362549ecd14390ca3d2a9ea0db0c03e41b1d4fe71fd47798c08fa52f43d8a90a60697a40edf7d75e0fc301c8b8db60adf45fd9cd052ba46d654a0ec03717ace7ce88be16a2890949c25e48c4f504884d761d9484992d0dc0f1b08a83ce9186f761d89bdec10e04ee143cb9493af1bb349c3aa6e08c36514bf194573a1aa00e6a828656d4e4d64fa68a878db7c79e129758ef25d3ac671c78397d570e7aface4ec2c8da9c4247589242f184227262623969284f9fce56829e4153cc85123fb1abdaae345f8c0667a205d82afd8298d0c99fe75077c24e3a57ffe7107b5cc3a72dc75f1b2c3f8c668944b3ae911fff780a9288977da3664289b95dbaaf0c8548e9660d1f4706d681ff1cbf91db00ab3e8e270db618bf869380ed1bab78cbd5fb576811381d19ec880e2faff2ef235d36e79dfe2085f3e47532c4c661c18aebfed047708ce0508449ff91842ad2a3b28b33dfb007971ec2fd35d7ecd32104832ce997886178b05424d13dff2626bf7848e07cdc96b04c0d91f31a2b32a624b3519343c01909ee381dcc6d0ad87da186ab299d083cbe9c2d0fe23360eccc803a9934c4a697aceaa31e42b357fa0691105229501dfe61bafd39f591af41fb0c28da5bb4b1ffaa7f0a0a788538038bba99e38939d8bea274173d31f72d95a46e4fc6c4a2b10bfedf3a7343a62474bfc23dc0b5445d0c3b8139a3d5a306e654f070a76e3b42c75b13382af11c5d3172b342b758b2248c15bbe107a4c85eecc3233ed3e10c74d6f37b23143e3e7242506380419815f4942a36931a76aaa3f6e30228bda1f13efaeee6038e71ebdbb308fb5bb573e730dc7e15f43ec7c2935fe52e49d4895e9cc1b8cf4451069bfe4e0388351bcdb51460012baec8585d918b35c63baf999f36414a648c292ef4dcf127528301d2ff0965d569b7f6e2f12cb6c6ec349ed6c766873a4ef7c600ac65bcc4d9add8c9fba40c8c40d912fbeeab561d354ab4360359b477aa01e7ce79edf706d80bee0b90a5268c0022a3668bc1c6053d12228d86d9d9168d48c0005f4c691f6c1176544c6d183a60500bc51434f0baa0ec2c4d0c507e929ae372a49f4c6d04e04ea6c90debd75cf74d381193f59fd4b1f6360f9defeafafd9e31e7e69f87990d8f5ee28242f96b8ca5555462670d309e65c493364d0aa3c223b0c445cd5cc733187db19dbd4a0bcca544a4c89d1a06ea1c84f8f851e6b3df45669c7e40d999bd05097e28d2e29e715c4b3b612a0aeb650d83f0d4fdafc236bbd83f7ff426cd386fa1d14e483b92b566dbddaef2cea74ee494306c7078e1703e2039e220b45fa71c6e51e1a5a7d99cecdc914e8376763edacfad1c307b7f6e3c0dcb26341de852350e2395188817468db441c4a44a2e610fae7f0ed23ce2bf2101d8c43afa78792bf0858b5a1da843482a6433f5abeedd5904eb5dcd4c3f3e7ee348303e3c2d4130df901a1cf06860ad44a40c472b850030c1e097b500616a57a0d8e1f30f92ded7fc17048424edbec4959965ee2faa50a9442ce9540cbac0bec88511a43a5cb1bc6a0bba3308c570ed722ce1b7615d7f760494a9cbb1be76bf4178122470a5e911dfdaccbc530caf3680a180eba03e6771749acc64dadfef0228bb4955b10256ada99a016420d44e9e9b0475eb8e4255429c34baf36d1cebcbc245121d1a8715478c8f34e948b7ae8c0817064c27ea8bbe6f3e5737272359f3883a4f8a10217163183a9a8628c76ea12a60cf7adce4bca5b22d9ac154b3621a57ded402fbdc3b6d34ed056f07040b2c006f0278b5fa898edf97c5991ee4c9f5835b039187b1c264087cfee623ec5032e5eed801374914d18f49576f7cf5edb5c9f14e8c6b71b03d4f5d16934795008403120e46945222e76870a67b2f005d706e877be8a8e42945bd0afee4d53dce2c708dba65629c4d550c19b7f50602ed8d9534268072b44483fcd8a23833ac3a19a2118d82ce5750463f5e31211a1c7e62c788f18f68381848fd79821aa385e76262c194a46d13920fe904ddd593e183d68c4a75612eb9e2ed810363893b06aa52b61f05109a36cd30d9626401475dd8cdbc4d36e41458443a1dc47bf1d89cb030361888932bbc2e690bb917248484b8e29680025f991867e5c1b137be45497921721cad512004d8f343d2cd37fd12274c45534e2e1f28116625c6228cfef05aa1b77421fd6a57a2e885e9207f9718309ff6f6196d98a4845bd5d4d842aea22104ce078455ad4ca99a16814f19ad5328a4b79676a36f60ad731f0282afd8ccb8b36d3ace6d54f2bb2d5701438b2b7126c55ed51b8f14681bb3e713534a907db1112adf73b8a05365a8e472a60d415990b2fcde89ac705b4aaedc820a1f286690e46ba43a42d04c80f08cb62094be1ee2a8cc749db590f1cc4eb81d7fe990f7fad1918b087b044ca38f056b6c111ba076735055992a9f23bd8700b1046d07c8aa08be5e0b3c63a60a1d8eea736623b04e21faada1390260c2c63abaa86b8a527bf3c3e48ef9a0ec351e312ff96b35ac7a4c678e46731a8ba0613c7206d7262e691298d53cd639a5940b263bc5e9c775518dcfd6e02a9fa6823b86d0352f47709ad1968b79b8ad9fe9372b7781795d0545665d29ca83924cac2924b949537fa28f1a4e6a19e0a74daf59807e9310f55608420d29e6c62f9789186ccbebe036b4d80d04d4c9df32a13a521d0012e370a0e10d1feea63e3a90421c7f0118f52f1a27645004c72145853dd80e2114fbba8cce1975ff8e2e7a9acd13a6c0fd08622e1afc3d7f4f7c1063415b213639bc208c3ec271bdc8218aad247704452fc8de1c2a933ad8c863f70aab38957c718885041d48d3ca1952b5a6b682c092a721e1fd61ad5b546e0d707aa575728c6e66622f46d8c9341db3f40809879eff7ab13ea1c8baeee46c48a9a8b42fef6923830549fb833577a9f8891ee8ad982ff61123ba3e27d139ab87faded9792560f6f908bb5d301317143544d3a8ba04b725a0fcf10b5f9d5ccc87bc92f91c41a271062169ec6a04a82ee6d8a3ac068bc6ae3388bc7d170bc06861830bc1f0e626e45e3782371dbd6eb40da26cd9f0ac485bb4093602ccccf99dbcdf1b57a8647852ff9317f9d7f735aa269da50f203d9382f1573f4e710971832f79890daef8edab45cc8e7ad5bc588ab8acf13151e484b92bd1410c4babeeca8fd5587629689b65d21971eb95d8f71913448b9ecdc9b17623899629028a4d1417efd484dd1867be648f5a94568c7d40e748fb122e6548a775c5303f2681db6500638eb979aafc1753744394c9a312906e8071d4e8d7611b51e1ab419fdc25b1143795e720b16a93c56acbbc5c5c21aed4bea82b14d568a16acd3cfb9bd0cd040ed06ba2b226358c410fdfb3e828201c8b2f5719537c126bfcfeda7b00444bc05c93ca51e1421bf11d39bd83929acc339e59a4089de5a34734e6f20f6cda9dc64af397171f63d159fd9e3d18324aec9233db2ac31c4686da8f8b626345538123240e3d42332836aefe67fc15b537bb9f38cc6c88e21edacf1340ef4e435a7d5e1dd41fde2a31dfe94f29a4b336778aebbd14cecb2f73ac5af4547262e1ad8a94126e6e990cd89dbde5073d94fec089f4ac7531b2cedc0ef46bed1c92f873a47ab88f80c2dd9e3e50f3602f454bf10c777734f373e39573cf9498433958bd3a8b1043989b982950aff050cf8b006b871abfc661ca9d040230c12c94505f0991fa7a2127b5d60a7bf48f88bb50b4a1f8f6eb830a89796d4c2f9f1c1ecfc41485662ea73bb81ff09e5a5ac79d7538effd074dd92a2d4ae3e7d61cb8b5e13cb803b4919c8c5be63cbe62648c2b528630cd335af7ae3b9a0733509e5b3907ba9089dc9fcb0a38238892812bbd072fdac2a7d1dbee5054daf67cebec9e7675a9d2169df5728b254025d437cc7332f7c4236dc2e8318f0e602258e5932ff607caae15513c56daecef09eb9f03ddc1ba9bd4309e5a3ffe4a9f41b86dd16312ea451e33ca0af0e320f7e191bd0ca0708c6bbf70b835d6d607bf49ebbf08a5675b525beeabff62ee9dd2fe998f82018c4b5b6c6d16305d52b4c2414d1c420ff6da45de2b8176dcc4d571dccf231a876b67315857049e063b763c558a0ad877a97ff6ac438c023e8056b51406f5eb2ad90baf74b1aa4fbac9de21e25dbe0df0140a59b80d036f32eb1dbb79fa0df18a666328a5d2e0cc168170adf8ddb58ef63469ebfb0edf127cad9d32e6220b2f07c166ead518f177a5a033edecbb9c884a290a4b125aeb597c897f5a0103063a8dd3d416a6d7240abe93586ae5c46f81678ef757aeac296c979e96be301908def7b80eeff9c971ec8bab191b917acfb0355640890c2f743b552aca932d8967347785e04b59018bfa17d3f548771099620da765703a0000d5b2e14fba89d05050162cf6866264489f78606b5a0bd53fe9dc24c6b0869c4344408042385f103aa2b78c47533778b1330ed0b8ef1453093153271cf2d41e6560d5469dba830317cd04c13db717e418747ddc9c600cc5f466441de1e1d3707ad20a3675b9e74af113d7ba4f8c154bafdd4cee3a9437494ba6178a32b8d066c97abeaddbc36fbbd1618eed71d2b0cedf05c15bb63ac1fb8f671c7302e3f331fc7bbfa2305d379f3ffb9832fcd2e982a5ffcb1b62f5aa909391e582cb70c590f6c74ba8619334f2f72c683b7c7bc06d2040458766212c9a0e35099e360c605522189616924b561a2419f6084b3832c00d525d1b3d52296ddbce54dec0b2256ad92e202b646a955f05612a28a1ec56ebf6ce82308016a4d05b9d32f5fe9d37d1cf8d9a47e81d9217c0674119a7314dc8c7615590a090828c41324f69be6dbeb7a99a33df266b6059268c7538db8deb6907aeaf1334d9f0f3a24d64485084e5b9586a3bbcccee3a013564eca8520f5ec3f8f7bc0dba79e8211ce05b48f646a490e4cdcb3f79a9fd75699bbcf04719533e2ec5bbee4c4dc0345b150e1ca436c88ab964cd1731eac03bdb41e88e367886e407755119fb6dc8b8671143cea3d8ab15531f601f3f557ac0810886bffb2d9fd3cb74051e5950b12c968ab2e440294be32e8ece144d11b813d14ef9d3b6a3a03df8584fa50e5ace800044dd742a344892318e542ac4351e88ffa9d02a908d26a173d6be032104a89f856f0c716a447dfa40aa0117a5c6ba0ee4dbbdc3b6b53ac1cfce49d3cd49ab98d10c84387529381ab032deff886f679b2d3e7762fb439f0264cbe86e91a2a8391a2a0dc1b8427cad43bbac90a27ec1f74b421451abfbb7fae8d0f6b0a1e5d3a576eeffd5513116a1946545ac4175a454d8f2a7fa63513f2681a1b2e0d9afedd8ad3f564baa12ef18f695c7db1809ed51e661ce4664ad0d47f765b882270b40dfef7296e6ba8f2cad35921acd425db94fa3a5c3ba06a9cf6d875622c0ac7cee44a49303dc3f6a75399cfb1dd52016c39bad163aef26953c512cec83dd504737a7a70c6f332de90ce23bf42f5f594edebc862faced4b149a8e4cd49679aa2063e27c23995a4393ba4b32a70e3b70b6476ad615049b14640f15bb831a4912426a6e3a7818cec49e4a5988c32595ee3fdaa0ac62f3e875345fcede47bc1e7f84eddc021273f3011865497c609a022df0db9444b262df417a5ca814f5b7fdf8419e8a8e592802fe0b90d32d6c76af91b391a70ae4cdccdd554cd57006cbefab7bfe4b6fc0877e8f878ba29e788e566bd3cf3b554f2cca2e84a5da68b63c18320f5ab2b5b929acd323f68a2c3d4321162c5ab7495930907bbe2671912e411a3388bb456085419ec885bae733ba6d2017d5752bc584ea22610f64c71a1955175d15846ef5628b0bedd070c1bd2d461b85ed9163400c77d093afbe7d7b9f2cadd0762ca0765676638501bf5d317a359eb73fbcc6179264150c711365948db1100601b989b0f351d2dc168db6c3a08f20f19758d819ba8fc408999cb4bc48bc4907477f1992712b3a7d198a7c93f7c9a121c8a43f4d2b2fc664e01b3ea2ff8eb1c5c7013790132d8cf93c92b0143554dd4e3dd9cf880cab2cc86079818324132a91d9ae4ba5ade7db9385a4f73d77f504e7486be8dcd6428939f8fab71a81aa35cb336c2ed0d1c24b52148e25c1dd8fb1a902cc2eb7980d40f50eb116bda55944ca6fcfe9061e4859b6418f0c98b4592e91ea0e577440af1a65a88e44bc8517d78c9158ac10af04faa237dd5884000af73c8770e298c078f95c86efab5c9025e532279b19b9b357f3d7bb347a315bebb85d473191114679ba3b876cbb8ebfbaef76056321da39a1e01137acfe986cffced81a0d0c6258cf2bed02b1022f4e9c283de11b501d78fef8243498fb51fb239e3f798551b5b60c9a800c752cf47292ca1fabed25fb23a81bee7ad6e0fd13f571702a2112f2f75a5bd3d5c8fdd23822d98589416eac0f8d3e7d60e067dea20aad17b1d98da8b09ff6c887b58e91fb7629b2a996703aef79b1e945b3ebc8e2187e89dfb42e83c6217aedeb8cd58ebb3c76efde3ea7c01567fb3e6787d777a40b83145a5d2131df84a071bce7109d7ff4acfd85b8cfe7fe73581d0ff0807a97be150257ad58343e9620b096ed90c2142ef56830e02ccf469a01c84651bb084ebad8e0e36521643749f609ddf0c00895eedb6df7ec24b4f453ffc9b790791203b303d80bb6ec2d99abd27ca56732cac5015659335b614c36ea0ca732110378cd0333a68d48815e229eb25c4b13ec5bcda08aeeb09fe75c3d5b3600f993baa60602ff71fd7f40877dfab9bdf4e1ba99091ba352dc04394391dca21d89dd55a1a431c1ab5cea277401543f49840c8fc1081905ab3cd1b4b22026bc4161e270cf055a6f30a6bd68b6516c15380939181a846786f0750f0594b58101008ab9ad79429295413a9adb92d12c2e95118e70462ed82eb43686c06d202af350a4b4982862616e97483924df1b86a2e2a2d20d28565fe50ed8758edc7161e6a777a752ea28a3aaf3c75b0ca2c4fac7abefd2f556fdb1db8ac2006c0bf636d855b752584b88083c4121724d4a3364e8fa925e51f52b348b79142b40c14a85527170c73ab1aaccddbc24fe0eab2c0a5c10d7e3319ec9fa2116542fa04989295d01587aae5ba083284bf13182e96ad0361c05679e0ffc7b79c049a1ee82d2059a83acfa625816289cb12398dc2caba7620efad96603c9057d3abce3bb8bc86139cb0255979606653f01305f9e68c779e634ae3703bdb826197f811169877af24eaf6f40b0f4944745fcf9a84fce9cf6be17955e17742fd033e329456ef22014db3f5c2a89ebc6cac48f6cadd3be8132913d5af2364399b78c62a314c8d17f70d226acbda1fc9ddef3eaa364993098729310a09c2a3939eb1ac6fc913ba860c02b87bfef6d1b4b2e4f8c9a739f2795517024a3ebf5c832bc30415372c85d7ac88f0b1de497ae02b3d9d18f18f7802ba854d840e2683ad0547d4ca638e5a1623d9c71962bf7dffeb08ee66c753e98d533ecde3cba0ee8ca1e1e3543ba5db9638fd99bc4487a045efd5a044148bf8b05b6c2801fe26e3c073833c261e55effa5a55c31133fbf46b6eba41d95b4faa563f54d4bf597181f9edbf29e5ffe6e9d68b1560e9393320cf48ace3c1bf5eb7f989fc22bb0022b6d32ff02699358246d9f2b7674c6044467e822a97d0e48bce5c1a7039a5c663cde8613a7ab595c3a3c9cf190d6dc7a7f32f6f3325e3cf4370d1b80f865719ecde5ceb20038bf4989b02af9482a25075502769d1698b4670b53c8648e846197a98ad9c0b2ca440edf59afd52e26516f3104b98b5151d437f57efc216f9f8a67673fb5ff7a32013c957426b4f5b90f4f04a484cc4fee13352fc9259f1e5216e85e5096fb0c8170259226a64ced71b2fc8244c520958c07f4ac708c579c53560ce9095f0f7ccbe829b92c89009d7560ed44ff821f308bd1cccee91e29e6473a97141b967273a54f726e2a3cb9bde1c9019bab8a87b0b88da3b04aec3108c1b412c5c6d903b80fe86de3a2c35e11d67ddfaa452826b59c85e9803fc28d3512cc849cd6d27694c93aa7716e95c2fbd6967e3b430735622c7c66bde38b0f3831fb896f431121569ab7be2bd5d72e91ff3b34254d8a0862cd9024eae67d04f718921d8c7b49647a00e32ac948a882e41fefb75ed832793342b3913fbae4de415e3d0e295ed3cf433290e2ba4f69b517745fc053c398ad996e2b38c20f9e326bed15da2fb7d5c9f38412b9be6ab653ea9cc8769130b54ea8ac08d4e5fa93746a31fbb0027f59095e96e04646786adb8f7b99065fb3c7c2c9cab6fe4b187f8c56546cca892a68fe9c2767dbfb438bbc74d26a1e1e50c63e269f44ab06b63c1658567f5a599e0df472aca05356f69e9c682ad9f4a03ec1efa63e4c5de28f16b84ed284a1078712bb01efacb8dfd4ffd9869abd87c394bcb47f6c3add8c4775a9dab189a7a41cf979fe664e160a48b1ea64c3be33897cd2436a712dc3826eed534839e4c25108db7e0028d49bf29bfc26920965a941845b7670f3d05cbb1c74f282375d804b1b38618958d4634bb07c589966d0d457f9510cf02b11006994eefd9b367a3a088fcf14b6bfe4d11499301ce6a6a98f8ff4b43e65114c4d6c3e0864ac6623cf6449e3c03ae59794043c8f948c7a79715590041e5524663870c97434c03cdb4004dcbe9c03454bf32466640e69a843cdc309379fc00bce0413bbc03478e47cb221a25517e77462e0048a5b0cd9d9fed190a480ed60f06fbc552f096a308e7461de4359b43441de194b59fdd383fa774aaea410f4b7e2e221f0ec2fa4c5ec95b83d47d68031471280b14c1ca1206b0ea25963b5308b910285881bbcfa0b3389b9393aa880970b25e7bae93f3e0057ca6747dc1793ce58cbba0c80c35f7698d7a78794e05875c52181139da7737d2f5c3481efcc27d5764dec36f15633b39f30e9a324bfb4818ad0753a52d706da5eb02cdbf420f3a9039839600e567b97c66154745a81a5dc89f3dbce7524b4cd73ef2a958812209290c4039a2fb3dae8e88faa2628eb6812db6c135df41bc9aed9049968c92e0ac46943c8b0fe07dba9f585922257da3d74f31b5079c5be278a5b8a38735207344c96e177893dd9d5956d3f04e481d710ce5df35e190ef77d374519b3436fd8e3e576a82695707507bfb1ab65462b35a4aca808fcd4d4d652117cc89c1b4b1de9e6c1f38400a7566538f5d4a1b1101ef0f5a2d93eb5395d3e771a5a4ccb0967a037afc06283c5f7f703bd35c643b2bb831b00d866f80e4600d773ae2511abc49697eb21b6093a900ead0573c4e572159630af123f8cf4633298a4c29a360a353bcae2d66b763cc52a4dd8014946f7e1aa82b05b2b73820fa9c7e0026a96460f8ac4461b13458da97733e7eac1718b2569b1b4532d6508d311399a21b1512e9375694cf3e7559efb8fe165cfcd80fe44354579734da275b153c0eb8f6df2f64f49ba9fcc2b14c318041a7c34b24f861f5b9a8948424dd42c68830d657c747347c529881f60f4bc270b33e71657d4d4ea258e32605923a1e764b2fd67c586528681e9e01ec5de9e3fb2e760478cb521ab9fdc36510790012cc0586bd13d462fab0e8589bf611ee7137524998ccde166bc2447618c53f57529bac1617896b327436f8c26b4eb04cce39610341e2a21052f8f3943b1d8c5f4f182143a101abfb9c908494fa3721915734244313d28d5e1a0ee97f3948090fedaaa63a62844162e6d97743ac3ef7a921e553757e0bde78fc3ad2545ff0d8d4047402b158fc4797d3fcba6025b400c6dcb46be0131213149cb41968fcc747a0ae14b11da06ff03e046ed14dcec0d1c764ad0b6c8a374b9719acb27aec2a1571c0d205af13ae8c3bf474807bf71ab1b4faa36a4c0188ba2e72ebefc72d961bd81fba3e172b91b835f1ab6232d330875bcfaa6f584ee3513388b3bbb3e88c7ee05dce1a71d418bb03271541a25fae14731912e271d381f79639ae00def0cfd0418fa8612c3c967e4fdab613959a003ee505d027cb107abe70777eeaec46852ade759a02e107526902777eee713a9ed8484331146600c23f2482150ec5506477431420ebfbc28f9ad12aac95e3049cd633ae1e61101b08155583b066e7fb35e4ffa5325fef028fc02e450cbab597f86f8591a677893ca8c30dd68062d5228ec5aa91d233f368fabadaea53a718e88bee780533479a4f6d30c74da9068796697ddd6103de915c8140ef075e53ee8f40546d5e5194e3669ca4b254caedb1caf04b5906b2f8e5cda7f4ace5ea154727d0d2d7226ba851845849d82c8e96f5c3cb551f7801729598cd675c5ffde45fda7fbeb329fdc8c722fbf437cd5c2f909b7db3b1740f51f45eb99c5360e9118412ecb6e92eedede9da371151f29a6d3d5ab2ebf7cdc1f4f072936bc4ef41e61ff3f709b1ae778800abc7250d7011ff947507f342b7c2d18559ab0853427406c4a18662425a33b6b372d211e1abac1660ca21cc3ebecd612f43c9d8015345ddc53b9bcb4fbc1b4eeb6bf0bfbe0646ff58dd42f0ce36a69bb141dfe8102ad31dfa1012a34eb955398c101d147ed6bdace556c73fb28d191f88e58b60980461fb2f014f870d23879bc1b7af8fb9fdd88da93a36f5b07c7a6078b5565f9476bde9a977cd294b9478c9d1b3496d7db24f6d0edf97f4add3c12dc7625254d1783dd999fec6b2f34c9c5cc4c33bd32728360dbc37f0a904ee90653d30e8e80f125b4763316e0822bc289a5a79c85d6c0d5426f876b72636f5dfa9c23574cceea6c217265b5c3b9d429655177694bf4dcafcaa870eae20426b7cf7bf0e5ec55e3c5d9f5336b66824c826ab504f589a9bd2fd90c1db26505aade6660ea6219bc3784c424c68401f26e19989e0d1264d8cfc0ddba5e431b0bd76ac5465956516ae2a3fb584b7fa90100b2265cb51a6bb9a11caa563e57c3a9f67dacd685b394a02bc1a17b4dad91d04dbe19c2609e75ecdb6d0f28ca667e75e04a0bffc9993055316439f605f922c1795b98b64372a597337db314ebff307ec4a1bfb29ccc89d71d2072f04b0eff14b35ea8d21d44d093362efeb9e13e8f32512d8b3b8d1f24a9ff9b4bae5c6d3ff31d749db8747155c3c7f5840247d4d0d53793cd2edc65ae5f58a93d88b31592fb1a0c4b456693e537045e7a9cac1a22d00b1e944b1f2c15f8b1b9c0ccb72a4da5cda6dfd64cf2d5118b0b699632b5bb97565b2f0e10fd911d0f7b9795325ca7013175869d7106e3fadc7b84793a57c3a61ddd7a3bd16835b31b83049419f6d005e4d9c1773d07f26da6efc2a5f5f666a5e4d47ea2c1fc491917a0f3faa886f26583e693ab32cab599e697b2c867f4d818d7a8f2eb01474109c46ab7efc69012ceae32cd0aedff4295e5299ca83409d7219d2d30708eaa32b9fd759d40c10c5485d2a1448692be5c91484452b14903238a0466d5d8ee21d184f9c5bad884bd80a342ba8110d23bb2a5baa53d07ef277f7040adc3565a53d602f64ee2b3f4dc19246aa7d91b9a9ec3408569a97f642e69ef23e6d79007ad503dc00e2d48804dd7e898f37c5b1f4fe952d0ce58ca78d73dba54e2941d4063cfd97af530ae0398507e4fd878a3b67376547f353c6066437a7ca009a273523866d0eae26feced20efbd05abdb575662e3565f9f6ec2fc8c98d07be17027fc1ea8d4a0c1a0005c036be17646a8e0de6ee1457f58ac6d109899b853b4844c213b6560c0e92288e83299b96d4c1482c097ec21dbaa64b65a72dfd08af8d71831e518611bb0211a281b2d1121803eed5eba4048735353cba01df2c80f3a0a9aede96b575b9661938083fe0913785fc68c82e514eaea6e03f503a31b9379a050913342c1bc534bcd8c0296659a23c3aaf663e7287ff3a2bc33b14a8de0f9fece2e39eedc3c43d3449d2077fe7a4bc70a7306c958499b2eda643ac554680091cd74d00b36f94a63c2a961cb2b31db11d83155c933e77ac07f360280c39191e7116850a5c15c730c39bf82907596b2326998202d83827ba9eb197857840fa5de7286c90e3d75ee846f1b53e19e0acc04ed6c089cb58b93790032c1fc73e0482b73936a5f7612b03b5da86cf4e7d9e4b5f6b32196105a6f265cf8c35315605c8943f39d8f5a183e35d48b055f6e45d50e5b15b67f50c7e2dee638bfa2a654acab0a5edacda2fcb4cd205faaa1b4b8ba12d1d66aa7da9f7de6734d767ee5bf67990ed4e32222ca6d0f534fd4bdf958568cd4c2dc45cb5cc5e772ae018fedfbb46fdff6b266b6a57638acb9789c76b752e66dab4cfec944cb703a4432b37991f755ef8f92bdd636620a8723fb047d0de907c7bf88def325795d6917f029857c2f54ecce8dc91e537f94fd6e8a1fc20afed094c5150bd3444ac9cb220c52fbb704948f122b3aaa933cea344acdd084c50cc3a66805c3b8128abecfe4c134e551a7cac9069648edb43bc9655baf02c1ed77d96f3600ec085286b38c76962b49a052599a0d599f722db29f3962a41ec0816f1b2da654b43c62471fab16d38f831fe33437e3fe05060ab16c3f97e47765c0e7d75bc84c2df8c1cea19f96d9ba2f0c9a2246d521b1be753451d76dffda13ad1cdccd6d4142b821749879c1fb287e2667dbb26b48112a7758000275606f8dea0a6be2f9cc16eb5671ac85cd14526699103e33831cc6ba4434dd64f46239b5cd1f98593a8fbe9bd98d167cd5593275819c815d4cd8e66cf9dfe472c25dfebd3d1bb0ec22668131e94b0abfbd45299b677cfb1cd99164b3503926426e7acdfd5037bfc2b9fe466f0b460200e413b43c60df4d88217325a323738d6fdcabbcc1066efd729f3fe4cb122323a879a825b2989f61350ed0a8912e0e37deca03a1cf1a94040709f67c759640948aab2fb3bee09b8c2b11b0d19f697c7c231fa7459b55a8e7126f6d43d334366e508a85c209f39ab2673369b443980e5fbcbdf1d88e16ecfd43c8e1b094225b923a044091746b9c3009fbc4cec0225a88d5ea6e853f3877b646c7a250609aba782a75de516144f26f7d3de21af5e15a3e4c06e62cda7dde7bb0a8955caae396b0ad17c35f1ca53956f0cb144b2e554e01aa6ed1d044ff5093671232a2b4017a2195da0f08bbd940ddaf2a7f589acdeb11bb5fed6fd0fd1817a4daaa1f8158ddffa2b69824b2fd9a9be580cdbd26617cc7e09aaef7a85085dcb357f558bfc63393532c50f060abc4ec7b1b2fa3f3c60664a88daa46789e0c94a5176f93f57e0e5eb2f31d067100ca8a61e62269f41639c6bd81aa0391e4b196c2ca30bb191904b5857c06201e71563ac657909396e96b22b902f46586b99bd5a359afae81b57f9ba8e98b4cc7c9db10e4c2ee5f7f54e8d1db458246158f304d107d1de324b43bc9c3571fc8c5f1732370a0d89e748403a8ee30171db409806208512762d135c5c99105b56c8c6257d311815d90e5c0d64723c21447eff942920192898a8461551046192fd4651e874c0b5a84885083a0cc7848587a137fb9340c5753489f55b75d5354393f93233b2c47597338225c7c4c7e5ede4a7104f185871600f9d6d5555372ee470e4dacbe42daec201d7c994f40d0a61d5b9ad1541a416042a80df1c46f8c62e642057b48e5c6eccce93e155f0dd874edee9a5fc1e57ea0adcdb9a86767265a7047d77f11b3519d9cb0418917377e2cd212d05bbdfe76a14c57c2344f5d03682bcd988fd6b2c64829d3d5075d81e8d74ed65cf8b9111727d00a5d72b63c71c57f94d9d6864142ec6468abb0f0b4ec2ced12f115fb3a73ff83cbde174729d1bec15fcbe05a758995a4b2883049f7953149fda3fa8e1cdc4f159c7aa29d705e4a751cbb1053786e70109ad0cdb360a7264a2cac020fec720b78fd807e0576e982b772e06e2a5292901f3a4879b7c32f46f1ba53a265c22d79ec07ffdd99be88c1fab04dee98bb199dde3d57e78915fccb40856f5f9bed41e8e3f4168bf6e391c4ae8e47fc4065448d9ec39e59543d09e09a40ae1d06594910980a304b23fa6a97c716dcc8c6f61c787fcf59816b294d5e7585f08a2d6d50851a0af9c93ee470831f4c67bb272acd5062c42026f2e6c9564503fcff6c461164a259d10f06a1d9ba61020da55691710a028ae845e18dc3e42ca8840069203bdc233c3000f522896b500348bd5a8733fc81d0fd069a4e6993e32cbaee671b1ca8c9aba794fc7d664c1a41611ca1b51c09c76f2d5b16d20bd00a401a08ea2e30ee8a7aa1e33e2596680296f1eac08822b09f9c4423c01882070f76cfcaabcb849b0b77a041ec531ea9f9c67106d48f708fc9e5c98b9238bd24668850da56a5705c72ad285efad44ba172e2372fce1818c466648b3963d1ed6e2889d87f7693446434a21ae702a9e1ccb93340274069c51022a6cdd4b5f400cca9a0ef53ef6bce4c1429833e2fdec33487d8c2b8024a6cbbcc15382fc21e9dc842d967a911d63ed5f908309b427cf71db6c3d3077e36b3589bda9d18e39a728907f4270e0b6de7da335df4935438b9be76f996d72ef2df796494a2903ad047204d104b4274a0011030f295c945010a3c44a1494db858b0daba916b88cc172c48f1a6c9f4d4a0c71c28dcaa850d90e71900c1f7206e61c63cc83ab0bafc5f7023189491b3346176bebcc31cc07639df1c6ac9d9934e53a634e62920787240f0e4717c7240f0e718875c658674c8776148d2eccda98b5493ceaacb3ce9673bd89d534494ae8cf67edfe528ee39df820378532086aadf507f8e2d79166ce2a6201dfd62b3ee642029b20feff9f089e73dad7d47df29da42b56009d3d1f80f3d63a7b6815e7a45abe9ba69bf6ffffffffff28c84cdce75f7eefcd53652dffff7f21d89cffffffff5f04dc5334e85469870c3a55aab1c05e1a59187492fc2f09189d4679b10344f760224d39ef25e5c12ebc16df0b1c3b8da2611774aa84a209162954b060078876e9153558c6651ed48b9de6a065adefc63bd541054e8a150ad60e10bdd36fa4687ca27b24d0d961e51d203a07c5aa53259c4e39a822ef00d161ff92d07447216fba76da396c1bb16685ee9483aeac22e71983ce9ec92baf7142d3a9924bcf741a453ba93acd018fd92688073be5e02bef00d15f0baf530ebac83c39d7ef3a95edcf049deb94832ff25662dd4ea37ca71c246fa468baa1d06a31a81968906b9c68ca339e342fd84818e40b3024d94362e1296ce4ab3fe89355e4d442817cc8275f75c3c674bb713789ef3a2edcb556ca061d72501a642b0a1458f2454751027b6fcf73fbe2a9e298a20ba7af4e5df419a407413c2888e3382620b8a259fbf78a8b707395561dfeb9575dcb3de73c0c9f885c2336e271d1420cf7578c1d2d1f499812264dd3344dd3344dd31c185ddfdfcec33c080edb9833c0d819ba74e972e2ca959fde9cb00bb3afca3d11b6396cec15468a70abb721be4b972e6f615f606f874e706363e7b4d34e164e4330f1ffcfbd12fb4364c173fe7cfaf6adb5b6b2aa803a77d8fb28d855325c77f1b780b155d1786bed73dd5bfb177bdfed381f1646922320ad059c701d8c2449922443d800d9e58d843d18490621bd4f939b9c4024f91ac7dd6433d94bf6d1565263439229903637a1053b89a67c2359e5c048f20264ce86912409fb416e1d1849fa20754e9cd849b1677cef7d64d7b069d846760576913dc336da44f690162ee648922e785e7fd13c5b861730b6901d64c7b061d8329f0d60242986dce007469262c81f8ee360a405faa971e1995c84fb5e1fcfbd17d788f5e671d1a207dc15a1001b33f6de7b772063e4555c23ce3adcac22dd4d8ccd663b2175858989d21bd3f2258bcd66fbe1c6264b12a92c5398bc952c4926b77d4e4a299d340b0ca00f59fbc075d87a8f83d4950e7b96bb4b70d92e6c0a68d94036c0f7dd3fb68fdd6317ed1650a8b259d82b041122082490d84418dbb60a3b858dc21e6a62052a284386892a945a2b29b096cb98259498924202098c31124950ee1363f1b87011de4baea0416cf2193c24df3b57c1203639778d586f1e172d865e316a9f576d478de9ffd3266b1bb70c2ea80805d898b1f7debb031923dfc1159b9cbb469c75b85926d43ec3c1f75e5811fb40a0cc27277d604674b5425156cc8b172f27f64f2c2716669c1ea8047062a4138d94d96a433014c626c7b41a06460312aaaa2e043442984ec38b172f230895007b4bbbb1a98941357761294e5a87acadab96a15de33806ffffa250ee3b77d7fc17e99c02b710ba723a3392d5a2be82a6656ca430357233b473c38a3b37caefa2908c1eea806bfdb93accff611d27d0554cd1348761d6170527a018a1cba73435747fbe53a3eb76e7c6ece9f63b68b3b54f6badb5ce5a6bcdcc8bd502a0cd52b5f9edb5d92185ca3d77ef870fa0df2a71ff7b33cb9661e778fd174b8e77619fbdccaa0f6e3aa1f964a76c0ded09b74d4597425466adbd5f7fba2cd4534a69aee34f30de91a6996e28fafffff9ffd3926be59f3de3d943bf4fd52dc1fe2c68d036b3ea48c791a6839f1fd65db6d29f1cc76be7c43247bfe20ba10f2408f0699ecf9f9642577c4da75ecc546c82d0e5f7faffbd1492ea25d49e6b2862bac024a47b2fed7a285d3a73e63c627786831ce43c62974f1cdba951633706164115d9ba960d1c74888816c98a92669308b56856755820ba04d5711b4e389eeccb825f8b0ed122fbeaf8bfa03b3e7b39a174088df033f68e47e0a9779cf4a9b5e0d43bcef38994068ab489f62a9609e874a98edd113d6333c6f172428da405027950c7411d4298eaf0b807b63677390eca7362c148afe3f7899afcb0b8edebeab04044377cbce3235820a21bbe10f6056186d3883b403e2362150899abc41d1fcfe2b4afdb759cb674ae4d3e1e547792e8ca33c7611f4433d671ee823cb78a78ecc394d6e196ae1bd025fbc2d8022159a04f1cbb95185d52a3ae9bf52e66645f1ddfb96180b8a48e89de71da548146a727bde354cb9458c7e996fa336b2c8ca07761ef66ad07148d75fceae8bef46eac6397a5e8920ed18e53a2fa5379774303141914da47c4045566a50251d22cc9caaca160c4d61c6073ce39c9916f6badb54e24781fbc1f4adda793297dd69c08e9d38952d77dd69c1c75ca0070ba4a4af6d7bd72c039753228270b4474437dc2964b07b9e5158a66819af027e2a04ab9475be111badc94833c54abadfed76f36929346d304d2d36aeb9657285ab75ebae595567f6aadf3b6b86a39d72aeb53afe20ee6d1edde7c24f9eca1f5d62d019290874adbad963a5acba7689fea68390e195d569b162ddd726e79b559208cb5de9b735c6d3a49467ecebe63451542907d7d0e987d7d08f589e47aaa728cf665778e3107b7afe7984f150eb085edcbca2a508e9351fd316259203da9409366b955b2dc2ed51f9a6eb965aa3fb33614a65b9a6dba3fdfe3df27eef8b82762fb9ae0dc3ca8e220edeb39286e8e97b01b289ef6555e8e398f188f18c8b5e8987e5b7508aadb59bf2d8ad4bf5552196feab7359dfab7bcd60e08de0eed8913b77640c03b361679c4c22334882d90deda5a6badb533cb2d926d66ca84cadd7b6fdc095c7a29672b5501529f4d65c0740cfa6c2a23d54b9af49c2b31071da7220925e8de71cc2bf7260cda53c5127c1e3da973fc551edc741166cf731b11e8520fd14bdab95be3a65f91aa0c4002eda5ee3c967ac971a1e9c4a35bcb678cfb01ee9dc8c376ca6f151a96b9bfd07c2a01afb67bfc5d2f179173ce39678fb5c3cd0a511c11721d5cfc769efd401e6a5c3b970b45085c5bc88fd624fe2dd7fd7d8e2b854c325fa268000328b080c4cd862289270146ba0c3b4d67882ef78ca271dfac156ddea05be28a5ae7ac75d649e909b4ce6460527bb94e8912cffbb26a66a68aa69c464563ea9a1bd555ba4bf5260c717028ce4d4883b3c259ad56e18dcd6a55a357ab15cd6a46b55aad3c164210a4b5daff7b39aeeb30f66e128dfbe443fa40306755a867cfa42da5999169347b66326d5d231a578807dfaf6cf64c968ac6aed13657a98e935b7a99e8bc4b57e9322d5da5d58aaee64d485bab1c9c9c9c9cf0c62627a746e7e4e4d0e4cca87272722ee89e56347045035755be8e93874648e3bfd6346446d6ebc75d321014d4e27134d595ef5299d901e4a46855c62cfdfaff35d6ff50cf5536e0dfefd2efd2f4f5bbf4fecff83fe325449af5faf7a8ff9f470b13b6279a44570e226141da42a5341212d21214921118121032569ad8c01bc7df84088e39f004dd7704ee823310a0168fa3a9ae7c97cacc0e20270537b9a10992cad28840e9b08991be5122fcd2a485112ce30ab14d56c510a697990c431d70b63c59e56c1d1b2698746097a0873b637e043b9973c2e147440a154852dc06ce44898915263326499cb381c4a2eab3c62406550ce233a5b0e2876b891413a22537d687e162c1c862c996705c8245e9d5628c9116de14cec8f321aca337e566099e9c2fa097d490cb2c31d2e1d29391c02c11b28f6c47b7232b5a8ac23a9ea048ca7c44eb95e7670a7b80914128473684611d8f841c1d357d503525656a4740faf837030dbcc7616dd123adc473ae377971c7093c47583ba9cdbdab1599f5592bf2e445054ed0257ad69cacf432db7b83c83a297dd6820cf51227f5dc27d8672dc84c3643939111941170354567a3314e8866507dce6c7dd6664abddc7dce38d06bfaaccdace05a0d37258628aa25a9ddbf499efcd0cbef498c30c96897e99c407af9ad3e93b0d0b1f795a1ffff1d4662cb378ee3b8f93404f53eef43d2670d09961a12da9c25ae2199d590d4509b95a921215243020404c1acaacd50a0972c3d2559a297b8c73093dc7a896d12a81ece257a10d5863421551b72b381880bd9d6cb5d1be2645390541b42ab0d11521b7254a63604c8969a0c61acd464d042cb31839191d10c4a523529466a306881e1060318a6a22a039131569ba082360b72e0efdf2c3f6060879a121c9ed4941cd59414a9cd005553e2424d49d1a4d668294913b6ab413527a57566a5506a6b47865e5aec0c4f48b72323224b44bef4592382d49ffaac1131224244fffaac1169e2514a5272a2b2a79a4c863e6b32207dc78a9ca67b3d8317ca8441c2a1005194a1284252fcb87dfc6b915082eedfecb11c5318765fd197ebb8e7b8ca7b0caaf8f77ddfc7552d089cd03f3e836a0b02b47f7c5a1e96ab35eedd346962309fb57ae2ac63adae3acebf3306c82777750dd54151ad28c6ea119b7c246141362cd0c7f2748d244c4610e5d3a6799969e64c084f81267d7d7c72d0f3389f3f204803a4e11d40d5bdd6f7e9ea94f3f9a3e2f89b113d1a9e4b458366d50ddb5fe561af45838405d411734c8316127548e98fce9ecabd89710c382ce1b0a5e583c9729026fba043ca095da34eb90d437d8dbab562259302891ab5b3acb8f39cf6dbadb52fce1fecacfffcbef7dfaadfb52dcb591c57ac424859a1ebb6aea0735819f11887a15e42edb407b5f7d61c7221d7d2974381e32c0a4df4392a560e773a3d1177d4de21549834e5f39bd5b1fe9859da2792f88b3b3702768a5cc5b559404c83a6fcd63bd481395598735a5b6b9ddcd65ae7ac5bc06a6d9d3db7fe5faed65a6b0fd0c6cb6bfcc08cafd76bfc4630be5eaff133627cbdb8cba3baffffcecbffff7f8b1cddf2af5f13be0e63cf23628b117c6f87efa519e8bada755baead7626f4e7373e30e7231b17afeb5cbffd3bb6dddba27def8dbb6bc2873707ddc8f1c59ee701f056a0e31dd7f1a0da4d5acbbbfe7030c78d7f6014775c8739d8306ee422cdf9c81dfad61dea9ff4502a4f7adba5e860c59caae8b7a37509d8008d63b9fbaccdf1cc7ba38b27e4faf57ba38b270c63bc37ba78429bcb3dbee963900d1c160887b72f185f1e6f4183660c6b671c7ffe5adbe39e176a990c1977678caf3f563f1d47ce72795ef63cacedcbe3e158436a19b0208f87630da965c0823c1e8e35a496010bf27838d6905a062cc8f33c0fbfe771ec43c2fe7d4898d65a6badf5ff10d96d1e3d0fe7f736d7ff38db9e198345f7b8372388a57fe4217946f25fe7c90f8afe7fa2cf18e1fe1ceafd015881400038fd31fed800fe2bd057b086b6e08ff65565acead21e67b95e87fb73a8f7eca1372a01fe1f865969382bbd99e6dc671dadedc1d27021d7f22177d530d88c31b25899b309a2ed39dab02ffd242b65f43026032f47fae4ea83cb460170c07e2a8d1bc999975353114f408a8a748b0a65ab51f566c4c8c8c6c5501df3a3e8091252488dac9219d36863f650eead72129539923eb019c32e71f4e6a3a1c2d4b1deab73e3a940f5a8ce58556667cc181de71e56842e793aadbc6bcd202a83015d62dbb916b5d5b1566ba95824bb549fb63ced701775a25a5cd469e42dbdc14e8995cd6856689ffd31c616d924a5245594ed363b9ae95d446eb240dca3c1544685f88cb0d9e31ad35bb1c9c3ba010d2d6d591d427942e9cfeb204efe5ad587ca6b526b8e9457ae73226f85b08002d491e2983d94cc216f0b0708addfa946e18930058a16e6d8b5e282fc379905a252b5a4379d0bd4c8b983af9c41ecb58872dde0e33a3ce819362606146cc1bcaec38472b0c5061e7041522c756caa230cf045c63306ee8161a71dbf492331609181053b2230c655815cf5455d21f659419630c2bc911be83cf9510194020680cc8a017270c20122c8d0d902c8382736f94e0774893b5805d191672cc7b167571d2baf238f0d000469640cd6c89347c0567b030266ccfbc09d0fe8728e69b5b07d157990a76c0704bae41bb4c1d1db98a73a3c681ade7802d80f32ae40f4566f3b4fbac45d830c3020b98a142860bce8e171d1e2355ec0c202d70a50fc38d79b7ce28e13629ea565004454545454545454d4d4d4d4d454545454545454d4140f51515151514753535353535353525252475151515151513629292929292929cbc3d4d4d4d4d454f5003879b75959a5dde84c4a4f5a6bf591e4e9fb3a046813b367064e9026d79f7cefbdf7de7befbdf7decbedd79fd733869e3df47babb2f199daeb65ee13670fe53495f698f9a81d2933553b22a676e4cb076a479c6a478450aa1db1523b9274a326f822438ab89055458a7a581404ea91e6ec09f2439d5130297cd21616c4b75959a5dde8ac0a08d2cc596b0527396b257d709f78461098a78a66864667cdb2b9a935ebd9a463a44bb2e4ab306772978e912ef1d409986da8b42d1be990d968000200e316000020100a068442499424499cabf10114001055883c62583095c843a14818c6611045311003310c035088310819c59872aab200b3d97cc8c5e0dbacb43dc9636562aa728f32c3c4a12ea22b2b4432591a1b6c80a4f08221f6f28c3b202c57a40b93656cce92dd15bc7e1fc1a04424ff57573e030483e87be771f5b5f8022eb3826d9b627d4d9dc04a01388351365d50932abca6215a250a9c48cd3e8482faea22a54419bf3f689a4f4f2795c0d54936cf719346a7a42b55851e8753a73d0efa791fccd97a92a4d36a024ed08ac4c62890077160a0e14a2cc94ab67f5ec15bf96114a4c910a4fab4ddbc2272cf9bdb4a429b3830a48807f08b4f69faee0592773a2b780c367402b0b6d83f222c99445e87dfaa680c771e4ebc67e324b8d091e4c40d602696ec9ece919a944c793bc40cbe4d19fcbf9f1cc72158c4876d1a5b2323dd10e72618b3f1c013268d2a976fc8e3230d394c825218054c6d164b2ea1e54c5659a03dc87136326436c21a405b41732558cb120bf7b01a78107928d0451e6b4296410a41d8758eb93199bcb222ba916cd5360031091cac6341b87950cfda51d4c6551d6e210e61d0aecec6be4111b458ccb9a3ff17ac06390f97b8cf616f0ba88fb3827cbbf603ae216f8571b2aadc826d100151642e13310a23a4cfe760489442ba2c6f0a7f0176f247762b50d94262b9c0ae0600d474fb8eff69ce0aa34fce8173ba455e3087220412e61cacd2a143175fc05761e2a04fa8d179b53212de3f9a7f0664ebe1b692ddf00b98a9bd67d0066d2509a9e50c8ef244e2bf7592dfd7d1e534cb8c9f8cf2bc48bf3f9f984502d5c14a32d53817039d32fdc93079a7754f7974844ba15aa0c627ee4063a5c8ea2c4a1cf7f78eafc29174ee26f7db5812ce024d02ccc138b417fcf98a9d34eabfa42654a9b1f7d98a400409d29d531c3c3bc5c18495afceb2e329ee33ebb98c6c613977fa5c13c429bdf049154a23e6bbc6e0de285f3d57d95386b24d792243bae674309e7030c1c8a0a19535dc1b1d2460e184a2a521c5c9c7e0c262cfa1f62cd9307f5030ed81b47e5cff3cd9cef8445f0c4cb57924dc0185f1a37d2c6bdda1cfdef382fe48cb56a8a17cfbd5885a7a5bbdea970cc8bcf448902996612dacd3c49a3c27d6fa3928d6c294dcd7c18545e94bd27a0850f02f1f9e0b69c83caa22f2bfe518d1f4cf9bf0fd7a6aa0b5fa854221c9ca805c88b226a6331971699b07e568633cadafca9cf9c255a9999f9e486556782b95f82465b6b2bbf785468a0a52f8e9d15f2729bb43e0f18c77a0acab42bb0bb6beaa8cc01658334dbbed204553e6bb0ddefb773462f986fde80dcdd12c41866e716e4f5b4d0df3db13ff2d992145a8d6020f9b06f7018027180d8fd96f21c71669727421b34480aa4d009094b6c226abc852554022ce207804bdd4dc24beed326c3bd27c3402105d8dd3c11307ab6babee7120fbe9fa18d26ab773822e5e4b84d60c10fef9fa8b97d25d2fc0da6ae8c4a3b625d7229eb5adccad4be905c405b128441f498e1f0af4ef3ce7bac7c23406cfaa509c4588f32ff4189862f15a158869c4f2ce95a711431c9ead2a6002b9b6958bc218d4e18eb3e7e0c8236164b8b375ca6d7d3927ca084c946bf2d211f6d503f0a971b8a897b04118dffa9d57ded6c758e728e41ece63de1c2426a0bdbf07b9c6e098db0a7ba4108c72bdfea89e9b5092c8dc3a1431df4a3ecb56733555cdc696bbc02b54322db390b8a3cd8a6f36d9fa2dded79d18a75b13cb26b70256cc070462a86d7e2ad2db0932d6e4156e7d9e41c38b063959dad183ee5a7fef5b58008fbb6a80921d62b8c9e93f27c32657744e134a82ade2a26d6ac3108aae320357bc686201b772c7e21a5745e2317aea8286028e1cb995b79d25985b7b93c49fe770e180c591d18cd755fbc219ccd8f94db00428b974bbf59fe951e259ba4aa7a752af07d727d17622c171236469fc35bd93344bb3fae1d39fe13655a3c9d12107cd0b0dcd93e8d2b7cad9ca0e5d91557c74e5c7132b0a2763dead50c254dc3cb5253dbaae3d9a51a726acdbcd04c4efe18e226f780fd042bcc121448a89a62a5847987565657653ebecaa61857d68225e49d5c60d43608108ec05eb72e9bce9cdddaea93b10b5cf86af12788fd5940650097b7fa676bd01fd3c1d7c07f97918d95779ac3e6a63308eb3a9f302b52b65551258e9b5405f71f179d5699bb4114501894387ad03e3444a9b5f9b244c592163af4605eee3a682c56f30586daf1a986455c57ceb21b861a2030baa0ca70a8b246b325b7dcc4af284bcf9b55cdd1ec7c29fd5b803a835f8f5b1c8e1fad0e72318fc9acc0a4840e6b0b11c0e3e0eeefa0e6392cf23a3b1222874072a3a4c5d7b85d8636e74ceaf2c37000c2be61fd7ab46f6ca30bff895e94a22298e8866eaa2c72ea118d73db289886d4b854a1edc1247192c7c31767b5d1126c34d75e1dd0be5ed64791bbfb2fec9fa45a34aa1e782d46afe35c93e2d699d7ad8e7d0da17b4023fa6067c7ede387f493a6f3032088859c22981914eb2de95648556c9820fecd89993c8427eb365d3d825fc2c1752a36691b28c78cc22e62ab5e5c68c029ee115939176d25be7a93895d65f3254212b32d0f62d2e60ff074fbaabd6cf3c3eb25e1c67c13607616a166d535f61fb68123952bc653260fdcb605384e885c480da12a186db3f6bf2c06cba15dbe60da3f3e571e4e8efe4bfb2227dcd38835bdac8b3a21381951c16fa665e999e46323b03949e05d45892c6b5e23b61a3584fa11f15faf623e4817a2cbac73af8b7ed45b01d2e236da58b3d9b4ceb60ca7a6bae5b743c53f844d9b0c0f1bd884bab2e6e373fa62351628ea7491fe307256375281c02e22299108ff5a347cf997d0ad73f4aeda61b235a768edee0ac0290deb4dbe7b0688d9e320a706d5c1bda17d6fe21ab3cd80c2d472f11063c44c7129ba1b5f9421a53153e1d398bb400dda16fe474690bcbb3d24079aca0a68b013b5e84a096532deec3b97eeba31debe72f700c795028415c35c3b54e1bd66dfcf2432f85d6c3a4345f786015d493645181671bdf92bcfe697f1f9570c8d29ee34426885f2eba20b1e8d6b08b68751817ece583673a91862154669af97e7c2b8ed25206def7e0b57096ccc07dc8df8aac2309948d489e7a2853590ad9ef82e54edea642b0fedea86f668e4b12def7ae94c2165712636896b6a1d2ed39a5184a590c942af1ab25c9daa503a6fca32add4fcdfa21a4c9720ec8310f1ddadb422a1ff0677c69c0ce907b3a8e192bd5de2b21a1e8587d7669bf00e20bee2d61c6ab028e76a9584571a3dc4ab6e34b74e0163e51bcd53306a3d1c601959252c13a953f04a493722d770e61f48b85d3e2444153afa2f308fa4a0c7876c840c34ea963c1554210c0aad3ea8fbdae220301fa8bd4455dbd732e6368e5b80ce975eb5d9dcd351b636f54d34b50b9ce586eacead30e3bda4428afdb5d70e61d6731d9b501839ba352553bf511f4d322c62a71c121c22940389a93ccaf869db855878d06456e385442f8d15f6eee539c9044fb508b499ecae102d45f7a74c718b3b4306a8664f637e4d792ddf8f77e5e8dc6d9748d49d35d9a79d70f0c8d16131a773f831394332b8febf033c28c51d2257f3c24ea5cdeb554ec0282f966e6407704e3939a8cd8c08c86c4d1380653f3c562016442029fd84adebf86a9346531b81378b72e9b4f33c59d112d77295dee814a3ae2ba456b4debf57b44768a8f9d909c4c090ac58edc4f1bde79644cf235aaf0e4e83e50bcff5038ff4862784cdb2961cecafc628bb9c85db05a3d4268ec8ab7575842147a47a0d14257eb69f30167bab4e00102494ff337aff08885bfb081b25ea414670fc59dd584dc2d64b62e4bca6e696cae76b79cfb4931d26d96f7e00ed65fdf8fc65bf72ee4d3a4be1d3815b4a6595892077a31cfa4f0a4a69c33417153fa170c957ff341b3776134745550cdd25d918aeeb7b7ba50a2bb58f6a3e55846f3a0461195009203405fa8bc1d06063e63b57f8d5edb9c7226729b5d6e69012a6d887c76afb7d148265a1934d0606193fb9b9207e74d94c1ffa0fac2bcc83e9e4aa5539ea6cc3d0abf5e4dd8498e725ba20c1189200b2114f8946a042327b6faf236e29054d33953fe782ec85b5dce76d297f84b64dc0d0246e8d0334679104c4a57155471b59ae94e3a54230245ee0433ed6bfa14c9ebc4ee8c6976c924b115779237eac8530443c7ce9538c4ed8f720059d1c0980edbf73f1aea512a425bf941cd57991975a535bb2e08a2b05979c03b5864a8a7adb36ffa0432f26d4abf1d3d5243e5cc5b74be69157f07b6a7ea3ebe584abc0607ba359eeb0ac2bc7dc20f7c0e4937be066c7421b4cae53e32f228fbf84d561c45fdc8133302a7cc9320386c96f80a8de158e8aecd4f7fad991454f976c9b2d01cea9778cb22f8f445c24ff17d71fadee83ae690526f0f11d093ffa3a2b05ea25022792fc1783a8bde69067b0e23d4115bc11f77040c368d05f5c99c6ef760eb06f8e87f2487ae883b1aa2f8b095442cfa2dea94e35c9453cc019aa5f228cfb928ec2e8f163d8a391e752981263a4e2d4c60d6371517f46bb1e4df5dbae351d8e532f42f7a14e67cd4520099fcc16b04d930bff1769038ca3b40b3514834c7a28df20e589a5c53805ce9f41ba5bcf07915bb84834af6d0e7ef94fc6ce98e8b1e05340b3973b1d0af2dbfe3d1a3846d8e8fc663583a98e952b6019cc2763e6a8694eddce458a008b99669d8ba9d565063a8c24d51b28dbc6e6a3a34936ea1785267ad0a3022cff30cebcedbb97d950dacefee44864b023d5697fcff3dfcebfcbc7dd97711509e91d81247d8ec51e1d908a1ebb18018665b1d313ecb86df9266ff0631ad5155ccd039c0fed2661d2049d0157b26352db4c782feff84e2e478256250f9a469ef3d7aa3f0ade0f7f33b3fd6e76e81a75f3c268bb0aa606919b9ea979755f9712a03617302dc28f70fc6e1b41a60b629b56c2611fd7eb3163c4db5f9381e84747221c559d8e40c4d0565b220e38df75e91c8726cbbb109888cca83bfd9bc68e1dc40509c6b458d583ff1a7f9453896df0132e2d8e8f689b6daac582dd472d41cae320a979a390f7cb27a00c771a99919476ef9b7f4c1ac6ea7d7a37c67ed35dc5afbf957ccecb19a8de8af84f2ec4fc400a9ccc8b39559b49ab2e145ea3d631947983b0a79c9eabe3abecf070708d4de2d7419b822dea1fd268d4d57637b3ecad780562e014bb94837e225a19fb6dcab887f00c5e9570e430903ee8d6c85a1b9fe1f23f853cda11d738fb3c4ea97f7e138982eadcbe0275a983d38c9c5ff1876839b2c50e468d292dc2f86585891cc2900fa00a7321fa5d227a2c3c2185428bb684b8ea258cfcd4f44c3efc79155d40c9b9b18f264cecc6ae6504a15d70f6a3f40817325a57ecc68b95a5e0dc0101411f10ee76ca7bb2afd36633ec8b283e0c954143e76d308ba6afb0c8d5812a06053b70dbf1f6fdcfbdd3a50d21e21a8f30421d8ce630ef82cd00ab727da1a93e9bf0a9e86796421e7c563851218bb291264b0a1d93809177008fed9995eb4f7fff4cc64a2d214cac73ea99822ac440b2a8c55446a64ef84143390a720af22da4e99a5fffa7e9de4fc4d95524d9e47817c8049b2ce452c426c4554bb7ad6a849fd142959e2700b854e64df0a051e43dd1511e9341b2f33b076f2f49e0e7c91088da992e4ac118e22ad4ad167f133e81687453478912c4a37ed59d299b818cb37dbc19286394038a37c9a58bb6c601fb1e31d061dd8137651804847bbced7d170b09045250378619c9432321861613bc484c5b51c9115a4ccfc2f9f7507f0e600678282204f1688892778d7326c3b3503d353c0d065e316b47c6dd555570d1e9016cac57be6880353de4fd3e9a1d8e08456aa8c0e4855c156d8308a3ec5b0812a5d720ec778f590b174c049ab8d71452e7f32f5d174d34181c6faf850b7fc172c29c1de3b8eddf86c86003f4f71196fa7f9d586c2b676d2c4cb094cd55373c665709bdf14348084bd56fd5ab52d1d9a3d577a11ba51ca68f403a92fa7b148055a0427f480eb598cf11b0a5d43de0890f8ffc0d4c638cad0c5275cc8dd7ecdf6449dbe22a0a99790ff229d268e1346efa6a1feaeac96db5e56fdf037ec4fca6f1c9d05e17dd082b44fbafb960b311ec1bb2a8e48c873cde8cb0c31125ae0e8c9ad438362387855f94b89f8f42cd985cfc99252d2dc3b5baaf8065eaa4b933bc94d6b0b7b5cf5402f26ef39483933f4796c40db4a5116da6f46a61568c3f44640ee06ef87f602702b60b751a0019180cd0a386756e78611f61b2e66186c86006357f2da2565034838023447879283c9f0db3796a02ca3343b4edc11242655d0ee2b171175b2345c6e0fc3004beb5022bb58b9aaffde1190c4d5f3ad03bb11315aaaaa7a5663797796dad8f7fd63d1f20f6299b48a458cde37735a6ae8a5d81bebbc53ba4c56aa58e18961ac3da588788d77edf618c44841c595d210ae526269ef3be1a55e8d96ab3e041cc9b6604b0e81988b0f4250ad3ac4187e4f662a8e3833554724934a478c69d52586d9516658294d86db3b5c8f160d19af2c40ceb2d79e209c2c31fd3e4caa3dd1665c59f6759fd9fbd1a30fabceef1de0c82cfbb8856dc808359fc1a5a705763283f33109ce7b6363bb2dc8b2ecfbf0020b451c3d1515cb83e264ac905c897ff999869313328788f9c190899474ca991c66e13d9fee74f863a7f65abde0bca0295c1badf759a0ee092ad0f2d8ba740da0dd5010c507caba2dac9cde510f3db55795437139d64a1e6e9634b0e4823cded8f04dfbe8d3106ea00a1d79eb9acc7c4fef7bb35788b48c92c40461ea859bbc529454aa10e212355a74c518eeb95838cf25c2f5c079dc4095c0aaba95c100559eefabf70e926b624f2c6ae32cd1cec19f2aa9ea8bdbaf3517de849985bd615c126392dbebc59e88a029402fd72d7e75e3635945e07f63b8ba3ee9ba206601e70c874335cb3d6c0d4801d9cfd17b5065815bcac43c930e29c21fbb5ded477a0b6476b72c071ecd34f0ddab872b98e212c9cd7270fa4f092a02b642b451bb55eb0d31431a53836761ece48476529b2899b5752504b067f345c5868e8cca1cc7fde4140dcd7bc748540010566ee191e16049d3ba9e43d50d8385165945997fa0e7cad15c1c0989011e844e670481d98f2bbea38ee92e77177be691322087ae44814a4d3c27b8b8973c40724d08039bd21afb55ad4e6acb83aba044f005566e11a2560281d16acacaf5ea22c3d2e0b86e1660553a48f1c29f266201bbe62d566526b2153dd0986354804e1dd4ef620be84bc9889f91c09790ca75043d444913b4bf7fbb2c0527bf2fd2da8c08596afd1d8d1ea5fa82c645f63904d6b106ecd7d197b7efc2d9bf179651b7b5fe745402d05e13772cbcf321910fe56417a98bd2ab61bccae789cad3f7f3e0c8e6aa92461a28261d05ec1d186f5e4b3a40521fcee845f40580284e2ef23a3fec44587e0ca7e98fde0de7e153d99cabb62ef8502be5be64cd95eee8cda25eefde07fd0a85b3ae74d762db7c50717665b0c6f31b5121865e5ae015d83ff483abe97938ab1f540d27704a0ead46d63549e889bac50e71763a8aa20525000c7f8accc74110bd77d4f7a1cd0bca74263d0e225421549204d13d81dc563dd1d564a323f51e7bae57d85571b51539a709799244fc3597e92abd6288d0c8268a4e2edd794f78a0e88dacaafcfde208920c03657bd6588ef7477fe0fe24552b49fb7c4c41a0e19a4d406f8a86f75ada654d17e08532941f24385f3547c534047122e1706b6636b84bbb1a5c1ba072da04fd51e72c9bcbb9e25e11c3c6399e48a388016a7244e71e6816491e805a04ca78894c25bc19800aef05664e2094f8202af1bfb64c6306fe7aba784d64c74438f38ca51a5e9b6468a4a9855b2656e3caf8b229fdda28d5eaaac66a40232610af8ed1b1f0653b26cc888f3a02690c5417276d432a749bf38e02934a82d90feeb5122b104a428db464daac41a281375e5fcf21cda51f04c80accf4a79359629c9881ffc855ac9db1c5af45d11a897dda2c5e05b5c13ef275eed4b5fe79a73afa3e59b54f11fe9409e169b42062078fb640ff6ae42ad8dad8f86f8976290b2af641c9dc5db32519800719eecf5a34dec3f779d29dba01ccc2ca8018758a1605a27db613c2668b2dc8a71fdeb2b74a7afbf1312d5d251ea28ae2375a9528033afceff5862932a235d2f8b5fd277dd6d584ffbac85d55f0ab65365e1097deade81a512c5a23b10bf358720b42e6703486b8f8c7eb86c765bff0ef6f93b1ca4f3e1c2c008bcb2dce25edaaf01ff7cbe310f7ad098261280c52657a853a3b5a5fb8ab116ed808d3ffafc33e60b01decd349656e5450d59a18f24ce895769efff43edb04137e8fc85b7f49e8362d4502d03ecb7f7f1fa43957fd4034c5c0de17d3e586a5230b17fa668c7dec40ad3085362c5d1714fb84bd2df0452f1eee55e70b7032c918b3a5fe871ac9629e77e91ce7880831d1d2c1839c45b90b4d4c74cbedfa37b312cf2e7432f54e286351e455f85df944ad5795853ad5d9545836a43f29704c30ccd37435cacce0a751dd7e962a04450a8073c1f48f3e29ad818507174eccf3227e9c6889734929ee2611322e444a51547fb4333518bfec71194bb8b3b7f365eb2c0b641e872494e51eb5f020e3f1a9ce46c4141c89480a80b2ecb080e8f3849e113ed9fe31666e31a45ca19228591d01b9dd442f5dcdb41eac65cfeac797a23919dd2095cd368bb642499ebd0daa17aeceb40c064b2a69e32f9bb8d977ce7f2168427d1d95c4bd16fafd944064bbb789967ea85856d375d4717ec8456347241f79d2e8f3cafde6121417257c6b9ff1627cc7f8f0b9a6312b7b7af0b214be36ac1654e1b6a67b57f67d2342640e638c7d9eefce514d8ac41df41f3041cf452d69fce426a249e4a50c50fff42b46600519b4440fb3ffbd6a6145e4bb3b4a4028318eb5cdcbebb3b502a6dbe8fdf822845e24f6221186e60d754e6137a66e532bf7cf98ed2c094f8a8b8540d0b6e7c7c0bf5751c89aa1eb94e1e611b257176414b250147c66ec4ef95307030e5f94ea76ab21103594e4b3bb85f5563530c5c327ddd2d54527cb501d33a6105d8e12e8b23efa03dcbd2223d7280f934466c7857577a8124e6ba2ff6cd224bcdbcf76d16163ab866e30b03132a645d63030032317b261f2eb9298b6a6322013745293008d8a2c369846ee5827d1f110145ce47c88876162bea21d3e6bc40c36f1411976cbb38590ed1460661eed17fbcdc0f878da91558d5644b5b27c0ac6ed997753d948e7e742d6161581e67ec28c570414c91cccdccb8de0f4430872405ea045d03c1b55da55c0b76d21451f71881a6a55ba086ca1081b50be8bdb9808e21c5150e4ff334e60f11e8f685f924b035554ced26690f5e379c6e17a171152fc0721e7ad14ed49b623f5678dbb23b4f4bff2eeb6d6772036a13596f5004c20db0761b05e31ef5f1a33a2fd59df16562541cf061ce1fe26b42081fb3179e167d405687834c0dda1efea5b062510e39b6c145e65be3dff27a83521353fe107f5fde06ccc1b5ed383742fc4532815c6c1ccf918632de661544adb00dce0610bbb2033656bde34c9da0c559d9816e903f0ba60afc65477612b52aabaa4eab115315f2f7a542b22570e31339a00e42d582308f573c5b0056eb7d6240619b9dd8edd84fdc254a92b2b0c476be18a0a25c9a30bc5483a3df8e42935e8ffd0c9ccee754ce4445c9f48135b7d47b5772cac95c2422675573ab77dec2e26a7b677b20b6b5e4e428472971e550dec71b45b9604ab3094e70df3e61a23828d27f48a881789319607ba9657afe9ff468eb40ce55b8734f5191c6b9b6df136055acdf48dae9058ccda9266dc7a386b2e2742f1edba268e5c3bfa530713fbf70891d610110068a7c48c8e6725a37074e644d43178943a7ca0e019f1a122a0e7ae01cd5896681b0fb89d2c484be4ef8018a62ebe72a69717679a4d0b341ae8d5488d2069d7c1a828d527422f3032e259a67eefe808048bf0f9e3d3cdf117743076bd5b1be5391477056b6c7ca32f12e9776a108cf17b5e1368d28946b51ca74b009c81fe853a84e7b6bacffc5b90f5659d4d5e93bddcd3e52ad52ed6d7d6043260d5dd61e41bf7e498bf8c391b5d446ba7aed5969302e7264c5214fbf2e79ff4d59301ed27c0b08432cbd34266c4ec99c70e693dd3968084312633f8d469da5e084c8a92ece38367c852556f74362fd53713da3e38609c00f10286fadb316075d2eccacc9869fad2bb9fb473cd7c801ece74b58c0813eede7d91110bce57fb9e5859e62e993cc53e992fd5b322a2a3ebdafa7b508a3b7aabcb3dfd6ee4e58c4aa9e912933c895988413e7ba4e3e7efe794650c34319cad9c1598bf3a1fb49a6422f880bad365ebef313b8c5d2fbe3d1dbf834a25fa8045015811f6685d81b786d196a3188d681498e5f23396e84112cb7fb59daf1752b9cc40bcd4578256d93e0b30b93a290bb99f974e852735f5e6fd74700fd048fbfe891d43a4bfe2e4410bea55273330666e1cc563949787e5bb2b16a3d395ee4a154679dd73c2204cf76e16ab5241b0f3e62222e93bcc1dd6b9a1ef503418a9aa33ce337867ece1ad1409510f4285be9310b0baae3276408163c31d3bafc83d13e97483548a3a528e4dd8183338f83918043b439a33319e801452c923b7950b361bb3fc4c8ca6a96a6abf9b130e7f49a3d0055ca613d9d94f5154fa6103197e63bae44c8cb09a662f0c0bc2446fa285e5183dcec1adda8113a9b4dd627dfa64b38b2d3213f8f50fae73665a1bd61f4f274824a8ac939efdebaaa3c3ef3898148b1767fcd5c8ad7264fd5f701564e158c8d2e8f79a6ca0686146c87f3ba3e9d38bb3a59a72dc5165650d062098481d79ba67cfafe5dade24fed42bea4fcab445c8566aaa1344e6ba84c75be6178f9997735522c60d7cc9c799aca8eace14bf5b39d8c437888c4b4a1046177c213b70b661567c752fafde338020cbe530d9060209bb2db8de5cfb01a1085e1eb3bf2f4b71927e89588974c309a1bc1deb9adce541b96c432d874ba15699c12a81c2f56c8c99f494f1b2f00a6ff130a3d99a43abae87ed87b8aeb08fc73726233e66b97f1fa56c43eaa23d26ff11364155f2b0079c0cd6ba9d6101d20481f5be2fa92615f991ac7f21221a81d2f42579af20c07b1fcf2a1bedf857e12279e5008a5d0b441bda65457ed3c54eaf480bb01f88f26795737028df5452807eb28a5eb7977dca8632cc9887a0392062210af155d7e27a54a50c3b1e5e511ca4e48c4aec41c071e3b68aacd998fc0a67de1527c4189a3135234288bb0853ff8e5b805ce301395411e6a39e6f1d7d7e9fceffe3841aa9184baf23393f780a10afb2e130aa5ba0fa8dfa62320bd6634672fde982b3e630bf8739d6a4ed0ce6c5ce747e266652809d06fa4e33f60f82414e459affb2e0e3a86753e55d7a054e9a5b06b4543861f5fad2ecf3a93043cecdeda8f137f9ab56dce963c2f1e843b4468dd0915bacb530400509a033fc344439c73f1af05cb4a6b6de8b5595e90569d441af09d7c113c316e1886110917500fc121a34a253c7a9e77d2c70bf9737d3590be86f0ab6cc0076b279c7eedcc08170b30d3cd25cd24f25df449ca581fb0cd6c08c31e34fc344dd6ec281abb3a7a367b78464eebc969eb4cc6267b129bd72dd2af879ea1e8111ce8738e57cbafc0b506ad188f4133f4e2ca09165bade63a5045ce11b06738ee6c6c6fc6abd31010e788a56c87509cacce57bd75a34610813f9c8fc23886b13500033418e03b261f370bb26c6f26a95595b0df6abb9669a100aa376d267bbfb6724ae89b7efad19020022cc7583498998de3b3586b5e9a1a86b438c4175fb668fb3c3880d406c02aab81c8a71235dd025ec15b22ba8c1af97e9a69adc9128699c531b316b904a6d1d46514ceff77ef87a5bc0c3bd2b267868bd3ff3500912ffb911efa8f9b7b8f9ca0b2eb370b31546f433e7262e9e307dfc42a73287d9ae3aa463aae40cfc88a85890c95ac57b0f35bc0d89b6a72027841fa4e1fd56e11ef4d5fb2bd4f376f0ff3caeb94c32e933f0a4edfeaa5feae8d53cf6bb82cf360f9738aae4554bc9f1044ed2c70111564b351f03fff6cbbee73fa416a97eef5a9b4cfe0778281a28fabdecf18aef13b82524bcc9d97c5c9b7db9bd8f9b5657f3f81daba60dd69a63d7316def1c14044ea1c22f9b2952c81b8da8bd1a0a012104053c636441081991cfa6d53f23184027d674abaec0b08ce2f64cc519952f18a9aeee541fa0e3ae8e84fa077b83ed7560f3891fb16c5b1af785764f29f7882bef74dde0c5e7e221c941a8982d4e271525a07ff9c96d81227c8c58f5711b1f43cab1c74c6d98546787efc740d8eea375fa670e2595044b1d2400b7c0c23a0994640519238ca128427b936289459efd6f5c0e3a37968354f7789743c3f5fd76db59b8b4ceda16acf274b46ef2e6608d511c8e3492123cbb7a9d18cefd77b8c16529714a22f8c77ad6bb4911e0be4397d3a79706f745c2035871f263e52a86ff3df5eae2e397955bdd767615db4bbc4faca8b8362b04b519f46626ceebf6a814ef3f8baf229fae880c3c70738ecd1fbc4f4acc7b7603675573cc81e4312b913978a3bcc49d3de4deb1d32e396dde80e0cb28b37093163011a856c5a24becc8bd952539b6566e7767c9081ec3b0a536a5a94b546074873904fb85f6de3b302253445abf7ff1c35320f104a81c3c68c96ec1e038a96d469b339fcafed506f9e2f80cf95db418b3640ac7919f62243b59c31682a41275590eb9effa4391279e68381b3ae49110c89a0eaf57a29d920bc36b71fa95b3335f2c31b7553182965ba427abf03c0aeb8c40b81366989d4b5852b61988ad3421f04d29cc443a6fef6acbc11629f9fed653df113db73d462bb4efb5b6860b577c9d3be318f0d17fb855859eb9ce88068e8422ad1aa00999d104e2e9f8ccb0101f04065de73adb6786e5a7675d93255541d8db92117036c88878366628761dbdd0dfaf9ee8cbd16e022144b2b094d4e075e2f38f07261042d4a83835e79cecacd60e47d1037ed33703a8e79fccb804028f733c31698435e8c1274e58c788ebe87995440f634a8c879df207cd51644a9a5154ddba29e9a4764597cdefba8d1d74b3c417eb7428e73aab9c734fe97715937ceedd13afca2c10a23934d1f4df09a2c28485cb794f07b876ba8b67da92b1896889c2d338636528a23016d3c8c29327bd8dcb6637ae3917e5460bd1c3774f0ac8e2d22755af2772fd9f25c7bf2ae148b1b3c3492ebe4366366dee346ac36c3a3f1ea3d285377e7c2784eee7e4585003a57941cf91b7dabe517ce56890b491e08f3e78a667751e1317dfb6181430fe27905c414a08bd1979a838389583b555c9d2dd81de7f4392b197647d348dbc5760326dfc3aa3ec9f3daca6fdea390108b33a54ebbfcc45838d57ea159d035ab9c1768bf4c8bc019355f28e42efe0384e8d92fbf05092672d617e7cdb6b95f70e85a05d9f6c8beee4955edcc9fbbf5226ef4c201f92433534f87cd73900ca992b26de5ceea6a4152eb0d1bc673b65cc8246a31c6cc06fdee7a6a4e6a409b01a2a3a286e086bed612c4a7aac43cd229d0ea8544dc860b46e812bcca45b1807d721104eeb63258987d7f665bd75815caf7158350c8b2f56542996281dafebb0c5b0429acf5ad200a1c84e468d7c82167d87188e06d8b67dccc7d790809b0d4ef6ee89c5ea0c05f249a8011b91d91ee2680a25b732a0a6fcc08b8a113d85d8a337c8a2737ade05f6384281789db727db05419c6055d0d876b5b343c6d4ebc7338462bbb78a80eab4b88d010cd82aa289396cd7a7613b9899b098a4044be80f505cc4b90a9c822c4ca2bd2db3285f21847fa6d57db4e6db281e15b08f758c46be10e2ec85cb3527d569a6c805bda7f90ea576e43a0783127329f73192e76349f1121b6f5a31d2135ea6b9f42a0b0367612981bfd366a48defe8dd68f4101959485bb17a81c8b458ba813cfcdb88d753c368b90fc0bbbcd5f471d81e1829a39e30515f3c233d15e46ec3f561d551b3299e3e85c0d302468c4ee2db46ca946abdacbdf3638b48ba52b2110e8f565e938d577203c2e4aa062b847204d9a9130c24252c78f86e354d97147b3ddd46243e4e6dae1a19013de36aabcb67db8a1d26609c03ec87c18f3d4fb4c5742a80e2fe6983ec8e472c942ca6761f0990bb4e56f97ef6de60ff00376361edcb65eacbfdd23dbe282308149ed93580a36495e495be1a22e39b71de9195c9317c58cf91a7052a35cded103532fa4e0aeb418cac10c8fae1c25ceda925626a285f2db98755b934499a5b771ab9b284c2282f1488f5228caeebd2caf31d61851e21442ae1b0571c2b6b831b415e6356e704a231808cc8940adce425d9cfb6e96569d242d7583fa79ab6908e6b6c0bb10e642dc74cf118d2e368822b24eb9d3d1edd86c7d68b9fcd749a156a019cef26a770a6a629ff6c02effd4f9c86936c687e25224800c9189f8646556bdc7a8ba433d02329fa3538213978260978ebe52ddee9c212d62de157abe1dd8fa3a65a8dd391697b15d07ec5d304bf1a97ba5a2d048f16e30e7c1daffa4812cb5f02daf728e46104918839592d67c20b674894c0a42b8e1c6a3c04823018fac2314c80dc8515b3263b5ea2e32db3a4c15c1d9f24c8fcd13376cc7cfd1a8b18f587eed146069c58f8fbe50913d78506ff55addca8b21e4a60d2ce96793e70a0a3d05cb00803071a6f25c41eedc03b09049031016e9828abbd44b73271c73d1c0740aa58af31c1a0ab3b8f30e16c0050e113c00913d5ae073f9c091a752629b5170f1c418f8f8689aac66098e319c42322235cac8a433e4d737fb7bc2e12a1313e272612f06243ddd00b46c43d9bf3ad0156a4593796cd5635c60125d0614afb9879e95b9f3f46701fbbfd049d805dd717ab9b11e09bbc3961a785510406cb0c7e5123a4b9ecf277acb0c12cc5a8b455f115074480502d726860f51acb67e957a27c32debb4665af101d72c9fc8589cc8e206a2e50c3d4be9011bb03d70579ad70d9d0d18c21fb4c78b861e377e21f80949d2f81d23cd2c59918546cb57f80667355ac9561ae1882f32434d4646e7bb7ff2680da667c150bddfc84b1f047f0ce8fb30d035fb1a61beb9647f363c8e88e3b4b14540b94b320595e295bcb9d34b5b3f799cbfa84b69eb5388ac27dbece9e6f532ae1be3b9685545519257a2033c1ac90e8c6bcc8a6ef73f6e28083934c7e363a2e0b3e78ebfe56da94f54b1967d6f46eb3ff340bad41ab7dab7887a092117eff2b54fb5997fd974fb11aace270d211a0f966c64593f130995273c94b789062aa696e8c40ce72ccb9187cbf585a353e002f08a19c1c4292a47de92021f3fea447ee85cf455d3b720dc1cc399549b8e3c8494de5754c6aee5ebdcff097aeacc7930d77adfb66955184af5baa5d4034029969d8fa138a64bc5f8171046fb051b0a648364c8993ec0cd416b67f487f3e0440f27045720082588020720d66c28239112d61159d8fe2e59254f36d4d8b881b0f7e02e4107ebb6e550bead8051203fb70afbdd560ba98f0579604b35da241fffb803778afdd29fa80effcbd00532e22c470d1b32d7b9e65ff1be02d7728d491fd8d4498c1801d64eb4c2d943f00f2514642bb90247382009b38481b30a8ce865404614d3f299adf211ba1ae9af11a574dc94325d75c8e61815e307356efc0040bf00e49d073854383e461b57c1bb69d764695b82118735ffdd5a4e0ad7222596d5f13384b895137b3ddd2d85f56371c7124f039d0a06528dba83ee72fbe6b9272ea3f7cb6365fc79d99c75fdab9cbe891b561108f4baa536ee698035f1080fa29fc220e19c8ae703a1dc88f2a17ead9c314632037328cea2d8bb280a8a52702e2d3ade1a6c8cc12a9f3e70387792ae10b830c8f387dd7bbc1134cc7d779405b065d51dde8431b550216069a98e1eb94a9251a36d721f0ce33d670021c2c69d4d510c402130b925d8634829a0c8a05fc71a2a5544549e2f4bcd30ab3d22ac1a331976ae9325e657828592e2c1c5ebb05fc92719c767c8608c77f06e9ba1ed948e72073933062ade8d2fd1867451eacce4666fb23af2f9279f43e6e7f2d03fbaa862d7d8dd89b895c6f0d95b31af434206f351213c18f8ca18ac8c276eb07f0ddd462b6e6842ba952a505aef56322cb9d0b8a84115e5f5f25b3a5e5164c48218cbed77e03304c98d904a79fac52d04ef8fd3d1858f6a50fc3dc237501957922ac69713012cb6c60cd576a0f0cd01b9e1978f1cc94fa5b2e5c410dd1aed8647cab1259b9a1be132cf69c3e2ec0e2dcc60b17cda2fbc9c7d57ac45d7f0e159a3b79d80c5c044797a61976951fe328a0fc3f90fb530024c0e1f9e9c2fb3e9f323aa31e3d28b3cd120ab6f9078a586fb286802645030f27a23286ff2b9f51940889bfd35421b208daa6238a0c32820c7aa82948eab5484d902921dd6e4a0a76256e6949c5ba8b3f85382f2262a88d9788cd2a310fd4268c7718c6c40397d6dcfb6cf537f7ae1b8a4780103b411072208b13cdcf2bec48789efd2fa831b25b2c685549094876c692ca4afd246614567f84552f89e5d0d5adbc5b71e191955b78411252664521db8c6f69a03aaaaad6baf1ef3cb4d343ad6893230058581445d4f3a88f8d298e6c871a11d4e775c081520a8bed81f5c7552cabf8122f0f938a634b8bbf6c030e80a438d48ba04d8e556a200e1cc36aab704a71987cc2da1084b93739def0d7e6238a8b81fa51eb79004471f47ed97574eba3579067150451f41aad7fcac18a8a63753fdc8b42444adc419a72742b7aeac49d5af18b2d0115ddb7b48877705e0ef9061e646fd53d24c647413a960a7e2dfb0adfe45246851de248eba7f88610fe70e3afd14898b3cf5f60c719365fb22422be7f834b2c038b5e303d3f152998ec0a3bb42950e6caf4a9bbfa1156e4acf41c6b585e6198328d37abbaa40287b14f300772232faa7e7b945781ae58836389a9885c19e059d8713f282dfd127065ec63cf98552cf8975bd3e636a77d69cc8816066af11ae5b50d7eb08b3e761945cf820fc30a70e52f0e72822defc01a3abd768810c1000da16bf63609257dea1361ff0b3622721297fd96ab2341f137e8077448c4b31c02240124d1a8e010383a225a9a209b59be8196f953c551792dc08c1776d06a3bb7d0f9a791d08d1d2cdc6dfa97c1e9691e0faf47743b995498d1d086dfbe4516510392b565b5a57252f4ad6d45ce99f41b24fee39e6fcc739ddb58db4e1868a0280c377ca5de99c132dfeec9b3d7e49612abefbe4b05b1318fbb94ac283a45bcb5c72355f4165c98f1069632c46edd0bec59869b1fab38835577dde092bb00e745bea6af2673be0ced4898c9d3d576bb8316eac4a8edf9ae883f4514bf664f25ec0356f183b94791344c4abb6fea7eb830a4c2088a232b2e67147ba3992a07c116ea8b0710234a2cc120206fcecc08dbd46768049485f29eb331264be4e587b8bc9d1d7615c63d5687d55df39322f553f6135df3f36c7e2ac51713962f5765fff272f25ac8f01022d5fc80781e06f2aa8c04476ba0772278dac3373bf85054526c1ccbbcd994cdd1229637249c7b97f51bfd1c237d07b27f8959f1c1493e7299c2421b58e6d36ed6a4a438c1fc541a7c2635e519339fd1a610789f5b050de7028a2b42e312ce232ee02c8e0d860a08cff86480e8ccbaf46c6ef70f3377e3ee4d1005d1ff39304733c2148e24d8247eb0fcb06ec710aa310007ec246e0c63d7299064fcb4085068e1d01648e105c28671b4b6695725f5d32faac072d493655d1524c57c6026232c0200010feda604524664a2a8c922eba554c7886233404e3542474f19e329e660dd52ee9f8588a60a610c5d83da43db1e18c55e6a74f9236fc1fe839bf430ffdc9f7f385a6378e7a10f8f301a1b84a32745db35ccae6b057ae04387763b9bf21ca062a0c1ed28a123e6a1e78b7af4db461010c4604b067e9fef1b45c811dad0c28962333ea23a6a769a7d44d2eb72477fd5132d89c03ae4710429004299fa33d6953977ef8695652520ba7b791d63b5a1d591ad862579fbd8ecdb25d09dbbee7cb525609a6fe73882ee56c2e2e71fa3b7558fd1a1f215ab36ba9e02d7032ce9358f418f85b5f76a44ca8d76a0d8404142ccd486a2b2947a07e57216f16249133e0c9389e14bd08fd3aece79207ad2a426441fda6fa2e37669d7b530b0db0e464e156038f2cf7f0b8113e6cbd0c6da19d75dac872436011d2568faec1cec0e176cb21658c3953857642873f6f9f123109d136c7149362621024b733c53f7fc4dc3cb24682835bea932aa9d554289e544239fa0d99ee4ff8cefcbbea673256327f67566cd1f430cafbf085c4ab6bc0bb49ef86c041b2bdcec5e806c92dcb0a00392b84900f341acb1602f6afc8cbd29e461cf55c2eca9b6b1b501b9abd4707c0869a3d2724789620e6cb1db251a2991e679e6877d8187ede243decf6cc83f7e6e10b63c69b5f8b9e2d86b3199eb0a79127b0a302dde3a17af6bd4a35c77a8c5230ab9f6875932e5201eb1eb239355c5a71fb8321b98232ad996098a5c19e86c3edcea7569ebad16ddf3bc75cc956b33d47ca006343220a4b6417d3732419dec282eb91be6a9fce23af223432771ec18b1b9c9100c05eb16ec10c23c0ba185acc7618dec1cec4ad6a9ad832a5a038248da9485861c53d96a8d67b0b5732ba99a0a799b6f4e08e2f002d286a8bc61f8cb552645b9aa5d415cae1f42c921ef920316f17f51ae00fe9731d641562fd16d631b7660a8ed7b86c8ca42d8e82736928a3abd7db861cced573d7348bc47470fa0edf4af8ffae3e9cf165d32796f68237d45c4187856d2bfea9ebbd31facea18faa5993712a8ea82a9c20e0a77d5e83528a14a1b546a4032d9a42aa4722b3205c803e93bdda56777d0550ad39e724c771c920b8027aae26f9ff2ba55c5c743f5ef1b12c84148478d748c71ba2df15a91aa46d23c979cad1874b1d7bc52dcbba2c77fb2f7fecb2958cdac2d704fcd765d7150f2d1f03b3dffd0dce7100c8d7e032c72143cae2159e01aa6a1388ebcaf862736927915a181f807713935f22289897e0d119ac46dc84d0ace618b560753ab520e5458923c447168aa0ff371b34c940e209e4787a06128ece05a76613ccfedf219b28a8def2b72514e0fc3f13c7d204b418a5cdd468ffeba5c8f023e06e4107eb2bb7e9013f5824fed95660216eab3c4d84a770a86939d1abce273cddb6563db088fe515b568f0c3a07dba6af24ad46f07f1fd72e6f967b4432c5eeea894261f27a00848dbd709b05caabe61b14b3ccf73974dd3d720e03a0e6856f0151c2eb851841eafd16208c196d3b017b0671cce4d5d363ec459af33b0dbcefa7f9c477f6c115d7ae7e910c3e0574d35da3e686697a4d2fc2ee22b1db0491698613b698a41afe666bf949d72edfc4cd655c609857011a34f0226b1e8643c8ec08743ba82cac19427c40bc90faa2f3210975b984130f60b0268f2808be438fbf95e34b03e959a7ba96f5eb044c40ed760cff1558907d6806309ff440586ffd8d21edd7f7a89e8ae7337af2cec2d12fbf17dfd499194067bea62078a6a430e0f31fe9fdb5a24774f33c5d50e7f9ba24ada6d09e417366aaa2bc52767ef728c090c3a472865063209157e153ae3e4272616689f714cfe88cc996073d230e34dce6ad2ab441aa8eeb6399419041a19a79f5b20165a4d07d592912bc458ffda21cd373fd57b9035fe0f4bbfae6eaf84d8d5c7c51e8496307f1068231b57e437be339c0b080407689d7f41c61627251b401155d50c369c0f40638b532e7320dc8ec9c4a4b5bddb9adc524a99920cac0a93098f0958481d62bfebbc2fd4e13dd73bd9fef6851d7efdee53aaba93ad2ad5bdb47cb0580ede384d8cb4560ac4177d4aff8443ab45a6bfe18a7d4419fa2e485cff4e1d81e3e211373ee71ee7f497d9239eb1a5941ff861294fc9939b11e625469683d3e5889b4aa55229ef65f662664c409eaff89ae00a11573e4e8e0fa7d97efe0fa43c1f88d3f08839f5f383082152cbf38b18ed2028cf3fe234de77533fffc5694e3fffbd9f0fe3d1ee7068732a75c2d2f35a89833dbd4ffdec9d9048171d9c18e7e78279beb52118cea687c34825cfe94bd9e3c9f3439f923dcf6bbd348fbfe67b2fb7e81b9dbd98bd979e0e6fca4412c4612bab9fffc3612c7f59bed587235ff3af84ad6020f2e222a43c64fb939c9243238efa3c1da8573da7c2ae9b9855cf2366150ee3d1f68546f2967ad517a6fef4dc478f47eabbd44edebe188072f719d9a269bce058eb2ca7d961c518a5f40fe7042623a41a8cac4832b2020a465634d159de9ee3b8248e43e9e0700bb375bb2e272275ff0020daba5d87e423a7eb929292945c5c965c5c66b464c46861b9840061b1ac569e0cd1888a2e12958c27b5e48a4a4180b85c5c95312e2ec52825e575dc120acaa95d89279941529a404942b7a50a85369972a9f324797b94cf9227e95e5a5a9a629d7bbd925e2f294992acb0b42425698525a6a4a51556484a4a5272692b40bf75e5abba87639bc66cf158c1b3c6b8fa4d99830290e960096cd2d4500b3d09a25be079cf14f2a6d06ce2793d3d487c46ab5c900bf354c52e6d329e5487eaa12199b49e4eea237f6d3f85669339244542914bb24a929a6b508d269155e49284e22eeb17503a14923d4aa5e4ac6dbf1ee8bb8cd5af87f93d9ddcb09178d0e742db73b15770a31194a42cbf7e8c1c8a89f178d0183b835c983be436832a27d3bdc2b82f8724ac896cd84f8e8286888ea448119ab4273d45485494644f9549685eda41b7da73d27ea494294c352a4ddeb3488a527b3a6450db9f8ab8269291f982562b8e61033dfd9c8965fbc4bc1d33b9bef476b0e4ea3dc01f020788cd8fde0b0788cd270011139acd4149eef789d3536108b2c573cede467ab60e86a7afcfca5c8db5bb6750ead845ad9c4da57e5d73b0bb6d8d099f967db59170226b91b76f253f447a96251e525f0ef5b4ecc857c4c1ad7db01107b71a9bd87fe46b7b077ac10ddb276c9f59e434451c84e234b56223ed5f67ddddddddddddddddf565fd883818430665284e89dd43a4881f493d98a2afed6b8fa0bc3d8ed3c81cf2f65c2b36b51aa8835aad233a4eb34d21a2a3254e86f780d373ef4962783a4e9805ef69f174704bac2316a2958c67c6119d29149b6e6c1a68cbdbb7902709fa191a223a92c284a489fa4869ca90921cfa522d6fbff21ee07df7ded3bd8759e8a5ab6aa2274334a2a21492253f404142de5012af22e3e9a0cca0e58062336386931a142850320780ee15c60d9dca0f00e48fab2e913f000080acb2be8dcf24a771010c9fcdab584ec5611777640a79493aefe15caa308b6691c352bfbd53d99ee66822cddf7e4a711a170efdceeeb0a606722a79dbfe52d59c4c0e9b352a54f6b25f3f1c357e96384dcddb4b20eeb73fe23461cccfd0929ea023c944243b92b2bd50cf134f5284b4bd03cd9a4a377595ee7f72e84d8472e8345a0e1dcad1f6512987ee3da07e875dddcf4cf314729a1054e2f3b304a8c32dcc5cc3d6e499b2d93391ccd9e94e6192b2a97612e928498a1292593472d2239fc82149934445edf20b9a0af5845d356faf82c783aa6064c4948c7334322205b9bdfa05ad4a595df882f6052d7374ab56a65cf80229ca7c516b7219473f2a532e7c51146562a69e0b5fd462989f8a81be2a876239c3d1cb999fc2d3e7933d72a56eef722477ff7118fd71200f5a024adede851c96426c7b1f5a6296b7f72742c4a2d1124be4cdcbdb3b14a789464ad4f2f67ee434336fefdbbbacb368ca26d051d77290247b8ec8dbcfdae33d72367d628a9042236fbfd16f9774b67933618273908b1d8cd3c8975c37b99f1d1ec2fde43038035363738323078e59332f5184711a1d73fb6abd489e44f2a49f076214a2100528c0e4497108ea569fbedc70cf4818072d0df436fd21e4c4949a0d341ac0884d1f3c91e7c338ac8bcd8f71d5a2c8e1062f7c000587d8a4731a4d1104a329888c8a20ca8183e1a9eb058ec3f69e4e31d781837a1bb7317e31466f64fa0fe39e3e8e849ddeda7b29c50038ba9efdd3ebbc0aebf8902ffab9e2ab6e5cf155bf138300f7dde770dfe9308938a77b15d6a9912ffa1dd689f2b513e3be18eb3ef583cb2366185a51c6fffbd373dfbdfcf0ad7c755fc77dae1ceebbef38578ef7dd7bd895e37dea535e87ad74e5b872baf7deeb387ce3d38fd2ca48db30c543a8907b6dc249efe9deb2730e9539dacd93cd3b36f971d6cc9d3a4b3387ea4e1cd7a1ba8ef3bacef376c88fd669a43b3501d760948976932f98e7e6dcb6ed7b73ffaa93a7edb294524ac9038e690654ec0084207678c10e0f29e0e18b13e400840c281812c11032d4c0880639d860054082a0c312663002102c40a23af9312306b42582849041900e2938e1054260924204146060040f92508207b52396008594263e5c313342861b7028e2022ad430851435142108209af821031b82f0841f24c182a4dae487112404a108342b96aa6c61c408163481841b90989ac0c10f0124c186d9124d48680045d06c07274344361421850813d490e4430d5e10460d8a2800d393a5199a70040d5d0cc193c40bacc84188a2a3091c01085134610a1334512274819d243c609183240c41862c9498c1081a74116507363012e20231c68881284508ac5832c20f4044f1c4870284f18416842b72309b22881f51898b264f04b5200c1818b1830e5c2c61a208551819c1040343746183309660840b7868d2400f4be001054c59d48014740125848a963002073df4a0450dbea8e28626474f6a4b000203af28c8c0851454f86881d4012b8060c10966484c14fd102515182080155f0cc107a41ee8e0478721285441810fa898a1073ee8400a9f261c66b3167c11812c92380210bc98d2c50c40313640053f4fe041184b7861829d190c6c3862c2cf0e7a10831ee20eb2a03d51e3228830a45001085c4c595a810b8e60ba81bca1881a8830c410582c99c00d31f02207198090850ed5063f768e380248054eece0045e4411a3f4d0e304309ad09082ba04024cc021071560c1f3449500c060882625f400a8890695871fd1ab8811043526c26062871e2f9e70a41f16a0b3f838f1028d43bfec7775acd60b0c3853a306470e87756cc618bfab0831f95942c464d6e4c3c44416549bc12c0720a5a320da0c7e8096847e664132206a3390291dd1847e6640c87ea8b98048e9e8079a0baa08fdf0c302a4d90fb21bfcf850cb21c9a7c80725202a37689243cf922471ae80463e1cf9c716ff62d0ba9c184cb89c200eeae9a8a9a9dd276ec6e975a919931b9c8999a901ae56accb6a752c2caccb6a75ac16cbd3c16a4d3b6d175b605a3c1dff9989dbb16e1456ab8b118389dbb16e1456ab8bc1c48da1c4fd9756113198b8fddc65ddee32e15ae2f6732f2f29a430a34ccb444b85ffff9fd19211e35b582cffbffa95fb2afcffbb5898c9f56baef803451cec9eee59b5808b968bb75bb9be6b883969dd62d06a4e3168ffc2baa09d9d9dd3767665b5626191116574b6bb333164c86875ad197686a763c2b06e8bd57ab92eaddcf439daf565ae957637ed8a5d5d0c5a0aacfba2c2cfdcd3c1063f8c0310801acac1c0783a28ed2c0e89c4a41dfe3bb559503a36386afa6b70d8b89cb3c6e671e4f01a35dc04ee8295b0cdc9ed2891d2a61f6d6e361c638c31c618638c9dc4c94f055dff7e1d2a55aab78bb30544888332561c444847fc31c6d8dddddd1dbb3b76bc486a0de45b09ebc1621b977f4a1265e8d8c891599b78a6883c72c448ed8fd4a851a3c61123456a458c1c297264062607482d484d08911f3e6a2da4224e2323930e524e8daf4f4cafd5d92589384d08ba376193c3073623361f674a9e9fe341b1f93f7ec8f381183d4125cf2f22db41a3277e668ca4e83e25c4addf837d1bc72dd9faf9d26a39386514a2d05e0bd1c1d07fe3213d378e51c6bd66b6c0f937dc8ae91077bb562b01f10fe2a01025202f2fa4850469a5f62b04060606464810204a2ec4e9074488cb3fc2f11e37404825204742822411c9010353a34eb89db7ba7e0f07716ae3af7ff33873c6f9f54e9809336126cc74af38d56bbdc1a9cf6addd4fe5a69eba82d74d31c8da410ca618d2c6b13eee4ba534a29a51bfd6dab5bddb66dc361ad954aa1248731411011e560c9d1688a219428108eecbc349b1c37b4960debe6e62607cddebcbcbcbcdce4b0a1d9e4b8b1b969392881b8fe58cc7c6f72f408712cc181e332bd7047397c7982ace1a07f74f0c65f617f8ffe705afe90fe9bf9e1f8e3b8d00f6bf5af0fc0d2da1b5ff4c37150e5b5a042eebfe98123e7ec1b9cc681c50d63d18dd344e9398c4f64f93bfa061637ac51a3288c49354e4313224992d1084a53962c25da03ae9b1886fa30d0906fa4955d51467ec433620b4edf2986a1be119b674419e93d8066daad28239fca6fbd64295da6b81ec56809160ed410a96182033521a046a8910d01edc901983c64be3b4d480426dbef2c1477fbf87266fb8010746ebc610ec0e48a87d05f0117bfe5208f9729222b4be944065c0a47cc1490b8fe292e85a1fb2b16eb658a99829369bf97cc3993ccdcddddbba779dc7bfb618d4d0e1eb1074e0e17144629999bd6c1b067ed63bb9fdfb3eb388ba537eb1c8c99a9313b47c2e3e0aca9097bd6d4b3e8d18f743fbbd99467d7755dd7755dd7751647366283384d0753fdfc1ad8fd95d48711c9e6ab91af896f521be876e7e479def388d9dbc9f50b8de41afa5b14b7932b87b26f234f2d07bb4682d54a58bbfb9cd3bf3d147011c6a98e112242866af24a92eb3f64b76ddbb6cd613c4cbac91140372a0393ebbf12854beb272a1e5c1e3de4206d9ad354da4653017177728475ac3e89dde7d64feea90f3f7bcbb7267fd147e1b069ad0e87f753386c81ef60ee5a77cbc258c403c5d383a42a59f2092942dfc8119dd4539ac27e92d47dfc0012c4ab177190be105b1b926fedbd3e6812af41d5abd75a6b50adb5a9049d9ebefbb812a7a9b05ba3e2b015d84ad5245f2d932a99bb9f4edd473d1d9dffc9f34fa5bc6e5a4a6bd6c77683d3838220e8ed4537c1ba0cd65160bb86f296a0f70fd770307631d2d48f2f5b91b682a3e31865c200dcf78fd865f2356f386ea4a6313fd6ef4604e7bb4cc218105f487da3a669cc9f3df0a122cf09458f0d1b51667ed857e4f92e4de0b826d494d0cd048fee2be65670b8f439eee9a77acedbd1a94775137d89146dd09fb8e97acf13bdb8ddbb471adb8e992976599499bfb284d0651cb60ed6e9200cad6a24a43cdf655fc7795f1771777ebd998bde4dcc2e4a8dd4b048ad6ffd43fdfdacbf4e1fbd06ec64973f96b8483efd669ff3ce9bcf6ae2766fbbee654e13ba10f66b280eceefbe3e0ae3d220313599069e68a36944b422475ac603a63c559067bb20cf8fb177c873da95af899961c113af60149ead2813e360ffc703c641179a01644347bf12524c823243d4c2916b843179c63bd2a4a40f090a118d4acecee32095f5ec912ffad6725d8547ba105126eca64cbf9ba6cbe28b7e92925276a64cdf85766316e20b9b96e9378dfa9cd362a7b51255a6df3d94ce39a750a642b81039a211124e90c3560e67329d2c3ddc4f156d4caf712750ea7193c3268883f471286d1464ba81f8a242a20c9d8f7a5b9700051d21e1f8f80124484ea5f5f4f3846393e3a607955bbda1428e8e888826cddd842ea1ab0e6a9f15dc3f54f6aca34f396ae334bffd53faf537dc9e95bc24c8e7dc48b4e17d7c10441bd1c6966d4db94b3756beeec7c3043551cfa1509ced50df4b94714a29a53ddaabef7d29dcf84bbebd1387b7d5fa0e870f360ec19919f99447d6551c944d54a6c4b8e4a05472502e715774705b2fdb4571777d286ae6345b1224253f4eb304a8df75924a94694a8d4a95f5b75aa975a54abba98acc79e4acd4a538084aec3d3f5752195dc98ba4ac38f4a0fa644aab756fadfea47a3a2a922744414ed3bd6ce24a1cb6f272f5f23d89f42533f992bffaba49c256b0fbc83964ab3a3c6cbf86b4d29dbc759d3b0e5bb249a29ac9694e5f7fd7a4ece9897d236131668bac9492e3528ef171dc18e91b2ef3280bf22d0e2d1659caaf3751467e51bc54724b99e73190a0cef2525e6ee56dfc6dbc8178565f07d188be9ed2dfc99ca781c2ed59efe21faefeae66c7729ad8ddcdadbe90aedee588ebeeeef23f57238932f355106d789e2a88363a2fcd975292962889712699d14f367db20a8a76b249c2260f0f65798a65151ef5a74ce2eaedb841ac70d8eaa1fe711a1e31af3a492f69a1fe5016e5f973e5a3d10e6879fe6c4e25f3fe94f2ae569bfb9cad429994ad94b2faf97269cad544e2e0fcc9b3fa15eed99459538c33ce996c9adda46925e51429e51429a5dc3a499e549a38cdd01287b5fcfc9ec162fcfc56e23019ac97f1b54f0bee1ff99a3f599d4ccab343fd10fadbb6f188d9f10a4a843da35f68a4fd0b57bf3db7fabbdac9f46e6f23edd633e9ab99c4619c92e434b1885bf9fa251479e4b0204080248c88bfe64f9ed5f6b50aa2cc7cd497e3e00f07e7af9e7be51eabd58ad25568f38b83f38300717082337ab129cff92e49dc70cee66c06f58dce73c94f23a2cc79c752dbd3c1f28d24da5041dfd0372aebe70759f99bf2683aee51abd55c3dc7f2e95881078bf3e47e1847aa2165f652ee5ff95ae8eb260ef693eebe9ef275ada97cdde42e0b8a324c3e0fa2693492bee1b22c65decd67bdf4c8711a20b30a9538a567e6237f78c0766432998c7efd53e8650ba31d28c9f35fdef094a5c43dd497b362d05f5207378c53843059be03a28d98651759e6709a1a07258cd2f50f676a52c6e538487b3848899e3848177017d0f3b1fbf7e36162df0445eec9f670dffe2643adcf75fbf6326f1557cf5220c6aedd2e6e207f512007697864c90a0eee4c3ae223433db54f3f087d2144a8d115331f25f4b9ed0b5ba80e9d9ed068689b6c9baad6ee746aa1adde384d687b50d68c3377908f9f4b85248d423edb534aeb86644aab75efb66ddbb655da65ba3d7d22f47dd0ff413f08a502e4bb91b095d3e36a3769d6de4bcbf45d9c7063de7e0275b9c95090d3b4c89fb205cbadb2bcb300b5929944860e46a64f2515d9c4c2d3e334489c86852569dc68dc523e5186be0b1297859b2a913f3248c5fafaf188597ecbe7921f7365d17730a20d225149aeacb4bc8dafacb05abeb00499f5eee9d8565fcc2b2721966ee5ebccf22796df3ef92cdf09a8696cd2fe38b86ddbb37c316fdb8a85b7cd035b5eddaf33cbcab3beed5974acdcaf9d9d5ff4f972e83e6d824c9feb221d28fc1b8e69bbd6cc3b323a00444889024a5ccd300312557450451513d35fc37fceccdfc93326cbcebd1d313584c8d0032747dee0e0f4c811e234e14d51ccd7f8ab85e9d5c850533d1df6ff3b1ba6ace4f01253bf20736220ffe35f5670b0165b5c1d94b191dc4a09cef6947d69310c8f8ab948db5316d71ab94ac93546998ac3fab362239e77d81c8d6c99bec42b48b8f1abc0e0709a1a5512d7c54287f1f4421cf4f7203c6a486ce4880ead5123c80e21416c9cc6272ef2396e7a9c4ed4e6e626470f0702242e596badb5f6bb7b66dbbf73fa66c781561e227fc6c1e9e990dfdff4e4dff47090d5c5b472378e71d0bd896d66b8211196252f9be56dbbd239299db3a507b63cbb079da607d4a3b0ea0a597777776fdbb675f7d15127dda08f967cdc09d5477dc30e40854e42dde0d4849a12ba93b0dfdd75de7b9e57b4c4c38d04e61352ecefbe72f5b93ef29e7e08f651d75e9f9e5bb264090c5d94e75bfba88f47c7c53e75f7d7eeee93c735964532f79cc77ded33dffec9da8e42fe01e3d688e141324b52637383335f0211c6f23366c145de6a548a63666432a2e0a2bbfcbc29c913c80a4adcedf3afdf4e8e18870e4d238622e9ad0427a7c52ed40fc1f151ffc92f8cc9f28f441bbff97526cf18b16d2d6276b26350e2b962831bceb8bbb5f7ce1c729d25b863c773ac82430937cb94eb3e0ec94572c34ba5841c4fa66fd3a19a688da64cb9af3fab921c5229be94b90f5bdc47e7b8c7a143dfe8cc3d87438914a7e19e3e55a25d670edb38f8e5902bf7e9b31c76638d1a1c3726d3d4100e87928efbc2112c65aebb7f3ba1ba6f27b70f65d409e3d0819b55598c28220eca0fe2a07c7150be64594446e9e3843a4d61b57af86b8bd92367fe09e6bdfc1758eae5830e537df7618d8df6c697bf8c43eccf79da594189fba89fa7afa27e3b6d9f119a2b965b348dd6bc15072ec284b5bdbe9028339ff31925cf587de46b7e94b2bfd62a831c9ca19cc99e28e3a3f4c3045413f2a6a13c2b2dcf9f45ddcf8db97ffe9ca2b83f3686309f498b3c6713fa46fd9863c5add434748836246e224499f913c6e7c6b8149b3b52e63cde236792d294e2b0a61213938b94c25914569f3cbb964abaf2a977eddab595e67bb411abb75294997f02e3761207275765edc2c5a51ffbc64a96e3df1e9a24ac95fe95ec74c738a759f1a4386c59ab6f541f1d5021378be46b7ed56116559fbe318f2a15797e2a06d77f49c9c14969adb5ce6f2614136ed84a791631b96c0e3b4fa53c5b697e33cdefdafc6e9a5f8fa4b3f8c0c568c3696c9e5f97e57733d7d166f975d9650527b4bbb3ee73568fd2dad1db51f64b2f28a5d4dae0862cdbb6ca8d1fd6083b4ba3b32ccb62972e2e6b079df3a68503e400c5084458d2b17582c965dd7657107726069c2e4e5c34b8e1bb82b82d97d0655d075d42b7c68c1037e6e782ae202e0c93fb0ec677e182564a699df467a5274fc7bc0e3a9e4981c14557cce06d3d18858b30a103408aebd57feec48f9e0ffa8d5d39ddfe235fd1bafc7e7ee04c8d7cc518fd626cc698c758f421a7c5f7a2f8b6e9c6fff8f13fbb908d7fe3b7e27ffc0813db65165cdcb931372ae2d9d1fd5064a7c921393455b97158ab501dc51b57466b51c65519e5844b8fe4cbdfda7b5b2d7ab47d90d3d4a52d8708ab55c4974fb421713dfa6a8208ab48c497cfccbcf22b87b4a9cec0c2528568938c6db8f270639eb5cf1ef9f29f79317f6408eb50f677e1e2f6d7a168e38878837e17430b098b5548be92b8b58bda45b4119bb6b6b89f3fd32a310c9d3b1eaa50f607caa7286e936823e64d691665dc3d49bd668a32fe2730ee7c32e4200f2ef340e50914652650ec1a8f72d8e2866cb892269f38e8a8a62bbddb949a867fd4218724cde991ffbf536ffbb91ae3442ba088d5e010e3fadbdebba7f57d6353da881065bce5440e390e0234b66122a036a5bed1b594921b5a210c31c1b0c3b3dc5231b04a2b3b7031cb70d4c83971b434c1050746e88084121b906841acdf6b0090a2762361ae9caa5371fd8afa9d583f8e8479123e92af7ed611eedde24607258a0977fb5c39dbe9b7df89b5347915af35e5fed3d7b2df7b71c3d6377304fa3c625e4189ebe2644a8e1e0f97ec4d0e7615a7b2c36bd265b87f83e303080a8c5b23615e6b229c374ddab49f5281a1e1865ecb356f72e9e2ca97eeb0486b8269ba437d83025112d1916adb7ceb1f298db058125e22254449681754b64fe518c511b8c8d1d33193371cce64dbc58d464d48099ba7092058a42571277c72d83db31e2766487cb62f644d1eeff1bb1cbf9bb9e9f1d8e1f18811ccf6b94827eaeb727b3c6294a98fc231cad88709e2561c6ebf3d95cf72b05d0e01b51c8cc2e5b4b8fe2e46b88e713ce1722e48b85b53eab9a374d013982ad6464d3c0122d6df44bdcafd0d05e6b1debca7bf675366774b20d8fc1172d9e246231e59cb184f2e0c466eee144499fe4641a4d13130dddc3fbf7d44dc27c6c094e9ce8d465050e98e753482624aeeef25bdbd8defe86c2df6f2cc168721c83d14659cfbe8bde031ce37f9ee73c4c1d83d12d63488af7e1f5a43e423bafbc7712371b051b21bee64ff181717a61ba5ea074e8a6bc3739fbe3f662b5f1d532ba7477d8cb95ee8befb188b1fdaa54c3f3ad185d210cac28a85151fb2bd7f7d23ee8f43e079c87cd78ee8446d4974a20ba52cbf155b64c5f542aafb94eb85184ed1f3e1fd09bb724edc9f2cf6211f5df716a352d88550dd67f3ddb4be18739ad3bca8df8ffa3dc99536a7377cf474c4886794f15b1ec17577e7d953c0e45925f7fb0f9d1e86c4c1ad79bc650e6e45f4fb091fb13e378c33799ba95183c388d36cad972ffae16b7ef8e5ba1261a8af7f51f3b34f3ffb1088a16fe33e0e10b3ed1bd75bf71187a530eb592bf192f236db67ba9a6bd3ba89a144709d83f18d684a397a2c4cdacc8c92a53e12b6e1997790521807e9d7ba0ed27ffd110ce3201d9a6102632a1da211151d2149515a62aad596f39d46a268eef388241c462661a7f8b2128827e1bd99f6388d7f04e5a9a8a35cdb4adf65f10ecf16766b3f740990c358846690e9d3263fc4e8d3274d4ec392e95322a7894cf850cbf469117d7a64b7aac305307a503fd2072472bfd4af76e51c47e8b5ceb771f78ac33264c41969b4d3b26e8bd57ab93366e00086755bacd6cb756965277676d64977670aacfbe2c4764ee28c2e4e6e38e7f7e100d4c41963e724ce18593dcccf45c40d675ed1d0ddddc234d2d4c401e7723a920cdc70513aeb31891873709c8b1307387921ca04a28b933b5b701925c6e81225c618a34b9418638c918b33c638a34b941b639c31c61863748912239d31ced400572b3a636c459638238db1f532edb41dcc7f9c91469728f465ee32eb468a3b193146972837c618af4b941aa01b9f7b7949218549297d1b49e38c2e5162a45f339d7125091cc761eefd5f26ad75dbac3d9d501cd7759de7a554aa7b2f1737fe8aa7a395e38a8535e7a495b6742c1e6d3294395617637ef4498e115d868c96415b6274325a2dad568bc5b26ab5566eabd552b5525eabd5c22111146d5a074f524817272e232ee71ac2c5899db1524ae9e2c4157463c8780183826ec87a172eae7f0aee02c2c589cb07205c36b827a2d8eeb1dd63bb6a70633b8e1dc4c5166098c9127b40957b98f2e5ee571c25916204475408890a1dddd450a9916249154851921c818086a255b184a27594263421b9975a52d46644b3a69e263df1880a2aa8206a2531c262ccc15fd9e18613365fb195109fe80112663cc8c28818448941f061811450ec2007a3a658a529612d19400a2443a0f47f382c4a21de99524a3b09bba1450ea00009914405508c8251f4451853809102246831ba84c42153cacab45699239674a266701d78c75c638d9de7f7d7b775083800c143922c8bda13314a118e8070810b9a10031baa12b93e587f46d6afa96fc3946faea0c7396f4c1ab2cc36be33db8bc0452ec670a311154d64d93e175d38ab18325a1fbf35b333b7e6887cb166bcea67601d262a9ce352fdcb97d5617dcb4720c65a3ad7eec47ea6e55d3e0231e682755ac2dbfa7086c6628ce5ed8ccfa57a1cf9b22a0c430462ec46beeccfc03a367827f6338eb265fdea59980907ba57b9388cc3a3c3046706d6e9588c97f13bb1f6747439ab9ff1ab9ff1dc6af5ac5fb57cc75a7ef59cec8e78ec198e0f20428a441b53e5aa9f9eea837172439be38dce2bdcbbae23719ab07db87bb977ab8252dbef25fbcde43057cc7ed7ec3715fb5d258b6c57d9be4f4992edfbccfe45713ef6fb47c27898d89fabaf63465424c9f69bc86954c8f6db89494f87cc9533e3593fe359d8f542c758df31d6cfc059fd8c6f273603cb5ae76241f5f455d8271bf1d5279bb60ca40597e55befe1f0b06057d77a9f6c7ff533f9b2dfea7399abfbd6efc4745c1d764160f52cdf3d0bd661d2e11c969a7cd967c1ad64638c65e28f32f3bf28335f068ef2855b5a96855d39ab677916acb3c23b31fa4724acaded59fb24b956f5f65b8b086bdae9ed3716d106eaedb70ffac67d9b7afbadc4bdf5de36151fcec0aa576198eef3aecb3573b4ebbecdd224ac93ecdfcf9b86ff5df9ac7deed4a5bed951afdb4edced3c95e78098559f4a7d9d57abd529d57d573bcf762954a7eaba9bea566eb7ba8959a5ea584ea9eebb8fdef4befbd96e47fb69ca50de7284a35a24bf42a9493f594eeebb7f61e5f3cfe91eeb309938c7dfc33a3a3b457080d82829c5a31cd57b5887c97c9dfbaa9f3847a7258cb5ec9adde79fc231a4de53d83f06d70cab5296df7d8cdd9f912fa94a799f7aef2fd6b9cfc22aacf3ac191d0feb44ef632cfcee632cf5e1f59fd80501d57bff82ea3d1c03939c96677d0cf755ff02ebbdf7700c2dcffa0aa4de6bf95cf37eae19595ef5ad3ec6efc4ba8564c85a58a77f66423fb29ec56059b58c9fd6bbfc4e6cc6c7d8eac3166ad65fd5b35e3206d669a5bf588749cefd16acd317b3b08e0aeb34ede8d2ee514babfaeb5ff9ce9ffb17fa57eca37e2766e32ea51f0451f9e247268b75bf7a26392b4cdc7fb85f611de7b0ffcc429771b39f182f652b2b2c4aab185827c677392bdf619d18d86bb8868ead6a2e335a5fbc1f95eefdd06b2d1f632d2bcff23bb1d58752d67a7f1d2639dcb7bc0e931c19cfbd4e0f03623172ba6f619dd633c969f90eebb4700bd671a11a3a1603d3581f63ac0f5d88855df577624e537d8ca9b0ab621c9e5a5493fc48f52dcf2487f59d0b02ddab9e497d9d594ef72d5847ce3a2c59587e588b6ad1ca17e56be2d0e68bbb0fe5acc33130c9517df73116ca9f1854d89593f2bec3ae177498b870ba8f408c75f885daf40224ecb043914c1693b41e8fa9be042be0e0c6d8d1114d3e494111534cb1a4c23194c0ab31b9220748cc641c764dcc82cb8523955c38b29cabfa1e5478cae44b7ef7dc87f248013cb4d88cdd2d8680f41345a81671df31ee6b5229855d39dca79efb1476cdaf492b1c7163ccf542c7baef58f7733665597add7bd835314e2d922ff9f5289cb32cffd423cbf237d9d6b3cd369f4efe4f942fd794f2e74ffe915348bee4dbef47fe03e1c6182a1663e1fcd97e720c4009583bd35b3a70a17ffca880a6135b2597da2fe79c53d22b542e85c04dbbd56dabd37d4e77993a02d5b474cbf3ed117ab2d6e28d04e0943e5970fa6ddbeedcb62fdc6c3c9dbe7a2cc8dfe4c76cff64a53c5929f1dcbc163c16e66f2e2b1071e953ba516c044abfad3d173c16e6669fb35b7b2c4cdc51075b20411e52e322a7ba0ee3396d3ea5a512cf1588a873ca3ae7fc9e3e27a55387ce59bf526aeb0e7fe93fc49f5259657d99f6a993dda9fb2604673955e7309ed37ffc3ac49f7e3391df1e0b4ec4f58f799e9c059741a9accbed1469cc37d2ca9d912c4f119c747ad3e7866d94991ee36bbe9c12f76401176b0f19711a4ff5de49d5aaaffe4e75d088745b3d79aa9e67ad17bd3f7d2edbc340d3f0de469e3c0fcb97aa232e27c4693afa9c8ed3a4defd8f380df7aab74fc469ecfb7736f5f6ebe729d5a350a8e711330abbee5fd4d3b73b797e2a55bfea8b42c8db8781a661a783dc737d025a0d47997a5dc7a150a8df50b1a863c557ffcb114cd2696e2028676a72487f16e9bc42c35d91c19df684aa5c279f10c2921c9f004295fc4410906c3fb3e7d9cd6e744a561317a30c17cab9f393b76fbb8212d7eb9f6c4b21e4fa199199620c348da9722955a6c08414c70ecbd3b773823e5bc987a2bdad5f519ac9351f9230e9d57ce211b882c3589443598b341f5903331214229a94425fce297de48bbeb5359667c11249264929d28785ab9047124926d524cc8f882ffa4c18c9aae8f9a265345a11eb6845ca956d63b1b0cc6d93356f92fdb75ad465d3e491d29ba20dfa281cee64548ece699e78114b6e6fa362ba210e1e38700edf5c7e6361f9186d6661c1a10b8e4a667c0c1cda960ce93efed34ffc459f3eb1295c7161942eebc37e92e9dfb83e9c71f9108cf1e1b77cd862a13509731f1cce802e3804bf0587adce4a1f7fd1ef66e016963519b8b682124ddc93193481dc47c2a665c13e533c1d73d6eaa4b14c9a8de3b934991c9c326b15d758704de29afb4499702a65fa4b93e903a4f3a8b4ac9775410b19aa1100002000f314000030100c874422a160308cf334dc7d14000d8da25466489649c324c6511452c818020c2180000022002044341b0535010668d81b439326a8519ab68420f9c4c3fe84e219fe45ecdb3f03b4dbbe1883467966feb2def20f0884b4b8b73e3b473f2c838fbcb77ac380db2db3b98bc827b3f7b4c8dd8d8fe7a82cdb991d3136ae340a1b91ee97a4c28b216e871996c3b7836ca9e6caff5a3fa8c6e124385dc06fef1311c0d519fef1782d07e9583055c2adc81bd2e236ca2ba32b348cc9e37da6a959cf29407579cef0a93f64e7da8ff15648ae36c4a4179f8e69ce36041ece8aab37c836a42da0789d5df852101bfbd6b2085ba9f58e119953359517d14f213d3165fcc7b1546c34011ed9c4ad7dc7b3b690b712b0c9da8560a5c0fae7ac7e21d2586938f87e6252c212f6a48057727d4a7b5da4113fae715af4eb4aea02d99f6c09868f5260effe502cc1c9cb930f47035e819856c56c073c50999b21e1cc4af0f479b16709d6c846af52e476a164ee02e6f2411fe45fbdae8a9aa67ecedaba1829b1b155ba310a35cc4e4a89a4b0fb15056886af0898a8841168b3fe45cac483c5b34f8327f33c45055c0332ec6ed960020507403448d2b38b4bead4e13d7a0edec73a58550142a93d99f4562276605766fa754bfbb0f2f5163129c5fa45104d52e6c694e8b0d563c05c823c56d12e67aa778c5033443f8fdd692610fc2daf2dee5896611bfc7cfbcbbf33231b2fd058d98ba70493db4ab79b036e2ae5a2a650a980b1c70ffccb0baf91757a2931c2415ee5bba62e92ab3640ae3f81545f43e225365c72b1dd2a3ee01ee4ae096a349465f0def07ee30b2ec204bea2dc07db052aeddad369f01c2aa080db2e271ae73ce801b76878077749be29f9d515fa98b605593cf6586824e16f2559abff887b8f1f96a696e05aa225dfcb7c81406665177aa933fd0785bf54e101b718938f1ff2d20ebe65a2e2d4717c6002e308fbdd954cce736b81efeec9753080cdb762bbd9122d49ec3f40f4c80c1111acd07e0977c00dbf43808d5e0ce6eb3730ead42c7a02d3fcc69bcc82897eee74c09d57bce1814a2ab82fe5f9041efd0874ea09593ab15480417345fcc227bd6003a8890e4878042fa816b295b27721d1562deb7cc01d298e48a67e4593662691a32cc1158f76d2c69e05ab50471d92a6302d2725c3d7e46255b9ed59d818e7073a71a43033a71da3f87c48382c4644a8c6845188815f14765a8e5d48e1829d7f8d0e2e95f221e1ae79a132627bb350145916382363e640d8d005ada811b327e16405e3b35ea38a70462e3a32c0793345210696000e3cb65f62e6db51fa629c6fb885f1c751afc9f29b96638adb63e03c84ab18fba6d4afea1f89747a0d400dd988f1377595bd6bf21defec1bef371240a80f9fa3d40d06fe86716a11fb31c43e3e351abf412f06b2d6d73ffc588486d3e05d272aba1d9f71fdb7d59648b0fd8569dc48453ae1a90309658099779234894c02886d4c5678a6043fa180281ceb301d2ceb4c6b0698072064606358af79e69ce80d20fc2524417dd7e9d29f35181838843b31960f07685c33aa140c20c510894842d92e8a30f74486b016daa57e7e2b608a30664c303223d7e18cb163773052bf4c3098ff8565112e0c10dcf55e1cc02074a33a0b532606e95b31f9cf5a6d8177e58037adde24c2491a78b0940dfb58ba7d945a9ee08e1a44e50b77e6ce08c837f6bab38b0c441d047406aad9188821ded0c30174b29f69ae62e64037d58133274ad685c8c69277ac6fca64ed140f627e8b450aab7785fc601930daa47d5a69a5646e7894ee192a4d35f95792d0d3e63e6ca58baead883584499ad55bb57f3f3afad2de86d4b48099b1409fc21f7134203a2f463b004e03c7961ae08e610e68e9c57f46e9ebb6d4697f74ee7d09a8c31a54b9390c5e558cf54033610cf6d743945dfb42ed86c377a2ed28c82882f42dbe99856c18d06252128c97d4eab668542ee8a1330028f6fdaf13e837518285e6860ccac9bbe7fe0d7ffb3ec5de587b445e6355c5c549780fac49ad0854df80043fa41b7b1e006566c38d4f253461870207a8b89208c99f2c9b1fb30fc42dc54815b32590483224df81ef3f6df33cdcec21f17ce0cf8a07dc0a7f7caf646fa8e9a1971d46f3dd55389f99a3189e7f655fc9c825e764d75e417d9985aa5df90a49bbefaf20c0947806d33b71e7f9c4f9ed9694fc4d145a107af9815847ccf2bf38759e8711a6198323bdb329cea9c9b9c7731b8afbf4082658bf9992d6a03019baf75d86d9fa2ad8ec1cf2f53e649c8c7cc1c91cb8f103ceb4dd786ebae254e14f2d17b049a5abe0033482b580596177caeae32dd663dadadd967768b38d45d37acc540ef627110e6cb8b894af3770934d0d6fc26751dccb450093c3484e7a4c4564febb9c341a500f8a84c5223dbdfc6278d44072f12f37b0c06f5e1a14cbc2e06240e703fd4167442843e5f657e0b4744cc67257055d115c255ec0a1d5823961870c0f870cc43b6e1b44f5539726262b0b302685b91f189c44c2cdccd3ab14dc9be9a3a6df7a2b7db2eff6bdfbc39ab63e0add7cdc397520a7c4d120e978ddd28311425f4d09ab0948527f86e4dbc191cb823eac092e472f6f971252c8060ab2ba737dd42a5c34a6ee90e25e7548287ecec2b3e7706f75935e324bfd87b9b05d35fce630809d3e5b2f7739e1e44ac7decfda3c1fb07c4ac5dc64a6f79990df4ab20c575f89acff0143181c008b47750e819c44fe98d99f56909db172a9d17ed590627afdc108d62d6eeee20fb1faf343fc77fb10dbc2fe7507881afdf8b51ce3877409cca597b0da25a5cca59ddc5c894ccb253267c13bf4bb24bb7e00e1f1b55f15af3c9dc4ecd560304d2c14f8a11b91f9316fef938e35a841fb5dcb0fc7a156431d0284c5ef47f9d50080674fb05c5273b66ade25d52e7fb0614e81a2df69ed8c69ac36d22b9588be15eefff149073603696e91bd07de22b7e182180d8fc873b2250ec1947f7bf5cade71d8795c59d1ba829fd8b2aba88552b6912e6f0d33d0cd9f48992a8c6c59817b4fe2f46be23ebaff4c83664be57015d7009e4561551dff2e65a1fad0ea03c6f509943c3fc1b8dd39b8b8b629819aba10a1a7ea604710e81beac52c9232950b7fc761ffba2742f3346a8fb0cd9b4e6ee2a3243e797285fe2f836d4e78cc3aaf7aa33540a9e22c678e2e9b6c418e40426045b94e6959640a853b573387eb5382b37f7671ec7f7cb9f257c9f2aa8c0e4faa5b9ec92c588d49f9ecc1f352225ae609f03828c291a227d261a912bf4412476a21c19d8745822f208379a7dfaff7edfd8eef83cc359104ebe3942277c46f891d3d683e74393f5c9fb961b398d4cd5c4cd51b80176c35d6036889124a9bf0fb866da2bf99032e5479a52c39e756172530000ffed6fae656035e86a80ba28e477530d150834cb707f1bcb70935e2f3807fb72f789cf6e58364839aa44ecefeeaab0dbcbf693336a5536d6206d27ead004c845605bfe73ca99fa110daaed3cd18a1bb5e2b869111a0840d69cbc1861b36e0269d095375dc8526225e52293caea77645c60c794020e924a73a7716701c79d49114835a0185fb37a18d3ba38909b99d751c18aba8f1f3e9d7a91ae2d1aa4f2df29f78262d804446517af857659cda729ccd1c7e55c095797b76d93bd1f99c5e89ba2f0d71709d1f6ed8033a054cc90ce2137efb0caf15ed228ae7075082d5e7b498717b523d45bbdc93ac2980bd4ac2b7d6f015391d41f20a41056586e2f8181689cdc15ea3940a285a20968a0713174fefebc880e93dc363b831c875c0fed938dd7d28da5da6d2e699ed08044efbd549a83001f9b3b75efa8a8e01de46cb381864bddeb8273159a62247aa0b77a2ce59cf8ca26a2081cd03ae05215b20806b1ef05e91e59ebafdaae80c935ddf0366c7e729922a7b593835698345a084fd3ed02c443b3fce90b44d814d26dc445e4771530b2c466cdeb49e4cbd529c4c6c1799850961b3be78bfbd3753ea81567df85e48e7bf2903913d9c671604a0cd7ca7c095fd67d263c446454b6b6b3de74930e88f67aedbf3cd02cda910b0a6b39391d79ce43fa9122b327742a3531551aa54d11a35377100428a410a58c185b58206518ef469e2caedf6808ef4ce164ac790d094a5c2c422fe2b823be53eaef0c58979116b83984aa51b02da7c72bc0dcd2cf527b1ea022beeef3e9e60422abfd3103b5da460c852c6fa5875fd0183c9b85aeb64cdab1a6c360fb8d5b2af6fc919210351dbb4160968a2ee4e0ecffb0947b8e07070aa90143800205c66cf704839bd8182b62f93d01fbe0b9478e8b37b5b9b3acd441ff1db2763585b9c9e61ec0e70a7b302abd6782838263a27c6aed9cdff54f9b53df82323bb6e7475b681b732281760b38fe45e9b3f7bdc754d8d6ac3aaa355a3d03c3a2cd6397272af7ba49db1d8ac9237cf08a1c453ae816c0ad9d25a8275fbfe72a0c39011009535234528f7b0184db02534bc3b7f43469091d8284e5ecc2d6fb88b9015b58b5481e1a86789a545bc0c9d5767dae9df29515b2d36f5de592bed9cb597384c4dd2e3d2743c4cf50301c6f1176a2d30059ba626d5a4a117c6bc50650c3d3b8c4b45fc3ecbb5aa09723bc49ed8d7f530eac2bde14cc424e41d0257604e7b221bcf80128a8397a9d0746e515ce61d0f5a1fb657e949b5ccd7c1816910863f5f372fe78fa423102e4aa3ed5511923d9e195514f643c123356c86153d90ace0a51c069ea2cb2f6ee7e9e861ed21e9a8de6be355b9edfa0d4475a9a2eafd09c972e8335c339ac8ac32afe00e3efd5e040c4995c30fc2f2918d0d38dc5fae39c55b7fd926d42ed681676d0919c02d0000cb7b653ee3be832f3138d027851f91a7d73ef30b206147de369aa11154495d623a880b869969c8d4a544744d8bd6bb8ed42009e08692f699e29ce3792c9d40b603327742d0e2226952b061bae44bd17774c3dcf0746f5b7dc299143bfd5a8dbb4b8f0268ef1e798c05805d885893af2adf2d99adee694b4856473a622d5f09a0fc62c16f611eee00123e40d027c32f9dfa0b6ad9345a570b300c441689824fcc1396f990d111cd545a9d344bded3302c3aa109a7b7dfb492c291c6a360cf95453dc4f5b8e17b9a245638056320df65fc19077099eaa615ae8e83bf955c69103e2125a5c0dc353808056669483d708e03c9807ea87fa95b06fc322db320abb381b50c07ad96ac539730f1483252d3d6bf231361c4162925687cd251e832f0587ac76ea2bf8b9f90bf0f4dff92a4a86a178f1446c88603d1acaad34802cb226366daae30c2c4433e640a2453b09228bcc49c9c6ba8129b2ce093cbc62600cead1c50e5334fc24a67f1ffa82c57d5e2538a5d7e0a8fcac65cdb0d94852db5cad064de9c1b6e71c58fc3f362ae3d2b3cd787af5e94113df65a6714704d678b2364ca47ec1945c939b7f973c7820f3eaa96395d7581858d147c2f6b223bb8006cd4e32c1f0e0d4decdee1d5972858597880c137c8cf379ced020df3683e74cfff4a2d0bac3369587570656d2eeb5b05542409a0ea071bff86cd059df999f8c234bb134e42c0bd1fc27eaf47f5a08992b79147e68757acf22f25c0fe61074903707d9768f77e8550a78a0a7a6af0d1e28a3a0274d686d8f9efe4b543c96d9f2368f9d6ba508e940d5e820484e6ea0b8a46410150ca97008a7f4dce89f095909e2fbbe54d4fe688dc615667873780f1d8188641c14fcda992e4614cd61ddba53dd156c7d7ce702c8d54ffe124afcd4d7e1a6ac586538e4c008703179752a157b9cd96490ef486b17d6fa9c5e9ae320d69057b8a877387fd19ea287e5d893f02138da0b0040d3aacea66ef4adb19ad2527dede889ee94427e8e43b58792e0a7c725993e9a4e502a6df75d820c9f40112dd67aba027412651210ecbf9750a77a0e1dcfc3b12784bb27f0560546d76f654c07d631a2343452b58c395abe0bb7cc7232845b6c022695c5a7d2559291c5b92c4f3cee50ebd45b8065ad0982e5ad4ca1d7caec78216cf89b8b332490aa6e04288061c17572bbfbb2e331cdc76c4d3729cb2224eb62719280b773725aef0aaf15711d19671fdf1791915ef7566eac28d98eb222eaa4f4aea5bb8713627bf26109ab807e37ea006940c039b1b6d3d3a8b044ab7f9a5333b78c4872c880da4d855c96beec66b243e23a6b2bbf76c787c84c15f7321955f2da37b68ec28b5f89af96fd260f6501200fde2ef0ce63d6d74cc1a81a4f50109dafb24d55c9a544dace0d516394004f0f64400b958e1ef5a8cffbac647b2ce7a1634c4be4eeb030383934aab0287f526ad52cd9a98c85fb76c28348c18828e7bfd6e6ea0fd85a317e0008312c735a3c19264ecc12d129ff759016ed303431e7ce59cfe5b3cb369032298844ef0ed53127844b97dd2a9e46a8cd410ae1c8250e0da83655828ac11bc6d678f926f8afa12bd632d300cd744866b8a07db4f50f0ef8b8e9a033eda8cfd8b062f9f0867242085c951d12f44424f6ebb1ac13a565fd12e9322fa31c33e73ca91d7a8ca0ac58e872c2c3a585d005c0e87791cb26b163647145d02c253106993a6aac222849e64e67b311fb659f0a219b3124b1dc77b0ae2401af054c58915586d36f1538d39f38b7e887fa81502878a8c0f9a419ba9d9c729dffb2c42d1ca539c49e78464819452ff0371f41078aa5127f58fb4119b71b47624f153d6db187240774f2155eeffb04b32e8305c1f5173480e712e22c4eb97707e09681b8e71e8ec04c945ddb7e274929bca80dccdbf438e3de85cbe76df96ab9ff96b8b2a2524c64a5f39bb4d0908f0b6d041d9983434b7917930eaa3d87c8ea7eafdef3f38ae595c9135d0f36d1ebbc0beea4afe2d0fb6626d5d1ba45cb8861e5a033e914cce2830d229ac26562d9963b7e8d62e10a5dded8fd0223e4623e41c020729cdf993f63c881cba6f59ca05ec8e59854a8139482b5d713cd8f317e82d1219902302c6b8bf609fb3cfbd5255258652a170f06554b8f08642b3ad780afd100055fbb74f3467cbf88361ae16ebc333ab1d46fb5a6c0ae932989062a5deb99e2676e751b52bfb2e55742b440acb1085932ce5cc9df6a8859c743686643043df302f61a8f9f1d80f06b4e54da97075b454b1c079623c9c73a26958acbd7239a5f3c394230e574f408353bf892392d00d2bc32f52fe88e5f95c3d6defcb6545541d7b3e5fc882751e49e07a88049f5f394d53318991e554fdffa7e46eda3760e7fa67bd440b9d82d4220386fa43625dd823e5fbb0ff8dba1c57214246170253b7cb526fbec65a516e766a4c12020a9fb7c5e34498770dbdbb451293f961d67844f8b3292e20062d13bbd9da2b908e1cf5f90fdcb95f0aadb000e5440b89f19a3fb200024f30c0e7fd2cf2a95964c2e151c38dfbffe04cffddc0ced24e2f83f2e8f4da7145f41c201dcc3e3a958b13c6f3f9b8e3a142096d52554671f24e096b5da495631d89e2faa73130fc176aa10c01a7306f2256dd0db6bf6375d938c61921793466d89529c8209f3ed666b34cb1bc95e91013497269b78e0ab0916ba570a5ef17e9f412af0b1b0848ca337d587db277909cec18034e1625a9c2c1b1b799f197a9fc903150d64ac8e1bcc5dca50f79be4514255515f28dd9b07f663f2d5697f221d90a264c110359e8f396a2bde46e882b72515c4603c32ec20a68bd2d8fd79aaaec60872d2148c5d363471a552cbf689c5a50dbc79fbeb22115fc3494dda28ccff5438377edff23d333ae3301fe039cbfa45044ca962a26214986980f71ea999e1a9bb46bdd49c18f3fe4f0e3bbc1cbc7d3662d96b6e2d47132ff7dba64d39dd77122ba32dc12a83491c173d0004a0aa2fee212b69c75d9de3288ab2d41900cbc871a3f06938422ac21602392ea0867e3029a618011d9504d6f39cdc0929dd247b31eae2937a560e0b5d7f561d3f0f71e25a99b6f854dc93bad295308cdc182f3b984299f52201c722141716154d532e05572e946f88dbbe9eab832a7abe45bac5d5971f3a5eafc3dd2bf457a291705ea819be3fdad7eff4855bbcebba9975c6b374e8562eebd65461d88b809e7bf9116c6a933bbeb2e87f08d22099fcdae81c12c1d19c9bf443c75369df50d4c17ae1b56c1b01206e092e942326d0e06560d6d637b37e3d0e5f92e9ca7193bc0a6bfe8855983b1bf81c50fc63d15d316861010ff2df71ce2f15f7d3cb7791d588a359aa6013eb457ad58d37c4c25f678d080b95f8bd8a3d42c99470e2563115623c77a46cbe6cf63de55fc50685035c86f1fc5b6e298dec7b5fbafe48afb18a7fdf14152d80bfb3077ece59b105f30276bb6b85bd90a707377d2d65bf3fc6bc4273d3dc363e7b8e8e97a95c659afa7216cada7d15429ae28d829a4491d3190cf9c6fb0df37a611a3b1cce1f5ebff071cc808c50c68cea8374d0446d700ed3b5b460a557c30f57236b286990fc5bbe468e7dabdc25542ee151c3eec521795453b8abd2875937b4c50c3eda3016bc64ff51b676d3f59b61cc785653a80cd326bdaecef3611d6bd41364c1888e0f679d8d8525cd9ba14204903063dd2b55ded99dfb1f0805b5245846c62b97097b0bc34d70ff23df50ca1ea0611483a7627205c949a79c24258f75ccc71d33b599ecd52f56199952b7933641fc07ff48c1491686cf4649f65b4baa17a28f778af650ede6418638323698c2029e7d746ad981620f9cae7f490576d3345cd678fc5fcad4a052f583abea161dacd4d5da28e923aad006e30eb04d108a0a3619fc43f3f3362c80da342113eadeb6733ba474f9339dd94c97a4ba537c9f0badaf954e0612d42146e0231a54a0f0bc5bd6e925a6ed18ef5358359de35641589f6f2cc042320cdf37d3472077e553bdbd54c7bd19cb07bef422939b0a0236c876301e55e746712d3a5c1c72c907f0c3da7967be801db1ebcc6701df9811e097c0cf8dea2d37918a23831b801c4af372b0e04450af4b9354f6af827d4f22c3a80818e62f3ec8a765ae2913f6d2ee810777af0fb85f97f318c47709ca13e2485d5327c1fce1e08f78b683a0393171728d583cfe71572fec66abbc487850f07fa697f8886ff64b2feed35ef8f0dbba5b5fcb5f9d7e0e9bd2676d96dee7d500215ba45fd2545806f6ff4781233eece26cc2f670a5198a3bc6d210cd3059228c25ae00ef430c9078a1a65783a429ea706d12d0bc400a6de83f2c612749b5295170c46929b8ccb4dcd727e80cf9d448d6e84a665d54de1ef747885371981523b244ece97361b8aed550d7f51bb2eb228d721c8cd11303bfae4064c1760ad0a131f519351fcc73bb39b96a27103839cc05a1e3c271edfeabc71b0262118e9e182e3d2c6410ba09feb5fd66a4dd11e237e6c667270dbd1a354811fa5678e6bef60ff71057c8e4137da77e959ed2064969fa6a90307c2f14f065b1d5c1d9ed48bdda854ab25b6c83307709c3da72636fbe309183f55849649b490f5efb8ab293c5b607dc82ec7f579fe1da5afaa9b99abd0cca3d9c5381abf79ee3f0b2c238a367a91bc08eaea59b493cfe619f3a8243951b6383238f267f4ce86c592ff7f242a52b663ed73381044701e9b5eb8053eade6fa25881bb2bc1dcadb04b82fad6f7acc28eeb80c1927f9b5072c7b49ad149d09568723d525799a0163dcb8267b973b4245f9fa2d4a29067b6251de48486ff5b1e855b85e1599fec940e4dec6c785097bb2103db47071075c52183d9a7bc75fece935593a112224d63b7a78a60472f87adb81edcb488fff6123bbe52557f53525d664d263db388e2276302ec87e83b7eb69c7532828e981ad159b570d78b393cdd1e2efe44d886c79ca6aed0158eda461747e7d09675570576cec230d46d2e3b231ea5354c92d83b4f86dfd336125418b171423948bc7d347c900578e6ff8c9743ca668633be9a1523a89ab9473ee23772784f7821e094f7a9cb8e78c9f42a1ce4a4ceff2971bbaf462d2dad208af271811bacd820c885a94f5585a90ac75473c0d2f6f83b0188ae3c8c601980487fd0e013f2ff83aa08f0b9f18f3a28f7fd029df257d246435251c7d83f588af5627de3c4906112f2880fbd02d1f04dbc777943a9851e722abf81644a42f581ba9f46162e7515015217a68ceef6c90da205a3313ad288c83c9700db30d78594aea8468257e765ddd7a0e615bd101e7eeab3e75307d59eabc4374c11341ad28ddc81db0946c938b1004e1ec5f32fcebac62ecdd3efd59dced0a5cb8405cc9fd5aed4642cc4dea78a15d5fe76853f1469ff6fe11bb11e673be1371665ed172e316502965e6d3c87acb027fc76ace695fc88849e7d240fc30fc0a5289e1499ee2577e77144654baefcd5978828a52b228b0e3d429884c2b17de2a28dcdc1423bd44131e8762ce7ebb7e60005b88e29192e4e8b0ab51a51f49c965eff5ea4aa486d40d7c6df222aa7954a1fcde8ce4f2282c94439adfa95144fa8f106100e4511533aa7575f94bf2e1759a70f750215a370926c6677805e2206cb97aa706fe6df8917889f80670cfff3d3a457e3ebbd2be6e552d5d06e6bd0b8b4c38892b0de87b25b22fe6bb1dbb414d446bc5e20a4148989da9314a603c1f2f3f578a2fcf37e73fab91a3b10d1db0fc413e66064f392ac7ddd4f608cf2e976a02035a14bce18f1e4684ce78d2347fe804e9e28f445bc3a1090cec839f5dbba9c9f1411c718d677bf7f7702b4556c870a3f21cf4ae761c55546c1549e2a05523f30cb1fa9a008950d6645d1afba9faada079271d137b00aca0bd4f5b9766627f864f5eea4cec022920ebab4154c53f0b24b50003c210c6789069a3381de56931f2a1aa11f18dd112269bdbb2a152eece56edb76234b7028e406d92db2161e695b37f3ce565e1213bd51067427175bed7648aa87168ca2a3540775a5e42c69703f21971fe725ae14184a08d3a17d7357e6d12764ea33452938a01320b292b1323aec90fb0e18cc54a7d3a8d268838c8b11f69106930619072ef86092b12920ce9c256bb8d08c9582b38048c68d0501518f73c4d776801e57fa278c5c93da278613ea4719a92bd72bfb23887bf697600d99e376ddaa12d4d117eefb4fab880e597750ef8d86d5298dd56673b5d8823e99929861041e5a98748a55796ad086b9564e997dc06c58aa6334222d56ec7b53e5ad9ca8a70cedb545bd95634a9f458123e76e9540bedc4bfb123e009286df280ef29abfcc511f2c405b9dc1efd957102fbbf384ba38e9830be6e40705c871280100963a32da8c38cd8e8044a685ab5933561f82448f0b258d0015c08ebe2c0fdf7cf4c3da8036a6db78a1cf6f2a7293e95c12c381a466208304f86ceee2257b39942f48998c17c05010b1e387ab0476a3802cb542b632aa7b880052fab8081b751715f0d74a65fffeca0c1c72b83edeeae81a57048ec9d6cc8f92973a1a9d87668067da3dae5691e1d935645fd07fecd1941a7f3225db766d123f20d50f56dc83d92428382e14ae9c2fb6c8f05171c45d87cb88cc0900440a0685024936d1c673552fc594c9aeeaed4aabb4265fff7385c1f7aeac831122fabd45cf199678e36a5c9884c7a0c7b60e43d48837fb6a475f8502f32d3a5e4905aa70e2724c33a352d4fd6cce19c3965acefec326b12ae52598b5c89225b76e255030f28153dddbad691972c2086592b1a338c2478c597ad2be4a04e08c58223e896009d9a75637a84236d06c377e201961bb4cd8693d414c7c97eda7aba093e7c3b0c0090dd6f4aa200751b27de53f59276ee69db5f6c492f7ab4e2d1a36c28d083e91580866aaf24448b1ea19cf22545a4db3ce30089f4334423d959498f6c627c4f3b5b1ce9c5c122d4c3b3674ad9768e3ea8b7f1a41a8509f55e65ca5ffa612417c093f44cdceba778d17d0920ffc0fd4faeb137ca6a5adff62bed81086d2e22b61de1294f386447c6f607ef9f745e19dfe20a083123c492b6b7a9741823b86142b0d72b775708ee6a7627ba72747330f8200c1b25dd890be2fb52438988dd919c67bc2203092d88b1b27aebd4c8199bdc239602e73aa2d15babccf1cdd4a1fe490c52ff4aa43130d442bd5d0a6d69f124ad22a0571563cb9548e34b184f165afa8cfb38b893a4e5fe281f55511c3768bf240cc591283365fc8756d336509c3f904aaf0681e204c3e16709eb5352909ce467b2e9b2122c8c4911df3054b86be401f5671e1fcc5590572468fbe1acaedc08417fb5e59fb15261e1e502da5cead1f25b80112b06d0c00ec562e340a85b87c261134942d098ff5f0fd3d9c40d1cd94e01764d86403425313b6fe00b839135e61523312ea03d62622db04f52bf77d5ff62cde62f546e64fb6ecaac4bc495177c1e2a39a216f66662966516d7a85c36cb72185f6d9bc517d6006174efe0d944a254f57ea9a8f54bd2c2b9c249af89cfebf5fa4b4b09dc24888af817083738f3cf9275311505668ed323166f89f8f4b59e500b7b31dd5aad2c8ecbb059301a546b4217c7458f4161dc9b1b0b4ebf9b0e476d7921227b48c358ac858ea4ab47b0f65e64dc971a08a628c9ec4086fe4b2f3b496f394c2525d0e1f805c1b6206965906f8d74765d3a6630a14116114775d5f50a860f15f042f43035443bfb324d51afbe8628478555227e82a83d06adb2c252c3c8c59ebe9a5b99c14fc05ecc8367956ea8b885142a068a9441bd53b79f96d4e40c559861ad8c045377a8389fd7d5c1c520d794542f4cc2953c8af67959791e26b6493b22f110b475bf8e1eed44826a723ec0c97913ca19bf53ce3ceedc6a97cf72a398628c32be937b2ac8eb8e9aaeabc3b51166c8c2d22c4419190fed8af644c483fb7bb3f840562f2ca0552800c49e683ffbba197ec178019a71770207e1fb1205bbe845618a249c3f01009e7ef8960b53292c2ddca63b3a77a150fdc227d1ed29697e58bb5d3560c7d4fbc34fc171e0b6f6e15c1ea644a46130de91d604d3b44bf24de5559a9cee9b52b4b14b9a14e386fc2898aa7f3be40895881287394459da885e8461cbe2df17445625ab337aa1de10a8b0b82aa1c1d8da277db6c2c7911506553d8443df8263ac7f0cb72dbed2905bf075d58b57447bf1f92d681eb985c7d92d55c7377cdbdc06c519d88bbb303dd0cbd7df8793cc76cd5cba698114258cbe44c7c50fadddcedae219b6760dd95a1aa5a27817be4cc8eef83f36367ab9550a59a377ed7f0a36d0ccce6bec8cd01285f73b718ae3740277469847dba85693618019784946ccfc6b0b8a118e6c0b57bfc00e80958f483417be1122e6f16fecf372c5de6e8c01b4aff244f178e44f90ec77d4189484021a08b0f940f8c124eb7a8ceb426578f638a759ed456c08720206f29f8305adddaabea8153bc5122c847a63a5e7ad17dc92428fee0c33f59b38e0c69032b6e842e1554a43b6392eccda4bd70530d025a490b27ee3c9f3556e41ab67283ca32072a5ee58dcc4e23799021f9b900539a4a747b0b79ad3e9305aa7766799c7f5725804d70eb1d3b61c6469536a77e8a04d8e46702ff15edb6379910b314935fc16c1473e81efa1b2d03c43daa510059114a3f6c0c62f92cb264b651423b49caacc2d83240d152f2364f1e4bdb08580eea280a87a5b997af67764aa813dd68fb4c848f06c4cb0d11419b599fdce171e066e4b6537291ae0a125d64d1c423b5219549939c951207862fad5aef6831615d4aae791053ed5e4bd1a3f6e05ad75bfb221fbb543b981719a4cfa2500a86639d14a03c4d962bb4df5c290af99861f97f94dad2dddbd6a6ae32c50f47c1bfac139024156aeae853a82faa60c5ac14d7cf78fedd61826bbc4937a5a681762f98029192118eccd9d7b0a1200819b55c9b2eae1fd4c75f26b08f2198644070716806a20f13b96c822ef305152e109a16969c3de8bf756fd261a8e76560a47d9813209ea39d33928150eb457feadcce891121d50177cd482fa980bbccc8f49e935fa9c5f1fb69909002f838996089fd5c3903021183b2781a480b959423fb60e611ae76a585f0bcae601b10fc575803e3d4a298c771d17878117fe424d3cd67ee82b455389b0f9f4e037e8e95593bc3cd13fda1fda82db708914462d8d1e82a76f3c1c8e136541b072f621278846ca5faaffc82095813570cd91c6c95c93d079f52340fb6e1c112df0105440faca129dc1e8d248c69056ce4fe97c49795ed487bc76304480bf5f235d4278a307a37bad9af4c4b20d8a3772d6848bb59cbcbde6bcebe724ccbf0fdb6f9d23324c19d4d97cb088ca884b2d122d3083cd382380aeab2a86a2b24cd51c276cc6d20f032c476e02b767deea34ff746d9714ae833d064fd1b5a7e1a54b60a9f56a985ba011110d223f64f0d298a5a4098467c46fa93dbf6cd28ef2630a22d2fc5dbb110a0a6ee301b4c4912455de11dfbceb526feb72ca15c5dbd54f6df4c89cee60beac23636a9094f3d192e92f6fd263b116200b154212dbdda8f66f6441c6c2938f58e7c9ec938b8cce940e42156c9fe12561023ad0fcc1299b253184c5f68cb4e22c58c06723b0b41b1936270fcf80a517b6222de82709290f2a716893b59d6c04b55ed889bbb107cb6dcbdca84a84b7d56459814185fa20fc16b54972b45e870deac4594117f823092d96b03f49d48424a1080495ad7b6efc99102e79fe8b36e35afc7436739b904cb5bc80cc95faef447dd5f3b9897074fb98b029c00cabd2598aca62705fa42fe1cc4c913e9add801121cce42edcc8857d54a596d793378a694b0f5700af40774221808cba8014a366603089986364e42443cdf94324eeaaa3de1de206114820923f8518146eb40790e6d1536488b80b47da5c083a82e439b93911371901158fad2d2a67c34021ff7cd517ab93934cb6ed9e4c9b9d5c32ee5324c67cf4df1a363701a57f57928d9b0055d955408770e313245a893ebe4cb739036ba0c09db422e74312d90d40d32f8c1cf4246da3080334ebeb3bdb0dd09384995727797cbea467c68980a01393dd8b48c24fae311d78dcc621a697e33064b79aef3868c527e0ca2aab62e8e8f52910e16e5e80a637316a2e247003d80134683f393cdfd2fea2e69ae7e0f0ea0e5929a08ad847a453c47abc6df3f89cd23c09a865b6e10d0af289372345faeda58450962a1d6b79d60ed5194911afaf0912fc3c15030cfde948dd77c7957be824940903c265021c806c4de4cd4546d94cc65313c2c0a238d81b246fca1f1e9cfea481ab258d7b457bfb37b446086db2791f1c798b7cc5c4fad92bb44932921da09ebb104625b1f22d3eb020350d5f0f9a89acc1c158a0da1945f61b8650e33e74e906924d08cfd309533ddf452eb53bc5c1d541c4c3606f324b11e9d13d85198e32e43fc2e223dee04e1bf7957f533d97bc27ff2b7285c7e695c53ffd3c41df494ff61ed8e2d4684401b10b36e3add938e728ed98f28175ca6ee2b0d7a5974062a2810cd2f0259bd2a9596fbdc6628d00f02517a8b7a1191c454fff844a1fdc63de49c55a3e78cc0319154a67ab811abbd467db22424640ffd8daf44051b1414becae8f098194a7db9ad608b86a249c7444b4513f90e39bcd95b174a4e75325b993d644593edcd7486ee52b0ec979d7a46a61990f6a6787197012381017a54ee7765410b9e68c7e6912c40ded26df028cb18700c3d1b46858fa129020aeea110e34d77ba475e4c94688c442cdeb034e1027b7692d88f1da941ac4d80039b73e88490cbb399af7b27b5f29716ba4665aafecc0d7a38385077eb324a03f35222c39d73d05490afb8161138c0d8aec187c92c183710e5062a454f2b0e457a188143a832c2414582d804d677d6073648022ffba03594c302969ed9e36b9906187efb06184e73c603ceb3bac853174831cb47438dc853387d3e56439f49d6141943b27e299feb944ce39fc758381054946c7192f208389ba15b2626d82bcc0e530fc6a1a815fef38f05aeb09ff6da9286121066ff803d9040ae2b1960ef43ec6f20aaed42025a13de1532406b9b3b538f50c39dfef5b46afc0b74013898b0f1deed068f72535dd89eb2073785e9979177ebac35dab0685ef87296a8ee2f30019656d6a41fdb0b9e4fa56c444c86f81b403fe622962e68d60785026c60d488ea16729ae4bf080860eee2ab422ad5af8af7f344a011db6a9dfacda3b09eb64a01a080dfc7518e8ef7a6d0a84bd6410d811471a08de4ae6f2a0e795f89a631a08a24103abe28832a9cf19208f4dc6734b0c3982103b1dc7890e88b3665260f45dfd402626f4742d5af8f4659305c0e8636c9dd16533849b273bf6832c723123172876196d1f9b059f23d8670a02bd0bfa8193188fdac01b09b82fab04976298911d46475efbc3dd4bb16eda5a985fa14978b4f4d732d1fbf186518fe81a3a86c41af397671cc381bd6d6bd20e5bf5ef68d8f8970a810c5666032f185df69fcd704133a823d8392970d02dc9c545a07b76f7a60138beecf0b62ef017e0ecb07fdbdabd82cc0e0052e260276b7f3156ea062284e63e155cd47df08ce2bb459fa1f5cee0d6abf54e647fe78b5b5b691f53b30b15a0c093bcac1348804c6da10de839abf49c5a4ef56ff2116d51619b73cf913f52b9f1f7bf1a82f07771adf7c340061d70d2242819470255120f9400bef1e9aa4e941682382aeb3878568de19599d77cb0fb51e66bb10fde40f3e9b1d108d2314f25d6b654f2e7419e9494201bc2882339f692cd26ba39f75333dd642c2c696bd6436a354579a4585b2b2eab1dac488a2c20902c72438a9bfaffa371a0ff069fbb9bca6c84940541ad86d78dbd9010c8f8e03fe92458594d394b8f3d3bac1b2ed6f73cff36f2e3f9481a9c214f980e557885e1d6b69585a26829aaff60a69d68121d910041245e0226ed0dfdc5f831e91c7cfe874bfe744abb74d29980d85b7895dfd930281782d9227500b8a5e44b386c35cc3117517d57548bec35cfbc77aa40deb20e2d63109394225cba6eb5abd72b2e799bad26c9803db1de582f13a0b6c0dd86cc66564c4bf51487cc24c8173750c78e1a21930e43f266218f88edafe401d4c4d16e2fe4973af81a98b2fd592919bd4dfeeedb46548d5643e19b96aa86318ca4fb6712f0826bbbd934e068cd03f008a4bcec4caab8c4fe91cc0b599da42bfa432a21d44799e0dbb668302a329585cfdb9e148bd39b1864a912c20532c5c6860ebf94cfcdc161e53b58bc8b9a7d308945a1871a64b4548097c704f59c66fa9bcf9ed3539be241b68f2c13e6f218d1cebfe056cc4c48fb88ff2a0e5d1fcf6055acbde9cf2db18799b2039eb37f15cbd04a42b48610a0be609a3a23bcc41fcc998eb88f3fdb2b60c002603a9ba5504ac952ae37321c49552e1deedf7d918a94d2ddaf9e0f6cc35337b2c6257339a908db02ff1d452e5f00d492af1b016b54848217804421ad28959e8e53cbfcbf2cf619eba9e9d60256630e738758fad0bd96f27cae445dfa057ca2d03c1360e9b55a919d26ca35781a9100c7cd6b149463f2db3434507aa1cf3a07a64ef191a8502a5fa01f194302dcdd5bcb2e45a2f6378b0807732dc17d9ce3568215d98e96d0b0837bab032cc72007b8f87f8e0bd4806eb24a3505eb66ff56e96f0809d5aa51b9bfb181ff15a7d1d55ac28c002a35289b422754aee9daf009673eba5bccd8d5107ba768d0d8baa56a6bccc747baf6a5ea4f82ed40172a952fb3d4bfa1829d997bb2f19f3b2e38a728190d1ec59323a55113919c829870475b46c64cb2dcdc911e8652a955b8e3c703202e862e8bb82598cbdf81336d1a52ea9d0754057ab4f533212b4db09d7f7a042e5e27ff66e34e4b7e684392240203bd06936fe23e31f127e99db0f77ba8e1aa0b74755af55a6c78a81c7cea2f514bc673e5383c76f0b209a7d40cb03717c0408830aa13cbffa072eec7eacd24e3f02bedd13fe39162ff75c85f76e2d501dd728d0dafacdbdf20077558413661f0f52079f165fd26785879492122bde297d9dfe6e8ba15782a7da25bfbc6d214b29f2b2a57ad18a6c0720e766dbdf2b75fbb59d653d4aaf632576f2528bb3580d6607a9c6ea705860ddabd7b491184400fdcd12fec66145db8b4a98523d5eb3dde23a407e076e622399a1b01c1ad0ad60b0907da38a68c785a8b37723406ac5ad92bd8c01eb48132c9b155a807ca594e2381425ad5e9177343bd00f6b26a2abaffde34ebad011c37a85fb2f5dd015dc040b2b9496a08354e5cecb6c5cde05de6eea69cc667b79c45b8068184a8495d5dea96621acf8e731551f93887cf508b9c92ed6266cb27da4816fbc39177883f06c8be5116032a6a42d18fbbbf13f38bcc2a3e0531781e5a764658e816a0a06f6d7ff62cb8084cb50f45cea544ceb1f85a3963f771072a212c7f0018508d39bd6631ac837770114f3c1ccc73a4c6ec437a03ab7e0324e14985a39ae1a4183352916ff1bd6ba39c8bbc595a3e2133f423155fa2533cadb313a6e00e20f3428c48a2b354e751c9c90800a27351e768aaa0e368c6617e8df263fa46ff28048011ab6df9913a42c377377470dfc6176125f020d468031f743e9435fda67d088824c9cbd2844bf3f804c06ea035d2a70e5fc6bf43d6ebd9e36be80c78b378c47d92e74a424f1143d782fb906ed2a5dd350a69f33a0f4e761f29cc62dbd9c7ddd68374d5fb7a569586aa41bc66c7b410b5666573e6e1fb2b876cb03f4bd754b891c4ee0213963ca77dbbee883657c1cb81ad90c6b016cde63f50d2a140779ecc54f4d2e39da4870ed2294c354858690ce9dfb3fb477c252b872e484a9fc7583e081c41d9331a2b78de0a44e4ec3e259a34f1597428aac69a096055b50f56bcd5b424c7f637d980c664e2c6eb3eba0d760d993e7c56bf9443d6bc91014229a0ba52865b5e2e06ce94256a63dcc4f72ebc3ff9bd2550cce9deb4a4888482f7d5d7c1fab2748f24a0d23d7c906859b35d4272368af1672848073513859f4d4f210c65cf8606c9c409756b2e3377bedcdadb6c3b8226d339c9539254caae4547cd5447ae85e4aec96efee158eb4675d9ee6c6177764abf8e7bd8a23a4944f107d18fb4439e020fdcc1ec0f65301808f07888872fc972c315b6b5691b58930e16a2f056310571a756a9da8851101b47f02aa6a3c41ba3a33c60bc7f22753c946b649b883c633e293e47cf8bb522b2065e0bb5ad9856094721948d00c21af46db75ec6dd298b30866d016a2813639dcc9915a199f200aee04b187473a4168f466e7d32afc34c6d4bd037d9b019b0519ca2e40bc1cb5be0458739bdc5e0accdaab87283709253b58c71e95a69ccd9870a63235ad16d29d8eec923de68c9edad9302abcb99466a37ec1c7606ca0643ebe043c5b494e732de2a6d36ebd1644ce43fb503656302a56af86e960052380ad40d411911c465416228223b3362067ac435bd055fd16a37b507138b961a7c810c105bbdbed071442b98f14a5f0de0372f2cbc02e19c8f047d4b30ee99bbc389a0f59a97e83f76ebff1607ead2c14cd90da399dc7f2b3a29cdf3d6ba1f8de0eae7e2e62d0c6700b7b830a708b53a17668db4dd0ad360dfaabdfb4f1a27b6af5b94b172228677b8225ca54845f871580d54d461cb05b3e5c8cd51aac5e172bd5e870ebfddf411b7e601d8b7cccfbfdae483f064d9c323f03383fe71bb05aab199f5cacced4c60c45a911ebabd18dcec7c328bda05c6bc75eea1b6cdec16e35089ee64b45d534233647d25a22748e9d02634f50011429b6268115a4176eda3acd441dc4b805851814f8cd357931e62ee03a5cd17f9a859d5ab5f6a5ccd6ebd0838f5f2ec0b75ef291ff4d9ecf9872dfa7793d4727aacc1276920f040e6d635c6bbabe2c3b99306ada18f56bb4903a2c51e29ba136f47ef79d9f618ca32b6f58780af4aa94f1678c66c0b97a5ca3d4f91af2490ea0509d53874daa8fa5670cc908f2d190ba11636802261bca5339a69b788ed76e34b9403570b11449de967019cee40cf3c6fb60d6d958781e61bb713b2341d68e25b998bab44f6bbceec2d96f93173295f3a19f3977eaa37cd2c17008ab32c4967e39632940d96e9d8b49aa3d173a9f7dd14dcd2083a94cf780a0eb615bd4c0d9fe264b7056a80ad7f8a2f3b9555e6fe83a0029e2956fcde6766872b2ae596f34ae0957ee17b1988371631f8fe7b411cae22dd0f8deb822e2df86468c25afa787d387837b7642b0b5c3b6ab6499e0aa116fcb5f4597eb183a0ec74cade79e392856f6ea29883ca6148d740db9fbfc8a0591aff1d439399cb57cd13863eaaa344bcd2fc4044ccbd4dd8bc52ab9ba33a7bd6a5e6a16b027b4fc5c20a9060ef0fb6f4bd481cf1eb6b4629b419801c91f35ea83343a8f5357018a6b7739085aef9b23fca4d693e83b6e2b781d7ef2b67f3008eb9e4bd9862fe453dcab6625a5d6f46e4a132104dd178bd9007182c1d3405c1cfb83c32ef6e4edc161a52b4f78f8bdbdfdd8569ba1b9290221b47d28ead94dc513a6ad0ed23258983f7f9ca45b864d40e3f3ef2cafe705b50d47bc5439d5dd8af9fadd47b5d9dba0bf436cdd6582cee3237844e05233bd1537723b6f4f703801d562b6dccb41037936f01d04b46f876dc90f2e19978f7f44c44fc800199a65b15fb95dad7bd51a5b903d851d0615e4bc33fb2753c025859c10cf4893695bf85b81721a7c30953ddd6b4a26051a430215a749aaae8639d587578ee95e914ea9dfc167a2a56afea20fffbd07945ce8c1a7b5bf80f185e1de403a772d9288354a616c7d85cbe7a5212fbf8133bbfdf21b94aab24555bb4ac2cbb5473eb120bb52ea4f581f8b70c4308e162a4cb9f3581a2d51b563d6f39e8fa79a58f856c5e3465c9e5488bed4e0f066078ba62a5311c41f68edb9b2adfdca8dde2f6648c80a3507bc3d512ba0c537df055fbd0c8d6ed1f6a516c8c007be894f76c1f7ecd6ab8ca0cdebf47e505145eb3a374eb89b8f5dcce1f2b038f73b96854aa03ff3049d27388b31d6f215add777b657816675368fb9153728a32752e353aed5f4aa1f6d170784d2bd5188c8ebedf866901da046bc1399e970bcaf48d6f8ffc862be238016d122e15820b5c43dded333cc4423e58ca8f3c53786e1095623ec410d1eb8f695ba1f08a59eafe6974885120c6faf2ce3e21d5657f641fb79dedc80f9887e017e8209cd995732bc618bfc0fc6806155e0d3be11da60b55d9b5d12956f27bd3a34ef1a6bf9f16722815f7ad3aa97a5a372095554976f876aadb1317911cc4aff1bc5e0eb6006e554d16d58aa565636d21fdb4dfaa37b1c25abd93ba91e8d1c2945839689b50158029d333b9eafc630fd9659cb475fff01c526e95dac3cb857a8c0d3eaa417a509e2a94804b3bd0a7a49951648e8c3643a4c6a87bcd4d3768a5707695aecc6b93f418bbb20afab56dbacc91d22c334bf2a8c691db0071206dfbaea9b9b013d1a49226b20c5857274074b0bbe91c13f28ae39b4948a7e5a4812622774975c61014b875581c1cc7d7ca94df266c3522afd4105338ed7ed1ad5d20b260d005b2c4a50f1411de3f25e9d8e758ec64f49db6a8a325eb20fe8206a8e0638adc523d393ac1a245b0a0424ae7a45e3a475178b7a2b90f5198f8eb249dae02b773169ae3c39d6fe506dfa06d7ca5c48dfa9375d0d5ec90b8bd7879772474b5f1f93b406fc432d351defb29a6f1900e2149f7a5b3008c7ffac4eea55980979a70954a80e9fbe8b016c5b4a8a9e073619113cd7c527bee237b40538d5e7ff1be3cd7d8931104b66b4ca49e81af77bc467f14eb99e8eb76eed033a2a40d45ad615f8445484c3186407686ba7c67ca3db7d8cc9a961d8a447f1e4e8d11424f8f5e8408196418315127cc282a0999cde82f93b35fe5959ff93c8b815ae5cf90a2b5f7570a24428f4f743703b9d81699f7e6659a3b5e4a4b30ba2cbcae4584c816328798516d850163a7f6ece18b774d6869e8422fa29ec96017122846390869125b834e4cddd65c9a1af561feb30acac833bbc0ee2ead158859536bd6c68c0a2f453141291cf02f3b246e80710c91c009a25238c4479c4bf32c289aed5529d06ea49d7072e346d5647b9f50a7d7897ea2c19f104dc38f40d19da0d097f20d8a39fb854149949f3d0938b67009c58069d6c7901445f40d8ca198ed622b6eafc5290664dce97aef5abee1a3c89c691bfca2a48d78a7243ea10144b03cfdbfd059d00cc5876cc961c12eef86c5493e813e55b6d6abc021a1b834ca56b8fcc36d834031021476b29557694552e92b9ab2a45b89ff7d8a7203378cbf91a23f60937594c4e7a5d4551b852becc5ac418fc4cfe1063503ce1a75b6106c1644e9e1e8b2ad510e91d52ad9f48f4ef96a74e3a46f4114f6f78be3044591b8f0dd4aedad3f6485a4c5a09274217314e2fba82d414c45aa73a376c65140ba91f80317b5bf4e388a006d104f9c8ba0a3f0f77ba5a22e451912bb13ca751d9f968a33795f45a06bf52bbaf20f889311e9444d12049c777d62453856ce83f05427a21f754c9583fc00f6f01b564ae93677990aba6a5c53d5a86a2bc758296ed1b58a71c2e43e84da0a6e22aaed5dfd5a43811ba8c3a3287dd57927dfe04c2c66549b25a2631d4ac40347caf49a5485b529df335f09b8e411d16aade47d359a21d693bb669857695cd7192396436efd8c55b3de0694cbb4e64fcd624e1db595aa2e7bb3f8cbb623e301b2579d8b3d3fa62632d91e8c88e623532891a98f7bfc6a1e87d293ba6361451e1b5d93374f16909de931dc3d9d3331e81eac5a0832cf06393f6521a99ebf29de0dad79c37aac9ba9edd3394cfc907600a549688bddbcdc4fd2b81a38f571f2323271ebed6eb48d2c1ecc971a3dae22c3c6f16b8e03cf34ce45f4af5a5b1c7695663d546d9f8b47b15de2800775dec5d90b320b41874a28d98cbb602f1bec8209b2d49a8992c6e5db1dea35038ea80883df142a9c1070ff91094b4ed3e33b9bc645ddf6dd42e0a503baa4d000a9dff4e6329f9620c2ec4fc6751753da02227e697d2e38da8d060366a9c42e6ed74dd9c2c7661a1be5e610f1e86c680690717a1bc731a18ba14aed6a26de4e547dbc06b8c49ac29d0b381b5c2ebda39cfdd6869e7ce9d416efb1f327cd80184821f758b0c745cb968c71efbc14421c49204e9a9d3c9550585d95e076959c11349c6ba620bfa511c8695fbef4c5774024722416b296168deeaa22eabd977452090c82fc7835e99af39931a2f013c024b78b1c5f7cd80991b7c489f1f848bf589d769cb14a15691724bc61bbef2178578b00240767649ba520b57856ca17227615ea5ead07b44a112a51343229d86b7d36448cb873bd25cf3a20a1f14a7058a805efa1b47dabda7cdfe1f11a5ae0701f10651b8cf94fd8a736df4cefdbcae48b2e3b7961f102d5f28b537529415c03301b09437f5ef6380bcf73465e4d719517b2a4e7b6b70a9e418276ea54c2a5bcc6a5c209ef36e955a2c946e0dc4ae0c39cdfbd020794b2173bc18076c38b70e7ba5754d3558cdb532d3aeab594c06e722ab9102edcd5ba37310fac05c9e977c2e1b06c9f80ad4fea3816fba8f9d19d52c0463acd43268fe6d0fb86f4bd4818005054422ec9d748aeda31e47c2c8dec8c1d31c8d7b3ddebf9eba6707dfc30db16661a9a9ff6d990f1a2fc7edbe97da35c6b6a315b81388b0a22fecc27f94a82daa44ef50a949de17b0bbee8c3ab7c94d2800a5fcd2f2c48d466fd592f99440eb85cf34c1695153630a818da109bf1c435e2513efc816317da6c40835097d6351e70500481e36b1d5aadee95d027be139b67bb7188034ea179066270a0ea2de7ff5a9e9767618f51507e5e96d746a56af0b914d66dfccca0e969aa201de29089f2f834c1c59273efdec7596bf14da42fa72f6771047f92fe3e4ace53202b9fb254d46dc62b50ac9b08018041939f6317ba25d6aa4fc3e8e350ae52982210ae88c4cf64a073fb1a631c9f7fcdcb3924dad8412d25b596c3828946f4dcf531f4007dd8d2af7ea0a02305071f96d1ba2532b6e8dbce4f47cc943d89d81add1e3ceeee91448a4c42545b5b9522b94bf42ee5fd1d56b2b6d104dfb4b67f002f445ca9ce7729e0f7ac21384af0a66eeb02512609e7667fc633086e6ab4dee71bf0d615b1dbe2e2dd4c8cb75ca8531936038b2eaa90cfbcd774c9b6cb94cc4adfabb94061e211894124690e399a18752a2631d5eea3a3af757a53846d1adb803fc0c474970007e651faedfeac616732d4df492f37025acbb329f2cce668819928477a50504b840581ade4debb9577f4e277de899201e4c522cd9988716260f12e8ebcf3c0129ecfa1e35ce7ce246d55acf497261ef0239585cd3021d84c7a2cb8fb6bd7ce62230b26a6556e676b6efe2e5935216a316b82f3cf2c5da0ef35cae703e6bcbf6884bd4197fedc043a34211363e44123ef4fd01412f0cd2c295425d5a37cad461fd29e9a1f8423b45d1338c310a6739d3421a0ab68290303c179409de2bb57c9899d54594e536aa290c3ffab74d9c88b81a249ee68fafa6a41d7ce7d444650adb3f71b8c8ea9279c88b3c8870052164c49b1a1a65470906e484a18c46b3f6f60ea14b25eabaee8f8bc868ae4878c3506d66559c5d1f0e5e27c51c5735349b6a31cfdb54495ce1f54d80fe2496eb39eaecae33be40f299064575079d2b7b2ac1e7078f8f89e60a4b76fb2bf32a7a004d60df6bd10c852ff7a3c41c97ee5fd094f1382619e3a41d8aa954bb58afbce67c7e06731752d195b8fb741655ec07da192390860494ba6e7131755a4fc9fe9d55dde690c44f569f976dc7dce3182f9d03e3a4e8ea73c48a4d244d4dcfbbb487c833e14ff4957df379e429ed445c22df5c474f445ed87ce996aca563d9b68839c4e7dcf2c3c6f1b624412fa26075efe746052d6b56e956d4714aa00341566f5cfe5b81f1b1b33c73120f9a2e8a071c130bba04ddf4ddb40ed02ad34a5e6babafab91edb8b37057120b2718c79cd7089ed39d171800e82c5edd640230ff4ac04be78ac3443b654e953dcaa76aa461f07984eb65f90666c7c9eaa0e7599139d27419d98336d5be73c707e181700e59c7488448483463ef42313b91838e358ddc9adc5eadbaab8b9f8ac746a4391d69fc2c48ae33cde06ab48950853e02098b8049555ccc7408db4c37036abad0d2e8d0cf652c3fbc08e7157898f4c060e97948f35c85de064bad0a3372c8a68639cda8a85b7d52520e4e07078c6b8b91f2338f4ba626a95001cc3d49979875343991bf81facb91ecf2f660bd1768a8366525f3fbb20e491fe4eba5ef79fc4e3cdb795a49b052c7668e934ff4640f676709383aea8e12e6940b7f3f475919c0e793cd7758b7e698ec260220c0f7e9ebbadf31b50e5d5290788bd0e2ea26a8d4040c3dd2514ce7cefccc70248fa314ddd809c57d247a8cd480cc251dbee37470bfeb66db011adcdc0fe4ca74958dd7e29adb7d0ab50e8638154c5c279505d6b85a2eb8e918756bd7fd3f2c7050b06601c17a81e3c5c3f87f085a19530d0d92fa018685f98c41a4c9747ba3711507edb9f56623224039103f062c16505f2b1764316b20c56a01d87a9113aeea3829a3353548282f6417ea41ae568d192f81a5fce89a03c5946fcb7e80ecbbc2a29be1472ffbb742e04bbd9461c6476a157a8a83a5bc107b20c861a2e481d0a6e987fbf29425bad4bb97bb819c1886694d8c65bf6652b4eb049ccd676fb37f69d03d1f805e3e0aef9519abdb6be59be95ab1244e3cb77c9dd7208d1ff3f5394c77347706c96f62f396f0fba819a0f84e95e503722947fb90ceb7220372b61fd2e646c11d599b43f1b1ef2b63e4c3b875d49132e225373b674c9eec889dc2a65cfcb6cb5825c1c602e755262d3951301e61d0145eaabbdc87f46694d070ebd3314caed545cfc120bfe4922f5c2c4ea6ff68b3094b4fd8d895632892fa2a2c55843c22d288dedaad865dec243f65db9c996784322bc6b2b4b880a887d198a56fdc1ab4e6433972caa6df547a31cfbcb86a9568c45bdd4616e68c202cdfa1d978774190a1b10982a0be7910439ba8e22cbd221d81e4e0b3423e254cd9bf21b408c4d2de2c0abe926c4c43d37534c553c40345843a27e43286158ae8c68661395da2867dfc990aa29396dcf06c5aa25dc4491748330d7c0bb3a3325c06d2d434a212e62e0a1fc9e8511c86d09e4858d7d1298a90bb605eb6a5ea557bd7fa83cd9b501f3c6e0c6ab5429d3f310ac340673d0fa4c6dbb2211c5c9520a5afd6fc339f7f59545ef0dd0daf5cb624ca47c6b2ae36046aba60271357544cb88c91359636942d0671531525718bb4b8b01657af63263bfb9103043171d2762fd2f5e110328c8042934316c7530343ab7938e2feb124d3746dea02f84209049e831a3585bf23ce01c3229e2daecd5970ecf07516e66803f915b1b220f007d7fa3561b96891957f3d5ddfdab70e380044158fda571d5dd85c24620b742bd212c9ab9720d8de3c7fe8eab346e8d7cbbd0577f63547e54d0b9aba88456d4c8efa8ed182b5090b585d2e3aa1832b6c6fda93cd5596edc8cb9e951abc13fa7dacbadd40e212a89d677b6487e25b5b18c1cb3b1b210fdcc60063a2fadd8de6576cdf4afc27147ec5190514964d02ef986b128e01d8ceecfd2479d3bb4094931ea7dc5c31db6454a96282caf800c5d104dfb528e91dfe0ba8af2dfc48a8b8bc113111097b358c9685da1018ed771a908a976433cdcd2468bc0780ffbfa0ddca06b10ff67e062b5c3130518f4c2de6f2188b85db3c412a3233244a4fbf214176660124817bd0b5d8a002f1889fcb3985ca8b3d120ac4846ccec2956324a4a2e63a6f9904599182796f36b139b0e3d24bf1ebd8284e83d676f8c0c19c72531b2ddeefec4b59711ba8b6ae903918bf90c230d79d4067cf04182b17b47af727509c69d4a88e22c65bc5c1d281b521d46f518aa75ea6c77c939e76c30e59c1ac48cb1ee1e1d9d2d947efb6d4ef969bafccdd35550d9734faa559f2179451e74511ce4c03bac58e9dd505b7bb90cd193648662a54f3f815921b9456784a5552c456259ce87ece5cc6131694715a7543082220652fe691107989a4993106a0301b3ad1b995863efe8d2e33218c0bad4abc14078b90d721cd4f89c128c55516eb4b00a9d30d2778f34bafd139d1c16e39f92e46a25572962eca77f078fa1488eae4e27b82c0d968184cfb0de28d085e6039abc60acd42c023f253d7f60f803f31d1ceb40937732b07f87567c700427b31c91f7a821200c04449315c88c4d1b74f3c062bc43eab489cd71e4d07bac92e5460bd7c40d5b698cef4d4c432478a0bb70c33ab5e8c4e21cfa6ddb69229e22af6a5187eb778a32c94d8629b4c90a3063a30f3a2fa953d49b73f5e4beed31cc28645116d15e498d50cf3543ed79e4334a296358aa2a70d1a2f6b2c74012a6ae894b82ec66b3a41db2a419b1c0ba4e0edbe4a8a91bc649a3ddfb7492b25313f021a0951e1d4f9c5141b270c2642d43d5926672a56102e8a1ae482d439347f9cc48b6780571a8ea9913ba6a60920520e74f3ceadfb3ed642901e79bc7b0156e1c1de2584aed95aeb2f0af0717253fae9e84593978e812c5f8fd1564ce4c5dbcc33035fe304c4d336a2ecf01c3bf707ce6d28940a625644988137646193fbef3de980a33117d8f2a51c6dfe2644c089ed5e9ceea58ce4157b910726b70a0a59a6838206aec203ed3bf6715bed4ef6009722080b012a7584cb032df1287f62d0647c30cdcf41c10a7481335312534d6f6421ef5084f8c8fccb409ebe650f365a8034adbd76088d63409d6f58785d84e8528c4fb839c66fc4cad0c3370733733f4de51fbafb9653cdcbe4e88bd8f4dd383d0f2b2e6152fa205d7e50032e1dcfea1cf5c62f0317fffbb2e1c5fa35260df918f617422e62fcbcad4b55c721a04fde32d893994f2cb6563fbaaaf468cac75a3201203aa9124a66520421154830cd3b5212e7a7d89b3c66254db2a6052b4d403648efa2037e71581d3cc90bf685e7aa8b85ea070087328c5e8bba710d0a1a8842611fc1be1eb2895acd6c0ece2a1a2422e021e3401ac78f6becf00dbfc369da25c3004302256b18cb4b811c7810981e83ee3b950ddcc2af0ba3250b5fe8ddb5df8969c67e06f0bd44ee27d387f30e9586d784fc11d7a10a739bcb68928c96f89a1d644524499a167d427e8d43b6691012f88aad2b49aaba9290433714dc21d0a76174617c45afa503a66661a9e4ad953cd1c7aa586afaa6bd4e89d4baa44aec27e3bdf443176c72db417f88b29c5f46a31ecce6080e9b6abc14fa3a166950d7e6991f4a7fdc479bb74677174737855a2a12c557f0acb108a52b10064096a6a287f6f3668d30ad2b9b335b2d5463ae6184d318dcc7a3f314f0a0069ae80a38cccb4fa3cf308cd6a479f4d02cf18e3133c9b12f5a4a78d3729a0c03283af75a380806d2c9ee0f2fd71f5462b529c43cef2478242c31adda857e0b420b7d1528884475287d75c258af00a58b52084823a9b57f4b15c966bda0c284df2400e66b03214094352c4536c03ab59d78c329150919ef924b150ec551949368ae40296508b074dbce196a6fb2a0411f32a63b3d1064e3379aa7ba9983450a09985b60d1aa4d36883b87876659846462094f6eefb093e83d81192127c109791ebd38ef1264bff5b98ce85643455fab78de584bfc0256dc1c4ddc9b45b71e123a128ae2ba63fa02f582f4a774c5df79788a7bffba69af8258af93e4303680888e4ecde0f8f19f818bcf2dabae012939de727e115f9fc88295e636eadf260bdcaa3583a46cdaca032e399b25a716e75776a06736d00949190064b14b34346e71046ed7e70466fbf8811eb90353922b3d7c8649cd2b3c1d938a0c59403d46d2493bbd74ca26f5f654493562d71de8748b1e965ee03ae2aad9cd8e724b552fdadd883f6f8465ec808a2c2f58749170c7f605a0e827d4cf22f80fb31ee33eb3f1515311232ccd8774ab758dc32dbe34add647433f123e8c86870fca57fe10a5885c5249aa8d658788483bc2027c940056cade89327f7b324feda8634402b3c06b4f189ee7b6f19def02526e9c6c1469e9e8733c3378df33eff9106f2b6031a06e74e928afda5e033540fdbd81f4f382ef4cfcca2983c88ac2bfaaf99c1e6c2fdddbd95b42c4d770a569914686a2cf72daccec0073f2d96fb055e11245d8000b977f63e3a9e974da650e3d67f047eb94b740153946bf1867119cf72ffc9d5c520a9306390abd4620c62284f726364f43dff39cf9bbb2483a2fa8d3913a9825b22bc1b17d3801f0a2a70bbfc969171ac886a4f77f95859fc8290053a432408c007009152f7446bad3e987ca0c970f003d3f12106b45629402032cfaa9d6badea17af98cb7a258ef0dd5dd1ff22f1851884142cef6dcd3e5525bcafb79712a8b54a2fcda53166ffd5ee262c5d9f1247a2b2c026712a290952ffe17b17a1e22a72e96e7b22215a1c1ff18232b3286923ba3bc6b5afb3b120d074e3119fe721d051b83eeeaa252273faabb556e42861500ac1e78ac77293249604cbaf14cfabd7c7293603bce5b0cb2a056db58168ccb6ced708a85d02d42994f65c95a6e7ba1157166eafb486325740518aecc22e4f90cfee7f3d529341dab758da13b7b25973a64240bc1255db97f654c71842e64a8ab9ec1a480fe068503b1eeaeb9bfc7a12d9e2143654aa5ecd09511ec944860c10f04a95cf51521928354d69ce42021e0ad3934ac7ab00e00e143ebc4f97670dbf5faf8b8fc082ba758efcaaac0e921b85f2f738dafe384a8a85f7f00389b7739f8385e4c39cdf7cce8c8e8410075fdf8bcb6e6357140875103b2e1cde85fb6ca138b7cd3e2d0a87e6b27df013629a23c2d6691f14f017d4ea8a205b31e52503a907413cf1e99c4985e5624a697d50d0d5786f6b0615e9dd88127aa9e37652670732ec15be7cb09cbd018a8fa8679cded5544765dab3e373383ce77a8493950c850686abc5f6ee234eb1152070be2f0b25a2d65c5f56883f1a548163b185b9ba21157f6963621812fbeaf0465d2c8934692a086f88f4867cd9ad5c5549a2b137f01101f9de331526297a7a044b0e8d5cc92f16cba1916408c301e28b8325a024b307467ad3eebf419aa3384d20a769baa2b9f5666008f7ba1aed41990622e3d4efc9e94b88912ec6d8b03fcd02caf8195afc138f9cc0fbda31a547a01db78aeb3e45201acce882b4672176093e417544841b811b9c53914165060506c278352d96cc1e2cfeecdc133abc9819a899047864fbb6cdf6a0401867a65aab5a6c89df6582c0fd80612404729c18cf1090144f0f02752ba081603336e2b4e1b8f4598f810bd8b5e504a2dd03c958af28e7788fe0714f17fe417cd6a5a1e332a5a5fa099a0d5ebda0757d38c3ee0f07155b6b298bf4e5f4d966b68c0914493ae0902c0e71b64b22966adc6ff8b391f583b3c5765bcdf20253b21de589940756a62e04c3b94584bbeac67fa84bbb242bf9c3eb43c4fb4a807970379cf11a99d420a11aa8a4480331cad004f64fb532e764c67e63648cfcc539b2f77cdf741682ed6a4bbbfc3dc294ec86b883edc4e619697e5cbfdf9434d9e63bac10fb5818b1a96ac8bc716ff38b146620c2770de92cf52d4ccc31a8138899a906daa186fdf6d7c0cec33bedc866e37e3982a0f0283301ca6401a137854492f5fe17ce8bc00213371549fedc65a663dfde5f143df476ad42efe2767084e3f156e28da034464d6480ce4625b250a124dab8ff2ad17b2105eb6c5f00216ec10703f7c8d0cc0e061867f4c16a2d8f68b0ae4a15b4d41d6c8bc52cc46ed651f53671e8c4704ba9a1d0aaa225ba4a429fbbe2700a6a94783ad67da6693e40cdaee2bf2f52d7fa440ccde1aee56fb0c2af2f720038d3472cb37cca7d4832e0306b0c48ad80015dd92729a203038b1a4d744bde4b8d1f94e45f470ecf535018f9880d486565ec0387e58451a3cce00fa9fc7b9e27c12880291671a7d3b364cae051a4844a0c87bd33ff87c3fe85d3ab1a4e38c128c82294d66fcc449cc8d6d861bf6eaeb945ad47fbf6124e084d0015f091b0f3c222f1060cdbe042435b1d94cd1b5ce7fa0e55991370129b36ea0acb7f4d669eb72a0d50e1801bfdd12856dce4ad9d7c57a115409f28425b679c066a4e0ca5a1ef22256f9e9dc523273981f26463a5c69627f914f717c34e909c995f72066e07425d6723589306eed720c152f1c8c0578d0d3c885557689316107065450ea528b364c28ff2f13db4f83dad382918f546a1e5642a727b02c83306881dfbf36aecded00ed2d47bb849b8449a02fc250bfc2c61b5234107958ab27bafd24fc2c1a3d4766111dd43a350b0e2de691ed2c2b904f9c76e77f50dfb34a9d5f45c4a9c114e43b6149ac42893a10766257ddc17df7e7b4c8827a0c27d56dcbd74898fc7ed1b709a844ee385daddc5c0d57851a1b96fa030d0c65b375292186a503e297b3e65634983ac182b0803eb1842f775e6b1d3711da0f152da169efe973d32aa58e86b2f4f7276fbd88014f50637b4a216d5631c3880baaa840c0c50f0ed173cb4a62f7903022bc342f8d8a42e012c0a7a7bded774827c24ac9bd4d68108daf5e97ab700efe78aeb168f7713bf872265ff279608a1a974331b2ce5b5836cd6eb361e7f5f775cbe18a5125c55c52e876ad91d3990613bb2a2e00a69831453939738ac27f1029cc841139e016ebc958523ba6b6cb713be656a7d2ca378e06dc023a9adc211c5285b060c5d28473204f64fe5d8913b98839abb7c294b692992d2eb7659473a484735d8a5265d2a85a5f0da5d6a64778dec42877748476adc7d1dd251cd5cb694af67342e2705a5488aa5488a4b490ab9947316e2581cf5baa4725be45a5bc451038969bb8bdd645359d964d97eb00fde32f02a4628d8b473f243fc31fb9c9b29395d5f0d75c5064e18c5b282a80d6a27210caecea3ce1932fc3dac31000e3b63d41fe20561cba168b79cec1d791724c6aa6e6ef2f5594d446f42858ac47a3cc42a0143a36d0088fa083a7123768a5eb7b8658620378c1a6f3215b6af957e0a65e3e771385e4eef8ac165bf486cd45d08e125283be0bde0c8a6656538dda2ce2068c17963c03e7f85c11d22305a710a48720c6edee521843ee345fff92df00e0894559e80d1ecc9616e1f2fcf4fb6f784d84b7d97589a998caea7994d0f2d71a7a1d5e8ce95294318bbdbcd905210ffad638c1ef829689338d2dced7daf334a5d452f149fa06d3565bfd318522222e162dbbee40bf2b0f2affb5b76aea4973862342240cf359890a513770533489d2da194af5880bc5b963aa364c365f4a286da50dc4393430ce40282eea3f52af3e674751fb4891df3480f489c958cd262839772431d1c045164901131c4c1d077a4c0c3eaa629fb45a459580b79bc095c47a31713f1c080479151b35a70a5fa3a9896945d24b1469d59e6525cfa2440f03b3c6b2322be61da7398d4e010fa354593114f99bd01b9bdbe103ccbf6d776692696197666e5a3e7f58f413041eabcd261138ef9c6ceecca1631f207612a5671d5c266c4d48b5f20d82650456322fc6172b03f948af6de2921bc96eabd10a09e2b74538da9011aecddd0a4bd81dafdbd625e08738e1243adf359ebe36135398efc2a7c53bde50e1260e9d11c6bd4e09315657ae7b6d70e1501ae29a5cb797416eecdc92b6f72d9d05b6fd789511e37c89c2e2efb0a2264bcbaa007062af642b780a17923fc88af82bb694faea5beb5ebbe051dc665d6244f2755b209576a0d334cf214ab024390e2acc2517235e2ffca3d0f1ae2155aa408142a12e51991dbba05f9593d592907578caf2f452806b6b5c3b6ff9dea98207e6646b9030f60506f2ee59535c410044a098b965520dad9a60d0d1567878fb1295b17570d1fe1b55585c5f3fdd18fcfcbf71a89ffb71b20ea16c8ed1de16b39424ca23404c040ba68774cd8b705d349756378fa8cd5fe67af245b3f5adb264d2dcd68a5d1165ab9b96529095b0984093daea7f4aa7d9b99f2ed33af5fbf37279c30e6a03e66efd56bc17d8e5221b91b7cf20432f976278da4a114a1f45e14ca1d3e2bdfbeadbeb0297856a46001af808638d56e146badf521a8476d549712c7b44cfb10d40c9482a8fad5457c14f27462fa7074ab67450b462b5a10bec738d1e1fba61e2975ab4bc75dd1ad2eaf0fdb019fbabb8a0061e75617bde89c2fdef8c4fb38677777b7b5e9586f79adb4bbbbbbbb7b3cca8aca4cb7f563c6b6f3f107fc9883bc871dc47a98719eb7ef582f3231f3f1ef7b160a94767b8ed48ee8b46b4429a504e13a5db3dc947408d5c57484f11df1901ea155e08f18326f0e4a91ad8715df923962745028bd1785825087b6019da3f2ef75e09f370f96037e7cff620fab8bad7acafacedb5cdd4d51c843f889aab4229cba11b9759bad4bb7145baf22bc7d2a87c361b91588bc086f3adce3e4b4d30fb44b491d66c1176127311c1604e1fe7a590c3fc5d61f96c3656a31750b570761f81806f21c0dcb75e27721f251a4418c77ef2ec82dcf38a09cbae9e82ac4406e41fea0e9f52b8c165fb81fc3afcbc7ae61f366c4099e3ac541311cdde2eaee86ce7b1cd59fd7cbd1b898a3810a3deb0b453e7a95de5876c794f58395698e37a91dab55af6074e2a333f9e8db8e942a1cf1eedde7701203d199ee1c8d20963b47e3876d27487ce768a4e82a45b34ffc633efd31dff248ed587df49b2324439d52ca398b7033c5d2a17c3f442fddba1b98a3f11c8d171d9def8da177785efa8e13607420352f7de7716474067cf498610d5ec3b7d7b0430c7d3b901bfaf6d00ce99b73ceb936e2048f532edfecfcb6f3edf5b9e760c845e80ed7c088e3523b18f0ed405ccfbb9cba61c0b733e03b77f91a6d7777bbf9449592ca0ba6ba5c0a41331ad3316306e8c7fb79fae35d79fa9e02fa04bd514b8664bc21dffd20dd4138827848a7788777d80eb8c3d3fc63070b1fa8610c11d11fc47aea3eb3cb3b9e7585ee55ab7a1563ef45e975512f6428e142e7daf57d5d9001697c5c00f955653c891ea9f4b75d5ef3f4ea20afe90aaa2050ad547ea182500d636262dc43357137abd94be317a84f776f04af8b3aa517a5d7452ddd224249a7591e7d9b4ea77777378d5bb89c7aa4eea253fb1400025dee1e745d20d065e9cb322508473c747a414dd336fa51cbcea95fd9baa17e5d6fa399e6d8ab18131b4b95210a88beb9ee77ef7180a4dc3b17bdcbdbce234182769df848f040bf3d606e6744f7f3a9dda2d91810d3ad6c446a0233bad84c7f3644accd7422d166887306d8a24b9b99579002918de57dbb06ec1c18cb119d959d33c006db636e1f4c5152e42da77e79ad6d1fdc5e97a75dfeca180fcb9f532cfa99a9e863fe21fa9df9de12acb0c28a2c64210b5ef08217280f14a000852aaaa8a2a58cef302bfef0ac9b9875fa65df44b792300959b264e9a28b2e9e78e2092db4d0820a2aa888228a28aa50852a381b43a68432090b5a5336f4020c30c080020a28c21086304c1eb66cd9c2850b172738c109511a469131c68ea219e506e928632371c51557b411b13dbe9e506e908ecda476472773f68cd0896451e5a75bbd5912aaaeb8d1712c9f72667a4da7f3f19879eb188906d411487af51abed70d618c526239ae5f5d6b5a189f6b592b10287aad387c1ab3bd7231ca88592c35841bbd8aaebb16456fc96ba3ede1658e3d8e86732ddc7bed2074103ae71e92ea5c77bbeb0d54d70f02da5b796b28d3f65355ee750f07154da96a9e4ff5edf1862c889005ea618433f10cf539edb9db7357e551511bf6fb51dd4ca578a379bafa87c3bf477a37307feea81a0370abf6ae8e7a4efdb1ec1c0dcbe655af2c9f7134ac9545afe9345322650634d20ad555d1f42dde909e2f47c37acf6541842c8860af07a1505d0c8489fed284bbc13871943038e2c943495f940a31abc27c8bb97c438136bac5878ee11855cb3c0751970ec230f547a9766f68e256a71657af99be07a12cebbd97295e2cb182545417b35d4d1e7a05a207f59a46d2387036baa77df0b087f0b09578d857a81b798a254f4f1ce2a547305c08251547c3818036340b31c246f24019e81fb7402437b85bdcf210beb8a56b741ce36a02459512bae52d5d4a08a584b07bca08e5cb86134eaf828a122b9cf8f8b854b6e8c420563e4a72564f60c2111d3b24c742790216603c7528297479834e75d005dce838d0a96f10bb814ee946f3d6303720e176de1ee4fd9e639ab776e83053173b085534ad77475910a017044d36ba395bd9725544b4936059e6a35e8d62afb09aee247d739290cb24489ac764994a57b42ba42b21240f097520102882240882502050d3f6d95048f97669c5b7c3a729713757250848a94b32ea7a84a7af2caf74096574acbfbc7aadf84a71df5fbe598bba79f3467d08d53c34bfa1505366eace55e9291de555697f4f667ed9ca4f902041726db4793ec25ed55ba5d69920781eda6890ab72a15a06338d832adfeeca76eb494fafba795025d77ca3242753a59fd7c0a6528d54ead01d0e6c401390f4e8a16b38294f60f9761f82c091733e9a7f33ff1e8d348a4298ada078c59c9c97dbfb3967c4db4b00e69b01eccb5ba3b72e1bd49d73341c0d46572e25cd3087ebd1e1dceaa784590ae8e6acce72ce9f4fe7dc67388748e80e7c74d45ddeae9381d43997d9e5a0def50974b4279f4b0973ec3f9751caf8605be190c739155ce750ca487d5ae767de9c5b6ef9ed15746ef966b3ed157439f69d93d68b9f63dfc1e642ca465714c26c055d745af2c922cfca8c1a64a852302fa893a9a491b2d11585305b41d79b543a8a1385305b41179d968cb01f8e49524bd8aa5de15694bbe182d0f3f4e1a4dfd88b16f607ef4dbc8ad1e24660ce9e5b113ff3261d36e1be7f3a627a65bd97f821790bc79f27f1276e69316e43873ddf556ad8d02a366c688657a0cc133776116dfe244f0caa8ba1d1c7ea2f1e30547d44a86f42fee5ed72297ac27d0f5f1350de2ec843d9fd35890d7a387ca463fc34cf1844b4ab0354bdb4d1836c9257bdead73ffe0f0b13948bc5b7bf225d636bfa8e6c9e83cbb4918a82481369228d8f944cf8b8abb4bbf201d57a434c58d14c96f9f86419133e3e3e2412133e3e3e9ae6e3e3532a31e1e3e3e33e30304cf8f8a82c8c8f6a890c1935d4e0e3e353800c062affc6a87d29adcb4e7a6192499307558b85307904c95f94eaaff623cd92b0958c2493d54eb68445fa7309ee3e255c7429259caa218cd29a4dd05caea7569826b050e8de8c4432994c2617d38d00d954bae3fa99b71ecea63e8cc7e8adb97393bd15311d03a816b5a8e52e221164e9bbd2ef4bb7d28a96cb0cf27ae5437f43845c2c47bf8ef426aef39113b7fd39ac45601d92d39e029aa7344df5a1d7939558e584ebdc95e0713740284c16a1d32b58f1b3b0c7e368407f48b8a017a272726bbc1b345eba4ed7b80fbd0859d335fdd2830f2eca16a6f439b580e6098c53164e30343ad06ce185cb4b9617e93684e190abcb575aa439b5c3f20972101817c82da7d8e2122f4bf194d0561bda2a60618d3d0c621287b69d20fcccd12df98c8c94e071b76bbc081f9469b8d2b5d8f0457fd80f0dfbf50e5ed4a4ca896bb966b9c4d3c2b05f5a96d5af6bdc71d5c0c67844acead57bd80f965769311ed167deb22e6550554c50af0ed3a189544ddce8969338965b59db91ef3981a06aa96087e7892580bc6b3601c89d4d4d835650063a850958c101405fc205b905c242a21b01b201b9f664041c0604c8651316c82dfbae287210e0af1e7f65bcf578eaf0aa5753f81c449ba8d699b8ee9d4d7b7c4f5ad1254eb5ef402b8a1c0478cbe3b4667c5a79e331435150554d885449b8d11fb51ecd5a7c2468ab7ae25ade035a5512eeeca14accc539a7db49a5bc264e11d143f4e90e70448460c6cf8c43adea39a0a75e27b6637ef589e9705e2c8183293e382f96c0c114354f1ea0a7d93eea6db97e16e371cdacbd7731323251294c40aa3d0713ba88819d1f1cccfc03ea33c668493b3110a803763e0e6073533059f23af02d1e796b2740d8c9c2142d2af84294243c4cef895dc0f1309b89b7328ee544583904333e7af4254021bdd30d8fc05cc4bcd6ea8de1a8d5a9db5e3dea53f5e4e2548faa245c1ceab0ade6ed7d159282d7c52609cc8d00d940d7b6ead80e19011cd8bc4cf162091c4cf16209243650d5842a09ed2f87c5a91e6b75d08772de7abcad7ee150b7dcde99b51879c43906af26af73516eb43598e10ecae3a78bd0235629711f76039af939e10583946e9de5d269bd72337abff820c663e6fba4ab9070a594deedf5613a5cff8b0e863609bc95edcb578584fbe0950733c5dd834107edcfff981f24c344f0b12096bdf2416cc8dd00f278fec70e3c220fcfe5f9e7f6f1fcab42b5c47d3edd161e88632e56e8d0217c98a66e9c4b7779936e490823c6437a741512eef41dd7f7a06e797c530701a2f8b9859fb90b35deaef19e74d18231f67327d3391a97839e06d62cb738b5235f4d4985f1db61f7b743242caf7189eba46861e5bd2b715d143f507e9b011320bd1f0ee009793b10f613aa3bc0bd3746cb618451dcf731c6b7e8fde94f5a98823ae46eae47a3f28b0e3c290cd1812fbea0314ff117d3554fc2e82266c87d8e04c851458a94b2dc0d3a413939f2db2b52448afbda639314c4f8de8414c2bcc5f7e81756f20bf2e5c82552d798578cc2dea5830bca570689716b204efbf369fdf0523bdcf7145bd802162cae237bba3fec9f3d517a68661c952acead666868f56bb3b965cd347c6cd93b2411b22042cfc39c192ae30d2aa5c1dd56770a9e076d949cbab13c5a1988dc430e1d7b445b3ef8d08ec529afdc038859447b8b73bc6db55aad56bdea6d45e3b5b50a618ef6513a7c9c9871c82b983da3c17d4e4a7275a899567b4ccc4afe40f30a875ebd292ee542a5ff2ecaffe30813c11e91bcf9f0f1da382495a33fba067a059b10e92550c65a17dc2a418f086dda94c8ecd9f38b3ea265aabf2a354daacc8d64733d4820185ff1e6b0ac943c30e6051dbc5638b40dcc2fbfdc416ae5547c2bdfc48d879d778e79c8d1eead2928243da04c7bf486413b6999185413d7a3facdf5f010851b73217137ac6f18dc976ba2b82e74a4cee4cc2c4982c488bbe2be703f4e8c19a7e989b2435b5d822e5dba507918fd033352786e7b8ed1ec367a7dbb226773bcdffab7e7986fef5337d4a7ff7337ba22b865cb962d4f8b96d6a2458b16a8458b162d518b162d5a64962c59b25859b264c932b364c99285da0b0b185bc6004199828595aa84891327acad20d1b6f3db73e9a1dfde6fcf435e035fc51bdd4438a16c1fc3387833e2615790b539153d3eb43cba9571a8871e82ae1928b365c896225b8e6c39e2610163cb180d650a1656a012264e9c885a866829a2e5889623241630b68c614199828595a984891327689621598a643992e5880b0b185bc6004199828595aa848913276c1843c22812c691308ec0ecc3dbbdf9c1e2641c186e8b9371373f6338197743ffbc3e5108b31d0ac9d0d3bccd9ce97d998f112ad641788b7950bcf2067a0fe18c3513672c5cdbcacb5d7ceb9a13aede52d553eda9b5718dbcbda018217eba194f058a8c31c65825c64813a765599635a36559966559303715d9552ccb82588ee735d02d48218d3fadbce5bcf439e79c73ee3479e973eab026c572c089659edd63777eb364f7f40ae6867285ea0e70af0a21467d435551146e8aface5378e5ed4a09eff4bfa04b2c490f1d04ba26963af2291c59d986102d036de4d032d0b73cf40d07e8b0780eb061df51cc39bc7d330635a4fb86305ad1b22ccbb2ac68f56837a10e6d438796796e394d8d11568f6e0220ac31aa8bb1eaf3cbabab0eb3f62a41697e52b7bed91c735c4ea37f80e6b71e1e0773e90ffa86e548e3adbb906f39dcb025926f32defa1680b7bedd922d612d00ff9c24e39f6725510eff3c74b37334308f5e034578f34d00df3e65752f67972e5d7e2caf383e08bbb73a3e40f332e3c4ec621cc34f152a55aa54a1824547e99eeee99e86f263ed8c56c426e4a7f5de09b61d5096ba9418871c5afbb93b3c0edf308a1e4a410e631115da27eea3a8967993a21e74b58dea172acb9594529aa773d8e53d794f5e93e76449922449940cd141f8d0ab966fba9c1e3dc7cc3df4e8556feebd6a7a7b4b05d1ab1682875e750f116befa357ed2ed2b636c61c0d7ef42d15b34ad17c90f8383a4c5ca3030f99a657d092d2a7f369651c275d8c93db17c6c97dce538fb057c6563f676c34913969ac43cfb084b4e7beb7bec5efc73386dbf288603976a004b95b99beaf9848d30c2ddfdc144b07cb2dcbb2acfe9132e6a5dc72a4ffb8c4dbd3117fbab3f2269dcac7f7539b7aa1ba982d26296225c62277bbd6c73f9d9f2f6f169d99d8bdbcbd677fc6f77c3a069afeb03763744a13e37b8fe6d1e42d0787eab0199f5c7dc554b67b5d1edb46c82fbfae2b4639736ac7cb6c89708cbeb9d8cf9238468bb9b92b4888bca623cee9558b7a401b226f0f4288ee76896ff498b71c1cdef254f42dfeecd8d3abcd5901a265ba47941b93d8ae2e8033a8efb9506e4afacef7d8acadb9e772f8a4e11390251ff5ed59899bbd027fe3abd7586bde362276befac322cd966f4418f1d59f5f1e63b6346cdeb0fa633ec7705e0ef2aab4db7b50f5c8e3c6d7ec1c0d48a568e1ca4707c106597e65295af8c11c84ab63f8e6c683bce60fdcd8680eea1107a831c75c877edda8573cddb91b3839371e943f70e3410eca4040aee3d0a9c37644a7ee96ec42c5b9cf53632032861e1703a17428fb75ab5010c2ee28a01b11df9b0f78313a5075564acb771e341fde86f8e715832e4ca55f78e75fb4c12b80f459032d4ca2e88344b0bcb6ca09f7b9f5fa50ce451a3178e7ef054e01345c012c774e84dbdc19dec1978277fe5cf0cee386c3cbe4d0354a20932808176288aea172e71ae840d7a8c19de7b81b2377ee01a700cd9d83c0d520790f28739d52302fa8cc9dd7401b2b77f4bd1e82c75d7157789e90f9c94f58e52715a64e6bf00bbbdaad97b5b36bbad68ad5f485e1a88ef90cb4f18cf4b0dc88112a15aba0b88f7237b61772980dfd208751af6901b8aadac0256431dc6f6d3f66b32c7ebd2a8655c744490871e16243c6c5861236c345ef6bc99ab0196e037e2f00ecbec62e942e7715abc2a832ac1846a0e5625431c285cbbb301c3623eb10400e63868e97bd93c2c5e767207143185ca2781b44efa47049c2bb8a55615ceb9d142e4dde556c5d0098623afa316b0652a98e8155ac4a4300f0fbd28ff701f00ab22a5ce3548d11eb698b18f374597bc2f5aa3ca8f94e8a18a2505125cc66b88ae16eb9e58ea78af1327a27850b96920db58aec08f7101c8d5765066ac600f20c4c061598f83660f7a31bba09948132d82fd64bb278b9b01cef91b8c16bb536d810aea2aab2382a5671b9f46da81e83dfab30944a856139dec778bd560000bf9721c27ebc0780d791ad38e3f7356035ab7a2e751bb07b15f6e37df66e81a361b90d45885c556e37d99a487ff5262ed57a459dd2ec443300d8c560f700c0ee33768ff176dfd93806127f065ef217c618f72f9171c4dd1e152a586018ae6e31f51ab025021f0f0a752f912b3c436e9059f90adce8766833e22be86919aead015f4f97a8d020037793ccaae8d747721dda7a890a379333a460703bc1fd0485db09923dcdcfaedc4b4eb8997431e186d23dd6bb523321957267583506dc447805b09c849b49af32f9f5613afa47b949cb586e751414cab23ccaa07203ee268d00cb65b06b046cedc45bbec2eda4652c6fac9764f1fae26ed22bf82117e55ed22bcb43b8996061b1ed95e532ae881a66b30c2b24546db94eca1598bc93c265c9bbc7707f35d987e1b05986cfa54ebd579663b887e06858582f71342c5791e16eafca927fda09c34131cadda879db7994a301632d5635e13a296160f25b57f196bf33fc160ff24b1dc7f4ca9a17ad356f2278d0b472cb8891a457ed1efb8b5e35e4690bcbb793c24593ef2fba8674afd654430d98f64ae52a97e1ab98c630ee301c29afe9cba753deae81ae01e32f28ef2847f43c49f2868c61e3dd918df785ad585c1d92401b9d04ca34952fda4dbead4af748d75079abbc6bf0d3d7903711bc0caf813270176923b98f604805c3178cc2d04aafda4f58da4d795bc521df5eca9b8ff1ed5ade505bbe9d94241b61f8a4574e300c6158045a0c8f40245460c329df0ea202e5dbafbe4abebff886503585dbee90a789341277a38bb8ef28e3592deecadde253b5a5b7dd69f9c1c2867752c40086efa16bbc2d90d2bcb99452d2f7e3ddacd9e821cb75517ec4b8bd7a3fd2faf7b3440984101ed12b4885bbb9288f0907c6132f8a378587fe943834dc780f5142686006ca401bae0344a00d216d2306fe0c79969436487ccb71a4ebd0ab9a2ec42ec42b4801bec7857d5c58314ce1be1785f9a2301f161313eef67eb65c0fcbfb4252501644c822bebf8214d1565b9d644e3221bc1a1d74e0e1c805e54dc7fa78f985851e60524acba5e538d20a59d421929792fab5540cf6da74e28b9eb852d6e810df87906b833d2c2d03fdbe944ebda61370371705cb43eff1036d841c08288a50e5a1fbf0ac40fa704812dbb3f2b08bc7f09024a816dec23af1a50ebd823cf4aae6aa96dc4d473ee5c14a2c1479f932d758b93af0d0355cf3641d7051648b13efa45831f2057827c54a927f3fa22184406996d2e400440fd514f745f8e4fb5141b9eff17c8d5625c5dd5e93a744a5e46eefa7899225fdefc745f9f7de7b4d7eb29fd1cffd096388e8278c22a19f308e603f369bbcbe26a0bccd9832d5b2959bc07c43136e7d27658b120fb17752b62879e835baf860680bc1d32746afda413f5b7af57ef25585fb9a748dedbd2d3cefa84094103436ed39ee867bdb036dbc6e729b5856b4228c524a19a584393e79ef3df982445803a7b4a8e594526a5974b3160e9dc7a4ba187f503b9099effc43f4a99b97e45b3a9099973948fcae81efb90a09778b3fdc0f0fcfeb643f1d421dfbd3c737901f3b7c3b1acf3110cb75ac1d16f89ef163877f8e46b70f3b383c6fb7d2c6b38149a8f0e19075513681c8ad09407e416e1de426b05eddd98070ea39f6b23f1789dce6d413827928a75ec89f87406eb39090835c88f5eab092a321240920461b12219fc00b03135284421eca4698a066468453cf1dca40dfb1c170ea652040847c4451117036221f6521425c68c786da7c1b01d4432ef26de608a1dc03ca2801c33b3616efd8447f38c80ef88f47880f28037d8822a00c74201170361d8032d07f44c0d9843c02ce067b3c3fd88ffef7923c23499024b9e9905b2cf25a237e39c8fbe817fed1af07030284c8435988909087f26b9223e06c86bc27bebd9e507bc4a2907d597334a83553d19fcb9c8a79471ce2d19dd97408b599bc142f9c78097f73ce3907a382c2f5ebbaaeeb7af29d9d04793bd12b59037fcca74ea13bf788fbc92b403bc4b20974479d366e171d84b8e5457538875141e1361a7e836d9de1b7d85c747737173e1eceb8f9789df8d0237e9d5550ee73b945c7ee86b1716211b2c0b2e563843756781c8d9b2dc6705246ac86d585125e0843f7aa7384d21ac1ca6f3bbf0518bf7a27c50a4ebebaa782eba46c310573da359cf74b8f2a78ebe109a0f08215ebd97ae9f16d9068e47f885ef015bae06b6cc157c982af963dc183301d59c60a6bad5debabb55a1326b4ed28f9ea4e8a95143c08ef7cc8b7cb3b14daa663ceb7cb2d1d973fcc013b7eb9298890a4bef428a5acbe498f32e2c8ed721f769cf0cee1b05d3f5c0eaf1c57755f03dbaf0d12b1f337728c31d76771f1aec6c55bfe23f2f0d0e075a4bf87d88ed3cbbc89203a949609bac805ed482d95464a2855344517d110a1bcda85564c6813c1cbfcacb0dac5d7167ad46074313a7780d026827fdd8577a14cbb83827c1ee33d93839411d7f00035d0012987f0c097f8f1bc212d032960a7db7bc3112c8adf0b492220bcaad7b431d7948b728c39ea2d94cad63014f9ad0033202e1e7563c81897a82ea646f77a3ea1af76a7755dd78583e2cb2986e3721514395487e170ecf2cd5fd5e4c2775292e8f9cb6b18de7ab52c4d5587dd8dd1aceab917971b7a27858b9fafb82d6cba4acb7defa4e0a4c8dbd03b292c81869fa1b799a657d64caf72b81c94b799cbaffe47afa0e4dd4f292dc8f6ea7289f198d7f52e2bbfed405f3542b5d40c17c58143396a9b01d9e82279f5ea6a3fa1e2ab5a28555fefeb4462ce39e7f48751076138e69471448561d468251694f0d7299e215f81db2421f207c370181223af69581d44e783bc525bf1b3b9188991679888db644ec29988db8c320d94e1019d5684697a5571c87390e25287e5a858a50508482aac5e2d172c307938f28799e1ab77941f80e1ab6f443c96b11cfdab5e819c0d69733dce260767330373e815c5d32ba63ec24392a8be02b719597e618d0a48314daf2c27611d5ac6f2cc41791e18009b19619a4680e575da8a859f774fb18e991c64487157bd32c0ccea2d5fe100ba6c05c394df9c8cd951a92d82a224a1f51ea5f35d4b4a08b18b96a53d1d8e0b2bbb9d62cb2ba5791301ec2d34a712e33eed391add64b8312dc5173ced2ea6510f6766ac170f3d0665e5fba1db683e6ee1a3d374932c171563e4c2918ff159519d37b9913a881d8c09b8afbd8a2acb2a06b76b38295e58f976cd3b03d53ded1aae1b4775af42c2ad211c6ce1c815572b95f0c954ca25534e994ca44c4ba5cc0699f1242f994c265ad2d129954e39b6e4242f69575c512a5952e9de177b4529cb4a25189852a99479c96b56c29bfd5286393c79096a8e5372936b2537697eba579a4a6e2a95ae759d944d011658608145162792674e2261181f6592c55bccdb69a79d76da6961606084781ea6ace4d968341a99f215e23327e54d881ff944c5c49cb2c88979521624d2e944d2b417544e4c16593652a93e4399306a74da6ee962534a88df72626262626262627a15e3a20861a74c9932c50a995b9c69d64b6e2dbe33cf925bd2c9ced1f5eb0eb35ed337270711ef493ebd844b77a3a79c22e5548e9393fce6946f4a79cbf9d2cf936f25bfa59ca3bdf554c992fce4243f6956389d4656d0ac96b793cd3213eae545b342e9742a95eecdb2d28b974a3ef29797cc5fb2d2e964f2a169a91c25d7fca6e4da8de6d78729a77290bce437a452cc8ffc46a3c979792175cdc214f75ecd2dd6fc4ed2f5e9a3895fdce4d65e9f25cf7cde649747d7f2b03ebde4f7c6faf4bbc3fa749b85fcf50c756f4e5d1fb9bda429a620d9526635cd39aab529ee75ffebd875eab76a9ae6a60c3b6979ebd71ce5176719a9e4a452c86f86b986dd672193c96b5ac3ee4f26af2113361a91aed7ca6364c2ef43d86894b797e152bcc9bca4790dd446b83f622312e6598ebdc246f8deabd354080c480c3e3e3e3e55aa54a952852a54a10a565861851554b8a7172dfe487b29b9c94d5ef2919b7076329d847cf6e2a5f84164bce6a697698508f909533af59bda54f2cc4b970aa51215b20ce76ea5cc9248303aad528d5ca3c268e4fe23bf23a73e22ed8c9c342af90d95f2d65f72948f30096f453ce9e525bb8675fa372260c94f8e39c94dd8f58a74bd24e431479d4e5ed325ec3e842b867174fa4f39c8fbcc379dfecc6f966923aff5b4c5bfeefab3bc3d123679096ff14ba65c034b1834f24ccba41c7b7547a351532175075a68a18516545041051554a850a152c5c92d3e99dcbac984359ff99a486eca46594e91aec949261f6926acb9c332cdad8f1cd98ffb41524f726b4a65d9013b4fca9c9439c9b36cddf5ca9a26de7cfc44999ca4e9c4cf3293db39aba8c264b224933d9d5e5026d7aa309df2b6f3271f6113de7cbc092633997ce430a6d3093b95b0b6dd3f39c44a8e63f2eb25935f37f9c94bae9d4e3db84f9d4c7e32b9495b8dbc945dafb4bcdd8fa95cb0727d987cf8d0895674a2159da813ad5c1fa6542a855dcbf8f84d27e2e8c4d7e2bdf7ea44f73104295ea68f304cc9e768e4166ff6ad2955ca3737c3786d3bc230eeb091d7348cebfcc81bcb61f2ac94671e6930f647338f34bfaebd482185a6bd8c5ef276b59155a9a448b9c95dc754fc5136d2d1b61cfb385a0e42f2518519deec8f321b6daf2c4a8727952a3588c916d8bc75867c9b13631836f9ac58cd4e356b5e319f23f7cfb22c1b79f5e9d9e974726c08cdab6378fbe11f04e6478e9148a411e6d5b16d88c7bce26d88af2fa30df353bea1898b651dcfbc662cdf907ce4241fcd5ab718e9c887695b643ad2569fa33a43d874e72f789b58a8bab59ec4663d88688b2912653366d450830c192a552a0503f3f282429d4e2653a9a4692452968d46f78a44a11086595b2b08745da5d2689437aaf9366fa05ce49bfc929f4479b33ef350286fd64fd7f0cf53d6b4bcc5cfdcb91a23cf86f84d47e2e8c8df74e4937c8e460e31d368fa4febcf475947be75977758ff1076ef438cb89857a490dc6252e6b68ef0f46ce6693dcb32d7b26b738c7c661ed7359f6e4d6e3dc32953beb9d3b56cdd5a9f7923c1cf4fcfbc0666996b5ed3d65ff20d4d5c9b7352d6473ef3cd299b6f32b75234cdb71c2999e7482356cb2c89248dc0b89094942df311ce7cb435954cf3ccab968d308e268dc0868df1b826bf789346fe3ac46e343765d7ab7be5cdc83510126944b484043f30f38a105ec57634aa236c77bc37b9c5261f9570a6673e473ef18ba37c94351f653eaf4f6bedd5a68fec8bbfbc78e6136f39aff9c8b32033fe7a4622dd9cf9c8339f23bce5fcc86be0e441f2bb65fe92b59f9eca722acb3777a4f3ec75df72b427fd208201aff39e0340de93486e6dc92b90e9a34cca41de8f4c7e83f9d63040e16de4ce4f781b5d5e318cc40854e049e004793fbdba112917029393a89ec4563dc8fb90d7ccb529643975e39fb97fe6239df73aef49a6bcedbcc947382be5eb1a76f7b36c3472d736605cd3aec360d7a31c936b5e351c530ef29ea4bd2795bcb11bea24af249c79ad8d3960a74df83d09f793f2f69e741d6226bf79d3dee4359084fb4d78bb0efacc49a5dc03fd916b79d37ee4996759c6a9fef076738ef6d55dde51fd3df753db723e75e37a7ebaebf99971827890f75b90e9cf75660ef21e870340de3fbff113fce38171213b74e9d2a50b4c4ee23515ad415f54550e15b8cf9d942b43de8b587b85cf7528da57832e9c7827a50b9edf7690f3fd173fefa47c71e5b795942e8cfcaa6bc8c900ca00226e43330e2dd338de0deecc31beea2eaef420efb7b7a9543131c7bec27ba804a52ba8444d9774490b15a21900000000b314000020100e878442916034a2ca82de3b14800a959244724e18cbb228c9519442c618431421860000088888ccd036001128334a3e0159c946b8fc5544204b63232aa5c7706a6c379e132704f1f9234e6e74ecf27aac9a0dfbeea5fec77626da7568ce0f5f2ff99102706072f7ea9327bb1a83e928a55c3dc10d0ec3b3c5caf47012eecca2b26d725192523d977cc2dbc0f0d390f9f1c6891fe12d18893068ebf652bb867889c04f8e3ab265b4de84e104e4b29aca6cb8ea6531088d27694e44d53287d5aa5d2e23c8383db52fd3707d1ea9312097b38252c67a9598b75f621b50f62e8e235a1f08b2676f23f5b1f27fecb28c02f2620bb6bf9ce864013b08841f88c402875cc753f1e29a1899124470fba52f9408071eab6c9ae42c47dce112142be6ea4f316de2cac852a4a7a25e73f8c6eaeeab840cbe99f25ea037a188ca492e11ffee72cc43c160c85b23cfb71ee0c1b778f4503a4a437546118f43eafb4c6df3f1af7189c1bee91b21693c0db140b7ce02a5740bc4ff0db41d607de176b8f3460f7fc2a2115075e391311a768832d927dbbf719268c3712b863aef2c920ceaf1e5b66725d3b5236e1af7d30d05d2a3cb91e83734b3dcba0e565c424b5341f857c2fbdf3db7412eac530c8119f28382668a68942d234c51c5d7e51bef3272d9f16429f36a9e659a62700f1f3c083f729faf346c4911b450591a3ea157605346790998f65a922fb44649142dc222f3a40350eb5b06db098f5d15c0f3ce4fdaed21636fd3ee7b71034a6e4ccfb08a37373e899924468ff8615decbee35a0f69c5b96bc8c0d5f60ac6c63df2519ce96ca2a8ee365fa27834d94540039b84e1a5857c4b1dc84701b82470e03e1116e16cb4f6ab842c35f5e7d156e3f5c8e0033bd25c75860053937c1ed65f3704ffd16ef6772668cb04603301d3af111c663221b5e4ca9005a65ac030bb0cc958950bcd9f8c0d173aad7edd22236327b2f3c10f57e0ca13be48c44fd6b5de9437fdc551f82bb691bc4a0d8af21d774210208af240cc60675164134fe3b386332c71060a12d855af8fcb5d38236b34163390024029b26f09814f1d97813cfcf75380624b98bac6b078c1ee247058c6d208cecc772e7f9e62f5716c1ea9b26a812b91ab7b48533d35d85e0e6661a1b8868e330454a6af5d70e1c62e961fba6492425217d09560c65405b35b131e3898bfeda014cc8366cc740daee602f3093834a9261b084c43607cec7a6ab141171070680486f991027321e69c51e8aea20ea6c81b46910f07b36420bc2d7d4691ef96dd82da9f1aba354adf9854dd243190570b693a80eaa3654e43c42dc9c16663ab4646e325424c6a916d5200942720b582890813e3203340aa5cf15d8eca3551263789889bdad879fcf72fb2b1075bb99de1fd690f0ee9587136968da8564b4775d502e25f7c72d5373145a611330cedbd292676a43412dcc348d6c2a70d4070173487b0ff19a0990ace1fe71d1ef1ecec6848dcc28fca9d0a7603ecbe7fd704c13e80ef93b3f524d4c182d4990111eadc4b0f5cfcd547366be7de288f1efe15391415b025a7d483965e8281c316873750a784405afaf38aae318f264296fd5572bcdcbb04c237237f881fcd01d83ee1dba97e6827f1f8dfd5c72c3d49eddac0f9807e14c9cb4cc384752b5fcd2a97a99eab65c294c35c1623ecc736ef2de24a18a1a7c462c12944d543e61c89e9cebc38504c346d50ad6f2edd4771769cb5b2d7ad65b45d8a7f78ca12c1437347da179018a283105a2a15c4347fad1b2b34061a44cd3622e953665814936601d6ea2d90adf060c8b3fa609aee6094fbe1793ce9044bc8b4f36352426fa371db842d0373374fa727c5994b270b1364f7e263e9f984116413cabba701761b65382acf6beaa53f06d38fe120b386fc9f173dfba6abe2cb72bc1a4d91a02bb3f645e8ff47b2548dedc21557a1bf98168a2e22a032b620fb44124319db1d884384d8e331d4f99be6fc0ef70c107b762795cbfee32b5bcd3241951b8da0484b8862619f4762528444e584dae17a8cd40272d79967db2c8385ebc9224007daa8634a8fb65d6d532c33e842d62841b222aa153603c9eaf13763fcb3d57f5718134b766349243af8d632e86f0edb8593332600e1f1606106ee69c32186e6a5941f84cd3e9031d0289249a0cb383a471254f1ae19398d9afba9f0d04c2fa773348a2006693f0bf9a2c0260f99095249e9fb4f7a02e80b0ed13381ffeed4c21a2b0ceb2296d298d2b21afdad71d37a4962c9e5fbd7ecae1ff1470bcfec89d4ae929a7cee7e22452891998b4d820191a42f4cb62574505fc454795f4bff4749690e5ae2c372f85e2de79e28a50c351577482c482d61a4e390c58e8bc8b2823cb3b4cae85150219e635ccebda188e6ce160a48e56cc71e91719c900e431fccc9e11d5d2a3b12f808359eaa80a5b89b7c08b610b16669ce4164289142cc68507a901a8c2833ca63f22ceadeafc3f08904f2b328a066c9b5f685be9ab1e2aa844c22653aa1f520517d1e0c87f81c2be6512056d97f25c79b8873a003ce8b955c8eb5bc358da1b756e21307eee2497fc713f397464d7a098c7c40a12535917b60b2d03cd59c8b812883037d27718522be155bcd018f76662de116e65465b1bfd6b05edad742382e10fc549ab4907994078a3a92db4536c23d8e71e32d4d0729ff3975f0986f3825db9bf0415f1050bb48431e82170d075d4f855802b91792141c4950b0803d878e1785f03583408ad4f17e823d49d034918adb94aa119404b2d6d5a174ce284fc43c37b8301254c1518ef038144403f72b2079bfdab10c27a5e8a2b96355e9ccfa2f670ea7f4f7d8a8de5d6a11309b16a849b5428d4950faf320e0a37b811fd9585be0a18406563433b4f7e44f1a75424e604bb740682b1e44d7a28bf223ad72ca8b64ca39210427afad00d597ae9b6d9f406052d0027bd0afe0c6a49e6edacf1d34811f65c7fa734cf019e669438592038ffbc0bac695005b245d81a6ee48c6fbea5bc2deaa440ce2eef4384ed4266fa1f6ade09525ba9010b1b7e646e12e680da79e1c27218ac53c7e86506594926ff4badf6f09526679099b48eb6307ee4a8ab7f5a01e5f150377c5fb06ac7843e339ca56eb39eea6bb53d433b5f328ca92a88abb60b59cd76c0a7bee22a0ce21d99fbd1524189930806a443cb82bfadee70d9a04f293c45d7c4eee5e4b9efbe0b7963315ec64a2e3601ef7bb7c765126b4ce7d24b5b69a6db14effdae028f43f7453e97b50e4f23300ad8376114a656668599dfedab889bd24b10de6fde784fca65133f7aa167b64ff3d51fed2a8297a55ab7965febb5afddf58337b65126e547e9ab36097def6801f6c06687cdf8c331312c404f45cddbe3f1b5aeafd5dd63002a4cdbf4fead9ac5f1467c3cbdd171aac663b76519ee0c10da2cae0a66c6e3302e287d15db5034ea31568fc14c35002167086ff97f83274b0bac6f2024e3b302fff787e3568eecb109e2f89164ff4a78b4665519ba6929d07646a06837f9e443c6192184c08d169fd0a8d1ea70186bc971284aaf2f5cb5182c7c22ac10ba19c024e22e25f434ade9380562ac5d91b42e8be6f44571f6e79c1434d29607f175043d358831dfb9822f3b4d5e814340467c2dfcd2da303410a986a232bb981aa2354308b233e51587662814dbb3e659a6d77a4a2b9dbd137969249ea43a805e83ab0d477b167b574e2fc6eb4792fc0c8bf5afdd7a8897b950420ccfffb44f9a791a6e8b5167b302ed62d282a7a99b492a4522da631656e44b2cb2d6ec8c2030cbda621691cc125de5004159031c551f562111f5e6c4dd916681fb51ac84749c17096e007b4ff5cc878309b7c737ed2001d297eb9243c4bc24ad382e5ebbf10c4bd8c51eb180d5aa6c6901194367528705c0362c00b2ab50924593f6c3272e0292787f363534807f18c6956e6afd76d1ac7e19a7be3c628f77e19700035f55e5481160e7795da8d66673e6ea46b66349f82ac8016a483d50876b600bbe2a45679afe2f4b9262a26445900e689cd638bee9bb1e2f44a0658f40537073c90c58bab1b6abf0f0155c5e92d7ecdedb0cdc7d100ff5f628228b9d49a4f5bcf11979e1f2e41e505f10082d501693eb601e5fe7ce70e0ccb07fb1ea00fa04baa864b276be17f9129cf423470c6d347975ac2b005a00fb7bf1b036e43dc16615718d3cc8aa00fc25c2d1216a21e1638d3090e3876a6db4bb2c141a001678cce5e987bad70ff1c0d968effc3c14c2db093ae1e4682693c09c10d82b129931848566303e71ac370d6b51e7af67ca9f5a3d3e1008ed31aadd60d05af344016f7d3178bf0bfd6e89d020943950eab05c13e689c28c2d725184d338e61ad55612c2fa402759e728c0b43c012a9aaa3e7c78e19dfd4679fd689842501030f925078a80e4a9a214c6fc264a6da11e02d798268c666f410fe6aa2eadb5f781ade6245ba41521f2bfe8fb359c4ac387ad86a24052349e29f3071a7cf36e94b102bf1b684d0cc43c18843c4792bbb318a4390a8ee66248e58a4e27586c35828a531eb5720000a0269270755bfc29d80860f44479ae2561fea3d2d061e76da43904172ea75949a49bff4b5867058b0e0a817f00b50b684780243c4fefe2b7a6079ec533087abde388c17b1a5468554c796c8f2e2b744bd2e5fdd56ece34765a22266971b8d114ff218f5a29aa44617e0de512d674a96f81744a1699458f02f3801a62c63e197e0849c56c4921f82099a4aa1657e8222689a258bfc0882d054252cfd259830d3150d5bd43bbc638bb934cce7e5445a42bbfeb87b1fc6cb42d0bda475ff14482acd376ceba953d21432807026e2e71abc5a51778256744ae839e0f6925a754c6afb514ae37cb441bf51a52e1b1e1550906b5e2ceb3c67f4b49d5329295c4c2c507816031f8e3a27ac90cfa7bf29f1a5922dc797b25229828a09954adca4956043e16db3920287408c279df415efc3f070f6b3b4e78cda7c7a63ada13250083e231d14f82248bcbb41f237ddf637e488f53e0f7e56ed07904938def6107ad93dae1280d17a40c6ab302f0cd8ec28cdb5caa221d3af43085e5933451281c17be4f0c6672037a0b7aaf611115a76b1b036aaf8d7a27fc1549c1e392403a88aecb1fad6b96e00e1630d25c5fdf771c138f6151e10622b2e7e452499c1b5a21f0bc4e1f6d6b1de0501918c42319b6fc3ae7b548de0ee614cbf2fc31804975ae96f719c5b762196d2e3da526b9d5778ff2c7ad5fbc4026d8dc3f5e346e692e7ce5feb14fc49fed9f66dbc38857fb691ad16b8f72ba744613ad2ab79e2d9236123a209dcb64680f5eb43ce5791ddf3efa08c13ca9690b03c09c296254950680a750c337781682dc4e107c23f9242062554dd22cacf2bfdd873a63f15d3827e1fc2d65d9b3fea98a0b5c859b433e1fad2609dde455db56838268b7fd1c82f27de05da8db5fdbd54d889eec80e6ab71973aece83add816356abbe8de03b4a6292deb8cc2251b8f0a0b14c42b4597762957a16d2283c316c6220e545c00d4b106fb648f26592ba82da7b4b2412cf1b2038bd41802c656446f6c6e559d5f0b0c1b32c1667a0c2d7074ef992cd206b52c7f5d86e48373f533fcf59b461f24d7e99734d549d04189e917d34223166743076819accbb19215c907f5d41df1fb9227b3e648e888ce384bf790a4060e0b74a9d82eb17e797f873a473c1f00adabbaa84e26eb0e4dace1c141529855a4fc29309738b052f402136bb65c44f985b4d12621184ae8f5433cc30adcdc3aee2a902fe69900cef7652f2d9c186085c13ece118908c66f182d99cb9a8ab5caed7789ad793f957e50243720c2c6c1495dcd0d3017ffa1c21f8ab2a3481fae296a8820e83a2bd5cc9e4aa2794d3baa1668718ca1a015541b9dc1cdc1f340bfdbf9b94b7149dcdf93a429a380120966410f907385555c9a1749c80cf4ac421dd416308a309f33833c704358ea71ebb376f14e708827780a5169c01477cb41149259d58a31a4105620a85470a03a5c61588371d0f7fd200443d101228d3ea974b7e58d53a7af10389c49b8a1b53fb5bc848d2d440d382531f68ac10327efb9edb170ee76e38c5a7568e7d2d1c33b7eabf8c8b761760075e17dbeb8e4dbd5569343d1e82cbb7984dc2204cca782452e096ba87b6e7225c26e97dadca335e192c29d4e1530c2d8c0100871efca01f80c7549c0157685e4da7cb8fab845e6030d2bfff7b946f78e2596574f35a8851dcae576cd3072fcc136afd4a90f5dc966d94c4364f91d3212d2a18ca15471435693ef4a4c346e7cea3e2e86f6559af45bdb46a3f720fc9234c1b4f28efc87c2f48d1a3e6da91c2c56a753fb881fb771eb227cb29fd32452637435b1bb328174303d314dd2c37748bf1286e3bbe6f6093135ab95fd156dbfcddf1fcf231477ca13298d1f84b84ed1547c8e80b150d45339801da745a7a4a9faf4b0a2b9b914a37d502122853a15c601232aef463ac29e16459a21ea6312234ebe9383a0f46718752099715af4b2275c9a80a4da3e32450c245c4d0640c9c25b15618e5f3809d655275939d69a66226b4010776f08c5c4b9ed9029703864111396ce8ace923ca15e854b8bd79263cb62074712bc89c26d2616a9515209a4be8650affce41411a1e2bccb0931cc5525ec63c21cc283434a8d1ea61c3b4dcb440ee1250fa2f4a0ef51f09543e0306580cb70bdbef1bd980199061fdf8fc51ff70c0f3295594a57e97664f55991adf47e649c93ac168c29d4ea68f044e7853c04c710ea958b8f30474768425aadb7632544c3fd75fbd355f1a36f34cede928354c5b2d73db5ec104adb765d96b886ad636d40951ff9f6e5c9cf58dfa176b8ea53bdcddb2ad5a7f3fd290a87d51062b12e034a7ba74e61b28f4a222965780144648c4d3678051bea0da782e1a6bd211d18c5d9a646f1564e3520ba18073c3ca2347a3d59b2c6dcce49d7ff7a8d8ffbebbc61eb08827190cc930c91735ce82c278d2c21226c82b1cd4f7b2d1da2d8684595a9d7bedf7ad7f90293df5e58e998df42d35c95f4215b32bbe5f1270533380d5d900a77fdbfe0b83795515c773912534d3260f309cc35d5633ea1f3145594cf2245bc482183ee3c78993c4055c5ce0b75465367de66f64d867bfa4e796b3ca0b905a8c120ce681d3495daefa680ee2ba829d02655ffc412072a72e5fb8f6e1995aa1bfb0f2a35677bd60c75a91ea5bac680d1a1c0464b0dfd530c4aa3800a6784c2a54f3c818c3cb22be1359204c245c2c30609787ec02c2d9acd91d87afb61478ef1b990542d72d226c15ce5ad3e614f1b6855cc1598df813ff2b5aa1df58c4767116ed51512e88412bdaaa0d44b5c1b169050d0fc6fdf2af8e865ee1a6c7e8ea921eb46105d256a8fcc7419f92cf65db8665f8296de24f2b23307fdcde8fb4c4319f441d0519624208e1ff18a1e89d992807759602f41d3bdceb6c6a1bfb6c85c58f85a9735e6190745dd3f781186366070e9aee603cc9c9163b548e41c1132291a6e542105b669ac802781a509d694bddb95d5e06863a4a056c74db7857a2a418abe105417c72031eb07db88c58bf4fc0007de062ab82f5d848dec145fa368d126c1ebade7a304858ce6191e56ea147041d84e3565d4199bd3b8f0f07a7b1817d869bc7ae3e6dd79790db29707b79756d9c8647640f402d6c87856a776703c1281b5d250a4ca160188384813a4d218dfe6a242bbe972b2a8dc8df6d8c44d89f68bbb4028dbfd6b153815b9913e4ba92056e4e68c4fffc9725aa2a1889583e5f351508262cb00253d47e8b2bbd665b00639628d6cf336062b6d6bce60e6191454e93eafe61070dffd593790216c00b68e778d59ca7e9e601ab96c519b207ec1eca309877eef7e448be982048571bff4f09b568515ef16fa12dea0ef15136564bd342af3c458fcbf8a0cc5a3ed0f024556597f292923d3152a028d22a0a74ad36647d61c38cd868eb76702ab521dca92ed0d95641b4a7533117dd8718710131521d4c008cba48cef0941d3b73fbcdbce3a4e2e8181627751972e1e44ed86add72c33dad1c12570e3313e9ef09e5c687c200b528da78d18003e2049cc4b238ff3394ef061d3f02110f19cc9d7a137e697cd44f5a92d3be95a86b4cfac5c7bb5bc4b9e596ee090123e3a108f8854979903e18ec417e35e125eb93c593cb66fd93034c052cd5d1529fe28ea685df9670a92064f53577ef759c67bd5349b4f4395398230a50b2deefc75d49243f31e55184d3313c380c8ca9b6a6ce9b0a4fd3a09228704a9819bb10ad28aa02ec50783b5e18c520413b4bc6e3f9932398575d421c87b22d092b9bc652ae98c71d068e0bcd9591b4c12f68ae903abee4ad98a0b26af1f59a9a0e1717beb9f57b6efb077371ba86c2e6a7181c1ef7031a715452539a46b8ee08ebdda453a1bd1f07798cc4e365377d95576936990a760d34817a9f8bd7860f939f1481c247f3f618b9d0cd51b9d641ef477d634b2365dacbcc9ae6617e7027e5ba0717cca0aae1b93bfaf66d8f9c3c7606f20af8649fcce7906aa670575bd978b9b023bffd6374860832011a2c25dac2db9be17d16354732d85df2811fb7e6c5daed85f21f2b68a070be6e4748df377875173b690a4657c394417f99574a4a34970008122d8ccc955229e5e78bbe7d6221d52f686f9180aeb829f864704c26323f57565d9d41472cd36930b4dacaeb83d82d3da2369999ad0b20a48725f138205cce7b5d968dc2e2f5fe8d4b2fc8128a289ca66431b92439cb4d44dfbe72543f46e84a46831c2ec51ba831251a5f108b9d0aa48e531841700511126db13602ac9e1af64c0947d043bf91d89aad631e8f2e4ec578ce520aef2c2e2896495ceb02aa78cc5f9fbba30c7ade38bbdc5b6eded20954b1dbdba635149699f97e1092a0bd7128760524304124a516377d5352d279734d162201e440200d240687f8dc4df446cd0df1cd83669ef2c737158533af6726abd2260243d801b8c201bea819617716b96b1ea5d2d86eaf4e850d186256247e48b35805203ed03f1af4017827908234934eca205e27f43240153af6dcd2f246f8e836482e0f770e065596b0333f9148d2c14ea2653ec0365c919f1b29627910f9aeaff1ca44338130c2d6780269ecb322154db27925a235a0c1ff785213da1e31de955323b97f33fb113c714eda8312df6f5c75a41ea987f2602e4c34f7e2f74e304a0025aa695b0e97fada5d9afa3d6cf2b5732cf7d7450c50aeb04162364be13027245039dcf1b055071039c466d8b5f8564e66670386580c8bb13457bfed8101e622834bf3041bfb0711278d86bfb2c8e2844ed02dc1ddd8b103df32f32bf40321a98e5f52acedf908733c66bab21e5b1eae04d801b3ad5f88fee1be9de36ca51b5044d8dfcf21440206aa13fe34a4ff0a79791c707129df683c740801ecf0566d49cb960e5ed82dfb33de6588a602a2e03b5cd84d3648bc270367ad700773f242902efd8f8d3c05f6f4631832739e16b6f48b14752eaff42c9ca33e11bd005800c7c0f6ccecb8a98c52d52d01171b6c6c938c40b67f38faaaf09677f62b0beac8540d0838de315684ad560a7fb533fd87f4c20538e99dbf231eb38d5669631eef3d8539161c8e5eda107a833353b4cc7183e123bbd1bc2ec175bcb9b44e57c3affaad9ea694c90e3f25afc78a3aad5929f6a26244032e45c0f62e858908973552329f59559ebcdbd85ad2c2c88ea3eab025fd899ca332a28da96c1b518c5282a2bcc49907e694058f5526f74552dab60a1eebbcfd53dbca75f6390492ded46a74ab18adee8ce593996103768f1de114fc673cb929db144ef1ba7dd721aaf73bad656aaefd41a4a9c3b517025c80753f1b4da71eff7214622ae33fcf371dcfdd7cfdc7beea5fec01523902b1605d0a89f2fd799933a9f1df435d937592ef9f5ea60e4b504932e982a9e6d90041e8945b63b4d1c3add668843bf00224c35074d8cd181f360c408ae8ba971b72ba66dd95974fb23c5362a4e40d267cd4edb5e0471d004553e595b9c40757cedb8878115aa587ef04e5d013adb2c1bfa157fa16b0d4dda4158510318cade3b5c9a48942e8331bcd23b84e2f39163a7150390b2b3ae9f05264e5fefa2d6181f67063e732e6353042949dd69743a2840eef657dd2a625fd52e08dc86b448aea058eb531df857142d996576c12177ef2f6efab0326b403e829ae8f347b56cbad407fd044744c399dbc8ef0ea0b44515e282db2a9d503385be62d35fbe84e3c28dabf3df04fea8bf6e21fc5537c601aad100d8110905b61255a561c4999c129b1cf1d61bd616c77a782fd16b146e8e4e1104b41017b0023b52db304301a8bd5d04ef92774732cc11ccfcf01b304a7409a6a4d078f6ea1f77ca738e861ee874c2d20ca36163fba0e5c20d413cb99d0cf805952955f2d16c91cbc9f9daab70ace3d3d0e7877cc82c95242a0e3dd067e9b24865c281420e459a0eb6597011a96e9b9f841028f841c9a98d4134b62a085497f6d888df262c89ac2288f88768fd33c451a723114718437c7599e5a3a54fc062d873c5701381dcad18e872d385f5f290d44e502188bdaf30ed81206f0f80829ffe6bd3a35a4628c418b29a873d555f3a1856ae40e2c8009f5af5a9d8d1eda6c122a75edabad799c62097638c32986c8a1321af53bbf8b23847f1cc1768659390bd7f49e5fba5edfcfb62d5fa88c9b669a0c53095b889cfc9ff056068e3720171757bbc701d46fe6b332e9c50860640c880c2160c6be642e910593a06087e4c0cf85442b5764a7d43fe736d468b70946f29921803458fb67a791e801a27f80ea2d2da42c4bc3fa9008db1035c3a4836b7c615b858809c0ce086fcdc2754563e6cd164dff74720916a25b8b4150ab4e0ddf7dd38ace8064b2222409493391b17c2a04237539a47103967b0647383a5e0ef2867d068561239b604b938073b0d79172a52009c05d73ee54d95c418b13972ae45c175fd7767b183b735ce9bf952a4370fcd67bd29f077ecef82422d8644d6dd81ce49a993f6cd9b08ef08c23a353d39b40c01a7ee2a0601665953bbc60c905b167a0f4387cfb0cad4109416a3e92873118688153b0c49fcf9b142793da0431f6742486987ad66248e0ef0b3ecae76ab11644a39dbaa29dc4df4ce9acb878110dbd08611bd1c8e76178d4376e57833a169455c78c8c27154f68952c64addb1601834b04e4db1bcd3c2f0a449bab1a863874f220fff2fe4407fa1ed7dd160dc89a9900bd999e800650a35f5a490d75fbf6d04b4be065c6ebbf3e281b4a348836e72b058b0d347f7fc5620d477d26fc55cf943a24fd7e5f62e17e8b171302468dd91a2ef335b3acaa6dbfa782403b0050a501ed1cb7d8c80406ee1905263fd9ec7b90497c5d7da755ce2a61976aac01544411747ff0e3dce9884c1b93c2bd00c2b3d84eb00fe687f550dbb09d3f46c196f567e91a4bed1fc5df6a3f587ce2a62e382bb8e0440740187c81db2bd85716034b8d31937b2886f4ea07fb3dbe1231d9b409fd706768ebcda9efe44dffa5c860b89405e73bcf23ec6dc8e5636766728dfd66c36c9ff050a370fee1ead12b2c576b151e3985311fa7579e36ed754a6b7b05de60d8b818e12241882edf2700efd0778a800cd6f7edc89926c97c249ec2190c9f2c179e0ee0d875f1b17069f27c0943a849188cb90e2a83fc76b3fcb1eddea22699c5551c90423847837624a5327fbcff00e4e951f2223d7c51750115ec7ca314b5086361548151e0978e26d37fcfa1d74545ffdea9b29d742817f4356e2cf679f6ee9f823398e7a5e8e3126c94696aa8cc5f640d10a727fb54610ad33387f037d3ec43919816789e619de65d02d78065494834c78197fa80d3944e9eff6f1b338c8467dfa408681f2f80678fe32ab12d299001248e43ef195a8baa14e0c4465521b58d5413043ca69bf056fc359099935df5b5cb6cbc71895398e4e3817f7174c48b12a250097a8fefbbed73981cef808a142984a469c71b1cc3e7ef2be6b33dade28b92b788a9264c1aed1b3cf0f286cc09f21126b0b92264edad2f573c1dcee562d6edb98113c801328d3d77090294fecf7c7cfc6d87d5470423b2dec3e719c9449c29298fdb40d7f95eba349b11e3cc2a637f28640f217ba0a0a13bb382981616a9b0cbbc81a2ef66bd8363c7026a34f6722176ab9c4f03caaf920c0fc7f9d5ce0f166b1a7770a0c971ec643fe5e8b07a7e1c596d14c11df2baad805515865b86da31844380419611693770d23cbb2df11391a3a182a82f31c5c42a3ec90de2c3ee14de6c7e22099f7194926439858c74ac922f023d1a6dad4f658c93120f4cf9e197915edf7e266dc0d1476a4607b14e61da73b12f5a499bb28649559218703fc62d83245ef84b805e8b6b4ddf98e5862d4b92f29d7e5c8d1ea331829782c708af70abd8a8f5bb2dbc8f79f135018ba51d9c67b577ff9f0c01f0fbe747dbeec6059d8fd31ff3dccf34bc381b46c804e7feb03f416b2f5dd7e29a5ced4a6839eea5127c84ea14b5e698a13a546375c6634765bd89aeaa0b4870031ad52e31d03d4eadf28e2c9279e74e0df55be26e5f6ac0e0b5561735b153990d842703ccef43e21f568552e04bd7e3d448b2fc9dd8b2ec4d37ca3187a520854d4b5fa8b3b6d973f13055d29d8d130b70a7dd13ef84c5bf0e986fb22d79765a38474c874df2b7936f40985e195243b3799db5174c207ca4dfe52c6589106d15887fc7295aebd6c59e0c1e3b4f370719ec5a8732f5340cc19b403db4ef20e2dfb2bb6179f2dec8b519e0b93668fc0b5a0d2c4dde9656d3e03d0499e6f675d8eecd697bdb6d8b8f6bb8dcc0431841ba4cb96cd65c2e3bc94499cad64cb140c27a78bde9606cfac8f89c694adfb1255a20d34d6c258774117ecae920ed2b0fcb4ca589fdd964518784e92bc39efe1fa6cc532df2be4919fee2e2c3bc7eb2fb5594345b3aee26f827477de6d4b533a499fbae1be6da30b5dd0e15d6a58b9f5df24a1b6367a46f6c3e0df1053cb64eab462046b3120076130276a5da93626988f31a1ad20577f2f8763ab82aa985e01a1c8c3a802985a5d8dc3827850842609eec196c478a7de469a718370f8e1b513da9f0e144c738aecb6c58dafebaa2d0ec6ad71862bea47c393524d1020750e8aed461354be2bd919afd146059fcf67cdaa4365384ac42af7f4cc12788567f2cfaa709f812311a52d413b20250a03936226a13d26649ccf449a53d45fa95435189359304da6151da00b80d1b48af4421d927eaa9280604cb6bd939c0da27516986594c036a8332bcd29064870bb7a3a9be026fe6c3044dda42b7fd069b536b696998f07009d0474a5d2d6b48eb8d682a5c51ed66dbc450064c003aa6cc5d1a4b37ecf538f2018dd2c2423d763083f4447d73867c71e411f7bd91fdf5ede561c5e0265fdd2bbaef9dce40914591036430749d8dc321f8bd8a5870a43a41f6aa875dfae08eafa07a873198a3e5cc48f18c4733b0d0f1e1e2dcb22eb6370e1e0276088189210ca9f1f691a3a96b2839cbcae115355424bac8d801fc79f51ebc7b0fc22e0f549575b4176733c0aa684c1b72ee0c14f852790ba98aab04efeb921d091d22865127057b257376febe645330f165c7f9d58fb3a221a26b00fa0ae1212f73af61b477436411cb3d1d7daf406348ad7d651c80903fbf6e5888588065d50d908902846c56ad155def12536e6de336b55bbd142260a4cc25553a2e27b2bf82bf419a55d140568a158d6204a225d20bc099345922df1e1c6fcd8f983bb6ac29c9a0f22a2956f5f118c6d60064a80bd2da6377701938a1db3bf10a221fa56552a272e6b5214d65c24eed2de69022ce2542738914bff63b18e7120aa4048617f9b710dc6ee10d842ccfb1b0f19a4fe265575b31e8f4ed1cc83a18188f5778b08f18134f5bd50faa0da12f4fb7e3c125a02d0115dd227709d0e93a2f8b0fd82c3f0f0e0e48acd700c6493a347c53d60aca77ba47de78643a5ef13f5e2808e0d7d32f8f085c17676d7e34c480f862779b9965b51fa3030015ca647fc89e1c040eac68e95e24434a541b446c412cb55ec87ea0b3370f7b9bf433b46200531e16b5f99fdb8771861ee21a5bbd12cec3031200e794653bb86ce1e98463869c9012604dc3d253575ce40319038bf783de46dc19c74307eb50ed41c7946e5cfa9002c8dbdd4b3148957c41f0064a03d4515dd8a44be604e7236df60f574105a99b97229e32d19758825c24251ec31e845f9be96ff644b7411d020ee452f897be7ac72716bdfce08bd2849a7f5c342f85d2eb8ad19101937bb8cf46300e065cca19a3383e7bb54557875f1f116dc50268a27b9e1917dc2bb2881304675ee590765fd374e552e0b766f67940343e88cdc9cd5dcf76bf080854c7a8e161723fea8866d380dd059bb28d36d86856017e300fd90b80640782058049057ff3b04b41fc14dd1ea5c6e0007e8df9e18538de44f0df21bebb71149090a495c04ae0939f92e60d499fdda416032556973d58eddd31bdbd3a9093284f4d343bd69fee1306772c10bd5bcf768ad1059f63bd9dc77ff107c8434bc3ee8e60b0c3ac1dba3e2b4d895b4ce7bde3374fc3090f02ab53b1f9245d9f7419ea5c694a712ec3d13e0e329b69d2f52f8d2c6097d922385abb04909a34ac8d5360eb04a03599de0e9f157800079e213000d1eaba1ce24f788c74ef8147de9084304a097e1865177f27df75c44fd873dde5b5ddc981d90bac7d023f67bde23f0cd650310a7b1e2b7a2a4dc20def50ae1b58e3931befec6768c7f1b09757f6ac2dd68fcf43bd741d0235358538e7f4e764cc72ef47b3b2d95f578c06ffc1fdc0bdf471b8522c59769005eba64d2da29ef4b904921fed32a293c1511d76ea95b037f61e852346483e726f7374477e1d16fb05a6e5fb82218fa88da989f5a6e65a631567caa0e1debfb39617441724091a83ccc92ea0297ebfa9100c574fb6d44a493bb9123079f3f266a49a5abcca9f62618f876ba2b555770afecb31e1ca924273b73c26f88919e03207c0783cb106206e158438c79c4075eb9659f6a22eecab0c49dcfed2e3f4cd51f9fd0b46025360bffc3b6159be490b52df73dad360616715f18c9974448742a7e1aecfc0e97fd9b8da81cd57bcda2f31e8168a0dff0a43de78a1e0783797985f5999c9c553cb90e34cdcfe119848b36a24296f9972e18d1a042ec9c90ad1da7dee787f7d861f41f499b148ab257522399d86286e87d04b7aaaf190a1aa3834a145cc3ee6e03ff79868c39fd48cdb83713e4a5ec814964ac1dde2e732950043c55fec3ddffc4129b0f9382dca5fec5c5ede1b7933763bf1153ad15f28789747a8482c6f11ace574402d0d75a569f11298a13f630f155c0a0ce52267da16025f452383b738397c3dd4b2024c5d1297aa835ed1199753f8c7b55d16aa02117e4ba01600e38766d7ddd23ee7105d9c3626db889eb59ff40998e5a3560880928f033568d64e99231953e3cba2b1d8310a462238330f0e936d995a7693efb9815d809ac49a3e88f018b7a0a0faec27e150c0918a2cd6021d2d3eb450cde4bf8282fcaab82031a364ed70478c0687779318bb67871b596791fe92bb9e3afb0259235baaf7c9e2698ea7c0d34e92d15a5716ee1b4d7f44886c02ec548e03779ada65d5ea9353e16124b8c2736401ded200e1572802787c683152f492b1899438e806286da4821f48e454a3495e26bc476c51b60a0503fdc6495f1eb6a0e911b977d08eecf0b408dcfae3fc38a25acad5b8b27b81d35ffe46b63399f739245e4cba7cc3fee44781d0980f75cf74725d94a4034838d2c2a817c2f556d7a1b8550805d0e11159316343c1d33d0157198471104e01dea34c5025d7e0e105b2a9366da5c890bfa58339327d442e7b628e74102a6e22b242c8defb51c0a79f359a4ddb03ea72b70f8707f2d0d1199f1fe10e371ed057c93ca4e40ac8a4dccb85bdbf2d47403618338863552eba67cdef99f56962bf07c8b80df3f39a1269c24455302f30e28fb5e562bd5286052f1343fe5900fc78014984771c0af01337c32bc8f49b70ccda80c2151b4fca30df96e24f916ceb33d06be9e3844c893ff02fb116640ada69e19ec3743d45901d63d0c9dfbececfc57ce1f7c6d26a6b1f8724dd7def33ef452cced87668f6f19fa3349b1439c244ddaa00edeef5f723b6d4b77bc7f2c2508ac7ffe22b0d23bff0b3f147a2d43f6d5cf1dd085b07e524b24723572f1e5dbdaa22da2bee175312b16706d7203fe47f1224df3f6d6335f77eae0d515fa906222f424efc35287e5f16e35cb6dd63ee913089c606dd62d7d13ff6fbfe1657df8f720789bbd9bd46602b5e7313279873c101f28ca696cd6491e069f0385d8c4bbfd5825796f03c1dcb14f3effded85f897d21285df6c7e2cf31ffe52cf19cd4b4f304711faf97b10dddc649420847991c93b20326b3e1f06235e83298b6196bb21bcc0e64980e85b108d48f80809d41a84cbd172ae6b22a18ff3964d915954973cc50681358c545bb1875954d510d0229fe56fcb72d466c98af950752646600b5bf9ac79817ff5de480e010bfc1a23e3b17912c182ca6e3edba247edeb011acc6ad16b80e63ccb943a9051d88e8cb2495322ce25e97c489d27643c21f72dc2ed3072652d335958db51170b039a75a4a9eff50b017346054b590b7b459302570d98adbcc5f5ed75646a4cbfad7db16d103a2956102509b96ab05d9184f69ac53e33a9f3a59cb207b938ec913fb0f073ed0d54965f06c40a445d2bdb5f45e29a6706145ff02b83586d37e9d04fce2b53d1b0ce8f25a75e95e52b7702ffaf0ad0010d39f09b2ce653703aa0572b19d3a2819aecfd3f1829aa2b884e94e11af6446028b2576d17060dea940f5fd16366f513348bbec4ca9f22093948834c16ed54c8647d7d243100f82061355bd0785e896b9a925d77af528ba126e01fe826e56007ff1ea7a0f945e2cd04bb754b141f562b59e629830f699a77db343a19badc1e074f364dfbc1954b4ad3ce38be149c0c13064494e5d058cc3a2f38754a03014bdd78f771a6cad41e1397628c65f31a32fdbad6cea5ad463e3c274083ea8cc93a5aac9d45141fc500f25139483b7b02c66986c37e8ed35a8d5fc34a15dae1b7e4122903af2203892abc8cf4d5b749b57395d53a13483cd2d41949e3418fbad98fb520d29980277318e7ac8be2ad1e4fb4f570dbb84cc69353bb1ca2e2530737f68f5ae964dcf0efab39a1c44a759dc16b429e812459e4141f54bb555aa7d8ea5c0f64b3769825a507d1385d3b9c4a6be6a560b1c1806a8fbb5d0a15590e2399860257734ff5390fc1c7de2dd8de0a1e7afa3f6ab62e22200816887df1a3dcc29d59c9a34ba96ea6f9a7d831f6aeba22179c905fcd8f4fc25c4956cf5817451f369f09769d08b559a3b6abaa78338c28f791df4384494bca16affafbcf78da0cd68b5d2b0a05c5f323296ba748b2383d96bf80c6a88ee434dd8eab81608876ab692f1135ecdf68df0dcd2830293da01ebc688a85ff09440d1969236a672510d95584ee91a1250d7c5a38ee1fd0be7d549adaae5524e1ed110cdc43ac3666b67803f578bc45771808ee340836e7f669a71774205c18c8c149b6b919649ca923e24d57b5b7fa2b2ca6503e33acd643610a130eca4b08005b0aee50c6206e7a89ad250c30c3cb521289fedeb853633fd63312cef12a063ebcddb23666bf7a9d0735302c8e3ce091cb2e4c00385fab9f8699e404a05426ed849450a05d240863b5cba6480cd5c2a97290349e7c64cdb74367e81e59a1c7b725173bd5718eb0691fbdfedf49cc315f8c0096b3cfb530176ed3e4615e3894c269bc4e61ba80d857d371a56a160c5db9ac108c9e2e9e584bb8466be28428d1ed2edee9b0d5851dcad9d9699745bfb092ea22f2a5e15e7f4802d465ee018ef07327f5dbc95896f7eb93058a05d97bf1f10145833a3f1956d06fa157f715a6a5676e589ed1bebadb426a45d71bdcfd684c73ed98ee031a1470f6c8dca9f8744162b58952f86532aa0034ed777259fe5d0203877c3ecec72893030d9fcea6ae5482964f5f7e787b8863f058c2faf72d604e07f4af452de1b67feadb406a55b2b5507f1b2819894a5869094947d50379f2e70be562ab3e9ec35927f08fe16885f2c5b9c66d5754e98f2917e2aa8430a898a2644e497277e5be9e1f345bcac8ccae8af13b822fbc02681410e6bf100897760debe170a24e9ef4be0a6467f3fc73957cea0085fb22446db048ec5a8d8a089eb09e6e992c46ce86d669ee13686eb785f81c250fa1b152079a7484a8baf4fb1f6ea019fb8ddd9f55baf90e1dcd99e40ad42e77128174a619f72fa2319993f5e20ebc625c487005a7a3207724beeb03ef5af62d2641cfb529b26026a52ce2db378fc50ac0e74330899cbafffe43cafd4bb89578e441123f463aa6701d90cb066b2baa40551ed889ee0d49342869052492e67a0a69cd9817e159b02bbf50cb0f21c1de9ba85e1b660ba3a194f29c97ac72fc0cf7cc060624b1b002b97be690ee9f6562a9291544daf6281dea9f0ad7a87e3b21192436c554701185bc6e8860091fc201bd150a9d0cd8f0e771f8d48c41956746a2dffbcc462106c5638c31cbcfd9bad700d3b5d57d0241bcf9ac1128a8a537644284ea8acd1106610b6ab5acf2c416939e84e82e7214f449284c6b392136b262660d49f40c521517541269e0e68ae6515496d7edb0d6ce16438728d987eafb1f875f62ae8043fc0db5741f129a6b0427d3ae86719dcbb108ebed116cbe3f3ad227df34b5ae1f5efec8f30e7ad757917e00db932235964bede144977e847bd3a1ba45e50866c6869c92025bb5d332840b848101e55ef9815d7632369e3710ea0c8e0e9b86d09622ffb10a79dca0a2272180f5ca28a98d18120b200a1891e6e010125e54c9eb1d88941a624af20b1193730c8aec69151701269d50cd50ca512e64e759747a686a6458dca8d201114d76295a93989646d8a0a1e4d8d75e2e308470181f683f8dc8b625d77fce616f5c3a8c0d2f46d089089f78dedc64cbbddd59176adf6ec8fab70a687cb0402dbaf84add99f77e6042927fa9e8c6c7d23ada447a08e737cc857b493dbf26da1729e103eac71da7e221a45a0e6b618c3b2acffffab1aa7ba22e6f167a59c474cb5ce5d8f61f08a2c4d88f90f66dcc99daa828f65b7c5b97f7af07dee8fa7dee82142375379c5782fdd8cfb16200782df597caf1d841de71f6e72f16a9ce6eb1e083a6af2de106422a7a524241e42699aff512e9dad939518c0d7a1fbafb9bfa11a19bfa3ea7c075087b9ebbeeeccdd30f3881877a3bd86da126891e859f5e2a0fcb38324ac199945a9e803142e408d03128f53f8d73e19829be7036c905166a7acb3615960331359f0cf86d565213e0892055aa50bdd01addccde84146178b068c59a0e55af6b06a2307fcb564c67b914072fa10ca5b12009452086ac94d84db059cf1d8de5520d1b01a066e7416157479311417446b4b7e7b000100042001808005b6024f3a929b587b700c3ef3d70fd3cfb912f090a610d8f5533792c774f00b4324e0a421c1ccb3bc71444a4263461843cd561e40323d7c06e56fb51e0fd8d401a025918530dab848c432b320ac5daddfa288603fb5e064cdbe8bad8ac18287d997ce28d1d5350b7a399f858ccd266ad4901592317d25b603266039cb0a3121458df3ab23b158f847158e0624ab18487c327d660a47825e5c9639a623c93c530d0249dc2507a083a1b02da32fa5005de1ddbbee510bb5d5aecc925a722bcc3d6d70b9cdb6f579a5b44ef374f616951c48d5cd0961502fed3365d099b0ef5df20e37812877825ff1f0da1b7581cde9bda32b2cc70afe6681085a0658364598c650614df1bfd8060144d299eb40783a19d11f4eabda0729116878660261e8f23fa64013100b87a14922420571b7817cf16cba70afb58830cf23bdcc2828855f382dc6c715a2b3fc24a22baf120e75dc19ac504493b9f88d9393f364be37338bf71a65f664035090292fcbe6f02c4cf97a1cace81ccc19bd88a45ea449294878b7e04211bcc1d10ae4c57ef6853eb6fed921a2be80767e6fb913c3708a3cb738b54f9773c900debb19e5dd1cbe970055549250aad9805d4d4cc4e393de17f963f9873d908cdb3577f36ea9ad7b73bc8017df3f5b0c0fa2702bb7a495202fd0389c29616901702f8f42c6814f73e5dbb12c5358df546d5e942f16269d40b373b8536e75b84d4a91e63bebe88a5b71b52be8cc4302a2d0fbab70d9ec1506e72a1e899a853e7903dd099936f334d2685f8a1f0f00324573830c3062e62f9705f667028771c3de3cda4e41ab347e17d767858f5ed807c1976b421105ffc559c1313a3886e6acbfa9bebac02920b26c3e41ff044e91504a17bd6d9ea94acf8e7bcd5ad5afd8e4c710ad1f33b173d1e5fbda08a0de75137e0021c15c217121316a1cac70862834df4c398678c5f1219c6eb5d30468a25010bfe89110712422ec1982a5ed3aaf9ee4c92d998078dd34ad07e89e4269923346aa03726c06c71bd333ab76d5dffa2da7210266e9949505f3d4e57c37a882744dc2c0244f0d989ecbcc80cb54c1c39a4470380dfb2ece80160edf2fbe12868a9529eb6672a85727ea03148246aaa50eaeb0a2a704f444c1c94a5890a454b64d0b729b625024a328bda2a4694d7a4c7bb829407875fd08c082847de0fc9b11e8ed0018b2c6a9f0067e6f1186ac89f609492e423708490e71db5348f85a341ab41e01f113a9a69d07aa5beadfbd48ba9388bc66ebb6056637613e6c53442f528916848582f3c8443cc48d117aa0065c77c359be82449c7e7462626299e7889d4885e822abb926a14010ed3397d013aabba1b81929b1f50205fc49c7800d593809b40b2384d83620e2396345d3f2c13bac395c2b5aeef7bcd67a5eb281114a94b15e6ab3ed48635b74f6aef22939a79fbaea90716c51438f303c54218dd18e4094ffaac5bfe2fe157ce9f9f74248e17e2a771d17a5b8ea802305c9ea2f80162d4737222f7fa3cc6fe0b1ec0deb7524ac98ca866bfcca994365c0391820e249d257f42aa0774141d25b7f1bb33648c8b76801c4cca9ee69fcdd9efb925d753d96bae39f254d4f318b70d28a9b6a0831c1a0ceea90d2d28f97abf2fae65392175c8dad14319e38cfbc212c276fa14eefbe5503448b9f3c6f40f63cc6bde07c64d369bb15549c183b7192f862d1f594a2086275644c7fc6de7a8471a01b2f6e1cdade332df446cd770b21c87039b43adbd3ee958f441bcbe47db8b8a5245a80ae87b08c77b00248adf57e9a6f78f1a175fbd6f0315dc90a6d23193ed1f5ca16c4c603552f0fd591a8c43c7c2239a73b0bd7b672dbf35d558a00658001fa7cf8708235784c0d14bfc8a5fe41b47b5033815a29a5a8245b07998df9c091c643051e3e417aebdf222d121de64b01255cde4e340e2f30a75e370bb67c02ed7ce2421debd497d56242efadb14d0d1e0121946c9a36906b9356d72a64ae203201ac1848be3d70bb9d4cdc8ef10623726720aef422f5abd3bbe577d0603dbd77d0e7fb43be8396b9fa5a9cd00ea91af79b50c98d751c4d53bc9c28ca572948f5adaf0bf655c2ce8e072cfa8fcb2b99392b15795843fde39d4ef77e62bcefcc05d54581dba4f041e16aa83c3147585790b1e465373377ab1a9c11be2843216787d017ff9b29e30389dad6360ee47de51b57c6ec4df7e489f78637bfe9d4c4817827db8830f4b98e19e92d96b9332eb4cd937e709044f8ab7b94f2649d3c42453511c4657dfa67ab6e0d38303026828903e0e80ad55d164ef9173605a4b40e4b5c703019cd53af204b9d8dde23b08d5610444555cd348fbe7ab63f716148be3422aea9bd48154070463680c5606a0fbef81d0e09150c5fc1c62e1440cad6367abdab40f0a4fef1d4d45bb4e779b31aef1045138380846394e5d739f840de93487bc531753810370c8fc7a63ad418abddbcd48071287388136fd4d7c4ba54dd2433d592bc3766b0e48dfea0ed31cab42c8dcc494b057f39432cb627462835017d2000e06977098c98d79055da00fe0ba57089b75a70cfda62025a1332b280548efb224e91d9e904ebbdaabc3baa3861a759ee7956306acf4dc3256a5243ba66266e60cfe275c94f82c6f6775f7a86561b9eb52185d9aaaa6750b5009b2d1cbb82198c973c3c71d780571e99887b87c52414ccb13b642ff3fa6eeede53b1e64edd40d1c7dbd984f1c099d63394f9f021289d519279014b64f485f09f29ba38ed8c0654f4572bac94a6f4a448107880d4c84ac309e74a99cd3410c13ea42ed3ac1faac98425affa8dc9a4cb4d86ea8db77af6271830ab8c67c956f6d5772fc4d175197678c9593ecf885a561349c41d05e9b5e922964109210b34b02b39207a7ce59e3ac046312ea939b1775314d6dd23541fb6e3f03fc241e44a492d60294290539670c7c2e5be8f36bb42f503c67fbde56851e2c98dc06b0241509a4d091dd96149c1bffb9124e95697f35d01f5497dfd2edc6451f6fe89f2a5218c84eafe76a6e6293c36f4f2b1cc5e1a67af46f0f31f39812515eaeafb095447902e7a05be0e0a80bf6294e8def3f3490142435cc9f6d8edf71434c89163bd6aa14b2728a515b6e96de9c09df3dafd1c8c5b08ec24396fcd0212a225e5ad74cd05530b3079c94005a6af309c62013787ac21bcff0a97d2387f935f9effc1dd0e3a1608157806f2880075c0f277c2bb80b97d0469857e06dba8bc7e4bb0b9554cb3a53763cdcffa17c9440750166829660efed15cf119b76a659021011d7d8bebaa78428096c9e339c6ae726f97864419266a5c429a3a00d82a20f04b5f07416ef7c1282ddd7d07add39b14a095d76e47cc152e445c53337ae9e795c549247bc2339cf6ee2e3a837f9f2619cf819532fddcda46e445e32fb451c3a38583efa692217011a2bc59674cdc5096ad1950a302c320086bc0d2298a7ae0b8c45e653665058edcb56420f402663d141fd956375a9086c371b582e447c4ee1d15891c3a428e29e97ab6054850f5331ec081d93530157aefc767e6d4d4163ef9ba9881121968650bbb44c3cb0a472466c5a66e7c0692a7784cdb0ee7421b6c1ab1e959891f661faf6ecb27b98d6c597bc8735807a816b808d5b5a389da88549a4300f305af6db5b24ba6e779a633aec60eb6d1f1f17ca85add8b0f0439910d2c471440cfd59863621e29ae06ee1d0325cf9e481d372637b855c31af5cedda36384e46fa143ac5d68eea55703af363d351058a397ac0d643d32b383935d74ba6c45124df4cf3f8502fb344d811ea0d64a2758ee412549ee1ef7241a9902fc64f818d1aaa930443b00af9adfabe1a94d184207930edaa0a5970ac990d457ee3ebcd0d889fbb4d28a162d6ba195b474d0f67692248184e4b73efa1aa676ba4b463509c16cd1c6cdc18ad5cfc70e4eae5b871b1144b0b133d95fa7bbad99c44d206ccfbbd338d5aa7c30471b190b2952cd82a267136d6e28436b9e39930e9456ff6c2cafac277faecd4bec121d7f14fa69cf9103e373043e86331e6737bfc05f2869b7671519c5cb9eb703eeb1755a9c06cd210e953a8c4c38ff59f926ca58e183e1111f9398f39267a685a6be16dbb1b94bf83f8605b3b6ea6f377016c5df8e65c7d43f2e3f802716981726d7fddca75f653dfe9de5d0cbfaf31d01e0dae1e64f0d34302d4020a1dd0a3b5b88599e49e4cb8923f39668d1146d60c733cd7f13341a092e1f642598ca1b5b3759da86d6d3cefd73e518b90725c7ac67a87b3253653a086cbfbc673136bdd34c9346e8e224811932618f9774f5f7ac5934d358ed9a145b283c2943709b6ab451aa7193c9cb9c20459abab72636949c2d6633726993f1e1e41e3fd8c40fc8938113bc339bf2eef7ceeba0c397c604d78af2f57a7cd890935f4c662cfee8e7ea660ff872a396dcbc20e6680c93286115956805326ce8b8d743d4a9c14c5471ca4cab47a208e8f57f60b4b989b1539e75989650bddd9400ce0c15724d3146aa54ffea5787be751f049a59225b1410c0982dd7ada92cb9e2cc9aa0bfc3f3e4cc1e45bb71d794d6868462f8be5b8f5e0defce9a0c9f2ae99130a5aa407ee350027a27e74542d92c7621f53f6d2adf6161228e41d288d524bb768e402567653be080802898ee18bb018fa88a9d06e42023a8d56f1b7932a618f26bfec8333824ba2a77c97ea10460d397cc3476726f392430b5139a7add8135d2b91aa998639f3055b1a4cc091902e437124dcad0e19ab0af4b55f0a05cc9ab25808d8f245616dedc6d194361ad1d2f3e77a6dcf53f3994f0cea4a0c56781dd91da134749976ee580aab2f7a0df02bd5f18911bdaadd0bd73b2f674debbcbf185903c0bec9cec85c384248fb20e184a8ffd59a0f7ae610af0edcbaa4fc800f95063fc1e0ea9057ca297fa12fd7c507d60b01e5ef9c4d82a3002633d761b5403d5faffe8948aff72a937e7199b3e8f63010816a609c27d9faa9d9a191a03dbd8082c0658e1ab7637e153663020c005a0bc01a86b5a91366b1034873601c568da30ddbea679b4a950c9f09e277262debe410473953e9807ad58e526cc163e9a34974e8770da7e5fbb5307694b97055fccc5f839166cf5448b118c5ebebcb8c7a7bb5e83f4ada04921aab59835685478c9d0ee84f90d65fb07c7b0afa41531aedaf23a9972df3c67b3a76002773bc1f30b0e74f73a5f5655898836dbc5d390d1e93b7d173a7a9dce9ab7d067695efd9201c5ea2a12c718787a2f8fdbac33bc83850a2aac83f982540c9169b99a651dfaf0d2b7f76a6f391b92bb33b06bd76c056025d837b16379b20ae28d348402860850a430619f6288a2087e1640a7d78db388f5420230bd6b5912d1665b0ccff5225110f02158b65ae2d92ceb5083d6dd36927b6cb34a499d797159aa1868dd3e245c268817b82e17b84389ff65310bcd0be9da3efe55b5016f2fc96f077223acd9f1bf2eb87a817d9fb69af4d878590401687ac36ca96405e5b832d5d6620e2a505b4ec5f0cd956ea758d0f1c66afa4a47db90dedc99b5cb0988bdb7267ba54f9c23c03e414ed27f76effe7c542840687794ee0cf88e92b2ac9b212da9b1ff90ea8a8a6b98425e7a565a7bcb493d6ae48485182c0456576bae506c2df6ddbdee2be11fe56cf8774daa85d1893fcd1406157ac0b011ef0128b6832d68a383e632a42b123014f6631f71dbca04477e2b3f1eb4a9522a0e7a66f36dae73a559fc693c0b83c529bcd23394fc676bfeaf85efe7683918c8a3f1dd906a9973dec2d763786071c724662f7492037dc896d149671949a5ae16781783bd75f4446a3d28ecde7c91a648b0ac0ce945bc78bb06432fe5e08e1a4ba62b20a31b6b48f9739d1ba63075fa4caf73dc4ead53a9b68c2eff6a2840b303ace4735fa15c784131bedcc61126cb14c2974a833950c4089726b0f05354997274e9677352c82248e4da813153736c56c6708f9bd93cdb8c1bc849536cfe2c83c90663561a58278f45d8cbcd2d6aac467b68fb39f3641fc21614e21b6d2f27a95ecac55edbce5bd6f427b3cad0abfa388c1f878c759c5819b367decbc6eab3e382a464525325f23832ed7201411b6ace78f33cb0bf831f246c18f121f112b2d3cea1d423087ae1ada66291a78f6cf0909c4e4003c89f896772d4601cd33c03571b31e96573b1415b15f571a1863714580dbd207f4a45c38434b24a9fd02f0546b25e06693f533bc552e26a0e4866dc107eee521052f89edd7968446b82bd6eb656f5a7a012fa789e8cce185d45e8c99cd38500fc9be7a16d73184399e1039ae097a2674263e440dc76c55670876fe82a155cddaff30c0c57b5f4e90cd4d77821730dc7deaca9f563b5e7c62353a75dec2a8b2018df3d2c1e7e2283cd5f13f7e4256f1d3c9177ff2b3eed8c5ca8ccce6afa29994d950d76b33e19e6d62d976cb67481b92a590d15ae2e3c6f583c29520c4c86ff982ea65cebf77763618c908542a97ddf8769b349c662829e652416b95894fa04f11cf4d3309e3b7113d3cb1c8b30b44817118656fa555902466dff0a25047685904d31fa69818ee6a306e5be922d01bfed88effd1502e1223404d5811998207d34dd42c0beb7e55a9c69878453a3dcfa9b2343ce4dfa3430613215f514dd098905ce36a71e8856ed2680f4c091ab4654985e3e5a859936db0328dbf747c7b43087d903fd0e898bd0f655124b2fdce4fcced54cced000e2b16e4cab170d8cb3d089e61e4bef77eecd393718c81100042fd00c68dd10f591db782af95bc87d446f37f3e7f4f80bb58ef4e532239cfc132900ba2ff4de16d0190f94fefa26c5747f1042ef1b7a048cdcc683913c32986ede9bc31b60e5c7745e62a136062cfdf1c66434bc34aa75f9f2a8ead002d9d1e00d1c011ca0ad1bee61e4fbd0ff321b575decd92dd069db38a0561a4dcdb221ce4e3ca57a1d925b81fca2fa476fda07950fd5136daaa40074bff41d7760e5871ecf1d5cf1233d1aacdbc120ba0fbdce1d58e947df750b567e4c8f4c99db0320ba1fe9dfac895af74ef80effde65fb0ac326f1056f3f24751fb7f0fb1f9100900ac6b630865edd406fe2e389e128bd1418dd4fdf770facfcd2e3dc81953ea407c3bddb1bc18e42c8bfe5baf476259cbb867795240158ea7793eb0e56fcd077dc032bbfa6fb2c51df584bb4570378903a8d11e9baf63c3957725a20d4c25cf62be33aced02297b85b9dd6de7303e1e59ccc1383d3e5c97cc7332be3249e02292705a0ff357d8b89fbbec93daefca02917299ce5d42e7bffb14a3fc797c17014b1bf4ebb9d7bcd419be204afec6d26adddbc26e3b9fce6e7102c0a3836be66c25b011c72a9201d3b410d7b313b080ee6e27233475daf9bb9dcf1dd5de210ea724db20ec71a91b4a7c372aa71e2325f19ce2a638c852f5c3743ebe4f66eb43b2f5098371392868738bd34f760d3812d16a5b30493461a7eb05e25c788fd422d63ad95e270308dd30ebb494df8b618c940fc27ef1e4797e207eec221c2c52029e5e5a56fe0e67878124320ee995b1c34e78d12bc3e5de16544232d2da04291755bd49889a9317fdadf6fd7410fea9c757d1fe610165f4eb6888dacf4199b17414660ac5d64bf09ceddc5a998247e59c20866ddad6b34f065dd3fecec2f79aae44d25404db626d7647310dbb86bd068c21ba49a84d2de7f2d6d875a0963eea1ff6c099529297bf77c9f481a58d820d1209bca966e2bb9e48c4426118e00b910b3df707cd38c499a3f7038bb72e0fab735b6a9fce9bbe56482192d136fddb48a478f33ccbf500ab0f2c7b5a0c1ec42736738ac0b2af60b382e26ce77d1d823523fd3eb809a2c43619693d48e2b9ebe30d8be3eb7da90cb895737b72e4717190b7cc10bc6400081b5f20fb6202bf4be24a374837ee2355ad45a6dd874105b4e3cb647e01ad1b997dab10d5f417aeac52fa5dc1c240d4f3b49ee59a21695f1926c167395112c50db3c067feae67e8ef6da843cc1904bfc17489da2b39c5e5d4aef15bcacd4ac1055d991c066a81ebae3787346729f504cc76af47c2612f6457e736f656cf817a71e82d3b12f542806495072c0841a8ea8f3613070599446b4195652db11378a645ce26677cc2908f4ba9cd91d28046090e369c23caf1ea801b6e00b35d0ac8fb6193eecabef671db00be3ad269f37b48abe4259798d01aeffa82d0d4008c2100d6cbda395b75804ce2ba02b67d40df26e0514a3dd31c38991900ca8767db003034404cb535b823bab4d75a8235e46498df43b43caf35fc4c103a7d5b5a9ffeeb43e67a183a1ed5ecb4c269238a18c53995e0bb4b58c2257754f471e2e94a708b8b1d3832bc0eeb79cf132cd524c13a66f68145f713dd3a1e80d006cad8c1cefafe97b75382bff08ef4d62a5006a7e8161d4cbc48eba529f0110a727696ca1a7080d388694a5f5e303777694d047e5b225dc86902e2291f3df1115ca69cba79f793bd138edfe861848d0026759f852f958e872472f191b5706ad6011582c5d04eca2eccd3ad5c76c49085f22b4365126fa97a25339f72d2649dbaeff29ff6c4af86ba5b82754d83f33b220ff48462d476680e1e2e5f36ae879742c1808dcb50ec2db4a5ebb815b431b598416491629783193a5b07981e007d1d100cc65a353677f30308f0af70fea1013c5809c6d65cae73c1b20ebaf4e926d18753169f6590655ec1d6539dc9c3eddd1daa405fccae987aba148b0e10c2e4a8dac2716a31ba02e786036079d20c9fbcef14657624140f86d417c06714d70c474764a4a714c7f3b58d7eb527fc68240bdc5562eb48b90d825d6886a01ad392f7b51b23176014c982daab948ce2c0d001b3d86f3a2f08eb76b46f214b28b2a19185e2c6592aa6a49b29210265baa0a415c793269094cc001d94848a20f636f856a9537412c6db85e08dae1d4948c70b7c97a9b7203242e181f5858b154af9f8d3e661f4d17ece2eb2cea3d7bd3802782e6305182686aae5e844b1283ea9317a8d61883091d78f94860ea402ecdf5a8dfb8f5bb1569ef12c17e1d60e140f7d2b1149e09595ca98cad1a848ccd886c6c0482d30c9040a588fba26fe02a4a8037aff096ba81ce6c1b57247f3fba99c265d9e24406be8fc06d75043300b654496c3e4691de9f07c9e801c826ff41b943a0ff38df665c156ec4b1362613892ca4cd58428b73b0687b0249519cb955ac398c630c24873b41c4451541e39294e431d711ab6faf0091f291a316e109d66b4553041d31b5b31ca5a0975fcee686fbd782539ab95a485dbd64f1dd648fe606e3f344fce0b8698c32abd64c20d284da39002855d57a4594819ea7c64da160ebac1bd063b7d011713a6ba6184086a2e7b9e0ba80fc0bb80c079e0e680b53d0184fad3c9a3627d5fbc4b427a317e8b1b2d8cf1ac0bbb250660838dc350c595d708a862abdc02dc86e179b64b9caad0ad6a08ec58618dbdbdfc47e703e1fdd48fd33abc6dfcb855cae8e72b7fe9be09343dda34d5f3d771a9b5704f44ba0cc6a9c15205fed3e4625aad22db201b77aabb070fce34e1323d374cd962ccc30ec95ce8f89a906a2b374106e84372fadda59786e17cdd42b48470581b4a4ff8e76152acd1c8b8a5a49ac341af12bed809f1462991d5b0b4344899deece518ed82fc550b7db64600315532f7c974fb16315574a1cba9a292b55d0fb0bcaf9cfbe1d7cee3c123b43eedf09e0eb7378c3ff68eddca732a03bb6a4c3682967c735c8ee477e7367090c65c7e5da5095aeffe019f3e59fd6c9fbf89ca296bdfac82ddd1aff2d74efb1e0345fb5a90d47edcc1947ea2f754ea05190b292820738d0574a8ff3364da2474b99a7af182389c6ac5caf469a1518eb196520df8a224a3f7e607b4a256b69e39f89d629b70d2280f84452f466afb642683788ad60e57cc956110e6a96103444862ec5f450feea4ff850e1414d97d71413688c30cec02c639034029a4526052ddd318a64d0343c121ec67d3638c705a54b2d03b96dd0599a99b7b72f4e00f0833a6fb6d80651e394c50768a007b2f5fc5dc67f95c16b93219bce32bdceeb1828ca796e7807c015ea020ec8802bbaa4c63085d85081b1489d644124c0ce4f406276054cc352bcd392aff281f302efb7b7d5d3b465215a997b64601a6c8de5c74fd5ab7e3fad28374da09e68ab81734f142d1416a222b29a556efdcf579b5d8e635649279256a05eda9c63993fc6933bd4515c8e7204e6ddf95c8b7670b3d1b41b0aeda2a3883d909d7ddada0fcff865a85167e4a12981e474c6eeb9862c6c09b8b2469216602bfd724b993b30add347f08ab2067a32fb8460378f05a12164d32e9ab7fec12b6283433d8f2dc25275cc13bed8050c232e28ecbc6af539a3b929de255aa0fc2e480a5653786860d0e3c68125332fa883b307d45a520c8d0cbad3018bbb42b03b8d133831cc87c44e7d0a70a050c5b8e7d20b6a4cc7b4a1ab404666b79d8beb4def1c00d106e124082a91d4a0b568daa3e4bd98378fb05008f61a934d8c03b9e07339c15162d2b929c27e16c4d1b8c1825e490a63a8e8b4630dc9df25d3c01bb3898a74b07d3da4a84477ad05028a5e4c1186faa7d6863d4ab4332c9823b672e92030582b95a9950e626ecee4d72d19d9aac09b59114521f5146e8f648b35668f79f631dca8e47f695cd0b677e4a40720a949dced483ad7a2009c17c30fc96a21df628ba1b9e110a210964a2531c42f493d2e6a1919a1d5139525709e97b57a338d5cba35114cdc3b5521a24ea620ce4bece638659726c916e37532c45b1ebd1d5d04f3ab739399954199406e7aaf853c2a1e6e2fde368dc7d74aad5e71dc37acb74789c52c2755738a677b29f7a1d364b68c015c8bdb3bb0e2ff2266eb329979bab22034eba0718feca4afe4ffd7a76d7fed9e16e87d77dc89dda848743508debc903efd898818046c652e8191b6dd9758099378751d2b43090973d3d9b111b206f742c37a8f7d943d50e050487723524391eaaf680a0e16eda81b581130f9326adffe102a28b80db3dda9b097d826a2230b60226bc5ac460bcda24c91800671044878f9d996922e26ed45b6d22e18664ca8cf5f2641375c07f6c2e054f9583630b2d2070922e4211a5868703512b4052af38ec32ea4eda6005ef40185e89ef041fb44597a45400f2250888829116de6f12b2cb336ded0ddf4f683b7344de268d2f9202e4c8727d8d19e9a631d70715ac909baa0d3683295e36c65e66ffa22747e5ebe845d824fc0651702c76d4083f742a10cccc0877ad3bc369ba6aa33828b6050e5960754bcf033554d4baa2b7c53d54d7c65f40e5c8dc477fc3e1d12569ecebf31fc7f46b3d41ce67605042ec8c2f458d2e046484703df42dc82407d1cb06aa9e185163e53dd94573879e1a455b051f420d00f1d2a527c99179fab5baa7abcd5840ab02db31d91539cf5812312de6badc3097bab7ae9ba74f1d5cead43165b0fc073fabf8042af74b1cae245ab68b0f260dfacb9837e5b90e1a94db5afa9dd98ca45303c03bc3052ae7379f8a3d44da1b9c0c0669d4fa5091893a8dd060ed7d9d236911e958793327c28abbf221ab512b9d46600badddb5cfcdcc172de097d2cd8ab0352b6915bac6c8b1c4869c23ae7d25e1133822cee900882684d197807e99eeea43e5d85b20991c3d0c24c3d90e5aa494777cc45d678eeb16c6e31d174ad84a070e7d8f7772e6db3210022c56db471bffb8df7be7bcf1b6f79f7a677de7d07df1da1e0f8220d61b2f4206c2698542faa9b59c7d6515f1d75abb79e7a5c98a37459597078c33befbcf59e37df79ef9d37f93d0b704961c63949507dd00432bf4489fa31f77d70ccd84996e0f03aeaadaf8e7ad4514f7df5a9b71e7542dd89b48a0df9118b475c1308f01d2ba9146dfb13d9cbd273172859f65828b7abdd1a69480a327f66ad1cb0289a13633a084f1f6c8eb44f4476ce73973e9c8134f2a52e1b40be4cf34fc0cc9be2d08b9260c29da0cd7879901c5c7f5c8f2c7502556b83da3640ee1672974336b9b6a15425d805da121bacf16fb2acf481c12221d5bad5708557b610af35d51395da03283c653236eff6ab62328091e58e9d83d91db6e99835923c4dbc421f2ed612dd041a100d7837b04577ba7ac111186ed317cf29e08c11202cca13803344659bfe8d32c9d17c4812132356cd0dfe1628768bf2139151cd689aa96a8772aacaceda6674d640e180cc078436864dc44d963b59d836076ecded00540e16d1fc028268cf15c87bb32f2b2d25b02b78b598472de960695c209d8ef7d0c8e0d7f3dc2aab939e1ebb24d902206697d6d2c27eace661fadf663848b276584b9cebaa1c8b54f04c45273ab75155a8529e916174fb19f34a66ab7ffd5b7a094a04b507f16e682f25a1bfaa9e554c83fd685d73a8652348e95dba5e88eeeb63ec36df0de3762be96c04c4486193fc043256d37876603ddf922bdbac2164bdbd16da88d9454340127ba4497b0c02bed82520c367b88275a18dfa05607e7d278122579cd618611d79e9778247a235278129dfc93fc9003be07a58c8bcf844982f950704ee2e619309f383e36128108aa2dce22beed5a41b8ba9864e32653349b89b243264e120190cb6f88a09a3033a1898a9be7b6a1ed3e8b410e01542fc8d0528e90f5cc9b410bd0cd17b1d48666fc7688bfc3e3f6b5e2eeaf660af9a448d6f009f2fe925fd449b1eb1d116200e767191050521742cfef6959cc2b9ab08659af9b3284ec9f99b08d092393d53acaf84e65acd0be500a2dc2a185a278806753d2ea017a551d5722b807b68f720af7de538f64c0f187801ea707c08a6134efbfc90c505ad04ad787ee5095de8585e76561285c728e0936a9629e02012cd984e116ff9c7ef9b9b003e23def5853fddc14db494e79fd4c278723aadb0e2b6d65d3ee7c561020a2328d96b9bd39629d56621428cf0525cef22e9571c2762a0fb23474da56d6c9ca86104fdf33a77346d1de326b079dccff12d69004e72c75860a90362a3ebbd00263d4fd49c79b591892a61c8023f01f2515cbc9bb009c838a3252ee9d8234766704d0c005fb32221e9aeea2e0bc469de0cea9f86ec6075a6eebf24593688186df8ff3721360080be12e6f5fd01f5ca6d040a8dd865a28e7753c9b83126ab605dc40d37c504956b424a3862a51d57d2bf8a5ccb0d0136e7bf8bbf5180b1c15d4427fe70c01410601ecc2cd288ad76cfc1a8879564d68461eb1419957114190d2c39f4fb226619ff1e321a7930042fa7bfc62ed4858144ff7118ff6dfcc092bd8800f2fab2c23201500ea87d19a6738a12b3eef71ff2004bfc36bd46b80acaba7b9ae02ce96d01cf24b6d93390c7076d3407fc82cb2e22351c6012bc083246bd9e5c82d9cf8e6e7c14648bc4a12720232a64a16c830e0bdb30b8e166b8c1dcfe2bb76954e3f2a82921e1f780bcdcb92cdd9cd08f12001d9062e6844e073949150b374f022d574243f03da711b340c5c9dc50ed0754eed2f15023443397436aa2aa92d88be638cd67000f47fb0c7fcf82f0b75733d32548a2442f84e325b7986b515b4ce5aa1d7c7e62b19b18c62affce79441b92c9118bbb5ffdb18ae11d4fa766fe1b14e5422ca3c54b88f0033a41607003c849d53c6233d9d663077b567c0e2e083e199daaa1ff58623df26086b9493725b6afd72b2822b254ed9aafecd8875c5232d091d960ffc89b8b9b1f1b86a73c0a0ba4bc031a8abe805930d2324a07aa637065117c93fc93208c8b96e133161b0f3417504e8b8668f50b005a0db6d747f1545a6179f8c664452d42442087a61e4be03671a93fa8bfe52b17daf47c90c6f78168e8020d5e3749c8de7b6f29a59432a514cc07bd0722083428b01984705392315dfdea19a78a854f3b6666e6232d32937bbc71c8a52f392dde4f86a123253cf7d800fc2ce205a1c31af7a2d61d89d7abbbbb7b0ed1bdf8975d01f04f3f64ab4c85c513fbfd8dff6997bfc67316e53cdac4ff216c3ca1f8e337cff7cd8739e7d83d16fbb0ea3216349a5c0815005f4c8642cde91e94243c8c175e8ce38c531fbe08938b910257d2592b77e10e7d83b791652c609c5c8c56edb7a39b6537ae237ffcbd6210efa6c6f002cc563e7e828608c9a0c4c84911548eb47cb105b9debbafbbf3b513d6dd5cb8d9e8d77b7cf383cc7093b5f7868207b93a4f731ae716a4ffea26e71f8de08682e79e6a76117503fbd5f816ffc6bb2f86be485c0886894432a34cc15fbaa448e606c4de17face9b4b63d8d05996e8bfd0571a214182a48616375c310ecc3900e3c0578dc0d67837aec31de61a7374e7dbd3c537fbfef257df78349f36a2a2a7b0cef553524a29a57f5d9f71f2c701483ec4852ed0c891281b897bd8d3bfd80873f966320ec6417254fa897a0fa163f7bae3fdc9913f7972342ba6f126c3f54629f7355faf09ae727a9543e6ca38ef46c7dcf1b1037a8f0994f2518d9021ac39b61f3c780bc2833e185abce3e86530ace4d02cfdeb9bd2998fb7c0dbd90c37f327aeaf0eee6572e49871e3858ee3eaf86c6af3f499d46638fa5ac46e00afee9a129cc13e075765664c47d8ebeb679f619b4fed2ad5304ec769bb3a150c6ca603a3425a20a27ff50604c31ec8d515a95d8d9bcfd5bd13d6fec97550b38be0adef50870f7480d181031d3c64184aa2db09ac83107e10420f42b0d79c5756efcce7c8d17dcd633b01eb5241e8637586878661226895a339fee43ad9677452489d463aaf3a6bd7aeb51b9be9befad7739f17a1cff7cabe7617a7b9f7d87675aa239ba97ee09bcf0bfdc367072bd77525d8184792bded3eed6675be61aa379b55aa58712417d753d89b5ffb0dee31b5aee3606ffe4cc238aec49da0503270d8eee25ebfd16318677e9731777e77692fa5cbcafd5c8ada9cc6f5f5231907c00a32aef95c4a775dc2d5ea12b2e73781f24079641ef9fc92755a862ef60b5ecd244efa61d60e1442699f8075ba4fc09e7f935a91ae7f86c90059cc8342599b7477b4ee4bf49b499a27f6d9afea3a38942e40f870fddb5d04dc6304ec3a308e1b15e145b88a0d67e29e8f17f513f79e1441d9e57eaec4b427eb4caa26022fda60e0996f3e5fd3651c967516da78f6d8a3d861e98340e4ae6f9f140bdb631fa47da67ded82b6c7b66e078620ec35ac7b00b72ae63d77a1f0b723571f6e40badb44b7afcf98625eea4ec83d27125bb584ad7faa1adc7e3822423cab4ba40beb026725212d106931020549f9d9f711451880d2c7815b4170e9e745640a3256c776a834cba0d625c4e7c7fa6601d77f398ddad1235cfe0470f94bcdb2d0c6fb29d75458d8970dbe43956b24ae00bbb30377687ee800e348ee03ecf9ef401611dbb40f5087eb70c70e76e55e07562bff934a0a0bff065beed7405c8a7218c61d72cf9f65cb9731d2d9b60332300e273db961a503ce967196815fbfbbf4abbb8c5acd7ef0e8f16b0bc2e30de8dd78d48a2a5fc0f852c4e52f5d7c41ea01333f33b38ecb58be18dd4f7599999999bd5b890cc20823e41622eb9762fd19ba75de7c2ca05ab98ef3f5dfb9719dbffe3e2c12df9c73ce9f73c2676e3e84134e9ea8c529498c6ec4ddb7bafc704e082184fc73329c13ce09e75c419a2496ff82eeeede92b651eaf21cdfc9d586f2c398cc92bb7c42cedd5585950fe55f9773ce392b84107acbab8c37b8c6e84fe4383219a11d418bc8c720f749fe8f9965f78100927133e7203dbc98228e3b74e5f7fb77a701f6524488b530bab0d300ff377467f745ecb2164617bb19a49452082184d0590e81032e2e63e9e2e4b22e63e982c465aeb709d8cfdef8c569c6d18d7f8a31b691353163c59021f788bcce324e4087f1e30e23fbf5852c6736259d199d744e29a397130ed5bd48fc01dc22920814ec57f7e3339e080443f52bd65d9d922538adeb8b665a7575bfd38ddc69e6522597fc8f02c1ae941f93716507859fddb8f057e8e1c51471b4fa23f70ddd584488bd7c321f632143cb3dd297761a602ff70508650610b016462dee907cff673a5dde58602d8c5add0df1a3a0cde9fec04913403421a54b6d550e493c220716d01004142d254b705afd45332d56b2c45bf58b16d0eabfb8a205b4ea5094a0fe2121d0067eff50941f381425a87e77435eed9090f80b6ec3062c50d200c3081cd0c023328116287ef8618a2f96f0418b5bfcdf4ed02341d232aa5cf8d224b1f42b841042ca416f32d02832cddcc04629b92a99a3ff37f3f8cdfda694b2631c2c19d522735f1836258661980f867d6fda57ac628d693e28b272b5cffa6650bb369fd257150fb4a99532ad62effcdae5615916f6321631b4b8bc9d60e232efb2708c4b3f7e8aa0b0c797d9cb3ebbb4b697918a8eb8d9671863bd95bea15bb91a55ad71af72d86f9ca7755f9385453d47b531945cbe75c36a166ecad200539af21a0d922be8734da6f185287be2fa1897a25f3bd514969f524ee503cb375e4ffe3761e97f9aac1dca3df935ee718c239fb7671cf92815aba8b0fc2714f35ccfef58f711ddab43a961e57e3dae7cbeb0a7943287d1afff15c3ba8f03f7ea98712ad5e4348116bd53c1e157ad4832aec1b2f7ed47d6bef9d45aa35655536450f3cd07d65cdb7f8d96dfe6258695dbdb0971cb3ecbb82b8303c9d5fe7a838d7b7d965dadf3fee26afe55307e753d5f73c105972b2db0c151085cc06f4051058e2a7290e48d1f5a1e4712115c49e2c3f5abe54e299d705c7f941af70a0d6336da51118610715881c51137d44024450f494924f124044c18d1f2b659a1bae6a2b2e01007eabd045cce8283965b2f67c1e1cafd56f449900b4772f0507396d8eb3fbee2f9cbe0314613a267fa1e37e1c701405ee97776bc8ccccb7c2639dfb0971f5fbba69937bde5669e377bfaecd4a57ef03d75a787a7877f825f7aa21bb919c97d47a224ba3287e9a3c9f43dd09a4cd63d94ca3dedb2568506bf05d78912763ff8c6f728a18eae3a6459741d95145ba9d65a2b154aa264a6df4cbfe45bdb45adf58ba369620b70198b2a906ecd32d3973e687bfb57176432752b68333718824abf75430f6de697ba0770cb8336f3bb64a1dd8152fa8d2bfad6f6264ec9926f6d5ff4add20f4509daaedfba5ab72f5ddd07d403378e31ee437134eb3101f3d9ea53ae06f120c32e631923e9fa46bf2405fd510108cb308ea6890d726f0a8136f337eeea7e8b15522bed5447f4c2eed509716f02056df9518171269003322ec8bd8b03d2ddec2ba55927a481b82019d81ff75400629cf9e3802c5383cbfd788d30252cb0b0620c2e54f019230bdbf065b6a958804155adb66fd7679b0f1554abb5469feb5553541e64dc1825b8336ad8fafe156ef52b573dfb4ab31b584f3e16c3d4d0723f06709c573dbab28c716202da2598300cc3b08c8a2bbbe84356cb806de64f3376c6682feee4cca752ec2987bd6a0a2d4528a4be26aeb1708ff925aeb1606f7e17c18942cd46dac15eb456ae56db48946a9453fdc0c2cb58c48841cde815367c71b5cf320d494b23f5f8ddb8af65709118673e1ff598402384b0238285716623f1172242958eb95fafd161c68852fae99bb07dab4c0389fb9db613789c20960c6e3e35de77c2b60606971b554aa89cb07cfbedc9e1164eaea4c1848aa6636ea4d047ca875b9451c69b185757beb785bdd1eaf3a642b76ab782362ab0abe8d34616c180b95f8feb3af4294755eea9a8a8c2f6ed0ca27c62c748638c2d3d3e3c452f4646f2dd218431fe778a5deddcfd2b94da9de2e94629a57c08070d218003c3fe62797dc42e293918e4fb57ff50ed955dc753e0663b094fd4aef2434865adb162cf58e5cf5aecab53da5d73765f945e286ca2ec09a5ba28bd6a95745e3c50b246bfa67d5621f364af6d41fab5ec33e85f03831fe94bdf92706508579aaee93fd629bd8fee315f3e6516eaef7c1f6fea4a5c640fee7409cd3d200a62dd49f9cd61ba48cb3ffdbc6abf8f2e61877bcc9f9f5f14649dba1e685d6019b1b3d4fdd611714f0ab9375b57f755d495a9c146f7e094d2275bfaf3fdb5b9a540bf88f695d3e817f1ce7e31e23a3ab4fe5ba7d6756837b3d7dc9bf5cecebad77d21cb88db4c9591ed5731b13df3e71b39e23ce945e955aba4465ae0675a6ef6181729eb4318040699e1629fcdeeab81a1fef5cd1de9dbd73308e9c397395782b992a6c05d6aadb51f0917daff42b8f02d641dfa5046e6e153d87d97bcba87165ed8698c235f2689f5effbe55cf9d0851ee6c900f3a466def4a9992e8877677ea6bb71aff4395ebe8fd2cbd2976a8d245cfa1f0937426d7231d4fb028403c9ad737e0fac30f495e160e86bb9784b9db6695dac2e3d7b2e0332bf88fff5c5ca9fd167c5b08f32eb86b747a583ed5731b11f1f695d8287e0cab73d26cc3a298d3786be0e07182b31c688c61888061b17bee96a02eb9e2f0386450deb2b56f844f7e226f70d21401496c6afb48b3d4cee732e324691358069a5b4e7ec620fddc3b958f7b4bebc7161422db1deb77321d04e43870dbbbbdb5b39cb88a3dcebec9aec5936af2bc3fce288aed7f8cdf540aab9c73441c81764bc636313ae30872208219cb3e80b84f3355b147b8846b1092cc2e2f7354dafb1563f9065ea76a08d3499223d027ffac2ce3d0b212c11ddedba5aabb5c37cab1bfcf810abd7457b0b36022b10b5c47e2820c8d2e24e74b71eb479a24ba0e22c8dddad78b0af3de950fee9db9d96bdbb64d79ccedf3a024461e7d727ba5c73df9188115dacf327ba077de7bea652234d10734e31321939d23861bf9afe9a1bd799edad506cd3f33f8e0051d8f895004dcc18a31422ebae5b03f8b6ec6e772b18841012619c6b98135de784b47b75cd7d4de5ca9755739a202c7c8f51ca0c17252c7cecf2153d2079bdb106b593d39d9c0e5dfe4ece8df674bd651ee7b47a719edbd8c49acbc325d4708f186b6afd5aeb8d7bd1abb9f1ed75ffc93114cad9711d7777773f924ebdc821457c0b00126e7c8e4ba0e11e115ed86d4f8c033f93f18b66c412163ebc7c850d5b4cc8ccae0077284417148aaf7826300f04ea47712aded9e9ebdd7c3c06a7c55afdbb53a1f88a03804c60e62a42201939e9286ffc9a9beeeeee22cf59ad6e4c75b996b09de336f1b79fdc4e7f32c852ce0aeb719bf826d47825409e1800c093f9e87c70fd313ee462e8963f254e88dbc4cf38797deb8ee608bb75f1b2153b58b93fae133473fb4dd0e967cb3cf0f664613f1f37fa90f2b3979fc10ff63797f0c33de2771709d04406b32c0372c0ed1ec72eeef3f82b86527a2abb23f1f6cb554e97baeecebab09671e2af3e013d6efc7800e681529edc8bf16be2bbbbaffe8addf12e47c68931324e987a4b9db9c27e3b3762613fed84e9a90ac03c31581b2ec13fbec73c92553f3e8c36717e3beec5f761c28fbc4658f8dfce8daa7756edeeeede02e6940311763e851006dffc187e4296fd51c36ab5d3f3b3454cc63796b16c8174b5df3e631ccb596e38f223dc608d8c9a3c29c27e8fdbaea272bcaf2e10dcd2b53763647bed51d85efb1eefed35d31956fbad4b61af7d2a48e9fb9baf96854998cb599850b95f1b656172e5ce7cad6de40cbfc78d40168799d31985fa50190cd1beccaf605f66851c3f43647a2e07906f115a7da80d0593e9c21037fa196ff135eeebd4f6da9b9e72a9ed7b95c2ba940a326f9f05998e857f0ddb38140c717e6b59a7d55be3eac246e2462894ff7baba3926b2ef03cef47b8c10e21624406893af241b9071f428f7198c774df75a27c58c49faa5028ef0e81ac1e9801ddd95b8a85fa59c7c2f53d507a9035a48bd7c51b22c5ce102508fbeb67c8befe0cd85f4bd819a2f8cf503ffb1964eee7dd4f01995fca9e9ee8da17d230a2073438830b299cb45060acbd9f9792bfc2f5584a762ad4cf3ea87ef6de055d8f5129acffb7cab01e58ab8c3f80ae771fd0f50fe85e55a220ab07c543881891417a1645c608b05aff5f661d285fb356631c7f141ab6efa75d0f125f720a7ebda8d4ea5e4cde5bed70acb962ff064218e2155a5defaa76ea57b51a998f1fe106fbedf8431bf850aece6e3f4c374381b1d8fd9e794c173e0a85bde4322e5bddf867c414d8cb1d939aaf32ba9fcae8d2e75cf8c17e3b95b9b4e08210fc23f021e487ce5c988be9b6c03852ecf518970bc15878bfa7efef2cb4ba27c8da81f55ac86a24281becdf16e0bb005f08fe917a94c118e37bec609057d6f192deddc120afcea4ecadbb18e5ad5a4b59627f8062eceeda1fbb945f49acff0f909021232cb15f1ba5e0f373cb53b04ba9d02f7f85f8dccdc0334409e28f5d0ace1051dc6a23ff6ec2ac1e492091c4153450a28b262dff7ea224760c6d36a0950f1f8731025940d8c6df9d71bab01f23f5f3bb471cb267c1f7fff7563bed7d83acbfafc8cd383c204d1c9edc2c3f1c65a12107f7e45ebb018426ac080423bf9204e65a719d0f4ab9ed46b00a642989424370db5b8c2589cbedf72aaee3174bd293cb5dc622668c1830170097b188f9e19a6185e08f932e1914d6f88ec856e29e9760cbed22f7a854f112b891ebf80c15f6133a5d947bddc9bd7e13dcee2e435cee7ecd240c1350b415b79b09e3a4acb09f5361c23c8c04b29a4923814cfa9d4abf5bf12bfdae8559344b7260031578d9c1181a5a1d061ebd208e4a1347a589a372a00ba53333a71c95068ed38c8e991d32a71d368419940935c3a3e4fd3f8f191136116652dae9e452a41c216df18252199b2a72a326fec4a1648ec42289553543d3e54b1831d72fed76e0d8a99b3633c235c24c971931944a292537651779d5f859bd200ce38beeee29a59729219cf2247492335a11a7ec2267b4a2bb3b4ed92d67b4e2a443c78e6dc796427777da3193e9c0c18d66ae2827cd916577c615dda078dececece0e462f4c46e81886d16b723337dbac19f502ccc2de9fbfbb486134a4b41429522e29524ad634634d7646a6243393e339140f2b532f661827e5354e42a74a6794333b9075bd67f31c8a07d6cc1ac21860c81c078bb9e88c127e1b0d81aceed2455c77ef51b6bb54fbefbf49d162fb4f3aa48e1d3b769c76cc64a731d855a1b364c952ced9344a49c213164e19638cb43481406fa052c36626b5ad64aad654da345b65b44ca65e954e795d57869d4036d3ae76ec463f8b56da75fdd873a56f04b2b04eb20dfc6bab90e642c6814fd386fdda28a349b2402e0c39011a8136d004f720ca0864451f393937465175bf368ad0c5d88fbb0ce9026b60f4d9048d1b16420869dcb0fd0c218410420891bc1e800b2000f7831042186b24006647b9fa1709d808198da6da5225114c3c2c4a26841c3b58f1590784a7938e991d39429041591e26114aa94da5d1642360245c5f39da4d00c89a180028001f407b9a37000104c0a6a4e307d37c22f9412fe5cf6e6888a8dd75d09ff58a79ec6d9edb0f57ac143f7dc84a71975221fefc15e277334409f297f267801fbb1473cbae563b3d3fcc224242c410672c41050a2bbcb494c0ce3b8636f2c8cb605d4f9364dff318b2b04a1b0559481637f9f036c7455d24af6b41d8af8b4a53581f0dc9fabd59d742c3ca38de41b9de7dfbd1d7bfc8759848226e03e1c5aeef995d1ab6c54fb298111367c2c2ad99b807bbe8b281dd544a523424db4c2efc2e62d282d32bc475843cc02621218c50cbcbae730941f9d70aa5fb75ddbfe17ba441dc81f02bedb80855832ed2908eb2b8104688c9a0a086959fb98c74f4c4852d6851f7e61215713f28d70bf117d7a1147deb625d175fdf6cc8b826326b3eff009835bb9fae87d632cff03366a29b8a3d49138eecc749321445ff711dc89a4aa2c4a79fe97029d7615a1373c3a51c6f612c62427033284bbd039636922ee5da0805f661563781acd9f513bec1ed8276451c5da31c71d88fbf10812c28f359b363b7e9ba4596d159308c9fc920282692402921cc018d1c50281a8951361bd2ccd4ed90ae01c7172a6ac02e83f0e892e4fac7287d427718603932c38b16278f5284862f6b8df1ba7c46e8cedcc6a97bef4e414c82d0bf74f1c4910d28a5d0045cbc6c3e10cee81bfccc7bf39f1b100f725d1b90a96112c33cc6408c13162d6194904af84564b7d281c6c0c20fc247f38fd4db1b94d2a8b5e8348c8da72825e4346a8038a24b155ce830c549cb8baa8d83082c4c801193e48c2c5aee55505715b3031eca18030b09c478c08c19803185863290804091d42005bd82560c9b4d68ad754aa95e5ba608238d098da8700308afa2862c64b80c996b0412403001060f9a1c89e1ff58b4936ac7652c4070c1cd2e63014218976b7a6e51a9ca3da228671c2d71410a4ea0830f3a50410cbca8a0091fa2e820cae009aa0a00a05c1f3ed99565d8dcb239e7755d99c3e81eb3ebb8779f77dfe996de3ffb8b2be25d2a88f6750a88f6d8672768dd27e4e35edde71f43dfebeb63ef1bf758d488b48f886f6ca38bfdbcb0cfb82eea1e4e371fac1382cd1bba87fffc89759f0cce35136ccaf817e71f371f694f3ff884fe9e1f202152b62519d7441bbb543f518bbe77a9ee8094c49f43b8eb7f284a50fcf9435186a204d5973f142588fed50d7941f369378482430c6537543b8636dce5abcf2d8a149fc86597825d8a05f9f483e2d76e284a907cfab41b226a3510b4f121448cf8cbe02f39768f5dd48cd2f9dce3dd4cdae8842e9aa291e822a01f88d4514b01953ef5006e953eb582ccc3d2cb70428094fc401b58c2d2439437a608e1d04dd0dfbb2b8900b4e0410c236858630a164528b8c245cc194c84d0a11504fb7ee75e48bb74c6d057fe3bf7adbeefeb16aebfbf3fbf30f4dd5cad5118ba45e8577823f6ecce58ed17fa568d13d26e7dcc0096b3f08003954bbfc60bb776e7e6e275ae484d4931a416f57ce7b2de80645d0a88b37bddd5efc815d24e54fb1490ef0a83842069257caf87f0c7bd54ff7cbe1897eaaf636c91513781df4fe03b856fd81f2021ccaaf1128418619640f1c50d2df843984524854b113eb8b2839330cc68c197526c988c2b0f2c67c961cb8542841097a7b89c25872e37334db1dfcef5dc2b42cae715f1058ae94d5d75589de3ef817c02bf7ce734b0738b7067a7d8f9d9dc7e60ffc27682dfec6b1a0af360dfdf44304fd6d5605dab80717a603ffe32c43ca5078236fd910033ebdd5277621c1d0c74f1d7ade3eeab5847c2fdbc8fdf80bfc412312243ac25a76eccf8f6c8afcfe667d90f7609ab7de9bfa776dcbdc647329dadf535eebe7ed85827b42a127fce940ada979e05ed4b5d7d16b667d87d2cb4ba13e5de8fa39e1f20211a87f9cc62b4170706e0a339759fd0cead96997b40202143f889b010bffc3d2ef7e067f13380ff473c3abadd55bad6e186fd011232840864b5b5a82f560a0721e4617464031809af6f17d252202beb3a6eeda4b0feab43419bce828688761cd925471cfbfaababcd50863f5529d26deb1e11678520c5c8112c5836adfe469274fb5b89b360d0ea2c35b8e036ea366751f245f757ca525ce7a7a5005121d7f70f997ff5d7246b2f674972eb0a99edb728fb28d816d53b6d51ef7192fba87a6987cc77202b05041f7643ddf22ed5442dce960085e27fe631e5072b30838b9515d0d0e221c2d802c6961baa788388567bf91901073bb38576621919b7092c67d121cce5b99c45072a3733392a526aa7d45b47a8c252151036be17a10fe9737c77eedc7c74f8dcda7df3e34337c1cabf27c949d74d74b8618f0cb5926652ad45a13e3e7cd8d515e40cf165c72df7fe1e777777777777777f00578b7a48d42e5390713b8c7252ae259a2437da4913ee76a749f2543449231c599a249a2499d140dbec89268926892609751a4333f10eb37519999691f0fdc2ee5be15a8d268926e9c27ae1a7a307db7d55c2289fb8c77fd9c0c6aecb02840e5c3045103a08e3460b9044c00b172a8a8e5822022b9a16f839eedc4e7ceebef62e67c73d1f5fceed1cf75ad2c0e6dc7ed8f9f0f7d1eee3734e97530ab8bd59d4472538cb0f61d45052736b90b02bd791df8ccec11bb9ea3eb5130e1131a0c187241f82c0c61a3d4cb7bf07f3f0f79b42208159ef86982d6c60c1184658d020881c60e1c1065594d8f042fff0eb0f24e640c3fe457dbfd7cf7d736f9c280a2a3854411aa2ca156498b003134fe080c416227068f9cb804e284f8d14738e9490207777777b181e638ea350dededede39eedeedee417033733db2c1194cdcc0410d602c118131b860d145156318c1822d4e49f8b7b70868acc1c30e923829428a562ba992e58ba2295c84c160c020690435d0818826525640051b5f5049030a0f6838418e225b4aa25feb57f5c0d5a262c822f477f7da6fcf80f05fa71f3ed4a0562d0a082874ba9e79a893472fec5ffb3118e38b244f80510497567b092caaff8db48c2fbbd8ddfc2eec17ed91fda206a1bc54a75615bbd7644cb12344e957ad7cf89385cfa923dbdd4f207cfebe0e258514761f6397e35e1755f1324aa3eb5dd54e3ca46441c4132140e24a960a3461c10dbac832258724dcb036b00c1dbab60384d02b91122e80e861082d9e7041124e630a2d57f460a485105ebc39e7a684d43e3c27c23fa96a9895020f5990000c2c5394b481ba8253458a2446c004076a24b5ba0da4354ed003143280b08206e9d06f330fff4cc5ee04e76a51ed39c058fe7ed56a8ae7ca61286145142a40011b4cec8085ff757777800cdac022a9871f14c120cb8db3738e346eeecdedf1d8aff59ffa552b2db1e565e6619dfec85d2a485ffebef2568bea31e4f49b1cf7d9addccbb98174427952d56469357795c0feb5a8f78ed4e03a355a1e41771391714d85c3fead965916891e2079028a304eb668f5a324d02da0a1872f5450b08328bc9054244111a68c33b0e0f0efad768c32ae49f9730b7eaa65a10d1109c63c19a2488a14a0c00904960c1107196b080183205aad4396eaafe1346bf951fccfefc5908d70838df2a7ab542a4781b1515341082195c27e40b788bfd0eafaebf2ee5b5d97422b661cef6abec66eb5dae9f9b1c2b0069501b79f01ccd3b73f6bc6e947a161fd7ef536f3989c8401f46031ab005e3861058e2bd068e2847f91590b4faa2b9fe75fcfcdf47a9022b44bd1af5daa013f3ffa31f49d1fe55329230b2121ec6ce49889d5de0a09610a7fa1cc97d66dac6452bb1972a3a3f865b7722fc7ffbbb937ee75ceea86bb59dd78446a27557f0d54421b4107fbfdea7ae6315da747e42d323f3ea53107967dfea7a130732333f3166416995d6a3eed520d60f9f3f2563b02446103a24da8746e766439ea10d14800000a4314000020100a870422d160281ed4b5bd7c14000d879a44704817caa36114a328ca1863882180104200000600cc18cd8c036a965f38f2483ceeb1128169714c65777c0921396260e020b2277d374bd366f10605354220b106aef91c940ad7717a9bc2035dc3c4d2e85b27a292e6da03a60770d4e6b67c08bff9a3658a7ede8f591035942667ad790bb2e088686f1e1c965942ffb91bc9b7abb51233d3f90869a9b9a58fcccf11d2b42f551d55933d32964f22a4790ca2244ea0cd6f5ebd296eb5fd534ae2fdca7dacb53246489b206241abed0334a2903c4a4823a61bbfe302de975501e9891eef81b3595b83fff33c95681ff07f1c62ffe3393c890ddbcf519b6241a043b3f5db0f8e929016b69b5ffa29035a754dd6703f8c50a2f7962867b4a340c4ed6cf44614f13b663e75bd481f423784585470dd5b288e8ff56833bec9be96cc0f05a139c0b1b40f1fe3d97273c4262a8f0df772a68bd4192b1d42f9df355ac193cf1fb71ad2f0a21ee3f31fee478c458e907adb31e8b4f6e7ee9fbc05b070c8fe9d70dfc2c8dfc3de9952be06bc38b2c1bff67f0ca0b51b5d185069c9b915c7f96d8c238d16898a285ebc35957cf687e5c49482e57ffbc8db4edfaaef6a35285cdfbdcad9d0a6742ad261eb78acb8072edc3d4d99811d07a34f5901886eb1d8093246ffbdbe0c2e894d4967efd06fae14deb6a784df29b163bfddfa468ef6d281a5636971823ca400140b58cd50a7393e859fe763d2f496225d657b8c6945af46d1b3eae7068d1e2aa34037f408baa18aedb80915cc4f8df51fe6379015741bc4260e9e782da116cc50a8fb43e0fd3e57830721ab65c20a17efc9fdc580dcc9c58d65b8847036b3ef812c385243c7f20dcab5fffb68661bd4d21e7cd11a4b98ac22a24c59d05fad620a0a7b90bce363deb15f38231cbe04ec26029a91ba25d4b8b9031a88559f5ca94234bad722adb280e02c57a1a05ccb2d10f38eaba1c991f17ec1decc15de3567483ea9ab6879e83335c83b3477ebf2f799f36bcedadd1a4fe5568742193f98ad2a1b6c168ae4e129e91e2f5afd9632d9c9830ceba2855fe32a32e74932d833b652fc98bf2bdd6a200a4030bc53421b9e619eac0d5ad9992a5ce7662b7923ba645beba40ae7f9cf621a6a699e2b9fea030a94a081208a52bd1571d73d0cb7ab2b2f7cba45d93840497b41868d3f7f14cfcac71884391d63d0575ef6fd929c96dc2768f7e96ac2415d2d9b64953b07c327ac40e3e1511f74eca1e545eb9402a58ba97ce6c6816c8aa4e34399bc125bd8bc7c215ae898f50984745cdeca8d90d26db73ef0f3a062563d4e3c6fa0e4d5cb9a10372bc2b534c615ade8e9dc2efd2e338ea1efc7b4e43e2ee511956e1cbd013a6a25c630587115657f9402eff37fea9308524e50f62b8be08f57c82cbabb9021c53aa6a65c84fdb439ff56d1b830bc6af3fd29591656dfd2ae3a2b9668ef6980c18fb36770ec9dc9235b2368cd871a0c9cd43c5caeb87922e3848af7aa1f9ae0426e49a23bd3b3964b90686191ac66cac8f3d672af501560c523c9c9ed4d984b18b23d04d44a828977b66a2ded0a201691397869a2e980075a096f912efee55ef82141fd8cedd457e0e35e4ab320ed8abc906ce0db95b871c898d4ee43164bfc15bdc4b5bcd634e0043d2e9fc5cc0ad15076fd34db25698dff0355e3986daf7f064cb5d7f7d322e8c32216fa4104b28809feec059511ae97fc318aacf6228f4a054b30eed20b4a0b526c3d93869fce8e0d3a57e0789fcc9aaed7963f833afeccd4686f34b1ac171923353784d2409b4a4cc9e6880d149846ec0c43acbb495167ce1893a67f805230d0686373ae62a70e89ae61c15d6ceb8446b65429d14805b7a0698e3119a3e53fd2cb822fbdd4928807307f2b0e194014b82a4cedbda51fdbe6f766b31284441c3be30e4120148d8763e421f00832fc1e2f2ba060c023f3a1783b74260d5963136404b96d166243b67d50c56b5a556c5bc242f64baa74d180b7b7cf99303775e7eac4d416ac80c080eac93a7fc35b1c356fa053670031da4894f3aa50aea8c8de6c2c0cdaccee791d80730eac11d1c0fc9924ce060f8bc8b161ebd72d2905040020cc8146bbe15e8c2be5a8da8be89b189b67f1f37581adf2f5e478be93f4d02d3a5abf838b006db2e3714138b7ec13cba4759eea8a2de1386e3d13b62f1ea8dee4d9c215f22ae98e177d5d7da3426a27c52ed7141cc6cf5eb8058a23ac3a9bd094c7750c480f516ed018de2031229056ae945a1520e220ae9a1ae6f84704bff7496dc7cf5b46ed4aaa98aaa81c6ee239823f74269682b821502dcbf44bf1f50009b5649904f58faa3c3780508f1f5fb2b23341374d117568b498d07913e21fcc0e5a9f7fae99bb63187adb05c88ca37c6486cae6a2c61a49281983c36c45707d9f05c7183afdb0d963da340cdd374d77f944b655f67ca6b77bd16cf003d5b990b6b0bf83fed8170a60eedaff64854b74e86b49a29caf769481b6e635d32ce3f7cef627db18d6a3a00a53af05ce757b5f820e14603adb62be0d06775eb628e01952460b752d54da3ade659681cad682d8127f7268593167416c8a51a02431440f36fe4321674c3999bbbb5b33040cdd9189914095b0b7cd42a24b212465fd738717bb4a301946c4c042429018edce439b199b2690e60192dc407aeb2a97d4284c98a6df580e6520a8a26cf0c21bba78b9227e9762fb9b63c27e214020a8bc8ac3a2494595b0c45852f012f74109edd656de8d7d9a1f58f131befd46d060a91cc09929580c4b28fce6d7e6a0362a582fb11643a2a527217eab76c3801e2c2c894cf90cad6f3b6f0ae13b45aa9adbc41471e74781a909e6c55abdc66b97345c87a315952af957ea27444256ab162883ec0bf608d1581ccf5b168ca6d62090352b972b2ec146a5bfa0d8d81bfe7a252c1963354777afb5aa274e61a08bf19f02e4b3da787e6b2e6e65dd67b02688ce70bac998052c69eac571f487ad99c51fa10550ed88286a0a53789afb3854b54a48b9547a1326b6fbd10f59412af8d1b84ebdfa2b191014a594ec1343f7fcc4cc485b4f0f6d25b1c91694e15d43fe5edc8ee1bac07725bd20ba7b96512f8704066411beee8a7db380d37ab338d70c4271b82bdb950a14a39687b091d523a1759a496ee7006c832a7c14e78a3810046b3f8a31304071f1da4d80348bba80e6c69483c9e63128e12e215f77212db509c80748978bc40be2ede1e903cbbdecd28dd6607556a17336d759c06361c4c86e1270bceeee8ea629e172ca2d547d242ce2de7407e816d2521e3bf84e89540c4bc7400408de4637204d1f2584ac6def9cf67a567050a0dbd6e95d19b8c33c95116301163c560e7941067d904a6e01e5e76558738e671226040c6e6505d776aedce2472dbdb793bfbbc66fb0e7cb1fa02be43d98aea0bde68c9f948b415b4e1e7a1edb01a68affbfa9b3e90babb57f882621263f3ef4a324bae80918c8525df048170ff05f38a1a4323882acba0003985351f3dfe1c9aa884f8b6191b909225c5a925abc7435d311661398dd216f9bcbe5412b4df9474455f835d70c4c496bdac3eb59c7448c24bdb58ae63f3e82f008e65240b930976c54fae54a39c775d12ca60c62c82d685ec18a231f0bcc21210b6d5544594a19a3aa6920b8f637eb7cb0a1bb06db1a1cd7e23eaec71ddc1b6e41ab591e53a5e55aeb1c0553048f4c8b1f36efd23b72ba8743a903a39703ce1aedb38f37e3841880948944b7461a45230f124afdb444c8edfd1df0ad5cc9e58591db6b5eb3104a4ac1ec696dd985e4dc1bcca4bd4d605263117de866c3726f0d18dfde66061ff22a4171ef8052a41166dcfbb9f952dbd53ccbc53fc74f23a83e809ca5bc124f27898d17842ef2dc93d0dc22aab905be84536e9f945363bcb972dff8962f20f227744bb07e85266992dbfecb3099ebedde0b632f93b15f32175d39059db1a68b05083d4bce038390b0560451d88f36059801afaab0132d9aa4bad077a79d5996d541a9c61fd0ca6ce312166a078dff4f372b34c0e1ac939e91530b20e2c8e7e3529778e61888b128bd81754503b27c372832b33e24507954cf0028597e1b96c7060ac8fc39333aac2b09399e070ba0cf333f26bf041f4b28a76d13474104e103c0c11f411b3e34d2ef1cc3c2c82d6f11d77e203894aa820c16f262b4bc762c06f770d37dd586695b181e428755d9305323e8900601d17c4c54ff7dfeed648601fab036d18282a391223c309e14c323dbf655b69eaf17f943e48bc3e83b5db74a80a32f18004fbe60f6df78b2ee7c62e8ca2bccfe0dbbb58da22dd54528a4ece6454e053755207033760447622df437a755e62405938bcbeced7cf1287d25fea0c0b1ac071bcbb44c71aa00cebe1aecf5bbabf9c65839ef7f5bce470cc26f9af07301e80b5c266921e77478c2d2d4c77b93ae3d728fec7e7e49cd27bdfba4c7814c8268cb7295bcd740880963b412a6f8b6abca83ee90039f469eb0526338e27a39d49acaae444b5af1071279284e44a8087aea4245f81018f84a70fdbbac509690f8fa9d97af8295e197d87676729eed46e7c6a97c938a299f9a2e0c0989754bb3f6e82bc01b7c256864b9dc40c72097bb86d965f5b0e65f923e19b15d9e53ba4ca7a41a17c1936f1785c11495d817e5591b0b70cdd7433e4253d2934b195b1612010f709334109e7ad49285a054c340f75072c46c062801720c3d918f86a525e98accc67addb41921bd6d8abdba2a9f1166d4ec884501c425794edc050c53241719f00bf0a505c3a7fe662a3b246088639446ede8d4ef808df226d5bde617670ac82654ed3878c6fea05418702102a2e8d7ae1cfae0c2119c9dc4bd4048994d1eb66b39b8b1291cad6804332f4371eee6755e6942eb9ce8cd595f06b7f0f37624b9cff2f2bf13ed76c2134502cc305980005c032eae7d0c2863c4c321145c3ff57acff49cd2fc76b3bf489e86026d2ebe321a5c6af5d7668e877150def3b3787948bd195cffdabf094fcf04edafe2dd0346ebf27c286f73e9b8fe1623fc8d0be558644eab93b89999181bdde9520b0ed56c3b88f8e79a9e60dce725be211ca5e698df78c3e5804e93425e1ce2a650d14d3a678b21913a3a0a5c84ca150997180e23f2cc2a02ba2b17ce2e14c6f6957fe2bacf15ef92c89382bdd3086d2ae390e5cfe9dc60304307365950462017b2340419314d975bf906c695d7ae734ecfa4b61d9b2ffb322dd85ca49f574bf6584516aaab6c79144d08e6275e2dfa768475eaa129ab5e24b5ef87fd350df0f468ae0a466a84b85338b9cdd194c3894b1d624eec14cc9a4c0fcd64ed1dbbea90e3301bd088b46666d6d55d820dbea6c1f52f2c4307812f110b9541818d8390ade70dc97da524a54c60fc7a4df685222f19bece8e293ac50758d3115463baa194a0598b0935bf3a299e29d2e0102f7d52c8a660625915a71acd64611acbc09342d3d0d97c8552f63d8458aa7dd4aa63092a3588cd2021163d8aa043f547d2784ed5f01ac4e35e1f904ad85ea6dddf63e2fdbd8be64a71e27d32321142ffffc5362be84c68eff58e9a3159810734212dc830cfdda1ace217a9aeb40e313e092af763717aa8d4faca299e44f8789efe96c413deab6e9c754cda144593c06e4c83ab4f153c4392ffe5d3f1d8ad60dcb4c2c830c7c30ab05d8f4adfc07ac761aae0ca9628789db0eac5904f556c32e82aa0cfeae16689ddbb422c325760b55022fe83b4233a4fa0ffcce99974512b8411b2bf15ac4c7ba31975eb73c09ca043dbc0bdb61164f7544d261d0159b8db6d3bd50f8510b4511ea16df60dba7394bb4f397b3006dbab31ae390dda9dde23b2b3ff2dc93569a3bb59d68a92197c7efa395b21db3f1e3bfd33ee018895c8f8eb9d859ba9ed2414fe5cbc724d69e9976a5329201e7e216c9d02d7f8ba460e20a3bed728d425a8e7d56fa854c71ba9541f60335f99bcff6eccfb30f95c02455b4854845ca748ee0805be5615e02b2140d3abfa6e5cfec2b124eace52cd140663a57f17c6a717f89c6349abac08c56d2aa80bb74e538d2ee84b8e9b9c038b1153cec11de02eb7de5ba9b7a4a4b7eaca1adb3080830a8810cf71dd3bbb09bc965eaa24ed7132f0b079766094a2fe928eda90230256500c2614876bb2361c8b3f62b227e8e60b9966ed4ef7ca9baf4ce2e34b3683fdc181d3e82c7cf30fbe0f08b8123ffbd296f310cdf26f48e807123328e940778d1c3856a77b399b7b21caeabf619eaa3e089b36b053ee785e3727f12e8a4890f7c29f6bf6c4a07a372a8f62eb40ffc4b7cf5e44d570990cab1490bf9ecf17fe36066dc918d3d686869860fc0203dd82bca320492a458daf23901fe8f815152f4fff549c5f3365b2082e32996e282a06d1ca628e4240f5438d4d4dc60423ebbad1e685ab4b13ba9f81276395fbf7eee53b2ac3ba412cdcbbca63b3cba8e226a0ad91a0f7947a3cc0f1870524bc1af4f732a47d9159f36912e52a14ae561631d5c94c02c8039a58933ba88f9afa4b63132680ed51ff831725096d128559ad0857b7663f73042519a02212f281eb17b6b1ae31641fe753b2a5a75fefe2bbd93c177c4982f659ba0f3c9638b6e855f4e21d53f5565408a195a52f094c3eb64ac6025dcba0299099700a096c66579e02c8325867f4c1b80f3e398decd7f15ad09e750b09673eca183d4974fe9b2e10e1bba2d55236112b02dc26c5b254780cd30cb918d09ec2d442f923729de4482dee90b2818f59ea55eddcf517bef49d67d0ab180534a9197db671d7e49a0a672a0b172568856100db1dbecd55e8ac10c350b4cfb9f1c1041e5a42a331a285de674861e0f209fc87b3625aa209ed390135019016b9e4f208a15248a332569a8d1a05a43c96ec00ad8dbee07c25310d61aa6dc2bc0b631f4ca8b544735230f10fbd56899e0e33cd55404a7dfd469ef02a03f29db119d39c936e223f53842f47b37176442058894ff6301fa2a8b55042ec9aafa86d403491c832535c867ee3831704488a34667acba3d0cf85301513e0d46c94f8e31d2fcf1cb2a492f11978b7ded11bd1be295feed6aef046ee9379ca9bb32da4417421ba80066b4dc0db90197cff4246ee8d7c5490df46cf39a663148806aacc910c2570f43942f375199fcc47afb9770b41c974394f2535e7cf704841c4b40a58a15d432a13c3b991eebf46437f6e2bac2d46bbe2ccb3447098c74e1ba718061f046d3317e726fa0037f5c815b419314f12b58cee0b3fc98aff0269dcd1e47da7134e223e3776af514f2a06af5374d484d39bc848f2b2d501f8221139ad56d25a8e2ec09940f1f94bf52f8310a7c6328812ddc63f5a4a33f4b8099a567974b577ac07a53ce47ce5ec2a9a1437ecd127d3adb086331e9be50bb9fa1d31a7671b2698b481210b3b09a15302a44f1db895b9d82f7fa557878924471ca5a682e826407f7cdebb5b4dbb5bb0c64e06a87101fe8ec8a2255e44afcd25b4c0a5896e2211c2b960948ec10371b9a5d5400febe19628d7476d8f2707f0b345305538a826a300162ed14b0266862d09703f6f4b062314ac426517ec0249a3937703df43399771166038c51ab9672092a81c08d117654acd533df1213f3bb8765268ef2018b51e2c41af7593b5307aa7731d318204058d5c6560bbb633da6b3f4dca363c852118ac1a3b230da93328e2494305e39e3a20901fb139a97eca2762e9936b0ead253a04268293c23abb0c96e9eb8589f08c3f9c5d0f2ddb98796bb7f2559c13616c0c637b04e7e128b7d4e897b74958cd2db86881344fe18ae2356adc8b1b35864a2240bfb2970513825a24d1dd4d242c9facbbb875f8222517af1292be41b822729e59a3e4da75c2b27f1cda036ff92e50cf733becbfd7d4852de2a024f3b06f7a94da6d9bd40bc0589a21217cbc89b5600a0645b46e7f4dc10376a0b858245287e8d2dcf97f962f31d63874b67948456cbf6332ab26f1f45f81527b856cb3f5e43f5110302481bd8a24b044b69da51f4fb684debb7640d4d949c3042ba78273e432926fb7c19318fd3c2ad5ae8ef576bef6b18b8b3b49ae655e4df7bee8b11133c5a4ce2535ba52a8f28c07d945b1d7da35877cec8173ac6a33cde39ba8b6c3cf526e3dd7ef32353fbf7bc1820e116183ec1e21ad7cc5abfa7c03c2435733e699bc8082d6beb487f1256c516847ab7ba327dc0e30616b16a50f92b0be18d7694bab111ea49bcef502a0a1b8e3e97e9df19149aedd1d8b647256a13fed0d21e72e997949631bed2a0138f2d63a8af9134fab88f99fa3ec867f83ac674bc1d6943dbbdcf73ed5c3fa7ea2b6355cd8f434a0a55351eff13f40827c29dcc3485c7c3813b19bf13459eef83dd49e61009cf3549a65988dc46a78c1a1071bd41902adf5d9579053c6ded7ce171bbb1eaeb0722e51f553f259a6cabdf2e79c4963ba1fbd0d2c229ed2a4ebb8eb6071dac008face329e935670c6f198f78c31915a0391471826efb8240e72a90d935855b4ac6ccd55c324b5939da804faa7002eac82a0fb6c0d860a3f5166ad151fdaddd5da549d0fa9aac1557015694f98ae293961bb87e052e824c5bba401509e62bdfb990bf7264417b46ca5cab9a1afa9e60a660459d4a9722bf95943130e4c9778062c44094396af48591ace5ba2ce32d540dd63c11eb67f495494f2965ba127de009008ce8029f68a0f84a6be0a7076d4fb5745465fb6dcddfd6a964aac9106fb19154e67d94591d43651accb5fc5de44aa96e9f4d6efe80cf86381b42d3bee22333818c3141499371b6db8180ea0830bea5e21971e23a65295f136b0ba3fa851626d49b46715d33dd0c5c3b17ef4b1c8fcb34ba998a4276dae4cc5913d783dc9283f5ada8b1abd75a9cb8ee9fd05f4c78b4b8e96d9b12e521620feef9b7257b58c60e4aa4305bfaad032497290db6249dc0e8ec4334420a325e007f9a9242b6c92efa4ffd555b7fbfd44aded8a9752051db1ece24d1dcc4e9f5d6fc7e187f3086db1dd274a47945d5f8fc6c1892131b2808856b2c19ebb29b562a0fcf474a0042f391ea6eb66b1c265e55d53e9ba255fd52cad95babca92cd6260b55d3de45463ce3ff783be9e826bbbcb73a5268519a79370fb1103c726fd521c36225ffadbd3590430c09aafe7757420dbd1cfd622f2583bcdbdbee86098a3e99081432adc690bb9f532b66031f3a4349084bec5853f7a2fc154a6ee30226ebe108544a2481ac53aa7095535c1cc497a07eb4700b5e65cda1cbe28e5a6fdf972a50e71f73fb3498022b6b1536b0a98ccf63b7fb7e22c9e4d73f854ec66ed6457b218d319bd92db7d094e171124e39ea4f2af035073a722800fc1a468bae0133b86073b3261254d976cb7769095f725f4f9a20dc2516da3ad2290021492f999920404e0a18b33dcb3e9f570d927309d699f6caaea96b325c410cb7b5274aa0b4f4ed969a029cfc3e43df00b4f7e0bcc36e35c62235a1c8ef412f3becb38fc0ae19dfcf606b533934fc40ba5d35554cdda518fdad2bea4013993433825322b25b29cb7c91cad6b578adb23ee7484c2c8d2fc4bd06ce857974194564644abde0a3ff45e91574e03bbc67ac49c089760b0fc2766390720c8fe7a042cfc90b4961d1906c8eb4e313d3088933d884ca1c8b26f8dcb16241fc2486f2d3379b9fee37b3ffc60ac0e67fc8d1f5eac7945d520963b45d7501e2474d59286334790521240acfeed53f73c90f2e9328b69235be292a02477ab31e12019bbd373889dd4f6f9d9e8cbb449dac8d97cedc61abf6c7915bcc1779ab37f7429d7201e070af46ee1a0a645dd2977629acb55bba2466df35d2d3be2a8c575d40fa051eb529762093787b28d44802ad8e1d414a41bccc62d304cd988b9c72fc838beaf1179ab9d262fcfe64ccca6cd411c0507d7f12eb2f06ce4533e40b3304b03a844a281eeb4823c2f7e4e27b265e138f3d6bda26f8a367c9196fbff4928ea157f25cdf9f20c27e6409496d74301dfdd91b4a46a2636cf4bc54d8f98f322db16d45f7b918b968fcb4cd4db6b609703bebb846e79491e2799a681aa8f215073f75e0e80d258a38261f79956035e3d5e30681608e3db7fcc1da4f5a734155ba1d5eb53e49065b42215bd60572bd695ede14421d88b925956bc1f49dc3f75aecfe22b49502cac05f9342ac7981e2af31799890703f815286bb4c031752d432e84047582978e823d8e71678cae38df0ce30212342047ac70ea35c7170f0b61a657dc70a2e8186e0b78bf200dbdb50879824f89d6c62e23044a36816d7630a4d75d79e4d52bb79fd9b83914f27dc1a89c142e8b87286a574bff71ac306d588175def378376186c5d4b97d09cea4bf319824f0c591b034570b4d22e9fb397ec85fe1124209a5eb21fe24f5ccc312324bc982121b32aab6445ee0e3c222ae02d01c62dfb830ff7b49b8ece0cea4c38d412fc00bddc3efad72cf2b1bc28348ed1e4a65e57c258859ed8ecd21c00abc9609766887bce27c16d31b87d89b8790aee98402b0097ee06fb10e1d3d678a46ba65b5ef15115202a916333cf6bf3ba5d9594179cd95a9cad8213e9861a7f0b67bb71a5649113e12c48bedc014ec74468d70da70e95c0b288cee8cdc843d803762a863fe0163e12ec888b698f5b88d84ff62b1cc79b33169570b022ea10b11f1dc5ce103abb34a2e078d373c84de8e00f1477ebadaffd6ce721e8267e448ae5dcfe287573cb51fa65379ca2573e1914118b041ade13a6be34deb8b428a1eb6d6e9aefe2421a42b2ba784861f23183d80fb444be03898e3bd01bc0ca0910fca82defc6883c2f47881de27aa80ee77f9016c02d606da3ff80d8c21c8429c82117b97461e7e27e3184852db28b3d3df5b71b08193e2a5098d4babc83495a50bcb4e21f0d275b6ab3e7726b459eed3c9a766aff87447b5f6df596ec0ed0f14a009e279f981386dd21ff7b464e322724c4e033d77157226db41dce7172eb52b6b9a75130832a7ea9bf94ddc18809da8bcdfa34021e9fcfefba837354d7f7c83037225eec0337aa26295f12dc4f37dc93334c62cefe1e4d9b8109b1a486a52d2a714f269272484386c51ad305ec8aa729ff60b025a96781762214d215072c75c84a73de9aecb2a4b20790c18603582f5260950a94a68700a4ca46e61262e5057e1daa754bb1a1510490f21ba31dc3725f143698b5432a1f8eb8a297d4234b3daee3a7a03b86c497acff4f0014413790dca7a637af116ce563bd28ea7131d37c96a698f1c64032ace18aa538fe38d21ec36780f6869a6c1b8ec1de99541fa25eebd8b3fa1c8e3c48633775a03d08f13089555e85c5698a0673bcff2c6cd172c4d6cb4aec3b048a18e164d3491c149053a375bddd4fa4d40a88b76167c1107f0ed02629f1d3e360f8f09e7d787d0564e568c181d4b680f19107bd92c0a33faf76ddaa5a70b855c398e5e628892070b8f556642eaa48d18f337cdf080cb850152864583cd02bcb5ee186a973a2b6dc2ebe0eec35dc120f0213bb5ae1aa6fcda870046b9b171b4d078c1028fe044f13dd8f84ab84535f67702c378b575ba8293fb8e1c8e41407ae86c3e92c4a4a81821df2ad7f349f97e43c5d5eb488e19ca4edb6746c5a53869411cb6e56a2b060c145615d24647b1fbca5ff3ff704174f5e8f6f36e2c2a737d7c29c789adf182d26a89be42bc1e9a67283ff3fa8821694411f51ba14a45dedf750c1ec89318ec1bbabdbc840f64f789081848ebbe7061e27201ed6da08ecf634034218ae6de38c7f390b8d61508c81d6cf80aefdddb046fc17a84013d4071da203127203d75d002d54179f95f92df9e483eea13971b272983a590e0ebbdaa343beb8795b2555d31781fbf9a58089046327568ea93715546804dd9e50c457cd2774166430b02b80382baf2b43e69d9ac54df84900499d6da60792fe1f1f2893478a8b5a7432ff0f6a20efb030025097c3c7f784d196812cf098efc950e1a21e8a107d24c002d0d290ac00f99e60645824f5fbf7718c8d647fbd16ae2221532c6b39052194e3abe9c8859eec270145770d12e728f0dc651567a0c76e6087aaaf44bd630dbe7c2a481b2ba791aa87d380403d3fd1a813250e5f89bebf2b9c15b1ef08db309b6cb4eb54ac9e09b67f9f1056bed1118cc30603fb3c9ef636fca270360271a86a82bc2890ca69fedeb6b614bf37439813be8b61f216978bcd831bbee188ba8a5cc9f6713d52ce919c4b3d75a31ce9f775b8aab7df6f8c35a799199a8383ffb3ff31a792ca9f05570b8332155e1f4221172f81feef3b78d130d1f80f1ffcf7a1ef5b6a5bd002ae82292043d89e03bf456d6c987bd5afb1c1589c7b567e4519eca84a9d6b3339f1bdf8a63c9aa3ce748364cc67ac7f64986b091eccc7d8f4cfaf0a2abfc5ccc05ee32d45e686794a69dd952220c005ce4d82a155928f2a831d59351e7823061c4fac7b8ae5619a2eece0c3e8dfc8446cb10b6297afb78e868ae861881fc8e017718fb680f23a1d19bd6c01b7c1eddfe0ae92009fe87e151905b6910e26f25923d09a5028d2b064623ec3b47436aedcfb0782f49edbcc2d9423f165c5d78a96b3ded1829f535708608e0fc7d7373face13d5ccb2cc700769ed0c26102695337ae177229b4db0a8be2f50fe1ef38f35c14239f6f09111ecbcdb28c8764d89c975270d71da09c6bd5b41f9a8a6c3cb49a3145bccb35fd972a215ba72fb377b29bef609821c7efc4b9f907e26b7eef298b546367fbb7aaa3c89b1f5da51a4ecee1164b1796d81c0f0cb9064b6f883af622bad23f11456909f0756cb08f33e4545a8738c978334e5f02f9a0ea19327ae37ec46cf598a110bb1563864aecaac44ee5d8ad043b1563b702cc54c7988a185b197ba8626ce56060ad2750c42d0e3bd2454a5bf17edd9381eb30d6344fb309c31fafd6881be674c2cf27e4c9863e1bb0271bfa6cc03d2fc4f3847dda30ce13f67943394df8d3847bda90cf03e679433e0f98a785a9cfdd2fa41dfc79e45ad88ac4ac6fe9ea997c8690ea904cd0876467fc26cdc42f4c8692bdc88e544cea7e336f8c4ad9574b95fde4d2e12c6aacf69f846b1e9572a8f913541247992fbd6fdfb416ec12d4e97d7966efbe9ea9cff79ba975e91429fb2b3a857465bf954b6c96b8e7a7b6a3c27211f7feb8d1af156fd66c02c6f72f3128a1bd63f52cb48e4481065e98c91ff61284ef3c7a09a9244fd82154b44e28230f4cdc27dd26a47b1e3805721a91b6547983d61b68b125dbb67ba56048f5781858939fe310b83d130e851175d8a068e7df8d37350d545a390d9181ce4dbc7770de49654a0656de4bca8c1798c9b64b8e98a43eb19dc851523273c43f90f870cbc35916d3f5cb8af07b58b0fcba34a031880ad86474b15c9728159fc1e5b5a50ce4bbe6904c6301fe3093c1513ecdb5256ab7e22018bd8398b4e8932d361d4bbbbdd66c3534eb42fb59187d959133c5727340bcaa63158436197173b35326d3330a73d563599b98251b3532d4038fa09792737650d9d2e552839698611cf6fdaade11913cc5798bdeda2b29585093fc2b7e281bfc0f82cda112f2284f02f002ad46c4132892c207d4ddd4b82b22a5faf364693e9d2d9cd1cf07b0d5d4bc1011974802226ceaee8001e4ffaa7978601a93d47c783180e8790cc4270b5c9e93c2351d6c2c6321cf60ac77ab147695eef062fc45b078de22e46fdccb895c061680eee260b194ef1e129a4c39163b6361f029ea13c05cd506cf0ac5bb6a8302c516f51be6c92f408e94dc0b0c2fe63c51f13fe85bc6cce0808ffc14941e8ecd25b77c201563336345b17808a76d9e40c7293fc2235084f4fbd379c93fa2dfc820a861509195b1e368deb4aaba2ce26563085d2c26c023287022310fad433fb0ca23e35fa26f4aad4e7638a734b95f02e61183474e939bcfde84620b270ca36e2e4700d941c7101c769434bbd0d148a863ef8b22b1da22f39bc1cec846a0d05f1e4eceb15efaeed63e5fb58a7eede181245071138fb79e51ad56c7d7d39b9acb65754e19ba0be861a2938d4037d62acd0e106f14c87abf2e6a97773712b524903781fdeab90e69c2c7fa33c59df2af9884f811bd3bae89e9cc6bb0c00882a14cfc0893815af44d0defeb779ccbf23dd0d27990b122dc6e740e309fdf4ffd5069c3d6f2bc4cb575fa1ca60203bcf7a8dcd17b6c259c08a86052f218cd30649307493808ea766360d46bde9881d9bc3722eec531b0b5a49b32104cb2a3a5223de52484e1bbd79c44ddcd2502cd4906971f623b7debcd3e8ed66b325a49d2d771de00bfa970ef8bc037dfb1fed649185c3790c379012ca55276f3725533a875269fb2a6a4595eb77c34f61a0abb7e50c37bb45b113d1e05281e0837a292b0fb95f016b98607885ab7027dad507f3e378125f2fbe5736ea4b7e9ca41d7d68db26ed93fdd40ff009a8a2f04832b15f2053dd8debef40c6f8b1793b3e490d38e886b8a19c1c789c205a9c42c53fc7036061e764bf2fcb936c52ec45ff17d7551c2670bfa47e6393b9e624999a7e03e6c834007a42ef5f6ae309b7aca6ddee48bbbd94996829e985568d65f501384e7ced5b100b0e0c5d83ee9547b035e9e6320969aebb603c4148a01f3497f5ec036740bb18fd96fce3807d0852aba16458a7ceb354f815221191b95ea05d1ab323668a05ebe1522b886266d6bd4e6cc8371744590b5bc51e2ad627ca471f0fd50549707a145562886e6af7eb1da760685e6b14c1d87bc541f9d83a6b6fdaa773a1009f6f881b0f9dcc3e3fcaab29affd901b3cd450230259b495487ccfba70c82a6c6f4473596d2245362008d0020e44c468ae55de3ee0a9c575abb340ba805122e4b39a46ab00f9c36f7020ba8b6b3f7d5cd1258a503a54dd6ab95b9c1723d21f4cb5a412674a72447c65da797006232d28583b6a9732829bbca40411890b63a5d6ae596d30295c2cae468dae8711b12dfe01f9c54a5b453c10e6cb3d01590a8eac74a7cc83508a6930c52f20157c25165dd33b7adb0701df00ed484d849bfbda901259d0b90d6116609575eaac04f7a94ab5395557e37bfe4cab9c1e7cc17b8156cd714105812285cda444d9ee58894756aa93f202d9a6f79639968757329f7c0ced04367234abe86324bd72b7568b36e10c3a05841f2297087be6e16463ac3f79dc1a83b3cb33126927f0ebad7f5551da90a2e04a9dc4a9e3434dc2f3f81607f821f6ba92f79102a63b7413ce8d98c736d7aeba259ae76884a357399b442807d2519362591a5753033f9b275734d820ddee99c6b7c2664c3487ed96616a8d35dd33b35c4821c263acc2b1678b8cdbb9bbb0db6c600af9bc5dbfbf0617d7f6df22890e00f8d16271d54c34870af5e8ce389d51cd335cd1f7d5d991d67ee0c19242b6c72a6419809c3241b108c0346847dcebb635386832dd70645025f27842a837f24e93515d62e880521927ffd9b173f132cba887157d30a1ce3e4758a2ca86a30bb27452030c190be787ed3ba40bc3ff2711537eee516ada9f2251af50b1e786494ec49f733efb1e5cb472d6c01e0e2d16b86d688050e6bac1f1d30324c92103a17a9fffd164516003187f77d74ab85f9fda574ac371e10bcabc1bf075f7308e5d8cf1f78b91e9d2a63a406420f897d4f8ff43080d4a024006fcf65d6babd59e6e31515746fb78f8cbab77503cee1754c7ff93a327e138b6e6ce9ea67490c447f6e6d0bcb03f3158b5713b30babec826069f776760cdaf6c1924b4977918ac933a7e014e74af50b67d988acfdb65585ff52006165b1414e195922c04db1a6ef5048f26c959935db3e1149bf4a302240a2a40178fe3db871a0b4c1bf880dd63cfc9167503043c48ad98f6ff7a3b9bb223fa0ab9f2470e3b8071e3e4f6656f0dacf9227b4f5bbb7ee838b0cd41e3ad416ba6c89b2dec4083d75088f39c8b1257c58790567c90bebed3ce6cd106d247964108c2d551fc9d396338118f29e98b076e4f997d0436408829d09620c4b3771d243278beb901f8da5a9ebadc7e19d93186a432c7ff5b81ab742813c05d87e09cf854aa39e81cc2f8c5d0664ea9fcb562e53b274194f4729cb42a815b8b03708269d59ad56e0f53ff771f537cc78ab90aeb252a4c9c648db0f4a5283185c883b703925133db8dcedda71936f55f0bf83d9fee5b8f48e162b415871808a8d78413913467499830ccc32ad7168ab3a26af7531e312cf51cbd0e3f05928c58569f9e34f6c526e566cd987e7301d040e0c1139e9e12db70a6b309bd1e06ac897ffd249de8185078a2122d7ddee082be5b68478d7e2583ed068f44f9fe17a4bab2eaeff17d729512ca68e3a66fe2e358a8b051c2d115e0b1919bc2133706115533d50fccc394cd911f7ccc5e4b9aa7800bb7b57615bb1d13596da1d7c0df053a8fda706a4009d45ce1e0bf9d89c018f151c4f21a72f6df6d4d40000d93f2d258776c7a36705808b3d1f98fe23f831acbc72c0c273731130e9178a3e45bfd3c19f4b4942b0df3e2b0975dd6069f6b27d12753857ad5c825267a16ecd4d5d8fece3d5ea7fb4834725865fb91d28e516dec7bb0df231b969a4214263eeb191a6b26949c9985957967c900cbb288d0cce330414c01a3ef772ba9d23a8301ba99725043d4757e01640dd43d9a864731cd86f2e5a41c61dce5f91407f8713d160e7bbb5adbccd4c643c2e26602d360a53fe1fc3761b37ae5418ce02b92bc8549ef11464dcc502f3bf3b7c27e93c16b22a64ac4029590ecd41956166286da5cba3e3e0120152d88eff65c18222f8c8990db906b8ef8991fbc6a715f9ed439dae7bef3e38a50f8ec6060645c0cebbc6d195c31ede92f3ee7209da9f74d18bcea45441664e4b0180a3e1b048b538404c85b649068ad672efbe74ab2ef137ff70eff9dca605dedb3faf6d910eff204eb5e7caae9f2b04ddb151104b4d20f0435811af64f9e8eb1dc1324457860c12633e2eb2b130d2f7cfa270e19bbb35950e63a499bcb2c242df440bc2817a3b72fbd04407fb6cc5dd4828591da1a2160373340b6ee13b6ffc9a1457175f5d25ea1d5cebdbf7b98d249929bdb151a178e2c6ca9971fcc57ba7c9f1a54faeea9674cbcb6f4a4d688c53fd88b430967eda0fac228d2dce92285ef7cdc8c1a05258d99540864b29bdaf722e2e59641ef141787aff182d53b79fba4ebf4ef4c7588b46135b8f3a379a76353482b7b8cd012cef75d288b2fe672deb488f61d7347681d78f7d6f45aa5cba71aa82d4a9dd24cd32dec0eb7bf0aee3dbf507689dcf1f724c7d5908bc9a2ccbeb9362e14260ca915d3f08f42acbd0844e971d49c86fa05a4f007cd31abff144e1f7ca8df7c6fbb3490981b6b8d9b2c309cdbf701826e6f59ee7e9174decb9c50648ebddba660501d7cbe32991bd347f063bfcbf77a2fa2dc46f157faf3e8c01bf316698d93e067e0e58f898afcac3a111c21248495b5a32317fe5bdc076b7b269d740cd0da85df39aaec364883abc742de7b00a73b6ed53242e094098baf02ca3fdbd2e4b3bb0dfd4d8a5c414ee6c3e0875645ef58571a5cc565740babbe1a57f292b649573e6e7ab092bffcac0e7a670c7ed4434ebbd6dc728c5af8cbe87a5d5ef15901b7421511ada0f71c333a3849ce5ca85f9341448f107004701a635bab26b2a741ada79b7609b3e1ea1a0439c86defea6a519b8155aee7a48380ba9e0e1bf51b83f8446ccd0ac4e19ba6bcc230637bf2b1a4a898eff30f5150de620afdcca9dd9c91eaed072c7f0dac0960891d3145a532a375788adc46e653d683c6ca763b8dcefda3ca1694edc5b4fbcfcadf804830c763caf034f9470eeb436a071c4ce2040caafe7849f192f215416acb7c8818317ca4de8cec210ac4623c57080e80532e8e82e88e3ae8e400ebb6ca2587cdd1f1bd3efb4979998fb4fece70bae4e43df302a78d103a3d1070f02b33914d1f6a2329b64f9ae5e9060c186fdbfe183808660ca4262affbd58040204c79a13fdfe3638578954ee6d98ee4fc824ecc170b97b73158795e99a171f998bfd9a1fd82ceaa4fd2c1a6ab9881b6ce5e34cdbe484d36f8c384075d00c9346c90c805048222cf3e1cd5a98e5043c8fbb5acf85c07cf7aac6449aadaee70239af5e68aa6f69d4e278b31a5f7e9dc7d637b263ca712860746090b8548a0dc6e68d2b105d3ac3fdd681ab104c38b5e8d849c397aec82d741f72736b1716cfa3ba675a313342e038cc52047667e8554e388c1a7cba29075c3b45c04694111deab6e40a38eccd7f8ef301f4f07ba37612f5cc0d4663c08540b24109a3d17d802bf772ca0fa4c57772b3de191c3c8816691f92efb2c908a5d03229b52437bf6329943f1cdc8165bc03436ac00f19f8b01109c0dc93ebb0a7070bcfe70e6ec62e7623cb569c28041daa5d79070d49308eeb62e5efdce3d978432bb0a2cc13917d1e182686c2e4677e2d3d0130c847b859ffc82dac9ec39f97143e66abb75d0b770c6fe8e0448c6ba4b32660115888d2dcf37da5ba5084d2eb784d52bfbc531febde2c99437cf001cff24c9d1f0720be606f08cae6049793706cab7565a6ba8b90776c714b6ebed6048b72a10d6bdd9ef1b06c036331629c8a7c2274e0bdd9359a534a5d340a50f6b131b9130e677352e44e7a39b45e84f40df7335635054b97287a3fb4190f271a541f7c8c6a60cc00d6b0fa0aaed6847ee9e0f8bc494d426ffb95f66021257b8033c401c57fdeecba4807ac80c150c4e7b6fb4cc8767e2cf1dc2b8c259740813956ac1a52d50c59818d6f00d2c8da59e9def663ecd2d4e96d3e31b82f4436e41bfae23940155de252de44494e163fe91991bd49f6bb070aee14a0c27a36a11d8c7ecaad459f25d87800eac7177c161f093e13cbc0f0ec65f2d9e3abf884d8880ddcf669623d508c284d4201069170aec14208b755e74b268898b13113078d93662de4647546cac6c65aeb07177c09b0ca60d582a2677d11e65b3acc51b0aa3a9714c0f7ad419eb09d40a0c0d0d385f74aae504b6ad19a3c09c3c104864aa9e7db69ff838f68ab375621685dda07b1108d5306262b772999b6abd8b8f457bcf2853cb23a2417b2c0cabda6648abf48e6bceb55b864faf758cba843b5a1886fa2d0da409690d283c681cfd4c4a6a3d0844fb6cb8c2759c7ae5887cc97b93dc113bf263bea388be1c1138c394b1d135696ba305177c404631a3db7c697e270275fd2df1fd9dfe9ee64e6101d27cdf269f9f264dca52401589ffe71d2efdce85277245e99f0d0fc7c5176aea516dd85381174154bf9cac8df6858373946d1c27ea5f67197956d9029fed74e5b87a8ce14ce4f160eb0268f7dab74bdafd28e24c625abad4afb33e8057e653d4c0d05cf1f8336decdd10bddecaaabdc3d51b3507023428a9de07c9f39d6f72679082fef0e31a201850b2476e931fa57d652632ae8919e6f208b9688d3618b54e6cf1de4858b18722e411ec2b71069b32a3c525377736c62cf0fd3ebfdab64c8cf09f630311bff215fc1d03706f447394958afb075742f7b2ccfd09c4077a243255a4c0fb13537a903830db14e55ac0137e92321b0ef4a723875ad9c781a4d278bc017cdcb6462834ca658598b3ffacad44fa5864795f77f039bddf19ad8d6785e797ef77de2e3213130d45f40dc20abf2685488f4e8699490383fde068b5455c97e8942f9671125be29fdba8b0da3c9bec43d30c822bfd072fdefc8eb11edd029eae864ca5b426ed4efdc6fe2f96b74ba3c7bbe706d4d98f6c87541b2e0813def0a98c69c5e58cdd83d8fbef7fdb189093dd7797053f200f8c6845e1c52bd4480ab1011b087f8288d05886a090f2465b46521af4586d5483a3949289e067cc6cc63820234f91a5d5cc63c37729b2a1dc6ffb068a7cfcf18b614679d753fa670d75a71fb6ea1d4c55a8918b9b5b75a147564a7783b29cc48719a31293f0770ab4c57f76305168bd6f0f2403dd570a069152e197bf502f459262c412a9fc4df88166d31e7c91dc0083d4a6b8e92f4d3417ee3d3576dc837029d5de3915b4d4a05f3db94b262fa5f713f12bda1073ebe8f11678ef1ba80743ce3e00cdf9c56d0ef8f503df0d29feeb829d302d6f29c2aa55fee58c5d87e4cab9dc1b57c9f589c564298a7a682f1af090bee8c97002b021c4b29ed42490e3667b796fadbfa448c75d73bec57feb86c7bd71efff980540539ece1ed2f4b633ee5cbb14b277e125f0b8e071203d09d2d1d099c874fad4fc63d4ebe64866d3f06fed4a2a136ad7a53ed964e10549d695e6da8747f879fcef0346f6550b43ab1c68831ca29b653159fc572e91152aab2735b64079f0133f8e3b884fe6b173dc2a8101b4d9428d93e8ba85a4c7445ba9ced5bb7086e445e379e721f27e515553111634c2a42d80f0ca4db402c2d9c06f895e91b6a91de682c61139eade61f54d56cdb6c1fbef3eec5b154ff53c9df8e0b408f4a1e0743f27e8beb04eea67ba9abc30badc30ba4f2aeb0b1a09c198f0bc48c9ee2115d9a566e91aeb9a638f06fa677f435ca6dca07cf2cf7ff0352d3c68b29cbe2f36bada31b490de3226028a0b6095084e10bf18f3252f637aac411bdcfb3c0c98f27173b862c61a962e4e2084cb63c15c4d2b3d402c6b5ed47e9f9611b9f5d6022068e50ed70fdb2a69a8e85444403b1bd7a1f7d65bd08c1eeef18afd8ddb15977a51a049731c966e37dac585e34454d7fb670cbc197c34ed9c3762b03505cea68111cd3ee640108772c440ead6cfb0f55827f7c19685601b777f284d86f4433258e0ec69aadfc72c39b7e622473983f1406b87a6f779987cdb1bbdbd3de1e692582ade1e3f19ae2efb165aaa9f8e64e3d79ff63f7247bdb584b4167812b8223b77d4855664ae3ada51bdf35d236bac04b100e81ea706b8360ce7af989e32dc227a21cfb9c3d245d58b1eea047144f42b6b23d0f3873b6b7040a2049c0e6caa140800d6c4166850f6ad6d180c76ed2102800eb70fe844d3fda55004a090be5a7cd654a154aa2a3ff1d51a60e99aaaabf4889993221ce666690cee6b73ff3c61693ec4d3d09f7d3eaa103c30b1598c357613eec36dbb2ad4f5f36fab4c844a5fad8c3a0ca530d29a04205182cff03a089938356407a668917b0db670663585e3789eeb286659ae91bc286b43376dd90ae77e104932f0455c720d32c0e1a0286d4b0812035c92193e0b48e8b78e00a5e465c3eae13ffa19b36ab48e5c1698d841d1916fd480f40413d9f9fbafcfbc7017011ce1744e1c687c6e761480c60449dd1ccf418698bbe5ccfd1946e0d9f0d58e4e4da41c371348cc2c022a5087e57920e9e822b1dce11c25e46f421140e2b88b0063c86090661dd031be894ab419da5777b10a877d980bf0c6ef9a8dc2303252c759b605167da21a9d3fabf06a9281cea501c9dcf44e37281bc9fcaf1010329821b037d375f0a02ec9e0b39df9c0e407cc81292d2a4309a0038ce050fd26894c4692224d1602afbba86ddc45b97ba508404b4f9c46b0774dbe55b7788eb225831463af6e1c97be40681fa37aca466d7f850d082c845427d1fbcfd0fb4f25f3bc18ae373e734846fc5b158691108d172c92e449dc2b0a3ccc48c718bf357b033678e15c7575ac780bd4f54e863fb75678b8f5f51141c2064cc0e6cfc04587a037f6556b4a898f5d1f0eba57fa258cdb1d3c236843b9be43e158d98d207f9e4c1b9ba9b64e867a5c64cafe16f4b6729850653f9a0c2ccda618330f80742bd3cec790df31d499a39a138c74a05b638f434e5f4f02bb8627e69b0d6b8093e2dd226ba79526e4d6572aa8d4dad71c794cf87c0466cc12b7eb08c4027f1201d482a6bd6bbfb648f9382c042941ea64a3c1006c0d3d5d538327c54dd9a02b9b33fc81c7060bfb417bb67cb80d33acf9c0328717e0a06581a6d1b74f32cebc5448c4f6ea83096e2ab208921ebb98e27f6bbfe0c443a551f40890893e7b7ac10ff568479a10779afe6f547175b5f744d3e6e4eb59ab60deb6d3bd4120484fb4fcade3ed8f94acad94780cc7531e114444bdbd001bee2e41b6615294304d0c9dd05b6397be951ca9d7c88d6672afc9a224a2c48c19e9ef1fec22dd95724f295a00ad1101936ffdd3209f4437533bb66d0c0bd621b38cd59e4c781cd0128c20bc898a161f67f6d57ab3160130a7901d9cc6f0c8ef7174ff522db95a5352ec47fab17a6b5a063e962a4c6dd3702927901cd4165cf4f823791759ca74f4a1005ce430663648dcb464da47fc0cc1b03e80535e6cff07477fed062c47d8fc152fef5879dbc2fa9a198cf425da43a54f7989580d31d8e5f449b425cf9499db2a0bb06eff953a0e2afce238d893c638fcfb11b3a663bc31a553934f29d0db01a477a4017bdafc88254628ae57190e39a292bb04f0476838942c3ae79a2fb37036a31f52992de53c55b9c77e172adf5134f885dc3d64bb95fb1292f38c5b5462c045f14da38a9ae7f94988197de10c4f5ee316249299910412c018461982b3246e55c4ffc7771ec22390c4a37f347551731a5b40946dfb9124b651fdf24b4b07d86c8c37c653526bc7c8c8b578b8b66a8b9e82f17a4fbfaaf5583ca956a814d758163271c1d26cb57a8ba292d2499b1f2a34a5898b2dba78faedfa727593505ca3eba883cd1e8b3cc506965e440242819f345426b89de36c2a22606f1c59f536ae625482ee4b40456e958c734a7d86c88fe3be16249ccfaf242c6fe05c52194978722590a5b4e831b05a9c7d8509469016eded593026e83c89b91f30079647902946162894c0b689a137043b1341052cd60a0af1ae20762a512cb1a85f6f23f78e25ef92a1a1897c34cf928143f3750fedd64c85cbfa0526595ed8f75598a4880c8598392cc5fb000c220735e971b40510514271c21ac57fa9eff151edeac414d02e4245ab7a1e3e1711da555c2bc5bf76cde06c0b29054b4954fbea97e0a4ac29d944ef87a378964de6f7a6f7a4f06ce0518ac29740f9d3429cc0ad0812a38c0793dc8d6c28ac90c96bc2e6482b798f7876cd20da5d58340c4701889b351f13e3e2969dd3f60914a30c9dcf905b47abfca9c79d31b0473f92fa44edb654da36da93e8ca2fd7f81f21c89f58e8652be8dea65733056adb09eb5df417a97001b658014ba0e3d0d3f94ed32eb54c2f7743983e23227f624032fdff5a520449943ea960ae38ac64f52207480205048063db37883d1395526a786af7749ebf766eb9a34c6073c1e583360ec4d2c2b0a002f0a1736d103e1b55e92f6216a35c18d057fc14ecc2195e96be5f8bfda9067361b70b6870edb4cb2b023398ba1c43fe430c26fc9db3fd4ad4a5bdd57ffe0c7efedd1b552929cf3eb41caf3a082b12c391bf3dff2b0ad5aa4346d7fb52ebf29c7af7f59b72b036a7aa5c5170d72d39cad688c283c113b3f5b5c1f9f3a5a71721c234cfcabdc292bd28e8f9422a683f5f105f193637dc65fbbd1fb9144348b438a5276c12222edfce9c923bd8c42fff1335643ca50ff433fd327d0078eb3baf4238357ff6035224713e3cf2125f990c07ee839412ad2842a9abce3251b234ccb38325158db3e17abd4eac50bbc35ede8da121d383ab8f2d480e3cce079c33dc87b86f7c29cd499546dfcf1f2cc0494d2279476cb58b3e4a053e04f65ba196944f0ec79762a91aa7a923e0d18e44a475eb10403617d8aae1c8dc329d970d2659a7626800339bb48212fd2235028f0915a74e1e8582a6a49d5f0780b3d25a2dbc9924db6e41112680c1734fd06aea73ceb4c0b5bc7a15677fdc88024a904cf937f99894f5a7c859800ee2ab67721a4922244a43893cc747f4797c58827a452c23cad9d9ba649e89fe4a74a9ae1cb7a03754a817eda9a2a7e00d6e996a566b8bbf98adee89c443f5ca845f7e60b76f88414bacda75aed21d8d518c5218c121ae802a1de6e0340843e4ed59f79a08298148d0c827ba413e753a13b6bb3a98a88b2148e658eae871fb8bef8188ae0e37a3f1746bb780f18265cc58e49b363b72a60d3501da76c14a2696926d8d5891ad00bb719455f7b294e6a5689f9816a9591efba38d3029d5d4701595d5da1f60ff0e8c635f9686c018b2f8f07f1d4bbaa241400fac2d55465d104059a41b3d142c630cd103ddd0e02729750b1ae6dc46940c175224f5e28a13aee2e1792b33806e0750bc78810ced65f522f549b50fbf56852bacf129831d4fb11c19e1f02a910c76439b74e79549d68a04ab022b50cd9b98a7c6e4bd535d0b42c771672e25da2193e8d179dc2d9b25d1a4f51d57be05e65e7c1096c3d9ffa5e77a0bb4351dfd78c965f3c334a2728883997b5a805f292a0e054327c4352af5304dd760f33d025e15fe7e356e756373b4b4729ee7469305e921f69b39bce7a5d029ee83420496843bcbee875bcd86597b58cadd39df05f78fdf5a47e5efe0c501e342204779eac7b50ebb82b5aa10ef6acf2b1d84090a7863662d1ec3a98eb8113bfaa08f43ac5b24f35fe90bb3d944321891302cc585df3b1ad44075b7e46ba2ceea602bd24614f740946840790e78a87e3ae88e77ee57bb9af13230053dd035b5fddbb5cba26d82ef1f715e2d63bea2156498ef5cec853f631d96a5da198e80f95bf51f6153f6c2504422a6ff647949a075349f25f64ec618ae847290e738c9ddafdd631e38e6a0235043bebe93b9448a6f1e4f5e9844422bc849ddc3fa015849dcd23434c39ae250764dc5e3e1db3ae4b8b2e17cc4198daf768c6314f526c7953e1603d1a01fa3054d8400c8c1a0235a2c0cd8906465d82ae1cc23ff8d416c21e6ad73f8963a47ee17d3632c0eff7bdcecf4819da058125df14cd2e86db8f022e1e1a2a60af5f9f32ea3892e8eb2946b0e008d5158668a44f8ae5bd4dc7defd8bdaf37c103baa14da67c8d21c7671e9961ad8f32784992f9968ac6784cadc11882dc5d81cd4569686898f30b26f501fe1d661cf15f3c21e40679b50a40d11bb7505d19c73c5af4ebc72aadc52e3d5630f124e010cafb69bed3c8e361de836104e0b02d84dd949cdbe82575c5e4f40bfe0730983f24a7005748389f9261b61b22b65e6d98a5881a36733a12ab76883eaf38b8ea2881aab3d95907f6e2eac45493de49eb0af796b61b6c7e5eaea541570c0756e78e1916f0e1e09c2d47dbbd9281ae2b0b8e779e577ddb17f71efd6f8ce2aeb76b0728efea6d24bfe5147ed359db6f6d1e01b142f71a4f0a319fb16cc236d51ece6eabf0ec388ee1bd4fce16fe21613d9127b564d4438a143aaaac304ddb4d3974e93b0df4aaf63270aac042aac3093cada7b96919251bf81a03407f2ef5ddf7b182fa493090390c86f81ed2ca7aca97067f8a32b45647ae8922e0800f6b7b2989d264039a3c9c21f170468c2fcb76d0868972de75550917d58ca124a6e197eb79e1dd5ce04459216d82327baab4e649156109551ca116624a46250fadce6eab4ae10032ebd0a22e68c51815d100ee2015629a69e210888cac318258e75329995b8fbb3740c01862a86cddc03641c33c32450ad81d22a2bcb90967b43054016c77a65bc02362104c374c3280dc232f3f38967573618f6023e67bd0ddc568238a0036696fe184297ab73bbe39d4ae887b389496e1e04883e494633540bfbb599247efbea54032a905e6a0ebdf2e55a57d72ff3ae7e6978a83f7b101e1dc2bc08051af9127f9f08f054e7d2da8762268bc2098fc2d097a9297ce52d81ebdfd3577d6a0fcbfbee9d91caa837076116358abffed7c747e7e2c1827e1a9d4b34f77c1f19c2fb6bec086fa5b1790a51e0328bb6af49612a95074f6420dd3792f8388e552dbe12c72d2e71d222799ef92965f54f912242a105d508404cdbc67aad91dd1facbb49bc4c67b2d00310739980cdb3bdfe3c92b8e9b0ec322534b36899701c0edd06de271d7b68ed3cef50e90142187857404bec294cc080b28a406b4c1f2de9ffbbcc5f5057e6b40051f63a36f1faf70e257d5c540f862b492e708738163f62732311a8d2137b1bbfb3fcf2a8bbcfbddabc707fc3133ba98ca074faa6ae350a5de1988baa5840b1eee8694284c5bf4e33b2fba197ccf4a4062f2e9259938e276e295f0b0a4d37af0823538353b22c446f4d7f6315239d123c4b5617852a9b5b59d02662030d0780ce829f47b925958eaea99c6366888487acf26fe683d9e6e14f45edfe4a380410e463bc6cc87cb6e3505c7f8cd9f60000026ee9070886d48e2d40559678a34bda20b3d53e6adae044dd4473e0929601183e001900162d2cd65ed5c95698652a3bf5d3e23d8c3ceba945d044c19b1dcf71e3b5f06acef9e7bcd9bf6c5dfada3c130a2111b91dff89ed353738b36e61031118f70fc9df89e96241ed979d598cd45553627804c0dc470868beefa54eedf5c227d2c43e080ecc71c61940fc69e706f6af28cbd2cf30dc7e57522b35052635da8d78984ec70e45a453a85161525af3b5fb904b8ce59884856b8123e6ad5dac23b5e10322934ef8b1db740e26a50d351feb5f3b7d35d146a469f91e3c34ed82b1e62e305031d21b148a9de631d776e3a5df1d4da673b68ef2e887264316ee5a9ae539d934661df329a22b8f34f92707830825cff95d8f10493198004a0309eea8d27d59a5033aa21cf33f030552371b8dff30fda0d228abe2e89c94518791f9463c8e5fb2e01ce4c2ba5e55563c6c4596d6f8ecdbc2aa5793fc114a4f002cac0aa94b48cd3e3ed211344567b80b8acd29c059bc72e9188e0b6471d2fdb37818350a77393d6e97eace38c312339725f09da5ddf93743a9b75fa248a3415e1910decd6ec500a6c3753323d32889596476b257476a03f866b91128f45a09a0c2fc8dd8c0f091754e438794b1041510bd426cc42d9addfd46253a551dff99ee9f2e17b698a40e79a4b7d11b3b590cf43bf2c438a35f7b21d966127387b3038dc1199a0a34f38df382156cb609670103926ccaa66b31ada3f8dced58a63ec7579db3c98d896ef460ffbdf54c5b12dfc7f4345535c51a9b0d20fe524db3fc807fbb895182f2db4cba24e31963830b505bbc8633e81b910ab5d4bafd2e6be9a17a578596323534fd51e05ba834dd1450a359d6373addb1cd5db370cfc6785689a9ba0137ad8babdef8809b2ed23c5ce651bc0f203075331312403f261bf9e0af4ed5b6381b18a1e965457234888580b206ed18cf44b72066b66f28d8bc3cfcf02e352bb0502d9e074295cd180e77caa0ff87dbf741f26bd3298b430950ea80e74766bdadf77a20d0e0a7f6714a4f22eeb5dce21d2a9cf7b4d72560f639ee521438118442cca9380bb6672844d12c00041053e478a23014824e46239dd4dcad28387779b4e42ad7c977b4fa3ddf18284f1a747f3c438d796182476cad712f84c881aef55e4d1be0bb447100e7b47bf7d8d01395ab373ec668b8e137a89ffaa95191efe0b4aa9a10f516bb5d3f1fd2a59051f37c0c70fffb5470f528b1e4dbf030adc83cfc72c85a454f11b4d427c77931b27d91385500dbb522a9e234a771709284b59f0cf2a8d9a69d3f83fdfa90fc9ce56d604078290b8ed1a1761ca649a3269004adf8b7410b35e5118850f97173750bf805d6a764398db2553a33b5890791b93308886c0bf374052d123ee8b2a18bbe3b2ec9952c4bd5d8ad99f38c726eb0d67d3a4c2ac70356fe1511585183bb4d03437ad310abaa3c69acde6773fb327607a0b3ec0bebc736486457290ab8ae82b45bf3a0df8d5ab082fd37c41e06967f0e4e3e402291536ec7aba6841e61bfae049ed394a1533159507929edfb86e2b1ed6e8302cb5d9e87462ee060eea9588c8774d914532d391ff451661bf0f24639ed4593b9ebc6d38a2920a7d944ad798d0e144532ada718e294b737c85083cf591f8608bf33413aa9d63e204dee9cbdb3a0a844a80f0b77a391fb861c57cbe76974a19378666b2ac8808ba75b4a65abacfe00133e149587510c74de553a4e71aa4de7385c96771da6e56da7bb1be06151d40dc19259eaa29f7e708a089d5a44c24853b0dae7cc46b2274f76952b9e6b315f7470caa64fc31cae44b21cc402b0704b7ce85c62621ae08427987083b3f376b433d203bb3b2943e1ba3e00c7bf0f0c300d4c3924b6858dd8827c1d0aa95e317231f49d22dd24dfb8b4d50586bfdd0a984431d1fb17f50fbfa17353abce79a7e81dbab6288e08820e22eb482689f945dc5ac2a85c3758a526615013b4108aa944a575e62ab39b7dcdc6c55f71c17f03776a50c89647a612387852169bc040f887106f398495df1a51853b91f62a581f3367001d0b94ce46b1045f2a4f25a8e8255e5fb637ad7d2d2313bb5c66283ea43f7dc8476315c8a6f32089e01a3a190e6d835cb86122744be24ebe9c52db211796d9c8116533744567bd93fff80e8637e79574e56f759f132ccd0a28c4d8946842efd0821332e6ff42161e881d45b5158567a2fcc2e436205f90ed8683d8881b09a62b62c108db03a3e1a06d3253c8a053036155b633b852006d3025a30855fc5799889f417cd555697201828edc098e2aaab8b63dcd54ddf7c270e919a8bbbda65a44f5701dbae4868168c8918f2d07300cd27921ff7d0156bf8b4b6a3c51ac57de36899fea4f3f82ba80b413e18d79948807a10bd1b5c46cdb88b0527330b1110070c0fac7ca2081a041a9fa7078992c109789c8f8ef693df26b7f84f9d10b52fa30940d2ee0b86fe2a4ba0859612082c81933c7a821e6aae48684f1ca67d98b2263231fc6361afa0ce2a5af268aa9cb6f3b8bb5c3cac1cb6761fa810174151c515af527f7fcad69af81bb22a5f0cf6ac8378d65f283884421855ab53554be4e9db4bd7b04a5dd7aabc637e3b3bcf1bb23e43fc3721a60e56e6e494ebf55431dd1a7f5f47cba3b531ba1a1a71debd542527cace2c981fb7fc7ae6458012b29db1eb81aa82c8a8f45f508d10b406c675fbe2332cb58baea57a2bab90d45e24e7b5ed71291f62c036c9f1c4d0e7179a941b9e8b8fed11bd7ebb3a1b30008b86d05a004d800f002240e5bde3e47f40a8430eed963167012159ef99f677710b1f51ee62da1941cf4697c2ecd25e39819a13abf3e285c46399ef5089ffab144ceee9688e1df52c38b78ec9798dfb04ba6ab57f29c3e779cfc678680deba3a7b4d733df2f849c6d5da35a9d0d2ca04aa6b3159c6123ce85617e58bcd25d09d75b236ffe6dc174cfb5c7bc6a39bba7e33c4185418c9b5da0007bf56cfb5a0dadff693ad357f3b0c91878c28f77c69493fa01473aef5698faec50367907a796f21e41a948ea54c5d30fe6dabad7ef40b69e255d270133a7b7d8fc33dcd2a109a4e1081e6bb4a63b3a44d865478ffb043e94ab8f312c072d0dd605d9573c76616f24219c01cb77a5b31b6d9a10f871c9ef0103dfca6d54044e7e0c3bf74e9f7a1ee3d29662f35ea618b38c41d37c9be0c4a3d368f3c8d819c0f818867b9f9b9f1b15ddff5cdc867fb7308cf82bc51cc84ba6dde98e75b3cba71c8b94cf03bff56b1159dd5ee723c5b88c04262d95af31a28945df5ff91e366a48218a79e1a2516bb1cacb55abe7409c10732f35ad1a03d8c938a9204ff5148fa3bc3e00f289f2b8dd9f2d00697058938f22416ed6ce988f02aa6e33a0c42567f19d39a5cb09341ba4de2845dbfdd67e1a3982e95395288e0d3a67d1269051127f2f3387a09e107c35f9666467c58381ad087e354b494be333e5723f6badb3822571a214fb06b6adcdfad804b3cf286ed018cfbcd232557b46c196348b3f5958629ec070e5a6009cedf574bb21ad294dac82c521d992f3bd35fcc5cc703379fe3dcdbb9d75395f5033734476e93b63fe96fbc8e9fb80682b78007022d32edff25cb04fb0e6ca87fd14766a9af7f1e23988ee3d0c860f7b5c6158f0af927fa345681783ef5d921a836262e01c0205ec75773a7e0b840dc2da655759abcdbea4d9ac55b2fb00ad28ce6f89f4e9d06947a9030e7e48c48bee0fe504d7b5f78a417f055a8389ccfb8a5c70982b6a5208811fd15b5f6d81667a7b6cf36b3df56ac57c6e68208090762dc8297a0b703553786c3211b14f3a9623a81f803281917848885026aaac0e34e5232eea0e2d37ae068fd0114b6dbb44120197cba9bbb6f819ba5240270cd6c8196b3bb6a801d141b4bc09f2362ee2d6b57cb2af1372e0ffabc0f7d1ce3fe0bff3af8863870b1bcf639f484141ecea620a7d64c4b6a7d00db817d68055948ce86241335616fb2e2aca0f0b9c06f129bcf087cdae918ebd03a13c6659d1133e0cb093b57b0736dcd46f7fded62d7294866a825a4a1b52b11b72905e1032aee0b6dbcdebfc7c94f81e2ce6a12d0d19b306fe1bd6caa8f2d980b90fe5bd9dc9f96dc6d61ebd924a3b715fbe9a0a4f1d2f416f766108b6aa0ee2ffab1a5d2fe71b2255e40e555f12726d4efd5b447dda40bdfa9107b979784286a238bfde9777b7bf6e577c4689b236941903c4c30e45e461289346f626a21e65ca81408b73d03759743105addd5709cbb3055133400d7026283da2f3d970bbd038e4d9f577e06cecc022902d68dae55c33568a5d7935599a638b9959c92bcd3d69b4b23413813d56ac93155f9e30a57379832ac176cdf2f5e0dff7885756e21c6bdca0a7c45e28b9cf943ffb656ffffad002aa4bd68f732df7ae2eee2391da2b2cd6aae26c2eb01e7f1ee5941e7fd2bdeec461f59d8461cb3a46658fb30962140914bfc6e9a591c22eeaa1332c0dd0618372c8289ff8de44e8bb6e0ae32c7f7b97009b7868c711e9fe3731a246c4587d471e31673a9d83b1b235befe08c6ff3fa796e4f08eedc7bd47156cc067871354e33d84e99ff87df6a080ae8d0f46d496edcd77bf01fc3fccf1d4399cb5ec6c436ffdcbb24c35c3ea0d55d606838f72eedcf9de0ecc7d1a297b591b819c635d48e070ef31bffabb9e766c989eb904407482707cef7fb3c31198b3f6d820eaf9403885141b77350455988292e7b4563099d85f7781df46e2de52ce6d257c9cf2e64a85efa8167d38975c36bfe6fbbe658c855a8f4be158d9eb9ae6c25028a91a40110be966a08d8a379d9422349005ee150040b7d5b3a427c14208ab5fceb7b8c35ab26f0e673203d394d4273e8fccf65a2a7217ced334e6f057f848c830eb400be86ceebac862f177edc4b5435b7accd0bcf3e997965cf0337925185983dc33a5e5aa68411b0889b1b4d347e20ff9e61befb210796c38c9be5a565d584b6f654803f0c4710a53618df1b020a97c3b75c01a7c0bdaeb02bc2ec15753540b54644db159682e96ca34a3b92451412e1665d181caf41bef621e969a46ce80df81f4f9ea3ad594bb6699c7da710f36f056b169bb5940f8d8268c0115d3ede5b506fed6c97927734aba15b6f571f98f2fd5a7a341252c5835862f390595c6567103e22fcadf19c1a01f8a9f371bf2ea967746acadfe7afb9c8bb03c91132f0cffe342ba90b6c914ff4db4269df798bfba02498c9d4a41e0a0eedd62833c314973191693a609f0655c36618e0c266c75045a63fba8593054324a3a0969399e57a4f5d759c4ab3878bed11e963ed9fc90ea33a6b47c9eb1289aab19274601c1f7598cc717357000e2e703c4dfedbadd3e9d1ceee2cb82c7d0527d78ab36b34ef2d588e27fd208219b90bdf7de7bef1d140b140a540a79bbb2cfd3ee6c38ba01f6b588a58cde8ffd7b7cb79c56e4be0336d2bafce3aaedba6ebef7be829797b92bd2414254b762ee804d1754e7a595b44837c67af9528c4884fae50ed8f47d5753e79fa4972f08f5adf9b4314293b9d36c8cd0e2a7125a91a0a915099a3b458a1091550d458ab47dd02c22a6e88b172e6fcbebe28d13347788d4104def45a2e9c9dc3d2d387d53cf47d33b4e34054dad085ebe82afd699e79cb57aef514a6ff5483f9f3b60d3f69256f905a1be79bb975a91529be7cc1db0e9ea175ba77f8ff551be20d4d53475d7d6fc8250d3bc511ae36f13457bd9268a162b68cbf8b9acd9f2534ab959d37aad24f91ee57bacb3defadc866c3edb4f27e96b9bd9c7bedeb29fa36d887ccd3ef6133eebb4ab79fdf5aeb455d9077bf66b9bc7dfac6fa73857d9ca3e5b35ff7eacd36eabb24fa9c69a574f9a7df0b15bbf1ebfd11fbba855e57cf50d8a417162b03a81f14ba26188f5fc58afe4bbcc3e56ae36eb510ac4ca3ed5bda725ebeff02e54d9e7e6975fb7fd54bf14ff7550db43d266410b3e062b6f38fb54306f2fcfee8181f34673de3a1df926957f37e300a1d9c785687a8f219a9eb4b9bbe9b8d5cf923dfe65b38ff5ebd571dce256bfdd5b8bbbf45b953ff3b9db6af629519f99df3d035ff1bfaf6ee183b7dc164f3fabbcc5f772cd48842eb96e93bffaf626f3ed4be84248047c53aaf276efaddfacb5f2375dfa8e9a52df90c2609dedbefe5d422d6e0fff342f63deba5b6df6db7ddbbd77b3363f7924422df3367f928ff595ebb67a9cfe56b30bafeb693d7d7f734216946370e0baf709187874c3ecd3dbbed57a79eb1709cc5bf593dcecad1637bffc6c9c68f230a87607f48a20ac2024e3874343435eec9321861802b201879ad0cf298510428824e0651041042180229296a17bed93274fc25c990f041040440883f8e1871f6a82e612245b0ffdbccf7d15b2f9683e37dfe6ad675ede676659f3f3c1071fe093b705c6006fdfde4f59052d66f51a89ccdbfd6993af59052db42a3f15b4909f363f274e9cc0337ae8a10730807036243e7543e2537d22bc0d0f9a7c4733d0bb99836acb7c83ec2a4bb4f0d2654b13d39d4c864e7a3f1e7da8a2434a044f5222d02145650910a231042f3545858bbdf6a6a87c91a222458a0a0c5254b0b0d6de4a56a9c2c196f505292952a4a44c494929228544514a0a2a85449714123778c1152924a24821b1440a092929248a4821d1247544135247082175440e66903a224bea0828524734913ac289135246182165449794115b5246cc206544162923aca48c282265044a8d54142fbaa4a26c918a52452a8a95549422525178484139420aca0e209782d2054c41d1a221e14587a7658b9452caf79e7c571528881a8a3aa4a04891a242841261a80461468a4a9394125c524a809152024b4a892f524a7031e7b437a5841425a0b8b5d67aab24c474bcde0f259c340956566585b9be58d8c24744e9789a83eea692e0a24a2a0918a492184a25e182541255a48650a92478f080693289539ef4e330a0cd8e9027a6a480d1b12282182a292844a4a038691297541148e8eef64c158146aa889ac7e3c16bd72523f6abd16aa587163ed39c21984d2bddf14b3230e9fd8828d0480a783f240f1f03b8f17c6c3db01f0f0a63bfbff78e8399cdefd57952f4d142cd0e15da7ca68bc39c40b8c70010a3ddaadfbdd577a2167558c8737fdd4f2b18cf2bf0e131d6035fd56b339fdec4f8327740d795e3adcc5147953ba0ebe62771eef02bcc75f1f6e71d4b0be334e9e37540d78ec45c503f20797a56ee2e4e61be5b5c8733d0f5fe3eb1203fef319fdeebeb2b4aaf1d8d38a0a07e87a7d79433221be76d080492fd5e3ec5bffb8bb989e7ac1dce4127eb49daea34ec2fe65c7d5d9cfd5dc738fc8b7bd184e12dee75df0c14d4f164a4f336a4690692b3b7997de25feaee3d48c4a2e5458e16a0940084a21d88a032040dba48030740fc400729d822aaa0071f2a7a50028b1ea2e88012822789212bb0c0f2c48a2a220a78108a420c0f28d8a10a154704114400be1042aa8d309aa4cc885138a961844045137ec08316a4c03e3142133628fa8187293a7012b1848089225420032f5570c0840542880923c408821726c24803156b158f0861208107580841041dacf84133e205291ae8a0c3154fe2143cc0229e19430c910512b014a521458c944429d5e275087b82e8a3fd6ea28c82efab8fd29915a069d160cefc9d320a41d26a6f35b158f8c2b29126334343ba81234709856b83857653d8681ad7cc3406804ce300d88c1a3f6bcc618df3d55800b8f1cd00aac604b88d0b60d2a1820176f0d071001dd9cc3d424d7b6895d142b9559d5d11a007d0d6ad5230b91b7d2b4a0fe5a13dc651718f674e7a43d0f23dd38495054daa33b1b4adebc61c1da6c6b2008d27011ad38b720368cc6913a0b1e2a6b11540e39b1b575c63eb8db14de32b008d310034ce6a1a8fb6c65a0a8d6550683c536a4c93a3310947e31b17e56e74c53129c26365fa74604870901ae7a0695c9a698c824ce314b4c6dba8710d00b0c601b0c18dcf558df36d2c809b01ccc604908d0b101b9b2e8b7b3c2a9864844f878e8ce68a7b3c37d7572dac8a336557269e3811a30d94184d9ae0117aa28a941194400735aea480a7fad018942b3b18821a44c842258c28986cb9411a6128c1c53ae99a5a6283ae37ba525a1a43eb34ab8af9f87e4469850922076052002589252690627b5001119ac0658934c6482d11eb0a7a805420ecc1090d5c66f005132f50a004a2c80585116c318112614e00c616314e1cfa8a9440a50563a8c0071d3cf10422b8f0e1055466c084053c88a06e41d03aad6b644d4b93a9e63546cc144a074b478d3174a003164d8620c50e37d070410dc6c0c10f40582366a9ae0062c4014213d2f801cb183f10e10327d808a38c30b8b021064c821859115e65fd5242a04620448c294df8e045125220036b460a2a0eda00230618420801a6054f3a7ec67a82149320de2fb5044c531e26ad4fa804650421860e6c80c1833378ca9802073f108114561c01856732e9c9061b3d27a5af674f3acff883e69cd3c7bc0bd1c7f3f101540f62800414292770e1991e20c196315986f8b2841093073678d0f32d581689e69b4b3677b7e64ea39967929ec2104767ce22fc20066d9c41c50dbc5c414295c11056fca00661d43063c91035c2da2991a05e27aebdf75e99168aee707acb85021f89a8a6456ddd0bbdea31bc52724d5287f524d89554cf5ebe75a16358dd6397e1da639afdcd1bb6ae65f386f37d0cd5ef7d95955c89a1babd929b37fcfa1c83922ad7cfc7402da704fbfde4945c8901fbbd926c83a17af60bdc633b54cfbec33d663541c3415aafe1fdb06d9d4a793f7e34f68bb2fea4a535c6d9207510a1c1de7085fd5ec93d762c2b91bf7f5e883469a27df426339779bc02c0835683f4b1e15f1ba48f0de70d066babdface4bebaaff286ff7876a40eeb4aaadbbce1ac134dd61fcf93d61f8fd5e9b4f51aacdb60bd88751cac472c6244ec1f171f0fc48210c98e718f07d72075589fe16c903aaccb7038481dd635ee49ab128146433459c7798668b2ac5b61c0d86098af2e83fc7dc63d4b8b6ed113da0bea13b57085aeb6fd832b74b3e6128939317e51e5c6b4a387ce4e0b2e4020e6c85ba3175a95bbbb592231c7da77032d37a61d3d74765a7021061bdffd6128febdcfd710ca963535373b7a5422e00d867819833c8c314a0c4984624822f460009ed06e3441b803bf59e7a4c106a8a2599f9896a9ef7650adfa785e68d199010a3c30e5244ac3bb004f04cb4cc3d40f541a9e061e783aab96f2214ba949dbc39702424bdb1c44e70e68e485f6c67492e6baeb5d2d8f679417eed8d103480b115a2c9a48110121c4baa7a58926f0098c02a9f818e57b35ad54fa4d261c1c20179021f174a3c9b22acbc202b01465aca2adac94336a53d66e1ebf938d27b5f3f7246fc1da440a33e265f3031d48af73af8e0d0eb4fa77c8c5f84e2796e2a591a2f0d29d8e8fc9f3522700a363bc0d0f641b3660dcd8e4c04607365d5ed2e63581c49b4f3c94dc4f7cfc9187194b7989c9476ef3a11d949fa7792d9aa0e44ef2379ae0fcc34ad1042f39b8e506d67ad394c6f6a9c9a2861933881e8542055109b74c392fe784403a4df3366436fcacc11648a58cb476f6b5e24453ad5044e95aeb4dc3ee81134d9004c5105d5ff3f7a3fedec808850e130dace582d7460ceda6ede1a539a1ed6bfe7ebcb67fd666074f4b25695729661d9c997e292b5fe4112c1356965c2b3f5cd63e21c67aa27a620ced091c644fc8e0a2d9410506b6296df75101946e6a4af14da09840a31f26c4c607d65abba3085cec00049735c2e082c70e01053df84207483883893278ec1224203d6145db191e6badb54ff450c241d89c60036f919d50e2c68926394a69dc68e169d929f50047a5c18cbd3661dc6b5f6a415bdb04136dadb5b73661545aba81b7e981d63d177672f44b5939a251e897b28205c6c6a5a7aff9fb019be669b303ed4693a4f4a59b68b60943bb9963de9b4c002163bf14133e60c14b60c9d6902dbc43807257342dd144cbf44b2d01a56d099608d3f337d3e605b2a696205a2206dddd745c81f5a8801e52235d30d0eee72f29e6cc2a49f5f329ccfa799af041f8a276d9ea1d3d3cecae8a1439d8b33b9a371ffa1bda4057cb4c12ea9d18a1a502bfcf09659eefe5cc296307c57804f61b33a65f7c6c07b4e401d6481fa94d0c628c57c2221b2d3a334dd4008a4e90797858022886465276933e1eef92fe747f3c2109a39354952a5da5e563e489291260e91863ef6887ddfc69d29bf390097d269d3187562c02704ccf6cc26cb4d0627726c8c283f651cb16951e6bf375fac49f3a6cd38207bc2b9a6c58509a35f437d83412a1dbf0b761de86c4e720d8343ff803b1a8b75f90f9ab7085564fa50b4d61e30c3561c992254b962c598242a15028140ab564c992254b9af8218b25320b140a8542a15028140a1500d492254b962c5912794013001d6802a0c3dcd22a686161785247246179557bcd09549666f65e7a7b2e0b13726f846f5e9a5598100bb11efbf74c9d4cd3ac13ba9890a69890f778588c48931d76c0d7c57adee341edcd2a5855d7652f0cbb6e57353dceae0a8361a45dec1ecbac6b7138bb2cd81606edbab0201a36812775400c7b9166151362bd3ec37a6e5b191372bbfec27a26c5ee85c02e439a3b2944ceaa054f484d292a424f0942cb2961d8404eb1d64229616aca16555555a929504cc922a7346165540758a4a03811143b0515b6d00e9f4f3fc108c87ca2a778781a71d1de212c425eb38af7172733137185b99c6d344373fc779a286f3593f4485ef8344966df8b657eb9d1754f4393edec8cbbf6decada24ee4dc2da18a175f2b1f6809faca4655955d5dd57a74b72b7aebcf560bfee83e50bcb7869e5ccb3dcc1ce48403d22e163d886195a1eeb2b63ddab6940d78874f17d80ace0f84ebc38328d4cbdc6c9909a068834532beb0677b240a47befbda38bb4f5c85cbb0fe934c77e658f277134d868247da4ace42fce5b0fc69aacf2d653fddee7fa98da3493bdbab4ac7b31c9ca5b8ff6d17d662ef3eb38e60debb41735eeca2e475cdeb20dcb5bcf757c9f2be3ecb3dd7769e5adc7babc8f95656f3df7f23e57e7dde73d993822033f9c7baf86dd9bc66e9ab39e7dfb195de63ac6759bf6d7343476f3b4ec33ca32dd9fd6d1d017d00de63a1a1a1fd7907064d8af509696cf7eb98e86bec73a1ab08bc3386aace4f84ebc57f39123cf581fc970a3dcc91ba09bae685eabdfeae2806ebada974a37a5d20f14860dd8247341e21d3d80dc689f39be4cdeba8fb2df63d72c9f4c62bf97999412cb2fdf008561e3d993eaeed07ab8806f64deb06fd6759c7dc35efdfee05b7fcf1e988ec732d04dfbe0fcf24d34bd6ebb405df403d3ef71c84c9411e2ba1edff578697f55d765bc716334aaf2ad5e45539da6fa8d6a5ef818cbc87c3422e5d0fcba617fc35e669a4babbe136517745dd7edf1956932edeaccdecb5ad5bd52a46857ceb689a2c9dbdb44b1366b5704da755df37ae4b05bd51fd7cd247dffb2ec83dd3a96af241d64d90ae72b494b39afea613f183fbbaf46b7b8882f998ff02f1c5b9e6a50ecd188bb6d8384d6e1c723a18d3efbe2edcaaa5f7ff2a3cb2c1bddae7ebdb2599e52ca1c87e4ed3a9657f6b92ebfdd57d9a73af6ca67b3bfe4af4adeebea1b8576b5b52cebd7a3f60cb330d70535d672965d5d505b5c655c17d4d9f541b236580e0bd26e71d949d20ae93b9194ed652e73673336738dc37277b50cd7d9bc55cb5e78e608ad7b5eaccd40d71140d70c07dbce70b36f64757c5bb2baf775c97c74edd9a57cbc0cb7dd6fd5ed88dbaaed5e57b759f6ca172e4593c432d0d5d67a7589adbce12a6fd7e24bfbaa9b2f1be9285a4524201210e95e1209088804448a176b1768446a8c6686945515cdccd5b28cd4da0888448a77868ad495059461b9036aa96940a451a701a9a4c4124b292fb57b319036991ac8250191803c2ebc30451f2fbea8dd7b81b4e9991ac825656b609ff171a32291f2bddc008d5544fbc38458a422d5e81527f31bdc8d3a64459369df91335a865557252f6ca38476db3aac6e0345b37207514a68f1b7e5a16836506ca068f2f73650b4f8fbab511a608809a91e7f6ef6a9e8107647df7eba0241515b5b967daecc651f6a55b99339088a1a880e8d4e33861d636be692f7567589dd72f833d6953b79ed9dcc59963b193ad495363ac5cfb28e297d1273b03b692c1f41f0a5ed2b3ad4324afa249a240e385f8b03a2434d0f4738854ebec7d9d756bf8ed92afb8cae1dfb65337ef6eada9537fa0ddf8eb07565ee362c7fa594b768bef240d4be1b556155e96a93d9e77ad6d1a1a6438dd1cb8bc379a395bcb9dbac8faa68ab4abf7b6be51114fd9ea5dfad2a3daaa21f1d6a9f9b3b4b4abf579a412b55c9c7573ff7de4a5adcc5b9033655e4a294f205a1c6b2c4f88af1e64ea67a95a1f69a31ec068906dfb2b8ae86b67e47afaaaac2b78efd72d70d124d764b33a351ee64de335c27f31a44f19555dfa9b8ae86aea29435b4c47ff2cab92b95ee0da23ff6640f8f65f517bb864a56d7ad5f8925965856b292d50eced9e5efc26b4d4a99b75a8ad7b8ecfa7ddeaead625cfd5a5cb759d29252052d463988d670bf14d5ee8929e9e0ec5cc71eff2c76a5bce16ff5d6e556377c6f2111aa5e71dd5669e9573d2dfdbcdc0061cb40991ae09744bb42f0e3718c0f3f3ec91ddb7e643ebac75cb765f88fbbb8ae485f59f691c9a3eb2f8e30cc5d8f52d8d688eb8af48824bb0baba1e58bf4cd6457a4afdfcbc91c73a36bf25ab9f19d782377f73397b9bb3968b66565b9935acf70f747cbdbc534c75c506c9969a4e14ef5f0171734fbb46da6681d44d94cd1e4ed722773d0ec8a13f3661d8f2e233189cd5cbbcc4718bfbb8f9fd9aa6fd6eff1b151deacadc2aa631baef2cbda95bb0dcb2c074d9cead8afc4b72eaf4be6edfa56fd5e6ed5ddaecbdfed1ea7312c30883684f75d59bbe00759983bf8c04682c85723193002c7fcbd4f8ee60ec24ea8df1629744224e8f9fac620428bfd887ea8a2e11fa62487391ffdccdd5f97a47bdee74fef331b49d29ddc891133824393253aa0fa3dd3bbb402c2aa8b1042086105ab9b0a461860ac5d3477f616f54be242bf16fa71f702dddcf429fe3d7233462eac5b8ed4955aca7a799bbbb74d91d6ede8ba03a747ccc15eaf53ebad3dc6bd3f1ef6a38c2bc579b323ab7c4511e0ec23fb6d002633eec2b97b67c2a11147c9e45e58e24b2b4593fc84a29b5d3f45eb6e4729bf23f3bc2c84416042d0ec19ff60c0049d2927138264904c31a1dedcdcbb439a6ebaaa6635e79c735292d6e1dc9876d48a43234ecca11827866882943e225a247c57a24331ca28a79c0d650c8274afa6954af289914f0c0e5147d4e9cb09da752986c0a27bae53ac07870ea73ba01e6260ad45b562d5b2261a505a979c4589c41c0821b43e8b663662db9a61068e86687a613ac6184bf75ba8b5160727eafc086d763787a2c10b5db0c232aaa94143bb8fbfa9b22bcea6095a4dc7c328300a8c1225e6c02611a2a2a966c775b3e94bc39ac3aaaa68bdec6b8aa68eb629e6546c8a39a69823e4350d55c86b1ae80cb34853f9a9a1a175b772316ba96b4dbd5a26451df123523d9661d985bdc62e8d54aae9b1a73da994524ed1cd49ead2cb5d55e10a6df4f96c948d72906c2c3bf69dd8197669a468aa9934cac905d1b8067e82d6ddb423bed90fa34ac68c19d345d320da75e68b0731758793bfde0f24b0710a3e35b4a53df23344d38b219a28918e9ee823cd3b2dec4493cffbe1f388698fdc6b1f8ada7a1c6af96d48ac9f39d10fa82efe94bdf280f7348fd88f7c175f83688f1cf69aebf510fb918fa7d88ff5983ba1eb6606eb11ead16b628ebccd6eb94dab664ec37543accfdcfa4cdeb46f43649e5de6d9b39853ad38790f019d0c37bac6f508f528df70a72b977e63ee7006529349a21faab4fcf57e20818df54818b9cd7eb6ec87f968a8d8704c7559fdd623f741f5a786b636461cb063a7dfdbd1c5cf0bcb1e0f78e91367e2e581f5184d3be24ddc69e1deca9dcf21f6736fdd5ab756e5c2488b763a7fb497f75dad396242ee4f3a321ec764faada8635f65349008b5cd97eec4fc842c58a9d02a3d695ec35a6b7d4563e2588f97afefdf2c8a39f7b54ae7190e5e47271b591cec124df4914a34d15bfacac12dd1447f9f75e3f25af9547f2f1a900599cb1cef70dcdeb8ddd1f6c65a6b2de9d6e6c841b149f9543b1c246badb5d65abfdd0dd2b4419a4c7fa914afacf25588f52aeb254509b1918398967f134ccddd3d7c5d8dd8316cf495778689393387f7dd0c23a6e1a1bc3928b67c5d22185e6010be074ecd90cb11b4ee36951aedcbd1969c4edfda927b5aba72dd07bafeca98a48261a33bf920cc47769c60200bf036cf30dd0545d9a75a5987ef66517741f172f49b15b5fc8e9b1a12d5b9b9c2fa51f6d2850b18f4fedd7bdfad2c63d59a60e00a758683d738cd7a3a526746a7a4d3e95c348736481df4f76a5ac9ca5de937354d8c31c688e58ee6f9541dbb55cd589886abbfb85b5938265355559555c16befae9577e228c366b85186cd70b4b5518659b4bbf8a584a5ca12bd442e714b171608ae89065ce1035d5d1b65d84c95545ef3054cd4512fa3989e74fd4836e9fa8c8daec7c274fdcc076ca01f619f5d9f820a57d439db46d4cfd5d6a1145a2f933b53135dafe5ee54ba46e9fa2c77da93aec7b295bb10f4af7b4db707eed156f5fb0ea847e3dfdce15cebfe1ee70e5a55f537d1a0b3a8ba130db842a5813a9e0c15b5a91f110f5db47d046015f53383a1f9547f2c7d3cb5f7e2aed44185d89f6eee60d79fabed73be908c9d18f38b4255942fe0214be3f423e2c14994d2b7899a8869a21eb8b402fa11f550a56b06edaf8458209898037f7f7dbeaeac3dfc22a5f3c317075f4fe268381ca9a31e976a7e270eb3c34c58d939adb5765afb79ce72257879d9396d90ead8729d129cbb29e4baf6578c50981c8a94b43dce60fac2d91767c4561cb487300783c1ef2098a2092184d9e60cadbb3ed0f79776afcb98048730ddcd07451fd917f4025980bf108c11994ff7f607e72e5eddc43e8fdfc9bc9a7995b55ce56e2607c596c941b1610a2a6ca1559fb8c2e29d5dd979e805ae602f678655e0d1087b17146fc6f2c93af6abe50ec26b88752c5fdf8941135717510fa8c65f7ac4d967b1b2cf27ebf7d5abec75f0de432cd63b98a5efecebdeefc4ab7bd89ecb75e50e0416471b920159a06d7f71b4bdf0d205112e201871d83348065c01bbc5751f68eb750b968bbca841eab0fff20132200bb3edbbc0d22a5ca171c1ed481df617379b86bbfadedc85a00fa58ff8ead52716817b5ce598752168eb10920159780d6fb120f04bdf68ba19920157b0590b8e2cb03c8c2fbc326084ddfdbc791e897d834dd7cf77b06fb079a16af902be9ce44ef4f7b85ef59dd5e5d0db0bb12f3dd1c77e8f85d7a58aa657610b8dbeca7b99a23b598fd3dd7c272540ff45ebe4bb7a998fc41f9d10ba9b4260d3ee666b5d7327e4824cd3d76f32543cd661c75786ec87c96089c0635dcaf0be1882c7ba0c350812f058973230a0c9163cd6a50c930c29ac87c920bb9c01c5ea87c930802a54d0008789811837b8fa613200200827a290008b4c3449426a8bac1f26030e20a080c997513f4c06580615467862ca98315a3f4c06992000e1892730497285de7a57ae93dc912173eba16d048ed98830813cd669cf360203bef52313783cd771357a36c21c96599915ec3b323b59c118b63ee230e5b057ce48905768a4e76465f4d74037b4159cb5dfef48ecd8e219ddca280b1ea18741bb754cb921f386b6621d3f4c869ca12c1e2ccf906594c5a31d6794c583b9d8941b8280eeac600712a2d2562c0c3be6b26bdce852066d749c51cf0c9e0cb6ec645b71e2001eebeffd18c204098fc7eb2e0e6152f456780d2d2e89f51d8478324ec9950c634ce4fab197276a6514e5b1ac5842fd3021272bd65f0385a0ada0288ff583a3ed71b263cfb2f5b668511bc9e42bf46fa3bb1b681ae8a59eb841db272992ff78b0a2c6a929be743d0d912d7fc34c03cd2f2f686984c8a5e47a764caf890521c26407211e1eaed40bf1589fd88f033a6643508bd491653909dc82bd68b1b6788155305825c90e423c57e8afc20a3499913c2d6de48d39dd40d340362ae8010a46bff1581cfae3c9b6741751586e1279ac3f1e9c9fd471b22721422d7f03a98128b0c40e2dff523de8a2bb38f482bc07bce8ce03442d99401e7c8be321f2e0bcc9e337b92814ea943be2135b7e028f07e31b194d1e16783cd6ad38e9c1631d734cac95b378bf91c405c37739bc1f47843a363c84ddec38e14f4091cedcc10309a1a0a84b02b3159b0308cc3801bd2f863a4943a225507410ec9a39f0cc28f2be18ea99396025c97b0ea32d506881e2b119b5020f6080e279877fd805b42df81dd5dde341cf1fc1917009bc01219821049b32b4ee9ac28b2b5cdefc9dd6899e333545979e938cd4952c7af64b5d01a30b0cff6ee0f4f1dbf41d6c72a589c61093575cd0f330c8189ae7039ddbc4135d6bee6c7d8fdac450d75a6bad6140948ca92b465c6152021b316c8852528c59430a27a4a408137326a52f526a2fbeb86feee6ac660492d453bcd1142cb4ecf17c3c1f9a7c0e7813e326b4eed742eb7ab4ec010402ef470ebc0b336e89501e012f28f37c3c20f4713d52c3d7c5bdf7be78e33ca571524aefbc97c28c4188e1cd1a8c30c61861d085b1efe3b547846a090e83c34083bf177e275ed855b7a715187d0f8bf5dd9df34a48df5f70edbbcbc291a0dbd708d402b768bb832e81df0da9a6dffb052a7ccd4fea90124e7a2994e40a7c0e160f85340af9cc74a492c61ab3986ba2a9144d33e64c68923ade3d5f4b8d56f3846cba51d287987b16f3f31a2665be466a78a35d557bcc913de2634edc793c229098337f2d1a90f91e3a5a4f2a658c718b1e1e34db1de007e30e58124951a5658c47812617303928e10ef0fb23e5102d816af9097fc178988f3c7800f978c01f79f000f1f1800fbadd01ad83b43ef2c45007c147b4c45007d53c35086f9433df49c484f78a5701b7239a4c7005f8b7407bd72cd55433c893d15a6bed8d1aa4452d4f93c0eff4c97742ddd1aedc919dbea17657ee480d7dc3d5f2b09bf38b97af9539aa6987c9ca514b35b86a24edc29e499c4b8b3990d40f0bf2e28da6c70191997f37cc34fdcbb0a59c2854d77c643ec8da826a79aa05d57356693121af8bcdf587e6e923c5a0bad705aa476641b5112906d532ffc074e00af12dd0de6fa210f8ddd018e435e59e96a6502345cdbed33c8d5b884ae0e5bae6a806d38114b358902adfcac2b0755dd8cd56b8afcb8d3933ce6041687e162d5ebfa187d1460b5610c20b2d84b0c209299431641d0662d357bfb7bb0db4f9eaf164e56e9eaa7c334ddecb567f55a6b793fe55d1f5f434cfab4083ade57201f6998733420a604c71ec8110c29e286d2c41951edd98d37da0bbf81b645b014145a4ca4c84505aaa0c3969b24407140f9326afcb144800210332d4c8d285a77a9324194883096bb4f184315b78e1a99e2487315b8c910613d668630ccf0e9908275c2c4184132e96e0a9be83104f955fc7af407bbff554b3111cfa34b3cf9b46e0464c1e666cc8cd5d926eb69124940c35b27469f8fbc84d6e12e1848b251afe662442a669af2ecfd3cc1302f4c21e8af5e4a633d224f08c39a7396709a68c5dcf8fec4ea829ede84f3ec1680f5fef9108f5cd38dcdcd5db35dbefc8aa4f466ee46d8122ca0f6d8fe43d1e5804e0eb10d9120e9959b07c045f9a144dbfa2e3af37022e1d3f7f332f7b93dc363391337a93b902423cf58f480b11fa116931a36d8aa075261898bc31626ace82e62b0df03e02ed99de8334eb94340df0fba9d07eb9829637a9208e20ca2b428a174dffdace6fd5d6b3460ef696969f24286af90a9b4ac1428a0ffdaaf59b3bebbed67b6fadb7de57aeaacf82d650cffc7a8457cc6a3e5d9f899fb920705dbf3ee373b3951cb713b3e2e43c39720e16cf15bb236d04b226f7535955506dd95b5c65b505afea6131b3f209dfb2c7af988f0ce6235f3fc3d53a536b7dbcb2854de05728314518656431832a3cd6e32dcce7f6c9bac4845898655d7e1e468909b92e88bd301f25cec78e49dc44020c99d35b2e3afb654667af488469fb8971a71bc7eacc2bfea4bf5e613ddb1099cfcb7ce60dc749cf8e2366311c1877aa3fc9dcb2b85bb90efebcae5ef38623f708b5f6cd87741919a1d68e71f493cb70eee847cf21737037b89289eb847a26eb648dbbe170a2299fb20c24879e42f6148380d016b47a9256924325d411b3f0836a1f31e280be1e54db88edf7788c2e2546700e7dad5cd1dc035e2c7b3ce009b4aa1f9108865ae69b218e2823e5082dfd888c70d23efa111921a5f1e8e174c4c2050748471c29341a624e07c4052244518a3a7e0333d800a48598f3de0a30a0954a5674949ae489442268a263c75f0a0d5e5370494c4d179a1a642eb8e9474405891d67f4b8824809261a2084148868b29c20a3720d25b1240b13049a2f2e18a0608214fa114d1962eb4724250c91942e299c4883ef260a19c5e236f81738b893484a93d9d577ef4be5e8b427fa0274019a16a000b40ad50a6bb602bf1393c448218c303e422ec69c04c608638c31c60861aca64c4ae93ca927fda4f613ce4aa77d3751568152be9b3da496dc099ed4f8bd1f3cba831510e2b987305bb1ef64ee726839b3157b4525f53bd4dc830378ee2f845ccda121111427e8b4f5f55d92eeeebcec05de17430d2bac3645d0ba6b00f89d688b801f95d1deeb3940c3bfbf1d875352992912a1a687f1f492d23967adb9a39872af65a55346ac0793191b125f29769a27f819e516f815e14507a1712c5111c3f49b87d2f4241c3a48f6c480d69568cc4dae74a42978888ae8221f94b1f98aa69a89a03c6999cd2c7152b8064b8c084a95eb5d8122a5310d6cc1e48d198303c7401d446c067274c58c8288082b444434414404954b44841044442c19124334c42545118c3e66c4ce25bb0b30d928b0b8d200ef78644fa08da16282864443a899245008461b053ee98890d7f3f178b407e623d40812a19eef3cb0461b631a4954234b97297ae211d1105ef47bcf01ba564ae7943246f878c0997b0ed0436aee70c80768d8f4140f61c4a4c4f4ba28944fd08e84d633efd5b452e939f6e808632cd5f8b8a28e7808ab80d13a58e511421175c4c32eaa585bc9bc0d91af17225fb35043aeebd1d35a41912bf58358e926fa90124d4db48725ea88d6a60dad83559e162e624e1741b4b34488a563cd41f3096c127de0808aa627a345132c42db12067e37afdc3b571f668f84d6e1f4abd62c9a76da7af95e7d726fce579c9c97b3e83d5aab90b67202a6f1bdef3dab72cfbedbd76a6f6de5e097673dce562d87d184bc1d3187e647139cb954134d38960e307ed8deea7e72af8dc0792dd572f3680476c4d9114d73c247b39bc7e3fdbd0a4e20e09700adfaf567e1f85e8cb38aaf6cacefc7001e0f895d94526e36c599f3b85e53da2041eb4c6a689de9e6f190bff457eee2ad8ea069ab47ed72009e8d4955ac627c7cdcd46a14973ea444a1b81b381ff9e4635440ec014e7734da3aa58c8ff1f297d2c759246f345d9f56cc3f9b35b4be2eebca3746d0ba9b6bcadafc457f1d9201abb8620362039c9ca701b2e626e64cfaa52b0665901f7d02f2a32cd459de64881f7d02f1a30b35ec8af4edebc2f5386876557feb77a4ad752e4108296d2fe98bf7614690c03602c7649c104eda7e1b326f9fe3564cdb20beb475492c080e1af9f77854da25f673717c72372eb96bf4792d0b13624ffae5489fe14ed667ae719d75ed19b7e1f8ebac9279c56d389efd7529c74b396e3d47de70c8e0f8e448f2f528fc1e07d723d4d96f701dfe3d89ebacdfd370a7995b14b87bba97c95a34e944137dc6dd44133de15c02124d5c4402bb3a4ec1077a991d287550a927f71e8f3bf37b3bee2bf6636f04768fbd1e0f9ae723963d1e94d2c313d0bf1b4a8a750c0c21eca785066c68a1411b443f60e96e123d01d3ddfd237a22469320d1132f5e443dc1424afb444b49f4448ac637f0b10b9237d964a304adbb6f461dd8b8a28f1a6b4b6da50e5b636fbea20e7b9bb568b2a468b249d0ba52d37afb1aec066c28f2201c2c2a0d2220c0f423faa18b4e403fa21fb8f48c3e48efb7494234e9a3e61975d0d3fb255ad012b44e2312c30c30e7045cf47c04027e374fcb8e4d1ada7deffdf0c92eebd60759a039973e4a8903d928614168ccf994eba0754f4b0eca668c060ff389441f31c079211073e22950cce9807464df07a828a8d4adb4d44d2d15229901000020005314002028140c084522b170389c68c2ae1e14800a9e9e4a6c4a95889228c8519442c6108208218400009801181a0d2b00ce90f8ad7e1a2bd18457d3e19fd795fd876847beb63c20025d7ddbd75ad6d60475349f0c0eff4226f05155aeb54dfd9b977a60b133cd684c30aec87f0b9905a5066ad6045120a08cd7ca71c297ad2bcfb83076b276913808ff0b0f5e379dcf52cce49a8e98a7a428e8fd508df4c54ba219d8692e8848642f05506cbfad1a7734059543dcf6262a30ac8d9b34ee97934722abb5945d6a7f3d47984082a48ea219b289f9d4a5784f3d1b7091ff594c65eb598ad6da1f75d4c52a34b92ea27db81ff4f1950db6cac3b0edd3354a679f3f7df570cb82d86716fb740dd0ff256751352a4d261f4dcf3f9030072160276fa2969324fa04cd9461d591791d7a85d234867c32f4ea833bbd858523af14ec97459cbf52b42e10c9643ab789519fa75759a191fadc29d7e650b2f202ca9b82ece4ff02abcb5bc8a5bfc8072faa9b87c6e23589cb1157252e3a74767eb176105347271e345afa45c23eeda82815c57e3e24673476129120567eb7c6b40f4db4b3c6d5aad6b4fb00515828fba455c9294785c05caf14031c5f5b11cae412c13e6134e1ef010cccaf14360809ec33a9cd27adf385c5ad6ad342eb1bbca650da3abd266ab4148745013da92ac8f9633208a00bb6ab9bd4fbf59e421d9306e75c80d529131a497a526723eb13efb8528fd26df43c320529e5402a1cacc6a43ab974d19d4858df218f9e4795a9989e504095d1e2f2a33e3c397a60eeafb89852a601ef9ba8d4d01176c21f66d6ebe01b051efc80e661a22160f785f4b81260e33fefef1bdc35ef6c0023195078cc14e587bf1928b3f3abc86ccbd45e43d89b738ec3ec0d329fc2f338b1f2e2de3f7983c810867d4db0f5dfab37660d3a4cca441a258772511e607561eb67f3b54d1bbd12002cd9a6de1939bd1bf8920910cf29deb3309fc544106ab144e94e59300205aa35f1bb8162ee053750334e950a00dc80a8f16574c429dc809fca6e54aaf72541e8527fe70223b2b2ed0d6e4b2c7f37fc4e810f6ef118da5863ff9d744111a75290d99c7f1efb5565e9028c7e9cd25606a28582650002a657931ca33cfffffd85eb2654093de072ed6431d50af2e5c4460b8f64bc4a88cc2836d2ddebd2f78bc8d2d1e84dc07fd49b5b9cbef257409a02303bfd0120e541f5c6c3c3dda6f0a7b20eb95578bcd6f7e644d89cc0bb29e6fa4fa5b5e728b64326c9f1824066676a99d0d0ea60889471e1fd55d6efd23b50c7aaa3fb66b9c514715d3793b5493956f54ee62ea80f90cd1db389dbd601684d26f3d185a89838aaf610a43e64263459bfed2b435e45bc10b71754c2d1fc3f94a498968de9680fd45348e16f9353f81cf375d93201e570b89fe8643304cee498887a2e7012bdd6ca4d0b1f05f1dc66b851cbc1ab9dcb53969fbad7263759da71445dab6a3cda415e229c993249529a907b05bc07f42996bfba7c10b8e1673bcc85291998f09f0947f804344c11e7e777f561d451e459a42958b41097962dbae66c345ecbbc66e4667c6f129e2a9cf1a9d72e4bd0dccdbfdc506d28ee0a96b00d4f8aeca650e3667ff5182f8068635a795f1d9a9280247512cf8afae56d9061812467139b3ae2045c880b187636ace0bfb0d203c7608cdb4de09999318fe286fa733e9bea9e0338705fd0ec4a97d8134e6c8caa203c67f27e645bff2e8f0dc473d7e8d08d0227c0a5f7f5735088da2ee48ce4c8ec7d6155dabc3bbf61c60b591dd9f1554b5442f892f22e62f2a3a65e9162e81c967c08d967d899665053cb93974c36956408793cf21b588b468122afd36e2cc9bdc10e13454449a7b11d2051fbd925c74a61b2208c950de28a8e8067fe5838de6a86a8c7ce23097b5993b006a7d5b224962bf0a09dd1631cd96db2a44173c08290ee634f4ac8172479c719acee06b338b3e5a66a5a22538653f590a8e14b76d0bcb97a4ab0d3aa385191ea95b904a41b33600de1c20706b861eaaa67cb02ffd495526879b7772e8009a10c73db4ab8e2a7d32d07dadf4a40d051d01a43d23d3e2e154247fc5e23abef044db2b09311f6bf9f805e8fba3cf700a73b765967af99f819a300c2491a88426c673de44dcdbb6b07fa6220c612853b7e2ac17d2a05707c091d57ba68e08687f342b6714517819d94aef22d9affb0fdff363897f54e88cab31b65114bcb8ef07f4c57814366c6b1841303ccf386d8567bd4cf3777a9b8d7e43af2d3c839f0ea27b212e7801fd8313f5ed59ca611db64bfcda11bc8e954e4f3dd04f5d2673937e24ffe200fad42bbc748b840f2f555b08cfd601b56a1032d2a87743fa31f6a30b512e309de520ebc8592d470b1a3ccfdd72b956377c067093f7aae2c237d1a46e3c41f9539b5007c0209ea06fccb8385310ec41c81c4d1d23a26611f2520ebb4078eb36f56960bd3d1f0d237ea9645fea895268891a0b0f261efc6a494a9f878afbe54d0a109833f67a5b8806e8cf8c860f93e0a0e13903f0d5d46d06682c802fa53e81283217959b0b52ad20900e2c2de93aba2c7d5318942f3e3b272ecde430d3a262a1de80a4fc6f16ffcfc8c93af710ccf238d83c4abf74c9a9e1d5cf31e59640eb6778c87e6cb775f28312b5fa9c1de5ffa429d7ef7d5ac07e3167403921969feb8529708cc245009d089162d7afb816123dee6cbcc029d25f798dead1072cd5580bcaa71445ab6c0254ad3c19983ce902aeda71e317c1b7a119692b60726aed78158ce616c3ce205c5535b69bb31c4248369d21d35ae73f93db62903d05c01b7f075d01eef1094583735e61c0fdb5d00ef521d6fd538bc70c4c3d39b9c36f37973b8db00ab9ed681d112969dfc48adc15ca32b17d1fe087eb2a6328d4108c40bf6142ff41c5ed99723174cd09c72cfb84a0e6d3082f608405dc2f222b4134e358b86cda9140bb586b00fe8eca6ef20d14beccf1277442c288ccac25a267efa54ac59c9faed551e3f495c1e07e636f93cce3ff44d84f14f65690719161bb0f07c12e275deb78d969e754b5005c96a5c8cc5f0ea2c31bbf5b2a1b58485ae076e90c629888a9a792d3ecf0060cab9a13f4745bb73f34ffce5eae59e74dd1ed1beafa2151d5e421b74617269296a6efa487b8b56753e2981bf291d6ee7d1672d0a7a69413fc7ea07712cf878e75a13a4a4591db662f9fc8bdf11edb0b390d152a7a27d7a8113655d8d691ae1ba065fcf03b7f5605710471379c737c373274b6dfe9f325c48b34568167b9ccb24d1ed46161abd1709042dcc9d23aa27ff9964fcab5f9af34827afb436a13703a1db2d4be15a96ee9435d3889019877db1bc1828303cde09f4970d4f75d3985792c9ecdb29112ee289975c9cec2c4ae157bf301644dfd914e3b9c58d895f2281740363df9c305af1356af499813210248023489f8ae5fd67c4b4705aca15b1d3a5edeaefb4f1a147c2592e55f5b6ce2fe081c27f7f6c2855f0f7613aac6d5dedece4f77c15b0bda6ee13e254a1c4479053c1b5330439004edffc891aa35057f5b8263abf0593a9b7fb47c809a75a43ba3dc0b0f8e4261cd808e5e0c3f00be95565cdea46e1cb6887ea0a45fcdd85f6866cfa73bc4739ce33f4ece68af4de4f93501d5c2a0b889f4b8d688fca4ce1db5ccb17677944f1fa934b5afbd7560b1882df4855c20f1bfa6e3d858f42397e7cd09a0be6bc423fcf148154d09a0036ecc0101c978e0b123b6f9134be27c3969e14b57e4d494b798dd57ba8e7b808f46dc18863e31bab8bf76629c355ef0fc81fca265b94634ae92cd6cab7337d8753793fc505cef9e5804d231a43bac6386ccecf8c91786987a8f6972bb2666b554dcaf9d3559af64cd954df61e0073698038ca8025a997741f46652779334e066bf39a25da9a484d42132556c6ade14f2180e64fd8a80d48261bf9e9e018dd4cd8579e33ed15df531f843d940528a208b8912391f417e745b3bcaf4b35474e4793216e0c0dd4299fd33baf3815faebdc1e45c6e55eb742b18c7fc6ac2c905ac251187e35853bebc1c97ada0130b3f375af5148ebdf0be983756141c35969695e5169e92696bb57425d6b9b620ac7efcf73ee9e1a788f061dc1759ae185b38838b60b340e7e0ba6e5968ccc2b9166d67a871701dd30871e41b4de6607e59a3a8f65380bb214ded3d5c03dd11c8ed7dad6be69c127f9d2b688ad7a2625ed628be536200f6798944b907b8d226b38063b45f02397255c73232f363ba372312ee37904006554401aa07e7a89218c339d7e86b753932f4356112fe1c4a96dc9fc201c40a8125448dca11c1160b804891ce60a63b848db043f1dbbdd482084df5375121c4ee0b551b2740818ba8373e21e0b8c6a870827454903f5ca7ae62a4669f35d0b78f991ec31b022f76cac70ecea558683288be2398f36cbd54abedac6871b5e547d8a909b8a955e5d4c778715f566660f0b752dccf69d5bf1ccdf5196c57f18df557c910ebd44a3a5df2d0fe2b7881a3d7a29a08d54abddb0f99f58781c3e16152478154f51678fef77f1eb1b4a17a8cdfc38081ef3d564f82122c8731da5c5fcacfde09bb89d58643beed51a48285de9bef5370c70a82e82fa06f2d3fbb356eaa1ed3d7dcaa3518961d03b75b32a6950059c20f649f3ec9cb31a69ee522d4e21c24ed4ae1f125305938fd54b0bb07680763107858772773ed13619fa452d6290b95ccd8dce9900be3406c19f3be3054dc6447d222656f23196f6eee3d5d0cab330f221eed652d82c9970c1ba4aeee88e9f17258fd792aeb2b6072f394d214e56959b90e0b0fcfd13c73334cbeb60ff24160a002b3c31a379303f61e462ccc960abf6526709084458362cd6f3a4df5898734dfb535298d4a20fcfca989479a7f268d8cdcd2303727981f75d1f28e5711e17669b0a6e2a7c41119204772af7ff69512b8bc6b0b9e38a963dab5a45d98fc357cd7bc7b33801d00b3ed3def08471c6c453a7cb8df31eaa26c3858fc7f44bda73a09b57002e69ae26365e4638db85a945d3c3bf1300a0d0ab7cc1663e87ce0be7851f68fd1e9531baeac6d78a8238ca86b9e0a4fbf932d8b3b86e96af3a72e23e757a713a3fb3c0f7e6a111d48a1b7ae329b05510dca46d74bbbaeebac3b6edb7db59c9f980d9c3125aaa8dbd76262da7a6564322081fac9e6e6dec84d1d20c3930e33046763a41a0c6d5f371c8660928fdbd7731c183ca4cb33aab52f4453168bbb60550ca4f976ff5b83106df31708e02c00c5ed09e6de2cf69940eb1e043c8ac38bb5b7f8e10d13f859ab226e722201cb49acefe6abb2411fba17014dfb057501f3cc1392a90376c207f6dbcfb3896378669eb5431b7f747398e98d3ee2b805c6b3458cc4e2c00f7ba05ef1f7718174873b8cf53e94228fed12407106263ca77dc37a67de3ff09aaf71720c6bd17cb7303721a9a469c143a6ef4d9a17683746923203b0728521ec4636939b22b6298d8867ddb232213d54e48c3ddf822d0d4b3e07183d142230715fb6673360708c4f53f3882af8c1238c75ceba8e898290855f223f4d6e0eccbad1aca1cebb54aae80e80e7f40cc70bd8784d22b3bf4ed9085d49614fc6c936af0b0d546afa955e1ef968e316e220195d93e90bf251986d4e376898b4209f0bac52bf1dabec8e6c4ad3fd5a4eca7afe40881c8ea9bf4899373e90a54f4602176d7a88b895994826cf853872c3546723dc1034e58565635711f5312b848240386d77e2ba29e297d74caa9caa152c8d8f815951cfaf223f22a8b5cfa5f3c050ee99a73a16ac6b1edd8a2595184d05eec3200c8ff28a0710ea37e497215b0a4ae4d0561f32b45c97012228256e2420c23c163db269df2682ae10eecf808221205c9caec9f71b7f2f077bfbdae81eec72174c5f5fb303034b3e03872e96c2c839fda479003e8eff96685622c8abfc42cd954e571f610fd84fbc1f9947b4f87b575bba7cb40b21680e2284715952ebbf201149abe52a4c6a8d607d09581412ea4bd3939f580abf085b11153449f39d3ccdc78901bb637bd6dd411171a1e6a8baa29f1d8332ac5e23ddbdb2a4501a767a6bac85caa8e20d139bf4cbd41b8bee62cb8e6ccb3d5cefff81a1bccbe4584a21c11dd2aad0e8ece61797f190b68db7cf01442077ccdf41fe60b26dcbc0d6d9709a563c6491a4dd7ad53a37f605bfd0ac5f5d2c43486d38467a853a9e0b186ff8b6e3060c2af78c1f798c77daea7f08ea26963080531e1e80d36d1ae50071bc67fbc3b32da2787abfcbe9de3da5eaf781f51879ab082c2a0823a81286755eeb052ac804ace6522591b4a7283ed2a0ba5f6ba046aacba2727465f4c1af2641f796223236c7c5d1ee9a27a2b6ae22fb1cb25df64843827229eaa441a795cf30b44933afd91442c1ccb7692ac0f0f7df8a3f9fb4d729c8aa80bef28898fe09d40ec187711eacf6d4046dc2a84882b08866cf767270da60de2406d4cf15c13788602348f59e961a49e6f9cf4bcc31184167178cc6463719c0b2962a9c9f4475d73be3e2010d8744b130d13b359d9a6884621d3fbf8c06782192a43569a1682d4281f10ccda8d40acc943ca376a2b40cd75264b774465626ea91a986eb39d044df9f7d2c8536a32c4b1b57dd5dfbcc8dfb6625857918dd60aa07a4ae15fd6cfee50dfa16eac51f83c7dc35bd9637f353c05766ead975976430c5f4435b0cd7ce8ff33ff7dfd58a8d0e1a98bf01a075dde91d8f84d0951fb2b2b422659fda8d6f886b0b1b6b61301d125697fa8910265d84ed4eba0c851f6f36946192aad4c92ed85e3bf25ee315bb6b6b8f835738956a005cdae96bbe85ec3af5d435cfc3e4baa589f44445c8aa6378f01d365a63ac645c1d46a54eebf7d6cf67808b822b02d68fc5f18606245c04e1a60571f234e898825a1c1103cabef634d5b616e42236a91ea8b509f020ebe2c63e818b08748b2568dec25f3ca47401c98d0b357150469d5361ef96828bc0a09c0d6d41ee3759c340c7eb5a77730490ae4edc8cac9cc28f5571d42392ee496b359cd84040d99906383c0933fda0f6b1f6bd1e9788a5479d6de4456f6cfdf2041041a51ea11d557d0752ef351f1372bdf00cea35dd3cfd55e5c9848ec2dec58dbc420ed0fd5db2b353bb726f963817f41f0e63e22e748ed17c486d33c967ea9ed646d8f478c886539bd8d7f998265afa49227da3ffd77a3ba1164c0c4cd79e5137abb7bff2f6d62f442ef917c678eaa61239ce8bd7ab85bc7375ee825e0f13b08bad90d3c19e053771065ec7fe35110eafa4242aec559058d664a3e2fa318892bb698e73e0aca1dbc3bc7dffed8fd07466064f9ae293a3e02c5b586b8942df3cc8a453347a1a3345753b1dbfac958e1e347d356c2ee04712e3cab98be3b6a2181d52aa726fb98f6c949ae990428e53438efffd37a2b3fd6d490b5b6d9ac54c0179882befe533637646c44278a5fb15e9d4a7fac162ee0dc8220097886804c5491a5a2c560988655d2ed9b0053438e34cb509707cd2a273994baa93c2ed21c36b5c4c63a4eaeda03399b3ea6b553a72af44c487fed6a0df65ef02a1cbd43707dd6abc963a2c9bf817b480495d9bbc831446db82c8a0fec28b5038f90f2a62365493992c27fd070c7e3fb10984c9b15b587b12c2c8a6cd77a46de25448a26f4f22a0cf6d1f75226d4212c5286650c440a2cf0275111cc5721aa7cfc38620242f732bed15182d5e64e89e5ed656a26322d350d6f85c5afe6a53d49edee1cdd0854710f61da48ce068aefbf264db81e9061dddadf0e034388da993e1940d7cfc26f89053dd9a8738ae33aa810cda138e40f90406a170d1f130bf137e41405687d4ed9133e981549d562d7498573a76894ccb30b1395ca5145e33730ad1094c782a07e2c1801319d501a9ad82cf626d814010dcc368d7f7cb297ee5951d7c6811bad13dbd84c9f5bdf867df6b1a559fc8fb5e8011bf9c9384aa7b757955050b1c8ab302659bfd10e0e931a7ab784d4e8639d69682c6293ebd66cacf2696a7be50b019de47afbddd452e678e333705a4165ea7032393816755a5298ac3e08ce8ed83477a78373805a5e293a6e82b71d6c5ea80e2570f19049b29bc7c6ff5e5538168bc2c4c8af33fc02dcb2783e73764e7ad0c2f336d17c326d78d56eeab5909eb69c4e66b5c05c1c8017f07a1874bc3d79e1871466f70a90ec857b346b1139aec549b79ac75f84c3e5aa44f491406b0ec6508c27b2f42a11b1935f870462d203d16bce04be7e8651684fe6e0846bcdbc1be87faf95f1cca28e975ba40ea8b0386e3650e4c2304436a0ba94af2384e4af7a0aac769038b55093f178ed31c57484944da66d002c036e877a05c154716e7593c603ae3cb34d4c691e13118bdcd8d8ff2e78497b1217aa4be94e58f3805400a5a84a3f005701b47d42db799343eb0de2697269456181a6b0d6a772501f0bc883d6d586e0d3084b893e8e4f1b66e8745ff5bd247f7ce40b8461e15663f28449587e09e3373ab8d9d753eb0e25107042b8e78b65541c2cd5dd6b9fedc85acc73b11e420e7fc0558d9f6f3ccc4646a9deaa293824da9a302de9cff9111c00b54f6e2ef6ce040cb8a09b15884a67dc96dc46ffc4a8653872e48ded63b78ca134bb72997212d98b98f856ea75f60bb1b7f4c4c623fb83c150cdc17333ee9f63f309ef366802e9d834ce5dd0f8a4c46508204a9399e0d299484604c6ce9e7df584a27ea515802d17fa76f717fcab74fe22b7419897622c646cd042b8fc55b33a83d64b0359d4a7717f74ec08d66717521759377502ca835f6bf0b6751340cbebc933f69ee65458f23c002b6c7554fcf9061d7961d9a227bcc19852d420e18c1370e120dde31395ba7e866719e0a74bbdb42595f64989794c576cb28eb3944b562894bca9d2e1c6f549cd89c88767f040fefa4455fa2033f016d5919073cccd651415124f408900a6d81669810c80f1e9f77f5fcfcd679f2d87e268b4065355c6200bcc6f0f04d04a5a00babe34214e2e57c122a282a0718accb6f30315d60b3f30aa9335434f7ae8555424d7b8a18b90e4915867519319f7c0a60d5a86b14b6576f64111e26d44b9b9b523d170ab4dc842cbdcc6e450af8dfa45fb9a906df159dc1c624212c62fd6f1b09060278ecdc467d549bb63208c9a41fdf1268c4a7c060a79a2de9380f36eb28481dd16da8c67f0edf82c09ed3604ca0c97d089d0abb7b7e93b4bfe6566fe349cfb7e6397853ae91a6e9d8810056bcc8acc067a4074d2e3853cff801c9dea341477640fb8150ac65f3e90dabd3a9570cff95ea6d7d8bece20caf652e0034107d3dada9ffbd4e569d7cebd7a62742c8b5d6f454e546b58ae0623a4d795a695a4abd1ef0856e3fffc81c250030d7c83631e9c86ffd35a5a3832f84657144d401cde78bee8f173942c6cd6c5c8f3173a80792dd9105aa8692686735225aaa66b739d7cac8fe24dcd845b3fa23d0fd9664b88f9032a70e503d0ae119587827801c81ce48057ca87a1de040e5287350203fbd64aa97b5978f8bd0f843b18dd23d2a67b72911e0320c947b2ea392fc13978c388ce6adeeba46cbc1f8a714b23fd9c0e912b1157fb481da3cf59930615e3d016e81c485e5d533971b07132091b6a09dbfb2eca5dacd8024e4b023499c952490f4d6f844ad48ff3344d2d7d4d71c39a43bfa014012e9a83a277120cc8a2c6b907c75bc14a6a5b02f3f46408042628440c725cd8c431a3e9025a27c3949d001f65ee6f5783e7c05e737ffded33adbf327bd15fcee4cf63dab8badc613f561c15ca3498396e09f73e0a011acc958a89a8cd970b10444f4de915fabda9e2206e3e6428d621404dd5f74b00e334d1b2489d0c6d0582d2c078ceb0000aeba41828789e73640ac90ed09bb7682e9f613684fbe86dff3bb2925fd6d135a908d3d47c02bff182f55fea9f5058158fe0b2704c754e95923f612349d79265f02fff1b0edd9b5d7e4091fe7bb2eaa22134b3fee6059a823f9bb9ae731642a1ba151cda79c3206794ef3c41cb5e109dd175216a84344b2427687e964bf308b292208c14e86fc3ce4ab8a2feeacc6ac9c204b3378bc00a970e9390da72f2161a5a0888d4e3398273d9d8582d7c7131586f7ab068a3a8c748ac22cdfa8625ad04a75150d24826890459db4269ed5d1a37561ba184e65e20232a3b9c7f566908bfc85d7d0e7a5b94618cf8b8153f89f075e9088926cf22e8ea71a24de8870dbfbe6fb70e7d83d058b660f44d328c751e94d3308b2fb2734b58fab9f742c8ae5bb809337fbc2dc274a0b515d18dd2356abc53e89b42babaada628bd9f63ea639de52c29bc2076c837e85e03f0a375ee5daec15f9f2273db3619d3390f0560238155f1687aa89882fd33e7c8a1ef6a6cb8ea68dda8822be3c7f35f97fd44b5de09f262da6bb2e36af7803f753d93dc27306704081653d942596c2e5849b86c39c50a0fd39e3d82fe812251e4f28a25c4d5ad09da0f1c692a15de2cbc33deacf4c04cee9c0d2d6394c6356f25b0197545103a4a10b4fccbaa39da66c6b01cf4261d3e88b6101c632ca257bfee72b8ddf748953b3c96c4cb43c5752bb13a1402c0e991546b610c8cd49062a60f75e1d82326bcc3fd3af50bff57145195f9731be9672d2092d0d5b4dff91c5a4e74e74b31bab792f5054f21971d99d86b431c71e9b945362bfcb0226c946211ca355415589e4ad9ff2573239bba338323871f9e2d9d18c46e1aeec9d35c330e7a1e1f798b4659572e9358db23925bb84377193036df051d328f801511c1f8692f8e26722ee9095bf2f75c92c38230c1bb220ab26ca84ca879553f93073eca577efe08589a312c30368c2b628e7f4bd499e9eee2c4578987bb374fb0bf95f46cf9199ba0e1a60089136f981e1b1c0278f599388ae78569a255755472953b3c15e5edd2a8ec44d29b09b4a8d99ac0d2f271ef308142bdd3df0e6a4d9af11cec930efd815885bfdf251220ad51e304b35fde3c8b0443c345fd0b3782f61805cd8726250949eff1a1d4e43e055f25f6eef4b233909d033463c3cce1deba76adf4325b5861c8eb920ee7500e7c7e619ee85a959c97b219d87d1e38d3befe4c5df3ce912485751dc28456b9c17f6849a0f35324444c398d6b62b58645ba33e602710a38155614ae813c437192b5d23ad7216944a6f892a0f1b9ff561015a421064b397c2eb20086a7e3ac8db7f88d7af3aee4ca12a4bf8f6374da1b8455edff1595c2c9f349658802b2c8dfa22727c8ee0393cfdf25940b464c4e684973b4bf57df01e4bee73e9475293f0e7f0e1fe19557548a08460c85cea1c6d756b82b56bf2bb9a373a38600a9b3047be949905a24054f8e2ef52d0058d78c4426039742d2042e5828a6ae108af051c558b215381e14c312574de3c4182c48a72cafa20c409a2e10cdda7a8781b7b632e4e5d87b5b7300bf3f753f19a4fa2c9b035ff2f797676ef82947c540b1cc539f2575d7cf29f272c449ac3eab74ee4e0144d907da1b7935290ce763713700337929545d9601bafc2eb9b8f423549efaf03ac904efce8333f368766f0cb8a01d3fc36bba712e363ca362019f7a66680765f9f21a165553ac589bd4c61e5cebf7e675bcc5ea6c70f3139cfa474b8cccd6f0d1893f2d9483498ced95c89c68badee96b730562f5d1720f8242e1995e588c324ef6ce878d13df70bb804e758f55553622912dc904bd8a7603512e9c0e024a4c6bb5a6af105c20f700a373abdfca53c806ee6bf716143884421e168251add1d3fd3f8f2f11052f9e1f57a1943c745848fc6514f79582a779beb9f62887eb38f6b3a7799d7f10b3628ebba01f858e31c9e14d953b675a830cb79c953b75d9044866c809a661cb06ce4103acbe14f729153cb51677b5e410d118204271a364e7e841c35bbf17da904110d114e7e449d76918e3641aa589143be4d73ce174849d7c32f4ca415e2bad7ff206ac73984cb3a5edc9e8068f1549f885c8adcca79ac3bb621838138fecfa8df5138123d28281c81c99ec6edd3bebfd022093279fd7b30db4b13f336a2f5a402f4b16c73da0e5ee78c1b41867cbc894d69ba5740ab64e0bbc771c3e7170a6c2608889a2d6c8c74b5bc0038dccedc9282a1c2e793263d19acc11465ad92593eb6e471e0f8ca08d587e8d92e49c4da36503ec38fa777edd128ee3e927e1aa4d474ecaf3481196685722ae20c33e796d32852ea721c4023c496d4c92365241922b027bd0867e5d9fcd702361f1c95e864d3d9a5694637a7720f9aeb582b66751275a0a9eae965f6aabc6066fdc19b78ea388400801ea25cfc63cd90fa77f438fa279614db927fa925b0131748a97ef095549c93d49e9aa35ef3fcc55b729a060450e05c945b1a9cfd48416e07b1319c05459d1cc821a70b9dbf331b707bd349a0885dcf2059934ce6292c91ac5db09a34077b2737859f2c250c18badbb368f087ccb985a764b88d09a002aaf587430c54d2f4f42199ed858707b5e04da59afd48a35a635e5fa2188f2efa3c3e69be29f8d8f6bf532b8e38b1241565ec84481513da227b5c70f4fa22bdc820dd7cd533ac960de92065cb35ca7eb9b51dbbb8813e12c2ec1de10af29dca8bc8ace92009a3bd654076569cb2ea6bf52f7f58ec89e24a943d4c098d235a05a3b847c016ef1ebdab0a2dc3dded8ed6fa140abc8d1a4d70585d9d43c1592ac5d3bd6d4086208061cb1b6fdbb2e59a5e9c383b8beae6ca0bdad93ac62617d503ec67845a7f1c94804e59a22318020e16dbd7e7928d94d6dd697b68aad6b8628b79853451bf376bf60e5dda106296afb760c0f2573792d24d2d0b17a46008b06b83b7375bb54ff98a90a9c566543c9bfe83bdfd3d00163dd63cfc41fdf6b96bbd969819d72435e2bcde0f45988d77265cfc84e518c19b377ae3d100d3f871ff6331c8d63caa003f61b1ad04ae8cef8838022086a9089a5cc288ec8077d9634c642456220ec3d4978068386472f8c45a027c89838e7c663d177b236fa2577f2f85d867558208962096fa0d37959b4d678a2c06482e21b1554847fc7479e08ecee96c791c89b508e6415bd7c1930cbce0c530a012f2313e1b9eb570efbb7bb72fd21f777cc8b96c45487d22731a9b7fc7407fb646fc3aa63de28d8fc3bdfdd1c012013eeb9e97b4feba7f7da58d47fff75cab4043785faf0740ded84e82baf4eccc7e6dede286600a30b7de329ce372cb38f5654299ee90d269b279096005dfe5822117b94751d2e92f27e722da7a0ebf40b74da0c12edd753886b24b952b82511ab57c83114c87058eea14a30b7acc46b88efcae9fb5b59c44a3259fcaabde6173de3e3dd4fc93243fe6da56a5f03e72edae64eb7ac2602bf46bd90bc27453f7e11fd44013c9e088c2519e699cc605e627abd6a434d82b5e551818ace1c1c92925758c298c3272c8cbf620f36627f1370aba8701060b5ba80609d52a772eebb370347924b451597eec6a2b0c2138e1e2b2729aacad6dab28ac199feda94a8d3b0054a6ef97d57e8a0867f5ec770b220819909e7024e4670afc5e10fcae227066526f4aa5ff5dc877d7d2c1466dd75eb493ab701ee38962486d5130895fc9ee63f16bf584b01309a588820e35911f34858986e5374cc20bbf0c9b84a5f1ec40d84d961f7152df56f826f82075694defe53e1e806394f29425aefb52fb7272434d28f8144c38f22efc8a1192f053ca0eb549794368ec2c85ff9d3534427619086051a9eb9a1ad8c0c4440c7e5a6430faf33b837e14e4a83b6a2a1ad8d5981be1ac566877af970c271c1042137b1e2c43bb3b6d38e20a5ec0fee5fac078ad2559d93e11fe34784acf431eeac9365aa9851a1acea25aa5e19b0dae77d7f0b599867d631803dbdbddf04ec2fdb2dd6f83cf45191253dc1312d154c3a18f60fcea3d5a355c3424d88aa4ecc31e4a51820d387a19274b1ba8e9fc1fc594e349880df0487a5ebab1236c8c209efa51b1ea51ef098764c43d81f98d11b1845ca19ca993669948a7b872424f35b63582aac49cf0448c74b7496d53e0c41ca02001df0fd5c23d6918ec1442522533d01474c8aac16416cecd89957880148f3ce7c5457748c2ff767e487e1974672d373c5f65a446dec4c140898441fca83d0ee2a456d61b73ac455abd13f2a8f2afdae514005efb6805e22efcd75c32ed5066b0a1571cc3be60a6d90d43227ebc2696ce607b33987a0505ebf83ca2f12d873a70e5fd095c4d1f2fa1f95cfe33dba4c621c6a920366c9e15097452a6d963424686bccc3e39ed47e45fdc4c3144233389c88f9f28a69868f43547ffa018a18ad962a21477849fd1b50b3f63ccb1f04cbf108d84592d6eb2ab4f9a38e91afb8f5313eec537ac53fcceb3d03cb3da9b64dc8e329e55305465e62f5ab574e4dac841596ccec986a467493a19def6d4268e0a9e26d7fa2cbb5ce84d488e0cdd47dd053708e58a083e1948d735a0fb5654b2f2dfd74aa938c9be36fc7f9a5d65039083d5ba57622b74f006b711cb55b25b2830857093a89fb4655009becef2cd22a461c6e8879719959eed24b1bf321eae685b4c6e2393cf4548b8e4d385a76427b91294c5b824eda30ad8e622a913725a7d46278821f4ad549ab7be7e0d48d3f13a2f2a321b5516100fc2057943a67421dafa97cca446a82dfdaaaae875ce2f835dd484c8432c9da440880d1e341f111c6111138969a70a7b6a0a5cb5b343b1386a437c7bd3cae381483031e611b570fde1b415d1b0efba697eb9ccf51182cf399934851444aaf9a5f689007b7985ddd0617c26888986b496b4dbd1a1bb6257b250b7269523de42b71c6ff91ef982ff74d244874c3e47d4b5bac8d47a9c5f08bfb297d439a91beda7372784f67d9884c0693ff92168537df8441aef74bd2540f2ffd161532bea078a143c1724a80af2f073d0b83c61b843120f86e3bcc046c263097f971c3524e256dd5c7979082a7ef1f998b51fc8a5850cf6f53ab63acccff87b69d23b9c7c3c099765649a9d9fb27fcb51e19af7300b5aa0be7d24ebe6c1a20c460b72569657c87fd55a976bd53b92004e3d1777478a0d94d6e79618aeab5a6aae8de95a8f4c72acbef4030021a0b215b0462fed7b638df50a87030bdcdf0932529c2d31b680f931933ad403117e1dab55d7aa32560f4b2256e8fb38ebb97651b4cfa032aa3a295cd33fe16810e4d0d7005a44a707e89a8d4d3cb201e5eebd1f479aebf91e75f48b00a206a912b2f89ebab75f59cbd4cf63b2866fe48b310cc779865da9e5cd715cff0b28a2c2a4c31d77e01d90a7aeaa877cbbee8a880f89c6ec4328c2d2f8bbcb5e6904ac00af54e8b7424d1262499284e819fc7d13b5639b7beb4621f48b4a619ac88ee1d84a13554bee17d0e58d1710e661a8cc2c79a1c5858ce1cb3629217410b66576cd3e5b66a2b9091ab12384c1408cc94bb18a1c4e017ae87fdefdd9d0d99b33db917ac8cefc59ec8f1c4492a7867f8b8a5f16758b891b93d7ad43113ad213563679c3f6be604f54b768729e3897364597c8ee7806098e51e8b401fae82baad3c34cde9121a221c6d94cfaf5985a8ed8d2ac61abf864e51701ab13b71c8224c1c06b933a28f9640a1bfe1658f327d5b83e5daaf28a2c262dd324f020eb5f3e4fef0c2ca882375786cc1021a82a86f1f3f3a1e04a620da0ccfc9bfd4fa41c17644566af28c0f3f6ba6a25d7f7811c2f1ce325a221bc2f75c7ca67f2c893bb0d05e1466daaba23970dea782a9e6f1abab89d57a4ecdcf738120f38e597c650f79517f4a5ca5ca49dead28011973866227f4f69ff185d9e766725bc6cda403b533df2ec08e0b023cbbeb0db6f720052c9c7d78a9ae42bc95356e19646301ed7af525bb4fe1934366e0e21aee02770050213187ae64f53422b79003cd2de1210e0513b5cfbffa2fe9f35eabc748c5d90846bd245fc6e30d21b506c2c195eae37b785b0f2d6739bbb146c36b06fbef5f102c25be0ad4126de9337fa4f571bf74a61706f1b3161f318d005410a5c73fab27f5e9430dce0915670876779030ece9c366d9df0ac0dd240f53d2b3ef9ef49298fc3aa93b56cc1ee3f25c3be05e2a8a656b2cbcba9f1b26ca939e1bf0f5e0532325177ba9199d5b4f07cc471cb590f873ec34aaa3f1da9af14739ccab0fea7a661a4474de067ba93eae9f0afb1feebab4839b1bccab5d6729f53776037f8b62a96c1faf8c7c5cf3a5c9aa8c10bc87212205a5d6702bd0b0833d82d6f03b27c5ccbe97bbede27569d32de528fa7ac8b75794e11170544c60cb124f95a46b1d8054cbc97ede4eaeb94c9165198049a15842d8d543a619866ef5e12c5826ef1396eb1dfaccb70ad5301c06b8bf0aa9ad7ee825e8f838a32075df119f8738b8a6a23d8904cb6058b1f3303ffa8f5a1064e995f5066aa3be73e8d04e2c4667e4946eff38ddf44f6e5887fe3f20d285ee2802c87e69f72ec89419e5395180c9d08d10e751ed26bbc0128a1ecf51818aeda890d7c1f5b07a46d2088654e0d4e1008045cdf7be6ca1a823538ac289c36b5ad5489e1edfa91a41332156bef160646382b787220914e92b1b7f7e1fb39bcef74d72aeb3a696a2c11648989a323a55af9a723392e76d5b695dcf08bc6b7089ac3ae70c483aea879ae8948118c1fe00b964ebfb600dbff6e97fda0acd737f52d8ebf27ffc8abcc35fb98140141ccb9a98611bcbaf3b874be0b479b44aca43862cef1be8eb0c8683b1598eb0712cd6c681b7ef2c1f7443a4bd878839b8900696912d21da651061fe5b6a11ec94503953889e934cdefdd57ee9a0669c7fefa6c1d22cd1e31454390d6e016e75ddaed5d904c4b7e036de1350a5cc24157f6dd4ca4c13bfb9ed3d87171f9de45b08769fb16045e60e4fced7e54dd2a421957a2574dc416bc578f948d1f6678e6f5c1579ce584100363788e4a44a5bb488cde8b5dcf7f33191de99c7c97f6769af304e40973cb9ad91dcbee171d2b5b1e29eb6640f2cac27407a904dcba349b9a945ba10a6a2b3652414b7191b88f117ff7b69ad782d31f504ef6fce54f74d5d030896b3c68f7ca24aadfa4ec5b594806f590a314c537d19af31f6ae688bc21f12647d7f8f54a44c1bf41809f873d859ceba52542b3d4f840ee2a31df48bfd8dc85aa13fcdde54d7aa66c23042780600172d40ebc7dcf71c73c6f22deb58e26d12bc2a66e1352924c71840ec8e00a2a49b7c2733f9562a1a8e1df69d19e14b8be143061d84c2418e4ad5656503167aef29092893e4142b265ef53a7e6bfef4b726f7a6becebd6634e90adf2d7a5792846b96bebf61a3f6d30090ec1fc381d344bc57b0fbb927394d7fbb741226042da6958411601f13313ac731a3722c3e373040a9b023c6d759f55d6c050ebb8493d0d44fb9bd5b57964e3c7da2d8b031a06ac11365e0baa75bccd5b632f01aa577b967d7d821a7b10d910043047644580cceab9430fce760742a512db9094aba085a6cda197a5ba492b7d52e5d7d7261ec9fb1a4b8b94e034388c8c3e322245147b6a5f6c8b5e975fe58079060bc4272c4b81522c9a032e800171e83bb5305f4fab2fcb8cd9934b2e4162aafb11c8e15a78c1e54798c930c8d51b89791adaedb23049232b2a204833e68084d43d8f836d6a5ed43ea476db6223901393ea92368f7d6b533fad8d374e92c009248a37d3fdeb18052816c82b0f0ac7671f67aa0e4d8cf7a30ee4541b1db9c017db8d801a54d4676fad64ed01593989bdf851266016294821712e5127d3ae07e156c407b9fecc4cbc06aa82f64b51c52d8c12e0dea1a3d3b2421ca5fa65ae69e62f83c5e6d53e87ef7c810833580baa480d30120a333fe1fcfb382357dd18651edb27372d4a33af19b77278bbc1502fbc03896e552ef698d8c89fe80dbdc115de15fc75dba2140b29b6404752e1cd9b7af2086d98011b532aca752943ca688acb59d9517c8e86784dcef3e836e4623a0250f56b0c97794506e7a7d0204a842da1f25390f89ca409cd7515f59c079396e9b667f356650658312c92b19f9a2382ec779b32cf483afa79407036e010299cd3b2566961ee24cb38dda96ad0f0e12905a6e79a7850f779c35c567f997f64242896410fc895db6dc522214801c3ff892d6a04f046430af9a0ae589041de48d1c97cab50139af459b0bdb10add184b6f60cbf5d5c7d94d6217d87e55ac8299eb30ead684d26ae54a05432349869c651c379308a4b1f2268c3531fb9570f144ae41171e3a5953a9c9bdfab031cf70b6e3488f01f97b8465bc2a0fa45deb9a2abed3487599027149a3183dd281ad62448338803178212425ad31eb5205b6f9b8c59b4f00034872077e6c768483622952ed51771f19251620a1ea7eac88e03b4d838be66ef6f68933bea6ef8e0dcd1ece5c700cbeb69565863f46f1e76703c0da615731e33d891f283d0c7860233bf576f57ad5f728665132f6fd22cc0eeffcdfae81c7d54e67de09cce171f5a6b30ca7853960e68cd38c49c71ab179de295a2e27727c992d0f10d34473f4366558facefecec21601703be221bf064e7e698d282266c93c5f7211ee1e0985ef297337ba32d59e091f319c79ca074208ec3e219cbfeeca882e174a29c9c46a45d5faca2f2d3ccbec789f02a2192c3a02b42d69c5af393156e14a1ceb7556c6c45e6f6dbf9d94678403d9da538e5c72286ef635d7b2d1da6760f065266b71f3e487061bc4b2a749e6c4a5bdd21f990ff2b7c57cf106331cbf0c2612d14dba48121ab480a287f80cbd07dcc681387139a190539a0eae39acb72eb7b8b94a6ed7ca8e4fe8ec051c42250312efd8f243e852e1313189d2d846b123a535367eea818798b262f113d1bf2ad092f7c2d4fd14a986b6388f828f33f53ea6dd9b79425d804d994d45d9b8f7f94c3e11018cdb7de42614897f38b945e9049c68c2e9f733e0616afaa5026c90b029a6600a9f3bc65b55cf1416dd7048153575c28c27c60255021105505c9ee89e136b14348f8d29f886e37bbce8996f3a3d9e17f3cc4a233501bdd3b76df968d0292333818a307b6d1d08c6091a3243c73b6008ae44929077aee257a514e96bdff73f7f7e9dc70539efcff0e3284c2deaeaa2edff004a6a84761e2f884cbad75482630d8d35a5ee1d9f9eac4a425bf0f0e0f152c2c0683de3a596379cb32e04449f5ec2feacc989c1cb2bf9008d068e0de9db7cf31b19cfaaf89279e526a96158347b8c5339ad903dc1e7c6ff28627fee02ffd2107ddb05bdce56d585ace340af48cef1daa81541095e846aef2c7d4febfcf0def68fa0c2b7cfc12387710ff981dd9a8a30b3b568aa619f518fa811ede2284074515b33db121861b96089eb93539105792e98fa0b4fc3d7df4599165a226e0657078b169a835200bb579d42ed1e4eaaeafc632447b2fa9df356baa55a30b10e1d8702eb259a39d030043efd5aaf815daf28ad124dddefd9d0ab336a0b4361c1f75a276173ce8c856fae59c94f932020dd3562d9344f677cf2dd77ee020644355bed1ea5188014fd66870ce3f9f165c224878818226d8051c6b74aa56fe0a275fa166115f96f2aedc28ec3e77c9209d89b322b299e1a5f41e3b8ceb805befab3160a94d35591091c5097bc36b611bb69b14662a1d434f2336902e8170819ab9f0e80c1038a19761388dcf798fe77791c788bfca9ddf2c4de1caa00923f23575d7cc34104ef3f794c45cc36ef13e07a942a06c21d2ea83546a0995ef1c9bf3526698cc1d9a12548a6e7ee313fb889a344c21640eb884756dd6b633be767bf3aaad79fd4471249ad6fc3ba4755d4c54edfff33f4a33a9581faf6ac0ab8b24db7a23e0f398a41793b525237a637fb97d6884515db1eba5767df919068d1ccbe6b611e649cc91fc732e8ef464202f53d2156896d4504402d5231d6644ac2ef2b6a0c26512b0eb0f7cf6da00447d6bae2a182a29737cf2c5e975fd1699736ea2fed12b75311f75f64ac982500e912b4c628f2d74fca9168e46f9583b27e542b4d0999010e48dad98435cb31d4e16f96402da2fed0daac46a318575440683b2575e18dc2044e9f26ce372ec9ffec27774e4132176ea3426b5c3645622256b973267a494d6ee1360ba80487a3cd0136ebbcf81baa119c5f3b39c2652dfc8a29d5e8910cc817a042bca5855cdc1ced46a35b4e396abdcb7c74ac3eea8717d86074f75fc67b1c2b9df9463eec18c0c221134e236c0fa563dd0b7fd4d1ef185485a600ee57aac1a7db2a6e55d1ab82b43aee59b6e80c454e07d0f4ed679c5ccac44a3cc9713137b7cede51c9d22665f9e6528324bd1ff671f48ed80951201e6b144e8dd12257bf324d4bd4f38109ce51719c17fe7671410a9d2904150d193d2003b33b5dbe74a5aaa826c7d632afcbe03376789f6174510cc5f034d3ada72dcf956c56af0d0a60a88a4a96f329a20b4dab95fab497938b702d382963ae86ec810f566440a9e1c9370e8054a29babccda89e96973bbbc0fb3611c0e2c944b14b07ae45c9a39f1c89bc2fc12b0055958ceb78be505da66ec4d6aa35a33b124c16b96494b3357d43a9eef67b0ebf021a40270299a4ecab97c8684fa9c1a0e284121ba2da07d59b3a3f031b38873829404bcd2596551eb15b0b7f8db4738d1854ede96200cb0f18a78894fde1fbb8ce76ca5beb255a009b9db3ff2340567c12e28d3eefd6a88bced3103af007bce223757690f1d5e92fb929bcb9b1680e8dbe39e3ab19c6de96fc36ba14d8e99f13aa36893a5b0fe3cc00725b72bf5cabb35df2f66abf60b810b5ddc663236333f1c2c44e8e7c23224b25b88fab76059c40dcbed30b31b2791befa77d8481cc7a56535fedb2a3ab125f6b4ac3cb22d85cbe7740c5b8d0906e9ca05679a30000edb38a556a35da707399ceec397c8815a6cbfcaa6ffda00e7a6b5af935b20839a97b834d530a71c2c46af3e2bc0fe3b6397f6a2e4461ce4a137f4feaf2a2dd09e952554dee6028871c6f4b1665c02e15765c490101d7a641971fca5ae7f493153e274511b7344a42eec2afbf0a2352b0ec84329df1559c3c649df2ca97988bdc0681c9b78fe3fa6947d9e87d8038c4f6482409087c9a78180ab6835efd8e66869d3dbf1804807a714e45e225850b415ca3ed0c5c0171793c403b94126473876bc59948afc1c82d28b51362b63378564f1c1662d8c1ee3c5424f2adbb90920deedd3dac5b23991000d1c0d68812a3ffdbb7f36923289bf0a8fa223b1f7c07b0cc20b373ba2b6d737629bff931781ec419663c6064b4ae5f3831f3f85e7e0978e80715dcf4def7fa81a044e0d2bfddaef3e890b0b54e331031888101a65f436a2f1187c70af62068835714e8a1bfd82f882ecae252a98f5cd1643978751cb0e0ef48218042b22561be8b25dc942a861b63150e96f0a4b24cee000bd3c6ba1eabd35d42f3c6a57c338110505577e153a3266571acd28ea27f3e1e0c7d30b84d373fcae14d5e4afb0b04edb0148b028f241e03b751ebaf648b0cbc3edc8cd736fa6ff79b89739167b95ef3e1cd766b69f9e6b3287104b87529a629a3ee17d2ed7cd148abda8cd2ced71843f616d1f9b72d2822c8210b1f207f031623a8f26f6b128259a03fce91ef18b56eed373b94cf7216ae9595f87d2e21fbf1134f4ac4ca45b1ff7cbfc3e979b6eb98de9a0a13472bfdc9bd97e7e6ea0342c6f485ca311e353ea257c7abf13a34bc4ae2e6dc48c069fb5c3368103ede0c6e8567c29beba7e36e58e89d4f41812d9af98f7c824dc7fe13430697c3ea827fbdfc037a11cc04029ee25a332db4bd1c3e7b71552f042c5b00ccb87b6db126abadbfc7814fcb6bde4857a0c1979955ce0980c1f3dd4e91178b3c7fe8d7a7c3acd50093bc616824967d3d6e32eb640f26d80fbbca4369e87190e0c2ea8f606ebf060abb4fccd26556394e48dfdaa0c423f5b5586fd5d9e882507f1a18794cf9179da7be310a5336cb14cebc6014942eb8221ab25454717b183cff907b810fcb1bd1c491911083a78971f2a62724994c8c548e5cd2d4826d643d1ed16ca32458ecd25276d12ca95cf22b1e365a388e0ac61090d76eddaebe3cdcd247627f7e7c078d6f04ab9ff11c11032021389e96a66bffade32dd4cd69e7bf2a06684893208279910d7024b92f9eb8f167aba2f0280c7b350104d92fd87496319f64e942dd42262cff0dd53b417882d7573d45b8eee0770219f9f4d72efd709ef1f1b317505ff4331b235dcafd774ffe2972fc0e20d60212df70e3da42378618a041c64f57dbac06ff72dd6c06134466124a2c54544e8bbdf59665da148af25ab9b2ed61cf159ce8b078a082d7a5cdecc14bb38df7eae1f141927deb0d5bb9b49b501caf4e503f55924a94811c629b824224c52355605d4a47cecef8f1b930b3979efcf5f8c0e37656bc2d9e9c25998557129b61c75914bc9683c9fb2ea05476fe093f1fbf330d1a9a8276389aa911c21ea7b8a40fe436425791b1a1cf3badd9aca6c2a3973810498d6d859c5c06b1e5bfbb1e2d321f515822d18912e227f9a10d07c053373720e4f62fc3333a532fa66bfb1075af5fb92d5f3eeea862541848044489683186c2c2e086bcd3e75762266f4b8b5e9dc220912cc188fd0215df177ac428de051a6b707af79c723b208e565277bc10b5249e8b02880e3f614c8168cb6cd09d41bb4bfad46e7afe746a0e4f44600675caee37f36581a987658c746d87756f24b46bb72292e26fa71efd7fa7cf695ee4892eb14ee9967d191da75cbc26118fe8c8da6adee1ac0a14cf900b1cd33bb8c34936a9626436ef497f8fd6280f0779b4d006edac9848c394a86439dff6076a791f4c82246c5c662d19c2c5984765af1480316c8e9d394d5c97eaf0cab9a0c58cdfb4f745490393731832665078c290f318304a452b5689cedff46d390e4e625366ce336ccc453e3a5cc37598637d796caa0aefee195a1c7e3b564047c57febc06a844ae1afe39ce411ccdff6e8f5e744b3bbad4b34477ad49456ef08187843af6fb5ee894c53155841b31018945b63765cbd03d332265307d01633c4e43d20961a3a254e81dec4ea4616105d65e41c1df3acceb0a6a74c94142c2ec4bb49ac9857263fb85663533c6a785153a8492bb3387fe89802baf2a33a70d9473a34b08300f58de362400decec0ea125f86b1fb7e52c3b9ae4e71d5259a762da3d79b6d37b810320ea1708474c382b7ecc9dd4b9656c925334e13aaec50bf00afec2fdda01368e72eb274e69a74c1c157a735a89a69730e3af22ff625c6e2d3cb92e4b08e7a1a208056289c0a7f82f8e27912a91f906854709cc9b361398c88b7e3c2a6626d208c84fdf2123821393dc28f306a344b741944c9dedb3d1a926157ba83fc71071ef4d73d1f15d5b342b943fe4de6ed8dd75f603513ffdd6d6754d87eb2d589cec2d538ef07fb04427dce11a22b8383d3bb6b8e42f9a0f3a984204922b85ad45967711374260e47a169ecf3f84354a3e880412cbff765d24c01d7a9798555b01aff9e9591a5500e735c071f8ac4f4438a94b423eb6c045e744b2e37852addd60f88cb3e56f7bb48350c6dbfcc3c4abca65da88841d786b34ee271ccd613caacc12d37aad650d5c06fef17deb96bde6c47be7250b0cef6e55d2badb7efd79366c5c6c8610f94889b6cca49251bf2031575b3057fe436d95031d71b03bc8acd8a8036c5f9e651d203af1c6c86e0d5c1696450b1ac10ebaa3e894f2783b19117b5ca128960290a860b4d2a3122860c6103c56f172a599f15a200c9b004643df6b9c94cc12dfb0320d11fc92bf9dc3188139d0f6e43f95d585f3676894eefb64247b344842dc9385746866f400cb9bd0dd8778e19a20015f7dc12b1d31a9109a619696cb6e44899308911224be39cf8217c13a1db9b87644adf7e5c3c49d52fd7071ffee7c511f3d60e5897ef9f5a8941e5ee0ab0e01fbb59d0c3ad98bd1ce511f863d0e5248ab16574735113e36486b8cba4d39f7b7c04a0db72fc29e8bc6bfdbc32690361f13012da293c9224c08dd5968d8d608cf5912fb60f4fb06ddae21c0d136fe6f39e405709418405a22dcb9edad080e23a94688e54045f4c248a7c951815ef6d47ec571a207ceadc235ca2b95dcca5a2a656952f9ec41cecd7f949e7d4bd492d30350163cf2cd52f01cb27b91cee88cb560999fd8a405a07de518b84833b6a31269042a968e7f22b879faa9ad672b266927e568477d4dc5af67239cc3fee80f00100a919b9d280f65f121e143902d4a7a68e86086257e8692247d7c71d755e36b2d12cdb1d3d491ebc2cb5f271f440b2e28e920b1a963043691f808e0e23204772bec358510f4e479f027dcb7a6ad1a942b361fd88d064c8e7b979d9a880012e8cff1fcea74c1ce2174ddea1d97772f054c0815d8e6699dc7c6c7a689441b2924111c91662aee4117d3472809cdacc2f919d1117853e010ee42d61c787920d3bad4fa535ae74811bb1d3e23640d7b8aab1ef26ca34b21698df4e60da3b18e58838a0809b87d7527587b9c12ff7ea9514282a662603cdbf5048511b42051f3aba6fb4334c380da598fdf6c29b054143e9e032ec7f21cda356a11ec39a6ec95956e0c5b0866319c6b2de10081c30e2a058a20d8479cb219983aedccf89f2b0aac1161de737077fa6cfde1051b48429a99609b867142056c388a1e05c716fa13193e18df80d599008f89074358a12103eb6b2450d2a8385f51eafa1acf1cd4f24f657acacf1b4c90edf8a7b8c25feda766a4e8f0a1db946e2782f681f14dac403a1add8046bf0d66da2c6857f7ac50f797e514e805c6cc0cb89857fbab3ed990bca521b308d9ee1494e8d136768f893e228af1193434fd0eaa65816608e97a51bb58659bbff81fa9a04ea4529a7b29f240ca4e20b0779dcd4a97701271cc9e72346d3873c7f7b2d14dd88a70fce82390a20dde72b7c3de946326b96d1c872e8a6234af73089856a061c212e3825eabae087c226e609c51b4e30e3535849f829d3dc37d8f6893f250ec1618a3b0cdb929daadcfe73fca9c07b28468ac73849e8b0f9f20b571e5566d8e8249b8f6be67c8bbae733735e2a613a4acf50b0245a3e451bfd4ee70ba32b9d9ea71ea75c21d6efee5890a8f49b5f758b9b5ebb5dfa96c339cbffbedc28d1f1581598b1f4fd0ae0c8e26d5189aa329cfdbf300abb784f0e5505694f8a2a9a417d73d2db67905b4f2a8b631697b53eb2cd33cc74e13f3f8e8ab2f68dec0f6a0c2a717c1c47af717c1b2594e8b510cf71b433e1496ed3b8f1d6e338efeec1b76f4222bf07ed713b02770ee444775968431f16907a9a097be4fc6915a1e6cb4db25f2f9ba4fd25540ad573ba7d3326ddc89c467cbe2581f26373af9b7830f061e57b0bcb92746426da73f7bca87f35502cfdb683178f8103083e7f529d1bd43ea850e4dddfe85a198ce9214e351834fe6d342bbeecc53b53d0210d0223c4146dcf29fe7cfb8a612d7ce4fbe14c80ae7709fb94bfae38c565fbffa5b758ff11529deb62ebbafed11d261ea72a550b61ef1d008607703b10e8648cc7d717e61fa63dbc9a008a52924c41159a4b3dfd2800002aef48abeb61dea5d473675ec437a29fc8cdf94903e62be53bd586dce9bcb05d6ccafe3f5e8037b76c32994827d8233f10950ce55436a7af0d3c4ed87dcd4f70b9a3e58965c120a4bdd6bbe838e0a523a8acf6977641837037d0ac87328aa0a30fe54774513f9e0400039a4e0e1b53dee249c05b09f54f46660fc9732fb35dbb3d1368d541c273eab8385215c67d78352b7baa78cc31c9c917ada031e2293e352706e3d85d82665066a7a3fb54f166d0b7baf481e4f745dd303000eef484a9f653febd1bb0f50d059d0f073de1fdd64135e37007f6ac4ab97806464c87835b41d730682484df2004bb058df60b01ce03b986c1f04e26ad1fbb345eb6f12d09bc87292f7e7b1362582e78e107a093fb1670b431b39b15192350b10e41794259d4f0783602cd5dd7b0b4927b446827f63f7e4e4fedb4ed31cbe355ec0f96965d79a4f63dbc957863b73db6217a0eb354630033496861763e1b4cae0d19d88697d783b16b1087a434def33613a5c6535f18933ac393ecd0d6bc0adac1d07503889521d42e8bc592bb1555287e019c7cf1c4efda09795931e39c124a16ce942802c8f92c662c8a8149b9c00b61f12e5a8fb1f45cfcc644f2091c7fbdb674743e66d80cb823e684c8765e7742798d711c25e08fa756624e226741e8bd3aae25c7e75b80f6cc925b679ec3769f1df97ce9a6a3e268935d7884ff8f15b3d0e3b32c4993c7800acfee32bd7c97f6aa39ccfc38924bdeba66ebf0ac45f44abac53d1da7a92f3006cf166728cbd02acab83bc54526a8b63224e44449cdb57a50a68e68ad2d95de8858c702a870efee4ca04c9660e8a1395d31bd61b7807b3b8e9b6680f02ae08f49610f0b45c9db1fb55070eeca72061d40be1f5c28380c675f5ef7c7735ecf45da035da713dc4dc07866e96907d71d59ce01ac542e7237959a1c5d57e0f0285ac8afa8269f4dfb87060cf5fb60aa58608586f4eb689b65d382db989dd815bd482ed32b4b51e57fca74c97e4609b6c4f193a2b889dc4de6d52c8da5b94f83d42986055dd605faf5c80f6d9c71462c5b8a19fc8a44f3fee4f96dd38760b47eb678b5b4af71c58650577754c5e5d632c2b79529bba35fcbddc704134d7092db5765ac28aba610240f28afa988f1635c0c525dabfe584cdaf05232baad7d382d6b6414c9f522c0a0249238a0cc09a312a78e8a7e70c1344bb114ef5b7a73d92c001b73ed5ec9f96da31c75f651deef64f951541c804093c51af4967f7883211440fabb856d027b6bc7ebff674f12b096b4f7c3f6c964f8e1ba473ed1f56060c7c2b7f8256689dd39c63cca4d65ef83fb1675e875923932e0743e3f05691b62f6ddd28711dddec647467f0aeeb914cc2892aafa493b8c433c06b54675fb3fb4acb306677bff782c6d5b431f91059f078e5e065e92663fefbe84ccd372787011e73b986c246d88759ebbee2e32f3a73944ef413c411b61b6bb8cabbe90c07ecd62ae3a3057d282b9489bc2b1066476ff4bf4e75d1ddeb3b3295442e2d54151bbe8764cc9faacfb81835078c8f9bfdb1a63b6479ce722a965deecef651ed6a430e6f1a540ffb7b2c491fb575347b3719742773779931c3a5d16bc561340e102f63161939ac915f4e08cd5836e37a179579da0ff7a15575b7464dd53f3e9cd9132ae9478d108866522e3e9da4fc39b02ea297b439055745e8e0be4e979b7fa50a8034260152bd04a4e29db5b67724ceb5ced48a6be427dbe3281552ffe7689b3eee55140e18c09fe5e82d9b07560b41b24b21ce1d54a13304321025f9f177852baa5f7b5a91a12415ae1772c63c2bfd825e5df4f51913fabff7818b07179c86af43c314b3af6a4e72cf3626647363bc4b153eb97856356964c9ef6ff2a8b3536c2ce94c16b6a04a3e1ac58f6155006f0525ae63268263dafd55bdb325fcf9f666819a883e07a46cec51e3642c285caf7a1b0e92250c7db0332dde366f2108ff8b24ae09cf81a8b7d1f99bc24c16a2f999e4cef406f788d996d4914c5821bd15478d997ddb10dd34085e3370579f4bd9c0503e8ac6126f74ede289dc82adfe116a35a71c91d990f039562c1bf0de644989e369f91b1897e2ace6c272258a29a075b64f0da25763286c0c830da57f8f672eac7ed5d089c46d5931b982b5660d6c6bb8857c850e43cb2d08b5bac37dd00132e5104d2108814358d5545e2c5247b07895cdc91bb260beae525fc9c076cbb93a5f6b547b5ae530ed23e0a0f78ef2a0eb182bc29754cedfce298bf3a2d590818004b8bae5533d73bda7d1d3445a46f7aca3cfe71d522ac15c5d09c285ac85cff3538f892ef6167b36c9ae6b7a3d7a26b0f5a29965a586fc66f545bd0152c2b15eb8da0fa550bf5e93e2adb0554d3c6dcea9d9d30f8da42963dc8a131aaabe8c74014d8f63344715223251213edcfab31cd832ecdfeadd05b6227d62e45feddebfc0be30204016c3921c1ead77a54ee61179f228e69c621c8c788e56e8615b3a4e50aafc06d461fc8bf3cb31c0b1828ded931f2b19441efecdc7fc3b6fd190a87e8be7ca2a442e48dc48107852730622016a129ead50c225bda268e0cb49a4cf6e9f0bd31066614066bfc21b097599732a01d6015b9414bbb0b6742d83990d400d43752a3f45fe84cfd3f21564d9665773a25b2127be3ae397d832175c039b5303b615eaea0f32d8cae7bb31c518b7d119d429dc6ba5329accd5cfe2503126aa7fadc17101a99f8fcf52279caff58f7f4e46e0a9a5c600017bef2d3a95055feb082070b2f28dd261f868d855f8506d156ef8b6a506d2081e943b396d3e8f8e5f0b5f7259f07c0176499eaf802c45c2e4a1763bd442c90980b06b88c621d14e819cc1a5c54374a5a06bae1237417d60fe9e51a269eb5a83dd0524881b3a140c903c5eee7fc066524c08d29431d4d33cdb68bb8e7e6b11311e00ca7968347a355fdba051d0747fc4e961471e5b2b4ac18705ae1227291b0c6477b41b90d0584f08ed93b9b9dcb069be5ed1870a22587790a388bb8d35fc000b7ecdf6c3802ad5029bf598ebb9ade1ce4169516f4d6371b7a1512f30d25420be513b81c5a07f38d2b3347ba998261b608227b227cab74b70288a7aeee61f0041e79d41bdf44fee1405fb1c7369c0ee7a0b5fc124c56492e9d5cb4c396fdf69fe0b7477f0669fdd6a2fd5de59491ab4086406db65ae6e1780b096f09272d71237179629ee69d9b5bb67cffc056950305ef9f7cf4d3fa85b74f450cee6e8282938fb1d8fb438c1c99303948f846bbccced8b0a01657252c1456d1dbda2286fe1891db139f1fe7f2ea92c38a5b18f67f57ab828fe58188af50d9981aac09b4144c33d60b142ba4217f03a32f1e634075a883b076a186c5ec4354e34aa171b0061b52d5ca8b3c7edaa8111b90e2cbab2983182288441181802ec2cd3557a991ecc2ebce944e2576888d0b80c41915538ac040a4dbf0c822828210174c29f280f3de00b68dc97bc1379bc3f849dd1ff116e6f7375063dde4fab887312ebf52b4bc4051a010fce27f8777945eaef5edbbb8d84247602a64f8243ad3d83dea55e9be92d322d0d9f3e86686175f785c916860d43612a9fc9e9f3eafca5c0fa11af0c70d44921d725c37aa1908000f970fa09d90ea9dda8934f98f7872931dc7c9d307081acaa4ecf6b77b7e868a72bffd07a446dff5a9bcbb2b75087015d56e17916f1ad3326ce1082b1dc7ed7a50962d8ca928506be6d96a9e444e7e054e16c42d3808dfdf53384485c5ca1f5ffe14b45b4eabf0ceeb53f9210e4aa8c145a150360256c64663d9ea5f9c695e6699cb393eafabfa2c3a52237479c11b4b1055079f19d386d0e0b222fec1d0870827424c2a88831c48f5d1b619eb118c22353f9b355b453993c073e68cbaabdf4859a7c5529237b45ce27dab0e794053b1ab60db7a5198f13006a87807233406dabbb455d8e00436d9752ca48d72f6c73ff12d680a27d06c085988ffda3c3dee9087884cb70674c7c87c25ebdb279e0d8d588bdde39fc9cd1b5bd92c13e5f84e24a739797a348f5113e2d96e537be05957b061674f191222a8447a97286400551e3d2a0a88100038b20f5d4540baf70fdede1014267a0f79bfac9f20b3519e23530a28c3b6cf1a1c7cf03ddc569dec93b225a03ec07d01c249de07a6bdca1a1b2ef233043c52ac15229b427ce25125dd71d98071c2f0b71f86b24772b94f30f611dd526518a291272cf79767445cdfece785c0b8237388fa8337746a560985d72e213b1a47037cf3e56d7db7420495962d31bcfeedab2ffa821c28c955df4acc9cf2a7e05e10c62d0d72c8f3d37ca3bdcc90712c04f115a3f9bd1308e1537a285a6f3e68b18207fbf037b6fab5d8d7aacfa1381f045cc6a66c0af330c5fea95df3e54d5b343019d6de79ad49a98f6d5c4a73b66dcbe6721b2da4a89535822eb41451cab80cce226a285e20d9b9f39c0f6123b282232c99dc7544b9399547f036ca610f77e11f53091a29e55c06f0f9d9808d051eefb549dcc06bd44a9915742a90d4b14b00ade6198031977674de7afefff062cb158146d35509bc94ca6d9eb63e1d521ba02413472e15275dc2eec9aab8654c1e827c4270ee980780a3fbab14014b7a66b0cfe4696fea18803b84cdf5ec53aae493487b05b5217e237936e837ef0381b2109a707409d3580a292cba24e63e259cf86b024767b6ba91e09fe75eabfd47dc18912f304316910060d66167dae3cdb673c22f0f60b789ca5a0a8a0df493cf77503e0c450ffc74266c5e6f1a9bca2f4b5c872b90e721d13649926778ba915ed041e3e4b8ef9a615fd743a68df9ee0751bbed757ac0a69b8db26601118ef57173b63475e74bbeb4091de898164b159137f08d8ee796b98f08292bcd27af91cdfff57374ec1e13df9c10861ac74704b3cf3b1a137d19db707166222c2b9f57ec8b7aba28caaa09f5d4892604de2cb7838e9201976df82af375c4bb1703eaa49dd1125f7b2d67734df7a4604541745dacfcb60bfca2baa8a97180ccc8b71d6c62fcf786af96469495ebb76ec1326be3afc54c6ac8c659a6dff7cf316cc3d3c14a84cccc2acab1deeb1302aac6b1401855233f6f1b6887d40207876f0fb1115345ca6fcd6eedeb53d22455a6cc211a6a35fbc0bb0e09b5396c09aba5d6ce618815948eec10d866b452cc2562e0a621959cac1149d98f8ae83fe8c36949203656a849bc6c7a31164dc50d385e68e547b3f8d3a2559bbad42378f13d7d73ed6dd2f716f7dd74a96c2a3bc75e2b1128a1a344fb34631f7271fb16d0935d49a449536d6fd7f69261b31d1943c12520d323e441a7f4fec0ccce7dfb10e58e61951039372a70be2f58e82bd94778fa2bef9ba30abee53c488b6c9567b7bcb6cb317bb0fcd88ff1f8957f722c17aa071ff80af808c4e9bd1c00313caf9c367e9812a55bb328e4fc662742313914e94a79052fb0a8b4cf899f551408737f11971ad666edc2a1eae31b8ffbf34d95e5d16a2a997a5885e6ad5b4b68a68329317ab991ab3d8dfb39429fdc670af012f9aeaf936bb326adda3628ea18532fb95794bf36ebd3615c71411e6fc97dd922c16f9000a69c7cf0ad038b0e85a7870ab7bd1e7d94a0b5d5139683359b5f9d9f80022d9cc28bfcd01a3fa80fa1d2c75f1f092210dd1419a8eeb4f465add88de50b6fab7df4bb746c32523d9579eb6619a2ae64f24a7c2958e2ef679dd830cbd56eac044552dc47e1f553c65d676436c90f8cfbf81356d0657d1513051fe26862837e7fc88e8de41daabb64d8d7f7ed5085a41cddf7a5f89a537dc293897ae4cac6754f167198575b698aafed1e894da816b1e4f535169e7c9d1d745a188580dee3b96e374ff7716a44d0ed0d8fe6bb784eddd8d65d6315843299a50926ed74cdb4fb246f7c977a1dd227a02bdf12da9f81aee4694eecc5464c27d6cabed7757ab2138db17b3efcb7ff83bd63ebc10a704025f94790ce282508e5b015bbcc6a6c70d3eb680ee67b69bd4af2e18727b5db0b5b842d1cd8e81a4a0d5ea25a01540029ddd88179662dddf595de28eee4fe007e3fb26804ee766ce7081c5a28062e1a89e06e3fb49480378749fc7eccddddd1aabfa87e0b625ef8942680e0cdad5578a9b2cb8c0b10ed4c69e3994ac06344ab201b79e768f69803196d0df6b48ec72d951ce0c2f4acd922289ff2a844acf843a2748100c68d2cc25f5a86cfd65315bb5f10258cf9afa8cf3748523270d5454e29ff4321fb6457f79885ddd91f3b82a0280420c828bfb4788f1a5b92270282d1d89db32b9e04c91531052bce7562129941ff9bd53b7f0c355b9d0874990cbe7bed5255f0471faf59a6b1248c4451e58e672883acedd083c9713a217893d2f1aea172fbe949b064c14a080de85e66cf84da96da86b13eb52680161c99e300a96404637bd483d779d0cf6218435a31a60ff738207577218e071711be99e93e3e880dee8e71190f59355125832e0ea52c20a6326e72383b344ca6ddeeb8ee2567da4175af6ae1b699d02587c8dd5e6fd13aa3760f16ed741600f8ad49fce5382c6cde8f662758281f880432ab43ca280e9b44b307d7b6067a1cf3dbbce243491957a61749288081c69bd8fc8cb70db1b99564fc48b0482d04e8f027a1428976f18ed5f8246275455ed3f2335764b8be5e2771f510c6b191eac66caf73a2b284d410f06df60033f988d72166f90bfc16d7bd2f4c220aeb1e47d187134fc1806933814c55972faf8900440b025e2eaa099181bd81565828b6d44c8eafc1360faf81cb408d2b2c303716f9f6516c6b69fb90be99c6349df26555cc931169776c336364daef7240a3b95ffc01c480006fadf3186aad907832777986ff51c50dd3c3eb4af89e6268a2365e35bc75b620664e60b33fbc9bdbbb1281c37f3f6a635eba09c9b94f10df3edbcaac4231a3f40044b1333c3f5fa347ba3904b2989c015a14c0f46e06948fa3dd28744a9237792c9b03cc457fdbdfd25bf2b6b4719f00a53f75e035f6b8ba1cb2ca6bf8d08b733c371eb4077c422b0305f38662a06a4c155e73170c8fca1d0adecdc3aec8b69bad2de514477ee78ba3e59bef0963470de202d9443fc87c7828b235e7bcd8e81024e729a555d76999f5bf698a4ad542a754d3789c3074c4e87359b7cce63ecdf249781304a0a6485559b06debf856b0d1c98600482c95aa71f8cc511e7ff885bafdd90ebb140cf59749ebdf9e2fa14a8586d922f57331907f147d89a6d7cb3af494ddedd7fd9a1abb563a54bf41c78ccc3f8e8b334948d779d393cc2822e714080217b5703ee88cde0824b424560d3f26248c6a08acb3c0a47eeb9e7dc7294027d0b5acf749ced6bd72e740d2224257362fd101b0b9a7b5f975c01eb4f710f3d41ed19cc9c9a372c470cf15b4daa2d735b698e8392206b107795772dc7c1823a0d5bc2de646898d0c31e907f3692da2cb730f4dad9137308297386b2e3b769ef7fd9bc89c034dcd2b86f01e563d6b92365c9f1186aec64d4cef0e9b07b146d1b1eaf33c30efba9ca1a97dd970a5436b67b214fb8e39ecaacdac4fbe732c743588f8623ccd2032d2daf6101df9d3bcff27ebec2bed6c28858f1285b59d6d5112c139271c12b4ff4961fd3be7cc07168edb3f039cb15f878eab12f0184b8c20d239f1675b212096ce8248d1cf103437b108f7c5690e344ef3dcba6a5a4f59322be1c6480359c01480552dd666b8b4f3d639861c1fc81534486f52e329665bc6fa401a59bb3a223405b3e8b4dc8d5b1bfc8b90e16dcedc6fd7478614c38e8850ea5991d1259614a63056947167d6770bd29c219471ce12209900288fa05545d862629a7146aeb1e84c8b30f081b13ba21896a37352fb67e7626acc9c6d8127ddf64a8af06b7c8f57be9776c799f6ac49a8bad915bef5ee0e264b2dc25e02a86339fcc1cfbbdf6365293c76fdbb278d412354da3b3da8201d66908e58501f324f67be0ec3a78601ef11a9d8b9f3523a9e8f83c73b3034c21182fceb5daa0b0d58c3bd5b1aa1cbb74540d965d6c82a16e4a91a4534528e03fb91843adf60d5e9a78bf39961b15219667a63225b457ca643ed0b962ec6f66173ca1d9928f549afa6f790da2a8d8eba991da960880650c367122c037fe7732fa59e9948ceac8cbf3283c63f92bd1a06cd0e00bcd0eace5cc44a3d43f526bd953b7cbea046686d581d982ae4616f46078e0e127a4f7438b4eec9f17b15d5b1975b468bb27acf886fbfc9b46cfadf356d60a5e58e3764003a238ba5c4303f24b345fbeebcd39e96e33a108e4060f9571754264b66da7c97c6bf36ff92e1d2fcebf227392e9b9b6bb12fff0c5d360e1377a7c149e4d9f3b9108efba754ae92d4cabf84b8e68c2e4cc81840da812e54fb3a22df300ba33bcccf1af32b80d8d9f4da74d649f461a2dbe6fa8d234997bea06f14dc905952c9171dd845d1e2c1f6c8483d3215ae6c31030227ac0cac9e470b58a68e1f757e50bf5ea69b240851abc51f60c7cc4f30461389514384f34cec6a59627c579c639783593e9681efa6d2d6285f784fbeee6eeec258315ff81a5f10a5422365325ce25a1618f7193131825345ed606c82960237ead9df1c35d06b8cbec7f058e0fd5b602c36be51bdc5b4ff3ddf47ddd27e7182f5e96337c7eb0b2ede47e6e9b1803c239b7e8056e39ab18b9aa05fa3b9776c47680d0f3671d5446aa3b98d5562829faf9483af093231817d5f6677b1532e0c9b8f54c70969fc52133332d4e78a02ad04505c2d05d02cb2db17eeff21cc8a86c9718ea98c6af296c63d1cb879516a18c458eff4d3c0bef8ee790e980f5b9140abb1c8b58cd8f97d7a446d45b126b12e884dbb33cad9d759c20934fdb1ac5d6eb007034155861c68663595ea74e119b7bf738985f0befa3bc39bc9047409d25662c6cd09aa9977b75edcc43b595971ac02f7ae106609fa672738bfde69115249473dbf5537a73af3b51306df17a291da0941dbc0c7fa4dc4c6c129e8ade4e8fb0f0ca88b85e38eee12cb8dea3ed66c1fa0d2294ae55fb56d6fd72524576fef528d555d32498512a951b96b2f69c1a68312e20fe1eae5662111798a120bfb241c590c9b7f947edac2b2492c96446a6f90d5bf74fdee655aa457818913f1c366d4682d5e19bfdaf9411a34fe6561151e5d29c900ba470849476ddfa1d06f49f133e1b4f0b784342f02f3098488d3016591f33fb4d18a2f56cf35988097c31a696f980d1c03ea13699af5b29fa4fda95610559e63af52f15d41ea702dcfbb1bd7f86496177a0e24238ea583f4a355721a827e88bb0d712074cde425baed6c63898a141b7603816a2f06e30c2c2fc1ff029107eb16c3c021dce802f17f73ade457656994f5f8a243860bd540dc03e68092c99107f7bda57357e0cf217990c899b992cbfa31dc8e91219e1e97f6a8b354d5770fce923af334036735c09ee8aca57b946d92a239ee1d65faf2c0444e4eb488bc67bc5d5c7040cfe948d6cacf9020db9a4cad44091a45fb965804859247c225e37c5c4de2d8c3e29213705a819d8c9efddfba8fb3ce2531a1f0dc5c17691682f99c0b8f9803c837da8034b4982f158047df542d59005533dc9c7bdd670ec7cd44dd8e83a856c186c43623f6dc56a1177af7e62e083714ec41f8e594d04e80ee72da3d733fc25e9e401d4a3e8bba64d3dad4ebed4fa9f9baa5bbc065030cb15801a5560b41e6505a4128bcb7f53b1f717e85c24922c97bd243be085a9a34950c2fe62756e1f905cf4ae0b71e7173430bcc6a152a8f7aa2eea7a175e33ef65b56066c5826baabba4fca0e50d23fe3841ffe0ddeb0380587113fd86239a8cbc3ce55b0993828cb112c32b850ab0d64702cb2deff1751a75af3d87b806d2553ce0c6ad0f5442e9f465a76eecd40b91f23c313ffd6269ff2aaf5ee71f12951471396015faf78553f8f2b3978f0de2b2d224532fce2fb54c7aa524fc95e52f0d3cb4d5eeffe4e8a1b8262fc93a6fe15f36f01ef40a6976c677313c0e4819a72872630bd37d4566405d6714330f079186c92b5124d624df9889aee1663c6587c7458ae571c2dfe1b0da63d056ba2b1871eb8f17d5032aedd440a3e2fd330aefeff0301d0d13817ec6d24f85119036e7c3003687ac5772ee2c66f1ee45a2208d7252b1aadc02bc9e87211b2fddb1c7c3410a7b0fe0ce89462f8b5ae410b9ab1a170e64cd90e1c99cfac72bc0df77692a428f524ce4b5cab98013734632dfd244b73fb0852b96113fe3e080fe11eb9c2b25910067f6d29932bcbf083aaeabf476c89534d89fa346886fc59150d19edfc4798fbfd99e1ca4181a610f48addfb2c70b997e5db018eb4be975b2400b44988775e9480124627999a8c46024fdb9eaaad13b8e8c34e544f66eb46d948bd8b6cf8684f94431429b80d3dd686996c0efbdf04ceed69bc7b830c632f4f02054c4b169b62c27337b37b2898e372954a51a56a4ea00705d3804c77cab6cb94ce6b0897ba36e7af0fb8508dec910eb958fe484f29530e559c437dd368c2d1a4c66c0c8001be1afdec39bf6b8a00d5633a4e3dbb663b132743f51a54b8023b4df6fe4b4ec6f1d78cd1b9d5c1206eed0f290e0b932be297cec4f15ff832a6a82a925c2a2f6f6cb268dc53e260993ddc1e49652ebbd1e9ef9b2435023a99e1535d404ec24a07bb1ef12840c9cbe94ec0fec770f73e862fc40978bd8525d2f315e9a8ec27d136489932ec808f1bc459d73fb2e1cd099c0b232ce0bfe85278278072095e212c4586a6386d3648d514af699c1f1111bbf7de5bcabda59429054905cd04e804da0a9e26a456094597fda5a1463fb1a225cfcf99d9c4383249951b460589ac896eca76b14086245060058b217c6613793e88c3a4b283005a0b2f6082c0620556b28cc067d2406585232a6c8a134c4a1839230970d88187226010025812a562812f498aac50240b93213ef2d2301d7497472aaf1c3d606b6ed894a71ce65c7167f0ac65793afc3c2587ab083a9592c406af2a5894c00727478ce021030c5b884811c30b2b3441a3d4b630295dbe8bff52059896f6590fb9b2bc617bca8bab2cca98ecae1c61525cb45faa4022a4d07b92fbbb5159c813cf255dbf77bb67008bd2e5294a981b7e5e17a2fc905264045b1a025b4222c415589420b0284cc0a22c592205cc891030275c604ea83c21ca0d73f225873839733226e37cf639d9afb297f15127cbe2877383a559768ba2953cf18894dddd07d032c4912c4f9000510311174ca01c511e4266683ac2b285891a7c7042a44c6bb5cba1b7048a51b5e2ba00739243ee72c39cf870c19872cdb02844b9614b4a396c25d8d295ac752b51245a392a89b0a71ceb1742ad2d43fbfe1c7f957ddaad626cc396d02187f2031166eb46ed33dc8aabec79893c314fcc6a2f3f5ce5d8dd5de3bfd8a711e74b29a5d642d739e164723b79ba5d1e499664e2d170b87a1c824c92d56af1ac561e933a12046d6879f8c40fdda83d7057ee1cfab386901c4ba3de911f7d2ccdcfc0e5f22177f9d4903af2a509346bf1dd85834088784797c9f14fa039e290c70b994686dde523c564ffde22471bb10707ac4aaf3acb1e1c302cbdea1c368c8314d816933b138971520688163628f9482282a862e98a0f449e10e143e348122b4e10664aec071fd983902e84f4f014060c163e32ca0b3fa06c71050e2d44f191bf922c1e39ac90a5062558c45c19810f008e88810a8cc8e2c21655f8482db12078a821872725627ce4d790ac9e4cd4892ea9c39bec302845b0273f6e0baa963d02064588ca0a6bc1950c9a1bd6c44a9326395c65d9838a8c0a2a925021a557c49431fb89ace9d34d7e28f1905b7e956f614d86c8524a5ca7b061d481351992676e589320399c7906293cfb27fa092522257c404193947ea0a2788200b96149b8206bb9614944d105538c52fe942f33a667923a5a42ada61697f8ddb9e46e0a3705a41f0e378a3af7f37fb89ff1c77b89877cc65aa943ff51ed4314530fe3ed8b8ffeddfff877ddfb6ff8077c141e423d8873481dea788847ead04f3d0c3c84f453c3978628fd1798febcdcccfde673ff339fc34348db0fd99fbfe11ff91ec7453ce42eece3fb888766bea54e7d9a6f1faff9f6b151d9dc21a41c2a3ce43ef6535f73534801e9a7c3ce7d0add737002ab7d66b11b913a943e072cb05a0a434813689fecb56f1f0ea7907dfb846e24d3f9a82b9f234a62499e11729343fb09b48ff614709fec398ae2212305a2ab434839340d0fb9cffced224d80870f0bf2e7c7d730056e24a0e1ec8bdc47fbf83f191e62c17db2e7b0fb74d17bc639e3336f8e4b82d4a92f6f4b9d58fdcb4154c309fb3c52a7be7ce77e7efd8935e2a1779ea15a9fc3317e68fddb477ec8a37df69d537150c7a4979ff254be89f99df32567b02531108284fcebd70cd6ea9e4be072c53afce56f37381d5ceeed12218532dc73c39680c9599090a418b0210f98b5624f58eb4603b6a44b9658c76c4272e5c61dc5b8f65272fab1b4282c09a249df0a0c892cf2961bb6e4884c475f291720f76faffd4fc53fdb6b1bfe0dfc685f35ec1abd43483f5287c6e93e71dec0d90b905bbaf41967e2cb1bbc823938e0c398848131617a2d547b4aa9867168d69ad4af015392b47d27d5cff2e586290922a372c39404a131639af33319b339bf9a90e49d2451f2e388a2dc34b0a4984acbf3c339e4c9605c71146754c78c1c943d9df78995445c28a09c2d5bf33577285a83eca75e3e88e369d3d6bc7d8eabf19ebb35f7878395bd1a2cd4cadf7bcf5d6bbfe370d84bad9cfa70464efd2af6d47cea5fb26c3e05e6d457c98af1a96fc97af1a997c17dea63dc963ae06da903e3b6545dee5fd8dc973adcd7dc555c71f653d73ecd0d857aa93f10388bc1b8e21e75655c9eaba395bd0eabe28afb2a591f75b8df7ecec81ca6efa83859e83cd6146b8a35c59ab25853966559ac3a0ebd299627fdee9bdc999a629e35c532a6a6d8515396d13c0d2661a32f25873d239a99e2e89263e213c51e26ae26c51e8babf94f334ca7d3f4541ca2bebd9f79fa95d6a751714ff3dfa76ef7ce17724fbfcfe2504895eb7f8f3fec6d9d2a149a59973c7f0665effd9679db36370cfa77ddbd7f64d17ca54f73eb9d1bd849ef0b812341b2686ecfb8aa1a04b8d7fcbbbb3dbdda677772381d63ac29d6146b8a35c59a50119545d7f497e4cf0dbb12a453a9542af56d5f9b344a467966258ac3f9f4e70782c5daa545747e20d0f9816071c823a7344d33ea66ecd18a9aba12ed2ea76eea469729d630fd2b63ae50c12204961e577ee418b96155b8c89df4b22273880c128f3c4fea45ce80ce937e06339cd98438832755fd0c69defbd0fef78dba5ecdeba0f094a8afbd13c3eda74e447db4a98fde7f978323157f1fbf1082b44fe1d033eaadf7a1874323acf6df87333d3c0667000a07cdbcfd191ca47d96adcf6459c31e8377e013f7676305eada534a29ed3265ca90396166c741d96fd9b45eb65748d1fbd47c77f5ebf4ed1552636bb69fb936844dcb66be46acb944489f3773e7ad43d82806ef606a7887cc19b631a50301ba566b1d0fc0122165b8c69517157085d8f84a6ab596e3b2e45a47469633e24a3ecf0562b92c5f06cf8c160d01d8f8fe407410f09c63e5db04005f212d03bbe767599681e0db78a3e19a6d0eebfd809d4d1d006ccf6e83e9598847ac81759d0ec7f6d4a6d4665c696fc196775e229aa6691aa5f8c666af391929a594524a695520cecd6ef42c032daa94b3f35b30477e11d3938e77788ebf0197120bd15ec6b0523a087806531d0cdb535e7f616389901ccf1a15107baac420f7ec3af6c48e5d06aa84a9c9a995660608a67eba582bb69608c967c4ec8b807c4ab50f877c3abdbf10220e5d774d45c08a2e71d5d9a3f2943d5f13d8d066dac5c6b2bfea51affbc3be321cc1f802ac7fbb0a3a0781f5a8576f46bf1bf3c674b94e885a77071eb3e36d73ce338e21eebb212340e3e7d51362d6426f8945e7dfaedcb0265c3944e56ec247eeef868651b646ec9c7e4037b3c3cbe4bedde7d9fed6ba8eb33333931249939a4b2d6e9608a93ef79bf695ab9493bfddc8f79c79e9aa25429ad9e36ec69e9bf89e85f4c4d4ca27427215dc13d0b36af55571555fcbee256243cfb3b5665ab661cdd22742cabe166559d69dc595eafe60432f672ad0ef063ccf89854cfbaf0e029ee50dadd22537ac4a906c80dcb02a42641b5721d8f522594adfaa409c2259de0d78ce3ec342ba4e9221298355f191fb9b1d8e960889f3b8cfbb477bee3ddb2f7befc6ef2e97511cf4318bcead7cff0667e49133f7ec548b3102f1e56b1f0e0ce08bfa6e7c204c8b6bb83d588f455de7cc88af0fd7072965aceb9c560e5bd9ab8cb493bd8406189238112186892584f8810a268eb4e0062658885ca8082ee357a76e5e4d8bf2032152ea5a36a78c3d9ea726a5c4937a7645d7d76bc839b36c3a0ad93bfbaeeb761054c8334c0e4d70f718bd3bc6efd9d46528d5e4bc0ce6c40f5816250fe34cde41fc383de631ed8806dfef57246b83d8b32476bf23893d31be93628f0e9e1cd4bdeafbbd4b7b90c1f70fc5ee4721f6bcf87e1224ab3a81dfa86f1dbd9483505f438547b27c0927b26a8e0c9aefe7ae336d705d83eb4b52c7dfe6fbdd87ff30721dfc28f6c0f87e0fa2c279d50d6fbee36ec8d3bdccb67b9cbbe3e60af1648b3d29aebcc39ee47a97def18f711dc98b96ea6dab354482f720ca7981c376c26163145e5c2d83d78bc495d7a0be06858a4396befe8be08fc396b5115736b148cea5c2722f59383932380c5e2dd35c2d7730ae8e7eca41f5370e48b22e103914f726b407307a6c9efb0f62cf8be7de866469f0dce790ac0d9efb0ac41e1aee5baa648d04650cc9490e87e6ba91abc1f523a943f32d1c1cb6785619e070f531f0922fd5e0d056554d4d0d0e6b3e8c3edc49efc47f715d87eb46d7fb9abbca34d773fc115917883ac41e0d58dbb9a7ba335f736ba6a9405cc54fd54f5d1bf60dbb4b68419e1c461fd58f86b891fbf01f3731d574abdc2ad78a13b9567e00fd07551120d95f5504c8e572b95c2ebd73992ed3651ad24c72e6ad6e1bae97832376fbba6d31e6d83493737e907fe4513d0ad1dd29acff9da205e62cbc514077103f8c91939d6addd26cd5f8c0c61521aebc1bb2720c2d38bbaeebba6e66ff3a7bc18bf3546bd5f5d24369491224dd59c69443842c495ccda43128cc227135bbbbdb8810edc4465c4d296c8893271857731a7d7162caf3c88ddc29889be56eb1aab7a119c1f3bcef6b6c50dff7d6f3666666beafb1f9cf7236a8bbc3bbf7a0ae0b81b217515dc7715cf7379f053db0e3de3bef61bc98f9ed7637cc91bb6de3800ad97b9adfb6df60bc37c3792a8e5361306f4033df73df75dc0365efe30c0e8540efd260ae7b475214d6016e9789c9875801cad2f170b15c2db02daeded9be7b07a62506d3e2d45d2eb7cac5f279df77432130de38c2cca7baf780b2070265f95d67700a7b287c83db70fc0f87df8743a02c04aa2c07026594eac5871b58ffcb91e56fffdd10287fa0ad5f238640f5bf0ff5a064796fd9ab806c3430db0881f90b2bfd9ad7be4f754302e4ecebadaaeffbb01068e3935fc71359adfc7d0fcaeffb7ab36d55ca1b15ec1dd046e56949f91de87df51ba12a659edc422068a377fa5b014503a3772c8cf7d6912374ef8425a8ac55d1dc2bf74aad5fc395ada84ff5ce0de7fdcd76b38df07df77293f246efc8afdfbdd3bdd33b40badf34faddc67567b9f91a7dd7f08d89bbb9be92e3f438a5ede7f777bb77384dd3fe0609bdd35f42eff4d4708ddee9cf70ef4c9edee9ffcc337bc7f64ee73576b750307b9e6729a54060ea6d9ea6a6a60628d37c0a87402008e36e0173cddd52530303468d4a150304ef169a1b0201e550080473900a044110ec9dd4833c4038315c2da9abe56ab95a46b0f6c5ab70f78efd17b7777a07053da3936ac5e18c5c371a1b8d8dc64663a3b15d17d8ac769665af853504311dedd4755d4fd161a1767a6a27a71c7ad1b5c276b43ec7b5d35396b8c678c49d72d0fc2cbbee9401f7b78bdd38ec94c3ecb5e950b4a755d3bed63abbae622abb8f3222cb3e7dc9423d7d7b65449d8a6b45e15f75b56ad8c3737a512a05cd3f21cb3ee7f4a71c87779090fdfd7635e7394addbd843d2e4f12c5eb734da9c2c5b88d2a8808d2848b939718ea0c5e68bed80c494d5650c2045d7817615e5c025c4e1c487321e2e5398cc00616bc5c3d851233b80e557415f7800f658870e1f2241c9737692596f00f2cc0e522e8245a78f26ae27582282f5a009723d14c4cd16338701d79bde095840745cbe54f806926545eee8286628baba05de0247841e30222069699262e394051c30c30323d9a943625b46012822846b6ecd0a3cb2b621153f4812ab8c0e28a18199a58b0405c6078f8a1072bc2fcd0e525c58ecb8557149a1399d7133cc8702d7981794549b9cabc3a70657102c10d8e14c409ecaa32948092830f263ea6a82086252830517e446105882546ca7c91f242f2da781c19e14296a7228074e101189a5640e38029882841c68b101717ae1faf23925e59903982e1d5e5bc0b8bbea20a0baf03482f4ebc2811f112868b22b5e8041d4f529628483e20439025a521af4d7371b1f26a80070610806b4844d570c58b01ae1f1c05312c7c8766d2f2721fadc45f0070b916ae76e20d832da0f80b57665c7d840c38b8104df4861988d8904390275ac8bc3004b70193252d428240310190255e345c50689922e425e6d50413232aaf07b810d0457475931514597a85e0a581ce062ea97231f1b2e2e50e7011c170c5e0e53d9e5e0170b1944c2a6004e89807400b323dbc64d182284e2e70c18207d2141f6c680190277420410ffd820cbc085f725dbd1483178faba904435c712c2ea59ff4160fc305122fa6573f39316385577b5182f2025d317c966db8d6eb655fb3169860a038146a7971453522289e5238cb30e89a2af9022b0a70791059fa8b111314bd52f0b27169f16a588d112ba76100d1e5567420892a4b98f00084952b7c321698a6e4ec73228bc6277b191e6802db610544f860e464a4e82d725ec8aae4b8105fdd90f654c2089ee8f2440f297db0a13c42d23a92436c489d25c902bf79a3d819441a8eae311bb76972883c7215893dd9101924f66cdfb3b5722b7b20c98a2ea7560c1d49d8ca492b89c3d623f970c8237f2f7f7e3635efe7bdc14125ea359c610ddfdca0afdde0a0a9140e3dca399433efe77777f0f0b06fb9e25de2cac9bf30f909f4049ae77c2a7f070f57d65e137227158cc28c8323d65df96fcc868ea48524c7a7da938791463818ba18635be84f6401451b917581a8e3af7d9c1ec87095b3952c2b67acf1810917065fe25b1752ba519a446a20b26ac4123ea8b19241a555fdc41cde03c51eef49d080f7e0c1613b95e06114e2caaf09526c68b355c59e0dbb91223c22689c8cff356c7c20856d5a37555ce588ab9fa813a9586a43041a24eaf86bfe5edc7670624c1e406e981341ead72c977c8cdcb66dabb5d65a37bacdd722515c7974ad9248236f64658fa8133fdaedab558a3d9296493233838ad265a5118eeb9e93478dc3da43ca9427511c34f35e5c2199690f2e1396fe16ae66cca066fc48b2a277a45dace11d5e264c3dbd3738b659f31553dcbda3fa8a6f70d87cc53bbc8c8daa068732d71d4399aa90eba75ede90470afb962b5d9cbe38938e7ee2b4a8587b158ce80a8cad54c89db23f79988985dc294b2c55de7d9136d87076313a0abd2e5f624f2719994652fe5276a5d6aa358db2944f734813369c4563b20c8566e4386616cd1e4f31cc75b2a15fc9f2ef141b4a1f597e2889624cfa903f624fc4f18b34f217ae30c1852cff7eb1ee8aab3171e51aa535628c31c61869744522a72e5bae3861438f652fcadd3235137a8ca62026714095131be26429278e0a74f709766dbd59dfbd7fe73804caf33bed3bad831cbfc986aaacaa19b64fd8f0a57ffb8c2e7167577438f123eba30a94df4b9967185469ee4672d0cf381b223853d636daa22fb3a4bfc9ec52ec45714514aebeda903a8e42bd39130766c31c19d17f76d03af1bd59552b81be86b3cb7d07ab8ae94f7aa3b0210e759cd81336941c3bba5d151433d43e54e54cfb9eaf952953e629cb97339371a8544db68541e998aa19010000b314000028100c86444281502c1e1827513d1480098f9e3e603a1608439120063110843000c2300082000002200c020006c20ce246170be3d2362a2f9341970dc22e25725701bac466056c32f833cd9a10ca55a3fd7864a66b70b7dbf20a87ccd266cad6205a950a2c51fd05aa12b3f5cbefa31fbabfc144a95471f977fea6f9479494589a51575c694be5fa2ffe47f9f9ff78fd90fb897f913ff9a604382cf9afca14a177a3e9d79c7f816689049a81148d82eee6f6a4488ae0f88534291ba5965f68e26431fd86f52f5c97e05595fc547f31fe06054ae73487f225382be8ff025fa5ec9265453a6be2169411b3d7c2d512418a6abf6a6a627cf9c5e75fa82b1d82198894e2d920c24bf04dd4eff9c7861f41567a7af5fd7df563f74f902c2d57ddfd5e044a634d483fafce95e1f4c7f167c564108eba9a940b07fe02a1125783f87599263ecd747e611179406f0e10c6763e7d853d507776e174e9e03285986f9027f36a4b69e72085bb95130aead9425b69a6e1e047105afab70134556a33a06fe05e135d76fb76c23fa221a56e43fef9f62f242d55b4b5404d6933b6705c1a6ab9f7239097ced428fc95d8bf0a6225f926e2cff933ff70fd7998121868973f16a605e65405fc95fc4b1e3cfc18fcb4c27e9f8f9001306cfb7f849925c218c2616968d5214d1fc6088b90b5d525b452f00129872fc3acf41d56615942d78afb6f04a31463c47fd03f1dff8aeba5a815c03f9ebf805b82b490fac53125d0b2b3fd17284bc45795df5280606381608f51e1c6deed68ff0e1e943e17e6fe027c09a515f77f724c297611fc1a6e3af0ae4ff90fb24b35cdfe1c1dca2660ee62bddf11c47a3085ffcfe6bf3057fa5315fc2bf9997c7eec8ffe07dfcfb35f7bff044969c9d59ddf3b3f76ff84d3255394f0ff2bd694625b057fa87fcebff62fcd2f9b4037d8f811c44a4ea9ffffefbfc38f89c920999ddb64e04be1f48f17c37f0733029fee0e4498fb53678e31826114f22560ad025709a971ff1dffd4ff1245966aca36a253cab2f67ff1e7913f06f8a5e8ac03092575b5fb0fd68f205b7aaafafffd7fecff0d9012931a845da52e15f18fdd7f602e8d5eb9fb1b882d918925f895fed736005e825b19f117384bd85616bf03cb528c35834b69e1e2f1cf2020a578d781e8927b0dfcff40c3ee25f1aad8dbd014d4e8fd72fccc7e81e6089d2fbb2272d837dfda3abf21bf931f2b3fe4fc0b1b2503ae57ff1aa02ac9a90afe947e06f78ffdd5fe30fc7cfb71f921f213f417fdc9f34f802b55b239105a72aa3a332d84b390fe7afc1b8429c9bc843f87fe15c229c56615a04b06d8ab260751d613abfa654c0130498957169dd1fb9605e2a74cda57401ba13f6ad161e1f545a2451de05b3f488c5f18d3e767c756d0d735b9348c1f7ea2bec54d172b6131b46856afc2ed73d1cfcf966ba0943c1c8e1b10a744f8644d625bcf8dbb9f809b3a6aa4d4855a11a814c53b94925b6595b7d47940120fe29bd9fd088ad27155e56f99dffc13f8c3fb37c02e79d62a1e96184435502b55a619144b435a9a1ff6cff4b3c084e013a5dcb4c0e4144289a832d0d8085b55ff3780add91d804a0bda1a9a0b02128efa0be62df388b8b0878d0d653240b01a24b7a8a526485e12eeb391c36ca409658cc9011c9740721cacaa12b6dd4a5a1e584d74bf43dbefe638e78c431b0ebe828e30676e6fa671b01805904591d1d99e9ee88ff4853fab9ce78cebb1c695e3f2a2cbd3aae36707fa7018a167de0e653396ea410ed040790913be2de086d501639f0de3fd1291066522f88ca82e96ae17d775e26b49f81275e1be5b21e4e8b062a0d2fc007ced2f8ec0ed52871a0faa790f5b62051a85da6c5aeda2c8737b2faa80b695a74065d812c7124fb486a71744ff6c43ea5c5ea79157c1ab66ed3e05c75612bc64be1d30de30fd39c4df3e4068d7384b6ed4ea5836201add0cfdd5d71da5d56d16dbbe37133e94caa5189c7d26688ecd28120ac9c45383a0131ac08fbd3e56025d4048e422b5e603933f61695c7685fa025a19359cc836b4358feb71b78ef466390e7119b26f87ef84c537a2f6fae80661b02e2259f204e86ce98f49617859b259ed3c1948d6ae54e7d30160924a0d32e9d1048ca19bd28721ea5721b6039572cc37b932744096888cb33b9a36e06338e7e56dfaacd2f074679457ed6bba57180c30f9420342ee4b24749b3169a3348627cec372e0e427e260de13beb3e549919b8f44ef6ed77edaa841d484c93a4ce5219645b804c24536f9e990d5d622f5d4d09a3bc3a77834b7442443f0adcc0a634f482f44d67287e057b890d2d2781391a6382856496f0abf23176d028cc69b3c5344e32b9d81458421e30e4d16a853d9d36467887691a257b1f907cc437bd1cf5d79e32c7b8aec2ca809542bdf1f4f4082917f60efbafb3622e3810e7e2b6322c20862c401fd664eb9b6a563ad3ee37375e404342bca084c9ea4ce6eefe21224d2e36e6f6504931ff581c2c871124e89261710d648e104e416ee59eb0fa3ab48c076bc8cc2d033821caf09258e85ab338849beda1e4a50aa5d480dd052525d542333e48955c61b9e94002a614d9e423c17610c38d8af66238dc8814a5ddfef993fd27172b601e06aae10048a993d1d5d17955b3e40cec70351658e2205d8b80684619affdc0a70c789ff086fcb7fe4dec1cbcdb122ff3afd4f09fd6e5a2c595a0a1d3b00fd6fb77ce222e9fcb9b614096bf76cfc9a97a1707b177ab871af43203afde4c3c8e3680d00dd76bb6f6efa6e696f0bdcf153d9dc41e2b7087e78f638796201b225055a8801672b295840f101c5f0c1ac0da72947746dc158412f9324056131b439bf735f6275aa312faf23023eb7602e00896c2ce408c9fa87e54ae0f9fe5ff6c6c32a5f58748e407e05552c8d41559d4a0d579fba9cd601d53f87ef3d507d4642733f237374ec5a1b28c0ab1332b6cce679793fc2d8c1608b2f8501df910c72d018df8ee60fbc26ff60f42d646619c58cb932fcc892164a481705a20fe7e0153b79e02cf08493a414013c01d6ddeb6accc4c02feadcc8de020dc214f629eab4327518c9ab43e1e8c9b019802cc4c0ae992c4668015b822e3dd45beb9c352d2322bc2667d03b2c0ba0f4a383ef9f5fec691bf970c8674033ad0f0d36bfe51bbb701e23e62ff2c26a69eb169f295197fea29876bee5c68a6331a013a4a75931209368dfcb94ccb9820acbd33a4060c27129ce95338da1c76fca122edf49449851c027c8c3c8196b8e9eda5cf7409281e7f378b663321217d85959a6664ad496ec664a9c9545d38ab3c301063bde98b09a2a59386bff8eca12b541006b031da65c43cfea120c266b0a051a2b407206fbd3236b2bffed3894055c2a806591aa8d8153b061336235661999f5b71b4e5690496c61141541f738437472d3c6a48fc129ff461d75897aafb92d7cb086e195c5f4a8a4afe09bbe47a9b7c30ba1e7c8c10c4950dbb2ddb02e16df2ebcd745b44373c085798620b8da1d6e665cea3c1d7faeae3ba654b54cd8796099fc871064489bce28bbb2742a26eaf861719e83e2c8b62773af386a0b9c635682b4a64cbdc80bdc838d0745f18ee48fa9c98f96da23c4c88c2e659c1170a6c400c927655294434234192a34d5998357f9c158d4d3d04dfd5074d7babac811999843f3a38d365de01dd394847d3bfe96e8829ece9300bf0f2354bc50c5557d338223aed176c57b2d0f94b0970b8bef37aba4654ad587ccbb415e1af6162ff17b39208a95951ffd9e8b5c2206654d9488b51144311b21d222bcc17e5432911f45dcc03947da1207a57e7b8df9d436ba92afeaa1464ccf3e3f583dda79c03d19afaf939779c17761bfba1d3e87d7638128522b6ee1252cbb6fafae7097a01977dd8c986bc540741c14842265846a5b29d0e922a02673f9325169ca8764aba87861e70f994f015d423cd73694feb4c69b8532b40411088b00991f2d5d252f40e6d51eb78191cb34ebfc22103814f48a8c7ad645a936d524ba8471c2c9a8b2168b01d88ddd973c48ab093fe3715c0f9a5b2bf817c70deba2baf3ab0d35013687f83b9e3e080354ddaf1f77bca877557b6c8706a9584e53a48ad409592d529c7762078549dc9446786c9ff5cca4d250988695437952eb50c2499e7f6b1aa11f2556d7a50cf201afd7c78c82401fa224dc32031bed2692f8247723b05a61ddba1aba835c411c7427c247f53878ab8acd719018d3f47837de167026ed1d143121e771b60676901e91b55240785f5ac730eb61b483952d3b0e0869528bb57f33e1e3b1f32dda1346983b1baa105284754780b825db3c758d792aacf85987aa704f232186e8e4bda47ce47635ff2382ae1aa370f72b00cf3fcf49747cba857649c2b02a84a6488a08cdeac6b4b2fb602a4639f604dc2e1feb29f33e8fe131df37ea4d695802ec31f18ec438c9624672b1c309a6b3801f938670156e7a749025a34761a0cc5142b1ead8ae7532a393a8beb2c92b9ba71ddc18c0b6a9b1faabe1f7b6143666c6c7d844299a63efacde2d5fa244f0c0755197efa1c0b21dfb19a2bb1755a69e646fb208636dd16efea42a084cfec313e19fba21d0734d17e503daac97566d2cc4d59b552085d6e934d24eb9b1e3b37dc5b0731b6a7686f1987d443db2bcc03bf06c441ebb73b4c65ad48daccceb60dda6a37ce0599fcfa6335e7e617640ee749415c7842d530b7fc046608f796f7516a80dbdcd44fbea938ae98efbb1cad1d617ee43243cf08899f292ee0133ccd9bda43fb21b6baeb71fbec2a28132a6d40c506a4790d333e038bc8b2826ad1e0b5b75042d5437bcaa772eb7e4670bce9e4fd4d6394caafc4447722f0e2b28cafcb29360695db89d6d5b2c25c79ea58d6989c0684633e16c7915edcf7c0af04916e41c031848e7004ef70ea44c7984094d0acae114d273e1eac62e8495e3caacd43276901ad30722294a5dc656f84732fe1a7424de72f380b54f38ed68419ca3cbb1ab5a303de3df3f2c5a82387170ac2d5a83b49cbf1b03af1c5eacd34bcee70d47a1b866d668f2548fd0b1374240274b1b7651a8776a58d6b9218e48cbcbaaaa8151b78d64b8329c4cb3f3dad30f368f72db2982c2daba0bcc8a1ef56d8cb842bacfb88a56ab33fb4eb9022035383b2f0e0ad65179eb8973e200d76111189ed79b8b4897dfe9000ec06ab5b9c4f4d4a97d291292b9b97c19a0a24e2f8497495d15f919c4593825337e30979ff915560900db4602a2c3f994b106c317316fcb63ee6b5e3478fd971bc180d6a39db6c59d83dd5929a8ebf4b8a97b8e90d1f8c3cc33e6ee63d80a302c9120b3bf1fc1a3786b0dade79e21cf953305e362221aa2216f01111471a45611196e78b313390036e48510316b270ff5678753f32c5df2ff864e7ea2c5fe7d018404afc75bcf77b1443303482910124f97768386b361f3a1ef0e2a00d28678a9f8be73739110126d56cfca9cd7e7704316638f714040d5e2b8810ccc2e74305f43a7f3438790787c54b2f73b9a82710cb5889380d8a1a69e22327ff4acdb7db91bc55963cf628a493f303696e6fd06874a41099dc6f16d351d70709c03348b69dc4f49527aa14fbf765cdb3bc783a4dd6999c8fe1492bce710e0b196e9ed98cd050dd16ba2cd76c6b122930c096f97479e7de41634567e684ee8542b7edc4d96ae9e09fc1da691b59669416a3612c96205948d98a8d271310aaf6916c7a77267aad4b511fe5e9b0a10d9d5bf0136d7358592c9c2f68c5e877f4300519bfaf2f0e702d0429b814467e89821a9adc79c9a8ff192a6bb6a310d01f3dc23700ea711aebfdf31d0f18b39519311c433ec8f8d5a88936889db94b371303e7e1407d78d3fc5a4d4f191016f6ea7ab927205a3bd3ce5bdb4abaa85b2dcf4a8a926d5d080bd16efa09ffd24837b47a075c041e60a247454df8bd87ce808397ec20a38db1e7bead7c12a558b8f42d021e669ec3c24e8ecd34c9c8a0378473a80ae46fe29d005116c004eb3a0de3692652a126ab9e51b2105e1276a23a0a019576659cf29bc752b4062adecc7daef1b29695fc073151a80cb0081e0868162f41b77dfb05fe290451182f63c25498e32cf476f24c271aeb711b239f10bf98229af4505790f33346f585e13a37b45cfebe6a8b816a3d64400bbe0a5f6280e7d83b011e6678d4153977a7d0fabb58bacd25fe7c62ea51ff3a1e121dc051a9b7766ab68ca10843b5e72320b57288a6824521578f98c76f1e0c00cdb7cee4c70e7b1b659dcafded535ea79f7ba795ae1d5925baf42621e747d22b780a04282394a9b0d54eefc06cf5e60e9c40cdbfec006aeb05c123759b00240c2a81ed956b327f4547395b80e54d7429b2d51aebed2639e35b8960714e7d84271f1af28ca84d5bc81e1a91bfc1ac5b28a58ec9bdfb58e5dfa29476c68767875561bf910f02383de53e29aa7940acc8cc6df502c98e0b85986e226aaa9837ab093bf025d80af79ad287cca60ecf73844c1cb38532e4d047de6791760600fe486f1b542fc42be94e609d8c457a940e2717a9670bfd5e8d9aeded8fff1a0ae56031f18acb7d5a9ace147ed23400ca400093c4d90897f4ab2fafce4bbb709eb358e81972d83c1296d2e2882347ed1d085c8ee54e0d311111d952db364c63aa850057b5b11e90a11d351094265b0660f6dfee1c31813319bda38116b150ccdc1c3556ac556700c5ea6c536ca965a0b8bb44095f9f06db5e49124b53880c6c317252f859cf1707920c4d2860ae59bebbf24e33259248d72534f826a6b6308d86338b5d375bc871c9f0f3156c06d9dc30fd65cc23b927de4e8f1ef137e941c6b5d5fe82aef7233e908cc97c3bb07beb49859eb896c581f8c8f46cf766b39663fdcf3fadb6bdc2817c6a06b63cdf6c2b61a76e8d77693e7b563af95c4980c44bde420a2746ce388b54762f7c4a9dcc4b67960cde3cbd59131f5277449e5582d1c781f9f0987aea216f8dace17c4d0c91c1dbac624c149a13686e69e5ccac166b268414a46980a3be73ebf9722ea00501da076b620c1d27e81718d72d7c620320758419d0e5c1e8d9695abc09368bb3579a2b7e7a3a3fb4668be657911314a8cbd22274eb4b0dbfcd9f70b193d2ac056e460e0a52944088d280f001522f2262a293320d0034fc1a5554ec294f8c37614b7806efa720463e184387a21124af97639dac412ce879ca30b103ea50846f00ca786af1d2c8b3e969f4bf3949b6c995c5b24f26d8e582902442e01d2dd99be666b712d46e0e701856fd614b143f8b5c47b10ae6abbc59b7dd87daab913ccd6853722411cfa66b28db714ea4b5ca0cf0337e56f59768d4de98b4dad08efecbfa69259c6dc7fa252213ff3a6289c141285a5f87b1cb793c7825f6d5d819b9ad6833aee81140c26ab293482bbf059a5614eb99a22e48aab41342514f7069cc834d68b5e28e64c551f0aec3cf6637b65f8d013304136e66063969828789247eb21e282c503f10e12d3cd0f2a69cb7d65caf2505cc02c1fa6b7e25ae16f773a8720f09cb4806024a3a3c6cf5311c36050e9298579a87f0f4c54310c50838691d7568c5f8f974945a8dc31f324a29fe2749c2055184ed7610ef01d5ee3fe0af1299216d25be2ea68c615cf19944feae231c5735cec1a3168a44ad030de791a15e2274a875a47c16196a16e9c0745e78b187a72d33f228a0bbd61eff1752e3715c10870ef4b1c466641b6cb2f6f59f312d160424c41ddbbedab3a7b5a38055ef901c18f4de19d01279d92dbd50cecf6b2cab64e2e227ea186ee0e9054439a9a6464084e4c4885d348c2f8ac4deda4e4360aafba52bbb7224b28a9e026569a95a71428d2d1ce4dc0f94f276dcdfe42c09ed8a3c3b83202591e81f04a6bbfd7bd46dbcd9b65cbd62a0bcbae97a0cd3d387fdb448c5feb5bc0d89e8abf67a75aa49561ff82ee25e1557f548539fdbaf32027884ae1b4b3320e672a0e17eba9864c448e81f299123b3e4065747753ec74ab1a5fda394f9bafbb21e28cdeab4e6635465f3af536d03e1f4bbf9741361645d32a336b1629df6d108eabeb371708043a049bd50c765532bc773f3ff9386d86523d51f31b6625a4414832411a4cad266be6c39f3ca923749d0a73679ff22757e7e56eeb0ae7b37518d173bc9adc60c7c2ac5ca0293dc05a0aaa1fbb7fd561fa84615cd2a3c9530ff42537800d08ddeef0af96dbfbea94b5c519c1eeab97f4006525a06dd5bbb0c673d3aec29c30dbf69726125b43add05a547e8e52ad8eda8f329efc0240ea19a9595bd90f3333fcbfa4e9ff8b1cbd26467346d1c9b2893642d77a56b555910bec2cb9b469ef794b6c424a8d3d185e67e91b584b1e0b6d8ad815b22e734eefaadfe3a08a390f15481e7bad38acf962983ad3ecaaa2245db3f529661f5f3275abb289b07a3cc5795bfd9ab5845991266734155cc5160ca0aa8660bfe9b6e43a8a85fd79b2c6151b25db2dd9a1d5c825759e38933dba4e9f8af5bfa45479f8c4fa0f88853e732aa759c5fa710f0460edaf4efe3d972aa67659395e58fcc5fac1acf37729a796092487592e76895741d0b37e045eee496fa2541d2940883f96310297f5d3f4a7cdfdfc6ec01221eaf7e29b6db4789447c8d572df0271a11738543f3f718a54d68ff725b92e13241c46c8035ed7974e5b69153bff8d46cc7dd4c7dbd34b004965ca195ff822c7946b172451cf4bf9bba615f82589bdc856ce3750286990cbfa6d5e890010e8f561c1e72711c06a1cfc4838a1894400baa0768440e5eb29c014ba398b7468869b448025df21f49181fa65dd2100e54e095198db62afdb564fd9301201f4f791818fefc40f2262de00d8ef969fd1bd6cc5fa28226abfd92a8ded0351903ef177ef7992e5049a747126644acd070a2402684c93f612360403b0c50136944a7beb98e584b66030c2ea0398216b9f432c01ffde03166c6fa71d8668da090ea4f9855a02c8a4e9d7f268a0d62b1681143f22a1e63f2ac56a614b176cd568ffed547c2483ff5d1201bc8a5ebfdbf664d2cd1e110f042b33c5bfa10a121edd32be98f2946b05a9f902a918347b4df3a40a2ec717e4b7d0d85b28295fac9fed050c1f410c5a729b9c2f982ab967d3999a796571d572befc3f7ecf05ce123726b825da1c918173f4870b94ff6ac1aa8670542a40cc62fb42f6711fc43cc7eca3216d73cc0294bc9947a1f1019b00cef666a182d33e0467137b9d25405d4baef55fb7af409673fa417049326500935de926104d26fa94af405a96fb9093651bd997de0a6d2ef1ad10f6ebcb168d7e1024dd146396de2acda5fe0c795e447dac6a2b10070b9ee6c60a63d6714c2236dc341a040af5eeffc21062dbc245f99ea0639e5b253eb4af68c0f4baea0685b7f17f0a403bb988ee68f3b899e35bcb01812c4c90dba0c8b122efb556f87acd752c310cc458774d1a8090832380def981558a479cfcb4b63a63990cde8117bc1715dcc53053441036e90614791d6209dd4fe620511761973db5d8df92d46d24ad4aa0d3e6e07482b766eb98c8c81b7b4086c54d93d1a0a2e03a14e256fea54d20e3ae11291fb171017e5d8613020e1e8968862cea686460ccabb1219d1001628f889bcc72b051ca9400acf1e2bd32d1534571299700d97aab4cbf217f250fe35923f457af40315f716ff525932734ee2fc879625456a8bdd4ac49910662e5ad952896b99b2ecf60945ee85e4862b1d949ceea5e2be160b03dfe4391c9223bc244824b4b29263529d0cb4dc06fc322cda439efd422cdf028589ef701f77a1d3976f8b5ee016761ebe7e9ebe81620dc6f44485e38bfcb6ec0f536bf0758ed61b2a833f1509fb35257e66b67ad7202112708a1f39f4f9aaa9b8bd02bd3430262cb8dc83ca16e67cdbbf40c1d51f02da3779de9c33d80d8684979a66af9b3b732f8684a12c0d44ec8e4d858b33408841abb9712b87c3f3ee86c631a7cc06842f2eb3e254c084820c245d0340b406c04f7a10560a6163f1df4ecea860cccc718f34a18050e6e68823dbdf2ef47832c7954e93de65ef21f5ee5232d011010407a4edd68dc55bdb14f8298b5df2f17cb32222becd657df2bfe10eedf8a9731dfee0c86aa5885e9aaa3a451f775c3b25045a41df315cee5be35b5a2e3b2e93d420dacabf1e3f5f7be4219dffddf58752d9152ba92f31a9d915e4413acc6b3e4dbc46100d10299310b8d3a96f717267c904defb3903d484480e1636f69ad16e995f6aa60d1c3053efac889a302412a8dda60048363121a0ff105812d80d4a8a9ef7cf7e9874209ca5d1f754fdcd6d9fca08ca0bbc7481469cb00c709ee8f0603867d477930263539a9f09dcbf18058a801888bce09fdc1a403e4a1aaf25d8670a2401c2b4a4e6df979367a78db3ec3600e01a81bb0350a8ba54c856619fa07f3905f9c64417e2f7c83592be3df2454070612e2895a63a145aa68698ecf66cd57b7daca199edea72a561999cb9a818526e4753559685cf3d89a66a12b6e8efb602eb7a2e911ef212a39b0d423ecd9fb50b21e1cda0957a1092829fd994715f9d517da1c51eac3b1f3877923e7906e22384d038aab7f600a6f91681025044251dccc2aac337294a01c28523a68649ae004f008291406a2a9429abeaee6de1345f8e0df7622ec785d123593ee0a70ee75ec3cd0de3e9876decafe7a5171662f98437358fe7522a03488047fc4a07d3d9613d67c367dce170602cad39ad36842f97aa8ca68f60161301c124d5ea64d3306914e168ffe258f42d26d4dc1282f5ecb7c06067c3ab852058a33c606ae6c837d14fb764ee684d0cd694aef416779f3842f377b331bc5d54a78de366ae6c718082569e02fedf8b3a55971df296f8aa71a08dbd974d70bd00b6c142e6dd77a62c3fa859aa1a5f41e09bf21c87eb63aa6f1c4f4cbc7483e3f78551088a83137f65914e2f830ad9976ef57be384fcf76bf5a5ccad01f15e474a9abd1190bb808378d7dbe514816b07976a26890cb13957f582ddbd3129f1d5d9c24ebafd81376f62a97ea172960ef971e81d073473166becfbe4db6177819ad8368fee3a6f7d650a7ffe054a52d68cf656c41c32129eee835abff0e583c6b8500d70d33d22b3b3e2686dc8c3200b1123cf9a524aacbb2267ceb528f582bb767a22b8c20b61619c0c23b367d41dbc360b5e18c7a94dc4fa3442b880a6a0316a566f954166c3f20cf482ed5c50743f91845128e228ab550762ffe8f02b15f10d3e02e6b4444bdec7cd2beadb6c80155c661bfdcbb6c54f881e446938d58f23032fda0d9cc492ed0be8ba377c0107fb42b820f9dd80f9209bb320f86c5f17461f3b7488446ff244b915819c1cf118e0befb700d7e263ce1a4b77eb9dd9345fc5dd4597243c9091cb457dce5ee2800689e1aaadd15671fea80181fa750658f1698a0a8cd052bc04f87bf9939ab2bc110bb7ca6edc533b724fcbb5e62022e734f55e79fa513b314100c31a32744a31e0af142efdd62a072640a02c03a4177b4430eb916117725a923816e79501838f0ed44f1a3264f08ce5e218f923719b1e8ec016686059e1b45d154f2d8c779bca763b11ca96a565b1ae1c165f5a1c4fac7a5d1c8e616b5db3b44b5b0890c137602f72e24f36bcb28f09887ebdc73b98246cfc1886dd1d3dbb6a508f3fd6547dafac87dca0feb42827ff64eef7eafb3ee392489630fb61bbbe321bb81aa00d85e4a72d4d6964dcec8edd5b88edd5b046c8a400bd6221ea5c026fe1eb46cfff23afeb4582dca65791e386b46190fdbfd2faee1fade71b0635e463bfd1ede16fd352d272138cd648261faec072c53a8739d38f83d3abd054335cb3175db27d72a28e6cd94a1e647182b9df0b52513294e8498ba403d8a0c4c9463c6bd76d28a36d7a292dc8743a4dfa0e9e4d2a2dfb92f5c68f438c3bc141a4f5be67e6937614ef03a36183aebab1c528d983e7a60df76b3e68ec989889f5921549bbad368e5439e0cb2cd540fe4e7d2cab38070aad26a841b98d8e2b8110b375f832d5cc6a3c13a159f559d44a20642ecece6e4cad809be51bb00487a3e6feb0b77ca72c107bbb9f4685d2537cf34fc47d656b8615680850788f4ead88b1ced7006753143b36719aedfdd682a045a4c86edac6d8a6ad675f97f989d7af373d04f07179af82cbd627567d0e08180c420c1a95d3fe2f84d9899d0d4b1dcbcf0c845c83fe4f1b9fa4751549c5fab5c31185d8d43bdfa3a2281008f0a4f2e5bfd4155ffb51ea59cb7018f00335dc1562bce9fd13411ae63522dd346485b64a1dad9e2de663feae5cd04d1d6f28367cf6bd54656e2da62aa2b6d146778be77bdeadc0fff602aef6cbee06e5c561926fa7f70522a35b68b88442447f62193675aaa8158f38abef35a3f1548e384aaf253331a6a6e848876d633964948e55ed903bbb2bd76a36703b9c32cec38ec941175a449758b82e23ab97c06b0a861123aa4c1506ae86fb26a3a6852e78846ebdc5a8ab2ab1e1fbd1b4636429a0e026d2663e833503131829882c86109d7613dff7d3b47a16af8a32ad84963fcf4174bb7c1f6f514f10c5263b7beaa44213df652d357361c648bb1aecc0a603dacafc15b324a28a12e20ee3196378757b8b51459a13a5bd6b3124c9636238f70e2eee1f593e894517a3b84de6772e8a5f6ef81867361fbdb4f6da0efe9d3bf8c70926c2b91f84ba09718c02ae78384b91ec46f625359e155799ab4c882f2488cdf85ae0b94ecd186702e0d70c4ba84b40091b585305c4bfbac976d21a9121ceb411f6cad665308205e6d02e30479356b4a9a4c13cc9e28bf9a32c1ca4f05e8ee58c83ceb62c22b84514a160bbdffed3c1576e6e0ec89ca2737ecd5f4f7357b2ba1ed8d8993b65d4c2bac752652f3498c64a61e4c2c37d2af922b1c9b6d0eec0d72dbc1785688689ec0cccae7831183892d571b4f2106a6b202d21395ceaa062920db6297865c5bf751a53195579a67c40990acb9f830344ad1561b0398b1b99309866639c8d4725c2d4283e572cfb5e41c515497f829df28d74527194adf9d609db2d837df0ea543c4bd4981328070c4b1cf383312e494d25699d9a1f4c991b1a4fa07cda9d56702c253102827f2d779a006767fa3e9f14a5067bcd8255c8e34f209fff88ab986c72f28844d186360ecef9761e25ac2e090f91623ec5da98677551215705242a8e5bfaf2b853d1d40abe9e583bc2e3fb7dbcbc14876b4dfc9d0c242ff7e977cc935808ff0e4164b0e3057735afe36bdba0160b647b57eb0b38af35969f6dadcbc6ece70bad3b494a0295a96df5be61f11def94ff8c901dc271e2aab32eeed3e72cce5e858f4a5b7612f801e6c213ceb8d2e2c0ac9d19d8f7be512f5b9f11c89a2da4bf1c203bdf066ff10e05671581630042e43ca4a8b740559b46ad2ad227eb6e0c74c3806f25ef1f88bdd11a348cef7b7f4b3f15e1d35e0d434638243fe510b65349a7b4f6874c5394cf46903ecd460aed50cd4aa22e2ae201bfd8e31e635937ac012b4702ed8212a5bfcb0e801db77a88a2e2d76586ecb144f7a6ade84d101ac34285ef8316addafb398c67e46eb03cff19e55b85e95fa1f7dc7d36d6b9a0f995c6ee2629981b2e00d739a784821a1549436f23b72479c18450f437bd5057460b0839b44cb6299b7c1f5473cc298294fd2702092f27b8240da1683028d996ee05af7fc62754be90d91836758e5ad61709f656ec72eba53aa8af0556246297262d7aad465df865c0eaad94dd5857e5b6376a48427d1519c1afaad4fa7f333e3652e8966d8139ec4ceeb8ca8832bbe36810ed33c4e339311cd3b5ede839b80f28077858140df183dd7894181b7a1fffdb720f0850b2d58a3f69cad387e9365631ebe0c79e8cd5b86473ba97dce4514d788e94ef78f436197fde8424d6744a2bb66aad15e62faa3bcf1c4ad1a70592e17e670e19d05ab08bff0be95240258814badf5ca933a7d53e8b0a192c5af23fe79eb23b6c18a38e3f0ca77986225f39cb5d8d2ff48e402db6e120f36ccdd297d492e0d07b0b776e522c77ee7acc770840a797223086dc903620740014dc1e052d0b4b1810635b0b310231fe56d425a78733e21ec2c9381384e2e2afc425c356d68a6e6f662ca71fa582d350a34c0303f605402e400911fb93b1a9bf20dde80918bf4a8d8a378ddadd51437880e865ff44a6b9b7b631237c0f8a3c197e3f13e3b34c038fe80bc03c1c99c6059f1ee8ef4566c5504f1e47843c7f2521ac4424e11543fc2a7908b4700f9f8cbe8e8a05281e2566d22346333312d08d71c0d0e8b059bc50f9e4456fe599e05da874906cc9811453d94cbb21667582bb6b7414f41eee03b0dec2bcbb7b0d305492ce84eaaa3507a20f8341068e929d99d0618edaf87447912956b79763e3334ddcd10315f7c61e68d1f7ca98b8a60fc84f852a49b38a3975b2cb4a3729040a76a73efc7143c82243dc1324dde5ac0bce41dcacb606f208dc13d050f408181830147fa5b10d39da99e9295ffad3c586738ae320d19e2dac42b98833fe096e30a32e4e36d91e8527263e1cb7bafb0c4c658aacf46dba9430214132037c5a49e09a144a9ba911cc84852a9ac6008bae7ed4f02f473605f19086167ee1ca101a4280abe8eb54544f0d1869708d650774a89e028f7dd1c0740e715a70c0b820e9ea84df063ac02ac86739494e1d6150e0eef611fa46b2f64f5e7e8123d75451f63b1097dc172079d51a29a3e903e5d2417bbc0070e44c5c786010067a4ace1684a0b52254e775a2a018e9ea4edaf5ef53b98b201672a4fcd500acb8c24622a357a711374ff722a5ccf685c378a10721491e3b46e2911566e83da14c946070c65e9836ba7d43dc730107228fd187b3710b5969f4c695e95cb7dafd110e09795c5c80d64e9dabdd73f2c524710549faa44d6dccbc86db612372a929c92380c89b979bffaa9941576ecfb4ae175b5b87b3cef76d03c04e322fb71ec0a69e8a0285dc7c131b7910bbaadf2e3bb419a278d496be592b18ad43ca67cb157389599395c92cd8b5c8878102679c2450abd0a37dd4958ee302501728b155c877df565c6044f95590a49cc2d9f391be9ed28c1a26cf7e8dc2480a0500f5703341fd76613490144f1d36c2810a02e29462dd4517f0d5bca5e1d4a155817dd656a0169c92e85aa25fc809577e77b8523026c68f5368afbca44aebe1770623d41c81c0e22dc93b405afaf90a0cdb2aee338cfd0911b265e3d808f29660cfd5540b3c2634411faca9bd1815c01514994f17aa252fb6c85ea51966a5b0f185aa434cb4c7b6de7ab3dc4e705d00d0b91c83222e06c50e899efe60f52df4fa67c9496c9d21d1d7cf8620fab5a0ef36926d841e0b5e18abee77c6c1b1da5b18747ce34cbc7fd0763e4fbc9239bd46cd5948852108d9879428b58c463e1b3911f75439b9d90b323ada91497b72408a2f50a664d543b13384a22c47a952ba81795e98b351b82530fe827044de070fb4caf53f987a28c6858d8bd96b334629dc1237a478432f8adbdb25e5097a1d1399bd9c2a161e1794ea6f2e79a48bc5630e604d17fb5da5e4a839193edc0a7d14ce2918efdf63c4b991278cca2d40b5812ac3a074fb338966944d9a69a857bd01602df573c686b234929690b8a2d7a4d84d5d87bdc7eacbbd347e6e116a17828b8e3eecca36a59c404cfae86a328d4e4a931be0ab640f12b2ccb4edbb73753b4fb19f00aef1865a9d753344ce3950980e24b1b258749c405fb3bdd6e2618e38b90878bd0f80f990d5b0fc9ef05ecee038771d6187c0d0fae2be2d43d128ef74a4cfbf5ca830a668cc21bc881c86c65305feb109a21c070c80fcd34790ec32dab4b7d86f02d444e1434641d60f4c2f55ae0d67263b76a6519805444df6ea2e4619e3e651416b4b0e31029c037a18f247ef412adc08f67b376c4a13e31f50905ee59626df0f520109f86f9fb8fe9cc340e3b9c67ac44b19d04d813520318e02c306dbcd7a00d093b5de34578050d38e25a7e1598d02d1d6608d61a109e710ab6d3b524d408524f448f78faac1708f23f460fdd1745bcc2de40210e821673028392e0bdc58f5b699681c8059ebc8b826be551f60924d3ac18cbac69a371910858103ccd253705f6f8ec42d8741c0d42a377bc23853a376e3a3f9c12e2b1a3314e7845b860e3c2ce78bfff7f28b7fc3daf114866947e1c39d6cd03e56c9683c252f407674216d2a61267f50788c786b479c71602a96543277d7afd3b8f6fe65b1a2e70d8daa526ab80ddba9989f0ed196c5984a93421bf458a46d68669346a311108dd621348b2583e4ec68944753485825f848c3671ce483ca20be8328e9e1de48ee69f1d3cd0ccc4f8df9207b2fdc95fa069ec744139a8f222e5488b459f81577199c9c1e793f6d6c869f750a946c2600cd1ec6aac75805302d6cac660abe7b906985b10f989a43b69cf21974d01d68532359833658b2680ea0047cc0d446558242fdfd82e2401f3e7a0930ac393b1eb96c07dc254c041a70f8bec63b8d857798580db07ec12f9f0a28b759901e95ead19df8d8f3a9d9e6447959e7bf2abc5588c11cd0bea52d19bb99f9bcd33f90abb23551168329094e4a898cddbdf2db566df990840213e957081c0f7bdc729752dd343072c88740af9b8edaf9c763cc53a27fb52136596736be6811e040e3003094e7515323dfda52f97c86052177e621a423cb51a4629261983f7f938ddfa5934face44408be8240cea5b3290baeda019ae99a7892124f9610c47437fd713f86d17a11162ddd3a2f1c30554eb0aca5ae31a9a738c40334bfa7c99366dfc518e53f48d07af5e54394d0f030db72c8e9dc9b04fc53bf3d368c1ba628cdb9e914cc69350d22a48d153538404e063f6e3ad807935d0bf4d2d732c14c74b5944253bcae22dfb932401cb51801d4baa0e65bc38e1ed381b7165a55dab9bf17b06301d30501b129ce54181ef6ec4ceddfb6062e92dfeb9b7b2d140112138ee61b4fa1d24667438c431eeb2418417838baf70edcbad8016aa3697b149ebee403efb2b6cca34b7de421cb6d33315b86f331f4fb21ea0d0c7a59d3169ba240fd0c84c4c522b035b532bd51336da06be2b6ef2d2a726c13c61b4f7e4feb4fa0a539919eb9280269f7bfa9adbbd6e98c10c0157c4ecf713ab2eaef2edab836b74125d4d68bb3e453e1dad8d63f2f62b48ea00f485d37250b80b46946e749c5694f31c3d2045280b61272710a8170f3905401ced2e8d62250078ed1a888ce05fb96a99dc811bc44fad7ea025c9dcfe03c8603b338d03906c7af20a926e0a7fb1d931f1b7de242a72898ecdfa4dbc729dd1f539d7bf1e86fbe9188c64fc64dc0d5ddeadb7d2429b6dd917769a220646f110aa386d95ba767334b944b184fd7cec80cf99d4696d47ee032e3a2685d68ef72f0a2134c56909e24138d676c22723e2a1c2c2a49a9b7ceaac886e00c907cce797d694767663dfc83ced5f4cc25a77e7ae5183e37b04f9c906cee4b7b9c567d9ac88b8dde619e9df73e6a53aad436e4855a7ebe49935db4ebb666ada7abd213ef04ea265c26fa6166e9d8bed9e6cb0b7edfc4804841915237e124b6c3e8a575a72b9a35b9c304bc9a477a0f6dee42dad45f06959dce632eb146adf014b0ddc2daffd0a9633225a29e69a81fda243b2021627e30b672f510b34b0e53372bda3211f4bbf22910733fdccc26ef2fac69a0f9bac7be51c7b1a878abad60ceffcd3e65451d0c9a107b6d2f0da918b36a8c578382f83863aaabdfd4c8d2852cb15807409726585407900830a9f331f48fbefd572c76b52537d63b9940b1195716072c8cb0494733f339120b08578710e6d0528d40443ee95da628b32c92282145620c76de9509fc1603ea45027d5a300eb1930e444b6eceaee363e0535f20b37b23f6acc994a532f1e2e1e161f1c3e0e7d7e7e0c72da7f3125e7668a5ccf7ebfc7463a40a16a31cceb82c0ee00fe190931938e42b84ec650109a11b58bd09d97b6f22a594524a2903140800075007b63e6f812dcdbdef7e5bc2ed3b776579a8ccdc9556df65b5f573a272a62c87d1da5a6e5e0e3799bb26eb59d75d9335ad5bd25441b78fbf6b4d4881cd7575735f109caa1bd4b71bfcb1af79aeeacb55f5fde08365b5b7076b98dffe1e5fbfad765bb06bfdfcebdb706bb392895fc16b04149f00b7b75f8a3fb6bffd7e33dcfb567e2f3e289e47691dec3b5725923647553728f7deb630e7aaef076b682b3399588e2ae74e80cfeb8c8b9189ad4024f78739aa9ac1d6e193dae7857696a3ca51467ac6b85731b16ee688755d1f9b3b282ac78acda01f2473a450d50d768e8a4aacdf2ad63f134415ebfcf557fe98200f73a2729e7254b9aa1cd57e22c00c1e8aa2aa25144bbcf068eae1b399fa164bea5b4c09475700bb61038d55d8d699cfd69d9e2754380162335f9277cc438b6bc54fd34a736b32ec60d6395f9a6ff7f97efd753fbda0aee2076bce133cba153ff05069af7ea53dfa20bd654e450f6362148c040a500e1d68e8165316c0304002073d14ac021b200103962787616783aed3f3848c7e3b3d4fc0e828acc8cd38716297e644d0ae4d9a72c5982b5d76686139a26851e18a4819d655b2d0b11bb2b11b12634da9342342519e118d20d3d434a1219565c9a2660a8fd34591223ea476b099da4d39eda25cc03071549e31215426bdb00352c6c7172431ad2a6793ddd29125204c5965092a3633762a301d194a517e0d0db960b38391560609b3c2d8d70a3cc0c22429a784ec9e6c45a92ad540edb6bcd80929a1a24c5282e869ed089a1287981d111915164835286b4bca195ebb335c66394a146a9035ed8c587809150d1112b1cb522ba19021e1856483a5fc22a50cfa5a92c22e478f1d8bab5288540946c66e8516e41a09a3528d0409155c60a18532ca6cb7428b1395f205931d4676423fbc60955e6e3479da6959da958d408a32a24409644d89c48c1298165bc05839e164078664d725482946abe482238c068906859d9888241d224c9452da9426ceec489c916db89456aeec6a3cd99d4ab086ace1511a59955ba2aac0d85d5951e24499c21914b44b21cdceca18b2852ee592b01451c817542863102959e8da8dd1b15b63032a4699928d3514659bb5115b6a7aa089286b214b79630ad6b9a3516437e6832cb3a34431daa67654a3cd296de9499b14bb2f6d4c945dd64a2669764f64762aca94b49464554638d9552529ab0c49e3c2a2a35422c5e554666977c426c54e091b1332d6ca13695a90d91929c3a28574a18a1327a55792b26808142e263a765d52bb184e2a96cab13529a6ac31b133b166244d161933654db49461aa94659cec9c24f931a48a6b874647292475e4b43b5b2af2428af285174c34ad31a5295b2063a34c86961d922a3b224e7c244933448a8b3ca3034d4a8493d552920b299c5c30b10b5a134b53f62053fe28db4dd1e242151a4e7656494aa221e50eaedd958e3552259713a96649879a14bb176a4cec5e582bc7a429a99031531644cb6ec4c8ab8819b993344a765c8894597c9468b27645553bb51a9d8275c9e84496baf9a5965a5237f97fa911f15af2be621055a9069cd770acbc8e9c6b9e7b2d6dbe987763d420c527a8bd3867afb54840f0708c26885ccfad701f638c794fa319eab4d59fbb196e7a9e007b9c71356dfd5abbc661a7019403af34c36e316f839d9e9d0c96c7ebd9f095e6c600f8ddb0b363cb1e29638e2a8746fc54a659ea266f072acd51efb13cf48f469d4ebfd0944163d64d5d993322c4b43431009d7ea565c16174955785d7f7de2a88dcc7b875805ad741977643675d5a8c1063d0e974692ac2abbb6925420cba8fabd9fbcbde5ba7fb9e966eee806230e46ede7b6fbec331e24ebfccb0c0e426de14c0d04cd7079ad161fb762846b1d32f3334528c5fa75f66984a30332ccc9018f538eebdcba8f5bd37ef30dab21b3c8ebcd4952e94d9328e65acd87223ff7899b3efb14c92be1fc3debb77ada825fc72e4f555462b0ccbd0d09a6a8cc54e4375fd18ace63b610e439925a851db34e79cefdd8d3177fa556645590345df6d9511ea1a74b911038f67349ad40b840e23f6f93afd6ac18516cebad95303aaa1b91ac52c75f08a21d1411ca2c939e3a2733f83ced32da973cbfa15a64da75f67561ddc626737e9eb4c57bf6508fba0cd48d88563a3836178c9dc8a0e8af63323eae02db417477137b15b927e95bdd0816cbd4114450f6d028505dcd3f110c65bb6b608e938e7837b86ac30e82e66b2aa32240b95155c3c69cb0abee5450e6fa8b2104bc3c5d672f0500d1a3bfd2ac3b257c8b76c0ab7573fd6b80c2c972dd9b9acab9b3b180c582e2700caa1039ba13ebfba001763a81cecc8ece8a4997177fa5546d5cd5c86fafc96adc89d01ab5667ec1b7a4a321dbcace58c5ecc84b99e97972d37acd661f022450c751ddecb1000805e78d83e2f5039b66cbd2c855c57fe2ec9a83bfdf2a242c7a1f41274d385cc4d9732de652c7709d35da6ec2e4ff057971d4edddc09b7805e78e4a1d08db7cb519711ddecb500abd55ab448e11de1fc64694a10bc8eb19230611886039d889f0f00d8a004c0c994709b6ce8a65dc864408c41b7b984b703eac561973a27399b1fc3febcf3c5187309d2314ec738c45cac3ac618639e095d759d7e7169c1c5a89bba6eeab2bd6581949739ef510d4af040bb07da7b1483fa94c741fa3c9eed793cdedb1e865e75ba11e37efdb8fcd1a52e47d24bc9f13e81d48e2101ccb05b6b6ae895a7e02234f2006ba79808f5fac09814da298f1736d62ae2c4da43aa01ae210e9003a32e07f348f078423c11373d4cac294b922676e682338cd10a632c9c431c89d31f79899aabadb556dc6b035038cb40e428115e0822e4055d2122d688e86246c418a40326a8b2c110268fd7d36079f8e3ef704510aa12907eb2b8eabdf2172340bbcefd5b2240c888abbdb7fd20ce15dfdba6f7f6957ca43cac6d80f602799073cef977b6619e7f72a9ebd502620e0fe22ce68f697d0fb4d752c7f63f6ffb6d86b69a81fa262f99c42691f55b43f0ed83b78f242f7923c12b018cfbedf1d7cfb752c703edb75207bcbdfe5bc96def817a075bc50f3ef043a0fe81d0dd4c8e4060b551c033cb83968671d67a631d5a8db1ed26616c7169565b49b25612e3d20a95d6c8f62c91ed5d9bee49a7bbcffb315e134c30f43e39aada806a42996b0937ebfc63b47fb90ed244676923dc6ea5797b7d7dbbe97d95b3fda6389bed76bbfdfea93feaf0cd9b879f9b1f5f8b20ffdcdbf4df6eb79b8de3dc6e361b7f9cedf61f9cdce7be83c5e1bcadc4d13cbcf98dd36268d56e86fb36bd71395bce5bb51c9cd2e4233992a6f8b534793dc2785de38ff8b99bd6abdfaf37e5edbd94589e1b0826c5f28496a78a24ee6f48f1c3f0ab38019c16dfa2591ecdc32c0f07ad99e539b33cb5da74999baa1984dfc1d6b5b0e41d2ea873aa7a45eaf454d114f20d21685e8f0dba96b92bdbab1d3a10c1f27cff9198e4f9184d5dde9f9fd735d66eea7ad8cddacd5a9670b7e5a90f84e1ded348ad9b56addfbf4196c7c4615dc872a03ef7345a63799e8abccc4ded9c10b0c65a972605b39526c766ce1509f76a5c8a15661d019d9e2b808839db6c2d9877ce172c73540f86e3388e206e1c6f37f043d87e1b7f6e1fdad20c51aff822596dc589b83a96e60980cc9c2b7a39e470b1e47f3f044b3a9626de552a8cb07e6bd724494932d219d0e9999464cbb1039950e63cd9a71daea54ffbd58f6d09b7d32c7e00d42b2ecd2eab75554b93feadd83e367357b8848b7bfa549b389ccef6868c1af7b82700eecdd0da30188260f8e0beddbcf839240e79539a6389bb8921589626502ee44d494129acec07b199ab6a41afafa41fa0d333c5534f91d41bd0e98914d64d73043281df9f124ce8fcbb3edc9e3fe7aaa859cbfb7a875af4803f1547dba33adba3743f0fdf767bb3a2f58d73338ee38324589a39557d2c6f25dd2502b846b1dc1ac49b403fdfbd5fff7e8eaafeaebf430ca675e427a5ae542d5198f7831b0ccd6cf9c1cc6daf65f9672b11c0751fdc5ae15838168e0d11956e9628140bcd725d6b5dbbd696281c0bc944a5bbb15993ea5f2bb6f7dd93bc60b6f7e9102d140bcdee1dab1bf0d77bebbdf7de7b6fadf70d3fdc7f0f92b6cbf6be502c24ab6968e159b76f8942b1d02cac4f4333cb238666bdbe199ef55ad67a536fc22bc5f6bee7718da67deadfdbefedd4a7d4edd3d7649f3e3044e3df178a85661f0743b28bf3856438ff955ffd2f09878ffba97f6fe6be37c35e936c86efb90942178e8562f56f48731c4933d73ffddd6ad24db4b6bc7dfb6f0fdebe906c6fdb47b475babd77387613bf5d7edf771345db4e4bd26a2958814d0cc76a06e2a79fa389659dda69354905fabf9ad4737edb7539d8a79b217f7e73b45d3d7f38b6dfd46a5d6f33afe980ede9b74f637583706cd4e198698dba0982aea16b3a0741d774d0a86bfe811f6889c2b1902c1cbbd54ff1715e3ffdd5a46ad4f3c773d137de10d7a25af4582a10fcd59c6dae45d5084858410d654e67333caf67d39573ce39d7daf270acd588bfcd16d24ad404c4748292ad05612daa1be4e780fbfa35c9f28415d7a2ded668721e8e61e7396ebbd6045b99425a896a92cd48bc699c78ab45958867300cc3b0dfca500cc1b01ad5b083ad4567071d6a1148d6ff6a51cda06a1244282aaa457503dcc3c7913d36437e1bb901775c5437088bf27fb58887365a8b8c72a0d8bceef32c8f8e579bb659256eb3657eedb6e96e6982d059248b6489ee0e1268bd70c82dcfa66f89ac51ce5f7bf6409370595f7739ec8000a103a4076c0f5310a4487503dcdb711443c8cf71a459ab26f10ece5adba4cc7398c9b034b107f0b325b23cd6e809a8e9044b14be35ca1f96b6c41dd45c5ba4ba016895987435d76baea508b2469c73b7a4aeeb6ec9ef993455d0f3d3f05a13cc9a026ba49bba6989ac51dda02a7533840eab4d42b2a2d689e54f7e5e3f1772d0ba7ee0f6ad51cd20bffefa22c949dab925ba8516bc7ddf77fb1e2ccddbc7c9fc3652df48fe368b64915690fbb773ee04484ac1977fafe0467e6fb348350315f4fd22a8eb544daa4a626deaf94115ece0c7f9b9ae8764076c2f3f0601c448cf39e7bafeb37579efb74416c9266d6d916a06194d870692500f3b3f22ebbd4ecf23209d7f9ae5f97ed77ad6ed199ae5a9237ca8e204f2b777eeeae3f979feac99415431b4fb39aacf9ff3744b8a51307aea3b9d9e28d07a58c7fd2c12eb39e7692a775552e544e54c61d183cd79ca4de53ce5a87255b9b0bb77dd4d9adc49b6979f935bc9f6f289747607747a2229d9bdf7a67beb0741bdb5d65a6ffdfbdbbac481648e22f394cd904170ef325705f207a9589ad8c37dfddbeab74080ba4ed0ea01995349f18b4d641b9c4dcd62b3d81b4836130818c99154228795214e3d2c87121f3e9c646132a262ce84785415c918b364ea8a0b47e7c98b8f1b50408c14d16bf01a8c46a3d9e7d8016632568031d3a6853252a70e21178c7515e9684a718328ab5ef083f39cb98d18df10cfaf43ea3957bde8395f40041fb15193d5e4f00cbef80bd371615e21cee70db273aa859d0ee5bb1b72b953832a49bf279593a7a5064420419a42254408460ab0d0d4ceb25a7cf9e173796dc21ecff600d0e9498545551504346dadf6da5b3b09903eff4b025d59a4c197db4ccdcbb4c5bc515364ba79a7ac8f79abae56bf7f8930b93b2eb7b562c59a74d39ae574d39ea1a5ade9f72d98d618a4c266f4689124caccc7b44f51ddb45345ba69af7037ad56926edaaeed635a2046fac5e0acca151f238c9c35c9d90c8dab9b556d8d0db242d6480ce37ad585c3ac46949c52fafd3a75a95abf3568a99b95e8a69bd5686aaa9b35e9fa9855c904760aa99b14ccd64d6a522bfdc6c7a461fdfa9894acdfef297b36d85e7d0e4460f13ad1a30615984fae89d1121b4352f4d0e173a1fa7d5d5abfa7149b9b9e0d1cd0d38697d38695ef05fd62e9971b526436d0aec67953fc1cff8831c63c345567a38a05c0803105a1d1c28ae263958c8c6419bb71540645e3767ada9072a53cc0003ec3089054138c175e3590a2581c518124889912289840e34fbc2ea70d2362671418cf0baf2c8618de981e19444e4f2b88ae30d5f0a1695643ca94908246c895cf76eafb75565c7def3131678daa1e767ad6486104a8ffa7daf8de79ff033a58c3ccebc2db3252cc2333661dd5207f0927f411e31fc0f340fda3dffed64fd778f8aa213ba1944ea811b55e2e8337764255d91f63f4132a6a8a4786317efd5688d3404133d06ee2449881cbccd3320ae0c3083a0e7328805e4b1e849785c70290f0cddbdfd296b7ef60b969b9e5fc71bec325cdfaf4be599f96703bff0ed604ea561c9fc764e44fbb6e9aeafbf3e5fc869af7a9153fb83da56fde4af3f6f76ff771f77170fe06e74bf05edba979ffe63bdc5b82091dc4f9b10fded04bcb1ffae0587e601f7cf203b0923fe2ffd437b3ede99292627803794c46dcefd73fe283ffb3c507ff46e6dc3f4c35c018e34b35b8b75baa81b5d67e1f90a2fede9637327fa207fcc510e8fec93f867cf352184d0cd866fca5819fc9bd497a35ce38eb9cf3d659e79cb1ad6a2622ac6d52adb55a4d9f52a36a916c12ce18e7a9aa4e767a1e11c188a2b5873457657b1604cdd092a018dc0722ebe64513ba67d70cc8685a1296445a55abffd19cf37f363224f953d166e339511b679ac59ef0b4f091fb3b58a3b9434fdbc15a6bdfac4496e7664cadb595dc40076c4e93b4f284dc3e520971a7e78cb3d34593515211519111c6f8864646b92a1ed888ff9ea0761e95d1eced5e15c56d9f2c53a9bb1a4d5dcf366a6a5f1e0c449be4513953395575e481a8623792fe47dafe411c0e87c3fdfe11f7fb71e5fe5024cd10382e8a614ed4f7edd7cf37dffbb7d53d40fce79395d329a88395b7c208525e92b1a7ca686a307b2cf660c507efad624cea7cc00ffee09e765cf983ff0b310ee31e7fb8a41c6ad1839bc6e12eeee6bf5239f775f7a62fb6d96cd8cd1efab463c3e1de0c617bbcc9ed61cc79bdbdd9734fe81db4e2070bfebdafbb57e7c3f7e387ef6dff233eed62a9f3c1f6dfffd8fec3f9f1291e49123af8beef4624839274984510db48dbf1fdbed7b9f4bb250822507bffe6de94e3a7ebf782e0bdf77b1e5a9edb7fb9f1f68cfd7ee3f73d7e101a3c18c11a928feb3ddd5b0e692b4d9dfb98732a63886eea5c10978306ab617f1e68d7a50eae3eaed607c57a887e136f2450c72488b08bf77b4e9a273cf50f9352395fafe8418ead7e0fc993329a5cebfccd79408200523c7ddff77d5c04ddd4a936db07d60fa82dcd8a958c9f0eedd1df6fa39f75e8474b1d9bed6d246f4a8f67cb53607ba0b6f16a04082f9f87b9a30448cfbc4aa9566a58bdca99287c6c792c8ff8e187e1e72ccfedc30f432e7efe9c2ee7e7f5c0fc22d973233bb0bdfce18321c9bf8a1e763670607b1d72cedcf6f287414673a7e7d0f61c74e8202411c0357ecf80f1dbdff73972dcd0f3e9e71c7cf1840329ae94625acd10bd96a64ed525d5f9a0ffc6ffc7ea7ce0afff13bf3ea845f175958176cab8ea37bca207a1cee70f3528c8f62b7ea05e1e84506b075b4fe83ab50c21f7fa75775e9a2774dec19b2529e630869aeb104068e8f6eff738080ddd6623396fc9485f873fffdcf5db38d5b16508996f126f4a6f07faeafeaad6d65a2baef55a1cc26215ce103684e59de78b24de93713fed268f3eafa7c192566b6dfbbd5f87e139c7dc66b3d93ca83b2968d0a04183069d7b73b76fcbd8cb14d5e9b964d613d0e9b9a4168613d8572a0596c7fe8902d1c96466e5e67c32293999b476befce613743e565afc40073f0a42801fa8d372c4d26b3e72762e0951cad79c2e5818d93059af224225809c2ea89c2eaa4e17504e17a7e5a938631e7c6d0f6143b839ac9d761387907388acf3b9e3fb817a755cf64bd582a845d0adb47731d4d15ec330fcfe86b6a7b7d7787fbf8dcc8d43c6bc71d43deff4e4e1047f01cddaeb83f55ab37e08d6a4fc8e60f1cdb7c4956edb372d31cfb77a7580307c6f2c374e65ef265c6f1501b96ecb878deb3a6cedb07103c4180d00646c832ff8a16d5b663eac6ac39c5b58a89c5b4dcead223ecead1db7565dd1766915523ab5da3c3971a09d38b21ce028c7f8edad0505dab498406e80122319adbfe43bb6b14debb00eb4add4d90cf5bdce2c295c5ff0e3d746036c8da68e1f00a983ee7bb5d353ebec03e8f4d4ead26d9d9e5a61dddcf9b48014c4d14b955c5033d8377b9d8e3b3d6525a9067bbc978b7f03c0de7be3ba48721ff1435288a8c747fc21ee73a33511f7095f24857c6e3fb4e383fbf1877a7cc2070f407932d05e4540d7bbdae36f5f6bfcf49617540eb496b5df1b686ff7b7380a090dbdcfd08e0fa50b0047f066d45df2a6df722128da7200f0d9c2db7d4d9a65af0fde92530c46d2461d501f4752ba0013471b608abd3eb86d01e03bbce96cdd3ca1520cea73d286e448520cea83e40e18004de2ad059031bfb6d2eff6b30392a9b4661161a5f5154f6ba5b5d25a69ad75848b3968daa0fbde4e4fad15e70d2f3668d07d6fa747ecde3bc20541772002c540030f438e7bad10ea26ee60041044e8c1c4ed87390cbc51f73d82bace9246405d582f1128a15132042b7a7d4c82e0ec11d4698fa44ec16c365bad5d67dda446ec9ab7663d67bbe970b3e32b8a012dede804567b29bdf8c4523bbb9e74693139bba28c9c5d4c679752dad985747609618c37b7727299517a727529e9b96afb6c1f975638f5811f985798fce4123ab94674138b75cae3857b79a0f59ced812008de50843a7954199b40039839b572409d5a4c38e3acd66dd2a94544e6cb993516766649b16c28353ab35438b3a6ee992584d233abebd2ef03c333cbe8cc6a8a01d64a2b4e906aabbda9b2d75ea96ef2938751373b3d7944ddcba3e986f8e2ad261e25cead36f6dc52d373b647f78ecc85562a4e3dbaa8097a526307151104486678a1904a31c4a4cde61c06d75c8bcd39e70c83e73179cc11962462844829aa5d584da19a2758c6a458894dc1fa516d64b143dc46163b6473a581d523b4974a2cbfb853f214abacb5d6573f29a295c03af004c585a0b116616a8c70a5c889d550141f64a6589d5b9ff0c4440d14d05c89bd0046d75e282a0a42d2444b4cc53c196666d66898107125c58a8a3751418465ac091b3067da64d9d8d02f2e3c013384450b5b65a25c3062c6110c35395cf858e2e9fa802a2259b2b2942115a9590c688a32634ad49ab020ab21a26e9389ec5003a680cb2910d9b98ec09abac10e4031e64989255f90d0b6b092c29bae235c61482bae88d9dd28eaf1c5e4c4102b2836a01851608c1c41e165c68cfa24ca45c3a16de5c8c27236e5c90c9f1ca5040a2e4868425e54f0c94f7ace39e7bc556828303acea65c60c1340466e4cb89284e3b46e0f071a1c8281206830418b3179ce0989d55110273468668c51a26c282658a96276d582c35b9e00421271c54b4702525dd11b8b08031e40893530583251492e1b8c102e9852e2caa581f2e35ae8a96ce9a5c61b2e4031a263e902ca12172044845d3971a34aeb0d2289d3868c0aca8126222e5426aade6c89668c7578eace90e16ae5cf03a82302654462dccd808f9e2ca204a97142c5e441449635373cef95a225af51a0b4a356ec4e061e44a988a0296d8176546884c0c102c1d57d67265958dad383e608cc1bab2ea1246851c4537335d50c0c0889a827cb5b19ba8098a2f276276342dc9bd60b3a482d6131a4aa0ea556205b5732ed2f154c40c0fb4182692e0acf062cd0a423fb474ac5d0bd475c60bedc68e23426a48ae96e430aa7206478bb01c3ed64a80e4480c12132f86a41c1143aa295c2fc26a14a9a0d5b25821858cd3c58f3142467434e5785c464092a0a1a234a58da512cb2f2e95587e716be606b80568022663ed2c8bec4b911d5c40115b86a825c97202479b8c05e6bb5a8f5aeb1e5deb9b1be904c2181183034c9429133efac88e2a55575d52a78f4ea16bab285da3e18874adcf5d96adc042cb21428b1713208ca15a7302244d05222b760e6acbc84c8fb0314e5e38db8a10a5302f156a0cc9495847c2cb001d57b735788b48e671b788641e57c8e57153582e44c75ed3bd203bbe80c4384f8009a2428d568a3224c43c29996983cfa8896d11723271e40588181c1f5a9a6411459110b265cd866a6a438aac6c392df11f6a7619d8b10585020a2e1969a8d59a25c14a0c5692202a5288526d8081221c0da13aa2a2b176860db75dc168f66275b966585dae998f1ba0115c4c46a0a892d6c54995965a98d7909123a124ba2389e53c4d8d2b3184b07052048a4f0623e5460e17a2a098b2d4c36a085b15f1ae2cd62a48a7716a4185132c535f6a3e5985d6181b3454a8a0b2a272ae3da66cc914264cb0b81cf1804a23c3c55409245554ccb03100cb4c918c33c91524f587d50a174ec07ca1806542ad05cd7cab671ef95e60ca1985448d96134beb8a051c1e28506cda4cd1f2a3057e25460a499ee090716496b5630b27298bcb894a90205666d6f0182502c54684931a4723b0aad4d5942e410c8f34337e08d510d2e66275b9664055652c924cac21e39a9a408f1f28700d59096303abcb35d34971b65013c5a64c0abee32a87ad8c16186d720c21695329971c57fa62294d6ca0a521d1d25491b09ee07c9ebab0b6d6848152ab21541d19cbb2e2884c912b2b2c910542655f628caebe5ab05462f9c5cd5462f9c5d5f105cd101c2c60b15106cc272739e38a5a634afb418444798eaa3218536d890d3951d3f44214ab1d63400cd2b8343d19e3a44a098db5d65aeb4c6d58ea1b29a663c739bce9cd90f57e7c01911197e398ae4f2b181cd32a2298bc8298f922b201346190a03491aa42e3a3cbdc387e169c002269949272d8903ae35557627030c0e24a0f20609cc88098a00b8c9a116a5d5836ea900eb29b027e6c413ba2844cc70d051c09615242c50a5f6038aed670706c9238ed186bf2c40900f2dd019db9a8a4ac9846ad64687000000283160000200c0c880342b1240c6238e4e4031480096ec4405044938885a224875110043108c33010630030c620628081d010920d20ca510a7d0b9529160b3696980b65c71b089ae00c5a07e59316469478d8e0c21a0b8641927b33a281f4dcffeb16e2d5b0d8ab100e50d15a61492f362fd4bb8aaec867e0be9e78da1b92dadb71a4677114ce773b536636abc0ee6e1f1b6f48025ffcbf93be40b5626c5abdc9f5831f36e676206043f5a16ef9f9a0dc8aa480500a51d49912dd83a0f691f7a010c8550da7480e3c792b7237738c22466758f61f362eb06d68061e57599af88c7047a405acc410a4398b81d82e82edb71f4ff05540e7dc117322dff238fd2ab256369a8fcf6107c75c7a8a80c6b5c5bb00adbf7e4bdcda55103640ce7c75193768fa7d29b0cf5bdba97f460e4818a25f7c518957dfb656482093cef68b824c847c6e548b5fc59a4450690a7b7b2fec9e76b6162e58dafbc8313689e4f572748826626d1f2302ff02f42b65f1b21aa565d7ede559200fd6ee40f069d4af6d120de4440972f603fb01fc47a59d5b0259b43d7e5d5b5683dda4ddf2a7a291b4d2df140ece544eb5ee7b1723b2975111774815129e517922d05308d20c1281b5736a9829e3e06197659365edba74d67f7d969e76c40ed56cdfdaf0f27278aeee12190e7f53f686b6bc5c886bafc528561393138d63640ff0cd3172ad91efba6ade0df3b31a8547d8e93b63b2754441fd07e73113587d5f607f8c2d7812c941e0eb771513130ea481d95647fb0775ab1f141481742b0d09cbd24186c6310f7659d91e465a3e81b6fe94bd7c7241f7cf3bbbaac52706ee294517473390b50f84ff578ab77941835a0280a0366ed1bf4a6e1ad8bfa8aeb04f41498a4ad04f606f538569864589f73e9ec163e82039cddfd50f000472bb62fb9c4c1d7cbd75f8bf95faa9c3fd64427f5c995bbc87437a551b74e9004418e3db58b67c028234dc986f6f1a3b8790ea5b4c2068270183d61adc9ec9e7e119f4847770bbcfef2d46e082d3b9649516f76b541cbfd0989353ec670ff961103f03cae93463b1ca4934ab9312ebc44f69b5bc84436c01fac8e1f9593a53043a9f5e7252f567e680bef730156c65ec5cb7dc66466745c504f677a55db72f707676b6eb6556d5f087a0598c95438f522a16e8bf275d07fd7f6f2a33b176744a56a9b54e7953fa7b9aab8e5d74dc0a0aa3367478c8fe0bfcec8d387d0c0511e83f1c5fa91de6aa120671af510c19bd57d5ae1da99672af56edeea1604de292ef23226ac9f7a4a184f908e692fa5f94004bdb45eae32547960918001d0301533156e16553ddb4441bb7b45677b8db2f0891ca4a489b48e19dbc796ca8b8518001c017c612f9770990dd27e8c0bddfd3f1456b4ad87804c372f824a5dc42d365ecd38c0a57596c9c1f41c62ced9373ce456ffba5e2ec6a4eda0cae6f2ad40614d2dbc1f1d36f93a7c497e94bf611a38ffdc64a64daaa06130e182a7a2f6032be6ffffc6d4c8d00032643c6055ebe8e4f5a1abf01e617ce432b7fb02b14bcfa106c1d71a2fa6acd75ce412fb8fb171e0d5855f5e98575ac082cab15ff2ce379fef6f3d1244909677fba148dcce5c1f72aa519b473037a268a6404418f9f3e69da4b97d07d968a34a826680ae6e6c9c3a22b2fab007bbb8fc7d8f33ed005edfe570b4baf693e2e1555e61fc32876b850085602084d3c6f5c32e0542fccf14531976a24fb123ec5ed0c80e0250d267f747d7c80ac38ce40640bf25454ff77bd1659fa9e6d43fd16e9cd8100e0b520186b207f5366daef8dd8da52d5c0c2887a7877e1b2ab78cb0725a5100b8c1ef63a97a65dd2efdcb8f01ea26a56eeddf603f03ab67d7d58727c5909166b2f2350776252a6d49fc4e6f6e8b8fd5caea9bbf18178f269f5bb43899009bd6ab209ab4954ebaa5c0e8ed36ad97fe1c5be21011785e11bc790a9b7fbcdf1d0a584fc8206267715e1b625595414715263f40ae263fb333b47cc9791f8531a333991bcaf51832243381dff493bfee819fd6947efdc316d14fe565c0129a9fc5cf674055e058b7fd643ccdd5fc8df26b8ace0e5d2d67354a8216437eea3397f46c5872ee9265fff00efa7006a5b7c2e634697064ec9a7cc43b315a35fd2537ad28c8a74aadc104fd03ed72a650f99bcbd06f841ff5c4632dfbd779aa5c7718f183dfc8735b90dc8977dad4e80a7db7e6be7c5a3d5ef0844760b90059e6fe119a4641bcc006f0fcdde10f3e93b972f0b91e8d56711ba0863362450081a850cbc4827787d00d8adadcf9b5695bb14a0d10d8a4eb8bbf2d2408a94df27d5190434c1e5c1c84f1e2f2077e646a7c5454da63188873a852570338373291d78037041309a25349542b9adac25d591221efbe33d1ea90380d74297e7c01b3518f0abdd87a2a36150fad5180c8834f2e7dd47c36afaae3552404b701b1b34fe54bb1f69e1ae498dd1e1e48b2df30ca7ba9a76a0124b4132d00ab2ec9061f3a0564500306a0ba8d774336b97c731eef4206b5dee5985b4bd96a898b998a3b860123d1193e22f5b031ecaa4974b6016704160d35f279423641c5a922813a695b377c7410472270438bb18120e6b3225165a21d37b3db0c8c092a04e9d9ea42897e82394950348a09730af52ef8733ade890e14b46cefc5a55d4baca16b047ff5f421eef1148db82c6cbe3ce0a53acce2c78dd5677a457be8f6277d6c803d13df160b545eca95308143b1f66d8978f84010fa289be79156ba959246678573601dabeb89b2b6f4c4d59a1c0bc1739a536559f59ca26184fcc088675f9a4bcd080fed294ce8cece5abd649096141d894ab4981dd8a0d3b0a57a0064311efa514d6b63326fbc69a28d0817b55625c08f2347dac9be33af9828770dfe69afaddbf854a893c7a34caeb5024f13774a57d022ff2dc73656ad1f1bb5ccaeba2612466bb5ef1a36b7697eab5fc128164b7e07aa1abea232e0f45bc2e6f37c7411723113f1529a5d6f85c719797b59a12e351b42155ff08e87f48ff055ccd72d74549840a903e527b19fb120b1489e139322f14c9f3d949a962508b05ac31c36e6e048f609c01dd58ea3c4fd08207ccce700061292b723c299aae4682a6aefdb5a8199c25a04b7d6f73497e48b92d640517b2c3fa10b8e8dcf8a4ddd7695e0c3772112ab6d755017042f813187a84a524d145af7bca69aca4cd580e9d5ad136b48c6f055b4f15859e55b63bc07689c8e751681b0db7664412a5d9a9036edb4f29d540910c5cabfc2ca201e1b33c568ded477486d7c9c048f10919e2a2dc985c527c54802af9acc89df6abe46fcc64f1dcdc4c057594c6be9bd2c4607ea85308048eae7ce387c48ccfbec5f25d18a798c9c47583a2c82417967cfd2be79cbdf3e03599b67c4babcf2dab05f431254b6c530bd017d07bcb0ccd009c62e694eb929f38027217ba62e04ffac55828c550aa73a3c4b9d025c054ac07c509a7523ab59ae200a7086957c82ca1f997acc891f213ce8a91e0d63adcda3ea1d5ce30255d0cd3d8a12b50f9a9660d29da57e5523365dca8ef2b259abe3f15a829cc4c8e3250f6a14765f2fedd9cc095fd73b7f95bb986288792115d91fc82600735a6185a4ef686ad62e9efb6d2b22520f5d772666d370b17a8d4b3035681a34213d3643a6585ce8ccb5a465b6584ad67b21ba8b205768cb9b64adbba6216ee2bef36dab72d3a95dd7c2cc5c92e32bc5890b0b49968e23ceb19185f7e85d86890f75c427778f3d8fe67b8aba7ee8d13cbe3df426cd0fe7107d209887c647a3d500b7865a64090b1f27f41202f26d39bc08a32431276c2243985522ae21147ecd8a99bc7793985d8a1854f732de232bf195876a1da318b08d91e3502905f4c6d6eee4447c5279108701f8822213facab5a17213b5b2351ce2143cadb430cdda9ef2dea7e033d09fb75b2fa63d5afc2472e61b1b1035c09bcaec4e08b55705c6d4498506a84db5b29f22223b29ac299e30450c90abf1e84a0a75bb2e9f1a148ad5f1636dad132f1137ef7dd0183011daa443b1a17687753c075f5efbe86e60c72db548485672cc168670959f4ef7f27c2bd2bc0a6278171bc5003baa7feab575aca5c9b88a0bef6ef53a3f94214ed95e98a0764df94c815e07bc066b1656761d4a5a107dc7c308abd06ccf5b36720ac176f4c1752ef27a50ebd06410b01426d95cce7864a2bf11e7f0aac54e5312f6112aa170eb6ff93ae7dae3d12f6cfd3a7fab4eac12cff66c7547507136e95af013982e2b4962ebf9018c880ba66e994fcbb281340b1dc84caea4ea421748028852b4d3e90da5b1c83ba6faf1daca66cfd817e471727ce5ca0b9290ab7adacf1e5fbe70c96c6f21c79132a7d97fd2ed39500b1b3c0cb6da1ffbf5de86f9a016e49501dad1231d5b0224adcc393b89551573781628190bc4ff1d680798482e8fd5c7921da1317edbdb415015a3742884532189543bd1e20dd4d0162a5b336760f3b2e30508c9fc37e85833aa9029a16cbd9e974887dbfba11ec96e65b8285cd740eaba0474f83aac8da86b0e8b50303158ac821875cb2775f25e5c093fe8bddadabef7ad5f471b1e026292fb5628bd4709b6b4b6ebe9f945d4d9dacfaf6b418c13f2fc5bb6c247f80c7a1c322f5d5bbe4e915c7626a5760382b3b890207a2f86ccf4d526db418b6d5926cc8bb4de70c5a2c539b189a1873097083ab1e8502ebec6adca8ca1f6f1dff4a195302537bb0ebbc93fc50f755a0577927b9639a004aa0fd1cd819fd20286f271155d271c0d73959ff2c36641c14e7d5232cda45d2b1b8e2ea1ae2ac91aa01b3fc4968bee1553e061624cd4df00275bd104eb3cf317c1b2f5acf3c1616c2858eebf944a936c3d1d5f2b54158f608c15ed677602b603c303ac414d569312e345ea7076b664f085337e42e38459405a200b53ae70c549375e89cfb9584cc14fd5e26a9706e7e4c506671f1d22dbc5a7b85da6f54611f887cb47f1720148defb718481b42b07aed38c608b4768cca72831331f10881e1fcd0b78b3d5e89f2b47bf485284ef31f89737418ea8f4ada756a1731e64ab7e6122afb1ac001e0b2b0ac5a586237b061864c42bf464a845b2fba244a3da853d7b8caa20491209df8554b04eab2c71bc5c07728614e350acd6d0b4d62709337f7ef56776802e1b0614671b7990a4407aa58deb6dfe9386114872cad3d545bc3281c2b1f06eb563dc2868e1defead13d1461b7d784bff120a2ba120b894fc48b211313e9779c0620f289d1dc49586c379123d2597447019e3b6d27c418518f9270c23ef78ffe715af5aa2b685b34288467a31a8caf456e6a27a3d1ca1bb45475b3736731c9cfe7a4b01f0823e72d045c3eb0809f59463ac02d6b98e28c7b1a589a2515e0d168fd30606b08efca8ba1771528972bedcf93e314e9230f81ffc0e8519b0f1b0277e8db11f01e8b373ce77705e953c9c25f6fff8e919234f09d9284fac6e4d6791ceb677cfaafc9e15c00230330fc2d7cf0ca1a1e8d93b394ab516d5dd8570bf628eb08b68cf0ac051cba19deb1deffd3cf0f07325648f45369115aa5cc8ffb1b9ccdf4b745db38027150f769d6ae004139e4e122ab25bcf111cef1185bcd875cfee64261a184ef55075108cfff54597e1dae36e5e1a506ac07b718330712294833f38f0a6afd0cf1c53b5e785ff71e2218bff61d139a325833f0feb38cd4aa86973479f0c836eaab8a7f920b71821375551fc96d79872087488da9372385b41a35df92abcc8d568f22488a104069f6c48b8778cdd1724fe5ba9541d6e894f842d6b892a9142e2abf3f3852d64d4fcc0c4124cbf4248d5ee40a99ee919c08cdae53c983eb656153fae31bfba80a70320d5b8c06c049c31b74869f3b8d551206808a63bc648b9326bf6d797bd40178be0de9fd894809579de50e59bf350568ed3634c9ff7aa82ece5ab12f2c5e3884bb10470930247e79f3d95e80b6ef96a747488fbce228c037abaa13feee0542813667bc2ef5f00f3e8b69930d3824b2f83b58636adcbcf09748ae34bc154a3d5a1463d0e09a3980cd7a8263d464d964d4847889a02f88a265d4c8b4a8772acdedf8b5ab92ed276a4a3da2eb8e0b31c3d71d8bd110f5f0f2860cee4572f8e9b37d836631e825e8fb1c09a9b3c55933f9c5d347675ffe0fd1ba760b35dcf3d11f5f45f106849a15bd96fdbefd3d46264c755ef35cff97b501e1e13ad7a76dcd097c2583d0f2955f25aa50008ee244d572195fface99e8894ec06ad4cc6dc3e8ffb7e17033572a3f8db75c75ee4284f5195db7e539ac2490b06517ea960a681e9fb12248788a495cc7aa6d492379509d440c85c2ec9cce6b5577989181a5e342f6d4d8d22ca380ed807d77489fd0e66e0cb8df8d36db531572742843a05cb997b7f54647992a802f23a6b5aa62851bc7d226482881c89ddfe78dec2bbd40cd23a7d523fae9ba9fb1568bc66298048ded03120dceef07d69a2a0ae1f675760736d1d6fa81810bd97949e11ac71b93df76136c2a28ff2f6edd682adcf3176c02ec0051d5a0a9e2a160c421a44526ac076e1035b6df9f4541d4c0d625194cd4c626b5cedaec20faadc62dac16f761527e4b3d81f0a8c763859f385a2032b8191b62af72c34c684143708341896b3c26655547cb4fe2068b0a697fc6c6915534c1100beab8d12fb097da1fa13fcc9621f35baf0b820b2256e09b43fe6266ee81753711cfbb688573790bddd973c5f5268b7c1cc6f3e7971f8f2419cc1fda7eb19a40ac271990738b485a42513d130a894747bfd1ffb88fa6c3555b83790ecb8dc7774706e618465ba00b2ca8da64f9bea8e36e91e2ea45d94133217b8877763ece6314323a25ca94235e4f7026c6a650e40d84a62c1505161e88d4feade21bb98efa77228f3116b892a3bae8c33268a511024d78f14ad727c65e75f061f0734980d2f2c1ddea564991c7d3315d1d35b27da3c2c55ee6c525092007ec8da08d8c32045512d87de276aa3444f2e670941564869b90944c0f2c1c6d7f4db4c3bc7174ff2a9c07410a26bf31f7d021f671c0261db46c0e02a36ec67e1eb20669b0fb8d7b36827b6a7e776707a1a4aaac32c6c1e9dea23c1101602e2eb3e4345d491c5bef352b7c1cbd8e83e0b0334d6b458437b72004fc020a9c0f28016628a78bad5b0715ea366a0d4a767c0b6a1b0d38138b1b257fcc5a76e0cf263a3234cd68bcea0f5f8a178e32fa494388679bf496e29219fbd31938600ea5f514349970ddbff1d1ce19c2e9210715116dc18efc7d6d6349ce96e474e35907ccb9121f00469b5d5ca925570903bc43a2f837cc222674c2f8afb2d4c100b7a4af3d404022f9669420269c891fd77f00b275019a040686db65722e74490434705e934ccc2f3cf6670423a296c4ce995f504ac5c13ce9df419a48423fa1fb33c14fbf3d783f57a2661cb413151fc0939f0732d34d1f7d4184c304697b9f155637fa22e0d7f36cadac98c1888e5f123f70fe2fef58a32fd8eb41b927987de6e2b74ec0e404caddc24a455fe07f65e2559e17f445af2cba2b825ab061f6a2b96eefb6dee3bd122afb72a29505620c5d0df6b32571e3195fdf6a0b2d275ca65616ca81f31b8f37f807f66be0b125a2fe0f7d499fb724a72ffb5f6f1a800106a17ad78b95b97cf127ab6f8a1adaf8dcf5825e3e654111e8fa0794aa6b210d6406e8062e7a8f1ead1c739ba5a6d74b58872dd682a149ff2a0ba63aa4a3c565f575e676320111d272ab7a9f1e0405e5ca49ff159d61fae82c92ffc2f344e842151a5ab4864e9ffc9fa5f9757901c2390a1dffb208e8a2c51d9107ef94ae5b8ac0a4f61dce208efcdbd139713612907fe1c3829b445744c92e956e2c6b236f21cae927e67b94b9ed11a6a04bc24cc7565047f6f77f513a783a1e8e7205251d2973dba8538d090c3277f355118e156cfa6f18b86b78deb22462d0503f60d51e51ba5987e0a3a5f79da5a5b07eec0cae04488908e014eeb9a48592406371f5d9def953427d3c545e141c6a0aee840a0c46c421b172e83c95a079376c7f20ec69d3c560d9341a6aa81109c2b544f393f273245f2986d93cbedb7e4a8228b49beab4a0e57bc578829fc4017d7385c3fb2f6b64f2dd251f4f0a3bdb8b4c074d27172e902ab1e21e7dc7d0d3057144c20d7cc07b463c34be100e703072842d6aa69ee1b56443c739183649510a8d2c4b098d7357974e210b988ef3b80558f54e1e0cb43c267108c90083a232ff78a56525d9579bf3d2cc41d2920d46e3c4f4190a3fe5821d5cf0a98ea364b48b5f67d4507de8474880a322acfdbb3a2c451d2837fd28513857b31aa3b58e19d8d5a96d4c64b4568cf782c4f73b9dbaf18992a8977a4baf477d67b6c76355911245b7510b25d4d13dc899217f21b7cea8702ec6424b579b8196341809fc55656320e84599b969d9d2be042ec4d38bbcc4035889282c59009054c239e3687a68620505c8186bf2415a27f5111d9d250b5766034ca4c88f9c3b9b5d9b235f98c41fa60be5e0b68b27d247c5231e96d92750517d8460c5f0b5d8595eee19198caee9da39c84795d778e2129fc520735b6faa516eb57bb937353f6ad74a9b05eeadc1aeaf080fbe9f6ab82ae7a0564f8136c686af052903f195a58dd200255ab34fe793f530c29f27de156da9b865244b5a6ccdc07fb7ec92847d6cec0d0fdd9534930070e33d0b25660bea0a570564beb9b97a832359a0ed2ded038e48e2e523979a049c0c4e7d644364288195a14b987778bad48e4725adffddb89e73be11ee9a5fe20833612b8e3364784cc88014dc2f304ebf2ed83b0f96e40ddbb68abe3617bc1e921605a3feb29d96ee4de4a8d00f72f538073548eee6bd80ee05041d03a8a282f22051791f101130a4e8d0da4f49692b5cc78a0726485a1e8586b47f6e558343109950fd701978f53378b619caf64d8bd5c83a02a355b7c6bdb1b13616822cc6555608b319f1b04df8996d02577f806c247e21c5e13742914cc59a95355601abc1346d4602fbec9a2ced1aa30b6a08d4f2ec45d5f3cd8bd0331413ff455521e03ced9d2fa409bdf2dff54605a77c048d24e5bf51ca143cae166a185c54ae521c980fa854d53f3ac0358024232471ee2f67d9eb97b868ae28e9e2365eb5dba45c7b3ba880541f1b60e4dc02d0eac483b4576bd3ac86e70c2d73f079795f60ba98227990c75c255feb00b118324bd051b6e621a6f853c5d84bbd13be2d5dd3026b7010bfd1dba2b3117e4074270502a0f7437af9d393579a92605d6e274d32694520c571bd48707518bd6e5b8c724d905c01ca461389504205402a2ec78345134cd9ed9e821229676bd20a64e90bb201e6b53873313d4fd4b9e177bd14d81b425105ba0d308f8de89d1c2a6218404ca4a9dcdecae5f66450b14dc995a43529d7a8f206d511bc98085dc9ae00a0abde14828d6244abbcf04f5afbe2bac8de825ceae7d950866e0c5d1f982f6e3be8b2c28cab04b44429b31f3b586c7d06e8d72dfab7fd96da453f25e11f01091c6a175343c6a5c0ff7daadbbe27334c6aaa0e6e770e835ca5a123ac9739ac149883e3d4f518459d6962fbc0d72247b16a133c7d5c76400332c83fcd5ba02502916d3aafccb085efbc2af60ed025315fda4c97f126ca656f1723132513c747e1e2f7557817a3310c564f5f0b6de8d7c01cd035fbbab8fbb5759ee048f40a4c5c64ad2baf1f17525b47f2a9d263ed681443d11c599f0fdfe2c57f3c4d23b07a905583ed847ae9b3661615ef9aa7f1626269c8ed3eb921a11d30c4bb49440a913e067573018b0376169bddfa35ada430191ede6764a549ef460e902de468186bdddbec0dae1267a8d07ca7d993469fdaed562ad4973f93e4994843fefb4053050e773fe4d4a8ce2223394577f2faed9485582819aaf69d44e609fd1f9de88c843201fcba7332c5a758f529da524755291c2f77b198c18f7cea7c8addf6be802dcd056f4d5d0b30d7f20a5fb0350d8c1c4b478896efea3e22eceef4d1212271d99e55591af624c6739baa11bfb9d0ff243ec1a3edcd91890638bda8f542fc0a56ba0847eb28f6c1f94ed6d82f4f2edc1a562609eb1c536e93d301b4d257d6d30b10e8888e64f18ac4ac6c89705ea477080ba90957dcce6cc8edefbccdceb0f7cf9db41650492819cf796d1f9d31c9b9af26340a383c77b09fc2c9499bd7be1b0c018f29b1f86a680245eaf8c3082854edd88c9f8aa3617a34e51fd0f6552d0aa941c128e11369e40dcd4d5af920508227dc19cdb2ea0ad03f9272dfa600a51b4f888af26b9d970bba02e3be061b841ac241b2613799c2c7bd774edafba545e3f5706577cec7ebae2e36a0c8078f0110db9c92494f11a8d5f93c8a07c555a64dd16c1e84b874623c0f4dfe4b9936ffeba4f11e6829c1155a54a1ca525cd9415ede62d5939ae756fd06ddfd71c0444afba7ba3140f4550f14574881b88f8e6aba6d1393185a8dc42b53d6b6ec6c342f89c95c496aaebd543b437f42bed929043ee83bb2dd5cd38caa7f135124fe220cfd5ae0b454edea42ddc636f02e82052b3e050a5be7202dd98d45296c943118876291f0e3f12635fc61a904a04e8a118c37cb5673ebe0a51a142153fae11110a8be8c6e5a7622a61776da691d55541760287e9c5692a667d31680fa4ace20b8bf37b6fa1f088adb9e7b675bec0dd5355e1b65399040d36391c530122ca7ed268f7519675babb42e393753588302c11f037c84bcad6b29698a351a06b2cb0a370abb72af970f947dd7676365ccdcb703b356c5f5481c69cc5283a2b4d6e21431931934462f2632db8f2656d3270d740446c1aafa4f91e62f8865783156ba5adc91f89519143db0b72f0826309b220aaafcb042fd2350da406280bbf544ac02805dbf1047fcc3780d40613a4311b3a3bef106c325cfef2f0a11b80c79947a80d6260488a95e3f23fd00c7e9a0469e338037dce08de9e473a3c55757dca81895b3b4a3480004cd27560eccae2fa59195e161353d0eef4e3064c98e1551d6325020684241942b443c543865c1fb087dc3270a62cfb1d8ca7b07bd88a6a073c17e3ce118d03a6d4392a06e044b56e09f862861cb18420ebede939e701185bc3f6f8848c08cd5fea4dc1aa690bcce40e8504863773e85c59245cb81f1e134136feed56f360972e9402acdd29c08c86984405877238f4e6f4c1319d685b6e1d1d83d88940ba87a51e90a93104451b2cb4954e7e4d3806733e1748c9d113e9a50c6ecf19f6e9459fad492547a3ce548efede6226b8ae563e3b90a396afbd8b8fa1a1989a8c67815d423f878b6b57de154e773ccd7e7beb19232898ca77bc386bbedc03e9c2f3da617312427198d608f467a670fc248074e643b6a49b5b9536288df9bf0aaeeb43b5e88c3654493eaa6d91b5c85bbce148c4d0dd0e1f3e47c64a68f8047c61748f65fc843afb9519dee3a23c100b458239be883f58ca79721df972cce332ee8c6b6aa42b05ee7072d6b7bdf29dde97fb359ae69f755ab42f0aa5ce928a3e7006dd95a05a11fb223c6d020f3aeda38ea520139552a35a550236b70b34dcabfa729503076f2dcdf06c295feea6050ed631db191502553eea587906b6f507500c5627884354bb46f8cf47fc1d9efbd1474381f20d17396b5d4886bcf5a94c8a47f01cf1b564581323a7a640777a6012f74092fe0eacde0b7b53180593af5cea4a5ca8727a079b8917bc9e13f07f738e4c607d2b187eab110739489e3113c02714d6643b7ff155c7090a553a25f9b05e23dd45a195c0b11894fca70441bf207a05427414252a78218096feaa00906d3f702907b413588a403989d19a796dfcb4c260bacb7969b09910a8f2d301eae55b5107f2f18714d87ba1f7e5a0bd567d3776c0dd46817fc4f88833e1d9cc1950462771e49cd09b4091bfad0abd29ccbfdb34f8f0b7221d58e4a27ff80326db7ce1fac611fe1d424d6dd6c95fb532b7604bbe20b7e46f6856500bbff22f5f44e38b2adccc71d7d6e7303b0bb64cece03f19aaf5221c0e962cbcd2216b7cdd537383fdf5617a3f9fff4225dfeecc4121a65b8741997cb7f000b4f71355b21190c9f842c5ab703b4fd7329b73473595646c153ef42e0f9a2b5aa124f6757554ba716544e0e666808c149ffef38c484c5c607a7dca4eb984b93e1a214eb4a0517cdb86ce18175612193d2a6b3f720ec661dbd10682bd943f7f033438b01ef5b766787bf82cb96fb4617be4cc2ffeacbb026494bd9d34596a474e0b377b512fa15539bb3750f9a926769d0a7b306f670316fc95fcc113da5f346f28a5d1641046758108b16804767ba23c0a8735d95aa7b9ab157982e3679d75c644405543e9c7fa26e8915a1a4dcb26d21d39f7422b0647ade0109b7524069599330fb217679e6fdb200b6c5b04e753c135cc2952f771f0430abacb30e0039c1d60188e22da728e044ccae1aaeffe2c1c5c301698ed160600e2ed51500e11b0e411d29666cc12ad22d6e9a932386bf9b05af153701389c5e07054669ec0c1ad977136c7c6af6dbd1f39a7db70457032ca8b2aa6095a02c35c6ee8162bb7e708e410c848c59996f6ac23aacd38d40af7782cab6174eb3326f25241fa3058c009a0628c65ea301aaac57db66f3c7ccdbf0611058641be61fcf53a8b51f0b2214bc63b73b635eb47a850a900745387cb8217ba3f1245254dee01b40b51506ff2ca03604903e2f6a4ef9e27c86b07341bcd6315ac269a503ed516013acb7b65a966a3dcd6885b969371eda1f3db2fcd3835282e39b8364a55b3eb86438768620ec434f53954c3a2db169a0f77baf381ea4bbd76da7d666094f7af95429cf9df6944ca019c66b0f1d79459c931932a614be944f8a58b6a196921f60150d4fe40d0a7da44c15862f1875e42d9df0eda1cb28e2ca09e2b8cf3efaba211d4a0fa2ad598fd826316fc2fd79858a345dca05c91e4189013f0ed8341dfed259a41b4eca67f197ac50ef222489e576ff3200e07b9d0ee7ff97b3b44494fa9d38eeb32e1bad6d5998e731e76b86004203e742f41015861adc6034c4be5328c237adc45ba9ba33fbd999367fee357885ecfd11b855271235cb2b59101068978047f1f1b81fb0c9f6d6c536a6d6e3200e2b002f7586f7acc85504020b3e2e9db3b9b8e38645bb6c75cabb65c903c2101fe6ec2d8f0373dad094003a20219f7762a18d75cb435101062f0c8aab32dea1f0e186a0c1210f2ff30418fd537910d993a83fdbe27f737d1482d83b21ea7f9dda251a87e85855834d3a002d602007d8f6b1171b0ef33ad2a51f7bf58d70925ed8b14fed20d83515076b219537a725a612ec017e30afdedadddb8555f1da29b567f012583c892fdf4a1b0b5866d21049ac4623b390c6867a670d921890bcd938165c21ac18b1e5d356c3206e77047efc3c7856402115583beca34f98f2f69348a13e78da6f84d24080878588dfb6bc94278efc26be60347d5554db618163cab57c31eda00a4f105ae4a64924c06a5175102141f06198fb7484858fc7cb3aca2ded809835ef0aae9610405d369c26a8ca89a281506a4a4446db47958e3b66cc40f406758a2e653c0f056ff71f789439b5312f2d420b176c30849abd12d2ec5d56462141715e7636e7bf4b51dbb162283d5a583306737e9754fc1b50ffc125f393eb113e5a61682fb2886cc203e02ff97109b82c36104762b6311b9478f02571a5763195c7916056aa69ae60cf8ef2f17d08fbe833bb07f7084dd971daa11ab358485028405d3d0558af8dd6e05e4c9d2bfbf6dffea6aa42e39767fe391bb595c838ad96998c0d4eb6a10fb058f4380025599d9f9fdfd87b7f7fc08a2dbeb0614a1d30db42cd8c7d923c40e1beafccc49402829d0133acb4d5705d0c4ff990d99e82fcb44d61a218e6d9a9d9e642fda6859edb2b8aa855782d7d16b96076cc520c4401492fcb221fd62e83c3c9bf0a1a76ff5bbef7b70134b608e4f68e8edd9f492923ede2ce64b0c5d1b383aaa55aac5e6ea4f43e7e19284bd08b4ca17c972327358f4e823701ec77bad8cb928d9c8c21e27b8e2453984fcaf8b533ada8ef16f5d27fc3d71635e26c6b90de877e7038c802f0eb47ddd615d4c4a71e82ae175233f1a64542cbde2fbe5c0ce5fccd8e5eed4a09e651987938f1ae66468a71ff2402901bf4bb343ff64be3b402f0c1abc6007941c8e10815a47e42866ecd2e86f58803268b3a020a8e9cf4642a75d0dcf20d2eeb93a7847d3becfc64f50191b4f6feba52b31a0b2265e93e793662086f8226df52da075efebf4c56c7b225e278e73c411d33a085f092d069307a7e102837531c26243ad2e621e726e6edfaaaf54f7e21ecf95d7342f1ec10f7b66b0396bc02c8cfa2706b1eff62cea4a45f680ae657e82043082d3aef272f9a59bee468ec3b50d70898a664ca425422c49a69b83e8650129640ee8c8f3184cda886177ed4cd201d96ed713bd40c83d4da34486ea03f9e15c73dd1338bbab187f087a3aef1204a487cef19fdec1838ab93712211ce34c65de0f0a31c8d48f53ddabaf58d19bf48ba997b469c8f9c260c2719f8de4892659c0a18c21bdd64b2367d406b78b306a3472e54b53b208b696c666a446ab192a6f7df665d24f3518172f9dfe96211b9ff990653fc232d96a2a77f90f09e80e8a2323c8d7312f50251374d33d9d73103644a485826c357f10b9fb57f951f4306217ca2c1422e85e0b42bbcdddeb43b840f6e54d78d109a1367ef91e5085fd691d597529f01ab92f4f9cd7bdd10759dbb0baca107b9f7a5d959bf4a7f5a9c0937336f70d84333c789944f6808a9f78834591259d704e5484ec5e219e5c61e7ce55f5d868d5b8864b7a7f8dec8e0117aafced08b5d7ca11b943fda8865bf3c8221a16c01d0b5a5b816e790450bdb7fa30eb86001b518e18b402d8c3ce0f61acaec018dcff3b0d89b3ebb3d65eda1e6330299cb10aa20ff9bdf37e055b34869f1f2beaeb87b3e0ccf4fb5da320fba3a1d2d201e80ac74ca12485d437cdb1aefe59c02f9f9237f8e558645ed04abf9c03b7e2b6a0be12bd8727bc0b1cfb5ec027229215f856e47e062c818bd30cfdb8480bd7cbf8297aa4078db87c802b6c2c48a8341e1031387f4c7d6c9eaf8dc3a38cdbd41370802fcd3aea702a882a6f4f01bdd9ebbf150a52eef5e12640be3cdeb2b207aea68fa46eef97091aecf4f34251680de4e805597a9b60f011afe2d2004f83427af8308d2eee0a5a8ed627623a2688ac557f4b98ce12111bb7d05c7b49a8f74fb4b06ebb9ea02b56573956a1087f0411d4b3453adedc89c8d34733cebb2aa663f7a258a10a25c8573aed45a42bd6d83ebd90a9f93b1dc2513264a8369a4cffd1fc1d398dd1debb87760bbd57c423344188b19e4ed54cbd83914afc5d5c4ac73ae7f1e42a410231c5653783dc7ef2c56ad252e2cf188cb42833a73b85d4c82f40fba2ce2cf968ccc621432fc735484914afb72186b98fb81c1484570af2410f93ce2d1ccd336770a62bfb53e0a65a96da531ae36174fef919027f2f3b1da15d2fc3d114dba01b27a4cd51dd2253f5ee8f80784314877f10771339f4a84a5790fe6142b8836ecc878c3bd12e10cc333c484122dd89336fd6f8061a8b0ede2c60ce2042327682fbb06007f67b6127ba9e1b7a5d8d0885be897ac81afb3898f80d5595ed24f61167ce2ce897efb164b0382c74e61abd3bb85c57330620844bd12a0c85c3807e37476ee2a87125d2b65e89e3b73bd965e8c24688face71b7f8602463d610e8544f3da0a4b7058233d0625d3d6f5686e617420c12c495f08ef9770a210e75da709934d150ff1c1ad459e383225183e843dd9a0c933d674512a90fc46cda96f9cbec43ff811193e4c017702d780d0de8ebd907c24858b8c317ce32d193321e1ae4ae2ce5b3b1de1d5b8367e691688184ba66c301908cae01221ae2b4770a02d73984b765fa959b1d1b14e63403616d2ce268280454cfb75f483ad1cde7fcceaa6bf73f0b8853966b12279a1964d5e52494c8114f7233de02128862db081e691efc041b652274d5fd5d8c27b7f3b6077f966701e056200bd8fb049318403518668a0c64123503f7cbb52ac5e8915178afdad3c4d1baa7bc69ce643e471d5f9ac9c60c67aa4fd9212e01b9925b3d8c130bbceea447ed34ebe043b54354439abb17dc5e414162109a76f9f1da1a7f55720588030271d53b748a27ad11b7336c0ab33ae599fdc47bc07239fd2d15a12afe6c0c186abe656c4656505dc5282a88c68ac3685fec34ae7fe212e82e2502245bcf73036dc28f428be44ed065cd4c8e3030150353c53b0a9f6f325981d79f9e211fe3755c97961f3274fd80e5a152e76b53bb7756339c2ef490f252e633cee786b6fe35567d40e0530ea6bd990f30f3c6461f2d70decf61a29d8ba770dd0c225ab580411905d3676a644c84eea2aba4532c5857fe6acc113ec7d4de6a34464a31b7038293400966d392562f758b3f8ec8686ab35c4d2fdaade368843e71890ad7eecfeca946023ea8b30a91d4846445886e65766cda52e281b1e61419b50ec5ec20d06aa610953770c0b6a2f72a2c412260041d9cebc8ef864555d30c35c3b2ecef2696bae57df77d9822a8a2b5b55b3141329f8d8af216b8545b4be6e361ea0ab8980e17c13a16b33a505fbaa7c814293265328c6f554eeb20b1ce3910b8b08221b56ca14d27317dd8950356b8b3e6be4c9cb896c9fb5d1a5ac12757a3f552cfd2952803a20a9a3d33b4963846528bc8b2b79262cdd0155b0311c717cd4677b52f1d530d24a8fdd2e5277c092ae9216eca932cfb1286ad1c6e1fceba9a9cb49ac77f907eb7d872acf7862c14ae03daf51fdacfe1554657daf423de0396a7820a9165a48d93a2c1f829de5567333d2e9a2c8f268b3762bad58ba9d261f2224ec9885b8cea072cbda5c68e7485b656feed1de7b4989886d74ab7a51528ea6968400ae716cd0ec001792635d0b1093d640db67a69765c8f8635346d758880cbe6c52c885cc51d40f35ea0035189ff57566a25a406dddd35346f6bc76b6eacb834b790fd7772097e1942f361a690d7e4b047ce825d1d3b38147a86a78affe595cec1eb428b6422ffb43bf59cb274e826a6f803ddfb3b10d5765dae10509fcaf0f0202da2c767b4434c0b75c152061bd2ae1f321f71c11ea91ec5ab8fb0a1beb5e7060df9b3e60f5d43baa8adced7baa6c291ee3964626564ed8a4fa173ca79d9ed4a5a4f8d34e0a6ef30dd98d03d91ee09d7dd2cdbee57792d98b97f353e394883f6b5b4b45d5d8fca18c7d369dfdeaf5a059b7fc142e04ee023bfeba983f5e355407c8941e364fdd54519e3064bf75c4f2405c77cd4cc9aef6b8ac7cf0c7a30d6b20632b69bf9840587b918cb61013e8b174f4302661414c131fddfacdb23e3b89a28c7d741bca9bb25a205388680f2ce7b00ba18e0d5170510b5da549735da2e7864d7380fd4076556b159800687b543a9b1480e0cfc2c4794c58ec949ec1667c542472a2261bcf0230d41e98f15970c5c09781dbd95a6fec3013e50a32be51814dbbf1e7a046f712918ad4a7fed164ef821752edaebaa31102fad4f21e797093fa446052491bd1e41135ef674b8a51878f20f4f7ea0e1ee474206efd17f6930dac66336d682910b55f876053b5b410a9ed2282a5cd089efd405b4e928952f9e02861e544200fa13748aa759be68d828621bc94cffc150e64de7cb87ce518818a254394d6d5348b1a693f70fcbda49a696c07ad8bf37de29514ca5d6caeb30e6698ddd4758405cd03a890d886064ea7ae74c9ebc5555f97a32f94c60e070a4a3053878f277d134e0f9dbcec49191c5ef60e9b7c268a0175957d0b965b6f0c5735ef130b17df5a5ed6652ce0eeb467cdd7d4860e35ed3fd6451ebe0265323983400c883c6ec7f13058f1e6b767dca09519a9b1861ce1fbcb313ca9cb54d993fae538227f70caba4e7494c2b7824dd793f53ec0dfed59cf49c0b0d1f18d3b5283b973e39ca7f1884dcfd2f5c06f34be536b20160523706aad6a934f4d15280e87f76e00aae87f11869d6ab857f0b162df560fb2aea56cf9659ef649ae54264b8b9d0e8c67f48bf896a1225105cc046bd1fd38abc0911b11cf3ea1abd45eb016a64899f608672e7f0df432a3049360080751832edb624da25722a693df9cd326a044aa11c733915c4f5b7e03ac9f0694aceae5aec2f2a91386c24acec6fd3dca56b6bbf40fba55be7c92ee21aa53458057aef66bcb2355d629b4b959a256dcd14f0735a2b26720118004610c00986a3660490919cd7a601db378c49cc9effe3ce4621612f2eebb457807335dec3c650aa08ab94d0950af54af34f1ab56cf01ef876112adfbb8d24c29646602e0280ff63ee2f8a84ca06d18ed316dd40b6d22b8c4e97579e77163864aa46111f8e875fa138f0ba5c7748b825040c3cb81429ddcbb6da60ebd76e8cd47b88f70cf984b6b44cfbf124de5d32fbf318f2d4d7bc55c69b9b1b3db8340f43b9e5d6b28b823a4409fe7e4b7856797ea81d2206b2fca9b02425f2c485b5646902bc9cd6a3ed59c7f97db1f283558a2920d681be1d542ec9f121aa759fd97da78cad5d2e4c7773885cc161a8ab3d0273fcf5c458ba6675efa4466b471379bc87a5e7934723b55cebe31aaef7d2864c862b1b4d845084e9d1410270d1f08b19c85882602c4b0931914eeb321393363391792d17996faa79d69950c88412bab23b24f5fd8245a480022e89d94b130882a1ec6a67543f2b4d09afe8208e2c9067a41f44e83a5679aaa41a836cc25646c741f838627de47a469065c01f2d3457fb24f6ea7fa4d985a61a593a15b0c905598100a4775512102f37c77394d68b302913f06249cce96eda6fb5e210ac95bc69b48bd5d21c25157cbb8e0f926cb5a7709c36b65e8e674d3873542f60d015c1c600d1ea0c652c37c8ee8953c53f01f3d4c3db9c0b610794f2128d20652a675a876e90e35331a5c8e7107ef1805689f18ee9f942a703f2502540cf19f236ca1da24079cd76fa8535fbc4c9d07ed3e66209af7bb810303e88d400faae8ded5050e58a27a10bb9e464f397cf02a4f8ad9404e96f39ee0aa40102545e32291d61abc1cc7b79cca33d1d7c4cbfa42cdd2b7fec7ecbe4469b1d1d27d2bb21dee5424ca1d3fadf041ef6274855bb7628846d2f52a12ed9fedb6cd053d92626e2e5a3abdf102d69e1903ec68401d213481a205e0a4ad489cb0642592ba55f8708684abbda1bbf2bc3f59122a2b312c599b654b8fbb032e6f86509b16a26032409d1d655aae6a4e3d7264f658f531a7f202067ea9648ec45689a37f945e555508da2191cff7303df1447ca26c2d0091958bc86395a8ef40f48d07378b9a4322fe10c9fa1acd9dfeb16cf82410ba6c765193c10ffd6833289973d345c77301caf9dc61cf237c610f46f79f403188a3628c73ebe80e2596dfe226be6228e044b87727089c2a383162455e4d14b833223f9587c24f88c40376f6c6a9a63b19888a3273d184b5ae24d922a969643a504fcd8ae39ffaf008c878627c02e7417643a6753bb6042c0a8092df5eca0bc55dd42a69dd14c4dde5decf5f61b7926ef680d859fc28a28f6004f7379c4f4a9799844972ad712f9d7b5aa18f224b4b16107ac5405bbb4ecc7f1bc06c2c330e91221218579206398d2a4871761a76881b9c941d83244e196ef15a6a0416d7f42d2324112956312c0efce31cb577d2243c4b216e94bc302fa486c59c2fc1c05eebd4ea76f85cf0e3e01764b4458984bad2221c3e10ccd484af5d5eb33f16465b175e077cdf107346a3e092914ca22231b3bbb5de158065c3c48ba00f405663d7704ac4d35c01127fb176f4867ac3c928d2a29da790750163bac766514ba548c7d6e3c1cae3514238ddf1bcf6b57761db0d86e68b1a23f34548f9703dbce58b43d8f456e50942654283419b03eb687f6974a600d4238aea7463f3efad6305baca0cdbf64574c38108b53530cad10a02526042bd6be7c0da326fb43cd716966ede2db2e731d91f59639fadfc5c89e5558b27716269a3251068193d1eb4c9b4c2adc6b91974e93daf04afd372dae9c42d8ce7bdaff893353f8031ce7152ed2f1f099c54eece12b06b9d0c7844c957c32ca73bbb981fa9f10799f108d66b7531bc1835ccc8562ddb36f54ece1c6daf05a7f5401e14aabe8097b87c7be2808f78569f020a5acd9e0f6fe3c03ae52a5922fe9ce6eb7e021d8bd236d761939d99ddcb0db61d1b6f8750cc84f84e19f5b90460a5b6fcf9749c3f6ffb09e9dae35c40f32cc8392ade4888b8b53e5ecfa4e17f4b603a514c31a96378669835cd002dcf136b386f19e3081d40f4225ecff15d02ad712941493baaefe504d1ab2acdcbafdb9e3280d412e322d700eb1e5687abb25bde646f32168d17ce9eb84963a828b8c643db9ccd468b2658b13fb1e258dba7f31501583a25e7c1d0a8bdb4d640ec882eae498d016147ee2eb9106356e144776212db2ea04089b1f5b2ce93a355bbac0e56634087bd0a9432c84332d34161b4a266cf1ca3cf6bfa740d4ee55f7a49d1006d44b9b12c241beae2de8665d078b91b6d400cbd2a6810235aa8c48f315c2ad124b56040d1e15a7daa0016b6bdbebc051eda83e9532330a6c7fbc608e18a9b888cce2437e79d7d2603cc2659e11a0751ba2aacf983b7ea7bca2bed6430d257e97b6672f14c7d16cb83e58d2a57ecc85b6fd962f491eb3814310644aaafd5663ac2eaca95e381b018b042fa53cc2467f29d3f588ccecd5bc1350f516edb154820f005ff57a0983492b21f2c46e7e6ad205264411de2a3cfdcea3ea64f0c0283574d2517b29a8f5ec1ca19885be485587afacae8a37cc45096fd99f6b8e4c209c57498b4084fae11c7cc6a2f351c628f502f69406bea24113b59acca47e14579d1cb3e80d870b3cf89637220735dbdce338d03719d79538cc986759328a949184aac5d5816a41de50e705ab86181864babb3c192997c26e63756144c9de82efcb42f1c1f081fc2190fe069d0a5a5721d7a8079e19179c750175a4836e4d8489469cbc0e1830045dd2166eab81b0078ca6a9c9802834dfdeedafa5d213b9a2e345e3e223921a220f43d6195ebfb7211d5be762b54468075b53e894112e1ad8a8898ef3e7c68f3d2d9e4921481d896d7db38f8ce79a0c9087ff7eef94441f9b967e33190fabcb98c3bfe373c8ffc85cc39260cf5667330396833338c7f8d4fdfac98c4d8a668f06296504c05ecfbe03699b6060355772c829a3b59b0f8533b436500af59e30fc6cae3bd05d32ba9ba74d786402ad69b57625be9d126e846c9c7b61685e31032cb28ad41ba4573a1d0524b0ec1177802445019d5b14308cee299913920ef371fc5a17b363d682f6d9c59a30ba562a155e8e0bfe245f2e12fd72d9c0e3e90971911a9fc78c05d67838b6841e881607367037688718c5289f0d69f56677d580a6fb2b098b2bc25e31d89e24a29a74f9054e5d4ab916f011a6c513388fae51f36bf36ac618576ae71903da9e9003f8ace60d53b271d264552674e8e4626f3628e5e9939ec83b72759f2f3ca3eacb54800cc52b7a19165e023c8c67b9fb595871a8179c6936c015f3729dbdd56acd865cb322b68295272503f3214a3a77e569a582a40f5f988235702517f40790eed45bd4e72a15d44bb8926a589eb95ccf1f3c4bd109e0696339ff0d106540c7516c9e1a32830051ba3be9b73be0f2e67c26ac0ff1d602e2c4860010973746344b36bbe4d6e887172f18b069e91f25f66161711a041aed4ff826d1b5332b8180a10c2dc357721889c0acb93dba7551cc32fe5ab484381075cc805842b8ab1e16b43c2b251ee0ca231a489c0333a6b9c4a1fccb347f4b11880acca838dc8728a487c72a1e1516ea28e17b38266574792516fe140d24d326984ddcc70f6e2963fb0c3ffc0e0f2f43e955a832248418f599d7845104e3e8327107d700a52398c933c8a14a2e1336eda9bd669f604c92bd38015f53598c5d5914a0b95b679e270328c5d79583c569f985e5a44ad82aa7aac9c84370554c6b0912a5cf987631e79abe62ab03188c227bf4a80fc7e43c5cb0b2029d84c8ca295efb0a8b05a6dcae5c68c77cd625d2f19c634439b0f9de1784c50530c236e5d5d26981ba776386e2daa8c5f14f1e310c196e1d402c6d556a011bf05dc3d4d4c813856b0dc0e41388a617c674890d7f45849a5a2a0adb1fe4a602847034bd0a04ad7327689b6c64028adce337ad44a3de5c45edac0e9367bba0c83e432952e94a629fe94a7aed9c02be8021a23d78487a9397581405818b66c20309aa0a1505ca85b6a93663bb281114503e472f28030b164175eb2241aff3e5d63b3f7476fcd26ef6ce0b9e369cc619856f734c9acd732267c918dd0669b263a6434719557b44034fbd801e7c503558a63952f24653f3eb553a9eab8fdc20fecb15271f82ba93a1e16dc045f5a747e41326e563e078f0ae0ad65c84e0119ddc04437be226711902949cb61ab001954618274d19c3b53e5467925ff8e6b79b7f786fc29ec823550f7f288da01cf02ca1b09147891ef2fb8d0b0a4421e221fcf0474c6b3fa11c2defe71237cce03a44f31c7d62fd47d8b81fbd30a1350017fa941f66a34d75136169e9fa65e05fffadeb2e77680e4282c5ba9672911d021d0ec497f0ebc7d1ba5dfbe4846588aa1df2de75305fbc65e130f6a3f2e7a4a6c990bf801d443a02126e670b9136ceea50544f4cf348867929ec0e4e87f841dfa0af2ee6c5cab6516cab80baff3fbe2f7043ad31c232ea5d1315d6215885d84e06447d84304c67de1a416fd30122534d43b3fdb185bb738dfa174599547ef1802cefec0748643e7f4bb15a3b3a9dbdbe7e85d54e03157c9600a84a8746992baaed54388fcb45c5d1d534c7893356e814bc5ca182b68443a5aa22a9ebccfd6b03600e28a83378bce2285e10449a435206382858c43898258437f372cbb2bce9ef94402d61bf38f5a7213fa07d14e9c556b30ff02790973ea1a2eb91eec79f97773b32cf1967f38d7c0c7f9245c9a4b750df490f03fff1d191b28d445bf395ca5162559adea0a8bc701e64d65bd6eb42b1ee47e6628aa13c071c51ae1849964f64dc42b6ad5a427a11308d6ad65943d6d1f70fa659bf300e7c035172364690858cb288a40b5a90587261fea8d425393ceafa864442355c6c9c8151966f17087b00f2ba9854024aa309a541717dfc994ef62f03531793204214246fe3001cafd3ae0c94dc4617cc23c9d423cfb4a9e505d7ff4711da2405f49d70f36204e69c87569b8ef21d0f7be8dbfe5aadbf5dc496781d6d5fccaffe08bf65d4cb8b39fe6cb84d2e18e61f3963e0d085b38375b89a3b2f11e6d56cf0017330c17f32eb85be17ff985550a54bb9c96870009c5556d70ae3662a61838178ddd228c6b4435b276ccb3f04092047d46ac5eb910b714325400a402be2f55cd191265ed390d029ef1636f7f0a7b0667e7f4ae2f25c4c217c10432cb9c3a9d864e7b85c267e5632acf27c6b99b99348dadfb7fc1c7e5a459a14040d5b97a3c861c3f547d4c540a25d7ab18ea711ad28b7719183631dac56ba74b74164b832036de3c095bc9a2629282eb9b9ff2592680a4baacecaa23c1266222bfeb4407109d2c82c617f9e1c382e8ce8a83a73508fab81093978600430b8cc9376a1223a5ea241ba2b4e112858a720586eda375eaaf60252b6c04a20d68a656aa3f1cd10900c25c1ed92b2f3d59c811d9e7592cc0f619dfdcf9a2e2bb92bcc69bbb94b77c4b688a6211a3db94f509a5ff7ad1914b0bfc41f6e9ecc3aea95248c4c5510c16a6158b4219f6192d95623358dae7125bc240ea46b8fcdfc32e364d7820f884d7f6e31ec0fbe94d5a445b74ad7c9ec27ff7d8c5853a8455a8fa9b89fa03155bdf6d027116419b8271585715ffe62e21e75c8aad20e042096a01e1b34b71d77221425d721d936b938ab5a62fdbb02d380db1bc3a576ba8cc5540f85b81952967689924b73911ed6aa4a48bd44f2b05269b79e461dd2f8d45f91cde83fd4aace122b60c4c2f559323f0329157c85daa35fe383dde25ed61d779a8dd942fb16e4b01da0782f1c038dfb02e45a4b3bf95301d6f3322460aaa40001175cb71da5054228bdff4028802537478cc521d81e8c541db8448ef4f06d84c372e6703eb1b4e306d2281089a09363d7f5c1418c4e9770e19fbc8b47bb3fdb97c89fcd771e8775adad1f5ef9e1273fd2cfeeea18d17713356d2d5dde00c7d8c86856fd74b69b6f870bd9a3936f0de99819612c558c57e95ac0d64fe2f906e69dceb00cbd2b1e5f3ffab4c0d6c3799805be28de8f225f4ea49ba9b97e801cc83026ad2ed615e408e654d1be9547cd4437d2ed3720de7d566f27d6dbdf6f7adfc6affda69addf46b8b3d917ff8cd03e9170ddbfced0b2d1017230983be1ee0405eab5056a06c049ae08290fa55931b5ea9b66434c1d607781d6d6db2c114924b2bbbb7b07fd051c06ba05b60e66308319cc600633985faf0cfb3c1b79fa6da6e9fc5f0f8b3dcc955dd9955dd9955d3feab8c49b181761b391a7c3fe351b7946bc60b311f62260220c1b0cf6a29db1f517edcceb657b81278cb091f8143ceb378b76c6c562bd76f504fed7cd089988d8cb9a814bf7d70380f7d7dfc8faeb47c86afdf5225e66208e3afdf5b1a73b008838e2a8450cc4918b2c7194c9c4f1bb4b1c6b634da7ebf491ee3ae6e9230c9bcd76b3d93c17475bb7b1b1d96c3c24663e2448d4a01134d481964332d172e8124c3882d864939eaad1e7eba91a451ed09d99a68f60a6e934207c3eed06ed06ed4605a242c1841a39427cfade393a6a24f019025b07c1f79a6a077cf97de268ebdf63157dd6f45cdaf17a288a2008bf3fcaa55bef05c12baf46d147b9c49345a92d921c1b65ea181c998c85acc80e95cb7e1b525d9264043347432fc0b2d422c7d002083048e9310408635ae4a22245b60893a721e59cb3ce9986c442f6355d518ea21a53bbfecceb956a1422d850d55a6badb5d65a6b78e4479b2ed42271e9eab57c605961cd088fd89a4b84f0bdd22e481e8803efa4afcc17c4bb6273a356815d3c1007de495f992f8877e55a8c53a32647036b243983c929e02835485548f468608d2483c929e028f8de1810b7922b281a1ff912b1768b2d2146862e5d34f912b15b6c0919cf2c4883f7c8594a86ba10f341ab58739692a12ee85c2d6d06aff46b955e6bfde9b5ce8741d13934abdcf9e3754dfb0e71b45629027a9d945604cc39435caffa85cbb1e2f55f216e6f8f355f044e942102d7e95b1522f0f185b3a1922be60dcd9bb47cc02d202c2bac195f178bfb5c373a7de178934e5fb67ce8f4650bb358333a7d191ee9f465ee768622043ebe70364172c5acf24014f06eface7c441e0e36373afd49457fbe70200a9dfedc4d9dfefcce74faf323eaf4a78743a73f71b7b312356a722460cd2467abec43d72075fab406698f844e9fbe709a49a74fb355a74fb38f4e9f622a9d3eb576860324b30221df1a2c0bc874fa95e67ec42074fa358b2f1cfd6a59d0e9d76abb9dc568f0f1858bf58052e9158ef9e8f42db696bed0e95b5bc1197c66f9a0d387f9c815f74561509dfecdd2e9df5be95f5b67748ac4d2ed5f40ae986f39f0e6d08f2eaa6945124c0e766c7a155fb869ed7b2103acdcb95ee18e4d7751c914f473c6f0f9a38bca63555104ce268cbe3e17e802658bb3489060aaaaaa5b83aa5015b2344797e892950ce955044ee0293c09314ac283f01dfc8898183c0992fd948c51d28223515e724f444642434a7e7458e994f84c89d12559dae992208990327469e554172ab962c7506f74f93548aef8a61014a9cba739b9c2933fade40a5d857c74f9b3875c915fd62f502bf04b7b4397dfa506472c09560616e475e545c35a24355d6a70c492606560417afdf9bad2ebcf178d5e7fd60a00970cbdf21c788e9612eb07961039b56b954b069e03cfd15262fdc012622d8e54080426d93b6c15660c5f150aa5422030c9de61ab70efcda7ebd51bc22ba2b94c213cbaf4e9bc21bc229a0bc6330c745046c23d50263daf745046c23de48c413b1b817ff41a558532fe11a5f54c365e195fb009337c94bb295e1938b922832e45f49db3e3e38b04b38f36b81b6cfa156d7026ccd8e07afd97cfdb74113e236af0c15584492104211e4e30410712df81cbc09154590cbad42519928485ab645bdca4a235a8d29cb5ba1b9b48c3a7d863220d97bfb5c79ae28d8bbf41c8ab6ba517e3293eca1c0f8e9108658c3fe04aaa7af091b7c0bdf091e7c6f06d25c447ce659522a1ea63ed89876d62088efbd5c003129d62d0291561a380be5b5e97d2564fc817fbee94d25d05d0441c400f693d2cd1c330006253df1c74492ee709ec7ffd15defe0a6b7f85bc9e9827faaea9b5d239e79cb266d780b1b001324d9ada6b6edf22a6145159f34317b98f2ae853e432859cf5dd1a67bfe940b6b89f02996b7102fb27b8efb23e3ef665b735e18d142570657f21732daca8eb891a9b582c067bbd5eaf97ab0664e9594ddfdcd56ab5582007595aa6905f41d9defbf33ccff33408b2e8cfd9acef11744a4d45da536906a238c7f34c0c711348b8ab4bdd0d442698f0913b7901e73698b95a8cf16f16382cc2a033c658bbac8250c5288ec55e16c3917d7692a58ff2c9e6e4644a1f634f4e96ba89253c493791e4848658ced989919e73c6d7d6a71790400ca784932a325e8c6a8075ae3301f46f26673456c54d65180189d471077a8b20b4680166e518637905e39a44d13d6f26417ae25e8cb1c51863f0048da26d36897471f30889c9c54529616ba594be20871846a831c48c8c1d2d7a703809891a72da39d5f07c08c06307912838002195b0a3090a3cf420c499343d3308c131e5053654a1d182078e748901c22eca51102f904d5baa6ef09121cc8fa49e1d416889c104881860a8a187f8802a49861f212c01c28a182be4c786231d6278d2021a152821ad7043939d0c272d3210c4c20d1e3b7e5868419fb1696ed61101ca3818b34129d54274221fac7362824ee9871ec647057de487aaa23258260d3e70a1cfe713cd09d58d04e889f93a7b24629f33021f634f29072c6250fae200aa83c893bd05d00d64ce01f4a7520e4c6238254a509aea230a2a5b465e7dc371625c161be9532f83f153a13c5391c55b3506632a3b4e9c0d3be08b5f628c7f0ed57ac5056f8c5f043d25f4302385226388acf0a3851ce553c7f8317e5bdda016e3c6111e7eaab628b5c0a20d636c53c13997bd931e4e4ee863edc97b9a73da79b37dda6a9f7eab9a90137571d7896ae04d5a71645582538c79341b3c835e6b1587b4807326252a9c05a5268f870597bd52129f759710828fda7b99ddd6029d562afeddaa3d39b5ce2e3091a18f7c89c90fee02262ac0bad4310102820a939f1c47688ec8e4ec113962c10a475aac1c5d39aa528f9aa6202571a18810ba291e9e68322c7c1c880b983139b2cc589263437f2097581df9ec30efd2a615618cc1255be40ddc06f7aab0e087abc0816731457c08af811bd5f0c22e754b4440f3bdfc21927f7abf41af5b51cf76b7f45a5a9b5ca6b872d26b43067cadb5040999823e0a0ea80adb93007bed62934f1bc247db69d59a7399ecbf565be7bb45698e0e2e6dbd863bb986b72c8eb6adb7d67be65cc35ba618dbf086ebbd37bc5d6b2d0e6ff6d69ac35bc594eaf0467bae09e1b37f794b8fa5459ca9c49b9b16a54c31ea8c3c7dc7d2e94d3bc63ed5a9c92e0fcfb51afc72dbc42d176b34e80fce5a732e93fdd76abce32cab96d5ae4f3d71c591a7f3c73ac797644fbfab51f55b55af38f2e733efa74f4b0cc551068ae3d774469e9e3f6b8cafa4e1b5b9d6f480586b6b4ba6a03956f888d3290a5b9b646a5403af67d065bd3201381ae897def73dcea4b456ccc2b3f1f6a96758a492960347a12353ecd8f677ebc6feecf36778bb9c8637ab6b78ab37d9ad2880236ebb0d6ff486b78959f56f56acdfd377ebe66602fbbf7fe1bd96b1c54f8627ea7a6276f1867bddba8fa3bee999330d6f99e2de478debbdd6da3eea9bbdb5f651df2aa6bd8ffa463baeadc0671fb5be7fc3624decb9b95d5147d4e93d4d97e10d631af6ced9e5ec683fb87c99c3696f99253f73ce79f15416536bad382b45dd7b6bd6464446465ae629e734026254037b37f69c74d22548962cc93927ad463a9614a95684fa688f8cf4511f011d110942ca50cea31a8e945cb0a7ac9e6079b9cb8afb6e857d53494fb0ee920c27e98cab9673152c872675c9345cd2942423588924236100927cb0c4a41ddf2c4904f0936278249a5c7d1934e90103a08917164e132cfba6899318064d66808d6822049435116289903501e236b2373183db2e754d7e64b22b30b6032c0b7fe958ae1cc86ff85a443c16d20e9b1029460d68f5da5d5a9faec6d39a09ae35c4c351a3cbcd70c1082bb2a550c724a7957874115dea94888c7e4c0cc921a16643da5c204385168c6ae832e648ccfde0f0a149095c8cb4c0561dd72b1b29eb2542fd76a93b1aea63899c0b5a672845571ee7b2b75dea8acae8a46743e78cb38173ce30181942e36464233de8fc5a26fb5a910e9806fc69a022297d94399fa2262f1415d1c089a48a8414b96039977d91963498cb703625c0f739286cf03d0d877ce2d713f6f36cc87eef27fc7e7fd65a13b3127de39a1efeceac0ebeb51f4eaa814e9703e8dfac043df1b412445e80ae67a0ccd239734d8a8f5a8f306a7d66b942c6529ce836bcd5ba7d3c931f66ddb8c016e856005d0787d91b8c5d4a6b6d59e9c20074f6403b039ef09a8970c1fe05cec673a8cb076734205cfe68d32ffd2efdfa6967b88b19d7e96ae8d3c5fa9a90c582c16030180cf62ceab7bd7fe91df027f8938b737690862008debe67bdd69f4b1c6355a703d2f36b1d8f9edf4640ff7cb97b3a8c7e417d83df077ee07f1eaca0c39eef6f7ffbdbdfa8d37a4f6b0dc3d6f5c7f35a6bce65b2ff5a6def1b98b8c363b3753959af35e799f5e3b39e158aa3ce37bbd1fb65e8c17ef9a0b8a35ffe3793b41bfcfbfd7a36c2a840fdbb202d079dc927d71c000a3e623c0182c94c1298192db2550a32cce0a487ae052c645fd34de9c4e89470a0058174da189f2758392b4b9e398a22c28f2820782cb8ec7997ba261f7268fad2840354d3aec94a65c165df0485ca96b80906213d68b021ca88932702912e2d1e2152689ec458a10540e880319c9f893d1d5c8bd979c965b418262fd589898849870e18c3616a42460cf7988e544161f23e165cf64b626e6ef4259db4522adeb8a895ce39fb0e96954e7c5992ded856daaab5152db57fa3a2adf459504a02a5a2a57405b25acbf90bfcf73ba827acfdad59f465bfd526fb36abd5cd325915399f9d7a1efd7de9bdf7de2935eb3e0b1ad6fb372a6a99c2057d2ac64a40e226fb7575f974875a392faf73da7b717efc2ff2e38c7178bb32d739b5bedebdbae6c7df41c69e77bf7bbd3ae7f7853bbbdfafd27ee16d7ef3e5dfa6d4e18e37a50eaf68a93e61efd6e3afb48a6771bc3817372e74dfaffbfe9ca6efef47bb9372cf3c241668ce39e7aeaa48aaa8d0d55ca25b0b55d55a6d5eb2d6deab4eefc5231eba12f7d3c470fdde6e40ee3bbfee79ff0d14779d8e77a8d37ac70fa8df5da7e238bb3b99c28e2878ea302eaed39e3d3da62d4b8c5f4eca15f9c349f91d7d46b3003bb9a25a8ba536f419dd0fd7730b3d0361a669a1ff33bae36764b1ce57672b4a0fe90665d0abe8e57278a0f43fa1bac1a4ffe5aad5aebf5bb4313cf05abf8ab3994ca13fff8bef3d9dbf3bc52953588c737da13f7f075ab489b67a2267abc3dbee33cdc6e18db66e6eb257b1a76f1d8a3417f070c7dbd4ead0b37faba27845b902db73e9058343707fe183ff227c3004f7876f73ee765dfe9c73ce3969f8000b648128a5b45624f26badb5daaa3ee55b6bed9d7fefc573a94ff918d3c0f0515e651a18aedf7b7d13bdfd7d1eebfe8d0b2d8e63cfd60bed0d8b77e80ec914f8f52cd47f83bfa76bd1032bee64d0b36877e24e06fd8a762753c8d77407b154c392d2128f25a2a59f251d50c4404103c50b1426261e4c4450a298743411351935d9681a6242d32484274b083318f93153820e83245cbe80a1225594c60b2149078ce12c4df59b2e754b669a7800e9423515f5b850bc85661ca89da2b0da0b93c26a2fd4264ec49fd0d0a8aa11358547e14ff8930fa01881226402bc03ade7a4b54e0fe4dcd1b7fa3d74ce14b6dcad160d8a4f1df24000b438675ba9eea9931659cd89a9aaaaaad095b5d5eaea6a0ec95dd6f4f78e8e4e9d4fb1c54f6fad09d86cb6de9001b42c9cee84376d5b3b53023f32b49ec914342c33f6853797accd77c95a4fa75ce4ad0974c0190082535e960d6f5acbf9e9ef764513ccdeaa34285e7f6fd66c944f9df59bcf5abae3e73312c0fa0856e0d339de3428fbf205add9d7d6a8e3b748c45451edc79547c75f85aa2e7eba64d15c59d549443568f5b8a272aadb79012aac81a91bc1ce5b8f3f0c1980bd1717a01ad0b70fb83bf7823d9c495aab547b36d6a09c959e8db3471f25d5a54171fb74d6010e5491a29629ea4bdb5a625f3f79200d8af7d85cae5698aaf6b841d46756adae66b4ef9c5da5da52edba41e00e5a662bdd634e4c55959f28bdd9a7567b551fe3acad565797ea5e3a7be02aa6d7c7554cb6b95e3f4b296d4ecb15b02ee76b2b168d2d77abfebe509c06c547de6bed3c8a8fb2ea7e20f3ae290d8a8f7a26e9f5b74c519f568583b456bd3e522012cc7ab54c41e70c216033a8431ed9afa557f66e653067f70445071420507ca0043d11f304cd93dd93aa274a4fa29ee09ee49ef07842f404e889d0930fe690943ad8f802735a6bf395c9acf5bcfd93628c31ae3dd7e29a411053aded5b1bcedf96d6a6f7a3ab5ab107df708a37b7590e1f7c19ad17ad7cbb37fba29429ac17eb9e062b286db6cfe37ccb649c6fcfdbf6eddee196328517dee8f6be83f045a6de146f3a08c59e4e776ba6e99efd6da9b5d6da29354bffd47fb3af5bd38ae16d7fdbebfb3798c31dddf7ef6fca306396fd29deb8d86fffb63dd18ab3ebdcd3a7fd7a63c59b6b8716202d447dd4d7474b109d16a12b1c4098ba9a72c1140ba67098929a829a6a9a529a329a9a612a684ac8548fab2919525559a6b2fc904527264b2e8b51161e596eb0d666adcbe2833196734a89856a7a9ff7e53afd3a053e7dfbdb587874fa57c9a877575852d01285250718ea76423e34b71f43218b992c62b2e4b2106509c262a5c3f2340216a22f588076632a65c165af458c162f7dac3d85d913013a4250bbf7de10d43a08ee5b99bb2328ea123de3b87e04377869c07a892e91b64449e705a27014b446771abcf7febdb11d1814522b0409248c3005eb6bebbd35ffcd19c69522bc605fb43ac458cf4260ab8540a7f0a8010992d3821d78f0e02189ea0e22a2aa1f2ed47ce480e1c123e70b7f11f51104ed4c4695303876396c988c238cc681c35c1c739773ec688e301847188a637773ec72f4a8f0248a9221b62c1dcd1073688188921b391e4c612a8e29a3aaaa0c898189cbce872a5762a4f911534369ee724c5b254b5be386149592d44e4a0a951492d4111da4669032222584e20a4481618521456092c4e099c0c21784c4c4e443250812950b31aee8ae4c5d017225844a75c018ce15253c90c0af1889fa62e50b48abd698671b1728836e91588d73b6d6846a2b0a1d15361292d6692fcbeb5a4cc80992132627cc8e09d6f65037c8350e6601e8ae71f05ab6e080034f7bfa0498930297fdc8c9e18a8e2b40ae8470a58c940857bc48d5b0f26485ca0a122b4b567a58c15901b222146565c527ea8b5490548f1a94a8165c3951366034198b2819d9040b9e2c557ce8a3ecab50c1aa50a9b254c5a80a0d555ea8f2a38a095542a00204151da8485161a292848a0d545ea0a2021511a086802203f5056a0bd412140d503ea0703c0df164f5d4e569f794f474e48985a71953cc4c2113958b7a9a22a684910e741c2911f9e164cb5510289ca09c9c219a62c18612f3080682f012e6c7ca071ab81e1ba0a6d4e0040c0a379a3c1d1b672b65a47e5ca03a437001c185304d5640ca51404793992070f860cb6e1a1569411719e2595b8b08f55aeb97a8b6beaed8c987de65cb1c1dfcde3a02af7f35ae974ea9c912f5e23008591fb8312b04f7a8c1ac77f0dffa7a961feb3c8f908e44edd1fa74005e93b3f136bd4b9e27829cc60482b79bc653f3213ec487f8101fe2437c880f7510d4df98a7dbda47e4cf35b9f133336b24f0fa2caa9e85c026a97abdba7b46ccece4ee899cb6031f2f95d69ccb64f52e8d77a9de254ed52908aa4d50e6c18694299b14143c5d9c6e8ad1c5c9e8b1d97cd285e9a3763272f2e2344583425ba23d394006e4730984e432c38a8c9394500f695ad4283a13240a4d2e860d39c40604b0039703102c637c8c702aa50f9c944081d9314bd080d4697c94c1fd908402931154505165c30727b460c30730cc1d52ca337384124e496a8922279ce7d4833ba5809d829e829c6aa870f2f93897fd0f45b2d6317a20126699ec6b52bc1c91e2d4479953a1454a521f794e8a11974224c7f110293fac94a9184f1c08a7b1454a0cdd992cc50426e0cbf06603a59452ca4d61b3f106f62c9ece7a70e6b2f1842cd6de7b8b3b334d7789200b36f27418b6ae5dcf67a3adf39fb391a7cf980d45d860d683b0d968ebb0fa2cd683fc61b3c9df06d7c46c086bb9f8ac8aa367ebac190c9bf7d2f52ca837836163cd465b67d99adc1334f274d0f6149cb15e96b938caa6387e8d38ea7cdfe6e2144171d4e9d4f5ac190c5b77fd0c23f07ad7df19085eaf7f8f7b6bcdb94c46abacf26ddfdffef6b7bffdedefe71028027d357d7e064d21d6f30fbfbdf7dedb76c38a7df8fc3ff1c63586e28deb6fe6c37e3febb97833610ffe8d8bf5fb612c18381b6fc01bf0fbbe87cd6840f8278e56943abbda936ce626cef5fbc1a72f027dc5a7cf04fa193485603f9fbfac925472279f6ce20d4c0c9fff7c4a3ffad18f7ef4a39f78c37ad87fe18c068473d783ff3deca778e302613b334d877d0fc2c097bff7cfa12eadbadca3b4ea01987da804adb6f83484684802000400e316000020140c89c4811c86a24050b37b14800b63943a584436944644a138208cc3180ea218866220046000848120e41c430a3a1e79e30cbb677d710151ac376e50fa3de87a5215227c7ece40cf3078ca2dba562b5dd9002999506c8d4deccfdcb5be7847fd4559f4f4cc6ff43d35139837a005ed00e53ac7fe1d35218d782bee5442349a72455d921d27296e198c9e47b223e1b03c961aecaa6620fba7a1621381bd421b079a5f4632713dac180e84c70cc8e36d959fae16d14c94b860fcb43016e85e7b8f9e088230738f6140fd7c26fa7e4bf2ef2d7158d012c018ac04f0730fffc6b411452c714d0bc6bf38cfe8f507291abce7babc6575a6d1a3e52cbceaaa88ab6d501243dcda2cf170052fa3da848ebd97a3229675790e9d7b0e3244c2880b8a72d1b9e5af527e5634d05395d7ac4ac6870018ab49e0b120697879189ceab41bca8c9cb044e93e098f696a9c4bde174e4c327ef3932e956d787c04ee158f44f3b0949aa4b89e38f459a9ae1790a5af46c0aea1d25aba7d822ccfcfef6d33244ce3d026f4c62ed8b9166244b0b4ed5132bc0817365117a122cf12a19482761080fe39a10bcd1bc938b330a3696d4d03f3217e3698990b9649ee8f6340f009228bd6874680b43d38255cfafb72057511b45a33d9e3756a45781435184427797784853b3d75f3201ea1e8c71d2c0fb95ec241999f6139ebd1a59aacb91dd972e476db8d495151dea51a02503d34f216d61566a6072575033d8fd037e6db2eae5dda6fcae1582e54a785e859445b3226e1588ee0080eb4a607f4281c927ec25364a140bc9825fd81b077ed46d9f5c20c11217350bf9d136231695b7ed471e003f23d18e7ba8fbbf1a15a0a47d08c7db2c21406fc5d956e2cb279b28cdb359d71eee873dcabeedf0d86dd08e3de606f2aa0959e9872448403829019e22c92a496016f292b55e1be57733b7bad6f3b1a444db56927f20d19ad6a297c988e4d9301881c0efe7585e4ede279884bb96618fafc2170b2049642f84e81f487584192fb2eeb6c8990d87a9c7718ea0488573c1229f335039134d1105a1a692fd10fbd41435d7ecf24eaa46110dc2ea751a1e35c1954b13e29e644dbd6f38862ce6153a728a1b6f9876a8fa42e5bd03dbd02feb0db6488329724651e99f06f533167f48588c17926ab1735bd4d71afa211d5dc6c5c84339d5373131603985b05b630956c3d6bdaffb8dd047601d210df6e6f9a4cee40b11a0aa1f1e752883f95719f19a77cf557fb6ad5b8bae85bbe33fc21a55a4b896eac9f98f48f370c3fea23885016177e58e3043d13881e880bb02c04dfaa6919381a0bc91c6df82096da0154bf94d664e5de0f1e9ebd132a552be371945e02d30651400102a2414d45d6311a92a3ccd1bde97d7b838a58afa59692fc1f6796d57924eca782c464ad01c79571424505bc4edd76aeeed8e254434cdd2d31fce6537458a8cc36ab3d32fd392adf82974ac80ac72e63d68288c27872a055e4dba68807a9f5c3a22ca8e438c4c3aeaa0bbfe818878b1bcf759ba099aacfc811b5229c10c89967282ad9823350d3b65c2afbfdfa7c69c658a50032deba4a8249a5e360169a1f6e3b4fe2e270cfd93114d22a61a1b02fa040534de3a8b8628853b2a213815360c7bb3ac8938cee52c123288f8363f7ee55034f49754861f30e9a5ce75151a3ba6cc4b26a7236d67abfd0f1bcdbd27946c408145eada9068339c09eb85ef4b2a70cfec29ec167827f0ecb9303341962e23b9b36ecfc4c55ef766e81e8d6be732d88254197a640c4d677f5db20ad2a62078462e1a000efc075af25817c433fd8450b2e145ec7380196b6f98c3d1c4508ac5c195d4becb41f60468ec8260f011f5cb775222e2ce299a523828d56b71d6298b671deea211603ce1e7028af774159d2318c631d01c93fde854b92c7782b7aa902562529359a4e4d532d3c69fb91714488d273f85599340210fa87db108f1accabeb535423cadfc4d8044c2cfdf66fd621f05bf61bba1ec4aa5faff1232191274c6ba34d9fe2c7f55b62179a923740654afb056a422e2b6d402605da03e478e59902e28e682d9f81e154078ddfbef1887662897520b07d0dc581f7eddc20f0ab674afa5fdc805e2dfa83f35fc3a7cb7927433c386c46bf2f229d29659ff8a79a9250c1be3d6eee57bab99bda31148d7a0f9af2e957ff4fd35e05c858c040160a042a9d8420253d903ab7196e9c101286b3d2c5d471cab112e7e4e4c454e9dceb4cd991045d32e729f8db1726d79b4ca952ef8e809da2f2cd29624110de7adcc1c9a351d5857dbec16541884cb1ef825242e9029f654a21edae118573c578bd80516f354a90852558b2ed2cfd46e13c6560323c830a7c5ac0076d4adb922afab1d3183b6a3b2a8b28b68e01da7b7fa01744a921f6ea95eefce9fe5896baaea7101a7016c206c50105305a0da7e2ee2c5e4acef16a8f857340291d7915cad1874ebf19daab78796f911836c58be7129113a1d820a5338a50e3ec85ecd86048b3970c262061303843dc78b9887503dded8fc6340e79370e513b0d0f907697c582991e7a30da1b543bdd54ef2e7e037218c266e75144c861630605b74a30165ad60568003b57e142f24307dabea96f204a36763e3cb6a39afc367ca3203a6814c203ad810b6a742fe145b96d4270fbce7ee7f2ad10afa6076eb54b1fd9493a938866ca1838b97f063d605f2235e4c0ff06b8e0bf2117fc52e086bf8c150b623936f306be5445bcbcb930255e7829064d770d116150b1cfcdafb039cc9cd95a9374daf1f37c52a7ef7ed41a2ff25230de1705100c6b8db6995c9099249baf99248dd6cc124d964cd2864b8649c36586a4219149315db24f66bc344832591aa5992d9b24992c0d930cd786c90c4bc324c3a5799af9b27192c1d264c8e89f415d14b2945441f1c567bbb161710e26849b1326443984631910b11eeee30e778f6e30be5419c9c597b2ea4f1f2ecce0d22db8ab1ae1b473d3f54538f3f8583078cc57c58ceaf7b4ae9083dc3d6ba7128609c1fef4e4a5a582ce471ffc95e7ee50f92c1e94969989ed019f7e4274c53066a05a0af323c99ed591bbf18c8dc79d0be1d24e02b48234b59e82351e2a8f7e2e867a8661b285d0471b65df2c44478966a512d9b868d41649e4e627dae1df07c3001aaf3f1a1eaba9404f0e6a97576fc7d4d5cc3885f7943ae5ab12dea8852ae703e15b43bd1387328c6e6a9495b55ff50e677d05240aac185deccb36606875f06ebf0714c0b500b0ade0ed5250aaac2f15b6d66304f3e8d7119c358bb39592d1b3700a0ae78719a467fefd34a1289b61182025810ad1aba9fface65392fadf60ba9a5fcf9d78c7330a074e5590e912c9f0a82c766f3674e38b4266fa147a4508a0f6449763731c1e35d511d306b4b36cbe21031e71432bee1a565ba4489462a6e7d1d2eba769294004d482a480043b1a69bb036d518f491eb7af58a0e4bba2ac4e61c2144dad40e29dfb5b53939473d54dcd9bc043a538709d84e2cdf247d04e377fd88949f1e4af8200af82e7978f6c2dc62318a0fbb56a3fa3a39bf75f02c4f0e3f231db32741b34f4e80b33657b6e753a845c08806821847aa7f3ba1a7e379646a212284f2a962968f40cf652b5abc21f0e4c8fad218c5c57d0f44270d082629cb30aa663675ba4094585f5b9319317e98f05ab3bd3091f757955934ea4fa002a3ce3b325fecaff67dd8b977b06ee4d1eb5bff0e57bb2a934c35ce5c7b8253431e25189be944bfd3a6ed344b1a711ad749328cd7777dc364530c74b8ddf1136a55acc6bd22003239e78485a4f134180e89932d4a40b1e57bad9b30383261d5e05a552a2afe28b0da454b713c420720e30bd3f4c210a095cac0955de0e1762821bdcbba35e5619c3b00392d507334f237b61aa4161290a8d724327fd6242862f818e4861828ca6cb74e7cbd9239b778b4068ffd84cbeccfe159e8d65d6fd5805ee7c5db0f3b6c834f9aa2eb9b554e0d68ae63c9b1d5133394b2dd083a20defd1a287f6ecdfebfc55bebedb2f52ab25129770c2365a8f40f4b1a856e040c4211a2ef73138370faa2411098b87341d914f4f96c3c58e331b02775b005a2e20a32054d0daec964f6be496513451fb37e40d17a35b73b1625acd61ab3521edf363d9fbc4e4408bd562de3f16717172abe931f324d0c60c1323f3eb0b16519f0408e5feda13ea81540df699ca3f84eeb0a53e8a5cbe36151afc2a6a2c4b625a5963fe8a88143f50a9ccf3c2e7ee87945cdcee7045fc74b1dbe45cbf2d28585cee98cd219cdd313796ae830acb1009f85822be596374c419125e6fcc72e58e41c98395f1b21326310dfc688589cb51fb6d0c46167e8c070c0224ed15c786ed8a51c787c142f0d294ba0639b17888ffd5ac3b6000001e80662ee85a26b65ce6b459f5cf6141ba7c47f800f9265930d3180a9596fb72d043cd007ca930c1d16a750b44604aafbb620b7e15a3b82bb00a28f4ba435919611b06b6552d7fcff3be09ac5dae05e647948cfdbfd1185582d79504d284e722ebed58287e8e7264d94f713c0618d166b5ef28616b29e6782e9b617d27220a6ab5b3315bd7a06068c58695ef0fed89d88c70f54d9b903a6d3d878a0443a3c9fead8a93534529ebc8e5e6d0a3d69cb16d963dbdd9f9fc1278184643368fa3975a272f0be8d4f877251a45b51c9d51aa8a6966c0568c876c47b4566ba3a083826b1ae36bcb8204898c71133ee6c2b1a733d6783d74d4ae57172427abac0e4af751602ee696cd0d1e753c48046329f797131d9bf293d202f06144042c1223d2d4c98039435b01dbae833d82e58063473ecc82cc3979ccb84dc693cd205bb8b18bb811f5d86561831ddba4311f51a220c5a17287b988a2dc7d00298c4bba044a5c30c7568d61ad81e603e49a8b127601fc69fba36e5a9fbf8765c02d2e96a1e168575fef951889cc5af9e2e523ef487916aebb315f85bdf68a2ea3c5b0c9be4c341060dd468740620f62fea3c9327655a53151c545bc240117588fb40fe0618b9fab58a163d57690d24b8c103992de0d11c16f6c3a641431fb7753a0f03aade1aca9a388701d7d40b6e0ec5e99164b6442c610f401494dd306ae111ade5a1ba08c4769ff399fee483ee01325ff759bf0ecd79c3d86af17a2959ebbc37101ee28a0c94ea3c04906f563715b31c036de0b9d40b67f420d6180a94acd98adbcfae163c55d4d9639a437365d176155acbf527e990c48ffadc210b0130b668803b02032b0546f1ea7cb8964282327eee1cdd8f4505921c141acc8657288d299d0eb6368bafa7d826caf0c623903f1292ad434355d5d167e4aeea565cdd9d5509e2461572d2e785cdea731305d60323b784ca2b5ff5d19786c50d69503641cb81cd9cf8665c844686c9e29bd1b2e220154c637211430bcf329d0dd613731d4597eb06a271f78282f190e3372f838738495be94144b8887f16c2fea36a1ffcf0436459313642f908018aafb82aab2a42155bfa576b2674072dc9d0485242613c3bb9fe419e694a91d23360b1870f0bb4cec27e7c36c2384c008158fe012b4a1777af42226e9a8e699de3b37e07ce1e2c09194e8f95ea96d687376f6ad7985e25824c762ab9488a4c1fff773c614f5819515e98883336e98aaeb540f5dfa450bedaf8f3900433532c6a89103c8d6dcdea0673442b57072b10c162828cec3dd5ae8eafb2c288d86b61a5b272a0d25fc357aa856443c4333463ef93b0ca879325df495c81082a27aea57baca9007585622e2bd595880281948f7e3b1ad6e080ddcb61b29946d05d7daa6e02c16220ed4586ca5285a6add8c27976c1872c2b056119c6a4955295b2f4d1e412bc2b23247ac3186f008ea66e0de631253edd2a34276c81f003011b4a005a900eb35f5bc0138910abaff192b38e1e9a39ab2a3c246e443a15d16fd166f45a7dee18b7c03c48a816809cc98b35662a08fa71a39f99f32904405702fb415f4677e43c0f39896e98b1760a64d65e830fd7091329f946c14e5e721ff3fd19600a5421a7c215a7e6a97f9affa31dd47b34333795c239b0ebb23275cf8395a0c01d18e45c7b1a19e2bbfa48a965eac2e0eb6a05f258d2a71b71320c9bf84f2a2f63777b2047e9a45ac494515d416ede06a0606b0ebe37bb9fb10fa2a8ae6ba41aac8ea3e1847f1e194cfb7bfab90a6c447a09ad6ce009f1328eaacf804803a409c72b721f9006588857f00611c3cb50b04104f86d480398e11fc87718cd42b80f71a12719f5e532cf67c4764b9a9e872a1a1fe51f0ce686f43dcafcb36f5d610c0cb0d006002b62960a4c056515ec4174d2024e75b92d7413bcb6a13a8d735a0ecae96cfdb80d9d4d57a7c2befd218320669739d890ae623730b4f43a4039bca446ec3718508f0e2cdcd507776397b7d3e60969f7622895f004f9602cb50e6a03493b108aaeccd83501723a444480d53aeec726cac2cf9a105520736a0c33ab3f24897f31df278fdd1e7e11b7521efad34bde19782c4ba524d5c5c28e0bed9686b62370c08214a8a647467e2947ab59b10229c962fbb98c215837b04e135681ebde7a5cd1d588cd558ee3260082e455ba2a64b36002916f192ec72c366dcfa81a2369d4094cbc2432dd124b9f29af62c9166c66bb7b16809f1eb15a08273892621d5cdc8176cb781ab8bdc8409c0efe18abdd04904bdcb478e60ebf2ec6331bab58e54f4adb37c3de938d4c6b2c289e97e21e143ccf1a1b2d10c0dca57c1b01d84981b552826d00c6391a167810dcf7c2932fc2c1acb9557349c003321ec961cda84871a325d69f8215541942ec39339fcbf6cbb77d6febd36944e15b49e0a6aab84bdc71ac1b9c7e8f082a1fbb6cb11590fdaefc0fd6372755fdec689c200e80489e206934c4361d09d9aa4065621ddacf12aae01c938ce56288b1b04ec4c69bef3312531ae7c2fe8a0663df1bae1753abc202ea5f3fa578c041b8f759ee98b9823b29e66a586f4888bf664e9df2470fc499e918ae0b19bd850f404b813ec27d197623f54ee6472985b5286ed30e76888d99f63914d96b33c7cac46f8cd34fef5812208f08341f5789cf072ffd18151d458ee92137ce4b1c36240f615dd252eac59aa570e7ec9ecba5bc46503efa6749e01e9cbe8a9a84941832c5871f1cda0fd08537d26b54dbefef25ec5ca0d97e376eeb9e668a39261b1f764e5262702135cbfec2772f2a16a9605d06df352db1d4240a2c25251bba42ae294875c8215b0255ad13f6df60b217495a03eade339d9e07230b3ae1466935da623a32a5280eb5bec531a3b6e3c66c3932b778f64bf64c6f8d4d65cd972e40dd16b139af7c6c4c93050249288a278af928061cf0610d47b09ecf9c68d9f0735f6a80e9f40d58507459932e393b833a8cb34b61c11ec2bc1487a48104352ff7845336cf32eccd7476c328898e80650e82d2d4bd0626d44c6191213da7612fea79c91132ae08fdfc0da05e5eb3f719ec3d8b80b019a2e0ae044ccaf76781b2d5202fc5903ee3e74b2b9aef32c97fd5708969357a97a2ec2ea945d0ff89bc910ce7a45d9c939175406b01ac9ec8a0b4bf261cbc4597ee3ba27e04df40afa3c01b49c0b4e0bfa30be65fca873a4579f2d874678d2e950fbbdea35da8aa9f1f47fd5fa85f27aabca968c63b06ee78fc7aa90e66214aaff97bcd40659cf44cecfae690cfa3163361a70cb2cc8aec9d7ef87859f14144ff7da24eb8a41c6f9519a9c6297555100228f2d4c1b40faa2331f103578a9e982a027c3cba022e2a7164b435a6c3db9514ebacd8afa8df1f0221bdc19489e5428cc9ad39dc882a94fab81b5ba495d61492b00a8680c8eca7345bb4978d824f055cc6ef2dc6e920f63192a88e9a920ed3a3fa92debab5df81247822d7992a1dcbb8e46d469f30478b3ed1168bf7bcc450688265c2f92dc66a6b7c1fe0dbf3b307255cca424b06b4892dc26da9c1ed626135061d4673f919993cb6503077fe3973406b2400546a58d447e56338427c86519d9f60b8a31d16a8a0ef2c5d0bb343c2c48f645e523b068b3aefcb8334d0660f4fc965e94eb25316616701b8e982525bf16510a1d2185158a546e24c5cb5d1e20b66a2c1f50f6659308a5f519e30c89f3551e8efb2a956a3d3aeb1f3c8aaf3f6488a471a05e7032bc129c0c57d1cdc08a70f66fb2a02bfe4d55f12bc1696025cca9b89111c5f20a1cda9023562331009010bd8bf595934568054560d4ee1e388cd5e770b5e7b517664f431f38b36611193f4e288d132484523e9a4c55d901dd45fa5241ca603822ad0b84a69ce6c8cb75ffb1f327d1d9cfce0147f2e92f903add2d42280a935b4e5ef989bd3f55dd9d740f39a7af7f8a14a5f32fc2cb2334e537474ed41521c087f7a4d8cbc04cd339a55cfd87bd7f7a5df15d079c18f4a84248dbf659da0b8b6b10d61c88d5979c81d03e2f9522d43fa69c14c522779886b666142f9b1a5ad581d61cc2c54a3a510f1d6874ae4c7036efbc9ae3b92f180da0779a40040877178b73b3a21db61f83a4356c73212d29931fb77a5fb5eb393e6fc9a2a66aed51e20ee1e5dc7f1570ef4acc72abd90cac2c0d12f649b2639d546730590f151fd32a3d7acb0183ef70876c1148b8d2e34b55d9c2a058cd4720feb9a3d6d7d15b9c4e8cbff4bcaeb18c64da6f9acccbbadce2c64c1841025ac3db6380a467ac19b3bf3b9c9a794d99ef6764a6cc5740e62f648fb97d541ba12d5e1896b124302e2e025bdedf51299d5e0cd0e58e85f463ee5114f3d504de37136a53ad325e4f7a0c7ef2990f80cfb370d8280ec8bdb86a412aa4b90dffcc3483f968dd1c9169abb389aba30c907bdd87ed58dd2440bee10ef32117cb6208d084a0ce1f59d89a32fbcd7c8047208cfd05e41e18b82e5ad920a784c5bd3a7073ff4355a1f1b238b9873f233a02dc068b92ca7773d18246034eeed1d292957953bc56418a2526c5c1800ea902be89741bb1985e83bdb12a6c1663204e82ca412c04666800cec49d42a0a59b3bdc8da669c267a53322fa0113217b74c301190a639e87bc0d3db2e9fc3375f9410827b8e886df8f2d997d416111a6d99ed4eeeda07121224de70987d6f7cee8692a9cdc744e443ebec1c92620eff643b022206a20df919e1adc8b2a1cc32bc047f6aa73f89679ceb655a39eab5ffd8abd5dcb5ccf015766e6e4cc2ad2af56bbb77489b91a26dc4b9e4dc8d061a9071b44ebf71329e06a235fe662e8dbc8bb1120f3e7ba45ddf9a2135091fe43eeeacefa60e8eb83c26f6f12966bda576b55bbcca9e2bf1d1a9ace22f38f44849d54b8efd256e09b023b4084753bf0e5a034fcea22d6c268873d812404cb4565d95c0f6b9fb9efa56100446daca7f510e668511a53cf06e40b079fe44c7ac28d0882850f760d60018bb91b182e163889f4014d23dd48d04a124273784137d468ae875e1769d17d6fe6328746093c55e0d5fc8351c50ebb601669cdbf59784b7eddca0d033e9fda9bd5627dd4db098ff519f935c2b7677cbd279e140345b2f61ccf67f87d7610d7e6e17b86b6b7c5fd261a6c47a049eee9d43b7bf8583325eab20df55c182053492d373b02bd9484b8bc1eced812364c16071cb65e2c2a55eadb567a7a064395683c6692d11e270c86e562462c37b10311378f13e87ec46207dd1d4d6a3045fc4179d5795db40c6c12a9c9772192ddcf6ea01edc13608fd19bd3fbc6712eb5ab651f52a64444a90243da94c0910b31201b1ea8b0a0c47dfb3bafb3b42d2756a51e9fb9058600834c133e0b528ee7c7205d1097e3eb6979d79f44e5c5ecfd9ee660813eb56dea455ab59553fdda0e077625644f988b63608ec3642f5347867e72f47ff1fa022889a87d6c62e71f59e2c11b03a4d8ddd03494cf9d397ca03bbe3da6c904bfdace0400dfd1fb59e5b9f8a2df525f135fb0e8a01be3a60a803a6947b645ec1c880531323384bfa81d69213388cc3da1dbaccccfad4e7dec77bd3425bb10f2bb8c0725a1c8b7f86962cd118dc3e3cceefaf1bc9e74485676922c155886ada32e8c1d337c8e37bcc84d2676352096697b890afa3a1f9a40d97653091f49a8fb114c42d73e327c36b14bafe7539c3f1ed5f6527548bdee31f0ab5fc2696852d16d812e6ba42d04b61a06220eeb63200279e58755b7dfcf506b6ed88652935cdf01bcab902140d4cd1a4cb12e40bd2274e82a1b54b04f0e4550469c42a6b14556513adf6345ccb29c40bd104273dd2beb5d87bfe30b5ddb1bedb0dbacc8566171721a4da329aae88c200f6d203a4a151e2b65756f26eb895d482d66d1dfc0844427f232bd06945d25f2e018e3156103c197ee55fe2c3c687475332217b06fe000de27c83af9ac0441a5ff6dfe5710f24b08b46cb4d96552153de0bd48717f9e95d8806e3549975e547dfcb48e96ad8db492ba24636148b4987893a113e823680ed130165220868dda2c0dcd14ad2a856ac54fafba9ffb7d3cbccb4f97a1b94bbe75a569f7f06a531c448e075084210cfde2ccc243cb6bc018dac5e625d6a1391cfd2f7698ed9c02776e0302bf5dfbfcea57a83189e7307a5ae4513aaef3894fea66033865035bc421a2b80941d4120021cdf586e60396ffeb083285aabade4eddd40f3ee126500d413bccf0e2ea9fc3f347f882cdef27cd437f72187c5d5bf710a12147fc37e08ebf0d38e08f0127fe33c8057f0c38e2a72147fc2556502c1ef6d5f7668d6114c30411f748a61aebe79834e70c5577077e8a6acd0b88d674d20850995f95a987ab3b7272385262580d5fae19ed019f337ca179fa6be8d977abb10b1f7c2a113f3a643bd9320ee6bc10ee0e2c288a2da4653771a2b684b43878ac7b47a54aed6db61ec5655447a4b3fb86bb08438e516aa7d28a71b8a5f31a57bd310990e04d85a84c53237e1d03c7dc0ad63e0c521887dd87cc3fa7c880500f46fb7cbd0c95c1a4f7c5d64bd48cc803e468241be2cae4ed5fb0c5011c220f6147a39b3699c687893e0294e47b0cff1556303b24056fa98dd5bdacd5e801d1547632017e01817455d326066ff1c8ae8dfcfb5c781955f3b69c068957e1339e1b590e1090932d95e22367b86ff3636dfbc8741e8dddc5babc65bedcdb366e480ec34386049434d30c103e64c5679d4532963d6314505f6140f0e8fde3c2d6085bf477899347aaf8f403c7637e94198c9be2e12ac398f2d9d7bef8aca0885adcd7f19498e362a83f8eeb85cad00133ba0ad78b3e97f5820cb9a0b33307b8afdcbf9508515a3c78a776f38d2db28ac02d99a7da89bf5bb8afccf808c4ba6b61b6b934e8c22ab8977d097bd7ca6f6ed76af5d637c278276ca1dfc801688223479898ead1c52f126bc87a5dac50165d4b9d0bbd54cd864f09774d2988f4d2bdefafc4a00ed4ec223f7393046525c6084a3770bec1c6570a646a271508ac1b7edf7ada910950a114a1014580d414bd98e5ae64ee664d93eab0f8b22b3777d842e59332b40b252d838f863f2ba08297bac71b3778525b575304281fb889cec681f9822e3e01b9a75c76fb94c6bfaf2162f72c669fc0db07cfb3ffbabef970548f64c91e20b07a703cf76f37100a431ea6522127309b6e890bd0de9968786f0a17021d60d1a380b0118ee800649a91e451a57b17d54b80ac8474b44c96c5c2863c217f6411412b56a7eaf3ae58678d96e893e6b73323e29d4aaee271aee5b59da60656e00f7b4aca80802334924ad009d710855c92b095d42ff8dfa1b7b88666001955c1500f1dee1728cc33429e92a46cf65c8c6d79219529d35076db0c8572b72764494b616a5faa510dc7a94e6d1caec8c09dbfc690c623d97e0f098e8942aff821b98dd1cb0a24139f0c8859a5891e55ebc8df2da9f0414800bc8a5dbc5258f7a9825458a04ac4dd2860d68103763a1d5ef8b045396afc7e1af769a829a40bed803c53743bc096784ed4044fa39adb1a44cf47da020f938532eca91dbb2ac07987b04b32a98011c6b5f6335aeb7687d779285324c6ae16d2d4a77aeba3cd50c908248fee70e76a0428627487af0da1a2a4813be193817c8f7fb93d5b1b1277b80741e84e83b84345b69002e744bbd4b35b5831d1904085d2e1840a4940c792c12c03dca122fd15700077a89607e0017796a1ae55d5a5c526ee324fb5e84a906939734b8341ebd0a498338e0d8eae3f86f34f54b1ddd3d0432f72b40ab8da4bbbc88b15022d7e05be28809b17c5e9e291d22707fb0d3c397c0011138e8db64e7ab4609aab3dd2752e119231301ffd41f070029b3ca132429e89f523191aef3569646481b61444d4750959e1c0b3d39806e78b53a49cedeb60e25044927f1f5deaa7c4a8d502059364e3d1a96d4955626d55fd9cc47ee91997e27ca81aa84de6dd9135539ad69ffec4fd1d6d0b4831543ec3a89e6f051a92026d8ef6e49b927bf0c4c7c005cdb983f1853abf3177c41c8e4040c5aa7421e0744680f77d8401237d0af83c0ebb0f226afe2382f7a48010ff79f5ad44848e7adc01d5c960ed101af1a221058a106769608283974a83ea2129911d8949ab56724272bec2dc61279b860cc12dde586c8e7d7d5caa9be72ac4922e19d5ce8f7c7770361807cb71563f8967cb3bb78ea1152d2d5f91b321a023c83ce521307828da1526a747ed2581974e4ee9f234ceaf8ac1ea091d54084b90530dc2dcc3423b80f142b0a5229ac00a925f738e02c7a0cff95670af3924309b6a037f3afa1a7d7016f5b8b93765ac2ea823692cacab39f022ee703c54cb34578370e25e0b4d2b22960152f0e2d5159140f0d3bd8cad4e1176eb25231485d431d4955d67218b5e2148b7ce12adce0ca67f0ee1e40a692ce2beff7494fff5ec8403b0896243e28c8b7252cea8ee236244165f317aabf0a1bae0cb5d31a823777388682cced999380e5323d985d46d612418086fdc96080962296025aea759a79b9c67f615b7a510af53093b195ec8f8f8b1fec36ccee842d029bebba96d158dc5be54fb8ac6a248d357761004daa4c7ab95a65290612f4869249a421430fe98e39660406e69d9cce9fa2960191a8b422b60d338f6a010be90af2843583514b05d8958d01f2678c7330e1c19c9df0b8951a8c2b1e3a04c1ea132d52b9c7fbbc0ef0f853145000b2437ccbe4338a5598327f82310d443f2e767da716bb1ac9778c827f2b1b1dcc1539f4033484d874a39d629c3fadeae5156678b4421c5dfe8ab3f966647656bb45062d7fc9e729c42ceccc129b6c94bbe9b4294b723f6017b38a7ec8ebb827a0469874b3cd6d195eb89dcc493f4b175e063f9b347e9e3512eb23a88ae6c1a01bf4a3d92dee280d04bd346474e5bda16073f155c2120621ca5370bad8e3fb26bff872a2e9ef4e603ca9bac4d7d9e0c9bdcd8ee3fe146e1f6ed79919d610b76bbb9920c5b810d6b4bd852e7e7beb0c65a08d208dd2e5aa0f01238d0be2736b0790249926f274bdf790b80d0d7e73088d869d9c0b05e25abf8701f761e0919a38123934994b4591fca6ba6aaa1d54008fbdd4575af5cb4fbca45f9575e948baf000cd54dbdf2564324a450dcef894d8c561b55dae3c8aaf9c0489f7b75a4caab6e64b962efa4c69280ebcd5bcfadcbca8f983ecddb417c5fab57afb8a1903462be63dbc9600797ccd399e704f1ee848d386df22eff51b6b1161a75eada6244d6319c9e20b9f58b5e14a607d665b6174dfa3552d0c22f5c0e39cda0ea3905b26a06986117d42926812c4904dba692d34a635d334015ec8f7ebeaeb4d6d09ac564a6c06b17700aeaef60c4e1c4c11b6ff3489f352cb7d0837d7bd9105caf0a5f97460c2260c03140a16975509e2934ce49bb9ca611b81c5b152368682160a7c69a927d49e1ad836d3122b1565609ba157bba4a9feae501b2d5204c241227a330fd447a9dbcfb479fc0dde8049f00f5749fe268862dfe26cd6c090d2ad6e2318ce093800d3997c6a8831fa06686f815450f8d1e01d12a44aa9cd693d2c4c954c8634ad11a6378f35c157f82ece733b4ed698daa70a0e20bb833f7ee7e7a2a4beee99379e400c0ba10931953cb3a4dcae74d82d45b687f9ac903c4f89f22a9982521b8f16b888c4ed704a7c7fe425d9deb18a4c08fb4ec0e446c0b7d5e2f6e5ef2865978ae56775e88a88d4beed66c021c27b0ae1191a05236d6ea683bfa5d6f1ed893dbe40e4c1c1a6279360e1b651b41dd820d81ef727650786e2c09be893bd04dc60f697aabf335bc617c3e11cbf6fcb565a3ec621047d974e895e9cfc47c47e537c5778a392b9856a4cebd7aad749e930f0e673dce275eca2644ecf7758fec9e410c5a119dce19f715aaa84e4c680d9cd4da5221ca52acef1032853ba78609c5b63fd16f4fa46684cf03c9b5d19e9b074a667e78f2ed68415ea7a9a8164c75746d8cbc547a3e2c3b4dcec03e60a047b5778c34fe80675f629543a362bb5d24f646c159b969430cbdd95f9ccae7111ae9280328a09ea7adf9b2dbe4866d9dbe6551c92ce2a88c9d0f660bc483ed0cdb43129d6cec186c20ae04315929942bb7528046201fad15c3fbeac5dca70c2c03744ff4e31523a1b787e9b5ba1fe41143a7f717ca81a1911e1ec74c1594232e41784dc0efe2b32d7758c354b3aa090668f4e7909c0496d9dee129f2a3fc85f4b5ae923df0ff8d5afe779930191bb89ae239b07bd24709a0acc53f12abc6fa8441c6a3da4e9035ee882ab28d21c84769964f3853a30c3a76dd33b6f4a8362bd17fe7ca522e36813b514dd5ef3f4314cb0359236763ecd650ddf3fe1ef034cce84dbfa490824e4b29b2c49d951cc2f7e70f261854db518e3718c2b6b4e168be0db30dcf363c3bb8d981b301a9d910a0b81ec81b141fdfb9d294647ab74f9f3594c3e9c7aae85e0fdc2af6f650df80259c853101dfd78c7f5293a862925f0aaeb38f2432681813aca4839f2e1e3b551f7d150a2dc8738c34b8f721b53f16c8981362c1c80186f57b1d0da58ca7596a2416f7c9ead70bc430076724406a14ad2e445e9d01278810fec8539a3d5175aaf52548bbd682c1b37c41f14dd5ed4d5a267298b82030dee7dcd6f39a57b4e6e31710eed64c6d488340835590208ed55f081bdd451de7b78fefc12f1e6555e1f43d8d1fc4096c674bf46f9bc0b857749609db8fb262acf200abe588cb4e7a69030facc5932cc5bc5c2835c2a7a48b37b8cb05237fa560ea00d771cc120ff23c9aed6eff82654b8c4618fe904af2b662ff275ee9143398e9470d801abec1a62a209e7cb7c1e7f09dfbb72b995fcb6a4c465445ca19396581c7b120f5060d019825ddab7492f8f974543a65cf7c410dafb7a516c89dba30b1c1fcb0daf54c3b71cc9a283e8d535f2e73643a32b15f1bafda76f7ecfae2d81631fe9b48e86d1bd8fef3d5d93447407f22b672fb48cb2f4432e98ad921c01543c6c090c50da2c28bf3c48d38624d049fc6892fe68cbc073316dba856871f5b234a8a621e30377c9ec9b719629d68f859c61eb13b2fca302afcace69811f19c97dcba846b07b7304718216c8dc52c6265815d409f82551b9eb056bf8ca9a2792ef815d3ebb41e43d086b480c9c2e0809ef7f02482e490621064362f9daa95ce9ca4fd53aab928bc9b874ae0bf0c2a453c628ef106358874972a611e63ef1d4e55e8a91de2ad51c998b8f9145abcdde80b36d9844b0abd61c4041bd3c59284bf8bc606ec3aa9d3ddff93794c0a41a12dafa02cc231fbabb7c5b652700dd673bbeca6f02cb78c73834c19581c8a769664c3c8023d128b7cbc3e7aeef919ae2bd7d9910ea5a2dda4b3dfaeba6d1bb02b7f104b2b0b238dcd969da9e25c881473e2ced3b641f9b744c4a0b50ffe72b51029b5af6250e649e1536e844896a37b157971b23334ab29b256659afa97837ec8b4c5d1d04ff3d2760eb807e51b946c466ace2d3b23d749bdf6e93aaa991ea40d1033ae92ac4fc54c6062be5acc68a7db40611d003ecd6898415527371ba3738b4bd0b9eeb8b71c329be65631bb46c8f7a0391a4dd1a9094eeb0215a1d60a40ebe290d22432ed39088715dcb34aebdd865d1a30e462bd00851801edc9de25ac1321f7b834ca6b8e805c4b60dd928b19fec956e58409e8ccecc506861253d41c01dd4f9f578048bd5b8f02a245261f984485443509b7ef04825d35451a748418218130ef160be64cbaf34d2bbed58a417d4af3359338a2e35daf763b828a4606bd2c6b3b5cdc9b403db60a4ba568bd7c515b57e214ca04b2ec6450b4c58ef55f271b817656d999d48fdeaf34794014de2c6f25f3797f3c599d9dd81d9d40dc2b1a310559e5cca159c7cbf265b4680e32a39ea6f76e2148dc8d54352c5311d0a61aabc7d48a43f61490c9605e66d64b5a1909289596923118a4b574256a0b199b5188fb7c5ae859c92cff701ec23555723ead3dafe5ad54db236fc7feb5f70c71e567825e7f888e542593342853a60d1166cd391babc5c7ba862ff68d036c20a2aa316ae0006c7580bc072f86e09c598d94110dc086d5b33508fd50ddeed384f03f0d21a95b23d3e2eea40239cb38b2a7fb72e07d764675c6f1a7ee3fff7335cac62258e8d043c43e6e6bdd6dccb68def2d0a53a61ea225df8a85236733ca467b222e3c0c6805bf96c14439b90329e31746d022588cdda2613c4e6f9e47d4d1aedd65cbf6adc64ee82d78c8a902a21f8948be24a64d041764704a2745949ae6a5f610b245bc624ee36855232ece008ae48ecd59592d96ffe86d5b1c579969476eb50735fe578bcdb041f4ab7db2c499fe56e07034b826c29f0b1b2e56309cb32c6cb8cd30c34b0e513bac74d99086dd139653ca2d9cc24634ffc248b31a15412685c6c7f1333fc61953f9ccb2fd310e978e1c8b59d2b42ecc6add4a5abad8e8902edf104ec1c26ecef6a2b8361249dcccb777a9fac5cf3d0251d83d7ed847cad460190f7ee7a4c551894a17eedad497bb96b1baa987f89db4ebb8eb6b84056a25469e41d4e088cd92f732acae0857f5989b5109b9a7ee0ee5edc3d7dbf5a907e177bd3b2b8aa8f1ed09fff4ca0fdb232c6a19aeda46a319b01ba2c4b474907e8a27da158f7119c58635e25aabd7637159addd437971364e1b67f9c0bfc457ad1db536ca442ed9e4364ad355b0d4fa42fbd5faeed919859caf9138141a3be1b03b7339b75cf6a72514d02e126ff2669d823710db23a6e703d2538b9db77b2588d3d4d4d67c01719fb7c3137024e89dd2c83ffd5e428e40f57a980d645b4380ac85363f8da667e2fc0c0309086041402cf09f3a935c7515251bf408b7cb445526a89087f18fc85ec9a6b939eb2ec910dabb416362a351019e6e7dd46f911e7d3ec8ffc42457ac2171ff3cbecf895318ecdb9440b0a152966ff62eefc61fe0c682222940553a918ed0ecb30441512a4c720077b0b0329b7a9048383e06d58c42ca09e41487cc23dc308ecc42782b780b1e9465ffaa880f9869f80115a149610d549eef7748251250a14f10f5f21ac44db24810c577c22cde7eeafe74e873f3b28ff8be14fdac0d7342995edc405c28b64c4bb19c95e1312c293855ef4ebb11e2510391966892600d105ceb4115510fff4c4a8f7b456ebef6524b3f6c1d0a2448a6841458a6e58e8928272bc1142e4d13857d1d462dd21c268b2c02844b808d388a9f8e904098216fad46afaef389235a2bce462c411bfdde2268137461a2c83a40b892231b150b31c5cd8b1ad95d45fe3bd18b8ad80dd191a09745e23a22d7766299f5f5b03eb0670afb5510a5489366ab846665ab81002c86d8215fe279a4ec7353640c12c9b7bf49b40cbdd42c254450423534a1d9a88d8c892ea30c20b52cfbc103992a1b697d68c4b30da0102321ad820e8613f823ee409cb068ee70343481e1bf980802910ad10df4aaf489287bdda41d2f5013758230c4f891410b1a1c628cb9e10ab223fb106358e4b0cd55645842bcdf5c34572a140efffd2c33fd51d13615f94e13e36b4399356a8ccb6482e28309779b20e0176fc357d2f57d250f584aa40c3f7a76f191f10b83836415678b29bd83c3b0e0138c881a6afeca2ecf4acfbedeaa74f5f625a57048f4a0ebb909ae83e6b9b3737358882e0821e05def6aee0a6666b7a2e6de5558fc57737d2fc2970aba59fe6e5c0df7ae5e154661e489b7d649fda48fbf337b2e5b9ee5b7855afe29ee81d58be1404518ef76aab67fc38e9f8ccdbcf52159b7cf1917d2e28f6e0e9cae3c30fdbc9fc7842a91d703c6c59e754b45a030b7152776cc74c25353a79f9a3a2e623882269197c92ab39ca515045f0898f8f80559e89d00a51b16cd985b9e252e26190d641d8e597c55d460cd5551996664e3d83e570f85955d9d7860148af31af5c9bd662a1a94f01fe06b91fc31e32ab0f582067bff256cb7d9c9878c55028f3649e64144356fafc50930b72021cd4508bc1459ded63fe9d2a7c8a4156dcf1c35b41528fa7ac2cca125bdf5f32d5ab04a5c998ebec1089d0d3d36e5caf98240dcb9a273ec83b41ac6ce3c0dcd5b9badbcf080df0e4412cf74149ddc857ab55455a4a75944cd121bfd9b1bcbd14215fdc252adf87b3a43e3636920ccadfe7d1d99f24cebb902833f8c252c2d3dbdfcb951d6525d4e1c0403649974a49ca054c9dc4525cdb37f6c518595581f1f5e4317bf44c03a5b7268692141fdec605808f92f72efb0f34585964055db843a7ac1c474926851f86768d82d20f2a9682886e7684d72bc51111b5a193aa7ddee7423a7edf3ccd20f34bb89fa648c4dd77a5f5f9b4fd2081961e5ac2ff8552a951ea627320527790ed2cb5cb2138398ff1132f769fdbaa9d7aaec672180ae57f7bb10a121aafd2cc4d011957e174468158ffd14c457cade6acf4ccc5caaf4bbbc053748e0aa3d3fc9a4947ac794f342868a4438fb8a23f6f7dde2281614ea79dcbb35437685409453f1f5668e6c49e9d36262bb36ce5e58814bb22c598c50432ca974226b5be0d89ad1034699f2d2f8a24122f5e1b7cfb312423b4b7769a83bd1a38742be04dcbe427358cf8e15e81ab070e102a2f70a0afd1eb25087c28842b0bc865b504921997093f9acdac481ffc89e5fe31b1832fed8d24f5083e7d28983045eb4de8b5e4ac6ed31f8dbdc0e265f3156f5df100732e5a636e21ad3243b800a017821a3b55355783a1af2d174c946a2febf87fc042235403fbb1730006c1a00ed8204443b9dc22e6b801a996f3867794e7f513590e559fda0406285f33f29cc43568169e2501543c84ee9e9571c157201806291a6b31625792807aa82d34db1b50b091926d7f90b5b4357b590a301551318d12e7df04f050267368f10001d2cae302ed4a4664e8d08507366929c1d0d6a492d734596d3edaa8de5ab761ac08bc5a644c804b3cda5aca232943924c30955a42d8281d6b63d52f1fe7fdd380a812e98c2355be6637ff7d7530061e249713bd3e059f6e68c6be8449792ae5d0f1c1c254ac75588cde68463d00ec2517143c9c1dfd1ae6bfae9426e229afbda1574f84480f8379c3a2d8a3a69c5157004d0147aedb32bb6ff63fb9421d74ba5309d0850d2013da2e6fb96e50c8d3f998b64fc5dcb92be062073ca5fafd3993b1ad4fb0d27aa51aa8d81ce32423a30b14c323db51e2c95f7f95a1c776fbed2db0a4e23437133ff8e33354136a745435ed1e0bf479c73e2f859e628e75c0466ba5709b7623c006b2cb57d2cb6c67fbf90b69c8bf258844cf06d4e143759b24b27479774b699af7a42559d3d0b467ec166c317a2207e79a8ae2e48e61c75645f5b87c34f599b0be7c3b65cebba0c5fa98ee198c284720032601097b1a146324a54664c284c360de512cf344da81cb87849a7c17219bca215a098b966974d56885a99e99a484be0370efa2705772fa455f194279e206e4018d1d67e866e5445d05a4b78d3168bae613df75039074b53c274549c21e568951ad5d22535bddc4c5aba72cef68ec00c0508761160c549eb5ec53771de3385c25eafee19f485ff9935b027cf5235ad91f6db928aa53268457d133321d6e9c2babdd0c2f7c3fb63acf7ad1d68f4925b296dfec6b9e95f67fba4333671fd33111a4c7115411b956b3931a32238c3f9104ae5d352e123922dfee1a2287ee19ab7faec1364d7a454b61f4f03fb963cea3e387db499174557403e3397dbffdcce9f5663ea904c76542e03ba36e66f5d405a19a50d4d8293028cbee0b89d9d9dd976765b22a4bc22ae68ee12b259e82e2f91c0ad2c1b3b2f2751a430142081ebe81fc9777067f40eb83bc3d5d0e9e89d31fc2943ba254a2d0259bc68459fb4d648eb261b2122894476f7e696011f070e07b10639f2f5ed07de8d77e3dd78345862c8123fb893624befbd98b5ac652d6bd17b6f66adccb296b5ac652d7aefeda18712d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d06c808686868686868686868686a66752ebd27befa4f7de49efbd3df4f001253efb9b4fecef2a095a3d610921497824190289900f242b24499008412205243648668eac90f0c0862e7c617ae4bb35478270a4c7111e18b9e9c143410b2a52aca4545238d4c9b45d1f25d228531c919661f8e2b178a6102541700d2476c1a4930ad94e84097894f4e05132c37384274916789210e149c2044f921f6bedb5788e2451828ead744ae791ceb332928405497c20592119820407c98f111c19b2c191213f1cb9391244129c24373df7baf7e2cfdb978b7d99aed3855d31b2bf1ec216ed5fba9cba17a98a32481d0d306cfaf845bae4178bc7e2a121ca58b178b287f19177178b232ef6f5d70bedca74a6bf723d9671775d73ba015aa38b720cede5732fed964fa18ceda5fc085b487f7ad3531de9c275d4870e8932b68efea028d529753f98fa508bfa6c139c713a3dfdb99efe6c3a1a418fbe3669983315b11022638a035fd08f2bf882fec5b0eff1a66fe9eff777af0d7a82a943f736dc197417d37f2e36f63d4a06e9218c911f7b085b44ffc5ed3de982ea6e788932481d8e0883fe0bcc0dd2856affdd5249c319dbf638e85ff0c76a79d4c5e01e853bf4b11ad7efbe5943f802f3360d25477fc54737f658a5617ffdf496acfb5e36d67d9f68d3bfa8ddd456cd6990796fce1cf7ef79de4518f3ada7b80f614b0bd09bbff210b6acb86b9527e9d3bba059fc0adde23b9d7a0068ef6794b122c298a5c94d19d043bd7cf8c1b04dbf4dffcd6d7a019ade932e0078d3b3c018f84dcf4997873006e94d1f4d6f42b13002caeb40bed0bb8938ff65198b77e18168f12b5ef4a36f8005a06afe86aa49c302d09bbf61d55eff3f84baabdbeb405ea153a6f75e66860b3a65ea5236b8f02bde860bbfe24dbfa2d37184a9b3b1e2bd4e478b5ff13a58bc0b2f33e34a17efe7671803ff54f19f6f4cc5633fa7379351dfc29b3ee5a3ca9f9ea45fe07d8a7e01001ee5bd0900af427f2f6c538b9f5f43baacf8f9507bf89fdca2875094ad1f3d5ce93eb959b8f05f4e6918dc33fd8a28e30508c3f4b300dbf4a59fde62faf89ef6a4caf42a9a05be30bd677ad3735d0bd3b33041cff4f365a0baf9274d1f466efa8b33a41f691e62d61f37a1d8f3b54c7fd6c6f467014063cd025ff8afd02e68ee7b61fb633a2d3816c20c821082256e96a8914bf4904bec9040e48d0e23b4c195be41414b90c544f830124ed76413315032e4470a449468c1c6a2165780566801458e4f77ec802fe04e2520ca6e87086cdf32025b66c6f8834968b9e4a98931ca196493d292935e1e2918b1a1356f10306c217a0d157b01325bc002b2052ce04ee83ea160b8e213bdb645601b5222284d84211f7e9a8646c5b68f5ba04374a84a97d7af9d216a852d69583b7679657247f2c5b3e35e74186354b1294ec4a13451ea8eaa81fa031d724f3eada1351227a78342e4efdaa15ab4035fb8ef582610b1e5571c1ce972edb8eac2d9f2ad4c066bb74841fe2e237060c40d904b07578362cb6bc896aeaf9d8be7ea812f2e254018f277b6d486e00bf9353b308057cd55c46573d5ec59831d8bd87468cbbf68a20c0861cc97178db5577fd66e21945b340163061fee4f021b76fea21eac84264c40c2e8078b21b22aba9c943a20c6d4e61efc592bd66205d98b1fddee4139350f73c5564d76297f3984136a3ea00411345082c6526248899514a27836f9fbb85a4d9c287facdc777c47fe181a1a1af29d196da2cd10853ed1a6669e4d863edbca20ef861f33196075016e0125df0bad8db53aa572ce292595a2165072dcdfb5f0e3438fa2164392869c92ce4929a5516d8f1eb5d65a6d46c3b6189a37312d86640fd9c3755c272828d6c49a9816430ab096fc6f86ed75052d9cc018b7700263dcc2098c718b27b09b23c70ff25640891f880c1181422409224a20620422428804e1b8f7942001111f6e20859c1a2456d044076654244094004814238cfccca825d8b556abd65a2b0b4f14806c1f263e4ff059828f117c7ee093039f237c6c7c76f8f44822ca25c2aec5126329a594d6de2badbd97c71115ff859f0377c6f5d0efbdf75ecba2d4b228b57f891e63cf019619d96bcf819719a2c7d65a6bad8ebbd6aa8249b71abe7891aa6b5bfb6eb9e3aed6ba90d2df828a14dd4aea6ad702005f2caec5570bacef49c54a4a25854b813a59daadd4b25a26da22ef94459666455a8689b46b2d6dbed4787f1c16808b1eae67338058d442498e2af6d4f366e388f943163f78adb5d65a6badb5d65a2ba53b68f427d86b5d8c31be18e3ec628c73e4204212434924899ac60c3bc42862145bd3883fa54f199fda196b941e29d5e60e71da6bed8dd069d4156861d21bab6543a4d12b4e8cad66653424662dec5acb5ad6b296c8ba321a9e5999b5ac652d6b5dd7d3987fcd9befd42c964dedb2582021943d5ca7a6c76b72a8ff6650ad9cc6f172fafa263b6d8ac7507f7d0ad4afa03e857a158d423da74f1d8e976dba3673db726f59f6869ddc2ac150106b5dc75a3b64c4108f27849ed0b1d65aeb38d63a8fb5717691c77784b88e8d372e0463d7b118e38bed67b6f473cba0ed3eeded679b371d81641aeb7060db2a69d87d579763e66cd8f580eb48e7719d5b12ddab7d26d231c81695487aa4a1ecaaedea5b578e193dc7733cc773b2c8eb104fdc3c31e3d27e0edf12035bbe13434ef438a1e38410f5a1fef296d1315772d7f87043fdcd28b3b3524a4e24afb7f24f2a4ffafcda43ec57744adf57d117a5aba92b75a22ebb12771fcbbe3a1c2f2ff24ea0096472fb821be498e7025f2ec475e8957372cc2dab7d293dc773e2cd64810755f8f7c65b70ec4317e22d39f6238ecc68f87bcb85dbbe074df76ebc71cf3ed6f5bdcbeed5dff4e62cf7fae5c18e23e4bab5d65e7bedd5b3a45f43a91a4d1c1d6b596beddf1bed7b0f0f8683b990eddd772fbe7e3d0a811148c47197cd76de915c6f7dacbad5bfadf6ee5f98bb3bcffeae85effb3b8ebb906b61d1df6ce9ecfb39def0b738fa636fcd60df7367df1a69f70b1f6b9ae8bf1ca3d76e5c9fffdeebb3487b6cddcc73f08d1777340a6619e073814bd3ed395106a55ba54814a12006784ee63911c6ad3ee33ba2e0b0caf11cbbe9b872957d4cc724250d633d27cab899e7bc7718ff97635afc5801f17a0e759dcafda009204df810fad997457af22527b3bcd7ba9665d12bdf7a6161f1bcff155d4d124f157478aad08387899e7de10fa594529d29f4328172fd91ff5cc109644776aee2bf709926fa3aa34d2ce25e12f76613519a10b271c4a2e3cbda6c4bef1ba59452ba7594524a692e7513284e1da4bb7badd1cea09a33bd9efed01d325132b0ca3f7f7267ed65ab9d40f1a790b75c2f585c3181228cd8c5955724dad04df5cb8675d3999fda9f3f764619593b57d5ed88667af9e81ddb1ab4fd717703c7cb0a86222ee67f2bdbda6fbef51fe92f5aea34be487bfb7b791e2684d8c4f3bf178b6ad2c7f9178fbaeff70cfabc3d6110a9d65a6bad24d2d711c93651c4c6bbde8d6dadb5d6fa13a8fef71233ea603cc3f0756986e1eb16116d26d0d5746b1986af4b69cf0f1ae711120408fd7b0192ae232dc3f0359233dee34334fa99d0a68ff9cfa68fe95fa309a4837489362cde070541a0d18f4d6311faf445ddc7e2398f4db9382bb5acb5d65adbe11bf7c576f77e9cab1974ed040af27080b10a091512f2ef85d1dae8b5baa454ce3927959256f7ea2111617c38df05f458e00ba8a17b8c2eb2a7099700ccf087c188edff1264863fcc6afb2380670a34dbdf068c96f583ed4d78c2e3890fec11c123c2127e7efcd8fcf4f811f283647ff707c80f919f219e10a0088132048a11508240f101a5889f285084f8d9f123f4f304e807280a900fd00a4808d010a01b201d201a20238066807e401102e201a50894202851f08438593989c2898f132c38197a02e5099127493c09f264c8139e27354f74f0e4e6890abc200cc10302131e303982890b9810c184044c3cc044034ba22c19b224c9929e253c4b702e15c2c6c6c686088c3f8a883fb167499026486872d3048926354d749af868d26315d4c4034d76ac86ac922cb15909615584ce0ac88a88efae7a30c902131e264f30f959f2c344083dcc38d971d203273658ed701203272d7042e3c487130f345935c942932126449a1099382bf9c3778674628c3c4b7ee40864c6083d4a8003f8c218704307d4bf4a60c1b6152551ec6f850e0baa9220f9aa55490db055af1217e05b616a28e9715d4a662cceda9047094f078c4461840a469c18396224092349303204233a467e18b131e263624a5d724964f99ec55009e30c3a6eaf2673d28b419e1fa79cd3dfa1c0f41dbeeb152e090e7a36f9c6f4ba6b98ddc5dc8b41960ffdbb1c8b25e4f84158e461ae5bd95830c1217c21e30663cc8f35ab616f56c3ca6ad4c0590d6b4a2718aef06af2c76d6984c7863c45745ed890a748cfe621ee442f6dfb97f51f8462cbbf74e461a1841c23cfede2ce841e8c61bfb49d5a1b677ffe38565ea666d82146b16d07b753d731eef4c017924a2c8afd65f842bedddf4d2580be7ddbdda870e30ebacaa7d7502264f65a5866a44c4a89adf62d31932948cbaa15d76a690f334bd75a6badb5d67a2fa595d21426b5f5daf5387b0ebcccb81e636c695b37dd785a1a6e17600bdc97cd344c420d5cf0840f867a2429e2a388088208816575c4c2be32edc960c70d8a8044104666b8005b685842087a70d3b00415a007b73f9329c0171666d57a6f56ebbdaa0ce3a96da533aa86fbce8030860c32b3af864976d51658e203e8898daf22212872828b595a2611c2be3a1ad95553206e3880b3f195a50b0d4b4c01aae0a6618927e00bb83fce5ed67a84e182499ded1b800210e00516180378e1a2450001c0151b00937a84af1898d4a26be14b0676fd0b950bfd98562d2ab718deb4619a7555bb659156ba16bb07c0a4b6600201b001865894278bbc30e62021ecf23571dcf65ff2bcaefb5eb2940da527bd8d524712bd0d1cb11cdc933117c984dfb49534a98a3c16fa9a666516b383fe308f0991fef216e58f597bd7dac56a1673b13b35ede6f5010cb148de1d0343857c39fb17cbb5dd751ff0802b5576ea4c8f897c9f5e10c2abc38c97d321b0bde202cb2d5fd7b55528c81fb631d611e36ebaa71241c6ba0f53f5b84290286cb02cd337b291beb183dda387fb663bd84deaecce6ac0accff4d5348bb1d68ff47d1879e3fe22d6a5ac873b7f8ce831cc1280b597d918f66560633662f6a5e3545c83c575c28dd54b665bef09dbd1c03adb5df8025bcc76291b4a25fb3a6c67a3f4db6f9d8e522733437322e3ec2f7c81656e862deb86fdfbd1b27ed4ed60f7cd1a6e0bcbd86aec62d867577f3106ebe2cdc5b0b7d6b2321bb332cb7a2bea52f625d65f04b23f1c9886bd7c7a658f33edaf2bcbb04b63d96bfc98cc9e6631b88b3719dc3e6c2ca5761df764ad95c2918f7680e18a7bf355e1c8f0d30435d812a1173fc3e66fb34bd970faed6d9c7eeb741c315fc7f6a7d9d938bde94d9d0ed39fb00a04f97bcf48be7e7b530e1f74dc6039b6894633e68771172da3f7f7b20bea3df75c8f44dd8f344a6712892412794ce4ef270d993dd238b05dca987b2f38fd3c3dccb2b788fef4fef064dabc4eeeacc3f40775e0ce876deb319a57487e858050458267f9fa3233a2ece4eba85787fddbc9cc88dd9723ce18c45b688c3a54b3b8173d1715aef026c0a7e1af5a626dad94ce29a56a0910aa26aa269e50febcad4242a5c4b5b6564ae99c52aa9498ae73c50b636c69ec1f65f679f1533cf367357b1bb983f2526b5e12fbc61e63188d1b7b9c558d3e7d1a18f598c8d6a5eba5adfbb2aba45ad39c54c9a9bfd1969f0558445e116e7fcc755c07bf9c7fe9f958bd10cb711c981a0860912ac9800be4394017cbd5e6de9c39eedf7b89e1a5eae5c55e9b1d29cfd7ae1c669c40f3a7bb010708b8273f07e9f237efff3c968d9b409b07255f2cc79a8b037cc2283b7a91a8b342fec27c5d2291e86fee6e44d28fde6a98f5189ba4eb108944d7c3c8ab24125d97f5395f22fba687f192e84da6d25fa5aefb6276738ae6b4ecfa92e84db1c75692a3bf8f2f3dd29ff691a424dfd0a050927c43833e24ed27e02dd7b244dd2703811c70e8a0699f655ae7423e870f3a44ba258b3d7e1841d3c3c7653bc78930b2acb33e6aec6124665913c6b0e52bc9717f31780e035c480c3568b081794cf2f7f7c62439eeefa3e7b8f096d8bd27b30286176fc15f3422eec8e13817c71bc796a24ed473aec44a2ef21d5b4e78a1052f085960603cfdf6a552b66d5ba9542a6ddbf659c9d4ddb07f1afdb775397cdb0cf5275216a5f8524954129544db567a18591271db367749f4265377237e8a87716efb140f3305c44fa1c2f425d387e305aec454548929918b3153d1a528459d54f76595eee352baefb9eef35e74faec71499ff447423dae98b7a4882d1f5bcc43926f909eee88ca9ef4d187b7643342d0d4981ea5493fd2f1333d3a759fa98b38a297f2a34d3462d3404af327c2183d8ceb51277aabf3c3c81c452228880cf16cec98a6b1fb63bd253fb68b3bbc257653c83d1c3ae4f04187b7f0d8bc55fe60cf9725c07ef590e4b8a1ed62ec4499a609d9c4289127ea08d56cf951c804127599a6d92feb2820b3eb7f2f9cfdbf9dec2e945989190a3146183c17bf825bc95b9c815d8cb1ca9a4d29a591524a2975d58ffcc1249bbeea47be3a16cffbe7385f4915fdccb1fccd637e833b29bb8fdb9fdf48bf91d56feccd1e5ad1bf37678efbf7bc8fe55538c8f48b5136a57146d6886210a3940fe35285936b052e1c29a594c69861588b31c370d56a8cd46950bc99010657c9cf348c772cee49d50cf2c7a23a22cbff58e843cbb26f3dd5d062b6935b5a1679f3be58c315178d325c9bca87919287b9e55fcdc3dcd0f2ac888824c618638c71027d3d6cf80223a3c2c953063b5fca3983eecd99e3fe3d6f0249977b5996cd8279f82f4ded6a02cd201939e10cf2091461aca4ca881c7726d00eea18063d4c148931c65c570d31b65699c5d01a6f1cc773de75bcc5c64c68ff7656f65fc4c15e922ca98013b4828d1dc3aeec3c29649f01e32a1464150af2e76d5903de11884e55e1e4e8c3553552157bbc00e34e0645f92a20597ed08eef39f03202a614538cb1a6691aa68fb519348326d0b66d3f7fb61965dbe66afe4ca16d9b4233a8d2973192e228e6288a59fc4aa42c7a994013687b295a28acf0630760431e287e34aa514dd334fa9aeb788ee76839e70c2335fcdfdc1afe4c732139cbe8cbf84f1a451c81442051270289413cc773446e6f5075aee60faad6283e24649aabf953a750ad0133c0d05bac95c328708c9873feac92b8d8caaef670e3b0afb73029a5967517c618eb64f0b7ae6bda4af7debfaeeb667f69ccd46d25edba2e29a5df9bf395f2de9cb9ebba7fe17b73e6b8990b5f3bc8bf7ff597ba573593ef755dfe7fdd9b33777133d7a5d79dc9aa991c05431d995eb8060821bceee31bd8ebfa5d2f35b6fcbf2f1f420821f4bfeee86567a2ac71a853e96b88f2a34e2451d6aea954eabeedfd31fdb2b136e96f1b6d1ac70bce52ca7ba982c89f4c8f97ff4b639abb52f779a4ee6389510591bf1a7e73f76569bdbcec91bec1c2e279ff1c672d69494b5ad29296bc74b84371c7ccc71ef14797ca9f3dcbca2bf23e5c8f25bb9464b97f7daa62551052aa82c852769fc84a29a594524a2925f69994524a99d23e7bec5dba74e9d2a5b3a882c8aa20f2f5d6a770a70a22dfeec3f1a20a421504dd620a0a54436c26d4c96216b398c52c66316b32992810f7e974ea54447027d3e9497f520d713aa986d84e39a338d510da675aa6659c86ca543fbca87e50fd908320950a4ca8df188661f6476fad25e1402346b1b727712516e4d1931e873d42e5a039a84a0539e82ea954502ae5a0a59983aa5440d21f0e9ba4e2495b469948bf71de235d5474294cdd77ef4a97e9bf0a88cf411f8794dea1a2e2419be32378062cf2cff3ca0ab4b05dd4551b9c544519e8de214601ab96e57b145bd2f097934eea7a52d5924927d593c279eff429852cf0c80216843c62aa11e49457b11ee5a4d5628c893c9bc16432994c288bb52c136559ceb2519691b2ac94655b9699acd72ecbe466371a30e6d46dd88af046fdc9c4446bdbb29853072d24ecf0d9a52d8bd9366871db5ad129ed8faaa5acc6864513e6274ca2b0c9613405ab2aa687de523fcef433c8145131a250287f3be72a7e8db546548cf164b57327523e691a598c7759cc56c3fd0fc63da91a4156f994ffe24ddd4c271497a2928a417655d1291a4a55949e2845b60fdb9fd330d2390e95818de2385ddf42fdbbae6f634cadd65b1a6eb7ac5ba8c83d4a73a6e734dc9649d38027d50fd7a99a06f736dc6e5bbcab81801e950972c6b06dc3aa13e4183f25e0fe77fa0d4638b5fa56f7bd6c4b07c6f097aff272347a51bc711eabc8c3675c88d58aaa78f98e55dcc81eef7050d1394895ac9fa2f22929af523b1ba95779954e87caa7503188918c3fd8c3c9971864051271b88a7a188f41bc45728f7a97142f1f7328dbc59b9708c43df9292a0af531466b2de68ffa13c79d5031b887d270733ae2a0ba9754fdd4af7c8a4ed52e6543caabbc8dd4afd8880363e82b5516b61c7739cee2b88be330c7611c97719cc67118e609e52b8b89370fe30cb071038c515ffedeb6bcb7efee6dfb150da52aa555748ac639ab11bd844913464f5845a11e76d0b2acafd6bb75d2d0bd4f669b5e94c598388efbaa39ed3191ebc747696ba79da7afa747c1c893cedea4b18f3acb62b24d9746fb833d9fa7bfd187e178b92f2fae9213db58c2da55ec85861e2f7c00434f287f9cca47e6e4cd3f1f3f10d88b1e88ecb5c7c011fe18c85efbcd3b4a7dbabb534a319f4cbc4829a594527a58c80f84e18a4feed8f3f184ee0f239d44fafc94f4393fc971620af7296f83fb9414cf712bcfc914bff25fec91d127ee9829e8d3165a701cc761008f14bff25855829ca27f03f7a9bf21e5553070848d9557790ca4e852f253cf7dea31b0d2a56497a29d0da9e7de46ea6d7ccaab7436cb7ea43d8b19ddeb3191e9cb6ccf9e6a3bddc309e22e2a3fdd27c5ff931bf527d43ff73233fcbb940d29cfbd8d94e73a1d47d0d7c17d4ad7d950f9944fe974a4bc4a273303ab40407d88916c7ac7893b70b61c70703108a53fb318ea3ec45ba674eba2e2e75fedfed0773eb8721e153acb3229e5c865f6d538b03d92d98eec6291141d5752359fd32a1f70bef6b1c75b86b88b4acacf23404fb6c41dd1c72378dc919d9d50e59fa2391dbdef657b47c22fd2df8f50fa1b9df4e76d93feb0ad843f6bd50f77aac3a54bef7cc8e19eef48ad837bd3da9983d4ee0961d50872910857d166fa8e4d08f20ef463ae17ca3e936997d403638828a5a399d51079903efff53b9fa4dd71469fe364511767e08bf9ee3bd67734ed3baa0fe41917c27bb80fffe1345ee345b88d8d3be4dc543f7898990c9ea948902b8fbba4f8f9cf7139c71ee9b2f2f3bffbe58ffbef5368e771d54a07afe7a5fe55382e25e70efa90cc76bef381fcc51d3b96cf9ef26768a449f9c38db9a74241c60f5523c8dca77c6a86eb3f1ddc9b1fff832b9f912eb1677e8a8e45a46aba4a883ca90f4fcf10b8e58d5ccac3bf299c86ae8adef6797763be18a5aa176418f76080e1de9c3917f21da9f2a028793ece6af43835f918db32ee2b03b66df761f373d041c7943b360f9fdca8c4ad56563564686600000082026316000028100a8603229124c8b2340fb70f14000e81984e6042188803d220885114c32863882108190008308480514868c8061132cfbaea44f25b48624d686caf1caad041f80eb379382481a9948a31300348947126c7eb4752b00b9744e9f4f81404f2c3c70c139b756e085d604c722be4f2cfe88d1f153d264f1950d5105e09591a84fcbd1432792941abbc38242914ba631c30c551bdad980bb518a453cb043c3ba5fdbe3fc91954ba7820c02f85f37d029c02ef5d5d4aa1e2a05ad7a8487d4b302e651aab2a9d5399920e96a8f01569bcefd167bd945b29ac6ddd9a4d94c5e8ce9f9570ec244aaf3066eea6794d2f05251a7fe206e65a11229b7d63a0ec2b6b0c60166be19eca742a09bf07bd94ce782db76f9640f219ac101bc0a0d21aae1fe3ddf571941f13db78a06c5e4a9963989ad8a41312682d29515e8a0d164fea17cfbc12aa837c39e0211c4df9337100e0e6d1f570a799322877097e35d4858e98483846cf0985608063118b57e1dd949762dd6b1817463ff8112a19123f0e8b8921081be033de459a2a340003a7f6bada9bab38a5fef22e45bcc8767bee52acdab33b777729446e2d6df7497966ab94359e600f8afa4f01c01f43331e7b6877772973ea49175ed377875e92af16243b5d7aecb71a22376fd86d3c1eca80a9deb9235caa8972ac0ecbf197a5aab2129262e2c83204ccb42e2552294fd2663f08a82e255a33b02e25cebb35d2618af5fbfb8e629d4a0ff7aaef21add73598221569d3f443afabd2abde68333603e48ebd752d893745ca75875fe7b0f391a325533405f27e9279dfdd8d2eba27e55b0bb72e1ecd3f8ec3da3de17bc32a953c58395e30748bb84fb72c15dc14baa462cfe10b39fb2c8396c928f5222c28c94b2814558c9413ed6687f8f7fedd0825472643996e080b032a0a42fec072dd453fe72de72208a5a35f460d731e1f311b4afd0cb28c5cb63010d233803ed0c161946584c5adb8ffb4be9cdae137ed32282ca7547803a6b2d51fe16b187a3941895b82edbe6554755bb8a0d8d533748636db4384878bc9c99e87e3f6bf5d2005ea0aa94a9810ff4fb2841a20bee3f5cf3ed9f486f046e04875001313045aed0bc74852a16504e30a9386771f080babdcfb9a91bcc86211933fe0b31e37adf2a93ff4c1f82cea713e6a7b0727df89f8d82e660640b0f064df468cf15652982ccebb25161ff9a882c5f48b9b37a6d6981328376633643021ffef965f745eb9e33579e809c5fbfa2c1eb46da260c59caf682490370dc6ddfe561acdf235bc302395d446b87de3a995bfa902b9ed1b51a3d8113aba766c9c0f9ed6042d38478ddd059ac67a0997a94d4fcf8689c73643e17673915c6b4688a6a7a3fec42849aa3fc9dc3166f8939704a6a1f212ab2eca42798986f064701116b6220c0e14d7d6c4fbc224fe643475ab75713ecaf1839f9a982fcaac8cf5fb605495afd3776a7a35fefb80070f6619033cce2bfb29df27827d01c46f81f67d82928b4b4e3e278f8688d1372efca4f45c61c3e4991805e0123f29214547928fe29f197efca74b41ef2e41d0d6a6f13e62ec4f1ec2fab7adde719dea20db3b9efc2cd23f7da95f91e6e9091ef73c0dd2a7f8013c46965749018f8b5113618ae47a22b74521832ee0c7455c7fbd08499b1088ea8972e1f12e6ddfd13bcf1fd07a3af85db97f5efc9a0b8f63a5024ca3dca28be340f6ac5c6ecb980fa4c6637dd315798ce9ffac5d1b8b783e63305aea4f995606fd01f4c72ad05a0c4602a058201c129892f255bdbf72b8d621610b407fce8f4526c871f2cf2e168c43e700ea467aebb04a7535ae157c1346c8ba0a47b6ea939ed7ff6ccee1cffe21067b752a58a278ca466c99f9c58ffc855b87d5e215adb2f76a917037f416c4b3181e9670a30a73c1e89b686da96a412cac2140d25ed172dd3b9ef1d65ce030536e65a611b8b90837c7c6107df2281eaee2689ee8c106071541918dceec4421859a468c30b24d587c16ffe13deccdece62752f563d8b05279babdf11b64d4a2a306b1e7c47e2a3e09fe34b2229a7e4aaabd465e29a7c71834a7c24a3ae9459d4b83793c040a0ea9e495b343d3bc1efb605541e130e6c092ec487a70d8d04039d958584d8651a5695e494d8b3a119e4dd314f28e4ecc1796ab749d935d03d38dd418358d185a74c3265ca7ff74da571339595553372cf91427f613a6a2cca78413dbee4c58ed1fac4e3a7d1e6ca9e9291ec04795679394c443f88042f7a518e1a64b2c8210fe3e5232a9e9f386bff28b6563848cd4f9fadb72cd646bc5a22454bba5fb4dbef1cd677cf2ae5267a84d006593286e52f71224cc97dd820e1af7a0d902dc0238e569e2c8a1665a87fb390e74b0a53ec46fac98c71456917d3ab28f4e8e1ffb60dbfe54005f2cbd8166121937de5ac6493a59ed361fcfa847030e8e0d9ab57970573b279015f28383eb62ca935a10106d523040c95b3761e84bd6b3ad20408e7e27341b70abbd239f5c14d654c4b9d15ffb1a4eaf87059b2de09b33ab2f81d961218aa64372e87d3805051539ea1e9e3139bc7a154c551342d5275d1d1148a087ef387874a764f4ff0e5d13cc5870561a541ade174d8df8ccc9cd8f04623055066723c920c4289a2d13a637a4abf9cc37d3660ccee4b7fda3f30dd9a321bb0999fdfdf658f7f38f7718b994b0f023009f6e2448f727b05641b4c501e2fd4e2d0b5dafa6244cc775ed255b1c480f56d300f9e45b6b1f027c8b03c4cfb480c5b2b235148c4669c7ef0a446ca0c0f584c51a438dc09e8e7382c2505523835a004e90f65d24ed14d8aba5e74e5b31fac097d30a36cc557426314794001dde7d8ddeeec151c856ac353b6d785aefb213a8797cdd50a2cd2fa78b7436a2a11d45033710f56a29df7ce71bdff96cbeaba6f0ab6a674d13601f75312f8e192349639955fc1aa8ddc0f0adfa011e6cd351bace2c337ab9f4ffdecb4876b09aa3c75f2e31889e35c9c3da0bbc278771be608c3f2ba2cac84a33caa4c3157cd2343348d9dbef6afe6e34f0c7d289d19a5cd043dc67e9fd639140a98578b641a774e8bcfe585efa58b7ecf89c7020c285ca663890291c59818a2b291d45cd43e1dd7caae51b90f498fef6a4d1937d1c8ccf051aab9395a8fa0676e77c5e29efb7b60d769903ed45ed64f5580ae0856f0be45bb0fda4c7f33f03a9ecee1307704fdd3b2775f2ef2b727831e3e08ee369eb9529aa6ee5728cdd62e9c30197a4cf6eab70a2a1cde8808285db8eae478cd61ae06de5dc80f7bdb56ac2b435a3293aec2b72580ba181483c0b98acd20f5f6fc45b776ae1529e0695b9442db60dd2ee6fe0cef66980b3e53b700227348248b611f8e585ca2535d90a5c69bd36d069288c203add1268f844f157c6fff705f0e5fa6fd52ed743d9db72be795d208013372660844ef23c22ae3b387005768b6099a9f7cb01c00599d01b69b96c96fafa0ce183fd301f88b0376142791033013641d4b4c25eac5a1d501bd843a1e8c43990249c050d9b269b2d4e66c8cf4120a5b0e43f55170d7b05b671d7c980c988ce2675cb050ba0deab514e152cd5e829af5c5e9b2332aee8b06e82c494077d9d5df0398321a74075dc8eaeb6b6fa8ea388d3ba99738dc1f8fee884c91e2ece7ba3e2cbb98806c601368e71a9903806be5420183f3c5d4e08cd82120131629d1484ee2d930265e7b740773772d7e4a19cd435f94827754d3e121cad545f93e386083e84b0f3711d79051f0f2890a65dbc9d1dcc6492019817b7a5999b2857b7fc1f87c05dab0fb6eecd79479339a94c5a7e0d938d5a8fa66f4a7cd047cdb3b26445f1cead9efb2cd7d15fcf93fd2b921469e18558d0c15b3f678e828e2ee1444141a5406b7af1de0b1423e39fa3a5f8ec5805db7fd3d37b74894c2bd4f31ca5de68e4fe079ae5d0b4082de1dc17b20c6b878ea39609faf0836e17a40ad2c65e084f1f92b6e24ff4cc14f0ecc52c92346471387142d830b5a46685730d3fc27e5fc060056ae44c7481c71b4ca4af600701e609ee4bb4176719ab4490910407a5060c02e792f6f6c8e061efcb194d39a2803c6595b066b70b86b8aec21c26a2750f7920687a904e713de67a1d5d822bf7affe00dc30c09d09069245e813b9519ce51af3825a8edfd1f236e866b0f81f45d4e6f493ff6fa503fd43cb45b7e3097f8d7b66929df66a00586ca4828c22d55389d8f4939f058353de4413097defbf058a80225a3979e18295fcb51dbe5d38defe202a8bfba9e253f010c7eae6fc2f0a94b771c5aed091e2e3f59eefe12bf81030790bc30ebecd9732d9eebf2bb398de91dcec1540902110196b750e65715417f044ebd9127999b44411e051d5bbb629ecd10c614b66648816348ec304f94f46820a132f38cdcb7dc9e99719090bb3cf3126eaec9cfd7c0fb4fc944e21fcd00c21d2c14b6d728d095c986fc3219c7ba70f379161a3bd131916f40a2daeb9e42f4636eb40315b9628e226617f57a148280716ac717e01931db0935b2f03e9bc47f354eeba07d4c287838a2783598f9f5664b900ae3788c56383d37f65d131bc6af92afc171d91ce4ff053c4c277d90ec57ffd444df5b6888450dfaa7df3a8491d95de426f8cfa9dc758220aeabcf3a2c944214e71516ed16810b444d25605383008bc200dc19860aefad61a0fea63a1225425286c0bde556da16811f6d01d9b11ca19755440eaff5e831a81ce1843d992818da148585e1fa6615d556913b4413b1b56b1ef873ee74feae8a197271beeb37d76e77526a668300468d460202936a73c577a6c84156ab20dd8b671b3cb530939e368d6a937e0692b320dfa9514735c95beec7951ad9ce02cb58877d8dc8dfa0c6f7a9854907fca8d40484a00dc5500c1222d204e098f7e90daa6c955ce1ea39862fab4f148c3cffe9d6f2639180791eb160fd76d7094e2047de780fffd07b5bc19e6105997be5dcbec3d0b03f1b49ec3ff684d1e1ad6bee467cf28e3799b174b72a970581c20637d8ac9cd7ffe684d852de625497fb3a1281cc8b8cc59e18806cbc25cc76decb3fa27f46d5bfd3bef956eb3fcf33ac76fdb8ac35848561c5e5cb7af2c74108b81ccd23c9108502a3c4b08c24e2abc32e5608229110d531866779c592332e6bf8390e14b4ff314a2da20e4f1950b138b16d20d715c655800aab863cca80f8314a301d6df7a2fd400afcc5feb06c468ffcaa552f1d44f0f68fecb00d2cbd6c35d6c5a6969d535dd852a6afccd80d629d4cdfee210c8ecd0bc0d1592f342226493da0c2ed92ecdadb6e675162abe87e1c8f10fc28d63320709cb3982c27e1f35e04eca5bad57a5939b78dabb5083d8e46c113ac6a4f998f7336c9d867413b9bb4ad60ae075e25220e1960a394fcd1d58952f72e11a4cbfbd6479627e1c5248ac019a4e3cfdb41dddf450ff48df0b12a90b2b18a83ab9055d51df698083675b60adc75c1b359fccced38a900247d1ecc28e185183e376f792f50296dcecc154b5826d37a4b84784396348e0141166bc42fa794944c725482c46acd30215b9f923a0d6f7daf45d4948eead03a8b9c0762bad277574e641329658cbb359e1a5955bfbfa0494f1608520c0ad7480b103f851b394c709293c63d98e201639361b969a1c35f9f7d188e51a6caa5a768909749b1771b58b7738a6050e07a3045a11f1937229e421affc98ce90795e50241f0df1df86e7b7bb14d79661ed589d2d3156cafb2779f31a34c2f956f44e7871102bcf333c2401d32d96c59544108c5543bc92360548a5afca51f90f8dd23a2a6802e73f8580dbe5fb370b7accb8b0599060955eadaa20b14bec00374ab5656bea580d52ff7d5ace21de76e13c96b1f2f1dfb0c239a442654bc10b13bac9538d4856549c432600a2aa3104e0ef3263a9ca4d59d4d8ecc9a6ca5c2008a131451287dbc5fc20ae7306709f13b3a267527c81e80764daef476b212d22128f33fd98593a10f550afaa9a601e2c0f8eaf419fd62c2751da582cada0f55c8e1e55101ac2dfe1c69f07d077db85f20fc8489d379db843d936b242d83372d8554733c88ea4d9bfee559bf7e8e9e8705bd5f49bc1635732d59bf1f6652e3a88e6ba20a87e75f09de968e9eeddf0f46959093e73e0be3f2ca590c3045ad23adbcf47b486925136a6e936a74aabde40d6e3f54531d9327b5707dc412e38d9910da1a6e5dd0e4db23397235851158ffde104031f0808130f8230a3d92eee9373d05080ae964a9d6fb65f829e1d4cbb1183df25eace3d0bb04a007873958b7bdc2afee9394945a1cd481c2d0e5a5903f3b446544e678c8d7ef3c429a8d6e2ded9ae7a0638666a3a2a5b9f8312ebc77cf220bcd84f0a8c61a61e51c7c799610fc3869959db58a353adb61318115491be78ac331d6111477b868db482ed665b24e85bd4aa7acafef847939528930479af24d1845dd27250e09044a8839102bd9669767f4768d2b394116034e039b91d9cb8d7481ef9ed7590b302a30a2be9b05831fecd9c3ee06842d55f6e15ade772962ac6fcfa3aa8200b03daa21c283c0f89cd00b8d52468c9eaf458165acbfa3f6bfc2067b78862aeae2af1f74d5eb961bc807afbb5d63927ce34e268f144670bdbb654c8dc3590deb7f7575da7618e837aca37c85b8dc023b53a54044ef07b4aa4244b095548740c7faaa7e80d6c597ac149cfbf7070282200b5b114477e113df3cd1f4b1599fd680deaf6ec366384be4a89d77274aaee1a41fcf4c06cdb784774bac3c6172aa0bbab3c3cd084f9ceb99603ee64fd8df8cafe5e8c1b0c7d93db5d1e2f7e253a8a2372657c3d15f6a82996ce5d3ea1f2a18ed5e2abcec04734fae9a9fd621554e0e91259fc76d6f6f84463c7b046222595a8a98ece45b2ee290432c0e8020f5430e94558f9d096a85abfc21c3a76b6fc95c52921002f339e1d267b04fae819c9126163bdb7965927de3a2ecf9a69bc282d59c57fca24dcd72023240b51f76ba06b512b269d3ad995362119fb428d337a5b146e63780c5760bd138835301b12aa9a3290ea4e68c142430b1c37d6dd383dd118c96a17898b03933dcd93075b2bf46fd35d1c2f50721be84f350cf365d138517676645e5dee0d4737bd8bbe9443f225aae74b9ec9c4fef0ff5a95ee88d4741667a358e4fb10a20d5baf1b0e637e41382a3fb812995f953598d86af476c2f14a736188390b542c2956ff4d79040b9ae3fc8c9b3f42e12d2194355ef97068f2e7bac555d4f8fa8bc3af2cbf90d4fb21c0f1bc467c493f1287b5612483c010a251faf13b7b80a17f8d21db279a4b113dad20a631bcf95d5527c05313312314e602a6d05c8ec91126aa818dc86e5af6a3f3425ac3bcef2e37f4adcf07ed8310ff80050a38e2a8797d33fbe41af2665c17da85a7952c0bf397c1b85242f404af070c1e94436ccfdb72701176027630213a097a8c5460e50ca61aad6a6e079f6f1988eded45a3e502e1a56f03453edef5500f4268f3924302633b39a8776229ca06b8bb23669450b73038411cb68755e7a18da07cc06b0110cb6cf710fe12a50f804d7a36ca77209b5624f56d9241303b64d2749639f327622eaa1f8583fdac0567471257b1832860a0787af9311dd92802ba8853f2a7bb7d6c71030854f6a39c0c384ef99382828738a6abdf4ec5908c3786321d5b305849c686ec28281fbcd6ac8506435f0c1502bce8e22e360993cf75e54e65a85391d89dd2716ce0a3bdaeac00f75358f005bac27b62eeb31b44533c8bf8f90199c6606edb52d5d688d9b88c3bf613385f1d3092e60c308b074ee953dc07c8cd97d94807230583356fd03e39c2e5f5442c05a0fadcf274762d49059e39786361971a36e561df57d51000be08476e1761428d72969d8bd80d858fe7d48ce52b7f8314cf814c270f5c727f299b3c4bfd962e5f403df7edb3da7b99118a38648ffb0619c4934358187d838572425eed5104612caf8ef3e818ec2066f844b028e3dc17f968fc7f225d77d1ff119c2b7f8b922dafa888a948973c7561063c91806ea977357fdcd7654622aeaf10840c21a134211116595de232a451d238a6dbc33a4fd711abf22328c30e93c62cded4da22db5a280dc8977a5fdb5aabef546616afbb3be20a6bf2858a94c22746d670cdd2437f27dd28d1accc4006878afaedbe4f9b372cd89625831a72eca441055dfb570a64fe7670835f82aec7a22747d87ba1befbefc3e59b1b078b2a1ee42bb2f8b321795f65abfe7bee4e5117b92a915a59e560f5fae629b36fd7eac76290747ac7188aa00d00c741acd1f807190208e086aabf53fd44203ad414ccfc0156d35f92a59e06ba2ae75c66a4f12869bb77d017d8ff349ceed5d1baa30ef2806057be7551369c02c8ac01bf9767447c6ce58ce22b48f389ff7763906fdbdcc8314f27bb276881d77b6526fa0c3ae974c97a9eeebf8f37279f39e352337ce94e0d42a871b3e2c85dea937815aa4b43df258fbc9689b1124a6a2221e0ea7180ab7077692cdaf53d4fd3f9ea410ea781945323ad276e9e78b836ba9f4b4ca3bb0d57daf584bb3fd0b473b47b62fd880c03770668e2be310f9da5c3de193a9a5ec67996ff0c3b0d928d970ec9ad44aaa6f4f6513f8c92e5c38fa413a33fcf3408f6da66029068740fb19f814456389126381f5ff01cb26b403d790a70e86a63c262027f00c958173602d21d96fc31360f1c387c6f8dc880d55dfdc25b5ee7f2b4065e3b5804e660fb810c7e4802739f5e77545e799b97f4f32f5f247a2097b94aa8d95c4409e2fc10a7ae0125a0141403ce043523f15c4e7f2ff403973840318cb518dc084f4135de7d19bcf7938ca7a06a86a758158782a3d34f5064e63a97ffadcf138ad54397244268cefd080d4e3661435430e3d10e84c03fe6d3d3357be9cec6ca063d0c7a0ef530eb3d7a7aa193e889976dccc4f02413ffa2238c6c8a7d1d3b2ac7125c0b7f5d94b869fb9d13c618a2c06458554b3e4cc9f104b8595eeee79a1e7fa1b7263deb4b0bc1d8e351e04d912146c6de4848b20690e720ab6a80ccc101a66c2047d04d32c41d4f3c376101728938ea8f7ce1ae0b37d314801872474650ccfce3b98fadd2a8cffe6086c0533097239bed9921cab26131b05bf985de7a1f6459ac0f3b58e7c5e17db2a4a8d9bc1e22012bf638b171bee77009131f84df8ff3697ae0508ae72724ae81a2541917eb5c14bfb4bb82533e5d1a8a1d2049132c79d5961d58fa7b034a2b3ae61c04e8554f2c8baebd4c7bb5177f2a5de6d68e1ca19233e1bdc775b74ce240fb4255cad2945d476a14f9a304613d1d4ffdbcf7ee2f3d208c3dfc390f7d001238994488083575cbf20ef0762dc39ffae91261c1237823e70d6103bb5a2421364919d897de2daf54215471642d97f8083b152436fb8e1fe4c79dad9b8b2bb4ff8fb2ea2ce98875c4b05792d84ec4e1488d740c3492751dd4a67db620187054391e41307e89d63ab461dca7f04f68dfe1fc4344245e849fcdd74c5676be2f99cf1686afa52483045bd6f0faedceaec6ec89b0d7845993c069ffa7d8632f90f42852a68418ffa95ce3d66146126ab6dc807d77debd15122cb959a76c90e827d6048f541244b79bb8afbc0e2d4eb5cc0d020e680a504d785b979191dc85935ecc76af1db5a4b132bb89d7239ad0d3cb92a2017c5308619f5eec877e7a592e4fb4f5591d8289a02881dc5efb79162c92604c6890161f094c088aa440027b1a23701e2158cdf34edee4bf8dd7b34910d505e4c5d680d3a63431fac34151619a141dbba5a617d9119f7c13b866938c8c02a0e09003afa6606d2ed7983ea27971585e7c440a87cebc58eb64d3be723dc318c28b7368be3014c053bd92ac27c2f322e9d6004a1ca00295634be5d9b41602da020f9818176c967b6e0b0590a5f8522e9e8378dc7fc53b618ed2540fc9f6817101451979faa0c0b4212ac119c198765e741857a9706576cdf7798501a523387be25c195fc070ee9047cacf4234b833cdb77f3b556c568fb00a19d5f289d7d560a7fc2523556fdfbe28cadd59df1d6572bece8752c9a2ebc0fc3335d7e05765b9e525db610f2e683ebb234b753d4dd89b4aa54f6ba665e04c26fa24f14e9a02be270540c085fc17a56aed5d98c34119a73340a818433bcedc8ea9b3773e1b4198e020373f9561463188d987063aa0814f61fd48f72dbc3e5a398556ecaea40b3d2b99289fe59513c46c057adbadc73e507a59bb54c7a7e68ba80647f57a92a2dcac0fe6e5e511786d4e1a3b06f332ac1c03012e1187e2c71eaf23d9cf8a5bb346b673bc40d607f471a17052b7a8b5798d7ac8224ae03fa006750ece829c2e84b5134a699995c041c04ce4b6269c0add205b36a05a949434de002f1422bcd372901d6b04c4cd9140814d9994975bebf1c7ad124cb1fce29925172279ed3369c95a9b0780137c6f9c8281dc510027a9b8f3cd38cc0dd721b9f4f9a398b8749150bc58a70f0adc27988909b2d512645e34a482b9179df97a920d065e6febd25e84d70abc3627765ea6a56d7a090d63ee9ea636d2383a19758367adfea8a2acd62cdba103c7add802802e952c5bd16e937b22045c8748325cc3d0850c488c267a60da1c7151d2d0293a8b4d319f3db02b8d5363d30a636c56bbb3e61aec0e25027dbabd59c2d3f2be42e621588303e766f298a29f27df98a9f27a6a3a624a6369c225ca4049584f025cc99f6f3334cbda9373c7c3964f785a9e58ec2538189c373c2dd123cf86a4df66312d6663edce96108b25c638a4d743c0f2e8c9934277d4e7a304d052467dc47316f14f4dacce72e2849e3bc46ec58b9448614c191b421ffdd43670bff983bf78d6713be30bfa39ef55b11984505050771b7e004f273e29ad70098e19a4905870c8a51fdfda214b40328c4bc1c1156195e098c435a504aac376a3044f23302a9f1ae04e08eada26bc0acf0f5057fe5284facd2e2408bb04f4a115035695d04770377d4de3bf546edf900811be10e630dc9c6e1cc1a7e236ea2a8c7e1521e7a73d310fb04953e871ed006dc8cdc1f242099914e3347550d4a379f8b30e2b007e0795964152376a0b3bb160011e1ca1c5ad8386053f81e10ad35068d453c0b415719704856c49cbe7a382b3535aaab206bfd3dc40ae29cf08d53401bd95b2a720d957d8a0718c3fcbc2808920453029e81db465fba14549e12bbb1b2a05d6ec9def9f36d9ea68942c8e0bad0d2ceece7a2e6ba6441274dce4daf3beda3e1df51394687bcaa88ded1317a5059da98881df561db2643fdaf14569b10d6b4ace3ea5da3c14a565e09c16de6025874045042dd02ca25685dd342ec446a098c48602e63f7771b409f22eee2d3e01ac3c34a92c45655604f8e096ed6c568e1f2b3977e3e9b22ff1c532ec2a106638dd5f21df907d26327c1381d1b0fd2617ac64f29ad7ef846176b5f8f1102c965f71524e26a344eba7e184011480b91c1ae31aa173cc3ac08c880fed64d94a3863c707e23f1efb4b21517e91d6949528352e8c303f6671dfe7fda544509a3a36ed6be0b2043575c2e7cf21d198003d7085cf91a1e0b9fb24764de0d246d6b50f6ed08b85c3f4e7b222e70ee20fd00a047697e0e26196b1435a0c0af82697090810a63db6a60e6481964d96fabc0408081655170a156160cb860ffd591179fe877dc974236c26449371abb6660aaddab0f805e40311ab764c865f83abda8b982aeed0d0bde3fbc9a6175a404d8a6b3bead71df7b258aa4114bd27b5b11b9aff0ce0a271581a39ee80e2b7e949716e55453f1e4c22fca0976eb7dd078bf954a57a43ccdc7cdc41e9f0a228073c2f81a18e61c5e0519c40c6034419000cdeac98acc506ed5df9bfbf933e85ab01ed89a6f88f17af74724c60abc37cba6d4602c2f846379ee4fc2ed0adc0f8aec53c21ac3339dd6e89d32d7a52e0c56f48a4fee08d74b03a222966f7883ed305be0ca40e5781aa15b1b55b092d330cb8e1136fe4ccd002c5a76900a6db02f2906a3844a513de892ef777b459cd4ab2bf743ea49276a7231a4dae9d8c1c8fbc680d54e4a57f0f3f44c7c075b47d2871b1ecc3a213022b7279625ce2ef2f8be51906e1108e3829211165941c05d8a963a888585a3814d6206c4640cf026feb1f454f77050b8da09f018ffe0e02c26f3b1f22e2b296eeb2e8bce0ee78790cfd7a5bd9aac4b37fc9a8ceb4d489c8fa6a8c4ca2d486a20be5d0ef449f3a77dfbf9110f0075783cec1df50856662d7ed2fbabdb94900cc1dced0c25d6c66824231fe41add6c7275c64a627319b874eac7247bb3c4c3f56f5c653eeaa5807ee72f75c400ba044136576a6e9c8ea87492d51312b0589f1e51520bbb8150901a0a0c0963d5ad5e3b35d33f106f9126f971f853d6fda2bc246a5fc6036ff600a2fdbcb9db7a8393e5157197aecb158af8064656969787ad7c0fd01f1fdee7275ff43bc6acb2adb0fe5a68394a5dd9eabf01a6d55f83fea7e8d7295a00fd663bbed89e3cda2fb5d95fb3761bb35a6cc10152c0d4730627869af346fa0606bbf3b106407d76e8705c7255c26221e748278d6da2ddf4e5b4bed05cd36c20a87af87eede237ce565576fc5639863c86c2722355320af3e65f04dc657a89b238e4c1ad7c674b7aa07517a01736799e9e27f690a72ef5e67b8ac364a8191c6471b135e5410663c7e9878c547d2e9af4dafc200dc45d996e2303a2fdce53892cfaafd4ea6f09375322b797b09d2e640ef6fa71e1e208fb605dc5643b2fdddb04f9848e08eb656ca586fe2ae0227b98eb605422ba536596e8b3311738cb630f262933f6e0787aba69221a0ae916d835ef95851b6c702073c163399b432c9a25735619f646233f554b4d6f9959123a77ca9cde399a55f021e56b75e3bc776ab791f9bd4ada8bc666ca7d2c8833d9a0475e0176e83a77d32f61ca8e22c5508d2cc3a479b2d1f0978ed89643f6a6d659df5a2e40ef5b818869e2ce3673cfce901b9a02b5987bc3b68b14651da4763fabd379e3648f4590a11f4e96c1597fa676f0f5a61d86d5fd92eb9f2d463fc8125412387a4f96173a0371b5148b7b9867ca1e127a91b5e2c803868b365d8ff0c178903f9c1841b707006433e3473a1b69a1fee3b43031e8ed76a0b335146bc3f1782c6a072e424c90ea38c86052781d101a8b9d32ded239da5aa0b95420f97623effc0844dba239b18587860da703e61bda493f381451811aa927ba24ef533288de9823a587007ad7758e7c502e74e21230c5775c0e315aefb9d78546fef7910b9bd58ccbf59f6bc112544ad78217f402ba7e08ef3fe3a06c443b74fd3aeeeec4f7f930112100becd9c89b9a5af43d6f0107bdb122fd6b1d00be040d3cb664eb24e0a95cc0ad2d3bf5fdf2975b521eefd790b718cbd34b26e0c2b3bbbb4db6268fc184a73825b6b5265e6480d050ad9f3f25bf6de1f2332125e01ddc8aba944bc03faace27663a8344644456e070664525ab94549ef381c04aa4d5396e1dc779ff944b1c10e5b238aa88274c6f70d676fdc2400404e61073ad4959a78eb8170f987426ad52ec4a8752e2646bb706cab4720a41ca256bd7cf58e5031929971cee1c99d346cd29280f71aa839cf04b845b93197a74f93ffc4d9a2eb727f73c70f754f979ceef0f70f7fd4d2597ac710265587ef46a6f4c786bf2a8c5c3b2231a70012c1e390bff09e6516ffbd41f3299881200f4607c6856f12ed4f7df37100e0a01641279dde265234a908971592ec2d0565c4ed6b7cc44c1a46b5f110de0041434dcc1b1372e956492e3e5bd56d33669f83e2ac91d471cc8e4819278f1b411202f86926aa4cf8c5c4f88daf00c71b83f441063e50d89e85634174f51cd54a89a26e64cc31c631eaa26be5c55707fdd4d137b07a5ac4672dc47021c3ab06a091d357fc278d2fd32a478811d8f5567b75e0a3445c889e8e87ae1226859f7c22b903b04306d110e814965bdc21ee0da6b790ccf072c0996a70cfcb2107394848aed5f86ee2276d0d1acb76209fb156bbb53f6ff08926486391d39a0a3244a85782f7cecd8f65098dc843dab67734cbc1e275095ee5242c61319eb984f359022ee3dcbe162368e9258584b0284a296bb1c25b18331a090924c2a12e545d88692f728d76a9a197d1854d8ded72d5212516458fcfc143258ce20bbb66e801eb0d7ddf5c2c77c44d9f40d1bff9b58468443c80d8662d86b6a0c08efd765e7486e83b2690f590cf1ee2a01229e52ad5c00ecafa18fbc5e101f4e499cf59484de8a9077d952a8306e0e267216bfec38aa7de002a25c328cdcd82cb01399d44b3e5712f0095e6635668ee03bcd4a5049f057571b919e488b71d297c1bc173737956468f2344573d8bc707afea06cf0ee6bec2a6046f1afcc79008a716f6e4a92278dff897f115a3d4f9b16ff9c44491a504331dc5a3a1c4b1f4f5649de9fd267105749324491b8c4c11705201e14ac248b82f89b5dd04ec838ae56aa0e1b630865590b2455be78cc9de27e5a211cb009f8487d58809479da02f2cf846ac051d3d5001fc92db6081293c50dd311715e96ba0bcc05f6dac135e0234b14ed2e283e7852a4bbaadd065004f808e78fae04a2539dda0161e475182e464e7f09366fddaacbc5f33042c2f82b31d39ec6eb0afc2f2846066edf9db3410c8b6c20fc7ad9f9cfcc812d0a4de79746cf621767fa8dea27e1b091171b850fddeb31388090fe44ce9fe6bae4e801a0d89f009fa86f0f931b291215a4e92056ca483073218d93d48a81d8e09cf1054a88a19440bb9f0e3aa991f8e5fa0bc5d1eabc0a4ded30e7d0b18475a56029061c0cda421160b01375c2d8c5d00f7dd90377adc9efdd3de43b3b92aa578f7ad8813d1860569f3ba2b07c01bfdd91872058e9f3dbb2b69f5a3bfd93d342481f4578a46925de7544d72fc7376f1ac4358b521c5a5c39f331b2d321d21021ed2ed748a6d31f389a10fe0f572bb56b71bedf7d895046c14feaf11ba2b2e45c4b7969b903211e29949b090db7e81fad30f05c5eb21a97f65d5e7e77e31bc172cde16fcc852f4830a079746884727ccae5659e177ddd2d5cec48407d0d16e9e4915117cd3eb121af9c95be6c7c3862a7a6bbfa7d790fa49594403701c4425688ea505974af1ac148f510a122784d651374881847c05d8d7f14d8612657ec7c104bfcccd36dfc8e2f69c9c03c9ea68a1c71cc991b31fae4d12de07bee27799de2fe240864bfa256a1b780a369e252625b254f2c1223f1fb17b012f9ad3ae400467b32b10d5b8d0d498e637ebae0f1b4438528f260a9f1dde1c4392435beca23af402f3fb2b6116e5e2bb61d3c958027114a62537f3a9e7ed9fd9ddebc4cc0005baea42c3106300db9400ec8336eb4c60bdf91d574096664e1271f7247f1eff0de93c21021395b75a9afde72b301fcbcc1ee662bce54008312c08ac32bbee13c423cb9b106cda78d53132ee1d638197f2208ddf3ef2b2ce4831f797f8c4f171bb1c77fce8bb79f17b1b9ffb96ce3492e637da0b410c42cbd14c81b3ed4a2a28a4de5e881cc3d8e952af8fda8c7971906d6bfd89080f679fbb98db4cf978340b2666da9c88c3d8b7095d0addb7b5cf42eb34043af8f87e401640887f1273cc3746ea9242dc18b6de591c3f846b0f3cc039d9856f078e393da22338b464cdb56da53e10fb2b2fec2856e78f1a3b32655d903fb43b7a0b031fe84788bde59708eaa1b7b3f0e92f95d2af20fe3e36d04ea1e0ae43053fe022cf412efc1f860d07a6f4f7c826001f397dd8b56dbca1520227f687ef1edf7a5abd8e05aaba5892810fd98bd172c56e71b05389d8cd03a3a0070a552173f4be0ab0c4b73cbabde22e53cc2d4ae4d9afb41308a96ee56236b031b25445ef48fd514a5027f2b1b8a3b87a92b0b23e2df5a4b2b0ef1af040da520352004e7f32c40a5a3955448dea1b5f2e56fbe69f8ad92a47748af76cc4c9fd36fcd5b1101ff41b34e87ecb90be5159067b4cd0b9d3b53e33a63ce0d9b6e4bf1674f5f8781b329fe00c90a50b7d77b0d8cff45898b26f9d1627c93353b86cc28a9c59e2157c4b9d2690cf1c9f2c547e0c2f8986d0dcbd8078da3aec458a57be83dfdde953ee47992a23c19152c9994bdcb75868efca6f4c0efcdb098b9e26a3056a75114fc80ac235f77f0a91191587f5dc62e7660dec0ff47b70fba3fad4b6a693658af26014df5c2613d1e84ae9734d95db5e17e13d5ab4b7cb8e27dbecbcd2333a8ec963026a67ad2e211ba5c987bbf598c2262a8fe3bf2af32fddf93de86b5bdcfd7fce2c07fe60d70052e5ff5734404f0025ca9cf827645b85b5a344fb238eff31836b8ddde5f206b9a4dd703479cf7b63e92044ceb30371ea5e200c1d9be48340da1e0e135278d8f70a33a664698dd58e7803851ef5d92fd3fb0527a501cdea14eef9d658f041db91c34ade457d5f7bd4d0827a0dcbb15bf41fd041596507eb6d995c72f6e281679cc49c300965214aefe0a2e2dea49e662b0205827b19392b09903b6ba57c887a89172ef2083cabdbf25a5c8c44eb4b7dd07bb8b9aa8d88f7c60bc7b8b02c990a967a04978a389e6d174cd20cd62c6ce555f3e40ef7491b57d16bb9e2a685969c49dbce847956f8a2c4ef38724e7ba8ad42009bc33530b64c40dd751b4f742062b882ec4122d03630c8442ca1686e2cbd073e8cb7cedfacdc8e80814033b28dd28cf92aa997cf5ab0284637ba7c4e62b6cf7003f2cfbc28ddb572e2b22f8217b1cc2d1766b43c5b5dac08e0f4e9526dadc5e9374943d646d52b464d4ad869268cc81f53502a2056ba93875432392cd823617da0b21337e2fb999cea0551606018715c094336ec3498dff32647ed876bec5f4f8233d581b5e0be302a3fcdf5d795c0512e791591ee93a8b041ffc9c16ce23c3ee249ce63f8f10aaf69e499139355765029c0c4ec7885268f516946831ee43d78da6d24f76293026ba2bbe9274a5b0f965514c9a0363438d1988b0a6107404ec78b6a579130c7be8c8fb6ba18600baf7848cc9a34456219ddb737b5ec0fb20fce3601e09962eb6c022a06185e3e748dbe3ed145f5eafc0125823f2260e6bb9773d23dd465bbc78fc40c5c917979a7c01d3e567dd7a8d805981be1a876d6fcb24480a5008b2162814a717cb6cdc8a41dca3fad4087c183d77ee9dc554247b932100a28b35e2a837f5b361d0c7d34c7ce20fd13f065aa42a5a9b7c25a6db58efbd3aaa7f4fa10d91a777aebc834321032391e2d029f4fad0de9297021f376ec98449b2737dbdb2f668229bd9bf29ef881d5c2f7803de7b25036338789b70fbda6030c9446d8840de4312130990fb1501729066038fbc001306968d937088424a4bc812db9128de0d63dabd5f3ce063047d2fd77dec016bef835c013b3ea809ae6601932943c562ae49943241489c43cbc78982890c4dbdc91a920791c8bd214da63107a4839702c1b6ae8d3526758fda5381212cccf1d3cb8e4ee6c5a4c3659e02133825efdb67f31cc800a9cbd11647c1f59aaf7a74400bad708b935600527529a6de832009cbc46fc0e5d7c6fb5ede17526ab56964ff6633638650c63a2ae025af37f65ae9a8ab83ef167891ff105079abf17d717d847a610a0e24cbaf3de17bb4c1cd04fd7ee47b348f217e13719a9f7ee80fc0ea3844c901fb9a8c88a49aba31a9cc36a53d47f7e4c269ecf26c445cb565c73e97a2259f2042322c605f826fe5c6d2d79760e4bdc74c92c7d425b413ac18880044a3a90c66bd54f213fb571324eca2b353bef7a70842c95b11e7c6de47ced7c5f916326e5ca60584ca768077be4b601934200f3ebdefbdfaf32107129d549e8d909a38da62cd3515ca74811371be61ac892e817e87ae94e79239c21a195c57329ce56f571d6f423e76612772a2370a0fb13d9d6559432fc7f413268567d67b5e8f514f233d264f2f3a3e88b5439be4e9e18ee962da3e5d5f33e39a8d4d0cc5289e74264b421164b0dbc647fa45813381ec1ded3973aafd143694e49f28d0a104e462b4691afdc16037ace1f991524d72246c9fd9dee2a2536f64c87621ec7fd3be102f8348918d23022a51498b46b994a5b8bf800e94ca3883ca594f89418efab5eb9f5af3e10a862f89f8126022ec3ecc2f3dbc36812dcfcef68adc3ef018162cd32d19dd247d221e9e835e463dcff598f536d16bf2f4a0e383b09825e9996928d6def28d02f3a992059621c1a626a01ecedc083e9788e77487ac8fb0da691c80d711a0584f7c2ef600a27a9292510e67ac9111dbcd5ba2fdd87f8972c53e06d21ff734bc89be1b5a8dfb18de9c7d29acc27dbcbf37082cd0dba26fdacbe086f4676825ecdfe036f063b07aec69e016f86db012ecd1e036f8507eaf9b21b6156d6103784b06d900690f8a88f7167cd2e3a6a7e28f733d9908dc64e9cd8cc24d70a962184ca3b2fb53cf2086c34f1d032b4927a99220039817c6d8702e950740bf911b8ae8a2298245ac488a3a2026583b921fc115639f5efefd5a04dd54a5ce13df44e091b0da392cf975e4050fb1c175cb679d8ba573ce8524190705928c830299dca10859e6a08024e3502021732a22c939299064381448640e0ac872074564198702129943010996b9634621f0ed1f90c91a68980e12d9630169e651912ce3a4482273504092392820c93915c8f8dc3b0202e16f3e2b995961c1ea90c8381549e49c0a4858c61d3102816fdf5e4c56a0c07491654f8b48b3870a2419870212b9530199dc418144c6a140e233de11503e7f97f532c2d28475093c20057fd9f8b4085c3e4d09568be283f462719cc02fc65ef669e98ca882e986de55f3f636b695b1fe80bd14065a4d4a8694d520867c5fe4ae5308e6a141dbb99dfccdbf02935397d6df9efe1036d59709db996cad6359abfcf881dcc73c11e0ad45381604d8902e221ec2e17806be109db835299b60efd4670bf785203705079776c51a390447e220c531215d441ca844e2667588274c6318c57cce9b2a40d94a04e22002576448a9f3584771c6cae22f4943a1965a00b187075e8dac5a23ccc69bf8e04e1045e276fbbf51746458193963a4c0bf9429798a1105e280bf237bc973abd57c7ce6465db82f2b515c2b89d6fb1e53c53c537b192598d5450fbe21d4e2b70f586db7386ad2bb0e083255c8050303215f93a496fc32499dd9bcb8a781086391decdc1a6ec8d1103d0f779812d10b50ec78721d05453e66e13b64c6c6503297cf79718354776555438aecb73386abcb32eb2b1582af39c1ddd45ccdff249d3a88f5c75e1217ce86d7a0e48310fc58b335d59ad5d071f34a29d6d3a427d3ddd435c49e55394da355c4df7102e8093b8e412b48b32cfd8f129319e64a3ec7ac67927f1ff44968fa764390d31752af7a6f10a8213f77b69696697f186c30f2e92a2a6688aa0882876583ccdef1afe04af827d7ff377eccb41c0176fcdda483225fe75e1f70fb165e3e74f3044c5e56888320c3a33b27edec62ed0b07eac59d023dfefeee8895b8063beae290314882ed8fd402440f2137a3d44976de92c8d541ca97f73d2edbae98d9d1f12c9d0aa75547dd911f4e6b83e56817d2bee2bfe636d5f52b40154bad43c6b67b1c5a2389726b3de8052ae0b3614a2bf06ae93fb55c2a492e4a9a764f66ebd2540c5232e83b9cfb020e5305b16fbf30dc3bfcd1cdef83e5d593e6db3994d69a2a9fe95bad8a9e0663f65b88bbb5d9e0c16cf000b74d8a0d06c05279eeeca4934bccf08221f652399f68e071997fdc318d0727a566e58cfa57c7916c09e42269ef2ba75e835329f8f810eb3bbc19426cf8f65b51514044632696d6d5342c4391f611dda8ff538ceb5be120905b52f2c873a891abce3af0c50830af7d17b8385b964b1c39a18b52882e355e3c44fb521814a44f2c567a61ffabfe61b79387d0aa29980dee6569a6ee5c83b0612efae4f968fddb692249926459997934398c0bf8319ef414e49773c16e860538ae82da22885189d3fd8a7ef469be1360975fd4b1940f6dc3cde60cc4ddc3fb95170121a55109cd4d43561c823c0f7f3165887a00f1df5afa636df6f4981f1146a665f3415c05a40d28c5c49ee26ff5621025a686f47053494e11800330849f10f673cbfd0db7f19aa1ec065f96e2f248948917de4d64712e7909adafaf652a527ef2550d60f2522ae66fc5edd5c4ff6d32a8f856e3f12240cdb189901549dbba812d875711e52e33f71d101757a81b5e3171aa4fe8dbf187598a50f3d9831dc168b56200671470094fed626644c6efcb8bc73a41bca2d70f628818e0d17041062d4a7941c31d65038709b6fb9f5a6cc683acd1a0f588e8742cabeeef8af30d1af3976427b30ecf207a2b6557dd8e0c90842d62846ce5517078aca79e0abc4821b082e011f10d261010c56029062446f015a813f7000bb571f233b400bbfbb120d2e47c6b948da45d9b3f346db159815815391d08738001004624f1588f425b88231629a3c49e636e931eb5c6c87417082abbc8ec91a87a3f4591fe04a2f2dbd51670b462a6e8ce935eacff3e88f52f1a7995085218185f91b82f162ce8a5f8fe11be3a33985a04d3bf85b92e5aedc0c8a43ca1d95e0b9789351d3d518ad1b810fd78bf86663e3314dbdca38ec041bd3ce1d0e1b6981d80f260356a4ac5ec7499a4640c413ada19ed7127224f85e85c2fb1a5be85e83b060c35ea1d512d117f2109c66e889cb127e3f9688e223530aad5a057b8652b289b9035da0f04679ae9392d39bbe457e92c271f19b65280f624b04cc89b7d1a0a7ea4f31f212cf40294f46be36199ccd838128d6003bba89f6969f660705f67003710b0828b06af2e72ca9e42528b09f314b408da693e12c13a78b53d54551c1629826e7628226cee247d8316b46fedf5b661ab832f2bc49328d54b73941c215e4dec44119bb673ef4b37fef32b0cdd59202ef17200ba6b6821db2a014cded45c8c31358a0872933b23c54052178efcf7b4e581aa9427831609ae19b2dc9424a00aab77c26891a9aaabd97671d2726813449bc3130bdc1d920f437a04c96b340e9086876788dbad770571a77218aa51b8d74a311747bcacc99d8762d81bfae6b0d777513fd501a75031a9e88d2ba6b03802455a17d14d5815be3de74a1f1aea1c96439ae36820c452bf0dc97099673e93d560809f7134a16a82cceb1c9f27a47ee2e421e9ec2029d6978623a94a52a09d23398fd0d747dcab24c02690d66cba18ffdac954559e3b6875fbcc69c7e8d43d46d7a828036944a4dd090f7b5fc71a1045df5267a34176807d0ae9460cfb5955424d35b4770c724f1dd8e95a5b59caeb9b49ab97f00fff08f06d868955c13a11be42ac4971aace0a3f7d132c43a792e32f89008ee6e19ea786035be4d172fbe397167e6542753eb1d5cc3ba7ef8a95814eb5a12dc805439b9841a3388fbaaa7740603c35e07288882030a44c1e4d6504e3ba42c9b7250bc7faf81b4a76314a063dea67890a4ef8dae81b0df0194a2061dc0d4b76dd65a9e4a6ad124e30980ef4d8becc7de53f742a5fab2cf15dd21b3fdeab60c35d0a3f5f31cb1932d294850d2c202db94351420fa2e58873c0043d2bd03e7fefb39d47f9fc44da70e6eaa9607c04d1e765f39744cb9a81c8134d8e8abbb43f47ca876c5479d1d0cacfe4c7092b44f39921c0021e9074d2f57b5c94c1136e480d3623171c9bac7dd1780c23e5209997fa08b4d39f027e803f886cd934c60b3f9707236b186f3df15e03cac7bc6965e835e554c2f8f51261876ef8b6da03c07bad75bcc94d5c3989c2367ef65ca8cf18204379d372e12e5329839fc7c96e07f02c68ca683ea53311c7b7096326f74ca5874359a8c8e245a6e03e5d7ce548319b733dbb18bd83e50c66d51c41c17e44c056252f1b402b73b4fe2706c0bd18298a0a731b3154e36b8b0e091713d62e19f50546fecc65e942937b7453c3947055dcad5335680852da2aea188c9d8f1e876ae3d00bee0723955db47bfda627068d019c1e199d6acd626f185c32324de6be9922c20270cf092044a255c6b28c04ba3a7621e5cca9c84efc0068c74cea21ba205743743f15808701fcfecc889b4a763f92a54f200fb9ed35fc727cc1518d002a081b2391871bf7dfd1451fe8c36cbc8930f2ddde3d91b03824bdaa4ec3a4d24e2883bda99a5faff61c08faaca83a32492d92a0d6710f23c80468f8c2a41ae9c34652c84fc642e4560231d3ff3ad92b5ddc00950bc330e42cb6da470e9af02240d1664a3379995f2391e1c6c0fb0baf3c8832fa829c9d710ed765a819867173c180389707b1911388a551b9447af69c4806089dbdda7c9383504ccf86d718debabce53e45ca7e372bd889caa88d5442a8dfd96f22471a3737bb88eb6759bc0c9b99074d458e89a9bde90a1a94bb192cdaa8436376d49f5e03241b85953fedc5de48417c35198aa328d1f05b6036f57104205a1ad40f83ba0277cad280bbed6a02984f196e3309cc9cd3b75fc6edbe14a0b6bff77536d977f38b8816ffe63a0225c1d61b914d6966100788f1bcc3e439db0d60d43e61cb70c9052a1d47227b5e023a281a8eb38bb149f3572f1447207e0314bf34fdce57e4d00dfebb524cae84d37ba3fa502b0dbfbcaa8b6fcbb4a8d6fee9bc62729f16f1e446587041b98b8a08860810e27901da219b95bd9b7292e6a7b9f210cb55ebb9ea24b9d9ddbd8426ff7ca857545e1dbe14c4f5fa02bf1daf36110433dec31098e1733825d1653fe8da7f5e061690078eb0ad351b64ff9f0e7bb45d2094461875d1d0001ec6df0fd31ecc673d6a1ad8249ed2e0608506f2681c224afce55e6a91b06e1a5e4680ba4c8cda82e19db0fb885c81ba3e15713499be021fb2192c98cd60528c664063dae26158ecd96e58a158b3d0f618593fa3be3a399ae8a188f0a754012f885e8acf7079bb3378f38998bd43f5bf7bb24e0994edb2b2af2727dd921eab48e887c2752c20ed1e76f790c90b8e9e709132590f12e7063a7f22ddb7988d6b1251856d8f7960312ba78535ff0d8c78c855949b72f5a04d8bc57cbae9f031cbd03cbdd54af9bd7adb9faa232c75f7a83a5fe6171b789fd4bd697e6f531c5c9f3519a9637fc2a1e33c8b121eacce0f0d88b914d88ce95191c4d783d1aa25d0f93450cd2c809867e8b74c016aed87379e8a08f17e1f18e62fb97e7db90fe1b91d0f135283be5537e3160c58bec013f5acd73d55c41396f4f71813e25cec5c5f9e3b839647d1c6b5f1e0f078e6fa8fe9ab954c3aceb4e7082f1479d83f393ab4a70f5c321de5ff6da8ff980c0de5cdd35f20a8cb0da4294a9c220942040a85a509eceaafe944b1883a744a58371f53950444bf6e8157937695cf95780bc1888ce4bd2b4706ff65a78070c92c4c05956393acf4b0423311b2c7ac3a3ceb12d2a90d0ce70982c71ab07d100eeb0c2436f20bccfc5e3b1f17c28e2372656bc7097befa9ed1527bcee1018cab2273a0924cc33886a6ed7267fa0f3e0dca2fe33a8cbfcadac2681f13c8ab306804744ea33c981e9cfe140becb86ad12d8db117e8421aa97a49e7fc42582dbbda3f4f305cd724ba2c86cb7b58e9d02ac490aa8975585739930884f9f77cdfef34ad205b7700319be7dfeec1c8df8963d9f223e638d4203a43e384da2823a373c19957af0b81818982810916d883afaa0a9267b069bb5270ba7569a82a8106572170f761d58f94e6d55b1fbfd031f5f594d8a1fecdd238307e5aa20eb600cff117ba3b738a4d22f93774208da9b01889ba232c3c6c81150961f93604e7ddb861a83147363eb140c284d3b4222d10e2e1fcea1f409e09c1c616bd83ea45f0d2127200a51c224a66e7682ededb8a3061a25a26b43fe1aca731c2c800791e4f06356b2c36bf5d306ff688e3d822ed68d7d9c232b2d987b36558b78b11b3110463da8e94346b21ee537cfa0dc14415ac3cd0e50f3c9bf18e0debee9e8cd842feef54d49c48d562c4e71a79725fce048f7dfbb94d0ba02523b93f81007a2a39c015c146a5ced0554f7b8a1b416211d2cd6f3866611ca1416ffc76c6332afc59c791dd353cd18ace42e1de24ddb4954075d4b8db805ea3b388cd46330577cde0e09d83c0a2fd1a88d87d546b7a1006827218c248296685edb9f8de42f4a0f74dd165300450dbc121595d2c1a2444a57dd670804431b5a788cdfa10a2d9f4774f2fe38158702424929ab1cb7c75d3d5b49a45530763304509273edfd477de4e06be22ab5982802a5f90620e2c5a17455510455763cdfa9c78300637ada203b870884d07587ee962e91422d181d205325e3e53ac5e7856693cc1f9f684bc3ac443417441a48bc5524fdcee732570310e6497a7b63c2d78e8dc7d6a4af5170fda447904eb3485a177ff42e6c7dd0a43cffab87ad0e353f036b99edf50db584fa8cbd146cc138c167fc67ab13cd9d41779c7302c820271c495a261f0dd422fd8b9413820e35ade60b3c41466944f914dec8b18ba990a6fee27e78e6f6ec7a53e675f9a770fe2c102a122a0b1c2a8dfed2069856cf7abdf04224d92f0d3cf0b74679430cfef6775133a66c7330cf40fd4661e1aa26a5ecf851a1d1d70730064ff5cace10cd9041f209b091fd20cf8945ef856fdf3cb0aca59923576e29f6c34a2aa95ef1273e122d65e1439d3187017d7726d86ae4b7c66aed7cf62023a7077063481688bb4f50d88a042b0e3cfcbc5ea899518a22a808201c72cb02148f5d4f26b441a3abc9149f4b44979908adb2d436fb4899a4b15734d43287e128a8e2c53026c2be01c8bad76d2c3973c11b7f0eb33815c20e25da8bc0d1c8324d1790bf7a02034623135cebb510b9c3b97eddda22eb9042ae069d4aa7daa9dff7b94d039a12186214883007f0800dfb291f0286cd7f20f00da43505f2ce26074ff8e8fa7a3bef04fb43eeafb179d71059985fcc94a13a55c93c84235e65d16fd814acab5c5adc02857f1932eb4fe38a23372fb1fb8b83e870ed962319e9b942f1dd280d951279da8200354e43d5c01ec60b41dd44c5e7b25daf41938b82281c8a781c84ed088b1682e47e00cd47ce956dc513da6b66fdbf4beb0a82a864f11348a4ba738bbfebeb27d0658fe6091b232cd7468382aba0ef0aed8bc0583426bb61f71ab085fb0436c4d2f8b4c2fbce40420bea2caa35bb567b25d9df27c686628a6bbe10ccca155030343bfff54b57a9e2a5beb0da3de2fa52dd0198c2f97d361655a2c4ba95374ad4bec6528de70289441a7563ad2ffb57b1d9ff252f387c386ef2e66e9d05980fb0126fc4fec6cda2e7823d2e8671f179cb80185af5c15d234f607983bcd0d69fc355817b987be2e74340665647f8099d390bb164dd15144455384143b2cbee17787ef8257c2be5cfe3cf045d0e2e0a0c8dac3fee534aae83c0162ea51089a86c4763502cf0fb8309d0762a4fa39677344841cc6d70177a5d27f19b17343994a23ac4f786863ed044730d8c234e62459c0494185c2034c8df998c1d5d5ab45f67d338c68b00186fc5ce68c4624d076a700140803d1d0725e735adee5075c9ca1236a44ac42c9e48311f6971f7d2eb3710e25ba4508cabf24d5985e4db0aa5b3e3c86737c9c6983b7a670034f969114d9007e060ba93e86681ee696469b3e8a7dc6b3ff0cef3311bb8b1ae8ff5748574887d12216e1674469d4303542c985eb7bb179115ca302b1d1509087028bb07ce2ac4abb9e748bc6910659b4aa9f91d6aa81d0d03d69d3cc6b270b68e2905126f2501fa331b8fc251ac6de559f69f7657e84463e9344c0e5fa7b322e501177fff15ac498fdbb8be258974e091d887183ad355027c5c16be56883670b2681a14010841a821a420d42359081bd11352ddd98e285dd8071e8c57287ab2f6fb1bccf932478991816cb0a00ad328125ab62599514a9f08cf40fdd0f2996059eab94e8e0f7227038ed0714b53b096eb868326d5249f96a0b6f73058edf94459a958855f167a005b10b91263019b221a6d3d1eabaee8d14e3cb01ce91a8516e45bafad5bd25ac5d9f1d4663d52cecb888401563e5db8bff62bb92a548648b058d87dfdffb63a8f6d3143ca54feab415d8503d3cd81a4b458c0116380be96d415a116d0bff12be2e70c953f09b92c67e0e05d9c7873aec2e2d2b577ed1b648512bc2c044fbf29188b6983f6c02c3d7a1a2b09858c21229ad9ac75e38acf94272e13601d5dd24887bc9e74f6bff620907356cb93a8a807d77f523449f45c9bb25c9228410ae161b9aa6a40874f99b858883180acfbb3593b1f07797fc9024bf9d2b32deb2a19eb022e7dca3a263df122e1281b6f1153b0127f8f9a4e60409920956809812b18ed020cbcc2a0cfdcd0220af7334c3aefcf3f9dd091725c35833259b6408804022045604b764e954cfbae854f58d340d83ed3a3c71d4d596f8d6844e5a7ff2fdb8df59a35c1448f24c8a6c862b22117a018b6be75a4828825c3ae92063f44028eb87f90157d191888f0a8464f570de872b5ec602962f9df590305a209cd5c3bc8053e14044aa40974e3a48182d10ce4a71395f6419fef9f14db7bf0271ecbb70b053e180840cf2551a7734b77420ad2bae53544293a5f4bdaae430e8ed3edc650a6ca1046e96c4d50f5710300a8b73f599dc873ff045c017af2e7b6efcaaa57f1c76308d646543c6f446832ddccfd0b4f653f5bd185bdceca51247b32ddc26a5b040228d3e890e8b718a1b08c2301cdb5e39a891866d12da9374b56fff776f9902151091105b0f2fc654e0b358b129a5e8be04cc43a7d68725eb6130f72591dd50609050ec89b2533eaddecb572cca94d2f5604f949d7215db61e96a85a52b168b32a5045f755f8c4509bd044126c8e0f4b8120cd60303c310060361a0c356319e115cff7af2e115f381ef832be60b3f84d20a7895a6c067f55c117f2afcfb20d87ab1e7ca0aafbf2d91ca94d2ab074b084ae1bb7aae64b94ae163094149fc106625fcfb383d57703ecb2bbd9ed573652afc1bbb62257cd76379a5576c2a7c57ec0a965782bde790d0336525fc2626a0ab27cb55727dab27cb556afdabe70a9610945c9fe5f6c05e84c1622bbc9ec5e44ab0d8fd155c0f8ee1eaaf520f22c628fea65cc59e7cf081ef834f7c9109f837876704f1c26e0e13f11f04572dc07a1ce180566834650a0be087cfc265fdeba75cc9f24a2a165cdffad8142cafa48a4d61c115cbf24af755bf8ab1b0fa562ccb2b85cf8ab1b0baaf8ab5a013be3f0babab8a20d823cc589b408f3123f84ab7270b9845bc92458c61698546e02b813d58b08857b208112584f2297c2fef631163424409218a9329c3bf25c0544520a9ee4826cb9ad2c96021533ae994619a30a5ff305046e9a423be5882392a31c451894b8c51869f868ad25ff48096d2df4de9ffeb40e8b5f089f084b11e98e7f8df9ed57bcf915bde9de4fe2aa60a552baf6d919593447c7f5ab85ae524b91ffe2b278913159e55ec8813cd491479ee8bcf7357d7bd75e43ef82a1d604e60cfeac39e158b1582319e7025f638d15a4fe0871c88a2045fc50131b70465177c308788180b9dccaca90098df9a277e6bbafcd630b1668c0b301dbfa00b06fb0b82e1b760e0165d2ef15d31a85b8a25785945ae4c29c4c07d1a5814b29ec5e261c54090c502572dd63fa9be070fa39358b69eaee835d78baff25a149d968bf52bd6af7a56aa700a33e5ea55644a2f556abe941a94fe5393a514434b592bfd1786997dcbf0572ed6af58626b85f34eaa558f4bb57abd6b7557eee33e2d189458e62451fd4ab522725fe514feea73f45862e451f1a87a582b70b57a281d95f2fe2ae614fe9595abbf319e56ec884cf65abdc7ee5f15cfeaef4ab5daae53b6120083d16861cad5afde4be9a5971ad812aa60ae0f5d398ff3610e91d7fd2d966218860f0b4331e6741fe7c51c272ae5eab229719cc4e739222b5baf9e28b77402dff52ea8cbd38ac94297eaaf8be7be3fcffdd5abeecbcad6bb6237749e307644260b63342a38577506e65e8b72d994ee3e220f8cc623bec823c68ec84a19287331cc9439e2873d3c377644e6a02c7c1a58d4fa1b63b1407f72523df82d4da504bfc5c3ba31a7552cca2d552118a3852e807ffdef8be0b1552c642d512d01ffb65cdf7ad68b3cadd812ebc51781157b5a3d85545af796017b176bb573bef5ac9cd811992b941569b9e33c4f8eeb5f39ae18d487394bc4307664f51e73bacee37af5f0b8624764652b26a38d2016619029758af4c081e7c110e7614578705ccf032596fe51744a8ff9b7c49c24b0d77b0ceabe2a8c15b997c79f153b222b59b127550ca400185c4af1554ff7c59c283ae5abc0c8528a1f8620d80325defb03cc6f0c6b6268f3059a327cf18bd5b332d0a554fd13eb97c652fbbd600f8c052a4eaadfb71445d887b127f1c387c59e6060e93d4eb0f7255195b31445a7d4ee3e4eb0f725e1835017eab6c01c1160aee789724b7f28b1bc1f45a7bc394b56cff2d0613a3c4bac27f1f72d5731f1092c12e5beae0884ea59624ad6af6e09f33b00d5b7bef802bacc419e23b29256b6ca5088318aaccc21d25abffaf0c656394b54df7a5599233ca27a3006756960ec882acc89724bd6b3563d50b7bc4f1748c5e68b28b70cff1eb913b06143a4b1de490cc5d62b7c31dce2759a9525149995ad6fa9de29ec8180b18787fbc0fee62ccdcad6d3c02259093ecc092c55e5fd30e69453a4f5b23264a3e8945062c9bab077ba2a1cd16b5062098bf1a844914775693b76e8b0d1c300a3130febffc67858a20c9485516e49739f150cee72fd75fd6d022c6a45e17a98cb9564e9beeb5d2cd65fd6dfd60be79ac1b964c47b7fb57461d7d562b17ec5fad5185d8c916600e1b7ba94ad77b5de15feead7859b72f5ac1a39452aa851e377e8b864a84013c66573dd6491c10b18312098065c039661014e05392280e52a26822599b21573c2295d7f4508a7d5834fab673d6ccc3972af6b69f5acd5b3ca1558060971767600211969baa55257b674f9b28303eb220dacc5c200c706f84fac5fe51cb93f2fb4943949c26ffd92eb5b3847c25f7d98b3c48a89b01c21783d872a4708581a10fcd298f9a559f34ba3e697868c1961c09c6025f82e8a45304045e9fedbe24c89e5958478d950fae3fc3090a6dce148607eab84f19b00323ad7fd822018e33922935d1a40d68f0b2da5ffd2b8293f28fd97e64ad962537ee93f2ecc94b010070995b2d52302a3f8ab9067497c188b85b31257adbf394abc6cbd6aa5c4cb554fced24c15bbe38f8b305c7401dd6bae57f540c0a8eae1e9e151bdf83caa97f1a862476425cbdde7160159acd5833945c0bf3cab5fbdac144b7fb18747ec7180d1a9a5523d948e4ae9e5cd59ca59d27a5ac578623cabd81159a97a994b01731084854908a1e4ab282350f9c14c10400401c69b25c228853f82055068604d1048e8b0a50825f0bd07c882ddd245d80ad6f21acfbdfeae03e6333346ff6991a5746a39892db0c87f68b854f11d4e5fdef0bd84dd1c11c03284853de027318196226112136879fff0869ec4045a4059c8530454d5183f7cb084852128f6bcd778c2bf651873edb82fae564958acd58ac5628560112b96abbfd78be7b44a9558aa74882780b9584306cab8947e41588306ca543564a02c4909caf0aba4c3ef95f1974596d27f67daa854ef3b543f6067d694ad3625ebfe44f05de28835704059eb77664bd8ea71f073ca2140a3d5abde066ba7f5ae1daf77bdea83307902c56bf708f4e13efc5b3d40a00f7f560f0df4e1bfeaa11da9546a6e17aa1a2008de0bfabd514ef0f8b77e852942347125168fc7985ce95760ade9b9378cf79d5051127f05d5bba08abd108252389b02356003f6348e1cac11d194e2df078aa274d2d1f19a982f46e1cf025a545ebb594af16dc8ee0dc91c853dbe64e7f6e8f89d41538aa1cc858252144f508a7f59a5ffce9829433026bee72c017d872876997960f41f165ccadf11d25af855410210fcaad0c0af0a0c5cf1ab428a5f154d74f95501868b0cbf2aa67258ae1c17cb25b25c2c17cba56ab55a51ad0484b96a2070d9d0009261e3854d0aaefcace08015548831264d69c38a30ac15cb0a30a593f8b3a2879f155d7e66d8fcac98fafdbc48f333738453eb6706cccf8c0d6b7e6610f03393e557c60b1fda944e220d3f2bb4fcaed8920501b30b94f96191056646081381a8125566ba946007be48f3bbe24c9bdf1553fcaef8f2bb4289df15627e65dafcaec8410d18bf32bf5f993111f895e9f22b43c4af0c985f1544d0f02bb3e557060633a3aa7543b115fea0d852d628fdf7849bd2c167fd3d23270c12ea58dd30628a3042708121482084926843f98b02861ae28c016354e072a9c199f5f083024d6bd6438b56fa0f0a2f254ee93f28a8289d80aab0665fccc4003386cb172c576460f3c33295668c28d010d1c4cf052f3f17c2fc5ce832036396815918bf1f1b0f8d826810011a0320c1002336a0642403101073458929dcb85172b125c2c215e6e54ccce83f13e3376612988d998d998da902ce8e981d313b820bceec875116f2883111a0a8c298ab62a048f3528b343f2b6300ad91a9393a020292c9fe8f1e303a1d1dc110c6d1bf4c0604e46440100441d0c9b0594d01f31d3b47239093acd51ac79d9d1d9cd91063f8b0ab72105412df754590060446a7ff55cc557f9d8a1226f680b252ec01ff89387d09cacacb726a95f73eab870c19f06160cfab46b1b57a15cb85556c27b613ce44d58a46f8e1e83ef7c1d80c02e30591b0e2e5cd9a5f0b6dcca811f36b218a5f0b617e2df840e667e5023f2b617e56b2f85931f36b41cbaf852e3f2b65fc5ab8a22f07ae3bc8c46c88116cb5c67167e75f2603022ae22e0bbf86cb5ce8a1c46a04f759f8357c063e6c055e17c3d58ac6f8228cb1d17dc07be3450b4459298e7fa3470467e35fd033be8d9ef12dd0e1e0ac46cff8aad8e8d201698039200ec852fd910e8d1c180cc4390a5534549f83a37ab990c0a231e674745ff78f604358b14609becaa946a903b66260634347075ea5783b75d8d8a1d1d33a3acac181bd2e8d98939192c63b3d8d0f025e4753de231a347a58ff383baa07d3a3590ea3939381d31a81189dfe5757a829a77070b88c4e3b3a6c9461cc293d32121a498533b01573c5687814592e180538031f04775a6deebdf786611882e0952b6286044102af805bc02b6016700bb8e57e01ef97fb450cc19d12247a1a6874d1b0582c353a3d48b88cd7882846c1fa62049c816d4250e755aed66ab55aad563aa0d3455316b91f4ee580e300660b987199f930ab6156c3cc87190cb31a84c63b55b64a9088c8c938122b8c1df130de72f54e44a50bfcbb65cb2533e66e09535006ee4019f84e77cb96d0a8e7e5cbdd72a7c220e12a0819326440a22324d58fe19d72f5dc26c0590de3fd9996f18697f553c022a71ba6171a5d32341998914c6814444c68c422c3240c678e66a665bc66581a80c174583866a498ed30bb32bbd282c00ccb0c8b1901e030aedef56ac16030182c47dfd282c7c1713d8d071f961ee104394232027bb95eae97ebe57ab95eae97cbe5fad7cbe572b95c2ed7cbf572bd5c2fd7cb05f46ac1603098cbe57ab95eae97ebe57a01c18efe65322020d7cc8691c6ab1c08f692c0f89a496084bdcfc6c0b01811c0b881d90060b31b603a3f2b5bcafbe37bce124dc515bb200707c7020b2cb000e76bbc60393d51eef8f769549523ac67cc19c75104580eaca746cce9fa8f3d5efacfca5409f4abd2a6643ded48e5ea71723241ca97cb821a300b6ac06af43cc1aeeb2d78d8bf5eaf578cc7825811d78f638dcff9b14727e64423b6555dc6560ba78707a65f488cb323ae800318576472a640315ac0c4352108c66605189dd2a372b562ad422716caf07e18de17c57bc196fb07093f8b190d173ce286018fa8007c69018ba2c4999acd002b552af071c080f90e1cd8559a1560cce9b985665a69c6f0305a0f7bc58a2e4e18eefc0085464d60ccc7343f3a7e74fc0ed94a549a5239e0aa71ba5dc0dbc41d7389b860c0cb43d96a8de3cecebf1a914d48e4f6a0ed023551cac0a871ba311919a3937b1185cd6b46a2381ac1f8be82e1f6bc189d9c0d97a9566b1c7776fe65b2cb2506042493fdefec1c1df9fdd068251ac93c4d0982b2db73bb805ec019e8b3025c2eb211807e5f7cdabd66583fa8725ec943a31c1f72c015d892656074da510509552a194b47a962b14496ea592cd6ceca88c6abee1070a662f5b86ab5fa56ab858383f3b784b17e45e5b512737a4470269a4036c6d832828449d31328b77397f6b6d4943b75af64b95ac435220850c081510988c82f932628aadf8145abe7517deb86018fb8aafb3e0b1f1c411969ca10e38296b2d51a5d2dd7bbfc37709ff05f31572b2663333a6de022f37ab970564f05a75c856cc4d800651e185fe210b0a8c8736e1010fc5205bbe3dd81c59c6e475784f5b07e67276cc554aff2323ae18838add997f182231537cce8b453444489038ab96102bddb93a4fa208ba9d56a0326572ed051722114a1ca0b5318b84ac0b18163434a910b7a2dfd2ac114d27689703bc0c8728539aa2751005aaab4441aab0caece50950dece0ea61812bad3634d00061aa2035583fc423f98430562c50c95e455e1eaca0883d583fac48400711ac0011c38d11e84a8e8964004d4cc1dadc0d2de408e95c12748420b03028aaf262fd58bd5a3442a32511c20c5e454a30f5622de530b58cf01029f27219c1613a9124308543a415bd56350b72562f1891580a3d4cbd5a4634c0c130a50a47d55d8db07aa94058f5485282b52e1e2d23ab170b839c21ae1da212170e1b3a3cc871a347eb83234d3ca8f26a91aca19c21a325262c1c919543550b8b5c38228f0fc272b15ee28fea887814e4aa78c21ed50d2057cb0c7f100161a7f5bae132aa2244098ca8251377883b56404cf5a0210e517da0d2c0b543d4a113146660658afcb9612ef41143950ab11410a0c4aa3660083364c23400081e0640650529fd94cbe62d052801784282132626480060a4763424f3a0030e5e7cc28937648cb18110923a88e5c080e5e547850f3d8c4024845a0617e0c0564d8c3942882f3ef0b0001dbce0e044c6e387bcc18626a6376ecac005800c102c615b6b1c2006349704c28bf5c5005b8c5c5aa0f9e14bed47110e1bb0578ba58327024640c9e7122500582a42a4461434aba0068d1c51010510c00b15a8f19144038600824a09241815edd810ad30330212928014b9582b076039e2013bcc80001854c841010a88618992241078e0dc14842800db886c1e04e01a71036006546aee16e005400bb8b2c039035a019601c7800e081b003e894e77c7dda095814a470e06200ef0826ba38605aa0ac01a7714698030d50b74b55a208ba502c51bdebbf297e7183b98f21487b78ab23d2548c61d1cc06b9ab3f9d0f387d7aa400f24e9f14ef399b75e1191b9aa89bb6f1f77b05cb3a4cae6bd71ef87dd1a85135e33da4b265be15778d15e2afcd79ef62afcffbfbbd3dc7b380747d4803ee9d9bcdb2b10d123bddea80e5dd5ab7d8c7de1ee3a14e76208fa7dd57ee33ff39389aab897d555c9edd515ddbd2524d9d3c2d83365d693428f113fd5bcf1eb9e53cde397208cdcfa995d732cdefab34ec5ecf8643cc5e1ddf29e01feb533e3de77e2cca63809bbb22c91a8956557252a00e00e92a1c41d04034cc12270a88bcbc54d0346882037e7be1a300b2a7a24a40f923dd2ff07430401c40f409ff417b8b7e0630640ae59b2d528ab4322ea78608625d423bc88d2624848020560808103100106cf0f48e116678670e0d0458b9892282453005d979f1486bc8981163260899e30828460b8f0d911c23035e4480a527c28e3828eb00746f65ae0402863662374b281f18614e8d00507079c10841b461ec4e080018266570cdfcc06648c3d947085e6265cc1104401c8302248971c65801e40020a09121f7818328e019a49c10d53b4e0c18721486180467cd1c20a26286040608634e00d5f7829220d0d1b00d5ce8055b8dc08c00854e861f2820a3047c55771031650a418d00488248b9b11e01041acfc620c181481344b30357140892a88006f94e0091bd80570c9010a98eb860137304184811f5a3ae0e166a08b2239245183171b185d2e1409e841041414d0e00502325c3051f86072228a195000a2e51e00cb09580e70c20d4e3071e54611d114860e3e2e76a2a65c28227049a940c40a4f2eecabb4036f0135d840461400d2cb638b0b8233478f001d386fce0192a0b41e7836f0c45d044da090c10994a264604393a369018a560172049131e09e44982ef291962884f832c477f880b943d0992652c003c9b3e4b0848707386c881121725e16571cf1100407a6764c31b02054850a1d80d2733f224343152a48c1ba0002ee1a5409e187541b195c57dc4321a43ce004181cce9b356bce30607c534597206ede40c08a08e078f205069956c69b1ab48ca1c2b532c942c5186f58182346eb3c408d1c1e08e38d69c60b4588a0059f82469a374b40ecd85103aa0f80c59937641850c6267a7c00c28a8a37366a08e18b27cca840054c13679ce017a603273928c8883167783180169b364be85cf044c4194d4860480f01317cb9a10c98337e68f383ad4c96bd820c3c9c11430f5e2491831831c4c4d0e58cedc509a276f4662c2421c319019841890b5a0c7084074eb49c11821463dedc882600c474e58c0e5ec0d954e91400c030e58c57114508f10588375362b619648ce08b3608e8820221f02035238b0504917b9263dba204a7194760004cba63051c03ae4031c30b029e72a802890ea498a1c90c179ce062088f1c58fc8e4062c6d39528ce7871c513218030c40c260f38d2a5a0878f071400c90c1f6410bdb8e0e801460c223378bc6029f3a361091acaa099e117d82e54a0032b352876b8d1c096193ab01e19e1b244879b0a3031ca509424052418d970e3002b4815f85030a28a1270dccc3004154b060822c5c47b23ba51a1035d62511c8000860ab871837188022606217a90a28832dc14c1620428b2202736b430861b1a01cc6c20c4162a6e90c270534309120c4046f964019c342928c19b2807b851624c9a256752902688de1938a0b0e18929dcddcfa0220513d0408e3221901c44bc70a7b95f158e2eecd638528dfeca471c40461c3e461c3a230ed16f9f5b7ff6b2ff7ca25a455fa3bfd107c1c76216efccc7e86f1fee061858dc2833de98c0edf63a1535d154cf1e08d2cbfe54f303417a15d5651c0a24499eb065cafd6be38d146e8830de30f2afbdbeb67339fd7fddf64e87b2ff3b97d35b06d2030488bbf37077d12f68335e80c6fd35ba5bdcbf467fe7ee3f7cbc4086dcfaecaaf1ef361af56c3e5514f3329b374e5b33c5e67841cfdd57364b791feef38942a1e7affb778f97f7c6610a36d26896dcecaad314f3f4cf9959bcd33f9b5df50f121f6d6461f3c9ae9fe2bdeec7ef4bb7995976354db5cdbdba6a94c53dde6afe994f146a657b3e6cd6ad8dfd35908a9a5329cc034f0022020494818c080282f440a4cdcc67114400e554540956f2818f13ea43c42713c9452410a98413e9cde25e12ce038807ee931e05a013722d6ecc58230533996ff778d9a65132d7e27ad84cdd9cc563b9e82290eb2c2ff754d5b82cd7b9aa1b97c66d0989461eca206ac0025b2d9518deeb3840d241bf2388215c6781a0729dd5f57baf4a4504c240bff786a0917b5917bc375c49012f7859e08d26f7ae2ecbc19b4386e06a257bfd154150dc72c57bc1d72501785daeba2218e67b9dc07bc196139007bce04a04af07c07b57e01de1e2b837045b1450852c1af7c6bd17b4c28bc305ef0abc170c6d17145f2e2210e726b5ae6a4708e4b240500c0a5f2078673a455705310856246402bae82003ae18ca441578435725e07e711df4711cfdfa152f7841705b608f7b41150886f70edd9fdbba382008822b219707088ae0050a4918062d0f6e4e0539401aae0ac4e08a37bc0e3201ff754507d195ffed1220f41e0a5c0ff20418ded5155937e7865c40b0550bef517841507c10c725bbaa7b594062d00640177cad5ae0bdf7b2eead5d10c440b8ba2e500ca16e0c6cef0d7dae0b06de16eb8241400d400dc00c420ffdeadc1508de1c710c4510031004efea8ab9ebda71612af0aa2e0da37befbd3ce0120be6022fae85c302ef08b7756f085ef11ab919803f401d200c6481aa1b5ef082309025de5015de6b74c32bbbae8b73ef05e16a00be42d66d8917bcb776efea0668e38ae05589f70708bb21a8c10d43101441f1fe00c19ba32582f7dedacd007cb1c22bb6c47bafd1df9d1e2da4f003d50dafeb8a3bd7e5aac14ee0d1e072205e105c81ac7cc70b806046ee052f78eff57196f73c00542e1b1340e06f820e6bcc98d013c61825e02f8670920135ded4b38533e9604566c265bc890e637068d2b32e19410727364c305110243a683002235807d00f1d767e7e601a41186520678751cfeb1665e09a51747ba380a23fc3c95b0a34f0b97d01696a7a58690fd4e3032f343236b83dce068fa302f762010a7e5319c05f6cc13d7428327767e2ee2bf848036f7cdaf2b99aa8dae6d0b8476e6ea104f70bb5c3fd46c181dd9794ec3cb16f26cbbc55db344ace64b856dbcefc64e69d496e15dfeb28988014a6a625119686d8445862b23d29933c90a49fc9d49c92b9161795f6a0dc1de8935eb72aeaadbb5ff111d604f449bf55cc234fcd92eaaac3ecf9e3d3e58dd9ad7fcc7c0aed34f7c36b551593096c69c8a8a20cf50369a6d240610227636422c827200307154e3419f34d130d24252c0290c105453b84782217c683074451b348001a9d3200507b4f5d3079a2820b7e5e40a3450eac1258bc70021772ca55c2810d3c087b18a282c1985f982d9a10d3b4b02843823138d861fce85c706446e8450d2e320149776749c881104e50c6163ed0f001f5e803e7124e1b5c1741e0c32b4f70010c195538c022827502ee513e6470980798f01be4e3aec195290f7382b82b79779619778f0204c186295c45820cb8739961ca759482f8c5e2c59dc7e81eae71f733890b4c0f9b3ae7f269e2f08f23a3221f4443424140ae2977ffc047971357107757d1adf3f93b7363deef557d9dd7f367b2df6d9d9ad3cf269aeacf26dbaeda358307ee2e02b46470f7dcb23beb14e7dc3d76ae3c2070fc11f449cfb2add9e36b1afff871f4c3e847d10f1f3f887e0cfd10fa11f403e8c78fa3a323a3a3a2231f47444743474247414740473f8c8e8c8c8c8a8c7c1811190d19091905190119fd283a2a322a2a2af25144543454245414540454f4c3c7910f231f453e7cf820f231e443c847900f201f3f888e888c888a887c1011110d11091105110111fd183a1a321a2a1af23144343434243414340434f443e848c848a848c8871091d090909050901090d08fa0a320a3a0a2201f41444143414241414140413f808e808c808a807c0011010d01090105010101a1eedef37195c65d0a48b324af557f362f97d9d5bce36a0a292840505649b843d95058282a94580ce7ee2ef7273eae961c87a6ec8ac3eebe81bb6be0ee19b8bb0e77e771f725775106114b0e0c70b85fe06e81bb57e0ee7a33aa4c70f71d1f55fb6bfa54db15f7b9f577bbfeba6dee3ebabb8ee73c10a4d72c29441a91413e3a6f9fbbbffb05e330f74bc6dd03e0a328e5ae59329fab99cf20d20709e473e443e37e724140403e82300e2724741a05e58a7c5694d47963d6247decd6a82eb33fab8ec5a690fb5ddd5df5316ce3aa4fffb8df0fdc3df5315481cd6d8aa1fec6b2446eafe257d7bfcd643dcc46a96dadb6d356e726b73f739a62d3dd5f34dc412aeecef31164c2354b6e5e6eafea9fe8f93c9cd9ad5fa7a2be94cda7da7edeed57f32eead99565f3abf8cfacb2edceec56332fa73d1efa1bc5ec7e9d8aee8d79ec9a7becee2e77bf2d7767ad76bbfa301276655922eeae72770cdc3d8a8f378c7b86b24561b6868f5706778f5ad31c9ba1d6f76dd4c43d6ceee09707775f7dbca26b96fcf1b198c5a1e98fc9ea1f1c9ae2d0f4a755753e52ad8aa63e6ad4aa3ea9ad0f5191ade848ca07880c3a22837eb48ae29d99aeebfee9b55bb7ec0f9bcf146d713f99b7ee7edc3dc74717c38cfb995314e75ee7edc3fde7566cae698adfc7aebcccbbc047f7e21b4d7bfa6f1bdf6ef8e83bee5e818fbedd530cb5f232ebeed74727dd1d878f2ec4dd6df8e83fee40a4f2a9a2afaee866b356d1d96b54f66a4e1fe933eecfb45d77fa67a1bbe8ee38ee7e733cd005e664a6a64a0f734c2006b63322bd9847a247124faa9b23828754c27b04e65142150bfe1e4b30c682e083e2bd4f60ece9f55eaea284a54b1445f1f5ac96c87a89a18bc57ab5624fa1288a62188aa0d3d265a1c2576dd64f29bdc7694aa98a45991265a7bc31f0f5147b623da80aec9abbb1394db190753fbbfe671ed6e4a9e2dfa889a63da9fcdf14e5ba5054b83b797b5a6ed97dfbda4ddfde8764d7bcf1d69f62dc9aeab256db67d7df99096a098a83b1a5a2d5a14582eab597cfcfb8337fdeeda21effa82bba9b7c517817f5be75e7dd26339ba34c2c95b199d5d5a796eacab6279ba1d69dd32d3633eecfdceb61766b1e8a5321e38e611b8d9a0d7e353fe19da634b56d75ce39b2470ff2c4796b15fddb996f9fb593af65b697cfd7688f1eee3e828f5a47b7dc9dc947b608f6069608bb81bb3bf131ca14518a8882c218c5c6d89ba2c784bb93e0632fedd918573253c8acf1ce64db5e12214f683e157f0e7ddafbf8903ae7dcf3f2463ffbe49c7bdf9975fb1add353da966dcaffb7d48a1a173c92c6faf6236ab59f7b9f5bffcdaedf63ee4b3ebd34e35df509891a4ec6927dc3ee37abefd698a96f0e490afddb6cea74e45ff54711466cfdcdac3e69346d9df38e3de87795b4d5334eaf7d3ceac5176e57d6ee9c9dcfab79b0ff77edd6afe757faf7ddaedf6dbcc507fd3b77c62de6bf4f389eaf53fe722e4ba792b9b7bfd99b7ea6f1ad7d6a85e31aa37b8aa45ad91fab7ce1ba73c53eaf63ee49971286bea7cbe4e4533ee355abbddde875451de59a239d4cc3dfdafe2245fbbddde874c22e4c9e7d6dfe9da95dded8d4d546d79bcd56471da9ae86671ef719aae5b8a489296c2499e363b120a6a9fa6e67349c8994fb55d95349b79ad565793cd4fe69a1e0905b55b6d571e66b31ab5b2f94cd71597a1d06d629b46936647edd38e5a1992badb35f3d0dde4cc5a5d7b3ab34948cecc6694e5d932ce87791b27a149d1a463d22cae24dcfdfe2012a2e2d4911ea5a24b02a79af5111199271e9e76ad1f9eba18050911f1e44e54b46870f7cbc3ac6e657bb61f3f8284be38a54e439c46960fa7ec746ea9bcd5d5cc3c53cab6dace13fb20ead2250377bf41425b5024d46db8fb4589b289b23da1a02b3b2fbb54c708e8486aa7430d4b35ee6c18fd487553eede818f3a233a1bab32dcfdeaa0743c9e29057474cb751973507232247234e40690bbe23ae75ceef936cf941a12326aca62c69c2537ad9a72109b5d7b39cddbb69e4245e78edcf2f114dd022823a79ab3ca99c483d3cc39c5b9c489c409c67deb7cdad6d3c84790e9c6dda7a4dc9d85154c13ce74c9a9967a671d8b9bb69a59b615e2d36c4673e85e9564a69c757833e9d0242420e1766e70142a2b3814704770437040ce33a56c79afbccc9ea84de79ccb3ddfb6a979b76da78a6db9e7db361b501011d01adca4fae1eed76868c7cd8dbb67e0e3cdccad8b2ae6ee77bc7dc0c643716a12050dedd06c68461b0fa219ee7ec75b06e34de7e6b29d616be3ee365edea82de79c8fc5a889e6b29a71abde596b6c6373ce4828086788ed8314dab8bb786d41b6cee7a9666d5434a6a0c6ddddfd8e2940a570fa980212b700ca534072f71d1f53b0c0dd877c4441cd91bb4b911a53104ae1039b14e6e5dd9a592adb78a69450d0508d674af9fcf04ca99fdf6a86ca0348c1dd9d7c847202144cbdb2594a4e4f9cd35ff7eb8de21ecde5da1cbad39a25b719441691433e3ebe8db2b82744c256336aaa6510095bcd3c1feed9b2c639cd4da02c2d9dd0663c010827b7ce3a5dab7fef7428ef73cfb771de6d5ade6d35f35a1d8b3fef763ef3ee35defd4765254c5159c97882ceadcf6bd5fcb7dbe75d93d6599f39120a6a0380c4f39025161db2d5ccdbba753a4badc36911cc6e2922695a9a1a4d9273119d7bbe5dab699c56578d73137777611f4db882f6b02d6f0c85b23d9b4d882422817c746b6a025066db8d73ee6f504fb78cb23ebefcb4dd6fad86e412f16487ebff1c9a7b52f935fa79d7f420dc6cec6abb9d79a75115cdbd926649cd5e76eba799e8c65bf3408a5a85641e56b7897bbc5548ada6aea8663394d050ab7d9849ce399bf6e15e129b9968ad716adad8dc93c23c560af39290a4302fdbb2c6b824a1a116490af356b58947429535a72ee513b3ba9e93265b6324e846d52529688a55b488896a1565b714115fdaeb9559e31d9335a72e6d354311613393a6a85588130b90678662b3ce4d72668b981ae5d56a5acd4feb6e37de4cd954718a95320fdd6acbee34dea9ede8a4c749ced76eb7dff8ffcc52403b8d774d52f866d79dfe75ddb5acd90c95d95797344bee34de35d9280f45f264e2cd74a61935218acd504bceac3ad9bd96655721454eac54ab69766559224c7cecbaf1a9e2242966736f498a79ecaa446b9c0af161264c5290ab129d4d60024a71ad56b369964cf1cf8fc9f67aadfe69f2e42449f2d839a56d9c59ddef55c993fa53ac53d1a835cdd5d20c95535b0dc7688433ee0e05c20841f2d659b5b179a33633f7f48f99a146f0a004265d98b490b041f205c98e4ae4cc290e6b7488baa25acd5b2adb761aef6c78e313efccb3651e6673f95c931c39dd1d0a0084596a0380294ba71b1922e1c84e6323494948662621b7ae2c13a65a2da3ecb6f534def8d469de908d6d5bcd5a5d3a71de19b129b1090db5506bcf268579452e707715c53bd486371eb2539794183982aad5f0c643cebc35aad9cce45cdaeb899fd2b5b7e6d4a5345d85e85434c5a14c99cd4632bb9a3615d5a1ec92bcb12eb33a5d99792b535657254d27ce464e9c774a9ecc35557a62318fcd1b47090db56ad47adaceac753657b69794cf55080948ea8adaa2b2dae3b14652bcd5550acaaebba4ec24f36c278ba37a6dd2518b6466126a353343d56a78e3f35c12d2739c1605b5b6ad593497ae2b6e6b542adb748a551daab79ad11e6a6636f35a9dd9deca9e4243ed99ae3b9dd9ddb669a528ee3a45f1ce437a3c536ab74bce7caab9a75ba6a72578e3213a34a7ae4272d2ecccba136571a50cc9cc24689bd699d5a9a82db7b98d623b771a1ba9d54e9c7736330acf1685776629a866939e762e61163341d2a9e8aadbed6aebf1d89dadc7b3f578ad2dc57bdd4243ad4da77960821871f7263e0691d2a399bc9a73d4ceb8cf1a67d654d1f7a529365175ddabbaf2fe012164e14564501029e4b3e654d427a7d8d4675675a8d678b73193bb010a4288b99370a48793e4cc36296de16b92ba1c7177004c71f72511dcfd3a11bf0f30a2002c5819800d4f00b941b3e4a9e62713e36c196537cf67555f1881bc66fdd61891bce0ce8cb2bb0c1242d20f11842f4694d4d880b03fe94f94f764a26d941f14c833ef8df278ab799f904f26c6adec67dcc6bbfd58ab98ddafe6defaab12bf21648dbe4983878f359cbdaeec671d66d7ad5fe30f336cc6f15ab5f7ae1f5ddc9d877ae28c99b8bb8fbb0bfd08a259f2e7c95c539c2d6f7ca229862277d6e846a5f213e9c1a9b8438d4762ced5b4e5735575864237ca43d9de0faed5bb7da251a78a95ceac9de48dcf9e13213d1e6b24e9ccbd1eca6e5de3691c85e46c6ea79a7b3d7c435316e73ff3ab39e35ef3b0c1dd4b1f8d9a7057334f97b5edcc679b9a2aaab63e3ffae767ab5967b6f719976655c53bf37b3c76f76766716ae673a33c34f51d401c451e70a6bcf166d2a9a80e6b9d93ec75a77b58d5b6bcf1d6361f4e335babf1f2d63e6dc32ceed9764e53dcb3e9366d79ad2944a7a22a8a79b9496e733bc2cedcb8a7d1213e9ce6261f60800569b20861070e8821c5172d904eb86045a555c4ab4611650cf0484801d51118a1c30530c474a0e302921a7ab6e4082500072288f011c1ce0c3b5564f1c31016ae681a00902e560e9a197db471ff1a057cf441739f8a5fc5bbbdd5cce65c2e43e1ddaffbf599b3fa3b13dd453dedd7ada2275ed3336fb365b75657f37da9babe4649fcb975a7dbf7e1fecc9f71bf57f5556cba7b908b3a1ce723110f39c5e150d577e6280fc2def8f1c6e76b1f8e4af19f59a3bbfda78a7fa7f1eef12db72926a1563bb31ab5249f3a15dd99d8fccce2cf2538a981a7e0e3100fbdf6695dd31f4224900feef4c928bb651cf4b87bcec7219cfc644bb1b9cedc3d881edcfde6a390162232880cf249d59545a1d40ce40e9a10d446b364de588742615585a3b2aa1a6285178d062409c8cfa44e54b6731949ad09bb64e73292ffff970a2f75a2b6ac3bb3edc9c4ec7e243a563c2b1c2e8024e572aa4a0304e9b7daaee67ff06a4e6db6335d433622191cb88b0d60fd6c7d3e102026ab71aa0f80f8488671f77caeea7f2d9fabf939c5e19d8933abb67f66366f357f2dc52a9bb78a42a00141ef934bb37e20407eef7468de915907d26042d39290924929e4915eea445df0d1878b8fdd6afe29e2cecac1dda9f8e8d372cd923dccbbd9dda77ca4b5aefee4cc6edc8fce69ba9a49afe674057e9086d7aae30734f89f6abbe6dee76f28140d3d4de8841bfa194d7feb96f7b5ada23629f4c4ac8ddddac65bd95c8e4ec8132a312512604a44b2eaf19745822a630f532a150ecb832daa883a048938707808623580291189ebc64bc74e0b532e13c400841ac0f60aa755a475b47a8520ecbc5415986a8999b201a58acb28548008605e4ca9c62a392c3085b3634a4cb97668802c10543f2a19b25c00c380062ba296299d1e9d9ed0a7c64f6ba7c61b2baa0f5a472ca45027446af130152609fa59bd5660a642d82a874883058557c41169af22aa0f5826ac72ac5e2b271c1b38365c3bae1b2c134233acac728461aca8a298eac049e4bdad830cc41a8eceaa8678439f5088c80407c70a6495c0e26129515d40e3ae60a14ac46185add0f5d221862c27ac0a7498bc6ab056ac1bb24422f147bc2d0c429e2aae0d54414cd10053a5c64ae4690db1227a6125667b7f73c606b44063851929a268754c06d8424429042046ab4a06087e788c3a2dd6090158a2e44d1567aed82006202e3404711bbcb8401928968840037cf8213d98a1dd31689604216093268b334e1441858514a004e0c912252214d940031c37c62041a50143b0b0822d031dabba010d2fba88c29b7a7386094a00e5041c376a5c008a2726b044048c70400c0510802d05134a58a264a94c154ffc92e06204035b9481c2892594e88107185c6821046c2e90c5124a8c79c095a97c2e11a991c3468c30bc90c209248e20e2070310209fb614a09c50c21211106ab31a3965aa9002871b0c70259f290060a90811105c8c30ca5431c513481c4184037e384001aea00080252020d48c88826615d410fd8d1861743185144f3881c4110ef8e10006280001ae7c6143014a083fa49b142039a243830b1d5bb4c0f0a404a01d0800834f4a08d79bf00cd00c550a4014b4821081007f007db8426090087449984ff841f8373600755c1e568e1083bb23e2b8375c16545041388a3a3834c69c1c3818c074bc6ab858ad150b5cad54aaf0faeacaab830a4cb15c2c9748a355c4728519e0345551126bc956afd69188a373459c954d8c0a73c21a229a166c985ad100592e919693c1d110532f12704e9146a30a48c4a37222de1512135340900ca9d10228be442433134c69c04a0f3355aeaa5663832055403147e8132bbbd555c8edb5c6bddfedfaa3a24c74e669bcdb408fd44c923431f26ab981d77aa32b9306d6f8fab949035138a94371bfae5b035c5c034feee4910676c458801830b8fb995514b33a9faca2b9cfec9ae4c9dc46c1bdf57d7b6773cdbb263188b89359877b6178200c2e611c01e304605cc0dd49bd33aefc93c5e608497af8d29caeba872f2d018c30a40e8c2977276f453e846c42f909a738309e80c1d3f23e6a357266dddad8b83bf90519ffc28b7f1144f63776bd9df964b1a9d1f333b046c5662ee35ee757cb0c8cc9c00919789f8d37baaa7faab849cd1ab2cd6994083559d408a969b93ba953511fbb33ab33549a352f5d69e75ed59dd932a9ad1762dc492836ebcfad8aaedb97a2db8b1ea9a258e745095ea8dcc9335dd1cc32c93adccb5250a65aad29eb70af8bed9ee2add77f1d173f2ec67091e362479a2cd26449a3d37c1ad09d9cfd07b2255fd3abb933d5ac9471eded7d4814fdacc33d1dee41a12c8bbf093dd5d57c8dcfcce69d0ef756b6c7ae2cfb3e16b36b8f979bc8754b65152ab3bd2c05d54949484ad876c5ed7468566dbe136736eb309353cd1aa7590aca94a5a03a294b41999e96a5a04c3d9c8d20090d3959b7baf4b4a3b687f34e495213d2ce4c5b48608b2cee284079daba851127db2d80b6185180f227fa274021930879b226a9d59aa256558b222d3c4063051a17d09c68c60b8cb9000c178872811e0b8c61011a2c60c5c9dbcedac6e6f454f1eeb34d5d6fff4f78d76a273ae4f6b955d6f282de679671b79d999ad42537d9eb34c5a64fc599d52dde49e537752ade9999c551f8b3d2937a67dd6fd4667b8dfedbb2ba2ab1a1703b5794cd4c782d0f55d124b5daed041fee33aec7c35b678c77b4dc2f3dc9e69e2f3df3d30aa5a29987ee9cd91c6f6573ebd6ad0576c8d9998519775ff7cbfe6cc72cc2b8bb67f1c471f9cc023d336b3eed767b1feea39ace98d92aca3b33e5e44c5dd13346cec8b040b37546652f863c7314de6d2cb260b1c3c2e88a35ee4e6abda6bfdbf5559d8ad288ec1617a5d75dd4156472f8780597752daf6042ced81585c2bb8cd328ef8a1d77128d3b39d3567871bf2da578af4d372ba658316486545733ebdf9a45358e623223c695cc48798a35caee8d9a015acbac71276f4967ba1a6942ca2d39d3755786ccca662965b6b8bb47fd94b9b94f667b4a63999d7c9e2baf8a354ea2bb5fd74d421561ceccc36a1553eee4ad88144e72fb33eb2c256736a7a48a5207f5e589779acf5aad296736678bcaea6fca4fe9d7838a33e4b9ee76e67190f2f68e24bfb6551cf5edeafbcc43f78f1f4f18851330131542692a20800a0c5500360506a6a8c01452a6e0408a0a48d14a41945b76cbbe97f3d3e7ad6216b7ba990c9b4fd378f7698a33cee9bafa902469eefc344dd36cf6a9d887c3bdccf6b2daae3e1afaf4786d7a92cd38da4cf6facc1befb6b6e51487ffb71a05191ff81845134edef6bab2b7d7686ed565360a252840000518284c2876b893b63367b33d33fb37956d71375a364daca24f98977936956d71b6c76a9b539d642834c5b65ece4fb73f55dc6b55b6557a82cd134d38d9b46449936ce2b09327bc3c61c4ddc92d959ff61a6329224e88c0891d9c48e2c4cc099c26d89033956d77e6e752346a4d5315ddab9a7e2e41f66b074041bf5bdcd638a7bf73ce65281447adbb333b69228926586882893b91e780bce19d42a18f7d389c0f47bd4eddadd6e848013314e08102370a58c04417ebed966274ab794d79b0b79cd922b7ddc6f9b4d96e9f731b054d9bb04fe68a246736a766292b9bd33a9ce69878a28409a0264c8ce4f7d09d9e809a214b7f2a99c01677526f8c9aabd69ac7467fd54fcb50689af5fbf291dcbab2bd0908914943e60b194c46e6a4e6ad66c66d5c9237edcb4f4c4be8b0449325882cf14a50a144abc427c12609259c3cb3149a7b8dde66327da2365f7eaad5b42f1fa9d59a6effb9559fe5933af77cb915fddb2c48b6e4f63ebe8d4a09790e3820b796cd58ace2cc93e9cc9e277ecd63c8d2a3e86a665cde52594dd1adb6bfcd9ccb652df3e5279f8a9ba4f85c3a517665d92480dcbd4c6274afddc6b0e9e1a8724c14eeeeea92315fdcc73152eeeeaf96639898af71d498775cab91a0828791f882c4938cc4d1aae408364ef256d3475dd5d778974fd4445ba623b664565d5fa33ee84e5bde97471ce9d8b6b7b2598a8fda2481366a56f251025d2480dd49126e9fd955489a621325426e13b35baac8139be4cb477cf9299fabe9cb47c474408c19d2c766a8fc3e9c10520c978df2f2138b79997d1f55cc7677520c002250823b46208c7b8f997b3ed8545bf6f7aa6af2a6aee7b99a5139024b220033a2082354306256c41927cf1cb5a6294ed392cced9977a6fe75b36b54f6a5bd1e7e5f7abe0ff35af36ff95c85eccca42eb9bde6d1cb43c853e39ddaaa99f664e64c9e331f8b551427fbacc33c34b33d2645e08ab0418419772733665bd38c7aedcb4fb856ebf6d7fdece712be478f1a91a6254a7af420a5d05c667b384d3111b97567a691082879f79ac7fb521c2f6b5de272093aeb70ef732b1304b880c00b1000b2ddb26e9fc75bcdccf2d437734fa73d1e96cabe9d7358ef763571dac33b8d6b22285952d2a42ce1012078c09a076c71f7bdae4d5eb379e3f4cc687abbb5bb2d1f907979a3698a1e69cae76a12c91aef7a494dbd756bcde28d87e08dcf6caaab9acb4d304b249beaaaa4566bb23d991897a638a773cee9ad6294c524f05a255b458d3c6daba891ada2bba4ade253cda6ce678fa8a8cd50a8ce268579b68d3a01204b41b58aa3767e32d19da1d8aca23615e5e5731582f3e1246b4e456d6b4e5d4a9a3d4d6868eb9567dbd876aae89153459f6c289bb7ba9479584d310f2592535cbb0ed13c536aeb245b4edb7395c2bc25254fec1ab5b35a24a33b6d93b0ab13e6d9908688a09078e6935acd07d4998718d314b5b3ceeafa395476a66badd674a6eb10337752a7ad668558530a41c69d3c5b21a69ed675ffd6add3cf6a3526321434b6ad67ab4f10e20979f65ee328217e9cfcbcdb99496a554a536c466535a90929b704c9ba8b028304989d93d8ddc18810041b277df9292aabb35b54566fb23f97ca1d44124174e9d183ccea7afaa82d09b5f2b69a55cc633393208204610308298098e2a48dc996e2acdb5fcf96292a4db179dbebdae4967df9e9d7b3d55bcdbbdd9643b6ce3af4dc6d6fa7b1919dc64946d87ce2bc3b51101a420148e841386a4ff8e1e6698b7b453e848cec34de2da9d5326f3577bb6abd9a3cf309bbb26c4eda696c84673e39515b8adb6d627d2e9da8eda84d536c7e1971940f66a2b2faac0f41dc7df401d683113ddc9cdcedfa67e6a17bb3ebd3d25e7b3edee8d3d80c95559d8a62dcc333600a06443180070f6778987212b7b2bdd7e86395cd50ab2ec99379b775bbb259a7e273b6ee675794ed9d38b3f855f4656a4bfa52ddae2854667b3c2459409bdd46f10278e5026e58c0102757d5969ff0be3de17de2231f7708c10e5f665965579cec37baaae50e4e3bd8d0818c93b7d9d3cea5a7c96e996d3714deb52708b734c5426e8f4fb51d75b8e26ee2b4a7c30d32beb1979c97d1dd49bd9aa78a51754555b42437fa67665775dd45b51aef7208410e5f9cd4bab7ee1c98cc6e3cf3c9a966a65bdeb955a6ea9c8be4404301e85633149b77ab62de9be8c6bc75b758c5388dee9a145000051cfdbab2e76b1c85ffc4bb1287368e9be0e0c549ddb651329b4bc0e109071c5dc8b893eada6bf1ba694f637979b7755e4f225dbab8abb9ec82eb8243fad2b4cd69adf1ee6f107303ee86316da3ecac3b5bdcb359a36786d268943343a1d9cc2c9bdb116c40a362261b78d8299a4b519cdbf1d1862936d0c819db93ca28a923b3ac863535707167732ed7e24cdcd39f5bffc9c4e9e3d73dbc63331352457f466612957d6eb5465fe3a8a61a7a64666b30e24eb26bae067767d9b5e4f2c53d671ebb6e8c6ef444718fe5f2843cf3ce6c2fe36e5c5aedee37fad954514d439875ef4c15fb649606297727358fa6918620a4c6bb19d4cc908554d79d46a3de374b532c7b356afdbc6b9a41a6cf19dcc90488d9282d013776cda94d097832d7f4d314ddfa338bcf9c4db3d5ff64ae69930c1b90618bbbeb5474b72bfbb9f57d38ea35ba691a479d413ecac0c49df4a998f7ebda848036eeeeab8f901101649ccc2602a4b0194a45556cde6e4949698a85d46a49aff1372121f1cc274949e71292d4aab4753e9372cfd78424b52a952034d426e9a4a4990c89673e41925a9578e6932d63b640d98213430c41c4f024861d4ee613f356f509efe7b53c540a6b9dd3d7a8ba66f455f4765b9590be34c5e866718f5ddf97e69dd31e6f356f3acdbbe55dd4ebd453455f2d49dad352fc990024c0810044b4b0d182831625a316a0ffdba96218b280010b0c5030ec7032b3a8cea73e7d6912214fdea76236ebd435fd55cd2cda46c94d04f0460040b8fb111f056013c050162fdcdd878f5980c8c2f4829b17d6bc7080176a2fcc2c80a50577a7f988a50417deb810850b52a30b1f5c31c1152fee4eca64414f6632a1279a5d73ffff6bee9fd46b8f87be5ed5a7e51487d1a8599b9a5259f63fbb69fcebceec6753cd3bd9939a5d69298b5ee99186d4b856e7a8756f34eb54bc334f15b3288b75997dddbe6fddf89f74d982d942911535ee4eaea69ad316e7f2797b1f72d6cba689f156b399d9df7ae5a1e76a6ebc93e5b07efc3b3355694d3d60ea36b52305151aa804c0dd97f84805c6c2122c3cb180646421675c218915f20a49533e30250153427077233eaa60021576a8f9a8c24e051c52442005072944c8f05521e58b8d3e96141152b751aa83a832514544dddc49adb38af2d8bcf3f9ab4ef1d67ffadc74ce3975c9d77cc8db2d899027363df3a53854ebb5f7a78a65e46ae675ffe3d77a654dfcb319493e6d469232dd6a356b75152282ec69425fd33292cdbbcdb6b95733543e9fd0f44d74af527967deaa4dda6d86c20ab4d94c76e6adb6ab90342d65678a96f03515869cd063662819cf7c72fbaf69fcfa356e75fb642f6ffd2956d1dce3d7585d515445f1565793cd3bf3308b7b3675e5ad5bb76656d7f335ea33d5955df7e75d1379bbfdd699cdba7d1fe691b9756b347d3543a1ba33b3adfefc849390b713bda17f66d6d7e2d0bf11f1b54ab7a7e9deba7b1f8bd133f334fe34cd51aff1d396fc3cae35f23b6b5dbe46f35ebfe9555ac9543241adbc5ff78d369335e1e5ddfeff53c59a8746ffd79daa6c8b23ffcfac31ce67ab28efd7fd680edd278ba3d8f573ebab3a34b319aa764bb1b922a9d572cfd7747b9fa131a8e46ecde6991c059d52d00c88080000000033130020301c108d864462b15092a350ea011400067dc258804a97c8b23486611432c4186308010000004004806684a4360028038649595e28086f9636d6408d0352a1225fb74c7a9b42d8a31aa5bc93ed6fc9f0de087c0e1f479919e674c414917ad02b49a247e2b3652b40049029ec0ca8fd78a7b979ec66094b769c310b98e650d1b2e0bdf6787a2c75796f4778d0367b29059a0486bd62a14fd6bf514aad28293adeb4e390c68580df6b0482145a1df929d8ef5ce13bf5668cffb14472db870bc6d1605c913e3c5d2bddf881f386bb83f86e830f6b11adf58c3fd7202c9805c02b7e1ae844097e1ea708badb07c30391bf3274a6e93f19f6e9142ba52f67fbe1d69e6b61b7df3b22c4fbba97a5d4cbeecb21cae70c3f61394dbcb649d8a0be479f9f4c390eba5c0748248cf620fcb0c6c0d87588cf8e504a440f4b957fac4f7e4f15e7a51073e04d8cb1bcb018fc1433e3a1258849bc3c1b30085228876448540fa3de111d888bbfa27436f02c566175acef699b5fe31a4120b2bc39868167d7e198eff165b483926649a591a3a670cfc29826308fbb7a3d5327561419f21ce219f5d830659af8ac8feceb9fed3050fb1223c816f3e2549b625e617464aaea9203bc71b091eb9163350d09af73f137652e1047a852ae109a04e6554543d9d2ad4cb2e94d54de2487e00643ddf6f4faca43973c17e8ec12257e964e80731924af0be99dd6737c884d01e29b9e1f17efbb3f0c072a1c85cef3231c4d60ec63115f99a79508a8b1cb24f45684315e2f2d8fbe740fe2ee59f79efa328cf6720171de9bf2c9263d1cc25674cc7df39ed179bc229972bee361748583070c74aeb0393f7716b10581c879c6d00e6abe1457739d9da5473788c49e6a7ab7e5c9e674c56dc926558b24fb85c0c844f4f7a9536823a4438345721e29d02de74d211d260a68d724fd8001a7b4f78f364f6423af9f6b3bc51406d389862d95dd7bf16722415828ffc6dd5f34484a5015482a0a9eb5cb1f25ce06efb095aece87460296d0749b17457eac0052f0b51d3a7b6337106ef77f2f73c1bd97a2b7bad8b89f70b05aeabf6be1db01ffc020d8e5fc596e28f719b889b6849e189d7028c235d68a5bc9500ab5ed606e23560d86646a1bab86ecfe21f8ff5bd375b5d46e92f37188e85dac5969ea7500b447aa292c6e01935f3b329355c99055d66713db2c7a87b24e8da309743b161f330e149de0430d0223823b15bfdd796bf8ea664eea7fb389753b963cb7ccdeed93efb69dde962d23e0c01f2f6795b1b23c0838e14c18295eb54a5119de1f967398c12aabe5c3889ec3a1a29b36ee5e83e1085d343360d329ef17d1e8e03c6d8e6614d8eea16db96039ed344841bf8711a5c05ab29f1cb36d90403b827ec930807946969d1643abb0bb816b8b46c8f9cfb38315095f50cf8df660327d8c418febccfd02ffc1ac29ea12864b4a14fc1f89bbc35a3131673dd24de7f0faf74dd998e185583668e6a4f8974980fe3539d25bd5791aefeb32f65b762422a38bab4253713706febe698fea2c4fac625170e91404fa1f8daf09a7761fdd34310693f958e382c2b7c9cbc2ea7526a6f07e635119a024e403d49cc01d580f6cabfd4e465abf99d75f81794497f6a09ea1966dde81fc62e5277723af87636f0d08355b971b0717efc0a3439b4ccf3feaec407e0280efa4c68b32755a2efdc40fd53c4b4d9720d00683fd73e79591ad7a3c6aa35b50854b832c6d3482a44e4f6ae381d35a9de30149613bf296d059125067e5c0ce7c2be28d5f431f08443655dae0c44be29e601d06c9eb19dcd4068f6fca0ce029ee5875a1cd5f4cad144e2d02574dd24fa9ef42ec102ce03de6fc65352fd8f1749067e21550bf01fdfe7ce69e7c6cc4790fcde39225ad817a0ee05bda756aa0f315e2920640a539501924d351465cf3627cd29b4b1698134a6302fee15462ceffae80610d963b102cb612761cc75eca7c706d22764079151e1cabd7218d4ab73b54f7edd7c7136302c3b6d370c3cb7ca995c122f0bedc948c9dcf8ee3b031b3122bb6648c8b778aade79e2a255f14c1a141dbd79012f396cef988bb94210f8572cf19a2b12c00b484d964d67cfb35bc4fd66ccea6ec8d67f847240d67d306d0f7ab32826c363b635748206c862ef2ce82794fc95acf4cfa9036a39376e4fafc95da0e9f3f3c09f9b07f492f9c4341b79bfbc841dd0f2ab74877ac7832aa742a215a044a092d5287fcb7aeb626de62f741b620329da56db77138519dad7fa98b2c2471bb0ef854ab4bcb752a94d70b2534db507c995923d0d8377129bb2251add0b5f705b994b134881a6e8375d028218b42e278bc68e73ef4bbbac29435cd244f1ad24a39d929d67082bf3d8a0f121741826075d383c5a55aabce1a951721dcffcfd11e19eb6b549aecd6b7ea2baa82ae3a528be037d3af2301a49482b3d89fd7974f3ca66f51f92749411fa56b28500b91c2b464b891847c61cdb9eb9d927be37e2680f16483a2af08525cfe472011e6861b70d97bef197c14821b52da4ed0d4f8d41b8a9d4c4eb45ab4a463651fb59d0fddfd320068bff3414bd716a58b1594e2d8af9a3123029db67e4e43bedfea2be87b9990152113ebe15a1e3eb3aaa70cd199efcd7573607f58d1508036d1fcad217166c9e1dff98c043e097aac805dae6fcb1a6a246f4516a045882f05214a372f7011440a37e19b5a05391649f3e89240ed05d671593ca636ccbbefd027b6e591918743725fb5bb25baa0ec1cb7338db4b2851fe8589dc9beb482068c1c21d2107da558a4a3396c179f4c528f0dc2044a88993b51051b0ce1b22caa20876316fc568e6f0bf42f6b2dc98a88ec7f867dee44e3c222d7322ae45b4d01df193d9aca96d0d4d720adcb4b757e95376c44afb615d1bd4a9e67e0be4ca995f52aa7504d9d2273a25016044b8b04595f4286c51c96dede5184e0c3f59f7fcd5c21308ea320337dc9668c9ce6effa13937c52b36b829a5f9d7cf065db631075afb8a04ed0e4d358436c58d856a84db55e8911b86596bfe95ec18500321e1cee75fef0fedf046739698470159641cc1209f3ef00d0312b01a90935ba29e0f403c2f9c5d121966e2d7eaedce3de06e65995e14c73ac5c63a033a1a327d55474a31628adba5d3f46213042078715561682852450e321f96c42001b85aef8dfcbb9d8df0c5c60e59f0203b8a48c9e78ae4530e528c7a55b4e4ceeb03db604d96ed6a07b0d80be0e6a6f08625e46032bdea56ab82421b7210e9bd309c69690f53f1906e1aa9e3202c9d39b71a0d77dd488c7808c3c1417cbd89d9df0fe93b94bb6b38c07037e72c86724cf912427235a8b0cba95197239ec10b1831a344b210f0c63661dc2d190f5f17f089d5b1d59c65558b346c2895cf121c8455356a7007c0adc4c96959cd36b04b343aa9af24e6749e9f648edc4169a19b8317fabab6d8856036b66c08911017782ebbd819731849b63530964850824b253c0589921c003f62eb79fac8131286e714ea97cfdcd0e2aaace8e1776778bf98c20fd68ea1b50fe2d335d3e2b99f36c7059f2ee49c4db2c63fd2c11f53636514c18b9734d8ca5a9b64cc57072cb01fc059f341b525de88f787a9d8eac3346a05ec369319b6f9ee6d4c5f84b5ed3f074b5fc384c65658dc3afea51245c8e3b2060f444b5e2ea5a22644919659f3da9aa9cb352a6792895e14c75feebdddb4b42d249788b30c0cab1381ce3e619605224ad37d9a2705099a9f947abddf5657ce79cee12c6154eeca92cf0a27e98eee0915646dbb497b60f5df243418ec90f623cc01309751efaaf691887f67827f223a0e84ef95da575d84fbbc28dc1effe4570368080bd65fbaa13287df977510238f69e9c56fdae71c5a9e6bc21890805d99e25bb9f14e2ed64b4456a77e8976fff2ea3817e9d2293606ebd6b6142b82b194a10bceae8cf4132d935231cee46a16c28f7290153e6da6f4c26cd46b74294bea166008929fa5941b261508e40b8dfff26b3958c7e1281b59aa1abee67a21c308e7dd1cd278204edc21a80e2de3d52a0333c87c81133d897e4a315fb69be0a876cfe5f9b0c6a1c4884685fe6ace80f8c0baf8e38a00aa7a83a4311d405bb1aaee7bc36fae658cd7a7827435c704ea272632845cd6b01e8ed843027d64bc271587374e69a5ec66684ceab1e3f26822b51d8564f30ace9922e9b433702dced6e9dcf6739b3c678c063dcf749c2ca96850b58dd0db78573879b43383f017ec81918f11ab23d9b1f722d33039b28c152d557f3b3faba443565df4f0532f59abf079c5f2716ed289e7294086dfe73a0eefe447bcf44bd7f55822350071628d2d7c36af06edd731c2c1da80f1820ce682a85155441d9640ece33f62ca4451dbeefc871ec4310c801afcdd87989829e778a022a4d7b83877885fd1661c85ef82a769b2fe73d90c226c226b93836f45097ed136ca89c667079bdff08ca668471a858c51288f2a2f9367005f6366dd7476567195a4115465429b2aa927c5343644daa31a0eed10263181659910138635a1a6d2cf84fa670a942f91dca4689427a7b46436855b82f072d134f82b662f48be79101a217f0d341e163e077b40a25f1b4e02dfd680d4eaff8a4830cf363761d152c6a9f3438712c09528ca54f14484ab270fcbd908b9fe97249e38fc2ce89d67f84eb0aebb92171c554d6e49adc2686ed9acf28fbb45fceba9f7240163d00750645a9e11816aa3336428aa11b58e06e8c525ebeda578bfed0ec714ee26a6f1dad7e0e17e8e41918fa7af3158ac2854cc0ed04998d34669bd9a53c15ab38fefc9895cddc4f557a61a14a981fcb2fbddbb761ce1d30e7befd16a33ea46b47b7a30b016695dd73d3ee363c5f5a148d6708540766fffd9593a2ccce8e5ff1d398b071044553924e0f770b8e142236859a386227dbe57c1f470eed005f09fbee5614961585c298b47a49ee3769d5d9032900c7694e3ffeee62d2462d7bd560c30bb461c202169685a6cf3cbf004c277bb309145f349a53076c088c1b87f3649a5e90cf0e3117397b074765d7c521196f40e4cedfa8cfda14bbef0bd51b069e1cf48b42b43ecefb90fbc428d20d812189013ca6389762e2b66de3e24d4803652606ccc0d678115ab9e79b9ef7a1cb2ad2be7b41917c35852dcb7e82fdead69142d00f19967517d7249330f62d8d68ee1cf957d271f22b7f01238f706916eb20038c82b1944149eb5e5757e3fa86aaaa781f052c4bf8b2560d4e85d3c78d1db2dccac722e2d35ca776533d134ccb18dee4d0662169c320ad32e3f14c200b7089fb800a9f4b91c23e2fbcd1fd08abf7b339fb448d40a974a2f32e7b518c88f8b88b634ea6a740d4e9924f1b46af9e8c3c7a159072b9c5431008f3ec2db178a79f893296f86861fe0eeed63d2419871548c97f597718667b581eab928c6075710db7d536eb0522609ebdfb185bc11fefb5f206dc680c1f855a8771c34d104edd2a45bfd3a5d46661fdbb80554335198a9daa404e44f53060be0c35a15e54e7964102531a2d152ee9221b55daa60b396c62e9c0961353aab2555e4a18f1e8e7cc23bbe82b0568dc61d83a5993f7f7552033b8fc101a2e89d1530b160e9f26537946aef17000b63903a970b1ff9832dc4e50cefccdbdbe19fdcb05b7b36af1cbca0aac82fc154d1b095443268fdb23266735e67eb16b2aece5bcef451346e4453554931cee42a8721bb6d7728dd9070c0f4ef013598ca3eb5c052f7a21187c7b36f10be4b5ca7499e2b0cfc0972f8986eb90e798109f09641cdfa91a21fddc45f6de7eefbe09fcb249349a47154a4b37c2af550808f23fff542032ef78bf6960b525797df265211482b518a74c3bf9657d9d39ff65707b1508fbddb0fd5c11a276be008c43f90b4faead6fa314a4326366b5e17462ab0a321b95110225f30e7e3d11c6ce930f9f7043e582d30ebad3e9f6b307353fb557b03caa31d31827637808cd8fbdc667a5b1f69af5666de968584f8e57821f07c7b8cc2672a3d7f2a99727f6eba25631b188cd52c48cc4bc900f527b75190b463141058364acd13f8be7f991733ab9ab4ac9c6a2bbed6b108f642ec31cd92f385019042eea328272b4568d10980267fcf80424037944336281154cc1536619848810569c1de011c52398b63a8047a22833711083417c5dcd4559180a17a5c73b575e11c3983106cca6e277b87f9cb7c089b878d2fc5cc5f97f68732bbe4218c2f58c920f54b6227b7b5893b405e73cc1294c251ad983c477e4075cfbed1231d89336052d2a2fdb63c5d5a1bbbe7322e5f4da553a2db88ea8323843907cad79ff99807bf719de82d7611dece9b44aba19ef8bc23829f9647d865418ca59e96537cd619f7a3b965b394bc4052262af30fbd46657331267c022b1f3ea3b68da3a0137cda96b9498ae27bae047587dcde81e65a480a2ad83277abf0e4f900553013e116a5f359b2688630e2a8649c70f87b03380f89f01df9e9c04d4106e5943560b3f54532cf01d22438239cb2c805ccebb03a76122ef4659722300ca5cb91b0e02735a76fae8991ec2142b2082aa66a631781bd4c3a3b321f065d5f8d395550067b406cb7875913e96b520ff49a5a9ce66e5b34bf136b53dfad94bd320c83aef182852eee9499fec8468ebc9fd07ef8befc1252e5a953b0221b81fb8712ae95f3a33bda653c7040833b08c7799308bdb56f71f6e32a8805507408ef6f8aacc79dc854149bf82860610b105d8c64bde134b7f0007bdaf260cf80e5948a2bc104d3a8ac37062c3d3eb9c3ff08cc85a086f4bfcd389593f91cb52887709e0f99d38d5858de631b6685a2607856830e032b440a0f9047a7508fcd111988d52cda24c5c5eb1ed044493a295232133c4dadb6af85d6ce37a44b7d558459d4559091db70b78655193b2c803f02b8e4d744063e163135b9c88371c0b1ce517eab724bfb946b647f448008651b18134e40f82d37e49556403b20f2cf44a9ffb03efe0776847dfa72dea8eca6d90f34bf4b5e4e45f3158fa75b5ca4c14f6d02fd084dd1ee0870ea8c63651be27b64fa2e004e54513de0965563936da15c8a771797e2dc7fa9a490997cd77c2e1bd8328316e24a0e5dba63770ecbcfed1c17f880ab4649852dc3d341ab9b67d03ad6ff2357bde85a189d0912913ca6fff5fef8de1ca5cd8fccba640995cbbf81f1f0dd8f54a96f405686d4d68428f806fe76871ce8c3c52c3c09595dd2c6559c51e7628eaf8ac2259b4b0e517fbc6d40f4c0829f55a12ac2a5e96d88404b64c367f284a382fc7b504f00873eb3d92b1124611214d76ae95bb5cc9314f8ef6ee1d767f91469c66bdc9fad64b74d562e807f5f79b6d020a10b77c8d97d9d2331187c0dea3f2d7f50259bcc8d012ebcc9df9d6e5b675e671ddff0ecf2314b6c19b9f2aa0d1cbe1e0e859d5448d1e49e420ff0a0fc5d3ae7be80195fd5fc5121525405da664b462ce685cbc50611c026780a45f509e654540994744edc2ba8976d6d49f263e305d597ad2d2111a7bbd1633f3c57f091cc42015ec3b46f3573610feb125c2f68db65ba39ecaeb353ef2b3da67bbd3f3b3a0cb96d8007adc77c5b717adf1d8514ca6ec80aa6874d97b3763bd4f4fbb94d1eeca66b859d3f2be9349137e8875342de0c1a3e204e860f0a6d8c749c568f5390b6c76b05c8e3d69a92fba76f8e329b61ea3c4ae6d8af3b9582e3e0d754f5142ab234c05d7c16a05619925780568fc1e54c8c35030f91bc827491267c76fcd0594d7bb22a6e1b3915dec897af73251517b63d22e3f9a654515f4664be5011c96c6b56ba31562466932bd643efcf9caad321fd3337be446f5ad6c1655ef88faa8420732d924b62f73bd876874e85e92b5d3b5f24ff45b1843fd587dbf7c59f54fbd2914c2f3b2e45e9dfe04db9b9212e88c9b02900d4552481c62c8a7b7d6c4f72ff473c1b4cc2deaa5e1ad4338d398d31312fe2ec761edfff90620b30f543ea2a574bac5a8aff77cfc0e4d145c1f7de17ca1468bb064bc45f98f1062b94e82ab809ec98f22326a2f2cb43159da0ac7ef49d3f1f2f3bbb01cb35aaed7fa555113cc5bf713739793e83cbcbd3d04e22fde28e85b91639a9d3e63a3a9f382fe698a0c4df0f0dcbf0b09aeaa1631f0167c24429228fe1df7773dcbf8ebf4868e3493cbca365ff386ff9a4dc08aa969cf5ce8cba4ac493020fb0467e8ef43f58c2ba42d818b701aea51a66a7eacf89a4903122f4408e01da30a3795eb5c04189d879163636e3a38462075b74be9e9587473f5c99d52d64d194f51c1898f43e11622af766da08aa1f29ad723929af9356a86331a0ca02b0a56ef7b5ac7b6ee494d6709af65cca2f9e603d0fe75b352e6c096ab7bf8666500cb8f1fbcadcf54b8fedb171b9ffe1bd31b600fabe03d2aca1e37148f9b46d2c4186a59053fd884f47030a16272cba7e1c4d96792864dbe1c127e4614feb92e063c8f29487a3fcf6f1e58cf4ea6bc38d5278fa6d5ec1e4a35411d811ea68701c867d7ccecde41d42cbcd0965f2b5ab6200cc1e475e1ee0682b87ddd59feb92f18bc9b93f32f6cff0eab2b2498b564539203f875d60ecabd40c0dca7f00af3285b413334bfa1f5038d57b8df9ef97f141f80dfad623a4def5930ccda5414bfb8ae45ac55a5c91013971d1014fe3876c2cd04dc82a540e30bf0e55b5f8cebd9b3d173a11c7693a734c33e09df16f831342a6956bf66dab07cfc32fb3a0da8d7c25fcf072c1a605c519c5e74d42d3a274058f1d487c3b02f166d51490965f253fe4022341ecfcca959a6b8aab861cf5ea965861b661bcede109db39c57439e08539bb519a00c988104e603bc051ab3d84e5d98b391c9724d908260e1d8e0d4adbb52e014e1efa68c57135d0b4eb1bf009790eb2ea67be88c10404017f5595da50f792044d76cc5f9aab0fc5a4976e9a4386f91f42ceff8be61f35e35a8ae07fd3c09f6ed553b88c743bc42879530b0ad024e783453218180e46c14b9329998d97e8cb747f58f3973da0d7fa68d5e6c8c9b5e1e26fd583cd869298a0ba01f32fa5bb9145c11b0545ce685de86db2f53549430fa2b5dd1256d8609ecd3c87964e6c1fb7937e8b388b57037781d366bdc771d706c3b5d6cade5fe9ad126e41d01b35d3d6c3c3a15603b9e0378df37174c68279fdf49e3c6c6942ef276cff65d4cc987bebc36dc300c0db3bf87c49d65ac7dbeed69bbade29551edbeefb3f55d91269b2df758997046f8a27b6aef96a2a6434ba35c16b3fe5aea5a38400864ae4aa0b598932c6481c68267485165cf9f797bba4f5930d258b12355b71e803d0152d1a1f95b64f82488b8f766e103d78fb301b938d96d31535fc97c478201640041a75258bbe49f7b2d5714a623bae61477899dbc7559e555bc769f851c53052a64f9d596d5d4f0df9de0b18f9e7548aa60a780eeb20ee3a16641d243b2808074e202dd60f054b6ae06b6b46110a70587dd7dca814e3aa3f3884b226b1221b8d253484ba05a48d20a1402e362970dc03936491c726c62daa62ce590c911c83a286fad5bdb12837361d05e1413b67adadcaba9b8dd8e2f142d2fa2630a1196cc7a61ef1cefb2a3b3845c8b8eb47d38e93ca11b41806fa8f00251a1ca2cbe94b70c43dbe995df5c8322e0616c483eb7d14d82577378d8c6185121cd6796fb59f2963b093779e73b7a91d2997bd9dbe5b634957a8dc2c6b86f852e1b4e1d04bf3f42d1910f3bc5ee5ec96e8f353f9570a5a92bfcce783208970956b73a22197c28e16f667357565e141b943f2582181f0c356f551ff5d574db25add3fbb250ba11d0ec829a22faf080b21a493c43fd688d6ae4a5182a8fa7fbd44c2135376014337ba9e90c88d02216cc462307452c0895e9a4d45968fb7b43fd9192b2e1a4c7a388e367a939d73173470a49365d2b325601f9031ec2c88e2a188658546035146edc4319e30b01e72cb3a0a76e0a0d4529d3aba694211c0add387d68afa90fdcea35436de4c824ca1296cf418af2ce21e2fb32e6b006c30e623818ddfb57b81d4df408e5769c6fb8b218baf4b335dfe3b40bb6d4bbc003b0759cf96968dfe021bfa1fa17ff431ae03012cc5a752e55fd6e717b05fff7dfac4fbc3b84432ac78a4290f523eaad9cc5225627a29a6cdf07661d17e36ac35334cecbefd085897d140ff57d39a8cdff2646ac399c360e94d894217f6cf5466ed4fce1c98d887dba50d2a2cf281a0406f6e6e56d82231053566d7c19c9c4f96804eb40bfbbe4b6176c7b1c6e69006acc3f82e4ea86393c2c599d93555a98f0200f7abaf383a63d6b99f5f9438870b23041f712f92c167adae7ee90a9135d1fb5490b15edc2cdc7d0f49a85bb078b7a205ff13e8239790b2c1e5d1c409d925dc2a67d4a2653d1fa72cb9f1da7e3c02e05a5b4d221bc92ed8d0e2a009f344cd3b05daf1fe7eab8136b78f667303208c8b70a18e9a64d5421995ddc7d8a57a12b05f76280eaf04302f27d58f262d0761ea9884e84be0952c5d84e120ee1c1e81fb250e17a2ebe3b220273459f42942f58aa5a15720fc9b5ead6d590b5c970d65a3ed6814d6f3dd5746e10464cbb422892b5326ac30589266dd6f18f32001cccf3b9b7a4acd7caa913bedfee89bee20b3e57ef54625bb18de015f00f506c21633f693b86442502c71d80e2e90172ba418c1670e13c72786b4af7d01879180c3e2b725a2a7ed678ec9d88141e05e6f992f7ba00fa339031e88e0c06b6d350a35bb4d990bb1025730c6714ffc03299cd929ebce9d59a904a9773bd930c553d8c66d2577b37d243630be38e9ed026c193c26a4f62d705eefad51d28ab420d43e58fecfa1ae23a03eca2972f19f48fe9a1dceb4d6b19c35ea59438d00ed2cb89920cc03c42db2389ee74c9c37abf84f8681eaaf07038dfe863521d1f5310c1c5b0eca48cf6fb6ffc9ee95bfe0d8f841df593c90f1fb4bda7b487ccae09da99634d63f9b6de2cfff171851f33f9df05c6cbaa8233f2fd739f115c7f2e20b2b23270d4b0789f8d180103f00b7fa37f133b03a8dccda15022c6b1cfd6eb78701646acbf238956bd48d803011b972b8f543e78a63a8416f9287b4c47f628f30a5118f09207d87e932cb53eefcb9e82470fa2bdc59509e6efb386e2c8aa404d358e8213b9f739ebdbffb5c4af84c9774cbce13b765e2a62dceffab8f16e0fc23e4a9b765b0a36cf85efbc2afa70ee4ea6e1c290a106e8ede3232be808a8142ed2e36bba1382ad426e48217bb4f0988363dcdcfff9a9b9de22cb20d8e71163b5e7cb7d62920b8fdd2dd369842ba52164b46f795841a362d3df9704279671e6df21a26eca8f473dc34de14c7cc6082c0cfdc71499fd3b818ea282a91bad1fa28d1cb0343016cc671b786113dc4b59734bad72ee0f5f7c82ec15628e83fe12fbabc6ef2cff88016f938e391464196d71abe2f83283e413d9007bf1c946e17f9d41bbd5dfcef701e8ee353c2054d5ec3a4c030c4bbddc207b80514d7c2c9439e57e9febf833658eabb3699b5c7d5f03f607c56a53ef23ffe38f9b46c67e2ee7eab620287d65686d9547ac44845d118eab11c7f77d4bdf57117c8c7f5fab7d395d43a4ef7e9d1e72ba91f04a298cd70d05ddacd3cbc35f7864a21f2512b72e83b5634d3cde2dd01ef3c369f27bdaffaf8135cb7335348e781d35bcd9e66ab6992cda8873c1e00ea81681028f1871a3733f1bfddf7d99d92adfda1ff01da0350ebe081d78c62ba08d91de3fdc222bb89f915180fe19e5e3695f6c32c93bafa5dc88bd5387468c85b6ef435efd122cb56dacba4583aa7ac4a57c7d0b277aa0403824ac111c62d3c6c884c20b20ea0f51b1d5909c881f518717e11c529843a6741a36c4c56378be6bd0f9389d594b65fa64c96ababcd12ab54663d902386736b3d82155f163b0267caf127da720c6a04a4c0d9a79422bcffc123567c66ac961f299e6bce57a82eec9a1cbcd71c668d184a744f2ab5e8d6f041df17ace850f62f3c97302fce1aa4665673da7f48efac257ff26f96cfb3ca89cc87b1ea4eb990b50b340b66d9ef6eadf05d515529025a37e207cd3654649164f78043983381a04c284363d06a729df1606a5a4511d66c235db1bafc66a28ceb3f7ee6c65c1257fcb8d9bce8f259000596391aa5c4470a846dda48f0d2b5f5e5abef6404227b5a13ed13ef0cc0f7810eefa9040d4185cb21b935d2ee7400545828b0baab638f30ac384335295cd658a82ee41b75058b12b179f76f8ca450e177c4cdceb24425ab0682d61fa490f7b776d4cc37dc4c41ba8644787ef38e2fb995449beba6976fe61d3f40438f95cf56e5b5b80fcccd5b7310858963b21f37dcd72807c99bba996142286dd4858d2810fe5bab45ff19d314ee9c1f070dd210c57f746b3cb8989134ee00fa7d7a2736060d23cf353418c9cb8dc67da3d127c02755ffdcd9d9ca3fd5f825f8b7b3e32b806878198d5e42351e52348fc6fa7c8bdb8dec9af5786fadb7e48b4f7ff91e123bdac8037ddb1fda6ed3eaa340443876107bb001cc56ec295071edcbfdc861bd8db731eae90dddfb4db6d3877de6fb37a8a11e789afcd274b9f03fdc723fabfc17b6c32978fe52ec3598e97dc7e03d29af97aa89daa36ea26bc13c74d9f27301e0bdf097cd10f7cbb7e7c02eca848802af5e621dfda51b590d0f5c10fc5b23de26e025ae048174ebf5c2aafb7befc77396121784ff7a4d306953631c5f4988090e0bd1adfc8ad511800d2fa34b9be2a82e19e2c892cb8dd547747ac8f28fd6e94bad59939c6182ee4d8cf71d3ba0c392a259ed10566bd1c264a89e3f297326b11da05674a985e8a781b1594da269078605c4961fc09ee0d4955c5fe2d302057c6297fd1fbab81652356150ce75b486fe9a9e8d495a631cf47d710f40049cca7831a756276139d45ca29561b5d7a429d03e208a98cd354a4c216c4628e2a066680dd4ac74aba237eac5d319929478faaadcc79fd0360a9b1c30e2c1d50e02f42be699c7043a02f895fbce62739874da90e52a62514fd4a1910e7b7bb3f71ed4772badfc93e34a72b362d11410e41b993de26794edd907d1dd916a45c94d5e1b2da03b05b3ab84218b646acfc6215590d23bfb300ec2aeb77348a830732a617cdf112174eb3eb00a127f4bab5fd8ad076c28300c5d694acda140bd03168b51959f16a61d5ff8afe53b3d34d93dfb83a35a0092e9c6e3685516a6c747be6839b35f810f60e8115a40370d602037a19926760261424ff55db8ee7796e888733f1a386c469dff43e7a1b6f957ee5b16f13eec97e0f8b07d76d7ba7bfc848e65573cd91aeddf229b68ea74b9839e2f2ad9fa0bfe8b797ce8a559f0e366d0e76d1ff581472197f87fd9bf6ca21b66362ec922ed1c8ca2f703760147fdd693b81c4a6ef551db8c0c9cfc4dc3fce79b930a2b962fac2a05ed0244a11e0da5f6e3e07cff81b561513ac5ae847dcab8a21835ad5033f51c2236f2a78c05b0e1641daf3a1a7e08a2a46b3f9e755db9ffe1d63d5edef2c79f1f7427a6f0ac2082889d6b9a6ed92e2067cb91a4c0077fd31154662a61a8e1fa5cb06c1eb77f9657e0d7052fee897325b31f04e88276dff0ca2785f241614a86ebb283106fe3c9586d13a3c708262c3e65f0b03f1c2ab54ad4c95827ef8567f017076d9f3b56d043b6914813abfe9cffff3cfc7ad257ecf7ff6841056e17f9610fa2b61f51593e59f5983bdba83babf076ab2295b4b52228dd1145e740370bdfd0a264e00ec8fd37c5636486192d8bbb01c2ad29f57501aca25c20eba716e27f6e967eac51670dcb9f3890a18f82a035c5723af49bb857089b638c37797ab56a4549596c6dff813e5cf4093190283dc93f13287990756b2c15399836eb7bf5467d1ef7ca527cc7f600551fa0eb01ae9e18ba09c58769f2e36a582767c8cd859f19e7df3a3d54f3ecfbb9308d276a6e7946c3c3f18d5b9a90e97b6a3c15baa1d1a7f609aa4482f79150e5883f221c9707dc7fd53e19cdd6f468778d57f0361231acf4a3e2ba70fb4d555647badbdd8941cacdc1802cfd7a5fb1886269c5e6b6e408dde7b6d8667f7ccf5dfc41a9bb5f76122909db4731fb7d12a204b1a2b86d5f123bc30c89f731a3773d448ca63746a7500c8277e1c28eef7228c46d1893bff61d48ed23897c12f8063ab2a1f0b9832099279f4c5b593e30f47ff56292dff2fc1e205ab09221c20b4a65b62b0f1e3558af788b8fe1051e6f85203130dc02c059470a8483feb1bb04c4543fdbbf2f0bc116a1eff49baada5d3c557cde0f1ced0681b3a4987b1cb4e629d338254d6513e7498d0cd407d59d7c60639fc17dfe692ff03a5dc57faff645096599b31ba3a6f7d4a804bc53df4ca6c701a54ba731b33b01e9dda76c290612aa4fef7468616e7d17d9541855d8a51fe61403a0efdc343b32a05bd0754184ffa81aed286d7a6e9d904c23cd8d3ea064550ac515e9aef1f9d747cf3c488b85f1533382181af4e0f9163b38077eba9b0348483ccbfffd80ac6eff9258699854c363eb6fe26deb7ebc8877385776d930be33b8212f5ae851c55da96fabec8863aba2bf79741f08b3c7058410a8f83fc90f4921f8c95ffb897bdb610782b3c6964804ef5f7f55d0e9abff3c67b2c41c4917a5aa6ffa8b37bf843dbb93ef41def3e2ea3805b50166ec441af8fac2d7772833be5e2487cf4f8c0ba7272283e7a7c645d393916073d3eb03e4aa7d16b89e9332cbd4ae7a335520e87ab16c4a0a6e84ce25f1980dc89e8608007e2512f02ba7c634db9381217bd3fb0ae5c1c89879e1f5a5f8e1c8b875e1f5a5f0e8ec445ef0fac2907472b36ebcad0b7d62e31dc9a6c0f60f2dd9de38ce6c767029ff4ffed138389d0c857f291562da73ceac406754d8a0fd2c3f99da108ddae6381d80ff062a2df0a64fb75a4b1c121133eea2e8d374b7157d85f22be673a761e4cf0fec194b29f0910cf8998e8cf34b3bde8c46301fb9160cddcc2cbe394482703de0a0538f9305062d4fa83918dc3ef3dfcbe2f9a071f4c2f85afc5ace4e41900f7828489d54a9a9647bfb71de2b46edfeec23ef2f1b82d36d1eab7b5c3b50120e7482acf9db203e97398405efbe883c368b331fd15093e9063959d7175085bfa6756e79080f0facb7996b12c4e33743eea5bc65061ec95542e2e2019aaeaec1556e0fbb55af613985e371cfd755d14fb0ec669f6a55dbd47d6dd7ffa1565e56f9023366f8eaf4ba933c2718577a3342036fc7ba6bc9ef0183a5fb66346c4541b18a76804dbef02d414fbebc93c8b7a85da6e164b4cb69e8ffb95f3297b19ecc3e43fd5a65010d9fc9acaaadf0af24cddcbcd68e04748b0c9bfb34fe0b50794442cdf5ae18621ba910697ecaf082ee4170684fed718fd7944e8b97bf727b489d03385cfd3c646a07fca338e7ab7f7e0b9a9fc1a1c9aaf3a5fefb7ea3723ebcfae53ec920f47e4c9bb9792167552f2bf6bff66d9e9939eb7733cf8bb0a38f1d8789c2b95fe26114b4f6bd1848f0514cb70045acdc06dc00f978e5b29f0bdef74d44b0fb455040650c5529de361e65e9a9f2facec8d8fa6002f2811299e75e829f775ffbee697bf27e518a2889830fe1fc8bfe0d391b364836433243ee12977768b40de847f22c111f8f9ea54fbc4f08f847033dbedb13244edbc640e9f0cd200feb5a002a3f11effd65d96bc72ffbff7b26a06fd31c797d76ff496bb1163b89edb75cb908c05a36f1f01c94fea21264012c8b84e00c0eff5ce3078ddb83128c6c91fbe89c29b50336571115ba0f6f4d16a6aa262109772233ede74d2ae8bdb71adc575be15e9c1b662b332b939f4ceeff98b3184cc43ffe5ec0709194f2b04a49b8203832b2327b6228e71578e3c24ac4b5d6a455149b35a84147d609fca8e3c118eac6acdce4d2393bc07ccca17f8105e058d706e4faf6280128f492cb3e24a88c7ac64f4f1f2493070a00313d6e95578aa52e7bfdce12d732d0f86d8e0c2cb2c9b3da7c7c292a2457ba29159f26b44add24e2436d1fb4aa0edcde829cddd7a4b18550eeb49e9b7447f398ddf787dee85f18ed5538698a4439910b6e08069325ad821ed26c58312c01cbfbfe06e1ef3879c13027d78005bf63b01ac75e9b1a0379525eebdb0b7efff54c324ee659099be36834de81f6544cf0a54f1481ee9ff31c4fb32712ae1de288f8eb72e2394ca863ec192b1fb4c25f2a0a1abe769cbbaa38086b27b38e0669294a4edfb99a8a4ade0e5b3d36968c1037b8438a224fba7cf678239400b2bf61158d6ebb3d1b3f1170c9f6cdacbe74b81d4f6e7738483e62417c42c62c78db4bb98d6c2dc215feebdb5ef8638679e50f9cb2d499dc2a58898f7e76b735c88e7b8fbc8305451ef8107c2a456f4fbf4362b11d3c8ba6d40f8dc3f8bc1620293f64325a1138e5ff00d7179e313f970b7862155132bc1c9003a73092bea3933516d315e2079ddb10baf4db83cda8f2034655f573a5c0d8cb7fb907f484d709b3e6550ca53b782a1f80d71c382dbe1899cfe01ea756b05a7c107ac92fd8097ad3ab7046b85e954ad0afe198a71f4ca3812080f97b1f662c481cc67ab75bab126461f371eff141d73ea8b312e745b44d5ba741a6ee0e673fce4564e5c3aa8192920ae08c67f5b24773892196ffc245ddcd270cbc359469abf15073a8e1a45e9d8a167a8bb9badb9dccabb3250248f8f6d070edf9acebd07fd92e5970bdbda681f7d38d1ef0b529df8edfa4789692c69a5918b3732c5ec278014741012b4680ee65efbeef972407393bc7de35c94a8091532150faea6dc89ca12cf51e5ee14a2659ed30b54b4d3f1f9af015130cace19122be06713e12a4512c6c097b5d5aa8359d425be2395caa4d8fb8e638d87ccd8bc878cca65cac208e7bc723aeedf26d8b70ae37d57954cab891a99d8b73deecc7350d05e0f2802e37797cb64bc8e0c79c7e5e14f029b24c1e452356014d8cbdc6f591b3d0f84c9ea689bdc14b21abb3391229f24e0d9c85776b403ea22de61ab2f96921c1b46f6a07752c6b136d51ebde4353beb83a7bc1c33695530857dde6f15c99cca082ebb2a4139333f005ab9adf2d1d3de3af3ab1fad166652affcff514f538f22ff366e0d0a6be2ee51dc7e8b8fdc9f8f9af15de4c9d49ec55a1a99d4803598b7d241a9169d765d1cf1ce3049a1e8e5d3ec10f2570f56880b079e0e2321e68c82ba92e8bfc902b29619305d7330415f3b75d904770d5c50e6fb1c3d65ba611a4013586fcb64d84a325fc0049a989b731365328b9610d9b26a56c26737b090acc4aef542b28267a6ec7a567b76cb8916e7b2f0458914efc5a48c1293480fae3a83a5bd752432ac952bc732b83f99e85777fbc47b8cfbc6c15624b8d64cbd01388d076ee465cc71588abf70311be2618f39cafd99354171cf0a6aa2103af5adb9796e548ae7a3512c83a1c57cc91970d04cb1a56015f10440ab9d78f3d40859fd2291bad3cffae6e3073d68bb4711de30258514c59067bf97d8a542e183972b2ef94f39ae614f2fd90ec59afd3add877b1c5f42558157602f6c9851673c4e1c950e86c988c9f73755c6f0aca24568d705efff09840d7c0a77c01a2b11ee7f321672513c6166891073a2d34a3e943c4e8bc98b13d0d18763bfcb075ca240e264239260f292f23a7d2a807252ecd45b9e8a03503a83e8e49803147338e2adc8fbe54824066e3b6e0995b0dd5a7a6d927a1e333978e0a6059cde947cbddb1633bf2cfdf1a74c4b1b8eb1054d1fc159334b235230710df0aa90aa024e6158c9029c69e4387c20517e1470cab7aa3a54fc79d9b52da0c24904aeaa5820b36d1bc438d8f4e0216ded131f9a14c8ff596af8609bfb4d17219cd154295c030d9a6c96848482cd868e54a32ea18f459e63660ce1b5c0c2662b4167243db2ae6a32c183a4a20f91f3fec5d2940648532683ee9aadc6a573ad42a48cd8488c1e515c11e294c182feceed766c6c521d141024e99bac2ca29c40a27124f625bbd703825d6ba6865bf484d8a6759e8a379cdad8f4d11506d649888f97d9c5935f836244b60dd5932f0112c435361cf80028beb8179728ec36b1c51684bf885d01d1eefcb944f5fe783cd31af472945cff1b8f955289c7f9c3bbf40299cdc8b82c1009ae4f58a18170d064d870e8e713c2aed79f303590c6c7962b1aa4f280efcb3d1c90c8d2c9aaca8acd6b4473ad338bc87140b3a279da721809ba3ab19b7bce28130e7e0d6fc49a2315e8bc2cc4c04d38e7c1c46e19e0a2f3fa4c074b26da0f1e7fdab6d2b170f9f978fbc573660bb82bf3a189caf899644e66831fc0089cc1a720c74fe41e14a4e6be165f3d0b119c323774f5c471d592f5670e9b4303208c25bcdda94a4702dc5ff6f0099e0a165cfcf853d7f80885b68bf9fd69cb4d0fdfd91a0437ce3807c9c6d5af003c3458e91c7b29e03d00d0e9acc6f506393e19dd5e9dabd7a4158127adbddbfbebe41c7582cb34da91e3935607a7ff0f0cdc6802043304ea7b2a2fd7f1b06e22961107719376ca106b6162925df5c401185978b52cc6d606a2fb061f820f7665a138c72e6a300d018d6ff61f6e8ea35313d849120ef0e26930a8015f9bfeb2131d1bbe63ab44746e51aa34b02e844c303b66c4db2f70ec0768a9478070805cd03132eacee36cf9d1aed35357caa118c28d8e69ed484678963deddcafb8bcb1e6db2ef07a1a10b1ad300994703892cbf6f52e0f2c9ead1a5129399a568f16ba5b160436b87a48ecc3e05b6d7d033249dd9d8e731c014512b941543f6a0c9a7f1a5ab9f10bf1a7374d54a8837b9de1c897760d57cc7594e7e71f78608198db6cae7ea1b4aea7ca246bb32328f980ef310af55809f6117847cc4dfcbed1dadcc61ac339e986288ccf2551985d54972c909456593db028672f8d913d640ef3fd0cc861565a7a3e338b6d6d6bdfef5e1ab045d19eb5b8451e78c57d800e4a06aa9c0da802dac932397f3d090fd73ef0852730dc751c0b3cc52a698c03057a9ec4968396edad6e5f06f99a62210b0131547545581c4429d1c6410a7a3c0f37a28ae63f57183c7b746cd0e62fd75ad2755c468e150bbc7a6602fd4d9ae3236f19d9bbc4acb46214c2f27fc03c01768f78d6891e05d1e77d887b11181c982441e556ce508e91ab7fa57bb02ebb77209c7eba473680b7587b9aafc318a48d7aeb96c0ee8ad82bb573b3691cef88aeb90dcc47bf2e1055d8f066bd6b5a0ea16625bc6564045460d67167368ba07b3d9a529837a18d2b3cee50f1e34151d18f0d0651560672d10da88530a0e7c171b92d9b54294aae3a44dc17fdb52eb375b9bd22774486ac6607ecfda71fada41b2c40ac4ad3ff5bdd21e2657231e0d4e7727474238ecb6ebd09e10461c2717fbcb354b13c308aa5139fe76d189a82c03560aa6601b796af77f060e405f8ed5f1cccf3a62eac6b9941feb9c9f4833f6e678a8ad49bcc9140157d9f8c4f9ca9463f095334a831a7cd378fbf686ca6fef96c68669cb9313818ef2f93c100e55566bb82ffa9824c78f8c8264d750f56602c84031ce9daa21aeceeffc59c184094cf138eddad49cc3482c209c23d12c0007f0028cdf78327c5f903275d645bdf8f39569e929b8c56d7340ad01ecd275ac91c5b5758a10c0f27b7c40d91b875d998666d4b264042afb4f2f0a03b9f0f75473217dd92728eb01345af4295546b6a3dd7d6aecf083121e634e3f41f11dcc56384eb7670b5a2d90c0676a2db19f61e320e0a067f25b9aae63e2303db6411e0481dab6a8b138d5be32d55e8c632dbc66685c716101c23c845555507f4d6f3e50fe102bdfd83c87e6025bfa55c688f22fa4e22420fee5e2f3e0722cb56d05c530a2b3ab0abd82173092005d5fbb076f23b3aa74055194a9cb03d0dbd8eee1dce31243d6ee219f4da1f9b4e968dbbcb68ceab51fa1aa3457b23505cc08aefde0ccc00d2ca36c8c00f6594e58ba93a8287d8de362284e56f3a4c5a0913b7e4cae8d2f9aae839c299dda09d7a378d60f970b98bd6979be15661c2d13293d9200184b116bff9efa15e1e8252d50ac18111b9ed7a2410d5bbd942d99b4457d44bffee9d7287044c37b58f0f5aba1c447b5aea04c17e8c03a3074a9cbfd61f970031a4163703ec333d10608aaddaef9cc3e07fc5b5a289fa800e183bb1546d880d0966c4a69d885643765a2cf79cb522cc366af2d4de2b463c1aefce58ca4da9cb4f6f9001682c1f2c1acef84a2451bb92f56ad655964dd9bd1eb2e6fb1a2ef7d3e50a70dca9237031ad77b4c20f2251c3a37142bd62a2c18af988dfdeb63586c660323dd60883ff6ae341e1d0b7218dc82afe96e1a61ce9fd348922f5299f0b511f42df793fcba79da8fe6c0fe697191d53c75f8d02671c921445d90f49da8bc7970a0ab8bc9b4407d722509ea5730fe51a20ff7a0fa4702815c05f8f473fd379a4b4ff4ea26f0e61fe4ec69bcc6a48f31ad17de409284c0cbe5069b20f16f0714a9c7f5198684b13a89e4a1d6a992387abcf710f10917d603f1c1c85d845211ab6ced90a68f862c30482d8f6ce5bed0731f1080639029df59865986bc67e8c62ef718c94ab87ff298ccf16c0e6dadb4bf7bdce4e5893a8fb61637af20b51e86babfe308112c9df0ca47785aa9552d5c34c445f2b33df8c3b324dbecd953511e5aeca5df3cb3096a2de39347554c168c85d018b75e78286b03ec3bfbfa18440da87e270f145d64a6783ae1280b31b3f228703edefe7299c9033a507ad168dd34a73a9bfa4b254fe3af7de218011b4b6a155147599ff985c4d48bb020d1fd58c2ce30ded06433621a2148f72014a01d6eb6c5c8a9a5376bb6618ec8904377c1ebe095c8c74893284f1a3963851c52eac5d51ef6e526eb06f4723c261e403831b1017e87183977509214f357d57e93bc9aad9e820412c84ea6cfca523fa9c913a5190102cb3e8dec39d310429d2b1bf15079bdd019ae2258846d1cb258659dddf34e0952e61d599f67699cbdd6527c04d45c77b8891d3e880aec59effe27df888143457d571c5f8989cb35ff591b0f2b910c86876b8d5c18acf8c9ea219f6e75b9ac33776ecd7419891e7fec12e533aa12b2c2aec95c75165bf411c4be6e8aa4acd016336a7090ae1fe90797b9db8b89735661081fe6a4aba8855e9822e494173c308a6d3868d66cbce61c6ccfccc23211844fd4a5812eb65d89d6f023afd2fddb2e8a449f1e421cb7b9abf50ed6be0a3f8ae20d9f012344482e03b18c5de4082c18abdf2975d8f7cc03f48ac58eb21ce075b5345240ebdbbc22802e9408b20b3e31102530ee72c12574e91326274f8f964887f6f14f885371aa8c7be4ecf74a0bfae7808f2722d5aec180b263aacad01e9c0d96f00dd591a152fa5de6e60a61d9accd1737a2b19f04e310248a563cfcec1430f430b3a39b131558a5e9ad944419f11eb3792acf62d4d3f0fc053d9a221e24ffe8791f0df8bd2d9e891cb048f426e6aecd4f4bfc31c90918eafed0b09a119fd70cd4568188b5cc5d9ac5b604cd4072218f935b5fb9904738338544adf9c5f33173393d5405b57c1f98f33cf39312690142b08a7069c13b1a2db6ababd9dfd20ceb6f3cd492c2cf94ffd9cff787d473e6f6abe4e902ffc42d3fe70499100cb899c11168112f3ca28f115ff5d3631c92d17bb22613304dc66cecbce3e96181614c83eec884f95421c3a2eeee1203ef115833d0a5dda199928d88c212bd1b91a8db325ae487f28654eec7729653db72b7bc68e29b19576d9a073e9fc68db96da7d702a740c902136350d79d285236b25fc04b72575201e5198c753f1b9f5b10b0143992a2705699c980cd9cdec9708e56acd658dc17d3f0419200d98e228ea06b854a5cdf2f7d17a0737f65f4403b38c66e84fed9b8279dcf7e8772ac9b9190320e2b1d7e8e795c08ca9501f8ec8f4191b8bead6a4c85791f657bccd30b69550b82ad5f1fa73735a440bc04ce776cb3c3ba13557380baac219cac0bac74c9ddb428bc8376bd1c10cca230a281e060ea25ca8b6755f8f091b1e77733f60dc2ff46236149452568ee7b3abc579c3adcd78319000415b3ccb6542c8d805050db6287bc0d0c257810094a465f904a919d39a4fd136b74607907169bba27e22c815ac587c7f4803437c9a32c8575cb331be2597a3cafafe21ab121ae9ad70aa77a9496e1c7401bd314a6e78522f848828e9c651346262f16f130b9d94f3068cd1033da7940aa6ae44b13c138ee8a7bbd1e390657356b1d8a8fb71b6a95214e608a505fcc3f433d8084e2e243e0c8e571c4bf4105b568c56701725af51aa5799981b44b661bfe8628f5d0123357051c34637a9cf1b699a0a5101935c2d5df92006ddca153e7cb92fa2bc49d2ee35f8485253c44883450f36c4cdc1f19171e55b8bcd4aa904e7e6ba6f7b11edf2beac682939ce79ec0fd5b874212f2f60520f48d55c1527092c8d64bfd03079076f36a9e2d5267198c5d72a27fea2a6c287f1eef5ac21c718b3e886c8f8d3156731f63feb14dede6105faedba2c2f9162982b3a7eb81e313f444bb20bdb2393ebdc06f57b28957ac74e261188d7819d1352abfce6c0db1fb15ab0c53632a6d0ebc007aeee8f56b7233f4f933abc09dae66306f36606c6933bdd78f2344704f7f7dfc51c9a27ec6378db08f15a72168b487f0bcba05a7c2e46f3f544ace348ea41626650bdb0b58320ffe79da1fe97d97f164dc6491bc374f88a3b3b1e90b732ba374858fc011c9dfd06e2b650e276131c6e855bffa16a20ec01709545c60e791522603d45c361825f1f5b35febfbed1cf64cfde9fbb0edd87a835d3f56395f875ef15e567eaf4021eba0ed13f3abd706aa0bd0353378c7c2f746535e1593bf3da60b8aa3f52b4d9e8a61fae06b6d76ecc34a2510358b00f944d911fc840a202ce98574f01786003dcea10b3e08d505f2fea86950c83e1baa40e7f7770b37b2a6d8c4d472118aec91eec5fc7dcdd4495f462f1a111f443edb8c63b00f1401d2647fe9e88098c062bb11434410f4afa04cdc846af156c224bb1fbfd6bfb9dde2e5690de84fc9bfa0b36c8d9fdfa3e60fa09fedc4f2f4a10c2a4787f40bbff0af60d441e4241617585320339e8e1d58147270f3d7875e0d0cb4307af0e3c7af2d0c1a9078f4e1e3a78f5c0a393831e5e1d7874f2d08357070ebd3c74f0eac0a3270f1de03cddca7523ab802ef656dd46b0fd257490601f527bd928e001201e6d51c08e237916a2e4986b2967dda09134b74974c0777282b1a68f0b0fdec394a022ecef3c9ad4b8bf6099448f2b90c8a01c517d362f1d40f9e1e05f771b12effe7014c3854720e9d1a2b8003d60de4ce4f1413c1a2fb2e1dec4ad4e775b87cfbaf22f822939c5083824b89fdc03ca0462410cd452658cf8600b1bc6ab8581038efb0098259c870c6050a4584a9b29e6f1c9f9ecb972e3a4315c5ac03b832e8c245e897e81360db7613fd2664bd4cc25174788a643394f7cd70c70d4df40cf4d7c4c833421b646d420fa73793c5ab81ea191f559df5a075f23e6c875791dad689208b6e60771242cce546cc8717fc26970f9c3faa71f3353735308a212feb27be89d2786a8d3f3ed585c45d6d7956fde223f7e9103ea4555957a66a1381f2c2a23816e9d36b1aa2a01da9637f4da08ac9f5002f4c703ef27b400fd731ff6b351c0cacd3b50e7a1d04d2c10fd022542bf0fac1fa0c4e8ef02ef07e82948bf516a6a606d04e13f00c7b31eca4068c8f611743f298c266729360d396e4754521282eb0c01b20d49787d49ec940e908ae4bbb46f42095a0a31679ba827999a7741b9530251450072241d2517e8794648610f6ae9c20b67d7722168f87d993fe684e80c6334b48f059f4232ae0c9ba018ae2871ae7026437c6ed47e2c54a62eff39ed1b3c3e8e9e04c63e5d1e482182f9870ae552b9f1cab25ac416ea7da67e5cc8bbdcc766088a441184d8172557948aa1bab9fa4490d73da68ec02d848e79c9ef25a1548101d9a1a32c9d1b941ee73420830a42eabb86b97c78c15ab92dfaa6be3d6ae90a68e4621658d27160c198f90301cbb8fdfc55ea5c1fac15a5a9ba998850c3fb9c748674410501933364ee2bf56b483983557c6ec8876ff319bab301f4e08202c0bfcebbc5c71acec5f89f008bbcb262f204a9f74201657f243546512d76f18bef626d6e7e1b4991e9c44811d12feb1721c31dc0c5c90caa64f24dc69c6c3b79b7e7db991b534423b51eb6bc3e9b1c2239c8a8ba0bf618968ede62ca327b7b523fcec195d7cacd6a7cccfdb3dace15db0033aeb70e58b8d12934ebdeb622fc99470971c881e88230f83278666a5460c91fd4787d7bcbe27609aa2f245324812e803a10744552ec4b16c2f05ecaea5eb8b0865958e37251b14e7e46be1851ad4021e0318e23e5ea53a064bb51d98ed75ebc32899f965a778de9052262767d5a0b4a099c2ec128bb85a99ca8c28e59398b9f73261e52d77ca61eb3ee96ff06ba06a04fa5fe67975b8fb5fc897909be16c77c643729a6f10541c09686fb90b3faa505a2a2463744e275a78c415cbede78f359bf34885cb93d02e71c88dc0403df0f505ad017861277e8d92558a09f038c097cd76667e2076f4868c7dfd6def009f117b3cc0c62c3e5fd96498f5742c1e8302a9159569f10278127eb7d1fbac7c0d830f0f003c3c68661800c035dbb21dc76f074973f7974cb15467aedbe6eb4bb2f2524cfb6d0780a62308678710bab20a5a21c35c8ad404a85725831820008990509c85a00efe962cab0452e7591f52c1fa09b566cd3f00aa508e7f335cc510b6cebdaee0f1dcb46fa13a0f5b2c101e5dbe838fc4f0dbf18ef0820256cb20516cb7d581af0dea69137ee3cf3eaac8d942f59a95d30d13db48a74992de742c95f87a9d5815eca146091f9752e7d030d09f89291e31a4eb6835e9cbae0f2c9b99c3019a880d8eb4bd240c1fb675b99bdd8c30003b08c77906b05d73fb30b585db18da294f6b8cdc2a936f374c3b8d453c1dfc09c2c0afc36fc004f098b71afae8495414732e311862c4ca995f41509ef556b2aba8662bf1dd9d82957d698a1d4190ae59a37ce8790e6d792b134a12370d4a701e80a13754dca8dff9fc44bfefab6aee82cc633369b870e4287312ed2a19ffe3fe806d32592253960824b78a0a0f2b391c21e764683e9f4044a2723396298d571f0723d5580e08a37df9512d18397505bd75bc9261260d63e606777541a4828f467018456afa087def0eb3e5eae990d7758920adb36a0c9eb4d7a33dd24ad1065f452f4ab4dde3304e232b51bbf26702d8fe0d285869517041297c1146036eab13fd1de0e4fc81b788b777f5dd3b6d48a1d5cd8aa734f104b5ea5135af030b512174f45300ec5c8213d47ef1c1616433a8fdf0b0f4b628aea82efdddcd4e6aeb5a8f5f0e0a0cf74865ab2816605c0196dc56af13c8827e71262a58b6e0194da0580a45a3a6cdbada426bc15e24e4dc949ec4d1b055b71bee448265fef07c512735ddc9834268a3f54b43aacb1a389fc9e9195caeafbb23b238c968475ed05d99f3602ddc1b904a9a357042750dffe6f4740220d07a490849edd4619ede6fc40d4ffaa8557f32491b6dd0089fe38a288874312b9d9ba5408b43b3ef855e76287e01deb3f8ceec02fc89099264da1bd7a11c6a7d804056d4cb8889fd149c2ab84fd788d459e11b925ee84a25acdc58b3dedf0642fe3050cd3ee7d5f41fdacf0e42a362aacd96790745b4c1e1df7b8050cf11efa7066acf6bc1b39cefbc0549d604baed94aed1550aec0d80d8bc9ebed200c916dfae771c86fc15cb71eda74c9cf913589dc299d560324cb09b0d4cb334c7d08f18f1d444a2faf793adb353688dfd146297fb1772480c73708f7d5866a5e0e76d4572e7b863bb3ead47b46e8cb163c62eb6f74b8b77ac0bc4c8e6bd47c4727da468c6015f64dd191cede9cedf57fdb60c07d42117c519c454fcf247f19ae40875418964aee44f34049999a832b4df8b61fb8f5f55c9cd6186fc92d8cd6972fe51f26281eecd58b439ec35321d2cbd35c098766e8a67ccaa66a2be4385fcf6be30c33b224275b3224665277d2ef46a32018a22733c0a8e0318d572400c88f78e29d713e27d69e3416774f1d820045bba7aa2f855e86686b86965586b444c4e399bc540983e3f0cce3f96f5a7f094440d516e093d51fbd939a61c190c4c64c34541ed7f20553e30760caf992bb64f56380f8d03d294838083add8170feb6f0386da677829d9568c0f47d6c7b5109e427b1f1b123051fe9f0b128d6fcf85680de2a1f6de63b923a355a33dfb30fb1a3a4f8fb5dda02983d12ff96a02cbad44bea83f51cea25d573941623f6e120de233076dff8a5da1c84813f47e006dfb863efb0954972876bc4839d04732902922dde2d01982aa813d44954bd0d8a09699a8d076ad6f2d00bc941f8a902911e784ef19b30ccf49ebe2c3022f90156537d01f51005abc48e6f1eb0e9dd95e5d39f271d3257da57f2e732d83ccb012e8fcc44f3e67a8d22033322eaa5601bf5782d5a9759341d6e59f2c0fb533dde7172cdb4a853a7aaf083adb584d8cd3d2d9f7be60383c7301953c4c2e6f4df40aeac5631dde66a086055af9fc9a1adb06b893b6d102cb4dbc6ec69a798e65f2d1474083dc6f641b4381dc2737a5393a1d59c032ed759e5fc7155e0c1303270b3246b92ceef389660aef393662e2fbfe7af5e153986fffdbe79bdb1941da7b57b615c85fc9d6bccf4a84e6d9c1078d0df3f06dc76fd31e096a83b892fa6d6a8b8d6995a11bbc048c8272aef267ae8dcaac67333d092573e50bc3f52c3383d71433625921fc0bef5f9501f485ab72047fde140ff3917ae7f711effe9ed022999766d68d7a08ebaf7b1a9e25d21bec15d7f39d38dadd0e80a691b88eedf6808b82102249c129fe7801edcaa9cdc0b6de14607b8ebefff7bf20bc63e74092f32ad78ba150a3a0a62849aea742f7a61342eecccd7953fabe673f51e2a7fac9ab3952982db35114299642750e796854872e049c02d1936f2719383bb58196240334061c332410400a02a44320f423000ad3730bcc5c203500e0688e1b7701e38d7ecbfc71bc4e101460f206079dbf8ceaf698a8ee02516d6abdc85631757cbf1e2e1b02af5c22590be7058050cf7180f86ab080cc331f589e19e8fa32fe0508ce8cd45a998d9c3d7cd198edf8f65dd83a63255b9db679549c3f5d1b5c6b0fd7885d0d0709ce3079d494bc8da3d2ac218a90fea9a14e2557bf9bdc6e366e034522fa1fcba04615390c7a118f29e2b8789b28f4491d0265d58c8bae2c3a817521f54b8ae14c50c18e416b757b6f606b2922d60becc14b69272fd61a6fd201676747e23f5c164a69838395c16f6c99208cc0a801a111951e6581f5498cd62c35cd910218923f3aeaf06cc5b75c12f3b0a4459606f3f85fa60cf8aff4b2c706cf8b0a837ea1e27c4b0cf015e0ef5415d05c55186991ac77c9b24d4778f4a4c79cff1aea65a4557966a2cec46aa501898f20eb640173c4ab59ced5f973c6c5474245dabd2654be52b572881e00dff2e5eaab9ff1a1389fd8bbe70c8d4b53c330e1ed41dbf21f562e10426454d48b3bd52520bdad307bb59f93139289930d1249f14c77ad0ba948130bf1dfece96202d0fd386c5562e1a7d5579c5cac3272033cb247db00340de139d7d6999bafba33978b60a1ffab2a7107ad91d659eeb6c4fa13b5bc7ea8940ba9819b48f908034c87464a0ff5b8e8008de067586b8427da4fe3360f651707a41f5764c7b2f8d7622c72bfa4b3036b03b48c45f12ddafb67334f12c16114820dff55a936a757a08e7bae5debad9a9891b549a3c41ba0cc2eaac44712d601281a410c9ae53ab1a91a50eb0da6ff486d3b0b74a6d4067b1f5c28972b73541bb9f11db74918f5763b5c1cb6edd80016f9770776b9682ec4b004bc226815e88ab04cb90dd124281b9ebadaf87ccdded215614858134a979c8ccb29ad0cf2d00d544abbe49c1e8740a67e913bf1c9a8cb90967748165080d6407729d42d677313a72639071ca25be77587e2f1a6641e15462dcda5f031319c5909a7af5945a37eac217553abcece1502d1d8870bac222d7d5d0a34f6a930ea610b48ddef7437ca5c3767b30efcf45f6de3c00ebeefd9c81dc410e209dd5646f7af7cf447ee3f6e445d2fc7c7e6eeb9e49f35f567149a004f3f921bb823ef59a0614da4ecc8b21ef7f0ceb543fc72cc5eb9c194d3fa2a94feb5de388aab5afde30ca9f64e758fdaf28c46bd0a17180c055dc87818294880f1d72e0e400cd51ff3e451185526febb3cba6a81ffcc1276ee9fdfb68cb60eee38857ea166b5167dac55fd799f220c11489575c2a150704015998a6b46afe987d42c4902e0e6cb27d97f40e0f3cabdbfe824cb85af706d2b79c47302820bb19016cfdcbe05a21384a995f5f663551ce6759eb916b85d808169f9c3de70240c3482647a7cb46c261095c2647d03b9f781aeb44bde59cbe6ca08e27c8373884f0a5d063728eab4bad4c53dafe710b791e3358ab56460c2d73e970c1b4b0d1049ee0a1e9808c1f1031cb2c2103a773d4e03180055de40772625aa2926c50351888bba5adf4a033562f74cc620f52238528ae42f585ad109e6c6567c1b48e18feefc906fe3681c565bfca6692432aa5ccfb19d8e2b1b137f4c90e4f45bcf1c82332048530b0d9f207628ea79a42e2361638712dfe76597efee2a1ee6ad95133534aa500337ba9eba9ca1ff183d7707692be94bf584a6efacc80d1d514d44d15fe18b712f70fa613bc40a66011665494caa3efdbaf486ac247df37951aa98ed7681974fbcfbbfffcf51bc8ab43fc1ff93d5e698db21557b82db26a55d4a5a6de840071721ce3a60816a2a4e037a991488d88de82c8e6de13bbe270ecc975c28a5b8d00b05afb5363fd898a0b0de489f95ea8a4ee194d46a7fd56b142325cb5732f5756d10abb7bfe69379eb10b085919c69ad0b8b6a88aded99acf43e7ea18d943c361fd97140814f415a285db2e29f167862d410f105016d46772c4105128a38e180a7afb0551ed9b0c2db771eb04debdc460f09efed7cedeb989f82102d7c9888e1c68f5935158407990f7182acd6aeecea7b108592ced538be226f529075ba307f7ec79cf0483daddbb39f5a766efb82f1e1f78f2409ee6d4e2aafa0d7c40eba12d1ca3ca3792878d02f16a733cd0efe0c68fcc6064dec587b6a1a43ec22031668a7fd264971309ca9d6ca51d224a5a2c025db9e9e5e774cd89c3e28ad002d51948678256b4aff6c32d5d971039cdf78ff876b16665a62b8f5bc1457dcd17e8c5f9bebddc883bbbd45b8f875d837a93fc208f0cf386b9483d75050d1d23d21d8a2b70f94bc0b59ca44c79c6d7bc3fc5b64e8b261b1371c7460183809e8b6aa7dcec7fa4342c4d79f3b64b1fd37a6fe2d6e03d6dd6bba88b0956fdc98a3a73b95711be37525c09d1aa7ba6f858c3b65bbc67d4e27000d86eb171d2207ff0cb76e52e9f5cf332deeca91dc93d1454d0bec26936ffdf5fa4614f94e49a5e377486734ffa83f29ede77d898ef47eb336237a071c04f3bfdf486b8084d3ba6a4669a264d8591f0ec909b9ad5d57d95bd1be7b7017f350fbe17835f579077c9278e96c58926c800ebec4561449bcd2c5177564182eb42bcb180fd4b7028f5defb077ab41f6296983977118a59ad1bc231cf187e5993a14325fb67b08c74331f364d50311d085123e0e59f58f17879319f8b09ca68f7c5fd408b097995d7a2d2633034d06d6930ea138042744365888dc551592972cf654ce3891a8a81cd80972f3d599bbcd9d744124075b2e86f1bb2b93da23f6481937f09ae6ccc44ad0eef24c9971f86e697d49d7e4b0005049a0a92204a931587f5842e76f34ae30c7add7ad0226a5169f3bb395d042d860273adcd394bf9c8c1eac0b0c1963ccb6d501522aeac11d7346fcc7024a9e33e0c85680eaa7a3ddcece4a7678006dbec64ddbfc87e1f970079c34ccce87efb4201515ad6789f595bf6e337b415f4a04210623bd96eadc5f2145569cceef9ba1190234bc4de87784dee2ac7d6c0cb8eab11b0a0a3122c7c0e55a1a84ba8a58266ea12c1732e22c262c88160a007051a5d0bbe7c6b53ad4fbaf9d17ea6dde68331766a8812b9f9b789ed01a4c8cbfc99325a9c65c7075902892e8fc7bde9dfd9c72cc95aab6b4036162aa2e382dedc8e402ea2c9b4ff1fabc5e4469191a42c0846c942d6387f6c3f60a0f6eaef01415fcbb25e36e5e8516102a28e886fcadae6275d320f4df9a0c998ec1f4db9d8681d28f77ef176d7e547c53bc9642f2de5ba453467b88d574bf9800b16ab93af5103e64b868c8a2a19e9334011bedb51aa3ccd0730d924885db3120cb9e90487cd67115b5ec6a6106fa1f004f40cf91463ea95ac23d389f026589e80b869ca25e1154d12a70f7e0e61a3a0558e466e9b69802569567b42f7f6c5c10119d6c7d6ecea5e25e8c332e7cf86dc944427a827dc04aded01bbddc28af1b9bacfe6edb549884d8e7b5d3f30b2b70c5d2ff416bf9dc56d69d40d28b8a27f821d4cf705be33c65f173710983a1dc0c0c04083430703a30e1d343898328e25fbceb6bb6cb61b916dbd4276a6232222e224b12119257458918888883c634fbdb514b7146d15df19ffcf9cc66f74a23d2f04fd3f136236d0889ba94b8bfebf69480f2280525528d9fe7f29c14585bf481339acfcff12c5202fb11a809b91ff67f2d549e88382018a47ffcf44c5228da11934acacf97f271b31202ddb3c2dc5fd3f934fa3168f9466ec61fb7f0037a4016a5cc960b8f3ffcb6e604cdd03ce9537ffbf6c3345fb624145863a35d912b3e7cfa612ca3a2525ec38fb369570fdbfd37ec2f02bf7cf5470d3b2e0ffb2ed29aa99848d99e0ff97cf5c43022f9f4c044c30e6d725e97bbff0dd6d69f5bd5ff83f86df7e65f2ff5f3e4ec670fedc9c6c9bdc7a1b29be6963c3376dccdfb421e58a3a7c0071ff0004a070f24d1449be8982c83751487e13c50ca6a6a7ff676a346beac1c4644e612e2f35595aaa446992a42a91203db21d3562b4082dedc199a2b6ff6522b5ed5bd7d099f0a642fbdd6bea4ccffd2f95ccf1dd65592bd76b7a6e8e69ea1dcbc17114abad33a4a934950e84e77edbddf0c5beb676afee53c59ab6db6ee510cdb49f1c1bfe2f0fddf11c573b9da1426c76756d84e6f73ad86bba8fced235e06dbf9def8662e9b9c3587aaeedecba4fb1bdaf5363ba306e90a0ff877bf54f96a1b20cfd5f060204e7fdf1336bab70dc87cf9e8ea5dff4fc2ff3e0f9e5f34e0f3c3dc6f430f2ffdc8d736797e1385a85e317b077bb998ee93b1bc77216fb7646a9147e6941eea46df96a6b238839e011eabedeed7803ee80f75e8d86f1379e8defe8dde50862d9f80ea3ca2f35fac6f9dd653b5e56c6c76e5b5b4ba552eeccc6f7948f8965e33b8c936de5fa95636cacadc9ee99aeab52f9c5d6f64cc77da6b3f1cddfbadfef7b4fa5b12d95da340d968def3a5e04e3fdd666b15229944769b8a923b1a903408e24ff8ff8cd1c850f67f397bf4e9bf7fab5c1b8fdf2fbc5def2f41584bb200e3ef53bd37e38a038a4fe1f8e0c9e5f32a775a66b467ecf9dd18693b1f7d559dff75b868dc22190b1f7351aadb5f4b6ccee70acb596d9541a8e2ac276b4eeb7fd62cb14619b8c8e9d6edc693388f6b90b520f61f895b371f6ff6f7d011bdf3ee7bc48dbb1cdedb8db35cd4806d7ef5696dfbbdb50eeace9aafc421bdf3e677cbf7cfb66efb8932ea401b94c53e99bb6bb75a6c7debb8e13a57475ce7b6998aee1c6b7cf9928cd62a987d20a7c8e79b54a937538c2f655a4cdcccccec2387d9de3ce4e8d6f7abebbd5decab696eef37bcb5a6c6c73ac3dd6c9eabe484f076929a7e19796b76ff6658c6d6a8c7de72d4cd7f73ce555dbee9b3b8ced3b7e196f9a9e6eefb8a6e33a4b76b5c657fe46e833cdef9777adbd96b6b6f6809e39235d5bb98dd51a72a754caa58a7fd2b7d7f34ba519ef2a4d36d373648aff97e597f7089178ff6fb5ff22b75820e2f45d87c50f16d97f67043802dc595cfd7f84158356b4715ae738822c6b57e85831f81f813f57245041c84f859597df99b0a92285764acb724d157c1f41c5d43f7f1272ed33bdf040e39d7357a4eb297746f8668ac6ff92f02e76b907727a96deddda4c11f74fc61de9668aa8ffafa2a0f32fa3e8f25fb63596a3e941da4f96b576282c3c0abcffbac72496217e7981c4fb7f02d109caff998e9f27eebe3bc682d617f0ee76f4f944739a9191354d949920f0ff4ebbd7bc6769aacde75890da17a38a6f677c3eed998ec25df1ed868250c2999eb1245c0050b3ce3196daf87c62a98d652102ff7fc03743e035433cff8b3fb1d4c6b542b5c2b4c26897a75a1a7e3e410c028107049b3ed374369486b582f0b6efc173dbbe07c7b0561044897bee8b7534ac15045148c3da6d57bcbb3d6b69586b7f7023cbef9c2cbf5432ee24b33d407a78ea00e9ffaee9be411aee206d069a7db311cf371bd37cb3710cf37fb9bcf2bfb4f27ff77ff7cb2a74759f19e9ffe51b1f95ffe594a594ff6594ff25747e19fb626cfd5f4279e264d9e47fc964c96d77f87fa9e4adff9749fe97487eb1f9c8e7eddaf9388257a91da6a976ef76d0be2e4f5f6a2c67b3d09bf6a3ab73defff2c8ff3f2d2799258c1481b5f5e0ff92c8b26d08dcff977133215dedd8775e0a5906f95f3e2e81d0d539cffe31d3b10f7bd94396b57eff4b1e923b742c73303ab13296f827dcb78e2f1fa321e3f35f0c4b3d9ce3373d87f1eb1dd3311658a4f3b4cecf450b9516c5fedf1a4f9f644d4deda3b6f2f973421fa76fb8a72d3e9fcfa75d3bc9b2586a63536ba875f0dcb6da583e16f7915dedf74a766339dc1b367e3e1bcde05ed32f9f3dc1def6bdbbb1fbd9b3d60eee74759f19ffb67dafa6ed14695ace16ace99bfadaf56e4767f3b467fe5da92f351a957611533967b904f4bd86e5f84a5d16aa3f0af7ed2bd77d91cef6bbdbf0e0fff246a7ce5d9ba1dbfc45cb6a6ffec29d5ad376837377a46b3bb8c35d119e63aad6b6f3e040b93e5910bedf6c0f846f9be6bb6d2d1ddc196978ae6b66993c5d770aef2d773a3afbed7482d6397ee1392f90cf5a48d7f97f671e3de69f2e8ff7eba0b37eebbe483bf91adf3e677cdbfda6d67df599567c7955ee364dc79f7d8e658ea5ef9b96e371cc6bedddaddb176b57692dbd15a4e9784d63c86af9dcb3f47366dcf2fbe5755fec8c341e77c23dda6b2db5db732ce5f34b1da3ebee18f3065b597e7bdda09ac7bffe02eb28703f28de200fac1b84d605def13a393e2848d8c79d73cfd2695ffcf191c39dbfc1f1c7472e1646d7dd316ac7cedeeb6a1394e28aff77be583aeea4f1147b3d3615dcced0f7b66f2d7dc7b3762bcfb494bf52fabe679a6a9d69592ae576b7ab55bac36f1dcb39a552aea511b9542ae5909cbff74bc7c76a3ee6868daf82d9b7af5bdf37ceb906ce393d4ba552ce9d55ba4a4bcbced620a09d95c9b2362be5bd0b72a7965e7cab7c8e7995a6fdaa2dfe7fef9b55bb773260c09f701c1db3abbde67950380fee817b8cdd0fee303d27d85bfcbf732684ffecbef896b57d70a7eb4e61a6fde6e8662a3d68c3bdfb75eceb47ed5941f84a1396df69bfd745fecebdf74b27469de939acbff74bc7a935dd63a9d4e9149313c35eefb8a6adf27b955ae7f86abf78523fe76bdb4ec0b635414167cc48cf8a2f776eefba83d9b5add93618efd7bb6d4dd01a173aa7744efbbd5f98beed3ad67658a6c3b0bc8f3b6d787ebbfd4ef97301e7ce6b56daebeb4d57672ecbaf95bef9adcdcaafd81cd3f2f5e6f43c53e3acf46eecf09c370637e856d37661d2abddab74afce31d68ee7f74a8debbed8e558a692dd576b2c739b1adf762ccb50ee94c2c10dbab9f577308cf3b78f4b6bfa16acc65c2c8c73a7142d4d2b95f2fb85b5f520afdfec181e97762c2d28e54efbede34ea954908bd90cb061fc9eb9932e6f100bbfbd9e69fba55669326b232dc79d6473cc5fc7d8e6853420afcef1b47327ff00d5669f95eb5b6bfdfe9736fe7f09771876a8758875e86418c95051d33090611bc335866ab234175310c69f655c4c01e7630af8334bf331053c8cf3e798cd132b184231c4f1fffc2916f61a5a783b6ca8f5ff855b9eaa85f9936f9ba5eb7beed1fa9ee367e33d187d3e6dc215fffc97059a8409fedfd9a7597f060609fd3be798c3f19b9d09a97196a6c6597af0ee827717ecf2f4ed37ed27cf848a549aafa6e5d7aefb623c13d65ab9995030db9885de5d10af0b0a0636d6f540bab7cb73f21c3470eed9bf39c6ee97c5d67879b2fccea52d3e9f58ea61a05660d43f96dad89cf0a839e1c384da6933763f0e247207a2e7d57ef19e4f6a9cb51b0715a9fd7ab55fbc426acf0aceb5761ab5a3b2fc766a4d579b7e2ffecfc593fde1fd3faf691138f4cc3dfb47fbe541e1a82cc78ad15b4bdfdd8e66df7e8ddefdebec2b70c219807bee8b7c2f52e05969f289e0bb9b7b527c533e0a4dbe3e3eb8265fdb3f967af8eee1f95b9b9536f7447c3d66b727d7dcc3fab7c6dc8eefb7ca677a1ee3d4ea1cd3b0f6adb56f638fbeb5f6c5521be9ea9c076b05a16fad85de8d756fad85daf6ffb25ebeb5f62d73f6d95229bfdfe8fd72cee139ae72fae689525b505a81c16cc78b79ce5ed3734e4169afe9b9d8d9611acb7be74e679c85caf23be7bcb5d93996f66e470f4ab9367b6b7bafd25567af8e41017baf46e93b1aedbd1aa5ab7397ef466d9c853afb75d029add2bcdfcdd174758ea351e74cc773dc59d3552e8db35041c2b7d642ab747cb5d2b222d51e7b3b150c8cd7f15b6ba17980d0398fe70142673aab8dce2ff5b6692c560b5bbbccefd87edf31e9fdf2b7372ee563dc903bed0ec7f4e26b9de76e6ba9b195966f5ab6c7a664f6ebacfb3d776dd74e98e918ee56eb3be8e4cebe8de139eed89aaed63dfb4aa5f6bcadc6755fe4f48dbdb5f4f4e5309febb7cb349de5331d37de357d3b6b3bae5f7ae6d5bc44a99cb4c21dbdbb954ba5d72ef6a02d8d8d5aadc338dcad75c7be579b3bc6771dbf592ec6b7329d0db3e33a8ba5a96261559a4b39dcaf54adcdabb1148e6f3826bbe5583badf37a0dc752389672388ec272ac85e7773bbf373dbf362cf77806e44e397e393cdbb7d6ef4f50ef4e961d63f98deb6e77b8ae0f1a68c7df3cee9c691b439c85beb516ea7c6bedcbaf77cc980708e54ebbc777f4a665dbf9d65a28af692dcc6f5ab6e16e6b63fb7ebb567ec7e6388fb32f972a5269594e6a2b52fb953a673bb7f5bbe8b4e34eeebcb9fd36d134fcffd437d1acff71166af8e78cb32fafbb624d3346ab55dac915edf7ae560579dde1b75fed6ddf73c6d957903bb9d301677c6b7bdb15a3fdb63ae1de6d9a57f9cbfbcd9dd93a3ee89ce0dcef973ad3541ec89dd639ae6f9b4bdbaab756cafbf48d171b3bdf7645b8771bf29b0eb4bee9c0fda603e6371b5012e0e4e5f4ff5e6d876c870f0ed70ed50ed30ed10eff977dffff7476f8bfe4eb75c7c3521b6b7a59e06a8f8eedffa5de1dcb6fad9501ff9779784f727c9ddbcaf3df7bbff0b6effd2feff2ee3a757e6f7bcefb5fda6dbba219dab6efd5a93d68ecf01ca3a5c1794bbab96dadb5df5e0fce741c773af98da931acd593edd8daf9aed43ed817e3ffe5b3ee8af14cf7fd2fe5ee7826ec30ddb78466b1f4dc4dfb2de3e099d0dece6f1f4d0f7679fad27e709f09636cdd01693f452acd77f7be9bf6b37bb793df4e47fb05d674b6b1eecd2bbc52ef176bc77d1dfbfad9f26b977debc16c631d4d0fdabddb59e7d8cfb0f1edeb304ded7433233d2bce845aba9e09ef9aced275c758b0f1edb3eb6099c6ebf2d4f0a6bef4e052023c6b69bb9bf67be5f26eda4f96b576f53d13c27d26fc5fc22ddffa4cfb61a98775b7b575cf6a0501ffff9a0df0966e119e10d89a6259b1b6b7ce71368275e6cd3029f695da6f2c4d754eb5d73bb696953dedec7d5ff9fdd63ccb23c0bdee566b5cdf73af7698bf6129c2e8f8b3a6abd1e8b3a6abdbfab5ed4eed33873bb67738fb320aea35c3feff01032fb04c5f99630fc0986e4cac3506808302188c3d7f06fe0506d6f1afaf2f26333526036968cd05946fb5b15c50c8d98212cf847cb4206dc1d4f3a73d6648019dff99b67b35963b8ca7a9a98086624d336aeda9d6b6e7ba34654d0505b0734c67393d73fb95c7aed4178b33419aff77fa423696e0fe5e6bb1d4465ef779bedeb1616f026b26c0fba7fd982468aa6c2268f3cf64c54113418abf01f0688080eedaab00d29a6080de2bd5ec01d089f58501186300967d460b9a606a2f6bab4c83147c31fa3c09beacbc2cbf54262f089a5f8fff4c765f78ff36060ecfdde986a5afa667a4e5aaaca50df1f87379483bad398dffb7b572b6d6dadaeab20ed8575393c7f59a99887b79414ad1c585e3ad733cc73c9b7deb41c62d2fc0ff67ae687a15e882f35d3ffe9b5d7fcd2eb5e74f788e15f9187fdab573a915f54dae365259584dae0eff2fb7fce5955513975a1da1e616a46f6ec181b4ed17104b3d84fb6c7d3efb627cbf7e36f4b3be99f5182fab9a596aff9fedb75dc38d893d9f512cb5f1f9b4ddec6ebfb10ce5636e6f5c68f33138b434face6e6beaf399b5ddee6ef71ad0ce0b737be342c1e733fabfa49a5a4a5d35ade8fcbf759efbc4a6d5fcff6256ed14ee7756dbedec321af0b66ba75df7b8aedf69b32acdff733ac27f20559175bf52ef175b46ad6d322cb5b1e9e9ac4945a7e9c268361f9b5183eeb92fde735fbca3769486b536dcf3d9ef57ce62fbe01c967a98c5520fbb20ac15b4e9ea9c07c7c704dd6ada4e96df39f99d7b3e0744a37687a37387e1f81a8db36f346b3f9f55b9dbcf271c3596a75ac06c164a0f3e9f09b8fdf2b7d642ddde5afbc25ded172f03169ee3f73ad70c90e56483cd006dffcea613a2973b45bebce9042867b34da72867138096ac758ea1003afc3be1ad6cc7b45f1300fff84ad7d96613a0669314daafd9746d36e535992039676dcde93b66b4630e68ad5f994f6979cae5381b37997a4c6f9bbebef74bd764b26a32d13499379acc6d9329d6640ae0f67badb3749dcdbeb00d954a6f4627878383df7e85d27751f8edd7374a5ba3301cde5bbfd96914eeb6b6c3745f87696c73a9d67c3befdc4ec77aaff26c7c4bf9951a5fc7a4bd57a5d0deabd1deabbd57a36f97b3f10d07e7d6bb5d5eaf46673ab6a7cd37fb77f29733d235f612994bda7f277f9df4dd65eb1cdbfcbde106dd6adaee5298d3b6e7de6d2def869620fdff627c67e39a6a5b4282d5526998cbda6a56eed7999e36be584b5095aa54b2563a40690a252ca5aa495a26a5981427ddcef1f68ef9dca5b2fc46a550de17a330fc4a79959ef297df771e772ec636975fedadc5f2f8c5da559a47ef6e47f94b67e93a6bbf3c3ac7516e4bef6ca752df08d4184bdf2fd94ccf6383dc79777bd196c76898db76170b9b3425c90a6df33ebd6d2d5692a324b5488922e198ebf234b6c672dd1cf749b772bfb1f14cf3be4817890b5218482c20497804486acf49c9b2f46dc7af33cad8676995267c94e11196232fffceedcb48cf63dd7ea9bc5be1ceef17ca9dbdd65aafd6f86a9de379d6d6764c36d3b3fc763876a4e82841a336ff72fc2e4ae199969b93a762d330b137ccd928462339468618a5f9b7ebd8cae1f95564ecf37bcb72ccc8cac85d6465518845658ae8fc3b7b193cbf6363b1758ea9db299772452414c5253ab475da52692c4be92ba3148646e1999e46ed188ea3897aa2a8ed8bfde34e7bdb151121a284675a0e9124a2ebbf8d280e865f4457d04369667a3b1d72a8c43be13ec7348643d2fffb9099212c2363f733a4e40d3532f6ea1c33763e4378ef347475f76d61214076a1c87f9b015da1b69ba6bed92ecff4946fa98cb43c57e8e9bb2c471192f2f2abcd00132244e8e99def203cef9c65ede29cc7e7414ae0f9a50ee21be41444e75f1af7ebcd6199be05310a620bc4471a53f9f6c5daf27bc7811ac7024d017a04c80da0102f754a3999b36fe79767e91aaefb5d7de31ad0d91f3d7f9cfc3ba57597e56ca8dea4642aeb38de78fbd3284e0b0c1d7ddc564cd6030065c9f1a5c89397431cfa0ac8398465115ca01d49e7ada691e211956b19cb8a0151b73607080d0df67690080f912ec0175b0b800c634b9434c262e37a5b9eb1f125080e4309f3890f97f8a4501ea78a22015087b45991aa01c482a4010c4f38afa80d100f226d69e3f5e6e563a846d20b056350d9a928b3117de8a061e2c01b7559a4b3d3e7edefd20a386264ca14b869c1e0e1085d50a64e209311e715330219ccdc353d8542db16e1aef66b03ca51e7ad0db5b1d639a6ce5bfbddbe7287196958a6696a349ac5d6d728563b37bed80ed37397a3db3a8a96a6bdded90eb758f15a38afc3f49c1bd964ee48a459210b2fff2c8eb048c19fd2db7eb38bf0fbff4ba61d3a9872d0f867c271e39fc9468d7fe61d0daa1dafc061f7cf34e3ff9f986430c5f8ff258c141fdc14307ff67b8c3fc3ba600ac1146f6261b0dcf3699d63199e5f3cbb77bb3666a1b9cb51fa8e66b5d17fa617d6587ebb636c33b96851c28b5b82332f340138f0d66ff60168f1b1ed9dc576c69b041459dd15a96f3d8817859218d1e199a046fcdf73c7469289a08c20228553f1afc3bf223dbfeb61c58bb80ad1e61f1a42cbffdb21e2b22e883120b2807802020808a9938f71fe9cbb1c7dce641da6fd3e3022232bfbb0f721ee03da87023ff7ac3d6b397fc2fc0977feb46ba7e020b52fd6fdbd5f3abbee80505a16a49b69b434423be69b3b9f4d8ded39be1bbb1fbcadfb224db5633ac62e67e37a901edcf63db8cf79596c8d67dff6cbb7ed7b7f592cf5f09eb5f45c5e87e9b9bb0bc2315d87e939c32cb6c6b3ed392cf550b06bdffb55a4d27c8f8fff2fbfdd1ee23eea3d9af1278fff2f1c1ab67cbdabd57b570bf7aeb6ec5d2dd8bb5a03efde8edebdffbc7bc779f736f3eecde5dd1bcabb778f77efc877ef0eff4f808ac05494e3a3edc807df73c76669b92f76f8eef36df73b2abf545a6672847a52acddc8d878d4325040c70667872b3832fe96389eb9034180c3f2d1a03b00cc405f04acdb81489a106a819202dc6f72aed42cf21140d31a347f9dd82162328b466114ca58d71c000cc45461b0864a074e12cf9056a1eee3c2485986d5a2194596448118943b492a5413bcc8b386500282ada6c6c4be2969ee16899e329a3abe9c905d3a33950886ce66648000e7529f87bb00902824122c93823d72000bb3249114908211587f20f1b91ae4e32e2612006bd256e3d863d815c84126f6ca580a00832d4017d4083783400ecb0aa36c520ef991bb0168a7190288a4d411d59bbba6239019baa5e89a2b4f9ada0c206069d0150f0a80e492b8e99036eae0f21718c219654b352711cb2322208aeca430ee99617c9b541d122400e90aee2c49893414b2740304e7c8ae6cf9dd19c443a44d64a0649c19780a447740f598613c3f9aac587a5127c5948710443fbc0c18981b073666caac6ca93e4a9162236bc08326e68a2139ae340d727d7d59cdc02cf51af014023482e04218fa1882834e9add88127eb442081273c716b8912791781814c1b82bb280098e4857cc8b072f89404a0a36f0b0246601d5265145d5946405640f2c903f210a6dec31c327e250c4d887ca1d449aae644dbd5b6c2a518579b1d60681db28f5761db5c6d5d8a636467bf5b5a3747586e328a486eda3e356c3d671dbc8b8b8343065e77fb18f9650ebe4ff9db41f7f3e9fcf670226242cc7781da6fdb67def6abf787d0f4a77bff70b266d5bf526c4d2b5dd3f937df76d686736a1ff97ba361a2dffdcfe616b90ffdfaeb576059b4f2ab5ce6e2de4e5172b48d383726f4cf52fa79459aa4993e533c0c9cd52dfaeb7f22bff3365c8fe33d1ff4c3313f67f4c5a1e7de1df46db7645a6d9d2ff9ff17f2645260ccf68d4ef2f4f30b0ae305a77070dfc1b148c469f338ee7cf4f73e7bfacdcaf51b867e04ec59a66b431fc33c54cd7af5a985ab06001cc42b7e5b7ea64e009c193998b95eda6c8261bae4ce71f2dedcc69e63c239b691b43b4c375b701dd002cfa7ffb5d79ea63ac6299ba975163084d0355ae6202bb7652fb22d3fbcf24658afe335df8674afc67b2f0cf54e19f89c23f1322f451d1c510c574e814f654c38de9ec0c0b975496940899065108064e600264fa5b46f1eb8b5a66c8d24c5fd6285d77c7c1ea939f63f895b3bbf505b46dfbdb4423ab5b2fa46275d9e8f617f4ccc4c7b4c7a4b7ece1c26d9e3a77dbeed165201ce2ff1fc3f4ffddfe3feac205ecdab9a54af9ff37eb524338ed971a46ddfbc76a67fef686d5cefce94e8730bd4daf4f57371d73cebd84d65e25effdef04f1c183149254ca3f9c6743ad732cc76f3d28cdfe09e91453de3f13de3fd31d53dd3f13dd3fd35c343a210a75a361fff1187ff231feb4c75e5c207461cbffdb7087836b73434b23bced999e1bb3ebbfc6bada0d4bd77680725fec7c597ab05fefd830cbb5f07dcb2a2639e8568547a85b81ac6c4ef11d7c3ebb9b577d370ff1ddbcbc77f3e0decd6b7b376fecdd3cfe6eded4bb794fefe241faff00514e059cf0c0bc8b47e45d3c16781adec5bbbe7b07e5ddbb20efdeb978f7eec3bb77f1bb7716debd93f0ee5d8277efa0ec2ebd6b47e85d3b38efda9579d7cecabb7640deb583f1ff5153585c5507a6a29aae5ddebb7663efda75bd6b07f5aedd1370a3ea96bc5b17e4ddba15efd63dbe5bb7f86e5df5ddbac477eb0cdfade3130075c0caa572e510bd2b57e75d3934efca759193f2ae1c8f77e560bc2bf7e15d39fa5d390aefcaf1bd93950b1df32ed4cbbbd028ef4225df85c2681690facf72a17cef4223bc0be5ef42a7de850278374ed1bb716ede8dabf26edc24d47dca79f759e3dde7e1ff3f78ab080dbc18fc3f8427d8bb101abd0bc1cebb1068bc0b21f15d0870ef42987ab7cdd0bb6d68de6d93f26e5b8b77db0edf6d6b7bb70dc0bb6c8ede6583f32e1b9677d9a6bccb76e45d361fefb245becb16e25d36c777d9e077d904df65ab7b97edf92e9bd9bb6c08de65ab7a97ede95d36a6771f0c7af7419c771fa879f70198771f54f9ffab2e0052039a040c405d3d11b8b2aaa292729bb2acfd6702633abfb85717d7965616d61593d55203531573916a4aca6d461d80325080c000014f01989c98cc7b8eafff4c00989a9898984ccb2826dc25a62566252625e6a4aec894f4cc4890fe99171e396ac4a8eedb978ff65bc454c44cf44474086e691747c734a4c452a1ff6f9ac3520fff991908f1418298769881988098677ffcfcffb28f5c97693f58a6f1e61869b9cb6de5f9cf8667ad5d1d261626072f817b0746cceeefc912d47931ac2bf07480fee9acd035fe7f49b1d4c3e7b3c35ab94ba558eae1952e4e4a67e5ce011a8b1fd19d1b9beb4136e72417e9b1d4c3117251505c289bff2ee8e1ff33dd71771c9f138665685c8277c25d02a4ff27abbb042eae0429ffcf1b5fac2b018884121c8ef3a7e27f59992b81e9bf5337c04510f4fbcb1b9cf323d48b1e42fba2ff4c3e4efb9e63bcbb0bdabddb6d5fc0b5a59d1b01aa53ed59cbe77710eed6d876c27d6a4770da6f9fbe32b75f46e8f5aee797cf53b139afaeeb14ffea1c639b79b78759e04182ffa7da31d68eb165ee1a8db52b97cccebb6495ef92997982df8ef7d62fe0ff52465d165be33576382f8badf1e0b7e35133f465c0d2c16f0fdcd6f75c07bf746e9a0efc47f2569981ce6ed3329537de599a361430c069733b01039c7395cb2f734e21852dcd94b30cc49065f59f68d900ba8cb46c9a4349df71fe7f397816f6ff6b8b65d4daa6e09a3d525b944af93ce79a2dfb2158afb35dffcb1e4ca8ff9fbe5b76f7cfe7f39f09e79ff9e6ff9b2a5d671495ae3b85addc4cc776bc18d33531e3d2de1d03f474d2454e5b6d48327f88f8bd771d84f8988fd17e1b5c07714c37ffcc36ff4c36ffcc35ff4c354c34ffcc33ff4c334c32ffcc31ff4c31ff4cca7f66987f26987fe6977fa6977f66977f26977fe6967fa6967f66967f26967fe6957fa6957f66957f26957fe6947fa6947f66947f26947fe6937fa61326937fe6122b957cd041bf3f0a79817f785c4992356235fe5fda47e817adbb830a0ad6f545e902a1868084d143689f9489e4c8ff47975abc94fc3fdcbb615afeed595bf308361c6f7cb1bcbfd2deab11a45d2afd5f72856dfddf593e067718886060c606bfbdfe674ede2d90f2ff5aef2ec8e12e809f3fb7774ca5e5bec83bccc7f8f359bf554ed3f70477c1d6ffdfb46cff5341e5db7574a67b349ab57b5cdf485c057c76edbc1bbbab803f671af967166112f9670ef9670af96706f9670261fef867faf867f688e2f1cf941cf2cfdc4123434d57c70408102060c0fcca6def3a865f4e73a81d021c4ebba67b34606a7980928be0edda2960c04c6ff90c7572c1dc9ebafab85f6cfedf8673aba973ec7e4dbdf683b858c1dfffcf10cfdaecdbafcfc13ad72b86ebc5bda2dcaeec124d0733c707074d95969c6bc843f867e2b801008cab6cb9f5e46a1162b2f867aef867aaf867a640d1e313374d07ce8470af93df7fa6096a7c77e83fb34457a407ff99246cdaafcb5a98eefb678ef85f4a1061ff2f13b958852e961cb1b0bf485ab0c2fcb8577c5e847be5e45f50055d9df37ab7abce79d96cac2808cfb41c63f7a363ec7e30dc61186a33763faa9d37d3728c341f4d0f62e9daeeb6633e7a30efa6fd18bb1d4d0f3a13a570fc6ea7bceef05676da63db3b8cf7ebe0d67ef9b85391fa4eb7526ed73495db701f9b69ce9d761dbfd9421a90bfdd86659a91dfdaa91d33dabc33f6fb0dd442f91cf3be5877411e8d466b32b2c0779b4afe9d73cf6619e9998f91f53a5bd354b749c2d16d626178a6e502bbf505acf37ab769e0df8ee90201e5e94bb8956398f6ebd61790f60bbc69bf28b8ee8eb1a033fbf66b59b7be807cdbafb7acad769b903ba55d86e3c6b7afcb70dedd6da9fd7cda5c96dfad1c5bbb6cc361bccbef2dd8f8f639e1be1da3c6357ddbf1b5d77f5c4b15abd2ce4469f56fee7c556ec7f21bd3b49543b9131b77ab58187d63ef97bb0370fcbb03e07f27b5c1bb03ccfe9d73ee80a75931d01520b918dbb5f68ebbf5cdf63d62720500fe3fa3147e3b5ea7c68b751794ba02b2fee5abdd6b3bf7098ffba4049eb57415769fcc9eb61ece730394f9d75667b801403078378085e7cf313637c0981be0e99f3fc7f8734c3b7d3e6d9bf0eeb673903bed991eab69bb9a66b4e92b95d75a1a913b6d5b7bbff59bcdbe5c0b376840dbb19d55a4e92bef731ee7f4ed3669ff5fecdd26be7f04fc7e39b6dbf6eb3639709b18bcbded7bdb3b9eed6d57f4b3b77d8ff6dbf63d184afbb94c595ca6c3dff63d679e533ad352ce7867bb22b52ff22a9dc79d4ebbea804be1bc9edd0e6efb9e54b12bdaf1b553632c3dd3d4fe6ebbcda0a6e1ae755ff1a6eb4b8a6cb837c676cf645ec2f1ffcb10201e65b8f46489d1db3d86f3b6ceedfd3aef4429cd3828adc0bbad85eb975191fa4e9d732cc75746be18c7b21c63c7662d9d4a6e5fb01d68e3dbf77c0ef26e7f780a436988939ead796fad7d29d59400ffad737cf3b1bbb1cf91cd4925fe5f4a77d3b2a094db0ce2addc15695950caafd4fbc5521d399154e6c7a475b7bef3db27e5dba95f994768ff4c0f776327abce312ddbd17beef7dbe57edb6f149ee969f4ee36242590224072f0ff3d1092ecadb5ef5b6b5f4730163070fbffadfccfec20e0ad9114b3ec7bdbd8f86e8ae9f04d318edf14a3758afcff126dcf54c204f1cf4c5bbe58f4ff3efe9914f0781e53e9721be197714bb126a3fe6fe66c3b739a91dd345dc7d11e03fe3333d8bddbf57f66d60961143d6365450cf1b5cdca567dd0d760356adae13f738a76f8cf7cffbf8929fd5fd2e945fb85c4ffb7b5711d1bdfd16aafdb2cfca13662618a347f148bf2313b6cc1231f8b6ea7d12bb57ebb1d75c2797be3b596da040960ac69a8cdffc700988652dcf4cc9b18192abce72e0868d3d9c137ed3777db341ef4a6fddefba52bdccac11dd0fe8bc273b7ab7217745eef98912e8fa6c28c7d96e538b18eee6f4e311a95e5ce5821b1822cc763765f8cad334ddbdc86264a15691acf8ea9f30d776ebf807d84ef2df71a4bf31ed7f7dded44a9b402b7e3f7765a9d9d8f8dd5837567744a63fba5ce5a7a9e395d6719bb9fb40287e7d78e6db8a619e578863aefbee5f77dc7772cbf75c7f66bb62f5ae738c6f29793d156f9e54eeec7257443ee8cceb494cf6f97a9bc4fc9ee99a6da371cd7755fa4e9e82a635dbf54b8fac22f2d3be1296ddf73fcd6375de5807d817876b67745e7f3297da1fcced8bf9b7fb8ff332b4441f8dad631ff5f5e5158b6d9c1b3c3ffdfce13a3e74ffaca08a6ce19bbc3637370ddeb7e675ff88d56eb74d5a96ad281c49ff4cdc7f8738c3fe944fe926e329c4349c78cce817f2ed6b5dbae183607c6fff3fbe58abcb1cf4c42e604629863b6b4b4b3d8deda721ee5c8bf7c3334b434c63730afb1c3f3fb50df8c53a9575f1bee331dcfd92fa0ddbb5d3d1306d672fcda6dbb757e07edaef80e763b705b8de32dfcde7317843b1c09dfef2e779b70cebb1969be5bfb47fbbdf02bb7bdb3d8ba99d00e9ebb20616591ffdf46e1b9db6e20fcffa02cbf735bf8ed81808a549acf694b6519cab9b353e7b7c376b75fea365e845f380f10fa762c9f69b8d7f0f5a6a76174dc49df9dd169c37d7387dc2926cb6fccab313f0babe3ae1593da52bef8600d8d6ffb1e77da7695e6d8cec8ed5a4bdb5a3aaedf45be6e7deb973b6b7afee3dbe96be701429dbdee570ecb32dcdfbeb9c3aeadef9e28c5520fa51578358f4b6b7a4cfa7c4acb94b1d6ef754ec0953243f89880290b9a65e09ff1a00c8fce2ff58908e2a1936958850c8c03688564dcfe9f6bc9c7f0f9e7cf0000089b6386f45ee58401a606ad1839a5600a7a39701afc5f827d899162f75e0db02626c13d777b0a15d3d4a484cbfe9b6ac0f1ec4b8d32f6b9e90cf403a5bc847f26dc33ed67569d5c44119dcee26acce5d949cc9e6aed2b757e6b39a721524c5e8dbe986fff4cb7a70f6008d3b7add5fb6746f8673e21fc33db7e7c019c63b9308b1748ceae7d9776ff41ea9be653acb6a6dada2c5fa6b863731b5bbfbc2fd2d3bc0ed37e72743dae07393cbfcfe714abade7c4c8f15b95de5aacb4f745069d449730bb76d6f4fdd6fd8ed70862b2fd331f34b928696ee1d3dc9265aa2d7d34b548fd9a542cfc77199efb1ccb73bc4c73dc36322e6a6fbbce90a567ac2286f86aa580786858483828183801d0af8f6f4f0fefceae8e6e4e0e7ac94103b130060b14244000f675897b755da29a92729b972efdd24296abbff496b0307e1a9d9adc3f33ed7fc9c644fb679e99c173cb67f5af0c0ae7d94e26d998837fb8a6196dfb0584fb4dfb5def1710ab9db36b5bb305990de057ae6daddbaf1cfccac9755d47a56519facf14fb6732553bdf3f334cc08166151819a6445599faffafc1b433e71919b52f229902e65f9e92776bb1b5136bbf8cd4b74af694c2e5a5d16f4a5193d2f4fc19a50d7fd278fe8c62e1f9334a187f22e24f2852f8134a877ffe64f04d2880cf9f50b6fef9f3091ffe7c32e49f3f6ffe6c3e697bd2c49f4ecaf0e7fb4d27d2ff7732c69f4db4d8cd2625f8b3c2379b2460428889947ffe6c32195cd26109dca1f2d0dd9b298c5f260528e2944172aa190ae63028e38026a6ed90c6a3684c87665d143d22b2d06884057364411f8ba7aa568f2c69dc5caa0096f796a752cf06fb4d95561921cd1a544f02c04e8c00ea62db66924a425053cdc41d20ba58992288048c2d3e145279539e4c69ac591386451d2054aa7cf4d0b681d142eb88562bdb565128dd2d0f8feacc09c9336cd1e04ad81d3010b624c52962402030248516630c28b44a2e564e2a9575c2b88da87c8c16c9c0a5eeeaa2a034c267077547b31216218333390a714dde764f1a3be040301a11168014a3c1ea8a981a4a472c2e124512ebf898d166ea56aa020561d29dde1a434b366c6d179f744dbdec6101a96e4e800424264cd8954352754ca2fa462221b43d81e54522aeeec5a50592c591b5c4d142d38c90934995577c2e702d52424581324f0885c2476576a402f1e1c365111d9ee493105e9d8b144cbce8f0989ba460a17fc14ece9320472858907d8972480dad691b764cb13144e9620a86a3c0a7cf95d2c8529f22730ab0d028c0333d806f435e3cbad4f585664202b52cac4018b028c511ca6249068e0d8020149aca43a2c494183327d2d0dc2a32842625887222cb7566b8a7304673ea68449482b2a8dc4dc58034330035e8e2a949d69c28aa77cd629d4a5a0664a8039564819724aea905f565035c8307a325cb3e0958c4d7bab0e169cc93454cc2c30d2464f4843d559f33491e9435953567aa14d080f837433068e244b202e5901f7642208ee8f05b4e40080da68131208707ecd4e8c77f9562144473167464d0e00410400bc0ffe62130886820f754508a8c6bbae3feb798543abaa26cdc43d6a4862495ffaf6ad4e8058fa4f40916b1bb26948992d8b2b0fc3c223308c182e4ff7351c51275b1f0238b91298d5eab0f2418e1d0e3aa824d6ae0c43dc3a641158f255d1fa62522ada4cc19c65a30531a391ddc4868b65c0f94d8d623f7d661fa3e3820c10250579a1b82e03c3235c2f1137715640f989d181cd22322a4a43c790260ae6a82a5c94bc5a1124f4a12048a91844384209922d09c361dcef048f2f3e6ebb108833f655eae07b312587132f0b11462f9276eea08a328684c6a535034180b6346c2c86a9cdbc6c9e1849331c3e4d173d4210a111aa73e372eb2f854ea3904489584abf1498ab8433ed2166f5a5bb0563f4a35431170249b5db66c783a6c29365aa05665c54b57a4198e3e7159307ae02d027225a39ccb4cb77a13c24d83a18457dc63fdd4ffffffffffffbf6ba42a451779328b80c3487b6a2168f0b022a453c6e8ee8d213249d8742c816019c3e54030422244338236dc0020e2c301e7a31b610ac0221cce8405df6367c88384aa1213c7a9cd8ab03b6881b600fb6ed099b0f5f88767624993aa4b3ea8f0cb64d39b6696a8283c70c050144c5797151e5ebcaaa05c888cb86013e85114204114c7ac31d052d3e54ac6127cb44058443959e192a139bd033b0d78b2420c892d86a6b54824a8aacc780ba062aa484320432f22e618016935802c9097ad92246bcf9127416010ea8992b482c1113fdabeec19be1625b69e20a18270b6a486d49534b3bcf34410823d58592436705d926295f772863ee0c93977a260205993850d940a49b145305d8404284e4d9143820eb3e6ec29ad0d63102104c060019a20b63705cc15bd3831312201cf48893a439b826670eb81df15b292239a87b4a9370ed7393104737a98391ee164f9ea80c577474e70913c2507041d1d284381ee78495ab98010dd6535135449b9457e184a7981525423632cab0745059941458244b97ae23a7d99142545227c06e7270620dca5a7b004a32310fabef2b642f2f90352aa6f914a6f52481fe2c86e9b20419033579c8d8d1c866a2448a5c1b1c292a5f9d025f6e481eec8971570fe0c17de96ae871b0708e0184237b677df614ddfde183f5691503f2a09e16248430b0f273c3aaeece0ba5dbfb72693421b1089c1a30106ebe45e5164fd3838d0862e8434137d6c4a60c544d2e7f5848d1814635c71512a0020dbea8288c7ea03af4aa1470922fb9c81696c4aba1a8b0363407b535994c342c21681aa461d6c808f22d7a80934d5220d6a0fd456d5972f0ad6b4014650119f705873434d7345841b6cd03841134b574d7a0f0f2a55a2311f0034bb60f154d24145868e092b5af31bd88842b53cc4370037e0d84c3a6826f0b3f6a2119e236fc020f010806eef06d5ecc505d2a2c3387d5126df3caa0b1eb2c4086912c5acec000f0533b6372840018bc2f29426700357ec25ca86c9e5d512375385503459b97e7859eb73c17079c18e5e5658a12f1dfa18683477e109a12d5062d48942847123cb226c8a9ed65993482e5791293a12173e268afee0e061893f2a044285850212da9d3b497880180349646dcc8f829721471266bcb96182cf152ea90f8c2f22a946887fb0f8d9f2c0e9086decec448e07578a94bc48243380a0d2044b94b7427420bcca2c3866e1a9e043448aa41bb8c6f8210559a30c20f61049203af2a5b03791c455e24b804b2091f343b0049ca2ad13405d77dcdf5b11392dfaae18fc925c8181493d0d391b7182d2469a572e03194d55683566cd1b2032c72d21b62f0c348e916384ebca0833d3b63819facc7894a6b2528b4257c61d974825f1a76c83243d232e38565ab935016f2b319e4917a6dc60e0080b051701aa1f2d0685407c3eb82e132dda61c85d5068c49c34b4285ea6cb255bdb5ca32a254300b5b874a93f71f40015e134a868cb021b30281c2e49008bf3d5c2cf9d2067930a532326072e91d0867132a98c90a2c4aab0108bba5e5c8a0521f4803009909391169320657eda2ecd0d791a40e9a8e7b9a4f927a4cea13d3b4ee40170bac267064e42e5a3851b453a24e4397678b2e45f91a35560510f0c1b2278ae951c12945f6842d41f3186acd0e59921e00708469d872148f565058322a185383fb01e54a6e2a658b3303810e1d4a009e06b64ef5a03f0cf96a80f15d210c851e2be1138f0155d131967aa47a24b84d458a82ad3b7265094306b07b0c820e1000840932d0eefdd0f05539881515e7d071231b1488406471930335ef0b8a71870c14274b6a139109720bd359a50836506e80a284664a036f025477c9593755e906020c0a8344a90b741c2223c050c0ba590acb568e424ce832386fe40920340917155838b231bec4008440c3c1c9110f02342979634270704bde8f417bd3bac8c013da9360e6842110eaf3ec7af440d0e25fcae9cc2e0497a8e818440b00659ee609876056002f9068554a2030b8a3ca1dfd04972bda05911040aa145228d0d96743f28b6ac16996a4058080cc1cab5c42c52b23d5c8221fcf840aad95ec9707952d606c1823b88b6c4ef4c8f417938202e790381404e552009893d3eec058973c78c2bc51e4269b67cb0582300662732b2905202445b809a9a7e207858d0884c1685078933aadc265355344c9e6c93373c88ba30a23447468c39ad4753e294c16300718c912237f7f109a3e9d8268c177832b48265d551a8f891832a8e09b4b00303b046bc12e10c6530e045eb6fd00626ae1901547fd45614313041add95c5456b6a745c111251de234c00bdc4255484b9ad4a5a40c6b8bc7815b8e3543d624814853fc5878dea18a110c6c2efba28c90789c2a8bf4838c8ec436527a9269a62ae30a58112019b024a251de15575e535601a625774e386a6e6050dfb890e0465dd4dd873f0750e28c310447088facca3c05a610a77a1cfd887c2bb2428d8937450d3f2cbaca0d277d4efaa8d0440c9a72284b0f2f32453ef078bfa4143830a80e514c7242ea8e5e8b1f749cd06963d1282936d707e5ea0dd70328293d52764d0a29d3607c25f02ac007440b1a72685c49c71ce3b66258a92bd49ae7a5123b0eb86995b9ee4de17325e78e10930503183604c0b27cb83024b12b7046d863595d23093383e8a9a3c0db5da463db970385e2209e260a72c45964c24ac9082b1e4d86ec1a5cdd39040030abc88543480e1376626f9cecb01204e6478a11ae07405cb464e42c48b367566465c19b365660d3455270699488d8d24ba268a682724bd0a42470a042d009424dac504769c9d375ebf4fd112025e08fa52c4402570c7da99a018387948c6199b792e421bf231816b7deb662a45822cbe20829c001d8e117a96610b94b4a079d19932b145069c4a861ac2a2a80021a235e5c99b12489181337888fb4603c19b234a46db2928e2c465e2794689b6e226244c510c85d1fd2c0790105491e158a2092a02c92ef1620100125e507e29c2c439153602577878726ab815533d9c0283759b61d4363336290c9b2a8435c358d6ac01b554924ca150d70491049013968c9e28b44586050c1a41ca80a841ae11d4aa2b25a6e18389991e2092f924d066ecf99a914606332f0b8420fa8c096060b140e2e58491c40420d181b534611002f855ccc298a32a0c11906a682252d567337a63460609c8a8a1389c9234596b25c531ee2d8a8a3c2a28a6af47a72084b8104883d00bf9282178541190c7c281e6141961dc067492091148dbb0e1c3008f8b68f55a7331d84305e6d7041e5f768d26bc61c0e253e7035835d3a1ed8e8f1640603c835510c3d8800202205a6870359b2a111890f0d3d8010f171c26a908d2168b8ec54c9e1a380e26faa80cce5c78320b30f218ec83b199c60710e90709544b1c98386d0831c1441acb80943e4899505aa2739730df44c7046ca0420c000e34acbda8b62d3c8461f473512500122357025209a0585d87640234bdb5cbd4ca2528586d009200a66e461badb0af8e0e849640bc49f237e73a5387458867b7b9a88116caec9969900e08290312c2a59cc80896daaee0a5cea7650265c492b9396c7479ba705278d04381a543f631db2c46d25bab8d1b47e6040c20b8e9e9386b144938a061e545ba64bae7fa008acf112034395589609adb32a895db89a1561b454bcdc68f23a88ba44955583d187486e446050c903b855850a4ece1b97c14714146c2205aaf10381a0ac1591912257140032534282dfc0189fa81a5937241d86f9d3df6ec07578723b3095e595836428521e38154c283e604f0aeb108417511a48415c6126d76248813a6fa2d640500a746cc206c98ed80d014f03844cc9f19964c592027844e5644946cf002096a08e67dc1d2901ee395f4cb8adc81f5e434450aab10a2220b01948ce8c0f2766a4c408e6f88024cc17367b6762b48c98f057558684d843611b058fcb929b99903e715d825c04d93abb5290a500928c9b1a3b9152813784a8d191c4cacc70dee1c4e420eb8a815c0b304e14e850c2ead98501d1284fd799d4033612896044288103ce165e84e8da995cea71e2881290b56980bd3b575756320c9915a66a55ce7ca062a2abd20e179706425c143db708e2822076504d1103888bb523bd81a7a04d29fcaac2adea90b07a4a03a9efed0f07ab91226280b8da04da2203e08154c51b85ca80e164aa400f41d3d21e28a5430b734a58da4274c5d0afb06a030e57c37cbb8a6f3fc6081df91ab4d5356795a5d7b4723260a08d011c0cd5a68b4086b2b31e122a65d8dcd51fb90e548f7e602860a20e22252a688277bea4b8965645081693834a3400c202a8329021a0a658631d878c13437d1918278c98509988caae641109d7430c8f19370afef8e13b9295a64cdaeda7e70471a947bf77eec089e2c241324c8921255124cf88c8e160d09fa9455e25d0ea34b0d0c7049341d3a29f3c59657f3048807133ea1a24a7e40b0cc91a5189887a58ad88b97a2128008986473ed229ad4c666964d205290cca646559e06ac47211a612972a490faa6759b8e4a204955e8fb695d07048e972098b139098324304a4244dc249e0b1c89143659d0990571885b98a64d887e64416d1ab0c0c2075c83244f2623bf235872d405bb34c4133d8788651ea4319b53109187c917cd3e60b06190f03aea81ca0948e9c451160408c58244b6f5fd763d4d500674302321322dc8d909124a50c54515461f5abbce47e0923e367a5c94a4d03bbec16b01458de2cd696c01401707db9e11448a4586648c5e0812b460080716fc4019eaaf4546a743568a2f2c41e1c5672737863b66e5ca92fc4937c64384070b96db228f9e03279c65193551402930fd78197c83a7e102797885c56dc00d1c3ae0aca9327545144564b25696872f009385b30158c4214425b5cb624585a53e9c88a26962b8d1a992c6a116982904b7376526cab9cd8baf28e9245c620cd4b53956533b4a83ca1493103070c2a163236c82150e5b13958e7218a9d2d74546cb11cc0bb2374521129d4a3a0b216540287ec45166283ad96d4a48d247c50807240b53dc273486b1545680fcf111626264cc3f6d8201483481915830b70e02c520442a5c996072155a41cb3323c6071c0cc8e8558744f8f261138885123b860c51bc6b0b6730cd5ed0d60d03635a4ded1a54e142f3881812a739459e284b586c59d133709fe9cb1fee0ab9350e72e0a418d146a00b045e57930498cdc09e29b1ae38008805d08375871902ac8c0e273078b6d0721271a0b06445b3ca835485eb0f21241e2cf135c598a47da1007b24a68734835b911f50575a46411a94d6463e47db8920c1cdb908db1e04b108d8332546eece9a2ac46d151800a4d640817475902c9cd917a8b43e3128691883102b672d81289117355205282bd4d24c40d051cc02f86dc22741d70f207783837092039033f8ac9e8b962d22c71c1463746485fdca5ac1e5e50568f74751c7da1aa3481b780cba317640d578542aa7bb1c22390eb93153572008e7011a9cc5cc54422fbf366d87266e060d5a10a715c28316e5f0866de5c997e026d19418b5a542586e19412d03e3926491f4d4197f46810be15b2691496264f8eae5ad5b370c1614831594291dd54c1859b0e5a979c7c5600287b63a4ecc0979af1c49d2607483f385ddefc8ca914cfb19e805286ea8e851e2b181990425af11208c5c21cb40cd3c8a02d899292c341a3aa1aca2b3a9a551d2e5c4252c49e46d84ae7b816415059e08b596c10463dc7184a11e4d326415693301874074183798f85825ced08188b4a12c9c217252eee2386a64a2c4f7cb13235e75193475b519a71e21a459685181d64b98d2419ede153f9e7e5a73e5cdb348ada8b13a206140d20919c0e05d47810913575014d9f2c8103c2cc137814803c7ea4588b20ee942d50b1cdeb739d0a40210ac9ab4d824a4988ccdee0b8c0054b80d92347527c663859a8ec1ab1a50a843f20586c48baaa63250c230241c2ea06017cb07042a57851398894088a0593154e4ca4a823ad5920858df0f88008169a1a666e1e85a183e0f00aef44053a41e91c074802da296cc69c5d142615515ddb06a316fc04c3ee1e4170214d5af5bd08d4aad450b228d298a4105650de70f129f25250072eb3478d101470fd48c1e7fa270cb3f304906b8577b33b020ed496483a2f07b5aa3350424240acc256b8191a496def2cb73ca831623db3a568c90ca8faf0b0700bb5875d15748b6b85c4521c8091ed419b9d3a453381b0aa72d8c0c294470880290c5525982dd4e856dd121b42ab881d9d94397c8d19acb0358d703e750b3d45418b4c1c207347d5a38a2a10178bb51c4e7d94280a62b99a4340eb06155ec4d484b7636b44d8911d4d334d689797551e3d47a819d8c491412872aa163d481d39150eadf8e1a109f3a30e5056a32c513100153907bd7398a6a8309c46c5998121317046a22057981e4148853aa80e54a26324e44d4d081f3b0b9023b92e4b90928c3335053ca8a9c3228f0fb500855137649d3b6042d42068b02de4f421644cb5c841583868c217c54657d7bb0e40aa6041692a321964c103308a2e7c4094a26910d5e422c8c89f377adc0c353419e978d030559506a4308f193964b0886edcb0e111074b4bcb8a491bd0091bf094ecede19df8f39a2a6162a8450d903a72e85ce8ca9adc23950309bd080744802243c45059936612ea4a441681c1153ec4c408a4244622c49b665710e90a31267c552409a99216a85aa0528a01a5433907e8468f43dc7c863b944e568926d1512ff614cd6133206e852195005c861cf5da48e93ae4224c99344b0a0d31e13e29307b59244558c50a1e26ad66a2d06afa7762b10c8e830693574c0496468c703df760a5aa9c596b64d8c564864b550c97ee4c823142699e29853517690dbfaeaacae511360c53b2184c1ea82165e101640bc5872b117556e99219527f500e9d806abe39fb13dc93e2982dc9cd358450f2aaf82af908eb6aeb72024b802abb4108e668e17923a048011846586c89397080105ad39417306034c471e805d69ab05a9d305185295b424806626e04e962d016288f26adb649398a34f2d16342e75190252e04d4359972c89d40b1024992315994ce497564a8e842bc2073d6142a58e1e1f8a462059715034814488e50881419110347cc358781a81c245c4ce2cb2b9c61e40203c83cd3b0292f8118a97855987c93b1b62411910a132c4708dc0c118236836f52172e274ac4a251102abb892b071d915c888a220d61cd99c2dbb33488cb8e116a0994d06b62928158142e580ad2e4ceba858c0e0ae6fd64f552e2080ba0140bba642b78a44b734007a933361e28723b20066a501bbe1a8282445e7189f382848c5495c02062a25a3aa05a97a2348de440c229c200504314251b7e40a50cb9d418b242088643177d8167fe1610b9226b12e732994067080a1e211ef42012ec82c0a3ac2ef491d100a6a1665a61f2eaee713200eac61fa49c0d773ed4d9ee6db1c2c1a3800b39048913ba665061bcd1b1840b84983f286b26d58054dfdc1c0d8c4874eb44356be68c48fe89faa92b83674bb2826a6467d74686892fb63b6f2450888cb4b586c90c3826ac388845bc3173e06c8dcd654aa2e34f21d58daf4541f0886dd8325715e2c6081e0e6e2c05652369a4d9c9f0624b01976bdea2072ebd80132c719506203567d4f04026a889c58101224780445056a1aac421cf168e11b593a8905a0f214f415a8f77e2bcb942254a2592ab07321304fc683a09005a500983891fb2e5042f374800aaed0a3d662920dcd921050aa4fae6af44d61b4536ac24c133241124104a8b0a0418a2c03c927c5248c503276116e5b51d3e009b82f4a4c49e2ba2106f24445a23e63923590ff40cda9a1b03e2d828835d05b4911135ed5b9388c8a43f328ab9181e9c12d89972cc7387840aab460d1b5c46a0ff7fb08686176d347b3edd1888dc1816dc187318dc3409424334a6820338cbb4aba241517f9024aafd51f0ff7e84fc18319461c07c1f457d1089399dce30feff84ffccffaf0b046c5b1314e463a7d77f6a0fb4f64dcbf64dcb827cd4f6f08866b3eff309e16c6d0dadb6a3d9bf3d4f76edbce3691bda59d4d6eae9f0ff01a47ac4fe9d0aac737cbda375cfb6a19d113e51c913fdffe793d774350f8d8f61bb7646cbec379ab55d178f92b76b271d67f967c272e5dfeff5abce3159b5abbf7b27cdff770e79ca2c1231885292c3a4062fb7c93b8dc322659f310822c538c83d27cc1fe250e160a081169f2616911bde0ceed94a53cbd9d0a3c89f5e5c053d1bb075f68afc0ba60d6c7cdc4abc16c706a6ad4a106a3c5202790606a505b1147c9034189d947cbd0d80a4ba50d4923523026419e064353211a4c748060aa5d88cc23c7a1960044c97066d8f914f2614d10c4a7a441422677745c2d16302116774383a4535205224b064521b9f062a747740385061a74104931fa689b7351a00d10c5a7bce98a321cb4fddd723c40b8e7d4434698ddd71705cc2f6e01181dc1d35a038216d3b423bda0988d081cc308563539252f5c464764b472dcc0046c7be6d90c81d115c50be6d6b037c654324cfb66e7aa438dc691fb601b4e4ca5870b46c5cf3b896d5bb606dccf1a244932266401aad449e62838ba434a215a2fc8ae21289d1525e9cda1f1d1618299f35ba10daa084f1c5740ac715b4058c51a641b24920b28c6168165194e1a0b0b8288e831e2920a916b36cb983c1f1adb268c2dac710a55fd9e2a060d7a1245c8a452eb7e1089fa54aad20a64a7aa6c624d23a4163c98ff1498bb643904ec005d6aad5f3d1e60e6012025aaabf3a1cec2c6e779e024bd0b85ca2de46ee3c08524343c7ad5d7386f076bcbaa1da0c751c514edd040e6dc9300c32c2ae3cdc63641bd864f3c003052ccc9dc6966d5c69aa073dd80ff498a5a9b068c666faa9b01fa3046a337a1a06493a3352cf98c59880c1c8443dcd1280c79ca3363599a5fac68e4482191e59e25285a5824e862e686a761cdfecc9b0020a954a2d1015331cba283b834e1566403044c196afd3cc1eb2e91b6a300265a7882da0ea5264301b820fa2c351622e0b98c5ea62a503a5050e341f1c32cc60abcad04a20eb322470df68c7e9d313271030e83aad6703451c8b74941e1886ac408ecd739abe2025bd77662038fecc98e481c39c412ff00e256b8d394291ae34b29ac5ecf4b584cb092e05b06ab2581c8355555cecf183ad12312246ee6f1016edabf079c34620576222888424854d0e0346761149c5465b183572a293c42e2b0a7c901974d9f080c0db9ae22226990b34dc40118b6209420e67688a5514051969300a2b3453c40068d0b24d848a01189a1c522363fbf18481431f8e87e86463c8c330152391a32c2c10e319447195a4ab8c8bf03b06cc3c13c5f79fab376fa614e23829782627fd92c403b6581d8fe82db9bab18a9874c50d852b0f2f1d534b747857c5ebdaa0a7b13130de5c9725d8183e314a59cb407525129260905546062614087199b0be8c562441a0d7c63a4605b20f00ba115547936608c290a3adca657ac750152591aa2a305ce213f5c0a26a58a20c1426670a54c1d854426241e0ad1bf2c2426143e3dba56075aab348803a88bb10518cc210ea7e70d8f80dda53fdea8816ce1c8b3978cf9547781e14780027918158b582a710ded64d059a356984e9e0a8b1b54762d71dd438780a0fe5e22c517f3469b4bb6145a36659bc504c22620bf5c921b0ae4f0f3454006843d8040102324d33bd01d675a9cfb79976277d6a847822d3b37712259b474dd40abc609e73632c2c54be2d28d7ae48806c7c2d307a177069a380a6d445aa686d3104e20ca6f48a9484dfa493048325d2402085287604329272b931ac2313a550f44f9d3b8a02a289a24dacfa1c7a366110dd90c2c755e2a03a8a97fdb0e563a542f4c21d3cc2aa3f861c2e10712ad238c52d73e1064048269d537921ee820049ac939ed74d6cd3c1b0ed49963651b23a499688c44b2286373c7831f86013d50c139f4c76cd9ebdb530e64e962037b08285181cf0aa40e73c5a78d124639cc933b3e0a0af8223260b80a0f0b70a5b70e8097af133a3420ab2b9291106a4a85058018c022139530015c874508842a5c5f6986003850f6814fa2858f520e4654a5202a21e4424888d88735b10a1d60ee11cfa38a40f21281e361d324c93c2b0061e43b883a159a1a4c22f7a66776060582a6c5158c12d5450c6d2db1a1c28c2445932b003290984550847041ea223bdea413861cea2aa2676800807fdd0b99a2331b230c824ef8802185d20072107efae289e40e05330e85211901826db2558c791760aa7095550c89fa05d40100e490a248ade23824f0902d97005ee088c03d5027f8218c70930282748b1131a5458420140a801b011a016c013514042c0af1a7f83fea054fd79f8e3fbf3d3e33759c08ff1cd4f0ef633d0f7a6af47dfdcd7f6c7144842a4467d4c754ca2fab6e043c3a50592c5a1c547838fca57b61769cf8bd45e24913d0ad0bd0467f410e951d113a137410beacb06d8865e5e1f3b6f8985bcc73cbb3c3e3c3a5bbc202f5efd07ef0d085e80bb35773aeeae7beed2ec2cd951dabdb0b28bda8909aa6354a7a5ce04b36e70ad8ea3683016c66c412788ee095d07ba3dbab93c7346e616e7a07305e42ae57ac861b360f4f87f3936bc4540ff2fc7948cf2ff879a31d3a133de848052dd345067880e719030c4752911c7222e0e312e8104446fe1b575553bdf53ed237a3c9fe6b5bc92978cfc0e9f7de9037edc9b3dffa8ff3ff0506fe00b3c811ff002fee903bcd303f8a6677ae62fff9957662153c033992e2d252d8f00f9a5641a6ed74ef8ed35f300012673d223178dfcda19cd201abaff97a249f0689cce40faffecf63ed3e6cc182e67acfcbf187f8ef1e758987ba6c699c819ab95692ae7f7cb67bab65f2c966eec576ea5eb9996c5aa734c56e680d734f77bfdf84d5bc338b7fb4d6b33f06d57dc764531bb333333ad053233333333ad8530ebfcd65230c8c431e9534aed18a6349fdffacddafdd5ddf8179bc3b6f55bbf576ad48e9d55b943396591011c83c64a957f262aff4c53a4fc3f5a9ad6ccf9ff3ff64eef8a91ff69904b7948ed0cadc375bfe737aeb1dab9675f2c639fef78d6fe7f807729afcf29f99efad6ef954a3926a58caabbb5df731ce6921bc69154ba7debfae52fd3927f2625ffdfe486098bf23f05c6fe483005defacb09bb765eef375bb6bded407ebddf2c671af27cfe33094150df45f902d0c5f5f2d80590cba504ed6e59e434bb7232c08fd0dc6360639eb359fa03449454970875210eaa96ac03a3c33ec0ab1c2f1d5f405c0903a004de19412d1a9ac87184b5a7e6c199dc840d4060314d86980648536e422ea840c4744216e0c042e35799a42833117de01071cc56da80299166a5a0c4fae3c6a39205324849859afaaa9179e2a6a454f283f3ae589a1a3ef81168c0c347bda80407f069a96b35420271bfb151cd1a315dd4a4c58c27078cb4ac194cd1e08daaed4fccc2ddc8a630d10a55444015382a129c427b22a5449a7c02eb2f1e53285a6215aadafe2ca1403809025c43d364484525099da4402b1c9ab62af605090f269b53056928a184d024486334e273e90222ad346e1ee2e26da04b7fe8501b3264b2aae2ccac552a610c751b88298ab8f5d0d02cb348c420ca1d8904e5c9f33658c94fcc96062fb7c93b6dcb08d3725215279fbb8ab2cf180491617bac30ad946264e16ae03e27cc1fe250f913736304b5c825bd125c0db4f834b188e43004d21b00763a9d01abc13d5b69ea3897a848279b9608c2f1c62df2a71757214f8dd70f22a62d2520b75c75f68afc0b260b2602583b701888b1c28a8f5b89d7de0082e3290fdfe39b2270a4b62a41a8f12849142501b27ccc700f4975c1a0b42096820f11ebc72339c1a02baf2b4627255f6f02f0e401fc8288ab041e2c29178a5ab26644c8ea93c3b6488f8d1f472fc0c96a6422480daac41675d9f17ad300cb40a1149b119812cd2a617d3670b8333835c008982e0dda64399478141a55beb9a827138a680623214a629635b61d947d802544ceee8a84a3be3e585d1c2d18f173654ac4191d8e4e177e44b94313a3ead0a031518a04964c6adb8312c9494291c62c87dc64d1dd01e140455da215d95e47c5253f60544c7e9826ded4ac20a0a24befcda5417e516806ad3d67c88123e06d899b6d0d1304b2fcd47d3d42bcb0405bf6e15058a3212e958826adb1bb0d221aa4b866117c34654893edc12302b9b311bef11a0722bd825a284e48db8ecc580c51aa8561b1607a550988d081cc1005194510ba08de01b9c1d794a4543d3149575678e3037288c7b72db53003181df94e384003c5612a0099b32a72470417946f110a25c095890270058b6b80af6c88a41925ba4b3d5b400d4c634b8f14873bcdc30b1e347af0e5f90b40c14a4bae8c05474bb93f47fc7cfca9653cf7712dab77c17a9d62586f4d092b94e47a51a24911332077852c5b92b6c849906645e42936b8284a645e574279632a5017b710e55714974871cf285a241fa3aa30bbf2e2d4fee8a850e3510aab75ec4f8b1c57cf1a5d086d488224ea4304210484ee0d52d3291c57d01628c0fad35108024124ecc53448360944364205263210a959d381c7159a4514653810c55485356a1132c74696541c073d52404e49da1911e647e4e151796db983c1f1a562a3d28f0c36b2da38302c6b1f43947e4e3d308815540bbca4f94d09761d4ac2a1000418c331063e6091214a6ec3113e4b958236893e06fd2261451653253d536310891001643ef2e0a92b994263c98ff1490b06351314185ec0762d880ad209b8c056abc81132c15d8288cfa02c1f6dee00261900a60110bf107f7fda4c52fdd5e1606789a0a64a949ac9f6aa53d82cb0048dcb252a54d917466858f02d71b5ee3c085243430724961b953e4ca6fc4050ad3943783b5ec153663142ac5804f2a0a9cd50c711a51488390acd07702e086aa175684b866110113ad6883d49a0022ef2a1ea708f916d60130728125eb8de0481319b78a08085b9d374201062259606012db76c5c69aa073bf4e0d148fba7d26090b84a8f599a0a8b66fcfe3c6a31029e9332e8faa9b01fa303808c880ad10105c78b452e3d0d83249d15e991ad51e02c0199942b56b31813301895f0b0e8880f0a200cc15872b304e031e788cd0d31c3277a98933bceb82cd53776240a6c31278b8938071e4b50ac2c71a9c2523147889e4b3cbef6b2fa052934353b8e6ff4107a52a3cf891b15579f2e28542ab540549c22e4425568cc908c08572ecacea0538444eca8d93134544047496a88822d5fa739b8a44b1f77922b8d182f9bbea1060310890f6c9eb8f0943959c4125b40d5a588e08e1b749c36f02972e4658a0fa2c35142ce4f559e0e32592e51a6a82cc2349010d074353efbd02aae7c4c585dac74a0b4b061c6022f3df8a8ec493553386498c1569199f4627a22a008174442a220eb322470dd4c30891379105eb58cc89a3e3d710201e300883962986050b501545acf068a38166b347b02a8015213e311a50786212b900e581478b2237144e4979f56d317a4a4f7cede5d094b94067458cba3c2f167c6240f1c68194b434c8f6fc0a3a917788792b5860244864766ad34c23ead225d6964f50a1f590af4e47de932b4a7ea6b0997135c083c4112e24980347d50006a3a59b116e10ced05458ec41d7226b851d91aacaae2628f9f00759431ca447a90d4a58a881131727f832034493256ca59c688ddafc2e70d1b0c065393172ede926e908b89201292143641085e13a0c4b92139c24a2d501c98485fe8903111f2c5518f9f356e24151b6d61d43c26aa300503e513115a2e27895d5614f8f07e18ab60c7c0a10886acba6c7840e06d2deb8c893d570414884121c5247381861b688033ffd9d11366015d18ec54e2e05424aa45c98637571ff2865c1172384353acc2c10ce225d771d9668414230d4661856535324c9581a25c2eaef152b0654410447c614e0c49e9c5b99108f06ad0b24d840a01541a1c1ea0a71eb718903aa446c6f62300e5179e028775cc6c64bdfa703c44a73a0e9a327856389d34f0c30a81c5c65191c55490b70e19b0382a0137152391a32c2c1015c2d253b8e440122d6a10c55592aed2ce41e3f1ca80f95991c5ef1830f3442485d282aa1c3c6c6ff4a6fe5cbd7933a540264384175587b1c9085152f04c4efa213961274d9f226510991093b5c5ea78444f899d333f373a0d598b5054561193aeb8a1b047e14725a61848bcc0697ae9985aa2c373c3035109076316263c5a7d0c5ba5a701b2383665d22c349cd2a8063d8d8d81f1c6d07a00310b0d4f93a3660936864f8cee64607d04090bac1c2db6a0ba12094920e808609447bd0d2ca61faa3230a14088abc4892091cc22d0a89fac3519ad4882408f4d0f2f322d6547c2221f6d5181ec03804e449a333d66b0a80c38c952356986200c39d8e26cf9f076a44886c4ee4eef18aaa2249286a59aa50425282ce9e2c270894fd4030b076b5f3224e5347052c9aa4419284cce14008bfc63a4499e2a5d2ab96c2a21b120e006c82664c28213190fe02e2f2c143634be36a12343600c2238f1bcc2ea546791feb04074a2d0dce2873693a4ee4244310a43c85ee0e6048e0b68a2c474c161e337684b0dca4058e4c5183e7f865c1dd1c299633107b6a54938f714c58b8ad49547781e14587b62853699d8281f0c2f1988552b78080f11b8e187018f862309acbaa940b3268c8ae824190c496e27ed98629bbb1771015321458a0a0afa9c533f51636b8fc4ae3a92f8f0f1c8f5e6f0af0b0b4fe1a15c5ca53e6b768c5142a165c38ca9268d7637ac672186703034a3cda0b9512c5e282611b1e54121b4c90559de5490cbe21058d7a7c7192c7813a432a0297290830a6d089b204040ba9310392d8d5698d08b6a24183dc44300aef1badab84080c7931658d7a53ecfc609887e3730736fc45139e95323c413495c13d46570911c9599666208c7344f02d24b15348c624b2303b428d93c6aa246801236d25ea2396b7618ab9e73632c2c545251905556a0f2b224529372ed8a04c8c6bf1e289a7a18d3ac906ed9269c64262d6292c3c85f9a2c4eac96555cda28a0297169a477c83650159b5cba6b8b2110673013dda4b03040ca57a1950bccf0199628c7f4905da4225ad60c0958f94d3a493058a2a56887132c2df18e9b0ba410c58e4046551598a0f063b181cf8ccb8d611d99288410b98852a7c7c16cfbc7aace1d450151445ab4510c3c2e214ef292b2ea73e8d984c127f631f4e7928632beae143eae120765b05156b957800ca4bd2357d90f5b3e5628e4c962a747d60799004329156b4e401949b22ef5f1d3f2e104f68e171e61d51fc30d2d6acc7cac6c737a2e613915699ce2921172441160a00b1c4f684c01202493cea9f4c252c1d6ca553d3a12d54497a0efd1081f8d3cb10637ea5c24c292c43ae979dda90573b45190e8091ea63a18b63dc9bae90cd2e3c5c08b1450b5a8ea245922922e7b0e01c2f186c8db3fca7ac38317838fbcc34f9c244543de1b09a62cf539d9012cf433c14c8c1585b2f4808822935db367374a8166a0ab0df19e3cc8ba9325c80da4a0e5fae40988424889422a0e7855a0733498e19193ec1e84b06e134d32c699bcb2377d7162c4fe109cd06a855003db33840f059233504336ec983354c564011014fee686020e812996faa049d4c4a127e8c5cf0caa0f293718640615d8b245363725c200146b748820a372c78e239aaa1338609445f001d587cd90b2c9d55482fb04397748e9430d1849caa9d111adbe25670aa002590e104eb648210086c4859b159516db63820dcc474be913201443cc5c46bc48665c67372099f1831d51c91770a110d2088bf22fcae8d1879e0c8535de58f520e4654a5202074763b69e3068d420e502ba1217c12a538d3e553d0a044349a70b5a766091c5912c8d02895044f971bfb852530004529d68019e01142ac740446aa52c081a4416a665909f3949f3ca03030eba26351bf1a06a933ef8ecfdc5408047774529078ca45a03045000dd2414f920c926c5464f5b07b12a7f5f0a50ba54e54693a8d79498d1cb7de19b35383ba4485d96b0deafc85fc3e003450c2c512449fbd098ea7362a7251a0ae4c64806ccfba74b2a0a4eac119725280a898944abf943e8ea0056a503877200baa3870e173e10052617f14d8db1175815e20048c98decb51211171f513c1a49914a5015d4f28858a851cb0d285938ac204a79be059a79d1856ac5474240a56776070646a5396f885ced104893f4a1f9b460c79a283255765f7c490f16936e68c5bd9501e1d7bcf2b63413a809cb850baa3296ded6e0409955ba4180a799d2ca35b364600752702a662471cb8a8b4a3ca3f5c7089bc6ae318f0afa8c392ae387126455e0213ad22b1e9406715d71f12642c698e69c45554decfe542ac167c6903336236eb65e749d9092c12e8362b3d81e144d96a8a2733547626441819944ddd1720522ac9b7744018c2e8f83083008e1e50c814527b8e490f420b1c3496707088fe71ebb4046ab2b8a2710f81430f599d047f944cd1c172e15018961b25c38a2dc704f075079725c8eb453384da6300ea75412b30329c764052911d0110b7e75a4c254aa7205aba19122b32a64084980cf013667d36da02e71ba90a440a2e89d94c49a0028070b3a328b2b143eb284f92168727753b10a9287a896ea11a84f81b3c5424e7c27450458b4c24bf1800031c4307b7862c4534f05a4f0c102abb154904010d08191c41c041f61b8a6b4566071260af3343326af8581d2c627aa8a0099c32d72d90013881c38399042c1b272c7c896b52d9f3a443ad0551a3183686a0656a15a833082f40c3d9b8b800083a8c63ccd2e8472153a41194873fedcbcb22a2ca1002074fcb281c71d23175752342a2a1b909ae8a66c343c3825428f606d89b243f5e2410eade811350056d62b48d4b2281d9a8068d2854b1a46cc01a51da854d228d6a11c740ccd8800000000004001f31000303824188c05c3e1a0844a6a26001480015fa866a45a9d4bd4308e510c214390013200000000002018491410c6abd1df9060d92e8f9f02433616a4ebff406be17bf6d8d1d32ee546ce2d906a5c7fe6abe095fb9d0691e7e941fe770a0bcbe3a64164eb24abec7cf5b002efc952b0085ab5bdbab0deeb11b8f86cbba36d8224c0760baee1f21e7bd285e27f184f30832084cad528d27196919edfcd60bc54dc658c2a0357906dacaed7bb677bb7ead3d20cccc52eada6a59b8d2d4674abcb06193ada62c334556bc0a73c911d0e47d7189111d15cbf9b73f7c6589f7621de2b75a8de6ea348ad065810c75dcc9e08bd4ec5c79e7cdc8c91856d3117bd42b7fa80d9b357aebf9833535a1f904e5ba59503ba29b59bb9136484d6c9b51723c1b67a8f89d94d6df80dd9d8b1bf56b98c458701f3fb37550a72adcbacbb526a55bd2513a18521bb4dfe0142ceada8c566ffc4d72484a03f3931de9fa618f70b8b5d7fb5c5ca2fe88b9dbe4668acf3457cccfa34c8c45f19b2f3972233ff5423637d55c99a5fca64df9f3c99efaf5156ea94e513a132b8565977c4ca6ab9325eaf2c132ceb15cb8a92659b6619205aa6572d7b64cb1addb2847019af5c66235d16b5cb722e5e46cb97f9b27e19f897307b7f2a66e7af909959cc8c1d35b39d9ed92a68d6289a4d24cd80a6d95ad4cc5435a3c89a9da06b762a9b21d266426db3206e16a66ee6e4cde2fa669fc019a27056489c111a673191b392ca59237346e99cb585ce84d2995e2a7546ca9de17a676bc1b3a27826933cf334cf5a44cf5ad5334bf68cd23d8b50f8ac2b7dc6d13e63c4cf1ef533247fa6a47f0609a06914d05409b48306da2e8236a9a0e13268101d344f08cd5742d3a4d0782d34a3185aa386e6c9a1e97a680841341415d17c4d345e142d52456364d17e5db49e30da5246d3a5d1c8da68451c8da58ef608e4d162e21bca3eb46ba867230de863fadda4b2bd0ed8a68ff59a6b4dd492c6d1cdff76b7ec10df7f2f1d6c65997903647aa723195b52fe0eb992f3d7548f5ec740c2f7f38d1b31f98725cb03bbc2674e92d0edd3cce783cff4e6bffd8399513004f4e0a44ec3f06d2d073739c862b7136f08e6908b107ac5b84cf0b6423cc4dcb1227dd8402cc551e303625224130634a522732127e61fff77e3860399c3ed00eedea397a4e745754b293e2a511974ae046cbce5e6abdf5c059ca2bbb40c7d9826cdb3f3906d690ee128c7d3b94380610f51c0e224bb44f0c812cc5804bb094e1d13e43905170fa2a5b0b5537b875b189bccaf682c12ce060b0dfd004f4362ab907f23be186f5926e28b3e6dc1c005d64307481a17aab12050f1735721e04e5d03a2e9f310f872865dae39e0a81856ff2beb2fea393202ef83bfd1b8865b937b273d36618adfbacd8009ae9a435cebda7193b31b2caee7e4efcb6a57f1c135aafee1ca4c93f6cb3254d688c1dc5a4cc543c9d0519567c1387f97f926201fe0f80dbfff516fda5df6814a2e53fb5a8a45ee2bdd7a4f9324de5f9836e4d67d96d6fc1f35cf405ea4a20d30b06d5604d74d420bd0ca220df92a0145a99991a10190607c54c5b04486fa6cc16237f056c22687787052422f22e481071e605b20fc17ae88bacd3fc6ff744bc4bc5cb408d4061db6a86bfd77ef836a7fdb4bdabe5344cbffd3cdccfe7195b0d1d197049a6f5ee7eaaa4ee144fc531cc53ea2cb83760c66bed4f53218fae8620f70b0c24b469006c0ea0fb9936e9f17450febcba27ceddd6a51fafb1132df49e220d79439f2bf92e0fea70e26b9a68252acaed144ea7fab65341e70b887ef77de230c9a1f5681ffbcfbf059a9a9cb3fa253e254c597cf6b2e030f548b35ac93f0bddbcdf948375e963731ba6377900bd2d299740596fff025edb5ed2b3d77183e8f61dbf0e44b37ca4dd265de4d7a6f734a8bae6896d674f4a22b86dcc1f6939cc0b1752e9b8c3406b50d9daed8c8a0a0b89cabebc1ef6231a50ef24f00f903402fa2f7d29bdd5cb7d2cde426e30674e3ac3ecb20d3512afb66a2fc0f24b0423fbe31f19996bcf39de40d0a41641f9e05723755fdd424a72635debfcca2ae6756635798ce8ad4a3bcaa8c25e1e8876963f1f0297947b48443e51640fd9bcd0dd69ea1fad4e9da5e59cc22b75b96000cf41356711ec9564ea06e9caaa1e5add960a91ebbf18348d7ffe97592ce4e351e015031bbbf1188feb0f6657dc9e98fb18e7a3fe02de5a2cdd0438c20f66b8f8ee64643ef81c8a04169c98aa2d016f8bc41645070e2da47d2ae438a2ecbbea584608994bb1b2e70c31182ee3b3eb52a96a37271fb31eea61be71683a41ab2576b8c08e7e2b463cb769e4ea17930146a6587106d149bc2a557a90690c13471b4f5eb03a2424acc2aa04956543384113798bd533b430920be98a18402d2f5d5bb783dbf1f1ad3f742c04361fd42843753dfef9451675ca6714fca59ce6cba00d27d6b00d1690c87b2d62e049a1e29bca14dc56fef13d1fee8e77f8252ec15650134a8f4ffed6e8fb571da2b0b9015bdb1c67d9781f50e2e4c392adf7da5486715595ee4929cabee22f09d5e339c395fcad4bf2c92c6f08659c0c9404033f3c91e3e855b72d389cc4ce001fada7e4c90e42b76490496001b31c2d613e75cca786a0635e40c48f93ff812dbbaf959f9d347d7e12e47c462a07b76bda6de7237977cf3c78dc0df9e2387c736a1432e11d05260504b3c4787b48c127285edddc50368cdba4242b1e8b5eacf4323cb4b35b7e745ddd5a932795dea9b6e02c941ce8a1d95ed6a517dc54abe7e0a8e7f0b4bcf3b429d30f7c1cd34cf4af4e05b1a398df78ae340699fdb5dd073dd72d3e2fe67c0a758fc1c97b6b63100d8e8668fa8a01d2cc47982cd9b12c4d910802719e6cffc6df3e71aec15f504f36e2d5012a0e80f3694e2ace25c1985fa0c12e8725242fe79e442d393e6ea35b3c146601144443e27fcd3841728ed1b7dc9c4ad119c58e3115057e1f93c20c49b8995bbe0e933ab18fec2f7b0986be1e2f7975d0488c22db9dbada021dcb88f998dc83bc1e3184468a39efc0f8dee9169792969469097f7f3bd1c9ef2c11ec21dc463d49e07bf716bfc09e270c4f8ff7e6a84f45c83a4071f39bf00df1071f55703f03cbaacd3fa07d39b7189a78a5380d6e3b3076a5d7974db2cdf7d58fee7b9cba6b74f141e577edb32a69d205d22d004c55f6346a9149961b43c82c352af38bfc7ec2c66ba2d08c83a0ee37df514b9f16818823596ad8cf1113c42fa5f2009bf87c74012bfad4b4d314695d205ec1bbccdf88874f5c2b7baea1e81e9adebe045813b87d6181796cf0eaad662afe36b2b2248d99dca89c71ce16aa80e62718814916a270c5e6117f4e0a7bf01ad6097bc7759714adbc960fe33c254acedfba4238e5e15a711eae1a14eab06b4a55a2fb019432381e4b78c5e8f53226a500a66da5f225888dd6e6136a1518f45155de99ab76ca6014fa33e3a5b130c413381d145bad48afb4e2af18d34ac2056ec9d884d26aeec59e25374b8c5e4742d52d216b71eb415403ec7b9b8d1e8df1c1688c845cbf2956f9c9176786ed5dfe15076e6c69c70adc459ebf9fcad742ec9855ed2ede1e59edd9251cad578661ee8d0c5e9d133247d2519ba2de920b60dfe3b4f3203a2d6c095c100f1c12bed17381066a3302f80fe02626481188c6f00f14e04bd6dd0d6e6204ece6e8657a6413d0099eb6ea9599e6e3646c5521296edd8bd968af937e328ed4d6cbecb350ad3eea5c9da8da3dc87eeb67c981c1b15564dc29d367ea969a35be74fc98be047f168fafa46ca7414dc4fca0c8482607b41b7d3c46f5f9bd7171476e25a49d58054ed8f9c36913764a83859e5363cde71f5c93e93f0b7f907317e98e22be0ad8bc4a2f102fca187de1efe755022e0c5d2f3db46d4c921322b94ee35a71a9b693f6c7ae871ce1221c8c4fbcdbd50267fdb5722c94f908e8558ed88c49720fd3b8a349bcbeaceb9c01800e3f49e4b91bb9449e2faf1c31db618fb8d1968b2def5b4487f8c19bb3314d761af535a0b72728dbf9d8ea7bffc37a84a2210a1e030e418c11b07053a3d64b3385b696bf7873e2d9bd8302a16c77c9df70f1f7925fb3f11bfd604de778a7f84e43f2043d1ff6f042eaebf3773de98ce77fab56b8cdcb7fc4872b091406233d2a3d5d025443d8cdb6bcf5794f96722cbe4dd97ecce3c0e24ca1e6205d11b6ed10f65bb7046cfe707079447438c59219b0be27e81dc11104df1e384291014a04e100b64b81a124b7daab12db19006d171c57c773cd8a82986c558edc419fa8ddec7882b44d132503a1d8480ca88d753daf386ed81d9b7d8f13b250c0c3e76dc677f2f6bb14be509a86f55d6f3ae7bca9e2d51fd20ecde392d898b6c6e511555c2a6856650e6c3896bf5d3ea3bad5dbebdba6237009c8e296eecba3852f03b91c1c696761e3e3a1f89f4a4ace5678d4348a0f7e19e11b27806fe2c4e11b1aaf5d94e3d14466fa9955d3815fe7f391bc66bccfaccd66d0efeed3599398690a3048bc67921ff07500148a43b91b80c2c45bbd387875a8032cc8148422c0aba6d17df96428c47e7e6fcfc2d1fed63ceae6d205df422f31acfbce0fb9eb01d446b83f2a686acfad1cc3559a1e736c848b2e9dd817979faf6e6354c5bfd117b22f24defc89e229b1f2b8451aa80483aba6f3ee92b9cffac081b974fc2a1231d12c9767b32c10dcd7f315f206b17210a0add440e82b63435e058ef630df8aace283d09aad99cb987869b095ecabbc0f35653824d888d7a277ab6822730109ebadd0b5e1dcc9f70848af7e4bb5a790c9cba979f9f735cef7b38bdbf7830c1d20bc933130ff16137ccdd38bf409a1e6297aa6e593d68e40d1e7dc15726be9a4cadda9dc6a83943d3c83142ea1db471466f1dec160776a92f012a071aeac74289bc56d71ab660b95171f1bbf5669966fef93c2bb7789e833de59bc68107ad089bd916e53ee33a7d8b19ccf7990cb3375780f3b4e1e4cb1bf33a2219d03eb74b0bf63c6af1741572ea8a487a430b3cf6529ccc5e70c8dcdd6e78cc338abb319b8d9ff836c0b28814c18b92d8839a8f8f6b52a6fb9f7f7dbad318c93d45435d5b1ca050884cac844034aed8edab10e6b712eb91ab483ee589da41acd320b912476b246a2fa96e4dd9600438eabf7d5ad03e42b2bc08e2ed5735a39750a73296a249990b6cfeb97b6dd6d2ae210a29c1cece68487f96e5193504815e65d633806d5b4b748c763d64a3477e0ab444436e2babc36ee2684609dbf9d177edd70cc2823413ebcf71e295c2e68d70c3ee4f3bb918e58c7e107bdf7cd05e4833b8656c46bc09f259f0d9ffee44e0f6672790dbce5280054c5c817f3dc595c35863cacaf8a439d7d920ed52e4d731525b2f7af096cdf613bbf220fcbe53dc077e6d4af1bf95874dc8434760b265fc80b2696138e87e32ac3206c86da68935dde33ab5f97e95833f119df2f1a729b2e1490bf4a0fbd2466fc24e05d0f8d3ecd9b4cd1e03ccc6eaa78c9db5ba8fa31fdc6376b8aa2f3cb641ac3d4ef502543dc0603a2b1f7bc70ab368acfa60dd9a0427e98234e914eaa8496320f89e0d9394c8150aa4831b3be953ec076164845eff20122fb6afcfd851b002c69e3adf3b34fe057133421939d9b2fb64405f8ceb6f0f66059060c3109c374f7cfee6e9e93499919dfd3addcd7b5ef68cd6ee5c3e524bf4e917ae97b169ececdf90957b0526cd3761aaa58575cd35b4524928f2ec89551baad670c116d04b91af0395a8df7343a8bc43512a4d0a180b0e048f3834dd5dc14920caaa2c15939832b7cd6d64aa39db7d3dd8313fb358d1b51f62b50ee888eb72f6543ce380486b6f455cffd08f43e06ae64027f87cd28670389231dc81f9b069027327e7d0acf477d3cb782e8e4f20b57dc43e1530464d505a8047ce9a140c8b712987eef9a849801351f2a194b5ed3762fed9deac98f0e730242d30f505dda35474723e28c7d6ca67dfcf25622ddda6b47770797322ddf903f59ad30bf6d19fb62c799959db259a2d8ffd5be3498bb268f39015ecf045bd8de83d22fd7b7dbfe353a33d31ee6de1df0b2ce7d2c12f527bb9765ca275a584f7f1e68de2bdbb079abf3c799d26f293b1c03f6678f9fd64f9575c9f0e715076b1ac9db92f8bda0485957c9b1bf355af58a60b62e437b6380a076d857676b344b45d0f3f17cce8a25d8c36226e021a4d38f9d9e6c139253ebf241988e1dfd765465caaaacfbe0c026fc8f7a2f6df094a3c7f241908e2bf473a56fc80fd1f2ac6a64e6aff6befcbc3f2a8dee98ff7bb3e4ded3de8e5068cf13ff676304ac0ee6374a92c73ca7f01cf38265b544a7c6d7dfea6d403662435eed2a7b7b7e546994eaa99d4754fa1a08252dd2dbebd454f52fa0c9673de4c0a5b7356aea91f38f329c5820b18f47c02f70646fca3f6fc0d88406c46f57db28832aa6fa17c697e54a09c18d68548581754479ae4ce0835b9e8815a267e3238af53eb3b0cabf0ba26c7bc49af7bc403816f9b5a6c3f4ed50d8f43466c8b0ef10dafea906d34d4c3f210facfee211814ec0d29fd30be73dcf33de47d923fddf6286621ccb275ce79cfad7727a48b5895df9f18de19aaf2ec3cd6980c375e939e6e0ec04b6430bc5a2551e412c66845e576aab68b49bdfe0e1e281ffc57eae73456c0f9abc737a9a2aa7f3df62f0cd26311ed6a0f17346c17d58327e87539b344de4e06b6d15fa665adc9920983f4bdf61ae18f2ae3d7bed8d59575e4d44bcb751973ab5da73e0e2ff07401e7fb73b3a86ca61bb6b2aa2b69c16ca8fa91996777ced10ffb8d8756dffe22d4faff331879b4150ee3045dc8cdc711a488ba217bcd7e39eba01c6ba10eaed4fc984351c7066fa32be6dc66794504e7be4f7edaf0437d63fda5a17df70a3f1686c1b9897f997de683a19434bd5066398fd91f9000ffb2747fb0de74f48ccb83d62f714584b59f77206b13ec32edf21ce33736018688def01d29785cc04d5c5cf4e5c2e875dd640ca5331c32ec979b6c877d06699b6d92db2cc56cf32f176e3281c032552b72d1533d9f5061e1c5c8666010d8ce97fe60e10547e2fa93ecfe323b02e824e7e06f8b305728499bbf2c29d02ca92ff748aabb855f19bf62fe0e4c3a4600803f1ade1e3de9664dc03d51e3a371af1dcd4dc8803d6e469f14855d3b3351ea79dbdd5ab08e6fa1a5d8bedae769d13c7f502cc3ed375b9e20b4c8ff447184428d0dd0a0e47ef88e034e7bc3b0ab8c1919d04feb9052cc96bdea499f2ac4bd821a6bf449da3039e2e3ff4a09eecbfb97a65712e13c82caad13f39cd055e05abc2a30d7f80608615cbfacdc37210f608471695d52d47e9ff5d1cd79146394d8095d9f9d4d41379fea91d7bc0b98e780582eb3ae193cf43e73f9271d145b0e67993b6d516d4435009cd80c5d612245cb704a244dfcabcdf7f3cd817314f432da489d97d715be4dd4b9aa243aa37fd2cbe4b717a7b8f95cff11522e073cdf580fbd04764208d6da132915d6ea2cf2ec74b9d220d87cf94b43ed4c3d6501413175735a837cd63b2b51a275e445af68c232c044b3a23d5f11b0ea1f813f7135cbba390d33843b07fdb56a70acbfa08c84b9ef15ad42954472bcff8833d54822d8bdb0e099d3343d62dac7710a8df0c8330fe3d2d9c2c5c11eb93efb25b4dd9b5c2cb715853bce6e5eaa6f05e5b472330f69ad10bd50d093ab9420ce1d90999fd3acd062f9679e5955c1a3623478ead4c5111948d6c9c3c97d608a43453869303b53285d59b37c997f24ec6006ae79b0eec29be429019e64a1d4faf7f8e261e1d758fc9e82c45ddc24f85881fe81feee889ed3231f4a4ecf5014c2ba1dce16bc676f7afabeeb23ff55d538dff6d87536e7f9977612de4f200ee8cf94b19fbf76ce65650a2961a25c5eeecb0b53c45203de48993c54d84021f0190242970b22ed2084cf6b9c5fbbecc03ba97c6b1c99f7910ca5c6a240b9c3b36b036a5312c3e6cad7802e3598aa0d605bf13ed3cbff740a7d9d87f253af187e030e0ca8bebc3af787d0a6810fb26c958fbdf5d8ed0f3e3689d4ae374744652cb98acd3b3cab6a4f63e3e5c6c7c31757b181b2eb5f1736c7132bddb36dffc8bd9e53c80d6a53e86d0fd9dc4a76edf33336c95f58e0bcb7dec41cda051ec5b1053fabcd08233a865c4a70cfae523a965767d4fd78ee0fae8ccbd50c531aaeba76ec9e7c03c475ae17af8f0d822b82a592c014dfaf4079b7752252dd8d892c42a146bff865d347e87ec39262cd324d9ae0861f839d1c149a43c180e774188ffe78609ed6285c0a1fc8697672edcbab2fb770e6879a96081ae7829033af58ef7f82e230d6718566206c7fa4695842c76dcc2a978190d9424acd0bf54b84fbe78015c6f7be6bc247b29863dceeef130dff5c9ec2893514bbb75c1e32e65eeb6cd419b6fddc86d15a999c0db3c15e6442baa4016968ff3c4ad14a3f0395c7dee2cafbcc7435c531bc97e02981fa08f42bc3b692abff4b6b5deedf2adc7eaeb85d6a7a25fe1f848bbbcdcaf96871214ab14f24f8e071e29a3dca6fb9833907f7afdb976de50fd3e129675719cacf42dbc87aa6ee1fbfdc3cdfabc9ad9543548968966d05ee4bf97f500db1bd4b05177d056391db05377da6737f545803e8614f2ae59f6fc4ce72cd31a03ce4d56b3f32b0cbf9b1ba7f4406a06ddcf04e90f54b1c17b62d623c6deee54fe855511da53d4456ee53abe1ef27da950c606f45bb176aef3d74f8e24f356a3f373d08b0615e684c30fba8041b2e764c3f9c10aa447158f4a9e132367aeca070e4e3fea08a089c073191c7a1accd4c29baeb9fad1487fb83f2800845d2f468aee3d0489b4dc616e29d7410db352b2dd76c5e7d32f386e5efe3705d45d0dab867aa6f0fce2211901769fe66a43a71c15201da8fc01f5798591776b765619878f5ee66c8128ab306b8409f7a76d549a09bc639ddafeb138d6b1e0cf06df949019cfd54cc1251cdc5d018281023621cc2c982b4157f4845f9c80d1987ec490ab05a3f6a0693af294e5383711792aee5e35d10daa283ba483c266465d521e439f09378c880461d2d4ce113d0afa6bfccfede7121f43ed950d036e9f6506103fb792afe4bcd837b94ccdd44e2ce33ff23064be216bd6a4c9c14395a23ed57b7feea82d8d090491a81be39e4d3bc2a724637a5da5cfa92c18b51da40900b39a2a3b1374778c82ab9854c90a90ab0e3a97614ed2df2c587bdc736a87df549a7bc8ffc2b6acba8487ee059c7013f458c6290f9f87ec7d3ebfd6ab598a61c88f59e4f079f58aad8a34fee6181b1bdf6d643c76912fd6906ad98d98a54b0959986b21e54e39c5bdd46667eaa6bce964a4f2b43694ac6d125bc6f052316b72701e4234a3a1e46e0c2d8877fe233ce6c9815f2abe6c4396f987d68561eebfb67312ee0944359762203789e5c650beee63ada20f90c87a363bf1d3fe35dcbc2d73f2d68425ed3e83b368e81ddcefa6043a110801cb44fe7f07201c3cac72404e70d831af67ae82811e938030b61703da23b68aa27063819a723745d0805474daef3c5cbe8469bc9bada57594037d1cc5caa802fb23dc0b911d04bcdbfd194b5ca298e1dba68c6d384fe90f62009f0fb5c86254e77dd46586d7b5a7f36cb660ddb01dd9fd6be4911c792e4784cb8d6d11cd7b3dd10f4839593b9094bcf7bbadf2842987e2750a3e383e2143e72939d36fc8eac064014b8ab7d122c2f602bd3da575df93aba5b54d59f50cbcba6f63c3e77efd0003bcf90aefac190f2aef63f485f10b276f22c36f20dee8723ba853ac10fbf233fff1b703bcde3f3114764c6b81f07014e19d5837c787d2c76583c61b53b6bd886de0bb52176f01611b94c236f33d7bd9dd949b5aa80b62c8bdceb96ccaa5923788a4f255a2cdc2e135533e77d3d33f1d9f1679ab7aaa0a66ed6c214a2b375cdc2cc60703bd6d314d65f7d2fb1e654f0f9c418118883a02af4b597a759a1c9d6e49a32be938d09f0ab27402ee9c136e5077f368deaa7e31f9d0663cb7f81afcd3701c0cd4d0b5fbd44c824734293b95b0421948b9c734b328059bf2f975388470e7947b670ca1d41146a3cdf32b734410040cd1acc99820a7e67ba942415446e3470ffb33506dad8256c770a4f387cfa028a67f210db9407a84e3d498ed9a819c9b95962c022c7ea3fc2415d8f63839cc58746f046327d740559d93722e5089f8a7897057f4f97d25e8aa0910fb37a5d7dac0e72beaab1df528433d052763d897eaa7854d8c3558270f31fcc7e96fc13adca35627c92264540f11d8e28038d97435b0574ec3bd521a6df829780ed2cf113bdd886415cc340fcec57ef60a4e7e50f5b6010f057d7428c66866cbfe9aaff24e6d29a0ffeb020543aa6ec693d77847ea76159d94888dc5a248e4c966827ebfccd7c385b695c4560e089c1fe110e86ab2882922195983be643f43e7e9bc8077c6f166a3ae77eedcdf7eed3d4e9ab2d1570c5fd6fdfc8dc2f8337d675e94af98554b0583514dc90cc483333c6bdd36e0f5ff6350b6b4aa8f7b65d926a569973fece6229b97b73cbbb7d3bc0d4d6e82129611e0ddf0e88bd0b34a0e6bd4bb006b2631917766ef81c5cdedba90287db3bb58107231ee636d1c5678c550e8261d06d4a0c45aa346f66531b7bad4be26118e5c354f34fb7032eb7316276fde1fc97e1ae90daf68baef6fd5bb2ad8bb3f14ca9630442e4608742f21dda24b6ac7db2584b6315ce62d7bfb7a68cc6636381012a43287e99c940a6f1aa5f4b6351420698a0200a124f18f664a3aa28dcbf3086833197511b9bef624b11ec8ecc4b785890cf4e141c729071507fca8efbb9a5388abb281fd945384704587489e51bca402e3362dcef1648bb3fc2e5df6dfa0acdcd2e873599858b50115c68299a9aaccd83c9734799bd8e1b7a9aa6f6a3d713669d2764426b210a82d676441de36d4d2baa8252b48dc5ee37bceb0ddf8b311dff8181ceee173d2679a18320121e695bf06773b9ceff7181ed07b01189a3cd23eb5079d5fe3ce1f2034ab74666229463b53596dfca99c4a33656a86932eb442150d3283f6c990b6be11c6f4d2bd00808df3bb5b75b183ad6dd5f4b74ac4851cfb54d718fa6d45516a1ce2f26c199c51461e78c0a95899539a3dba7415a81ef6878ce1d4229f0008283cca6791e9165bab9d8fc29af78403138ba8168763981bdd9ac84831f5de314a4c6a3647d4e7075db5276343b1f101346d2bc6a06b415c594934b453a0c69fbda992dd9382f813662f6c10bbed29697b4a78d518e0d964d07048fae84768dddac5139bf222a028cb4518f5356c250aae349a90fe97949c31068fab241081a90248d54edc1ff87985805fd9040b65062526e3fed9576a24c7685747cd9dfd2451ddc1eff452140ec729000c55ffdc6cd1bbc86d0b2d27952fec57f633f70c6c3c1ec8d6271260e23a858fcf2f589eccbb7d0332a39a351a1b80307153ce2becef373f4ddfe807f4a78a5e580b436b6df06e3bffa1c7ee3fd816ee908f9e4771a83917d1b2f3b5342ae0f673909e7e04c638ed79189316b105fa79dd33776bd9f4f65ef1be397b8ce267ab5a2b89400a6a64b9373b4641b73753f61af8932e0885016147cf379d6dacb9d89d78cf7175b4c4a5f036b3f9e9a242c19b45da2daf3b1180b5140672b8383bfe0b3ec549ffeccc53fb695cd562f37324f3b18157028db3a235d30e3bf1c0541df42c0fe5237c5b93cfe381948f45edacec81026f3087bad16574c2682dac07d50f292da448d22c7ea7afba060bdd19de305a37049b52169cb304b3c7b1611ee1831c32494f36b0be2b2734899e0e1925c65dc81ef7957561998cd5c47b15f0686c599ced1a01a5242fb4d9b4cf7b8df03284663313899c27c5a71ad6ed8f23883934622050ae2d488f4098a1810a40d08ce4c46d1eb3d02599122a7a908bc8dbda0d6ed19d92d13aa6dca47a0a129a4fb565fbd373cdd33f95755c7b2d25c6da1e3fdc9dddb33dfa77dee78488c3164a245b4c0c306505d5d5093a49303cc98f78824ab88b37f5f7a5f494527161732411cf1eab10100275d8ab7544430a0a9db162ed02dd1075e965640ce5da5c8168fd70c9f35130bc3d8cf5ef8922ea2e3dee9c85c23acb23486980d4dfe503ba8fd1dc82b7d834096df17abdfce10e2465a9b57e2519d26de9e6c6f34db42d81144e74592d96f95e2b532120964b84e81881bdaec9693ca036b905e5f11ca595407a860ea257cfebc603cba9859a9dffabb3069e33c046771838528faaa3e2237589932aab6a694dd6fa0ce53c049b88ff15efc29741adef7d6aa504d1d3bf6417b3716623c41c34feedf1ba1f4c97bd7bf13aaa722a4ab633d1977b59830cc90fa5bfcef6c9ea70af579bdd0d65b57034ff7028a6b9843428bb3c08a432cc0d89fc15a1d8aff6d6fc200d518d3e0d23e898dd48cd44e5e8604fca1fcd4b777d1dbb79544d50678c0da87eadce32c708e4985fd629d0f47b959d68b60abd92409b0c2df1e3c32e1283fe03831f6004233e2b4d4e838d3561077bb0da1834215fb30e4a0534de8b2973b1475046702cd214068d05698f22c63c41c43f8789c610cdfeb023291e8884884e33c850d9e42289370ba9f57b6976d84d3746dac94f9b06f6bbd6c6cf77e7bf052d596823225ac21cada6af6dfb318d3c1a1ad82521fa810492c52f1809eda7ff76f2746dd2f5554bcad92747f997746f1262463c98d838f03ababec418f800f37783aea7162199e9af103c391c16439e703ddb1122b2a0ed1713b6e023de97c58eaf4c2abdacf382bb04eec9f2b111cde89cccc60a6eb6212847cc321bc04add1cd32cd2af7b1c254d6dbd77c69d77e638175980f5300f2a48ab13d33b826610d5c4aea04ac63a6ac1c3a477e126d83168918563f1c3be2867171da3a7cce2cd5e77bc2a2d00870e240ad2e15fca015d0b47be20aa613fbfa92a7b81909a087a43b7757ce28e6a6d29e76631d5ca97f1c6ac7062b1c9c5657fe4d93a95157f9245b487c4b6bcffbe3ef39a7de634d53c74034d0fb570bb938890362b26a8c847b8054dfdc0cf4a5a07e5e93d470ea9e88b19d3129d3ad3b851b292efe70053fb8b2217865dfeba84daf8244694d37ebf6ef5f246805f5af52c1aee1f70ec177a6298d927e7c281ce459da6800a738d63b560dd612dbd66e15cb539f05fd454d26906dfad51fbc478b5b8a9a6ceea50df879b5aea60d49e178b55379ccc569adc0d19f23be4b4cad3ae6faf5ec537f53c8c819960748b8861ca178f93f653f4d3a6822a970306fe83de88370320095eae1a879fd8d99b744264ab6a28956dcc241952f4d933c1c3f951b19659dbca15c13f5f66ed6f7dcdde5d8cce2eb6a0e26696f3e7bdf910fd5019849f24a5c9b2114fcd8f1e6075e3a93e784a29da6c4e158ffdc4ce07ea46e9b180732518581241e30c67190839e4f6809734f578e8fb331d4a01d7eb8526c39102982a66f39dcb3e44928fe21d98b9affc309d656d89952609340390c068be09f800df7415530df12dc69d3990274204c30d90884cdbcda84a511c8890baf8acc17389c26e77f6687bd7684bafc45dd09021d78c59ede2b4d737fe8ae9e22c42e4bf0a7a233e4af1a19bee18090f7332a0e9887744e5722acfe68ee48f7cab4bd2396a316993d71e5a12116b8bda024cde98e6e2b2c7c4217a7a327b97008ed5d60fab4178ed901e7f147313cd17485e8e8aebe583249eb7d3db1498253192cc52e5f945e5f2d39f303a81bcb8400bfb7b254c39ee1701b7b9053c1446f8511e017288c78414556eb61a041e846bd40c5f5b8e79a48dc786121e0c018e3060b7342081116408fa2e107b1c6a55e7e50e808a747d71cd3cc31cb1b7a5baca8f440d3e2f7f181dd07b1bfcb14a98779ba1d7b8ec8ef51e7d975f7a5566bca88eb94fa9f32c60419dfac488cd0f9738cd452842d0668658ff4826243d1b9f8ae4bfb7a6a3c5f96176547ff379966dea4e4bfbc94793ef67cb3a82640d1b2428762b6b14551e56860d5820cc05565474d2fb1ca14c6e2e964f2074252a774382ce517838457f9bbbbe03136207dcdb1dec2a63a3fd112324dcec951c39477d1e10ba31211e4bc72a0e14af52d1a4c14c981b311fea42e03efc626d36eb41a695faaa1e5a88d8b6a2dc776bc3f40e3db07b3cc9ec18f0965927210c1222514c35699dcb0d8ba885615b1b6d69166a6c7d7bc404c6070a3dcb43af83c02a861f4aa481ad93d720d1afba3dc6ec8105e95261a5536af65135676363a62776ea1c20a40da988b5c8c12cb67c8a8b42b3ac6130d8c21b2323c23391b86afd0c570b04ade29a445f5df290def6b6edc8214228f90b9b6503eb67b29adefb12a0a8d1ea47c741c6cc56e04606e22d226589cff88c26439266f72e892e57d289d63ce4a11c8302b2103b5598f63ddf719c89e2659d31063c7096960ba44e368f460200225a0a9d35a457266f942c85b0e159aee368f776a29d13e15068498332d1a5a882e1126db20022a28e68007e91dd23c61528da1daad80bd642483b7907b6a8173c562392b0cc8b0d773ef7e603224233478167cc1256dbf15a72df800bd44b7d24e7757111dfe0e3b32f29ae2575682a1650a5729c9642ff627155eb113369188a42870d625ba91d1341fa4de5a3ac3655e36b67d2c49e44a1e20f8c77399cc3fa136ae0c8a4c9061bb5d34eb0bc89485f22684a342b15dad460943920d57496cbc321cb17ac87bc1fc46c358384f6ac9fb644ff83cf0986678b99bbc391183f98987561cd50c026a28437d6eb0fb863898717739f21650337ab71f16330f3a350496a56e888edde77bab01fa8259d480b9580065343b54de29f48781f3a1ed4900e70ad6a079c4f36dc405a41a4a9c2ce31242d3d55199ed0c9a9ff3a80387e5a77ec1b20b0d8e12e8f440f763bbacb2e8e26462b9d221ce15d514f9229993a715c9e7d71f995b193321d18a30d708f5012c4009aa9a299c003c22305ca33c49fd64ad952565da0ac4daa0ec63e2dc4f3521a8c2dbf6d55ffa617f71c44e306a8c3a726a53c8a469bb6825a7835eb237f2306c1126f0343c79cb0831fea6e016bed398de604e26e1337543c644a9c107e68cb2935751b2985d55d81ad8e6d87fc8964d7ec4d2d1153619507953c59a056d3420e9a68465bdeadc46ccb7a8bd51eb1946ace0c3580152257c705a6e0eafe5589839b2c8a6f05ca9c6fddc235181610c8dbf3dcede7028c08c11ac6dd68b2a8294ec096ec5af15088f76a0afae31729b9f0f08922bfd6eee0f702b59f8ab4138cc3a1e285885a57276387f2a97fdb0655efd1b8e74a67b1ac970aad51717bf1dd47f45945b14783d15765e43ea06f859a31c1d8864ae30d70b43802b6bcda2dd022bf6c2aafbee13121e76bd32fe47217eaa06b23bfff8dcbe14fbbeed84231dd289e097add00ed28df1c983cde0877e7d979066c6b91570c6d03351b0f42ddc48276d46ef7761429777b95d0a6e2724699557a69f46bd104a873d48f90f64707c18762ddf96d62647513614ecea1dd936bebd78a84618cb94ae56c5dcb4e8d1fcfa8c140004aa0c4f6f13a5b78f6896b6c7ec8acad3c1cf3b2a39b5a9e69a9fde3a2d5f98a18d5dd5abc53207de8fc851da55a9b9642d729969b2892f7a0117dd02b49a79c453bd7ceec08c3cec64e3098c0ddf650f221b4a201321e68e620679a561c45ee2989d91415f87a8374dd84f596f6833496edbc1cd8d79d4f279773f9dec56e6143cce93377a1a37404c5c21cbba8a94af68780fd0c573693562d4d7b9448260850013bb25747c4e10d51100a51705a7dd0c1c90b9f2aba1f34dfa65675b54d6ac184c677aed9c758510c06c6566a7bad65ee3024ab3a8060cab52efdd4d5c105d4a2eb6328e065a11b2997aa21b08ec8f37f66c1914b55ac8aac178421b2bb659156dae38587232f08e026210989a2e3840fc5a89bfbcb9290a3ada476ce01c68739eb6ad6dc0cd09543e8e5104b82ae76454ffc058e9d2ad147f1cebd537911a5a5663541a3768e28ae0042a7a7bbc31439b826a93047874ce735b926ce82a2add623a098cce94fdc1144e2f32418885cca366b630cadb42422c2bcf16d98e9a5324f6aca44ab7d3d234d5995f1b990b63f616a6191dd0701d7f332103057e9cfe06ab2ec4031d2732bf04596f84e3f6be197296980441495746b38ea284637447d20774e851fbc6100be5980845de3f3244bdca9809aef73581ac90363035fcb4259ac789ae3839253dc62cd92492724f74737f1e8f47972a24fa1b4943dd4328ed717b413b6481be7455b33b62b830471a2a0fd6345cfee6ac3d0b1f07d241e47b25e4c8aea5a915461da88c4a14dc114c8fea7db02aa7b31cf6e99dff982580e81b9f3a6d8a2fb20969f4e0a4917e2af2483933cd2784dd295ad1913c32645c4e642bc10a14456691aceafbc9011e52183f7c9d537e411dad5232074be80121a0debd40a22ca0f0b8348c061c863c4bafc99ce40e6f31abfa29f94a9e5c3929e8284046895380a0d23606898d2d459576137384edaa92730976adaa9f52a8500f77b5f56870760b347050f15c1d5c61309010cd61307f89ab942e9c88330dcfd830928b13216d5aa40d59257724b2e6f0951eb3c224651218574871023597161c36a32cd615c789683a258e4ab5db51adee22e03f6ee1616e1647c3c71457e1776c8025b355961d5ab7b332cf255899c2398d2b76a3a575595aff990cc2314dda3b9276f4b9b3ee0e81e3830e8799a5ba946631c1ab0a06356203bb021782169f3af23b0fc114f509a0b3df0147b7ebae976c75dbc4f7c161ea228a11eb6520b1239216d5b3b73b6c0c7640b84e7872d483e5a4151e5cd098db6d883e7c7664a3d6607fba142179eb074a2cc50e1ab439d9563de31bcc3131391139e8cd5bbced2935311fb0a324594815b8c370f92d22890c3ee9a317e97f23bde585116bea0e08492ac9079648ef15f2bc9e73055e5374cf0eaba9cb28fea59621e12b90f9c8626adf8b81fa50f173141f13eee9f0dd7a5b25083f5f7714d5ea9ee1bad4df227ca0322704d26544ba60ea85b64af63a49ba10b3a09956fb2aab1b5dac02900dcd9eb7bfbf08fb9aa032897c9a013919bbbfc89c7d89a6aa8cb78d942775a328c80c9fccd6a0abdf64326f12adf305a641fe8c856f7dfa877d3dbd6894f369f33170f3e6786cfcdc62ff7192bba622f99dc9b0237fb512f19870a8307b074aa47cf15f153162f26b35684de1dc7c4aae4e119e9dc90f258648f6c44715dc4fa47bb9d8a6b9312e27d2d987a99eb2a37f4ce1272816aa259794f74c5e3c38d576f10c179cb37c8eab4f573d8b503cad78d6ce6af42ee601d1eb0559bfe46677925b30269bc8ef72c376cfce54a4407094f690e7fb83cdf6b446cc52382ad81cd7b3abd8edf3a33d43cd53b0b694319c13788dc3ffb314d7267b22682dd862287c684527353b2d7a96942802aefd5de9831ee76fa4847e210b2db7937ce44910729fad84f9e820a882cee6509af2447f443cbb5f9e58d9fcc233dc5a07d23833e4323d703e20bb088804be557abc9db1e04b5d1294fb8387f1db0c39f433cd9c5fcc46f2e0f85eccf132fc1ed4bb5595f549e483223d4c5bc0c40e9921340e120260ec3f4df498dac53bb9cdae85ec2e6e090383865c2604bbda7c5ab0cdb1a051ac5eeec9ba078cf7ffa672bbf16584ed5e4445813122e773211860e2c3a0750f3849c99af0eeef650123e8f5813776613cf2b2ccb1914eda0cf4ce91411d60deef465fd387052049f4f3077719b177b29c62938c9b9e19fdfe63b54b315efb9ca806befffa65846dd181ee3cd35f0b463ca05f65505f0a5ca189179b939970db3989e973e28f956d4c1f5bc28183b18dfe128e0afe2dd6873cace07f135076d46b122df5a2d2e3ab6906229bd0f84c9734198ad375c398216420703f3020dd7620d7e1374758e9b325d60e74ea1e509d436058d9779cb1c67de5fd452ac795ecdd3dd31978174c1ab590a18e68aa7a52808a068d635bd633a8e0959e3fb34cca4e369f2e4afaa7bbe5cc5889f70d721631330cbbc9373f747c315fe48f0a040d16052e508dee84bb4e42c9eb79150578d1cf80732e8bafde256ee37a6d74575de84ab847590b7f6fab38525defb36c706df980309c465fed1633f6759d40df601532349cd9b3f21b8d7efcc86945ed11e9d64bbf9733a38a009f901d9c6d3b1a87338d74c5cc674952fedb2eb551410bcacc4214faefa414dab6354fb7a31e70aad7e67076db7532760f282b9ff0a216f2bd06db7630c0dc06ba5b823be8175e2dd9d80eaff8bbf974b3d228d7b5c906bef790865eab2afc234491aad86e07d1547389869fc37faeae428eafa9f66d793bbf92bc59f681e374bdd362bff871d1ea60ac85051c7c4a863ecaef949e50da926bb7bc513f54be3aeffa7c4159d4b9eee13e891b26478de787713bf22561ce269f248f35b5417e2302a933e377f203c7202103df6c6436180a0f56c0ebf9699c92735d0ecb4304685be55101c1e78e9e8703829a552b893e38fe8282d2065069579b3d32f60cf0deafe45b477d51512b610716f8c0f966835d57c467ae1353cbcf54219b8f1136c831912f0c415447543fc6bcbeb1720c5fbe9ec3d9ef456b61131a5814e3539ee89b95c8d34aec6683d6059875b48a303ebf21229369cf128c464c957970c3497acd64852e629fa542b51f2fd7e961e8b3a6fb99d386ff7cefb9af67ebbf870e009a45f9aebe77b13315560716d02c7960e9d65d9750fc2c204a24a155fd4c1236a2f448b85b0a785051dc8d148ea30c4f32bd5615d4dc8a55be9840f8fdf2bb4ad7fd5a3660c76e9d33b3e3c3913e7b385c45387e98e6fefd570e581e8185c0d900aed186e8b213b4a7fa4e55cae720855fb99d581e923673788b8b23e672ebff83d3be71713ab9cf719ec9fa402b5dbe87baad55a938dd7c5dbcd7be1c0afb747047c75200b675540d303c35538929c79807f567eaa4f54b00adbdf1b9de1cd4dde089ddef9589ed4d11b3ab423641522b00fec61b5ff9b92cf820c782a1dfd1b68b62d56f0fe64f3899a4a53e3031eb720bd8863d77ccb66a6cf169387f8bb9e5b14df70d83abbb4060086e32b9a46836f1d822e5d2b75fe2743194b3fa107123e679084815bea38d0f765cfb624ee426286971b749c791290fb7d9492149dd345e02ee9d569407595b7f71317c59f9f522dd336f2998ea55b67f7cdf58fdf5044e32d35c6da63c5b99abd0c1bbbe16cf67fc36d6775e8d60f9fdd2f15ddc3f4ddf10df25dddfaf6f5c09b4e1dbb77a078823150ebb7ce31451539c2f6fb956c468b9df7c9a9d772ed1acddf953fc272fff25c4724a94401563b9b28974c9e0be1bbbb8d1d7a27617ce33f4305717831bd64b63c693dab28d9e53b299b0e4abcccad2fa50c4c42e2d09cd1159d781ce9b98d299358f60293749f877133f129d45ae83a2fa0e3c1ed6ca27774c68585398be40ce296257dca0feb1b3ff00c86e4c8fc2753d91237be5c3605a69312e2987e1ea30a3d648cff29d071ba4471bc81d680f29aa0df645b44c1c1b2255ed82b6baef3846702633be89cc627fc4a4a21f48ac2ef2d7325311fe1a8a2b7ee8ab4507fb03ee5ad6ccaa2c932c9569b5208bcf7a6df8046951551aa344ab9da09a0da8ca92f8a71caacc23934bc264702f593ade3a99f5b37162067b6d75c8aa6012d8d1d4340610c5353b42dd6e2ce7c6744d5f274d8d909ca35e7bd77d7a7eedabcc14fcd79c4191c084a85409764ab7b172540fd00878db48e6879c61a98b3d1acd830fa1d51c26a5dbfad2ce2a4e07f5b720b4f10161b448bfe6e643af2c2acf74e255753b51fb0be3d4f745e7104dc50393292334b8454b316309d417cdefdf1ab7f52d05adeb89a8720b89462c122880c74ff24487a08966b98ca1cfcaa303988b3849ef24e10b8b711a584e56fcc0f2be9cd0875e19226abf134b9e9394e5f8f36590ffcb843bf26b23f2157afe0b340f44baecfd54eb30c4ee5c252c02a8611d24c561f531fcea81c58b31d7644c8f981ccaf679c9b9c65a41b3631ca24eb89c399ee9f42737fd6326bcf97a927b7364346028abe09151c2dfa0f861810275b0ce31603856db06adafa2cfbd1695975e720031568739db151bd2fc60fc64a5ecedf10c525b53cb181c9bd825ddb2a16c62c6bea562a32b952f2b0091be5694582d5a7cb91d5d3703ab44ad475502ee95afae0f571135afab839ca3701b10001129ef84917032d3a4571d51e0f5c3d8fa8bbffb04a0610ac9213570cf4c8e3a07c4572db79149708b87cddff9d08dadab50bee9b46625ed2bc3d2fee08914f0d8aa789d94a7d824ddd0532015a72c27729376a05166793094fcea5719afdb9be6d1620b6f8c932a227eaa56f379051a45bfd42fc6128570d7b9a39ded86f3db9b516f78d51925449527a1d3a0d27785dd62552c9f27b0a0151032d0d0b954ef7cacaa68894c6665dd112f807d0bd177c28623461ab0edccfddfab95d47b7c5e2198966ea8450625be0f8b0dc8f113723b1cecd48aa912c7d800e66ba6eb6f8557d190a3cf1b0c5176fc5300d98cabb3c82e7c996afdd02375a28f6bad907fbb4af95597766ad64958f03b1ece9234e6c63c2d6159e5c8da2266dc9c4dc79b04c33b00cef62941e0e9c510a8ebac1b2f8d25566dda4bd3d2eceaf43439f2ae4230a8a20e3fa96ae9af92a00d29e1303c6d809a58c714371c08ba953bdc7131154c8d505a2adb2fd6d7a2c76f12bf28e4b861b35a77cb99220bb210d84dd0fd34cbfc48909c891e4abdbe2a59c45535ba0ff81ff73b3187e4f2eb41fce8ffec001405e854362aab065baef321e50315fea1ceac195e2cabe9971ddd8ada69d1d4bb2d24d7672061b180cb16aabcf1e01d6daae3dd13cb176e76029296f749f5a4859680b1b0e3e67b2cdbd36bea77866f464280c2da56b1b4c6fba573a55d8eab3fb693774c1a3e90624017050d1bec4e9cb1cf0b11155a8312b36fb97e6cb0f7feacfd218696d51dccca403f12be687fa7f3cff5949bcbf2c5b1b5894753d10df36cc8de45b00a1b032aa600de887c20bb18169851bc2ea2aedbd25338af4dcceb39eb92115c7c673aab1caf6e91b3e364f200827b876139f17b24d0ccae6c4c2885b5cc366398a87cf5f579eaa32fc8e7662f279ed3488e402d5dd03c50678518b32a9112044de3737b62a7f997d4799d7ef5f690d62e8e75091c0d355e6f0a201c176069f21ddfcc6784e1b93334114661760ba7d0479fd46560b32fd0b7a10710e1c121430973959a41083585708a77a2549ca91e8704a4361527f17cdd67602e69eaa11724b28b87eed54661183e4788370fc37f16c3d1c4222ee6391c82322501e0a4fe23cd7e9de959616b44023058e7d86a4a299767ea6626b5a4d4c6f2525ded3ca2427b2ee324c601856f26833bb09b6513889f4390f7e4d20ddc2310c3a4421197f1bf4694d2346e0033aa15e67ab482353b7e468a37813baf6cb32843f1b2c5ec3cc3c3268300955cc4574553800d1fa8a058efd06e324d864021c86999942a017844ecd134e733e3b21c3dc7bf87453e8439e03b684292075f195ae9315e1e5db5f898352a65ba8925be58ab148f2d4d7db97b3361943870144b2ca1b4d38b89ac841e92ec97233ac91006aeb2e1f7cfbdfb9a0e1875013a4fc9d319b33388ac52522f2f0be545f32b0dc68c97b5693853e57f63f1ae41d5bdf157cc3b3cf61bd8eeb5bcacb1efd27fe7ee88de5eb98278287707cb9f0dc5fb3d9e4d773ed75e543df6a7afc8eaa3a92d7c250dd57d40105d72402b601b3b11b38b3efe02385674cd0de7aaa4c2161202623f02a3a1ad9eed9911f220ad4590a221d6885e8337d5fc0a6fcf477d0a5406a7c570d72be5534687c91af0ef02ba7ec2f3d90aba888a61c74097b95514188141d4d42583b1fb018fce714a3553905a2eb961a4ed34ff10ea6c8907d2f8a3c6283e90f273a4af074666da21b9a9bca6b991929389673b99e772197f691a97e7672219bfb7a2e61db94d069bc2efb5bb5ea612686196e03a93ffb0ee0675dc78e0e9a801360eb860bb50a3323421f190c503b02b5c22a36cb9bec203b6d10b21343e604ebfaf15f86b9524f6887028604c7a9617d553d73cec9ecde5f77ffe6f18a1f15f682aa84ea54c02782e035ebd049ae3b52cc6cdf53e4b325916d9e2fba1f27f007badde11e1f2f104e8e7093966e5f6e446387b0677043638ffa036215b7c13ee2d021e243e5a2c4cd8c571a7834fd7d08de9f7d203ee65a6d87c4131cacd3df56c0bff7d7e6abe6ec4590d4d4c3a0b50401c83fac2f8ff2171ce1cdb90916fd1ea20807d00dc08462468f5773e8927497d0d7d28f63920a7706d754cbff9e4f609e77260d01d2e9a9d54027bf6ad58d8cbe960420b0bf2dfb04cced5f3d9aa0ec305b4be3c2f66df94fcab9e07040e37465c4f960b870e4c73a26be1de4d2279c38fa5cf20473f013c807b44ad9b4b72595d83a6151acd144269fafcddfe6da6ae59b3ab884dfd33bcfecff65e60bffac107ea2fcfb73dc2b297f4e132b1fe6175f2c3e8614e1ffa09f242447d2ee29d42fe933b6a51120680e412b76a0889406ffbcce78eec26819030df442b2dc17aad1795e6fd2906d097c6f3b2a9c98726c70b23fbd3e3378343631109be60c502db2589088374753858e9e25ca767c749b5398dcb1c478c7a7126ff71865b4f4b20e780eca582cda1c2d49f6b23628a0ff52520d2e24e22df5e72bd9b3108c6ac06ffcdd290a29bb23e94450bd2db9f9d4e3a3b42a729878c23d2e017e54a1221bcfe1b90b63bf4e0383a43fc86b529f02ffed244167dcbecbe9f33f7a77cadc27d9f671f088b1784f8ded3031fb27aa7132bd1609a99424e008f7b37c158033e38b466093f1ba932e2e73a39e61317371f37a8c656c67adae8bb57b336d1e82a1bd27a00fe5e7f2c4cd41ad8024d21b847cf94de789adfe876146f8eafecdaaed23aae395f75210e765fdefd0a5d51ec2fd6db6064a342dce3763d397b35e206d51fb19d3dc2e6060409ece1d5f4e89cbe586c7d14dc7365588c8d80309ea533819893f7c3c0becdd8373fb3df1bede17f9527f7d82909e3d88cde80eaad4a6cceac5fbb805c0bc2eca621db970b53d6ab435c11a9ca2c5c91031336f4fff5d20a0dc046a6dc431c36af1a01cdbdfc8d35877300e751fe03fdf6e9fee56d98ea8469284c3c4ed9a6205bb6b5d8de6af1b4006cc5600e78e2dcaf36bc9b112dd6c32b9d097b4d262757a7d02c6dbb43db3c569d709d65ef2176e8504fc34a3450341a3eeb98b33a62dc3f3acade9b256ff4bceca0f69001fa33f9b3b41f219e48314222c9117c4e0703489d7f68496f0747c91c2cff80e0b4c4b4d6dca8b3e3f102c8da09f5e28cbfde5853f7db5ca2e3dfc6600b4e482a06539f826d8cbbb93cf7d7409fe410aa906d55e8faeed1c086f9dd34652950b45ecab0f6ee802356b56287f1cbf22815e13a5cad313ef83c80f961b4346aa3ca700fdb7e49627b1b451365de300fa41f23ad86e03beb088a2153a0855bd798e5d6c8f25c3fb4ededabc6ce97332c52c9d676d891c2ce69098b11c4f8daa0cddc7913d07db5c30322caf135a77ce972f9cffe0b87346868bb3f3ba71fec0f3a0366cd9e857eb00b373836e81e879c0307bb3c6679e405661bbba8615bdc18b85e381dbacd35e291dbcb5e89ca892c1263bc596921020ba6dd1d720b6dd9a94839e276d8c42cf33059db88f45b50b3e3ed2e11a0b222594c5a85acdad9eb220c2d401b0167c9a1afab6211e3bc680f247bb1c771e97c04ec93212fbace26356116923eaf09474e921697c1fc5d9e95057d205bde923b33cd9b1e984193f55f8f29e646b3e61dfeecc7540d14d19cd3e7cd7817e29e8e493c84500d592e3f0e4f99d4091c64327c6b3fd95f0b525e0acd8f97e83361f47e7a656cd39e44012c44ce0944203f2772012ab4b8a7f96483411857528349b558194c82de0a5ca12d45ab3ae925162e259976ec3ea39d561ce331138041f1dc88496644a06ff1d6108698dc07361dda12799a9fda9d4ad955584af9a9fd7e9cd2da40d7038dedb1274cccc073a41b84f55dc42a1ea75e1b7522ce34c24ae38c4892c6be6af39c1d0caee38b25f5ce133ec48265c311c6c9c1bee954191d1e6d7a26855926d0a57ad8a9ec50679cfb51798729070490924f03efe0ae295ea553def32b1e9db7396c445d9265cfbd787168874e28e30ad4bbae558210681ebb35f2d8cbe5425618f1323143f606f24070449d1635627829ef24001cdb77c8aa9f196e0d571b1f0d8581d1bff0e8c6850c72106a79392df2b00b397f3b3fc992296267059cfd5f687563fae90f365eb8c3bfe190dd3021b83328685de650c15a435c6d3af8a34284bc1d0471131040dbdbc92a5be390c018b85d40116e8631d276ec5bafa56f133513a88e19281ae8dce69a1fbaaca64a826ba6cb3261821bb08a5b09fbd6f718d3ca4ce6a81e6401132a7c499ace814041f9edfe44282a5651c80a5d2802ada161f7dd21de5838c47b4f8c56630615086ef6d6c3538780aab59b4109affe49b801abbd4ccc9fc5cf082cc0eaaed10211777fb78c9d784a2d1313b1398886aed2634af5f375246d0bbc316dd03b563ed5598815b5cd5daa828a8e72f17dda5fe1a66d08f8a35386b301f1ef6eacec546d31959903e704a20392cecac66cc85ea6c079f597d49d53fe633447d60db2227ab87b00d285e48d9aa4a09e6052d1c0752c6a5d3e6296878a64ca86b6e16171f825089f6f26b6e3c6f4a9fe4b0345802a7c8915e9f87e918eae94a2e39af20948661907ab3c64833b65a704c7d78f0542927e9d84083ea124406078600514dd50302675b08a9346f9c92600c95108dd1a99d25cf7f34c821b13cb8c70f02e37b5e62cc3d514a00f0cd1ccf106c6adfe27330f5014f54ba2b93d064f6c383b5014422e213b1d3c3bc7efedc79d4723d99e085c47d1b0eb3d069afc8a0db04273551e0c4a83ca83b5b1880ccd7b05d9c302d1f9d3a99531699982685f6e196fda1d1caa0b8e2f80a715463c0853507e77774e59d3556c68427268bbcd8caf6e88713877171b9247a4b4f54c117906fb16d2d7c483c0db7a2d3089bbff5c7061abaa9b34c52fcd47a8fe361e793efbfdf7375c9b322d7560ae21ac1349e75d3eaa740d740399ae99b141263b661dc64016a20af3b6cda57b87057a2708d204901d1b33c052a2a05fe818838cc52ee6017d6f54c9ef34c483a1b7ba45c45cfe6c994df8f0e1173646a47dc5c572b8a93f5f599f91a63be45970a07943aba97560a78c8426fa1e1a57e270214d4b8e600dd67d02148e839685b5b0aa0af5228ecffadf0a420d60b66be30625b481faf2d61a08743d952c7d03847b5ebc7e00f6144185e53cf7d3311f920c281901c8e29ba3c1dd4d8959e58d18df2068cef7f83dc973a8248a37a37db416e748e8ce387259e16fca5c880666e555163e96d04f2746bb081f208e2d7acd93b2d1108608bfe551a545d8b42b1c6a01ce944b24a9963faa41b4127ca7fd6088cfeac93ec251ed63ff2552e94e01ba135e8c957dd3d2d99f0c2c1bd492858964f1ccc2a1f47ffc3ba39b407a3f282c8602b964ecd2695bd6a5a0622696600e8ab8d4546dc3171c1f15c5447b4a26aa04452370a32d2aed72681c3e6d20ae24f1152009745771451182a9c5074af912c62a1890997a3ef106a2fe3eb4e5c38e269bd850c613793775d83591b1e412d092d076e24d807ebefa6092265c2a0c3c275f1cdc1e2f9c51fc851d0651fb4bf95af9ead31c76ab857906d0c8b97dbfbed6a9ccc715f3e3727c56bb62ddda1dca16e7f40585378fe9cfee213b9e9aff5144019e00f5b53bca0f215dc6b93470361aef31619c427c4d5f8dc13ebb3d5b56525c12e160605dcbfea7e863f403cd653d247b7c8c010506020cbe9fa69484b953f105163717c65034da06b9499bc6c8a546f08ee305ff9691dc7b6899f28bff42c0f747d6affcb6d042ba7fc43aad1c274982e6290af63aed739c056582994c2362c20d110a06c5918b6231904c33c60341bae7859566bfbb173ec0f452035d75b27323da8ee06287337f3ff27cb5d9bb20c2b2952b8668fd74986cb4eb8c13271eeb5525559d4abfe5bedc29f429d5d0d61e74c3f3a60002526df72c30bfdb39b201d28a69dfe1dadfa99d6e7d1ae6b70a1359b937a57f7b88da5f72287deedbcdb2acc3b705d5a8884a9043fa5a3e81249f1c61a78ca5fe72e0936df8c8f4cfa866705e0eda96fba4d7eaa7f90ef3748b15bec1029535895497a5c552767571ca8b60a5da7062f24917e83a44f25975b2cc0ad51f42d8acc5bc0ef1b35b596069a784be6f8210a883b074fe8186e875a062fe0dc68fc6c086fb74281e96f1960a4353cb5039faf565260c95b3aebf4c6ce34d9c8f00f582ecdbc876b1d3f65283cac3e1cfe5e234dd23c5f92ae4a9e34bb23c2ce38e6f39d0a88d81f4125a1a0c6b7d66470067b5497fae40abbd2b20ffec81dc77c3e95272e8dcaabef4b4c39ac90d1b298519c5ca150ffc04cc3a178db159bab261b827792af9f3a0e3dfd9a785bb2425bd46d63d56fbc18bb6672578579e3ed120fbcf688c09dcecc3aac68c1cbae97fbeec2423d7cacfeef4303980f63682de27bd772b8cb77276e18ac50de6a29f9bcdd4e2ce77805ca3dce5c4ce78f5225117ea44acb817a5dd81b5d4a905747dd2bc41894434475e976242a232f6fd755fcfbaf04133af944ec4d726624287cf2a1f93728b210936eb92ea97d57fdc7c7c7f848fa9f3c0e623fc7d93327f1873c68a3ffbb518cff055a5fe30377d78e06c47147770b85b74622cd8c5074df7de4f12c322eb0c0535d8929c94442b2a47ff638c71ae58099eadf758418dc0cbd02630acbb922b0ff5cace08258ece0583ef247b2b89b9057cf3ed11bc12c0ba89e7e6811da46e0f0c4e0f0b152a2fd7b8f708025d576b28cccfad70772693303c7bf9131e1de5c1a18505e4d4245bb281d5116d34c5411de983f312cc55d05d3d5e7fbc04b01057a4bd7fbde791b06f18d9cb332397b9767c9f1cd0b645826e97ec350891aa671af5c511a904ef0ecf776393c9a25d207bd46936bd177cf0b8bc896d8c26ab3fa56960796edd0ae01f5b68d8178ed138b1363cd4933a2d3f445abdbaba2f39bf57e31fdff79b70fb05892e425017a0e31a439f35d117b8f8b99dadba23dc2c9913d0c2aa45a0f81e19a2fa65060e9f54174b463e0a8e9c05f76fc0ce81d175a865f0e4019eee1509262b8d931dbd978ee5e88260017b1eb54438e3ff1f4b37cf1079fb6c2f263d9563c42adc4ce90c735de3282648ac0dbb99828f6f3e4dead06140d9615a9ce3d2237358e45103cc258f8126bfc81cb961af37a707203e51330ecb27314a761806e8a2275ce500219107e13416a208fce318e28bb7100f71075562ed101dd64537e1158ee9b717d19becad445f978e2a820a85a9889cc8786a9b15095929dd84184b1810a6d19cd98f4b6a18d88c743024d1d117dd7e1cf3b87c450366b0511ec0fd17ba8481fa21bc244b5839cf0618b1a8f97050007f47f1c73a3800e7d9b788efc4a782361e11d17fd334983725be267546578f414fb24afc4635d9240e27795f586fd4de642412c0df4881ab211db9a04b06c40d5f268933ae10c38918da11909778673bf7c852989f3530ef831779fe6dcfe1dbf8167762d4640dacb0edb328be0e6ccb022da481bacf0f58bfbef72f68838b1aa0392a913f071a1608b15faa6b0bada2714f951508c9b2826c32d0ad037474ab4bb376014ee9fa8ba4190d3102e013e4d1a60898a660aa5e71e32706295b9b22f34902138c9bc7283caa40d2035afddc71cf40d1dee9322557d8875e6758095375148155c91c4ec837e689b3ce059c6f74df5705128a96b7b86a2b8d0969e6d6863848836cdbc1f2a3cd45b11c1ad9d49bd23b1bf74136d030c17a4fff27effee5ef036a59fb35a687b0aa105c5439a5518cb1010302676e1810daa844fa17dd0d144188a4f323f96a9197b3d49b435bdb1ab83f741dc126a141288de228468868121c7e668a2160bdaf1952830e1bc50cfcd13663e4a5d2c1993dde18d8c0f1db6d2206eb12032900f52744d972436772c7269923c904b82161b95b7a116fb0d801c52f2ba6f210105c272c785e7c369218f67ad21e25da184166a84b4e85c2478f19a199e50f60e57ae1424c630bc8da04be847608ab8b1e6a90a4f74dad9dd727027b10c8c0051de4cf9ecb1f4925863587f494508d0e90c1c517911f08647788ed91a03747fca5f283faffde86c0d8aa7074f311891ba265e615f62a9c50c40703f5423e9e0f2171dbc5a9edd6e750f49cb8bd3e2c7867fb4114d9611f48f93bd31a484ea42538d6b456dfcf61aaefc6d4a1ad4c0033090099a7470304a6f026f716ef5570316372c46848b2010dfd6a3e9f0d189ef1a99460dc618c8c96575a1d7da459f81881c102094883e8a8dc57c44aa320d82d422921468c439e4a85a0a19fa250c1a6e8f73d2114cfd2a8e9bbe03f94bcd9bc62a043592a8d39772096bf647fbafc9d51ecb17e7b1cf228eea1007310c3a7e91ed212ac809bdf216f0da0d71c90563a68ceeb83e55797b32ba28d0f55c582ff0152a671da01b863eb0205eafda95dac0920b93a4e1e7bedce463e51948c8c00a05342c40108314e08d19dca68ff1682f7cd2bb47da815f800e2337ceb757fffebf69c21eb9842d60133bb3023bc6bb2c35f0996de5f02972f59a64813dfe3b0af5bb5993bcc8bf1f78135ae35e93b5e2b5f463264469bf747166438daa127afa85f6080b84b2147fd3674054f07f4a554cbc3770c98da94a85d8db2b4013cbc6c55c3d9f069fa9c54a125d4ffdefdad7b5ea58695dd6afa445467a8c8028d95eae41ede5d5c7d8d970bda083faa35cc397e3359cfa2dddc890b38dbb6090f5613f8ca4493bb4d52f32ce1911e237765248fd99389e832a920771e526b15d79bbeb5c8116084e3d8d965702a050a0b5cd5dde78a14a1610adcc692bd1643709cf119d8fc362f94795089e085cfbbdb01b18a1abda2055d2d3abb3a6295937addc05f5429e5bfd20769c5e335f2afb46c1cad3d5da45235c7387a6ce276887980cb3c9046b8de5483ec846343987ab0cf4489dc76ca1c36b8afa78d5dd886b340c3caa776c1b9a3626e44533212b7005a7ac474d395e99fe40396d6f351c7c7c9f1ae0aeca640f01c4005b8ca12a07041b3a8d593c93c7a167cfda8bc5f5a0f10f2afb87b5a9b20a46a3c5ff58157c3c500d0f8ff48985d8774edc9fd0eee091b089a5049db42a01eee1abc991f12c3c2c288f2469f033d0ea35c4ef1197d757da3bbbae230fe4c94e0fb96e35335e60ba3949bea24ebbb343c9954c89aec151ff4ff9aed61111ef10ba09b2abc388532ee89c282e25c228422fb7e88c7c2f6c4aa8af1c858ce47759c43b3022c64c3f2b8557c9cc2ff477a29658cdcf88f333234209b18a9465ab16e3ddd1182fc385d6047877b03f68e3a211d1a6ab1a6dd63f48cdf39a83e172c1a1630052ec92a7efaad6ca8934eec04c6ad5f159c80996ebcd10dd0e6f2f1c842d960e40de0b6d4ba46d660a3f65e56fa1db6cfc76391ef97a02f5172776cb13d9319300fb2f3c3848e474a933b0dd2b8d74909e2b6354d1d77982a0ac41020cd8d729679d35657c26e4581bfe287e3c627a32948df873910aa91ae9208587fb4fb71ed7b516b8540dc5ebb903397be49904e8797e98302a1e773badc97df769664a38d5f97a795cc6d00dff3d8435bdce68e30eda1a92983121328c60fcb80b7ce55fef46b22fe461df90a9798d85551d9ea090373a3802d28b332a9bded1cec6e8a0ebcc70a5c75dcd395451bbd2cbd431b84d0e23689e48f82b377be4e9ee545074df9aac50eb4ed7bc140836df50ca1fd58578c4fe0eb43b1cd12055753461e77455a59d9e0d533f50cb060a32e80c3e41c89a37795315e49c56814d1cb438f083aabbd0927dcb35694fa6eeada1ef5e77be61f5cfc0ea674e39aa4869ff1af7cbee6c7f913f9b1a50a3f7c827f83657524d85e0b791082d458c02d29d81b8eabb8de7f0a7f9b22cdc93b8e89a531b36cbcefb00fc3f69c1421c0c76002d71ad6dd4b608abca187888f479dbd05b363cd9fbfc1041193a0ffb2d829e744dc9b0246a3f193c63f715c28871f236c5f80a6ca7916fdd780a6cc9dabdf1ca0f08ee5d3b1c62852602c3f8b90e38b8345d8e0ec82c995b8fab7e0d5c26dbab669535cfe40959ebca40d0b5f1002c3ba07c7e7f18da53af259fbeb997daa785330e4bfe33b493be3e1c9879ccdc09d33fb76ea3db41b00a38770b7ae2702ce3bf5cfd9c1b062bfd24d3e47568ed8b066fd119b6385d2252f1cfed6bcf71778a3bff167371acd28f0ecba8747ea258fa6602fee293c998c102e2360203ac665f0387ee4a18db2d695cb875d13817cc3bedb00c80da3c0ac8069345f61c3de0a784ae14a17fddf7d1ca05fffd4d2f2cf872ba22cdaf0b0d7d4abb6873aaf6eb621e23468aeb368ff01e330cfba4969000c013b46cb5d3992eb434ae24b300c46e9ae3bade60d10b269f4e10c1fd11018b8afb1c9fa1f357de9e702f90a7e13373751f4f0b07ff0233c467d01e0aa52ba4e8ba475f0fd702fe4cbcbf997e6464fd142b725c481843afa321346eb9888990a253420ed2b40a1192d06ca5ddfd81b4198c70da29e56f62e737c801d642ee5c211787f23ec243224b70ba29b9f84cde748ae304edc5ddfbdf5f1613a37968c307a8d16dfc843b8917ce1ad03eee3b3fac554cff28dfca65d6bbe2ea039b98fa05f77b8ac1350a695bff65e76df8aefdd8de65c54bdc269e1f35f722c9f6e3c1a0f80ef6f6376d6d72c3b356a74f6f6dee47bee8abdb3ff9c6c7ef82382737ebb2c06e505cf7ac25497e5facd60430870597082c9a74a2732511e59801f20ab3da34e0949502da3687b8d7bd341f62b8114a38722f972cf43bdfc01e7a576937b369ff8bf8677a970b8f55b77716d6f7ec2de3ed46b2ba8f8bf39b11dca6399fff353bf9bcda003eea8b7c26a1ea4de7e453df8d9b688955c3dd73bdee455213ff36ca96e4ea84b4d1bfad264db939fb30fb4d5339f387e652bee4539921816e53e1916288c950b2ed0d859f731e802c8fc8f4f9c928d14b34f175c516ebba27b980892dd2e885604022f3d259af7226aca228e85d642e6c055ae2f14561f4c01ec63922810878124cc3dcfa71912a3653847a91bb47de225d7dc92c4c0d0b4319fe3036d0bcc76bc881624d17c5dd0692659024f764b2d84da4b14d08752ad56244431ca41aa85f5c6512bd5fa82eea686cfc42cb7936cc9c20048a953af01be494d520588e14651c51093b4a6705198c320d209c16a92290b5ca245c1f4566ec0933486f585e630972d353b3a7b272ea65af660dde9d1eeb6a1b022057f6c72e1676e320ce1e1158f622378f06fe2b130b99c30431126e23fc8daea13933b30eb3158e40d88818adf65edf962001f7404d09d80b08d40017029250584bca4b1d582790dbcdefa51e1e6912eb442732b4ed19bafd9f0cb035fc427077ebc09d38f2be33d6a165442cf5f719faa8d3d04a3dcbccfeaeec3a8b18760cccd52fb282ce67dec8676d99e9c4b3106b2a1349595e4813f192a55a19669819d703edecc3a2beafe4013e0d050d845a6275d080cc36cdd97b0b5684414dc86f1989df1af81d9e780ebfb6486fb3d91734cdc34a6c22c7b96d789b4387fa464d1a048316899847fa1900ea2380a2fda201d46d3878e53336646326652ce36173c2bb364674e8fb4012fdc041c2a150598d0c6454edaadaecebd672f786f43bd1dd904d902cc4362fced751ca3228317b21251c5fc2c75a61671a8b1450c8897d994966888e735794b9ce0d76a64490f01e3e566189ba853ef2afbbdb0b34077fe5a9ce5d09de08f18a5607b09201b59b2731a3fdf65188ba53aa781fc613f1b7a808fa619ea71dad5304b8f69da8ce6cae67eeecfc6176064808e7ffa463e9218d3674ec5a5ef27c007739a6866cbaa71236fdedc687eea843e7c8ed182726ffb72d11994fc067f29a830b0e02e593fdd36a47c52661b7f5094915bc0252de28b070d3b4fe89e1143c3ec2d468e0fb1d0e508c8b0a37c4585ecb7643f8c3fcd584a590a3d9697018236790658bcdf51cb513602457506d1b1b59f34ab4ee81ca6a2740ee05474c92ed20401fa52ca929f304fb550348cb14dd340a5088f3ae49472e829e8d726f3257ef189bb975f568eb2127bd7c76d45b3ebc0a081eb4a2ded0fc11ad2eb72401e41432239cf1faed2c83d9a16b70edfb02a26213a1b65a0eb4bc6a94a53dac7987e4f2c0abd81f691e5de23a6a5a1a068c2b274ba450397f1c2ed08b0a0eecc4f66c9d8902a86881be635b6f7291b35dfa3fa597998ccb41768674e32aa4bce815302dcc271b832af201a76c3bab982ca4a37862c3a6e237fa3515d71307f41a04d3caf4ccb416fc932b148f52c06c445a56e947be00d72ddf5f771722824eb94a63183593571aa0bb47d15e9adbef94f807a80c7c26b379d74f33e12f334aa58b7488d6c541e23dd74a76e8bc972f87cf5f4ccc3c48a2c49ded4f7e702fd938cebb9250eeb8fbeca823ba053aee452912a70463c44514af781f9004d0c1045d9a00ddeb3c101cf7010598f2d7713a9ffc870fbf036c4531fec4f89e4ad2d70b5cdce872c150cc0b0bcd2e6cd329acc25d3911c00cc0d01126ce6026703aefd204b2ae482bb8f5c1730c2848fa15f8406b450f990a40111f6de0ce9544e1266c40ed3cb737dbb1b36961161b99234c45d8188b8f4126d7b0bc22d3b7b17fc1f22ca0721c28689ef194caa11e380172aceaa24ffae78eb4112de345cbf8adb4158f73bcbe681ea32c731ce15fadf04bc37fb63cef3b1b4fe9c78a8e4e3e055d538be5248b79a6fd38805330b1a195f8f1d8536fdf8e40286442b438e23f5720b15072e01bba6f56d62607fcb55bf5d805102008888bef3a8f56a4132e224a15233f9717119d53d4da062bb85716bdbfa611fb5152687c860d86834b11a885a7f673a547afcfa1a6247d153ee73b36f21e0553df868f4231447a3579ec86081214bc5a075db10aaef6a480d37352683a82ee6e058ae0a36dd947af9c5acc54403e3556029ce343140331017bf4a3367b321badcc658892c83ee05e730ef49e71f4140ba5495bc95de863bcf6d87e52c0db19be55a8762f6122ef1db171bb30dc10e573f5b9a6bfe63b5ecf25aa45ba3692472ebca31533ff5ef2b701770b45d3ec81fd21aba8dad410330ea0759edb2db8b03493529aaee9e1055277f9f648cfa76bc4c5e83956b4c360d70a9eb3a43cbd0a8b5f9869c15e486e0f42ef39416952f70b72f55779e6006e8527088475fac26f50defe533c7ce1a1e68e2cc3c68ca96a1ddd49e07d0624ca925ecc72611099e948e37b68c46984d6059e4f8cc69b44ba204e7248694171a2be53c2b40574b0c06be09c52b2d103346e8a955750ec633df1c445f1a65b2810701498cfcbe1d6fc8465edc3add3a63cf9775d071a2b944836f6ad7747fd1168b6293130026261f9266fbfbe0d6a1c3be3ec5179dfd3a9eb0a305c662411cc290c5e261393b2819c083cdc311b0093a3fa7cf8bd9ce286a18a26eefb0b030ef80a73347fbb26c36ecf0b1a4f5d51e1f64345f1786d422a904f72aa93a927439754f4998798e65b33507801d08c30ebe5bb2d45aad4ba524ca5ab9caf7cba79f1d1719eb049cee2505517e674ab130a27c41f9f778b8e5ea170accf78152f31207376bca53b86df4c38ab27de3a928ab0e789ee628e005cb06547c299652b503b90f947ff49131a70a71a4b032f089066463afa8262721645d46493d68ca548cf789c2838f10232cb557c5deb245cb90c0570cdaa742bf2632ef01485bab76d7b5c8f3f71bfa53e5e2a2a188772bb85e6dc92926f07e1f92b75c93a955338363ba73418703f7a28151da4299a2a84ac00328bb2c1e4c267aea960d2dd1abf2c11e674693970d3622c4f1ac255687694d69c9f19f0a6230fb2282966844e0e28f8d34dc466cb2f340ba0337f8d208d55a6a9010c5539572c33f570ca73bff9ccf3042388c3e0b9e58108d67c77dff7162e3ba2a321070cd1a477878bd447fcedc7a3f048b000b5fde2e19887a9a6ffb2bc421683e298bc398f1343ddd5dee68cda8151a559c4e2276105c6ba9986c11e63fa6ed79a1ae6d1159fa2fae385a418d767f6d19c6a0496a6786748604ccdeb2271b0c7443cc356507f2265387b7558311576ca63703b54b206ccbc3109e65b930e70bc583bef841caafc0122e567731b103f9992cbd3d225bb9138fa324c3538569612f05b15e6bfbd51a9a95860c30c138f45eb2a31020c56a61f2a7a67c5342c195d481f559a7864ed0cc053d18857ad7b1d03cfb6694b3c4339980c2c8470adb8559828b633a0c4109dc1ed1ac3a8ee1390d91aa46e895ce0c2204e1db231ade0992a118d0f8c26ec5e7a88b4ee5c16c1eb4047a4a5b2c524e2c5ccfb54eb2e0010caf2e3076f14a13ce41e754ea39eeb44d955a898ef18fc9a15d2e7b7dabe8d251f992dc0db5e4d0161dafb7d9440913f7f9d6b600230cceb10a7ac9ef9265ef9e50d73140856eb37c5f49e1b00ee9b7ee457e885a5ac25e647aa4cd2e684b42ba7f2f7ad10ea57de05b045d6394b3b8f9420fabfa6342439e6e54999564af3d290a10280b7656a17414f1c55012a5bcd20b11c0c86b0f0e3a6d8ec90d281c633da6d5e340606bb6329e591bb866fc674bdb32e4ead3a9d1f33075b36333c5569e39753ba632639cc2c748fad0285c32027826747eaef2fe494ddd4764ce2ba06d2d9a34a94eed5f9c2b1af3cc8bc0a03f85e8b922247308de6ca0a8fbf00acd5babd1e540e40bae02bb292c62031e5d451e0f3e10a0b64907db742b084c98a2283a2aba1810ba4eeca0e6dba682d43da50992524a49701f3e5ce9930923d13fb85fa694524ab27464613a036b4da0b56d3b5f12940eea0d0d3dd6d98179d1121e2ca70946c6fe116fb66c55b283b50f9b2f3b051f3e4be5121d2cd4a8bdcae6d25319d36f3c5f72b098d24c2c3e0713e45eb6f1e40f94e080ddbdb3c749d3735951c32586e3f23f4ad8584937c245ae5843cd62a31bacf6bcb539d750467f50b5c08e0d56baa49841a49c68a1db8d6792a641b2f2349a60328db8aca4a16ab0d239d62c5bbe969eb5dd78b2705690685e87a371e1685252301dcecbd260b5e4970b1d73e5fab56b769ac1822c79e7377396fbf16938303f02192ca60f3a33e60f657bd029122459681d6aeabda6dcb1f78803c36a8df5a2ee366f75f6cc6d3ab2065463a5e58528a64ff4ed9b1d7c1a0e8cc65304481674c83554cd51a1fe572c2f9accc73a463853ba1831eb2584faa1e8cab965e81b4f18c7d680302b79b2468de9b277f576e309f302359c415e56f367e454be6d90a57b1b4f946a708e6858625a54bfb7c4b86cd1598a58c1440d326f88bd6e3c352e90c533c9118e6395c7312a44541ac7a8a8c4b0c37130068bb9d4a78d3336f4dab60d726431335af61cdb86aa614b5d70962785783d3adb5fc59688ca09c650495db82ce6cb8a999b822fc27eea45cb7275dcb6237299af3d962cab514cc7af34bef758531d9817b4d258eacef1ee3ec718ba63e1709a173058aabb5d27bb76442d35afac6d903d8491d5539ccaed6639e610abb4ab1f13a6a746d6438faf355290b1b3d79266c5d59fca5cda868f98776e3c35aae913c0f5f839a6292147fb992a93166fb1e83493e2d79a36a6dec6f305a6c38e681e845125700bc59834c5c65cefe7634734d356b264d4526aed92cb7402b6507cae3d06152b82d175e3c9c23a46208ccb8ae6b123293b1046c1b4447d341682ef5f4bae6374ec2af290221a33342b23538dd4fa43e6baf1c69333f0828554256ea815dc085b522fce438a68ca38637d8bee69c3d860d3976fe309b306d468bac336e9c53b6ce3960c17ac7fcdc4106b116e6b4fad01bde840353842d20b5a9056db7b359faaa38de7a78cd1c0b4c4efa2c84230c157bbe82947e7dea74cc2588ebcac6858a0acebcaf759bd112794fa9c8d206ce4b83df7e0768c06be74d891cd21662c84b8bd8b4c69d2d631453886b7919806df91152cc79e13db169d2a065bda78c274388d5da08c17a152ef39532932d632880ad2a36df89aaf83b07de710222d3d2a726e1b3eb54a464c2936fc7d0aa327e5be18c345e768193d7c771453b0fe716c4a3d17d9c5c49e188b531fbde7a3674ee6eac35809b2d58e9f9b9e507efe18b23ed55bfec4bc1342cd1ee70718cbb7557a98f6a53ab3bec711b234f553ee9c61aaf62c51525fac8eabdee7762b6eed70e3c972a465450313d3a2e1c068de51b032b17a08b26cbaefaf8920c8ea86dba276422935729c9208bc58de29ad37a778db6e2a35389eddc552e91a723755f74d31e60291400da785d33992e9c709b63bf725f8ba657271e37984d3791964317cca8fa2431b1db5db786a5e567a0817ab57bdc3c8ac39e288d8c61326a605c87a861a8b8a53cbc7a97cc381d1dc22d1bbc4a242703d7d3616a74989022d56ba5ed462aa9456b58e1bcfdf828714d12413b41268beaaabd27795995a71ba5d87f4df735dc61494c1ca4b4c54412986e548cb4ae29618178569896a64b19862df4d99fb9836d5369e1c1897154d663fbf34122ca8ac2a75c7c4a9a9bcf17cd8e100e9b0325adaec2145343e82354480e4c77addaa1d22ed7e866a379e9a940dd312b5d54a317aaba75be82e3e7ffaaf26e8163dee8c9ffc6532998cea21453433f0f4d17937e650d45d663512d320179a467742cb2ab9734acc09652fe4a5aa9c6eef7b0f5d39b6f1842e1c8d1a9c8e9107b28d5e8c9f984666a5f0379e6a703a4634f9852ed758e7b7179b6e3c93a6f5f43da8b1354bfdd2ddc6f3b9b04cae061b43b120b795aafc4f8492d5ab9452a605090b4b662d73ceb16b8409bfa5dd786a3c3d05a885c3d1b0bc8e46038010ac66e560667e5450b17631729490cce298d8796f844f75741004cb7da2b8debedeadfe379e1acd5621d2858a162a405488a81011a2e260199d0e22d1201f580c2aa7bac5a71445876ce3506a3cb0d49d55356bc858fb531bcf0ecc8b0a912e543219989698c9c00ec7bd3015946234cf438a68cee8c06a57de32d3a7858d62db78aa10e942858c4c26935121224445e3b292b60373440807966355ae1a4c8fb554d9369e302d51a320cc4a67050cd3121576386e8714d1a00da4ce0534a0c1400692a6039168328de674c4c117c7406a341c9823493aee022a16b8408489b1406ae046a3712f2b2d11a8c0839a0e60d161301aa0800326f00009703a1081074060020f70800322d080959616ce06186081054040011148c0b60452d6e0a80133011fcd09019f5283c501d6602d1430406a382c46382c0e2840cb0408909a0e07864560005808c00201500480170d5c9160381c2b1e839d0d54f1811ea981463480921d38494790496a3a0cb2380dcc1a900325a9d1ac01f5e9c01c34c088384a5a5e981a190a60f1c016e682a28146ec40008f1ff060438be7496171830a68442ce023e86862888135000d3632a111e3056fe471068b1c2e785ae08234145151020b0660068c1d2b383247191f07155c4184081970d831069136a4800b39c4c0228c3686f4618810300a01c623047d410314d081820304d981177358c20e38365d6cc00e383627d8801d706c9ee74945cadac01170c0312949052a4e618a5290621479e0218a50dc018a4f78021397b0841d95a0c424241109483cc2118d60041d8b50c449224ee64044209ee7e9801d2c5ed4218d0dc0a08d40acb8200e9b0f18a1422c841d30010d8e1fb004a0e102cd7b9e27152fa0c20158d080e7794a5e7b01d42180c70f9878430b1f7461831bfc00668e035c81821498327a6041812bae7881c23381e7794aa4f03c6ff8c00b1e7801d35901630b11242c3080850b64415890a00258b840164e89c11ca2b8e30b61482718e1294219629420e5481c2947be0a4ec4f13c6bc0e752b289124d28c20d4f491b382c753c4f0f093ccf83d22302cff370e079ac5843c923801e54b183941617b498c075b470c0f3f468c0f3f460c0f3f458c0f3f45040029ea747caf3f4f0f13c3d10f03c3d0ed0a300cfd38300cfd36300f04961c1e229c5939246049e0c1a3f7ebc54c0484cc3824198950abc40989517161606040d2c1816282930802393190402d8e1381018715971ac03d323000d10408f003480043018c1f390008be7e90180e7e971c5f3f4b0e2797a54f13c3d7a3c4f0f94e7e971f23c3d7a94a0a0e214a6789ee70a94523ccf73451e78882214772802149f3084273ac1093a36a1894c3c33b41002e18067402c52de1d4fca5379526660823abc1ca4bc12780567c318de161e14de125e049ee7a57fa060e279502ef13ccf1af04812222e02cfb3ad10cd0878b43b3c8ffe065a063a51c526d63d671001460466c623601a0ca60fc0ae88c353851dd010c58bea0c50d03882c607de804663799d3c0f0d1d9a3b684a349c97aa33a1798d8f17d05185dd47bca08d177c0f305e408317b8bc40189d350b714624ce88a30717cff394fc6ae6e10c22296774e08e1eaa9a6d70411c485c60821e1f70c1113449629ac66545f3e34787b349530c2de8440b06d182375084b4e0122f0865ca000b2d18411e28166841e6d90d388abc3b8a3ce1b9b0946d1449000b0a81892201e04497154528d960c10e58200412aa148c19779821c721ccb08426fdc68c67c6069ee7794acc3863db052b10431b588991b2023056d00032f42a2ecac8434a195f5843f3fa32f83250fe0754400515d440055ea800081d4d87d3e9e46341c40e227a205242e4101a65974102888c20858804c8b083089c65195c41861b649c41c6066a40860e605c981a1ad736c518738ca184e779504ac6d083a6bf13630831c5f33c4f49ca1899bc8e14eca0bb798e147c408c3b4c3e90020ec0e63ec421061a1658c2f3f4c6418c06f4c1012962943c4f127644c381d128cb11c60b438b300660028030cc08634818286889b0a38130be401833c131a40e6d94a0e4378624a08413ac8c00861c60c480610246807105309600c60f1e7c71df1d08b1434816841c799ee729119288e77916f0a408a143cb8a0b64d1c017e634302f1d8e1a2f2d312ecc697ad71072802f3cf1451bb620e48a537c410a232f2dcf05be2ccb172ef822026d7c918295568a060ada80021ea0a02405055f4081169ee739c093820226b030a7d1c0bc705c931041c153879220a360f7c205415282ac200818ce295ec491e2851b23f0628d142fce48f16203cf93e2c54a6bfa91002ed6e01a24b9a28e8e29d858e9441d9d3ad85899a38e4e1fd85889431d1d39d85881a38ece1b295c1422850b369e15f5a40031450a90423c2940daf0a4ac6104205800c2460a902c9ee7d9e4820ecff330e29428763c0f4a259ee7592305081552803c210548129ecb4a1a3f2831893a241109483cc2115b54d10846d0b1084524620e441ce279500c61828d0932f13c4f4a09f29052020b3c4f218c909245191e232e2b6930180d0beba010e2799e2b500641823ea490600329ea119f8727e53fa6f81152dc060f163fb0f821884000e20f7ee8031ff680063de4410e3cdce1799e12143ba0aca10e6680031de6208737b8a10d6c789ea704650d6a48031ace600639ca408631b018c2c060f8421c29a801285e10238b2a70a001c587279894b0818d32cc71451573b00213ccf8c40f328cf0830bbc610757a31157bc2cb600458ac92ae0141ff0831cba0b1b090c91c21f04b1840c50220f51d821461c27ff092090e8020a17e0d8c21529993d3c0f4acc1b4308920145c60e2decf3a064010b57b0421133aa40852948210a6f40615fbed302d601117400a13c010d27b8d104262c4a1290d0e2cc782e2b5f90a1487efcc8000b3230a4c5ad91828122a46420c5082845208209ca10da50953254be7818083ff0410f78b0031de460c960243f7e5880011618c01849d65003094a0c0acc8f1f2866a0bca074505ab0e245903258586286f0ba784bb3701a0b035d491b232f2f281105a23c14d750180a1a281a94173c0fca19cff3a0b800a5053f7e28921f3f521e1024e50159b4b8359e07a5080a0b50cc4059c1cbcb0b2371e1acc02c921f3f9417c98f1fca8be405f9f143913cf81293c519efcdab298b33120b11b46004aea345162f48169c38821f3f3af048cc8b0b1492850b14025bd810e6f292c5081c2c2326be97172dcee87c980e1323c9e36c01d361475e90248fb3c5c79c81521298c65bc9e205491a73c66ec764a1001b3c063b6d3b2621d1bc1c794951404a8a027aa424e00e0e60f1630309c8c1c73858c6cbca112d5e568e30232e2b1dce062686b11c69594949c1c19117226a7080a4f8f8c3f308c0034f8a8f23293e22f07851821404e4e1190191140458000f07d838a206b085b90fa0c101cd0690c0ce919402c8914200395208108107076cd0600603700386c1bca40820082811408100ca03501c90120037d6480980908793028034a400608de759e3b9a45481527a1c494149c4f35cf154d1837520eb2c666666dedddddddd55555555554d29a594524a29333333331325945042092594504209259494524a29a594faffffffff7777777777efeeeeeeee6666666666dedddddddd55555555554d29a594524a29333333132184104208a1544a29a59452eaffffffffdfddddddddbdbbbbbbbb9b999999997977777777575555555535a594524a29a5cccccccc44a9de9b575382d112e4614129e6c02019b023c6e3238f323c3ef260e3f191c7e6f1910790c7471e0a787ce05189c7071e73787ce02185c7071e34787ce09182c7071e20787c88028fc78728fcf0f810c5169ee7f94003328fcae381f6118a4d3c3e428188c74728e0d080c74728a4f0f808c5cbe3231424787c8462018f8f3b4cf1f8b8838ec7c71d74787cdcd1c6e3e38e341e1f7794e1010d3ccff380c7011548c2e212067c1c30e04a87087b796e91b15ee0e3b8645ab0706170035da016990741006192342d321b981608b3a2450686c319036af1a08b1aecc84b0726612c58b030172d3a31ce715cb4786981812f2f2e50069c4e8489698dad3c18b681897919c2b6381293060786e312848c24302b2ae00c69090261984b90ce635b3cb6c5182f1b98ceca166c0bc8c260c8809d18989813b0b030204960569a13470d222b1d188d1197e7791e14063c0fca029e07450109781e9494e741f1818200b8d22172c62a12840c0d178b8b30800c599a31c218638ca5594254c045186068ccd0020cf6f21c7c4290646184111123c9c764d102618218e1b0bc20d065c588cbe2048c114ea4974e86d9099bd8c34b27b389a4b30282cd32b0f0b18903f8d084193e3441878f4cd401134ae0c0064a9ee7819d4e70e2794e3671a209382e5187974e2649d3bcbcb023cc65a565a5e35e56de4bcb0b53030b8e17cf739289174d1a9c172c3e300206c3de911706c3b8b0040f2c71c5f36432b08543063c01841ffac08727aa5b57bbdfa9d65c3f537aedaa63c288952e7ef367e3d7af19a2636547e70c2e640bfbb52f62716ac6dedeb929d5da2a6225ffe49cb596f6bd739988952fbe778db5e73c3d772673ac6e94606bd59139f7974c10b15844c990a65d983ebed4e4a62e981c6245c40da36a47a6afd51b62a1cee7d247f5943ff55b88b5eaf9998941f62851b2614288a59a7d849a1e22a6c89ffa26980c6235165dd26c0aa9fab7ca6494263551c144106b5d46d7bef1dbbe4c4e1388952fa64bcb228c8ca163cf0313402cb66f1721c75864f42ffe613da4ce1f7a5335f1437eb2086143a9ccb5aa2f4cfab0d82aed97b6dba17f827cf8a8eed4e1724645bd87d5b61b47151974f7b4dbc6d3558874a17202152242543cb930d1c3aa6dff550aa1fc54bfefb135b6a4108c4c1f261798e46139d6922b98148aadb96606c3b8505130c1c38a287173e2cdf69f62bcc3f2d4d82a21f43a9baba2b4c3f2cce464fd54d9362ba5494e438a684aa0605287051bdcd6f8dd26f274c8840e2b46d41cf4572c327f0362328747dcaa3e91fefb37f3736ccace0d6e6ed4fd672287e5efe2839fae39841a4c4484a86432308e1d69411987b59129141dfb2695fc221c9632e862f34b2a9531d5deb05a23bfe71663430e2adb78aa10e942e508a7c345267384d3794ab9211162e4ed4a254ffe57f98f11da7d5598761ff9c633e645e334d985c302249351438a684ab660d286c560f77373d67cf48d3688091bd66388f5aaa34f4c2d536b58acb9a89c3c3dfc7c946a58317e529bcd2a59438ad2b0206aef1dbff89fe8211443888a0a1121ad7198a061296cd56f55ec6650b173d913a8008941609c1b2667580af18b90955b05a3e3cc648eb01694523031c342a8e522e690c187dc6bd5d1a2d3b92479593962e27cead2b9047f73e3407c5192605286c5528ac96ce32a777ecf840ca9b93904dddd2ae5de6d3c9b0e9331a87d49bbf142159b956b3cc1c48491c9c04e767ec2440cdb2d726aca7e0893307853ea32a5f386da458692244cc000f31fea3f047f618369a848987c215fe2e674d54bdb106a3a9c842b1d2270e318904c06122671ace81263943c35d52de56e3c3d6305132facb4de4a6982ee96337a17b607265c50ed6fb58b904ac99177a3a79a52cea942293dfe8d274cd781091c2be9228d2dfdb2f6de511097980d196e259379693404932dace8a87f1ff1fabf87d0c6133e8e8b267c9c21fb265a5870993d14d5fb448f35516a6192859558736dfdedb54f0d061a7915225dc0950e11215858719955fc8ccfd4356f57589bbcc194dfcf76dd2a2b2c8812b7b45075156abd26555829b9e7b0d375b28deb2c2654583155136c47e9354bec6dbcb3698c4a73f22293512122a43d152242543219a4d98139a225593099025a5e4ea4ac08adcae586ea627a4c514caaed4522984861217570d52bd544dd36893186ca162a4054b4501143c8c6984461254b1b9d43eaf963769afa8dd5abda124aa5103e866de3b97130ace35e341b981535342c2cace525d5040a6b1b82df31b9e8de9a71e39a87e9705e529a3c8115fafd57d76575a5144ccf86966174dfd1a84b260c07c9ca116e81891396b6d5f675efaf5d32f418f4a27f48110d121337d6a646e9c5d6cb28e993c1ca4b36617d6c885969bfe6103fb6f16413262ca6203fbb73d95057ddc6d36585b568603a9c1798b8d2799b59982c6121d54ec9f37566328f2493c9d4e42349ca4409eb17327e97df9c76b2b7f15421d285179b17e6452693c9b4703a27c864f6f345d38714d1946cc224094b7761ba161944ec923241c28adb5c7ba6e2c64f53f2828c137cb105176024e9705a608bda32981c61a14edf5c6aad254d4dd342b4d8220c215d743431c25208417eda9aa7d6c0a408eb918a889939e927979e086bd17ee354a6a993ea21ac7f7d8f944b9bee16bd3616a7a78e9013aba60d79e3c9c2b29286521c9808617db3850c3616bdb18b9e64601284a5aa58f35309c1f7ddf7028495cd9beb92f3f48f15fe60a14e65af8cb89f4a30fa604184208c89db2bd3846ce399494c7ab05063513d3af7d930f66e3c7506263c589b2966beb7d1db41861b4fa46b98ec602942afdd3eba47c931d1c15297583b7a9558229876639283f59e6d438e54274dcbce2f2638584e3db6da88bcad267338266c2cc838b53b748f1aed6b1b4f4d312849c5621a3f253bb81bcf672941c5828a195a951c7ae614d28da73ac572cef94ea1b4cc696b6fc414ebe16bbc11328acbf0f3a56150528a959ad3b49bade90ea9073b2f9c8d27291654082ad4506ad890a9da783218f6d2a6663b25a3584a35c614afc3e7dfe78dc3c719a250e6b19e2933474929bbd2751bcf7f43091e2ba5e4a674d923f51a34a25e6cc145a6bd3180a878a10244850c15224254d61670a5432493c970aaa144146b3b1fe64309a14daa5aa6261025a158c8c54dc7fe215e6dd04118f63299d414a2e48ed5d84bae2fa653ff924a156432990cca364a40b1124b5d7ee794b17cfb3a302de6e53fb112aad68b3cbedf687e7a62a957ce8f696b57ea88851335493a30af42a40b954c26a32808259d584e9982aedd93693f569c589ccfeff5c25584a2f3c6938b4c2693f12145342e259b58bae935c8df94fa44cd4b34b11cb6c6523e6fdc870c6662a5eab6fc185bebc78f03e3128403e3b2d28130415a389d133878848c8c6b7ea10413cb99e39411f14b986ea30a912e32190791b0bfb01c695961946c945c62a92bc82e3e841ee4f425e313234a2cb1f4c157cca2c3b788d9379e9ce8b292c96432f04812229b9abc44891dcbb1ab6ad517f9e56bbef1d4a4f2a0a4128bd5abb6fe8fe93725b4f18cf91c94506229c396c97b5153c84d6d3cb5062593588e3eb1e2a6d63342a5369e1a954a745052c74a94d8a1d7d87b286d4a24b1583786943db727d6e922b1ba31a7b8abd63dc6e728514a85c44a550d31f8d21942947ae3f988d5142ebfe634fdb7943862b582cf9363dfd814849b464923d6f7bf4e2f26a4d225cd832e6a70348f71583ac12861c47afd9499a6b34caf10a36341859e3e6bc5f231e7849d98170e8bd37cd21c89d1a4c1e1b0785221d2854a0a5480a808512122444565b7e7438a6890942c62a97a6ac536a542fe386d3c559ec7a8b4ac6c5e3248549ac7a840e7c2d1b0b03087163a97305c4ed0454a14b17ed5a6ee8c9abb9974e3e97282f42f473859928895b9e853442dc6e7e7e21c2b39c5d1132a76a83943c452cbcb58ea8856b9d8f0108b3dab62cc15c5cff70cb15842e6d879c7d66dbb108b93a14c49b1f4983e2116238eacde693b4a8cde20d6b7dbe7dd9bab9862278805d34197ddef0df9432d102bb79dda85bfaa1b430a10cb9f72cd4a3d7db2f887e5bc15c3866f599932f7c35af8da7d73cc1e52d6ba0f4b97795d520c616b30311f965bd6f8bc3d2f7bebba87059d45e54c31a8ddfe921e96538c15c35df80a75ccc3f24fa42c46f6203f7a3c2c56eb94bf478ad2b9efb0d89ddfb5efcf478fedb010da54e990a974ce451bcf0dcc8a1a9b047ee19904a6a1519a75580a66740655b6f69a33db78ba40168d834854b22609cc4a871df91c52447382123a2c86efaeac8e3bc27d3787950a3a45d1e343abdc580e4bfb5b54711f35b3a610909238ace7947b301d6bfaff0787a552b5a7ba1ea1e6e72b7983ae624fab52352d2b4feaa9527ce9b8791bb1732c71c37a895083f9382a7beab4f1d42049e37b11256d5809d1a2e731be965a616e3c91a4a1890cb26896931f4ad8b01a832c727cec5817ae6e3c372f3147940a912e3a61bc679788a2640dab41e831a598dc796b0a6e3c359cf76794a86175c76e1fd593cb085b6d3c3b0d4ba5e7d654f9dfbe6bdd78c244c8a2616110e64593064b4ce35421d20511212a0a96a061b973c7e62eb243cfac67582fc14f19a16a6861f237c34a6cdb3b73985a7faeda78b20a912e54caf88285b9242494c8b19083af9da27e745d232e9a8446de6250081095325480a87ca102440526068c4ca603d3e8b09608c7808f332493c964321065828fe3b29c69f2464919563b524cbda7cf35d658da786ea69618971232ac670a36def4387ed4a4369e28b5c4b88c617dd4d7f7d9f94de33e4d2d312e6258cead5b88dcf2a7a6f1379e9a97959461f057eaef492176f6e73c3e7ecadbd5c36635a4040c0be56beaafa74711bd68386f933b302f5df285055582cc106abccb14cc8446491c2b31851a1d36e651d36b2cf1c252ca25b3676d4f3516d1c6530de8a21d484607868c4cefc0bc74213dadb3ef3fa355efbaafd1b9a87a37dbb63b1756442caa36b4ed254af756d680ad70ac6fc510a5065b29a766522f4ab6b014821a2172b0d13f04d985d3d2c2711a16d6b2a212c3b4c455a285a5983b968e3eb9429ea403e30219e6654588cac2f28858bfbaf7cc3156455858e9b33543d61a82be0c598ec410415758aaa9354a8eda9453a84bacb058bdb7ecf9262b971ada78328c8be9c09091f9302db10a6b63b2e728b2e75c555f29a1c262f58e35629bca2e656bf1981899cc4b077e0f29a231523285c5d2b243d7586d7afe8d91c2dac7de6d3ac75637916faf4461bdc36ce756933bbfd76456f2467a77eb77a657aad2d5fb6a62ff6d53bbd8db0e85e5e0b38aa9756e8b0df548cb8ab692272c944d299752df37828f369e1a96981694232871c282bf99acb97fedb81ddc78a647bb4652232b5b7cb7c4b8a81b2b2964ea796465077fdbc6b385d389eae53b302faa254d582d597e6c855836f5cc71a24b10b7e2c2c4c86438d16545134b98b09aa5d65874f950a918d5129663ff9cf63d234d09612b61e9a6e432254e51d13a5de30531e2c2c6c864329997239c7c254978b6ed5941c4ad2dab10e92293e174a00c5c382e994c4b8c8b0f29a2b941091238a5e257f66467949e99db2a73cc65722f2ac43c298a2939c26a7ee81b54f789bda760324189111664acdf7d53fe55eeb5e6a2a408eb39ab8fbab0571fd4202d21c28a8c45c79fa2b2f717dfc653c3c202dd960c61357b4cf46e1d730df5f790221a1794b4b122e73f538e35f8ef5866322c2cd0a116c24a8d6272946c3f93c1e40259346bc0b7894b82b0fe6143e87f1f44fc126f3c9f4b0ca7a3591694006179ae4b0599b1b6ba0bbbe4074b63bfe7fadcfd0fa5231c8dca9897958e112ef1c142ce65832e6584bb8c358deac162ae5f6bfb14130aef5876630945458995ed11eabba8ebb8d52456b687ebbcb5f832dfd7b1de27a4ebd053fb4ebd24d627776d993db6c4f223b19ef2e61f335db9650e89d55c1fa7728cc9bffd118ba96dca5c3e7f3021a723d63be8da333ff50b9fb311aba5e689607bfdb6cbc988d5db7c35755bc7759b742cd731355b6ba6d6747311ab17a51761bb72313e4d452c4d503976db7c18396522963be81e5ac57c13749973ace79165db6edfc45c262296c7f4afbf99a223957988951a64dec9ad2ad80ca52156bf16d33dc26ed135ca422cd5af3bdf2995dc104a42acf7ac3554f9b123733888c554dae65eb394ccd913c44af9327b61c2ecc45e2096b716196491a1e75a7a8058cb0f9bfa774aa9ccf787f5da2284e2c7d8dc3ee787d51a4af650a276edb0f5613de449a3a2f8da7f647c58c9fc2c72dcc372ab301d63afc5b44f0f0b29bf0793b5bfc7647958ecdd3e57ca5b7fbbc2c37af416c1ce676c63ff1dd643d44d5b8409a3363b2ce79a7d7adf55d5eb75580a396d28a26d86b6311d565410f9a77cb60ab19dc3da8f2cee3a6b4ea52787c5a06aec9de3d656598ac34ab0755325736f47382c871e622f21872939956f5828adf337c4603b941072c3520d9b2b979e41d80c219436acd487cc7d44ffbc29251ea0b0616944cecfd1dd3108dbaf61a177f6aeb913ca6c91d5b09e420b1d52eea23be62c0d0b6a63c9a5f422b7e4ca685890456e4ea6c8e9abcb33f8aa6ee4c81d75aaf6e517f9a5e68cd273ec12344366e4580a3e7aa7d2215bd568cbb060b24feabdd654217a08850c994101ca18164ba95a74cf4d8e5b3bb318d62777f89c4a3dc73c325f01250c2b324b2e328ab153c27560584e958ae8bd4c0c914245f9c28a8c3ae9536a99c24e4ab5b83550e258c9956b758e694b915f5421d205cc0b8461421cc50b4b6373cfc1a7dc1bcf5721d2854a260361565ed490221a1ba07461bdd4b2254f9dd8b7c7c785f5526ad784fe1e058eb5abe0734839a6a25ac7285b5809bd3776427f511f5c142d2ccff4c91c7e36f58ddac6f371fe6b124a1656ee7ba2640e3ef37799c96432fc8c850539b6cb75d8ae5d7206d3616228942b2c8df95ca2949ca5d79c6732998c22c96494265f91a49c028a1516fbd7fcc1d8cfa16b321b2855582ce37b6df51d73b4887908285458fd34f62a3b5ae718fc292cedd65ac25c96b11b631429acc6aa9552cf35732829eb841285e55a548af52a4a6df7a137166bff770da6566f5b2914d6b74dd6fa1d73a921744f589999b4356a94deee1ac5094b25d68ff13a8b2f7954286e2cc7b0718baf1e3dc4ad32994c6f1b284d584d19729dcf5282dd4ead0161625a349f280d29a209038509ebb555579aba28dfc75ef5049425acb8c91cebd614fa2b273e028a1296ea16b793ab4ca63e5d2693c930276139b6dbfe62720d666b8884e5b6b16e752d55c76ee9088c907a27a490429eaf5257ad6647c5d05f7a8a6284f538ba37df149bf9b135c261791d5244a328454031c6ef16954585e2b344762844e0854a1d82aff56b46382cca5086905619bd6af26cd4fe29397a0832e816a9c61ec28da773841831c211728433249331c26181286dacc7ff2cf553cf92316c4258aa1c52d6e0d36610a94409c27a9808c5071f620cb6732840589c1a52f7cda973dc18ca0f16b142aadaebcea9906a33530e376ab666cc74141fac4e09e53b5509df636f5c04941eac57f59934556caedd48bd81c283e5d425c4ed1e6a0d9dcb4702ca0e9652ea8c62648f0a283a58b99e92738e4c2d720f37283958dbcc2a93a156159fc64c464304141cac64aa8f31528c5b19ab8dea02858d15d3eabbe45cfd7aff4bca1798959615964ec5820a26571d5b4af075f7092a96c607fb3b71f49692f5146b7b7d3d2957698ae5ca1362fb3ad345155129166aa59145a5aaa55f760fc2092996c3cc452822c81a838f3cc9c92896b7cb6fce3eaa7b5bf89a4c792ce88b944598b639f6e8e1b1d03e6529d16bc99eb26732573811c552999a833129a56c33b9d5124e42b15e836d1f67a7a4dd9b2777acfcc61efb1b3291d7c10928d6ab658f206bcf6f86e0c6f30506763869fac462dcd653a9e71c59636dbbd18927567288791ddce84a3dd9c6730db849ea05c224699acc21453499934e2c8eaccccdfd37d3c7cc64dccb4a4b26a349f7b2d2b2ad9c58ae238a2a32e71131deb7f1ec703430d0c8e66fe215b6b70e714a88a14783134db022f58f52f2ebabf4ff845e4e32b152a27d8838c5c61cb6c6c47a956e916bf6dca9f796c95c62bd6acd89deb766efbf62c28925d643cecd2d6af01929732f499818994c26a3c9b7a39167e6665a95ee093d628a32d539ff642a5662a1f58fe9f9197bc9f4d5e000c9647a48118de68412cbbdcca692677b6fcde2c92416dac65293136deafa491d0b6d64ec4566ecc68924564b10fe32151725cee54ecd482ce58960e417198caddc7b1d16d34507266142d83881c44af75ca9aa6ee96092a68901e4ffee4098953d79c462c4bebdce770e717b4d44482603841347ac5551d14bdeb44e9bb5112bbef4ab2da6849e9c2623563e975aebeba65c4a08d1b156ad2b56a53ae1e6b69345b4b77e424a515aa4fc9f3b39b69d3091b6e4a67fa2888538a955511374e69f582256cbecf4c98e69dbe6453e07ab44c8fdb33bedbb982dddd5356c2de1c63393c964be3b3047f406278858bcec9b63acd3a3476d4f0eb15264d19dd3b81b5f6b9e186245e888a17af03147adf5492196eb7faf8c7f9dab8e7a4288d5baa9f8eaef3de528d1c920164bd95af5d5c5f55e3f11c4e2965e53bdcfab92620a4626f39a544f3809c46af1b165293dd6e96d6c2780580ca5d4cc29a8ceeab5a7933f2c87305ba63f95d9b69d1f56734ad74c8e587583ad0fcb9335ba1457f35d9cf061a1c60f935bc794117abd0786fc5eb3fe86901e56eacc97e2364beb129de461a1a82e9ffa63ab6e639fe061a54efe58524ec41a25c5c1c91dd6a798ca7ea173b0f5be1d96a796524704618229a3d661f58b6959326a84de3f744287a5f0c5c89e7f82fd89e21c56d3a69852cc951f67d34cc2891cd683af908ac34a6ab53976cc207af11f0eebb90493a745ef4879f30dabe3324fe8598bc8f521548413372cef961e7bb91b19c26ec3caa71f91c74c4ead438d0dcb29a4cc137754e41aa3352c15d94b9d8add635dc8d4b0d6753b656a6d0cd1f2491a96fe67b2976f9bf2646c4f708286a55ca5e79ad2661edbb9332c854ebdd564895c72a9ccb014fbdcdc8e2ffa42cf1339168c49775f6c08194b88294d2ae1a40c0bed4be5f6f72f956bb4f1ec129c9061f17bbbce1c9172f5eab57132860561839f6e2163aa08356631ac4791a9962931526e671c8695b6df2b84186bfe670a86a5cc9c58367c9099bfb0d42aa6e97144cab9d588e0388963ad8a9c927ad95e7aa58ef70b275e581cfbb56f4bdbca3eee6e17167388f1a66baf1173ec77970babd53bd5a07aaa916bcc70acd5c4d4f63bcea73297b7b058448f92b704f7575f99b5b0584caeed23b5d0698c69b3b09439f8bceea5d72d3777b1b05053285739f7bcca14325f613573ac90e9b2ab75f55d2bac7f2cae7af119a9c4a056613517156adb9882cfa9a28d6be00b87b371698b132a385b6d2db5ea14563ba9948e34a5fdd4baea58d4ef989452befb792285852073aacde9a386fd3a0aeb9ddd8b889f73834ebd234988fc1b276f2ca5a2b276fafeb1942a663228355058a935c7f8f7c5e69bfa329997b6c2c913d6632aa5a70a41d4225428461298845293496012144e9cb0dc7b72aa8f14674cedc2891b2bed832f796e63e610b9d7c249135673af7b8cd97384923b13167b62cc2157cf1d42cd6565a38132587941553859c2428a5b772f2756274a58ea9ddab56356df56937486709284e50b5b6caeffbaf143ee2ce3819c20613d143945e4b4f79b83ed8714d1203939c272ded6dbaba831a67cb08714d1bc13232ca56fb9518c1f9973cb8ab0126bac227bafeda918b7130c274458f03d15235a841023f40d1e4942448e9321ac574fa57b28e1ebb7abc7d9c04030568e68f162386963d3116af694ebaf922bda64d4da366f0d6d63b52f319c152e32994e24994c2712a5c389109642ee5f6383f9a8d543680c15202a28052a6208517196232d2b7d1284f51a73aee07be512f2084f80b092337a91b99ffa7fd44e7eb09aa587529fd5a56a499df860edb657fb281544c87f1f1423939b5c38e9c17290d55b558fa9f7ae310f1663d852d9dfd91bd2ddc1eae575fb5c62e7ec902a1e9ce860b92f4b3121a5ba399883e5f4fdf75f2553978983e5ded426f82819840ae9091b0bf5534819c34e41506a52b11cb142ee865699da4d1bcf8e18990c6469998ce2334c50b1d85be68eb5b90833613cc5ea44ccdb631c9f42dccf144b1352ce2e328329b22fc572fa9ded5f4be6a79c142b6a44cde835c79e2af6512c7dc9e12a7ef7d8a9751e2b3a7ecefa92c1542f311ecbffa17599606cc9185251acf646cca0effba454e56a289663662a3f39f60cf7e11dab45e522ea559eec1f9fe362028af54fa94fce5f5372f0d1273435a776b5a839d3556b3afff8be5f73dbcdef7962adea4bcd18badae7669d588ad43183ad133fd4a84c3801f312d3d1681e60b289c55a6cd5eb4cd13674b9f17cd1c04e9f302f9c4d5a1f986862bd4c1d5f29067f237c2e130bb95297ee941b26d6b7562e355b95da58e24b2ca60c664746cc41c8495962359498f27431e13a74bdf1d46c3b628429a58b3129a7d803c2a412f9c9dfd5a7da7c6e4d55169ba36dfcdce94f858810153e98506271f68b9bda3dd2c4f91ae5b2da3099c4823126945472ff7dca8f6d1ca5c1a48ec52a3947ad9255848b3293c9d4a46b1b4c24a16054b95093a97fd51e89c5503388d22d522dc6f620b1d6c1d4defcfbb39dc121090c268f60f50a26b6eb2e97933a62318fda4d95319752296c44a3479988953956c0b1587372f50ef23aa79edac272aefd919d422869627e86155a582cbedc4d57cfd49a601696e7c2dee6e6d89a3eee680516d68bea2594988b2d1b8b7f85c53439f40e2ab7565861a9b742b055a7829a623b7dc7f05dd2468f0a8b5faf538d2d6e33e5535828be7668d1b737c69c93c27ae7e6450abf5323635158f98e1835f4d2bdb11e6be988bd366caf49a1b09c8aa8bd7b6e5f838ddb1396336329935a6516ff9f13d6f3ecf47ea850634f9b1beb1ba184efe911bb6e13d66643deefcb5046041513d6c3969a23f7aae4ccdd12967fc7d716bd65dc8a951296e2f6b8ac11276141d7f85e72ea0926871e09ab3fe933a62023d85ac123aca80dad1b61b1a6f853838b10e7272bc27a551615b523e8b9de4458df187a19379fa694dc0d61b1d65eb91653a96cfedcc66a8e586a2d1f53689b2a21ac4ee4de92832ab6fcb44158d9ccea5f47c61e3365560061fdaa04fd91b727659dacf8c172f04514d3216e8eec212b7cb0a2434eea9c436dec1759d183f51ab79f39e5fb8dc568050f96c27eaea0d3d808fa8b56ec60ed3b4ae9b98beab3b968850e564a668db7116a19918a56e460ed53c40ab1a792e2c8d10a1caccf65f1f3bd9552bdd10a36164c84b4f5bb26624c632a9627f4a49a4a0ae37b29a262b1b67b09e9b732e8289e6221c611e53e7ee8c18ed0148bbd36fe759ba9ae232cc56ae81e2b0613ae4be42029963fc698e1c654efb0c151ac44eabb454ec41c740ef358ee35b6a9ff3c9b2b87782c986cddd3a24eae614351aca7a0fe3e530d43b17edd3bfce8caf572c33b16234dacfdb8d9353504c56a0e32851f51cb85bef0134b2976d490795288e5424facc7eddf217f85546b09766235a55a7aa44abd5711e4c47a065b44d0b1975e8af16d62c575cb9035e69bd4c7a789b548a18690c174ac237c9958a9fc9f3ddfe82d397c9858d1d323f8d45f4ce7f72eb11e7a31ba72faea59dfb3c482ea29b5ff927b04157b762c7dea48f927e589157b9558d9f2e1b277e7a9117b9458fc8e315fc7ee0e22f526b1f43153895c268454fdab634117196c8c3d0699a67f92584f917a0db7e1eeafbf48ac77b125bb647ecd913f48acc8daedebb4d91852fd1eb196d79143f8edb1d33e47ac4faf997b632942c7f43562a9479f96956a099ba7c788c5fb5a6ae75cf22b941e1d4b41cf7daaadf3639b6f116b5d37c5be5f71728f4e118bbde6ebd45b5acf145d22966e737a286e73d61c7473acd6ed0da67faf45eee710b17c953e43ac295e97cf1d6231e71eb3db4cdce99c33c47a3139b68dfd9ac16dae108b39758b90a9a4092a7384580995dbd5444f93a3778358eadd99d2d40b9d753b41acd4365f2d6ceaae905d2096d34ea89d0fb5e4640788c5124ab82c766cfdbaee0f2b9fd9631ed92bf4509d1f566aeb9954a2e4fab06284dafee36b494517f9b05a738eb465f36467710f0b66dc46dea81b5410ea617d4acedbf3d490c107f3b03655a7971e52dd941e1e1663fd069382cc9472ee0e6bd9b9767a8289127376580ac15608e3b7f5d8aed561b9c75e7a88f96b17916b7458e8bb7d83db3641065b9bc372287d917bec9463b03539ac66ebabce34a6fdc65a1c164a1c3b358eabf121d5e0b01242f99cfbf8d4bb7b7bc34a486d2b53691d42ae9b1b96f3541035c59eb394bab561a5460af1db98acb5e6c686e5ce617ca4ed1541b86d0debbdd7ef97fd2997bb4d0d8ba37beab4b96a6c685b1a166b10b54685a9a161b1734bdb2d7136bbd4ceb09adbb6c89d428c9fa56686f5e8dd37c8de1b6c949a1c4b356e28b982fd383a2cc3624e19656ba64b55488605937b9ed1593f2704c7b06282cd557afc7f951e13c3624919e4975ec185ceb1302cf8ec2d17b66773c6181856eb2fa78ad0b1f6c4d817964a0e137ae698f79d62712c065d4ccc113e7b9129e685a5d23be5d49cdc5815ebc26a99de208b8e1f4aea1917165398aeb2f935b7ff0c8ee558b775937bad5e2ddbc252f60eba6ede981616e2e7c91e6a844f9db22cacd7dc21ca169173cc956161255ff55473e5dcf213bbc24aafd33164af30c14dcc0a8bdf5f43a8eb5e1944ac0a0ba95b55eacfb96d8454580e1d4b989c455de7e014d6c77d5fd697babc4f0acbe1d37dea1bd1db7c515830a33a5e94ae9bdbbdb1a23b84fa9f2ea3670c0a4b5d3f665ea7dcb7fb272c85f45fbb9f6a913577c2fa97cc296dfa10b37537d67e8bc9a93e1b45d44d585129f736bd67c2829950dc14fb39b625ac883cbd6782f17172252cc74a41c6b645169372121642edeb5c3ea51a43c24a6508ba0799192bb647580c3751eae5e8a23735c28a8821d6e60cd17b5684e5a0be7c2fbbf9ba4a44582efd1f8aec598c0a0e61418509bbc1d6767053b5b110f4075326c3af42088b354d10424f17e127fc2a82b032363bab86d1753af7550061b56b0e2946ecff796c5fc50f567a4a5f7b52a939c4d457e183a5ab9ebe8eeedffdaaafa207ab73b3fb39e5df0ca9af8207cbc56c664e6e5779ff57b183d5204b998af93f98dcbf0a1dac5fd67693bee247afbf8a1cac77e7e8b14f5e97de5f050e50e474a8fc257f156c2c5f951cc14cca0eb1fd542c7fa9a053d99fcae93e2a167bbe574e59428494fe295662c9922bc8b98953df144bf5554b885b334796be144bd73bb172b5eff4d3936269667c992eb6bec7e947b158e947f5e9af5b4ae9f358acfd6bae5395531af3f158bd0e2ab4082d6a07f345b1604acea1f4dbd843951f8aa5122eabed08df9ba3bf63317dd1b5f61f41b13e2364ed3c2d4399f013eb9383c8bdc5d876e1f3c4da868923ff7372efd689f58d657bca934af0c1e7c47a4eea1abbf46f66bf89e5b1b56657af923f7f4d2ce71874b4cb1ea3659e89f5b8695b756dd91b31b158b965c38fc839d5fa122b3b76530dbe1495536d89e5fbd827761437c66e3b566a0499ba863431f65c89f5106b7acd21764a2c6e67fd9efb8eb55a9fc442303e37729d9d1253af6335777764e69224567cd0a9f40a799b7924167a30592945f0536a3a2496738e8fbd7bd54f2f3e62b562d1a1b48ef7df738e58edc5d4547bbcaa62b646ace4bc717b49638acc88c5f8698490ff65a4636543a6f225237d7db68815932d533145d8dc3d45ace5e720f2ccdfc85a2562bd3e7b330797f9b939962bb42cc2c71ac5c71e110b6a8befd13f9522758885de6b94ce3d63b46e88b5afd8639932baa7d80bb11a6adf9d9417adb326c47a4e89993a94cf41e5412cc7705f55f4f7d4a2201647a736726ffc4d4f03b1d0b65e47b12d4ce901b158b277881b846e95ff61317cefea3aa66bb1fdb05482d06337d7b6a5d48785bea11715b27a8fc987155f75fac434d932947b5889e527f5ba9fa2f8f4b0f495a9dad6542f2dea3c2c849ab3a1c69a830bf1b0544bc99c8b2af21d96ab5fdd7f8e7658c9689fe2e6cded35588715a33b54ce13218690a3c3529e10a24e49ddf5b539ac754f9b5b6a88b966268785d2378f51633bf85ac561e5bb8faabd63c42ac26175b2f7732f7e72546f58c9bd42bcf1f719a5bb612954ed97f81f4c11761b964acfd2e16e8b482166c3d2e48c10437e319f5bc3820a42b7b0297dc46ad5b0382e23e89ca2b6eda5342cb4dcdcd545cf862fd1b01ad4c632d3535f27e233acc7767563b3c7de6bd10c4b5d7b97367f9f5a87722ce5705fb18bfc9cae0ccb5122965e8bbc09191916724895b1a6b3fe3486a58825e42c5b95337a62584e5b5c4f10aa8ccd6158ed57b1a7e9a1e45d0786f5b931b5d20661e2fdc2d2f851b962eea5f8108b63354b2cffbd775dc2f7c24ab69adad4bdd4e9bb0b4b5d7b4b94227acb2217d6f3049f3277231893e15828b296345dfc6fde760bebdd328c4cbdd5774d0bcb3d6aea16316408a92caceda83c5da1dd67d5b78ad5be65f5d25e61b5a428fe4bcd07a1b3c272da60d4843032b82d566129a69b5ab38fea34526169549c5454ada1278453588e1dd38eacd9f8dd4961c14eed9eaa9748914761414fa40fb3356eddea8d05a37e422db2c7c4984361b967fc1ca2a652217cc2420ca56a486db783ce098ba5bf5cc5981321e6c67a9e1a212f4b8e3dea262c98fab5cbd4941c7bcc84156346b6ad1fbaecd525ac067bf3d3538b4d59094b5bec4c758d63fc4c4958cca27622e6de43ad2161f5aaf7fc3db6ae341d61ad3f67cab9ba47976984b530555b64dd54e68ab01a630f394dd8323d23c2fa54aa219592f7b587b0a07b3fd46a7f1b25d236167b666ff74eb18e0b85b09a17b9baee87a85f1016728d50364e1fd3cb0784f5cb72f9f12a6776f78385b613a5c7da5daae883a5d15183fb9e72aa600f56db46dcf0f13695140fd6bac81e549e29d1f70ed633f4efbf9b4f79361daca79b481d7c8c5d7c9683c58b1e649a8ef92dc4c1dae6cce81d7f0f3616f287564507638bf03d15aba58fb129d3c88fba51b11c620cdbb9a79acef8144bfd5bd6dd8f55215f53ac6f2eb7156c9650db2dc552fe0c1373cbfdd525c57a1175bba89aadb075140bb6be5bb5eadb2fa694c76a6d4e69a64e098fe57063534f2547ed30932896ea87a08331956a7d9942b176d9eb67e2a8485da63b5627c48dd83db3a63213281654b76f113f7e1c3be627967a9ad4b2e4ca138be363a5b9317721c74eace430d56eb77a8a19e4c4529434c5f4e263ccd4dbc472e8d37ba9d7f5bb7f9a584c3f7a63cc1bb2aecbc47aee75c294183ee4b1616229d4fc18c2b40826d82eb1228c2f3f7b9f2f73b3c48aea8ab5dfc24dcd66c7422fa27ecd9fa92d5925164cf5029344a8b4ececa6c2501c05310c83000003a6ba2a00f3140030281c1c8e45e3e1380f1451071400053d62609c2e30288f05a38140200e0542a1301005310802310cc3400c4351b4a495d9015734e071b6e32bd76f7c1bfda622362a78f35830cc6fca9cd5ccf474f0af12aaca3ac0cde8f563fb5f404f09bcd982eb6101476d9dadc2eeb605371140cf16d643016e7ba15e13586f2db85140e9c142c42c170ea0779380b75af85e0ed806ab4eebc57267f960819b05e8a185f456c0375bd01301418f167278f3007a5261bd06d01b5690e4509dbba3fee04edab93982a995c62424654e4b489752a4a9a45a12db76b21640987cd22c6d48a57497d2a75c524b366930b992989424cd4909ed928a24956ac93e194b57129324532ba9249b549da4905a5a2443c995e2935cd24a956433a9a5624ed6a916af2829caf90bf7f29c36a7c0ed39154c125593153248e7240ac95243524a76a93ec925d79674b94673b852e42f65694b95f6f63975268fea902d194fb724966452635225ef9c9ae354bf8e288447e2902bc527b9a5b52b39db9e3a97f7d43d7b6ecc39700ea7069139d87f70645e556022c7cadd0b0fb0b5ccbd182906b714cc312d61d7d09b28233b22cee9881df9d37654c7ce94101473aa41a5b0e49ee2922c6949c56497d4a424a94eae92678ea68872d941bdcc1de9d1f7d4bd3ca78e599063ce8113e78a40c3ba6925a7261249b34c0e3064aca7c630b0e352e83a9d0b318dafc5b754335dae9a70d3adf5836a520777e7343065328199831660187400f5c902a60fdd436551690d6860825fc5250bf36928f73c9fcbd3ca553de94c55dc9bc69e3b17c724486daec0d933f554eaa9d7ece238e826456039a90153931b9c3a2781d5490bce183b80e2a4646510d48dfb3434adb35133ef8d6bed649c93c0b4c102684faae0724e0566270730372882cc310da01adc802a95f45637ed3963ec008a8312609b54e0ecb152804a1370762f4d42ee951bf5d2dda697eeed9953a35a8f5437e911154fb614966612192b518b94a57fe3253875ee821b730f5c3897e0b439056ecfa9e0e45c0567e70c7037278249a266524236a93a4921b5b44886922bc527b9a475553c9b4e8dcb76aa9cb537e6dceef3bcb8ba29d220e064797b3952cb5dbe7a7c2f599b27e55805b9305368478eb96b1e0770cd8201204e9046edb925db1e2d02b13f8724ce95ee6ad4214bf751c0cf62688930d65cbf40f22d11a1659c4336d4711fbefbe50b6504bd52f1c631a04bc36c9649ad6998dcbb48a7d89b926aed251d208de584938f61869f57d8a53ad38dbc483176764d6b11e09e3604f07d8f459c7e74dec5846ee742e7fa89728cc649f7172d46874473191d00f10849ae84c6f47979706f0603afe23f4b67cc4f826e4588534f36f87d426708e1c724ef0714bd8dabf33dda72bd96e34dc6bc3733272ec68ce339ce7aecd3dbd3a5390ca8df7a97e9de515aeae8cf813bb1653661505af4362ae2e813982c8b8d05c44ba2655a12b4e220a759d0c343478ca64788a2d20eea65e465cdbbb97353f1b6b1475170e95c88a5d3fad450d908e513a8a496855cb41d5b494ce7c1e6e6413910645297583ddb973246693e8508a924d4874b6feec0e3f20490e7b8f09966910b3a7596627863bc8ef59ab2a07fe7c4a2bb36975fe1ea00a1ed2db47d3918b786a60e8349c4ebb502b95c918e58a642969f377ceede664ca45ceee1b5c10cc2d40382db4e42b3a024dd25006a145b110b953fbd5a7b5faa12787fcd0ba43ea98b2b4cc65da0932c1a4ecfefda5e5bfc54bd773eb5ca2c3f59de3a11927ba171ebd99748f1d5b588e0b54b928be023ed65997b47d3b68bfee1d166b92cf944a0320ae660f0b117c1b3d2bfa4737cf3332df326345041fa5da4df4368a5d07c7f7e2fbeab5cc3359a87c3894afaed18bf254e46c214cc10daa780ba73679c1a3dc19706532c55ae163e733d8f9e75566905ddd6a1a85c210ee7a21470d888b63f1db1562a62cab24afe1b26d96215d4269a4273b51fac840f1b6f96fef522c27526e2314596f33cd8cea0dc5595719fc273143c1e43a3b4fe5756438ae9880fc6db0083ae2d467a36674d0af482b0c0df4dc3593b3e0b4bb47681bd786abe809e3a0b72cd2c471c1a53cd9506febd6e45533a289b39eb4be2ee55064bfc7ee95971da141924b452854740f14598082e3c3725f07ef131e1d38661899af554e533e96bada5e1a1308c9dd4d041742483aac65f1b5af74c0ec38306b87eb45e789bd6f222732cb61adde705e28cd4f6635a3b18c98d0b936fe9453a0e34e6c409af65074b11db5df6e051103991252af4944536d928bfe673f761b8fd5f2cbd031eee3213dea0f9e84fa610e78b417cb315dcb71752002e56c74f586cee733fbedd05558670f14fc02c9d35d4c5289582a0aeb2c7cea29698bf92f735ceac97cb3c4ca23b1a68c5f4bd3abbbf0d108cc8a9ea58883274a2deddaf5578e15813406930207ebb438067b529137a3e9120bd2fd2284955570940db23c6abc847edb6d1be3820d6937a42cb2550632f03843533114b701c956773eb29342d5bc47c982c4dec2c10d67b85a6c2791158700018186ac94d9315d2e4a6e87206e06f05b0008b084a57e6a26592bb5109e2895c953169cf3cfb6d5335599d66ee65b6c4388c34c961795024a18e9930bf1ad1795cb3b8b7ff737665f7e659c9cd92d49c1f68bbd2e7045820bb7486247915964b5ced672146d821f19323a192ecc4402ef99c74fdc30434b61c434845f6067f122365b194d1efc9cc8d6b202c4b36f5749612616cd1a49e4078760f0d73d2ac93442fef082e5eaeed7ba491858f01cdbb7d1ba277c13901322100063bbbee9506d183b867cd86971a35563fc43d2215100d22a15b85a736732a032771739ddc91cbb069d31344d0d20411910e9178ed2e8f678a708b9860581c5f94aad9839f21499b5a89cdcce9ae4141ce4502cde2c863af3084d4c2d8daddeb0d29a499b764e910491b40429827b37c71cb5bfc8b27e94d04c0cca87a05b6f87c2403c4aad913e812b3241590eccf08cb8290943771df8ced609d6b9ef43c01129d151031eb6b52a28014e52f8508549fb1f5d8c11b6130cc436fe06178843437d49f8ae68a60355e7823751fef3d1b9da84a16135046520ca73ae1055faf4fa08dc0d325dd3e24a7b08c0844f14e1a3015ca085ec1a422caa6e4b9b5fbf62db9bc5d7e4013332a48413b2e0e866e5329ad4027eb8479ebd9ddab66848bb51aece4ec20879f981f22240a9013e89e54f57440eb4b513a4f2211ab520682974a67d0ffd4f1bac21f2b3b1b344331a28e6d5035646a305325d6401dbb52e1b45e81db75ee2aef7626ba2965a900d0d6047e180224ec320e6ac1b7cce5615e5bcf039484a5ac694bbc5a632a4fa91ca727517495fdba395b6237e287b3ec58be166749fcb1bd08ed8b33c94abb150008abc989a5d2daf91cf711c2286eac1d2a4539958613506d5a67c3ce8f02d7c201f0d223d1a584b7640190e741a2710bc30dc3849325a5d9367b65b80caf0542159c3cc5315d4c4baee1aa574121e0c54d5c5eb592128742394a37294275433a9282a243843de71d4aa82371426745c1a25edd52e76deae686d32f012f1ca5fe11e5339840e50c75012a90430cf33d342c4195b7ad1c31ea98b2cb76b25135efb4db260d859af071a080c7c3f92e6eed5f546d834f9c4240aaabba6c251afb9e3d006bb6f824df42301b2f5c2953d1bab1326448360399225f0358453273e697eb6efe09ac204226965282ea03265ec912dcad4520a0b123857dc19fbdafba505fed8f31b8b3cfda911ee9d3a0006447fb2387bb96520c467e716c4941f92b01ba6f24e7cd7c72c72969dce09e6e7d927b3314ed12a18cfd003bfbed601bfe833aec69f21355dfe1064e40b76616e3ba9d2e9f30768fcd7858c8d0c0b83b8a977c0af329b1520c032fce1dc8008ec5db33966600b972d9fc609e31baa02ad794e3338b7971551eb7c6e61857f512ad3edf221e6bc9d4dfaa8aa97a09d4c67e2e628b138c90141b2e52348dc5f6cc6afd91615c4dc5f59e25e0349dd39a0aaeea16e8371c3e7ea1a951ee4fd7640d4c403b467e67a8008aea2cedb41bde9064c5c833d113a25d62cde3ac9a4b3de58a2bb43ae30633b3dd219334db30e47b2140b9386d4ce964b280fc235077e37ef6969fdaa2afeafed5e7a17b6d4576926167fb343aa91af4367deacd0abd2cc2d17e26ef1a224c5baadf0a3db93053578381097ef5238a3a5638fa8552334a22bdf806ac8d9d5aee2ec895b19356cd43202c70d4c0c1548066828ed3694196bc63cfe5eaec2dabb0b39889d2dbe04d1bb83058dd866275548ef71aacd26bb25c10ad6ff2ae2990e1f40e662707e79735700b4ef914276533411d72b072433c0207c8c4d65b805b4fbff43626e61ba0f786d80a97fa05c521ba9f39cf97b76fddb2e889e1ad27a1cbd987ba8f899edcb9ec7d2083ef2a4378ffad7738f173a83d7165265b303d9308468bbaca34cc0922f0cdd3a0cd06a64085774acdf538927aa99dc8f350c9a69d35d91f747fa716e2d5d39bc8fadc63e213ac1fb72bea7c3052a361e4613481c906d616dfc17d09b97a99cffe03c0ee73011600028b465575e8cb76a5b0a5652ba5a40a25b0f45c3b701730b70d36741b15ce8a46d41de99830210cae36eeab85c881e8bbda72678cf69582d1d401a91e76aa8853c7e1bec64a82026c6177a43161d3bf92463c2f15ef463431cae97c6f9d30951c37ad9a02f3fcf86566f62b36bfcc456b9b8a20388130bf6ff6973965bd9e47ac2a74e6f9210564979bd1dbe110869d2dc9d11ce7691cd081571a21221fd8bc13f91c8f77cd330f2d019049718102383084e87a4179c29d124214549839e0fa953bb851cc383a16b3f4546d74a74ed2aa14f47501c87239be06d4124c4515d683bfb5b4eed70753f006f021f282de12d6ceae91035e53dcbb210a05a944f2ecf64fcaf22d5225fa6a41ec6c3936a4042f2a11bebf25e2987542ec0f28e513443c2c604cdbd07bd181005dfb71bef208ad3708aa4656e4d557dce0295b0a058dadf55c815c1e9e5ac4e212e8d4151afb2d2e8604d051767a6fb17b0819aedea1ec1500e4855e1713274b6f0660fc7ee2892ecebe4d96bc4d8e50a0fc84b900c8e8c2f016de1193aa6e134a8409a061717c096f90e10337ea5e95cb2db952605940fa8f5ba4327c5075c32120859353b43cca0eeeb3bf6aa84212d767d2affd193ee6af4dee128ee42f40216a4387df08245a3568560d8654b2d86120cfd3fce80366e26028bfcb9ac978f67cf39a74dc0132c9e7fe8bb47c566b03f89c590b8e95fd4d8c57eaccab2503bb3a91dc2a6e49e6260b7d81f215e8f9860fb85d1688998557dfed2153539d97d2cf06e28bc4166b16e865e8d856d86c3aa80ec971b45703c16e6add2a59c7267c5443f9a184e903cfba964b917f1983eb3f24694e0071522a83490dfedd2004f400631c47fe812d7da1b83d6b3c68d1c642f27757c382f6a9751d69e9eee1a9c2eb1388cb919fb59419607f9c667ad401179c8e5c1c517a846890afbb5eba6ec1b47b838707ac69f87715f102ab10a86e002fc76daa387ae21ae99da072d4c4b64e2f8b1dab698db846f076ddbda35c4f55745e6c507bb63da743dbe89c7bc2fc50924a4bf8aed119676c4f953c5356e8c09622c791cc3174a2082087a873500be75113c3055df359c4d58b520bea2585409cda60a9ab1b379823506dc738238f285938868041b49a1f02263580eecd46c492b540fd17b788802ea0ee8816698deaa745e4bbd00c8ae89cfe571fb91c46840008e5bb7dcdfa2eb5ffd3a5d094851acb7fc7c190b4a2803254917c6a8a42247bfaa7b9d1c05fff51d4a4406855a04f2def77dd5cc4c0edf6c6f815b7dd374ad0ec6afcf28a56114efe8a67161b20ea599658a43a01ee3e3605ce451907723f438b89aad80a67dfdbdb21df5bc84e5a7cc459376ea92d1f62ca2466e6314dd20b47529bbbd647caa16e85bace1915b005f7d123e24f56e79c57b55e3bbc7c24bc0d7b7e36fcd352748aa58281948987dbc132e3342ef7f79588474ef192874ecfd3b90c6d023f27fc1039a0772926ace6673ad5a7c090b25e5826dd8a17726ad293cd7e2500b89ba2757a2014ff8fdf20303029517f3755959c9090697c49975003c2f5a163fb8aee8eca541dac94e38abc97da134f66754a20e55a0c39e6c532dc4878c00b1629b3331707274c0748e617df0811182c15fe0593246e963ad38b0ecc68871f80f5e584d5b518dea3384e4d1ac5a7b9d58bb536fe27b25f0550dada19c2d2b38e192c4a26d66b1ab353443d4d48de3e406025b06cfd97b183b33cc3dc7e710801cde572860dc9af1e7427fd95f6cf07453762cc183e19c790ca9a968a34189abe2b95bc92d027959ead4fd54653d834c2c246761dfba8a7a9a7fab8ccc65fd4a1e8ee6012ac0c57c06bb95084b0bfdf3d25f398cf39293e52f0bafc44f4cb35811eb9168e3f51e4b497deaf4a16eb041b8038a3563078d0e8c6734382b514c026210394a3c2912aad6997f0bc1b8c981e484e31c031a5647a782f40c20ab8d32e0bc7140b2d83ad827cf1eee7a7c7e328cca14dff37c58b73043637a3fe25576a53b8c12220ec7705524cdf02c0e6845f6f75b5c3c4969281b8eb156818c7a01c7d43d620ff29549185a2395681e4c0538194958ddec6cf2cbfb83a04d8460011bc13d8780a7e833a394beea63881984e80f832b999129c4546300050c5a5b4db25544f804fc32f3dc62c239f9d5fa138adbeeaf2c9b17e1cf7842ad41127026f274df5e7f25ec9df339117e9d2e1f70d9aee335a7650d8f49e00c1188178cc487fa43f1e56ba8eddccb0d4020c00a50f70102843d75e152dccd9e1d2659cc6b9d3c381a7e45a521c54e97764652bdb4fc786597d4fbc0f0a28d26b7c57be5a1e5b58e4bc503ad23e8ad0dff6323750470df37f867a8fbd386861cca5f1639f898514f5d7ce76737a14ae77432f1b64091c07bb2638c159568fadf0e876e0c5f904ef6cea9dd3eb2b22ba59e41a1865d114291906699b4739cdc480964531fc400555a87c81c311612150497a3078ac6ba80bbf51716ce555843b26a7fb2f0f3905f15d5cab8a51d0bc440b2db0e24e4b8f9a9e6f54527d71b7180d9ed60e8ecbd68afe75eace39214dc7fc4e06e13273df8eb42d6a95a87b77c5b443c9500de2fff51dc2c36e42325daa3a1ef72c6b2bc14dbd1b593575d6b4873fef74a1ec6473708b97d1323405de2f46c6303718a580efc90b398cc47b2276ae93e24efa9a76322b73c471ccf08323ee0cd8e3799ce16e5dbcec5c1acb4c771b0b15ae8f8705adfe128ecb26de5e22b919ed800a10aee34e074c7b46c61a9c400571aa1d55b8c7558685f87f188472126aea007eeffa46fb90b754991d28c5d4536e01365fbf91f59114ad8eaf3ac249c1574521c625c6a1332c9cd755874699c630d1d421b9fd2459b25d8e5310ffd12018977099290c07ef7f7408625a305d9536d9c12ab67ca8b41bdaf0478297e666ab9f3d94b0a05b691aa9e2106ed3a24f7608442c680ef32261a9a2d25615011c5e48e67fffff5e38214050e05f54180841037e371aa841e45ccb2fdca260646e8768b1d10093fad726da52b9377d3a7749583b70bb4330e6cbdda135eec955027ec9de5a8c4aa4ef082a61998560882a4dfa8b69add9f7a4dc30abf303557a265340339cff4ae30e8c8e498879b5792a367b6cfa636e720cf2231709eb896a8c15f37bb67d3775f0823e52cbd56721dd698b126d540bafb6d95e00586199910d142998571a0da3df1b0f9066da968175a9cb71cbbb42d2578d71a13048596137cffd509b31d787f7c0b95ff2150de954bb7b2ffa36b3c9104602d94591fe4ba8abb2a638b070d7d2d1757eeee8205a6475e2ed4fa36f5feeabfe572a80db40af6ffc7b19b220618793a921e280a6bee5ff68a2d840ac53f4841b7ebe4bd88aa040421077144915447a2b63f1c13f9d4b041b338ad571827dff64f3e7b349824243a999486c40b43eb6fb89d8164c210463e894ca0bf1a37001182456a482018788fd3b107429d0dadf8dc937ecb273bf42088081b70ccf464d718d78be4606488c0033940f50c901855aa4214211dc338628c5b22c1cecfb28a9348dd0a58379a5da679b5633465d03d03f111020ac62682aa008eb0851739c4f4edb5dc7ca7c35b02ca0b287d7f81d099a5b4bd83725a3d3778e978367eca3add3bd1991e53de0da915d8429a57b5f07002bf654336704ed7a547f6965ac9c35a2bac484b12546bd6d41350c04a06467962efac355e97d17b2a7138fc25dfd4b5a2c7e52ac89e4694bf03cd0a7c02452c361cc31236a95ab63a9cb3404e7db434f728cdd618ba4ca0b51473670f36d90cef3c59f10d19538817fa18e5f47c35c98482830f65c4279677b80dbd937b91479d9120d578b7a7d94c09f957c1b424406c7698e4682140a8775c62a313409638c5657345c4c58da1e4f6530770d4a028e3ebf25fdcab887f5295d1c54ff2579b0eae98c9089927d530fb2dba016f66fd7f4a6f3d7a5b49b578f2e05312332db1cbd77543db4ffe57603a827091046fc3f2ce5aaae72a57ee0b7d4c10c75f1f6415af4fbead9a86a010d813c9e2e4234f5dace546bc1c36ea9ae5476ce93ef881858daf4aa342fa3f5bf5692697df54db99b0c4fc71e8ce91cc42d1de020c7dc1924aef3166d08093f289e6a1dc9341899173f4559dc81381e1724215c1fee3a5d8c8a3b9f60c22f86b6b32ec3a0000fdd93c5d2cd2ff4c367f30112cb1d25a0ddad499891620307f8fce095720be42ba3787a978c13c59dfab9765b22d238090049ad86baff6ba3bf7ac3f877de673eed492d45caea8bb5008b7b4cc8a0a5d359e798513962cce5d8b878da07379699e97e92f29dc56702a2636ad3a482e1d2d35a3aa71df506c8fa9917a96bae27c00d196c4a79d0d8eab9b10274350e37fb3c4fa0d242588fb1a7ec3c371d5d7c5191dc5084ef9ef2720151a9731f12108d9261ea3380651ee319ec00b9b90f3a3b27931efda9bc49c10c61b82a943171addf9d2c6d5339cef0ea6694c2d5591756979a17b0cf390dd0f017fed6497dc9ecd1c42505bce001af6e77fee58f6a64b3cdd5661216d32db77554dd749a0353b02da7f51e816bf17bb116f556de0b349c4e0212f10d0b433badeaa2b3a78a2391d4142266bf28b25d98ba072b97979a6e01f882bbd1cc9d01ddcecb4f983bed10d6cd412059d17a456caa0631c8aee35764436b79107ebc87b958793681f7231aed2013231c48b40c091dfe4bde66d3b7405ac2988305091208058d628d78dc95571f906fef6e42a9f05abb5acf4343afe21503b2179f93de8dfb489b010462c589794098d54b86e23d8712de43aa38c5d9953d1d1f986ccfc0dac05cc3e065cc8172b597e82fd9bcc180b9decfe4fcb69db8efd0b59406929f67b98e42bf134c7ff05e1a23b6223220d38d26af4b8a27a2dd8275a02cc75d9317e48631a4ec67d6f895288e0eb53554991c82c44e700e17dcfa30799c27f55a78ead671cbd93176d79fa964c6c565cd529903990e0abcdbba17625679876d5ca0c61426b7446dc3ce4d8d0615ba6aa2b0b910c9270ddb5f2d4f8cc0bfad4bfa6870a8b56301e8f3d4e69968e8984c6da34f556396c34cd5769a5a6f985b6cb8dc8edd331bb8d0d45aaa7e59303779a666d7a9adf804fd3e6aadda815c8a506bb342b99e94596940faabcaa48f39a57d928ca7aab5746d499c939acd4bc90d7302f1518f4450fc5491116cc4af723742519be455e20d87c24bfd3e6671d1e37988df50feaa550999ba92d9298f1e0e774ed8da28bae02a9e7f73b73eacb27769feb99e744be77ec9ebcf087e65ef4bf0a001dca76b1f002e2082d38e17526b0348eb556805d53b42c978a4d66105d7e9faa817301a336d94abdf5036b0fa8748b21fa8d54cd90d0ab053d95e34a59ef4a34dbe7d0e554639a61f4aa65f38deb40bf3186b7efae5b64eca6d885daea935a47cdb065e779c4713731a6ecff50527b1efaaf2851c2879866c7eab41f4e38e078eafdb16d7023548db8e0a7e828f57dddbcb19d04e82821c795eeff47df9d582cd9f21fe224e0f30eceaadf0fb12a1620bbe9cf0d59bb80099e9052b5ad5a39ce47de7d6a067dc2e4dac6e803f187d6a6e1adadbf7f6de2670be652aead7f921fc3b413663ed69a91f17edb10fa8ab8bb0b513c29f92b1eeee2b7f2cdd8019e0f65325154c973bbbfaced2ae05f0983e4110f55bf558b5da6dd99a3cc66e1d7d15c43b0bb5cabf1f46c523724bc69e6694bb77989ad0aaa85b6be8ce4b19fd99e43e61329947e42cd744625e5392a6fa02e17371f3ad741a4117e11e02ea412ce6cafc06afe9358dc1d2339e3e4beb6296b5ce72cbe83e0f0ebae01ae39a10fb22abec587e301cfd116297cce50523679e9a40eb3bc1fd90e086ff1efa1c040bcb9a488e54f41055120653cdaf84f45b95fd85e8320980cc93368043008edbf5ba1b5b64852087c911603e662422ca32b28a3dc1b3c40271bed1c0bdf0329a2bd098a7c901d610958ddf3d41274f5e8e8b46f1c039824acfda8b5bc98d6612083d35e8c23428fa702768e83ea91e8ff383a16318af347324a6c5857cfd97be9117d67abc5f5232e6bbb9737a826003f7609da9c07533cbe9e9e7a802cfe5ec76a84e933c1fee76673be936445de361637fb711f54ab7323b5488b58c21280f4de554902cfda0997d6ea3db78bcfc276ca49269e86009f380bd3c63ed15da75b8402b5e49260c8a90c4e0c9492f0ce293e6d16f9f29ee17eee45c057066510fe88bfb8682c7a484f7f88bef7d7994357cbe49b25f0c04c91f0893f0ee185e0ee8c5d55a5699af216bb5b5016c7258093f3649a180ddb3edbc276395a8007d5dcb3109a507d05a0a2381c34b9e6cd37bd148358d2551caca8b0a888c90a3155399015ab80422360911828d0d21b9a0e0f909e3c2061abc3a620ba18d6667845be6b8738347d5b9ffbd36662bcf239f687f46fe216b1a5f433b3cbae83979c57284b79e41b5bb1347d5013b6f124a6cffb73359c8706f94f223357f13cc6d3e6534cde9c2817e157fc1962769338e2fa69dff6d471dabf844da0568b7274db1f3775fea80009ef54173228891c262e602259ff735e77cbf3af02dce9f37b5eaf9c5a5ac9447207cbe7aadcbdbaa3aaf3f292d65f8e797fe8e098f4bc2b1e4fa14acacc62f5aee8f68fc23c55059389afe0156f186b072790cfe3f3231dde57e1edf2fc94622377d24d44d17ab56011d1dc16e474571943afdec6e979f1b13b868590c108379dc54d7038404313e1c44aa7c445b299b2c2558ee1b819b15351cf3105a9c44e993140df350089ef6b6705b07c19da7695e997899aa37080a7ab10b269d5697131626bd33e911d5c478401148fcab023ed580702bd1a866c8c9b61c3c55bda591ff052db5f4c01580b97fa557c6ecc2fb04046dcf6f3cd553f5975459b151fa74bff7507f6ca3c52699f157e14c1b525af5ed3ca3a3cdcaaebe76362949100e26b6e944f258001c484650e3093cae6aa3cd64c3f396896b14f04b837c9b5267fb2ddbdcacd2c4f4c9f9fe617f4b9b8f15aa3f7a5179ed5cbe574ddb56160166fdfc963ef77ebdf7d1ad0c305db06beb18530cb1efcdfddd20746c3b8c11ec9610deeb47f2fa30267cdde41112a688220dc72db697b4fc4459d9d48b007118bc00cd447527d7996920ecac1050984afb30b93bc3ac2f57a577467fe850ad578168d5bdeac49d350014b072fc6c3aed711b80e7972d39ab4238efe3faeadfbd6ab91cbc43b9cbd8f87141ba117ac4f8a483702ba9298ab37dad6964c3ea5796fdbde777d3fe4953abeb8851c6b77d8f7482c4396a5d7eb2353a3997a98b1fe70005a06d89eb968cbba485af7604cacf9df0058ddc52e823c6fae12c100e505f717c27ab0356ea1fc7ec17772091e0565efc64d63b8d4cadb2b5f07740f8af40c27f2079fc6ccefcb93bcc26c58cb96957ff4e45f3060cb58cdfa2d4754cfcb8dbe9cf402212a44413840063133a81e4f33d1046609e9aceabdd83fbef36667b62d3dfad7ccd1a1132c75130ab0fed98a81d125bfc6c47b74c27b79fa0a3d6a5b8baedd3c6a98d3fe2b97eda5d5b763b7361223eca818687590e0e1d9a37ad2a23cff3029c84832343f469fca562e740febf6b675b91263668fa6985179f3e2323fdd84176f607eeed7fe58cdaca7342ad0d1c4c9e081cdd6928ee2a1a7a34f10919ae3d5d7b293169bbe4fbc2f4708a17a9ff0c9569409798e990d4b3fe3505af26fd9ec688f9ae3dffa76e377aa4e6d60de5a167ea8eaf9f47eb58d6de7d20a08ecd5272c74cd860f772065ee399d34a7950156005a9230fae342d4747d1609c71d956240f6cf1a22d517f8974d4df2219f5d74845fd3d52517f8b44545f201995572445fd95481f9c7600983e30ff3ac81957e7e5dbf9a9d9f9bc1208a3edfe331305cc2dc2bc7b217c0ef8f00bb1ef8907ed063baeb856e3eaa7c91dc6604a9fd815c10da9530a0523c6b0d681ac49123b76892c66f45be966f758489d817936bd5bf15751cdb1b54c92bdc26f28191f7a6f9ad8805ea9512b15caa5140d6f4d3c34619d865d82b221ebf1e0eec12e56bbd8b0ab56abfad9487cfadd569a9344aafd58fcb7d7e1e07e990cb707ddb75e686e6db0b375741d0d4f4ffeb33b850487258a249bd27e76bf8c89f757613105b2ca7177c49afebb0e838dd1cd58ab0ce4f53c6058488e4c8ae4c43127024f3705e22fd3014f6a3874100fa272f0e58c486aeb48a7a031f52d98e2fdac69bcf6206d7910d34c896a3e9a889137951886bf7d076efe907d308d41bfb12ff2e87b6297d27b938ea79d7dabdcf86b76d3dbde6f4a93a1af863b7d3a216ea9d59f26bd89b895f3334e2e3f2d5879c626fd8370ca7c8cff6264ea7a1caa016c2cd8c6353c2a8dcd32d4076bf103ab806bc01812dac56f6aebc953775311aa55d4810be7fd9d81c61a7e59ddd757f80c2b6c28dc49f91dea13924a2031489c420807dc5b6f7b3b9ed4df31f10ef6fb82a792950cd8acba1c656eadc6f38f6dc2890d0057aad5fef984f89491b8474c86db165d422ea2edd115334bfce123d8db7de858464eefc65302beae06c8be59beff2224b1ae49ba9af2ffe2913f3a723ee3f91fe7db56e9260f82a0e65ae7131843cba0656815b8f21cf9b393f74d963bff7dc74d1e1dde05f0f88d89034461f264939e64a5939d599dd271cac85a5e4fb6b777fa7cb3b385cf84d6873a7995a78c5e6ac56df9aae77c1a8eabbe9196d42e3908a8d9ad9ea7c65c8778aca96ea8437287458fc2ae91ebd4234d36fa8008a4d8aa8180fb77726b92b33e097888b4ef0b7dbe159d106110b9129f78c4fff49d1f276291ffad74e3b0b7cbb28d3823f98bb2cd02237c00732200dd3f8f77de60ce0784fc8b549f63f31c8d5476c771cd04d91ce0e6a85d3f74945d0e95f60404dcc3f329d0cb2f306e1b5b3b32b1d360ff67818ba257aab5c76ea7e6ae91b2060f0a5d61d5725f1df590eca5f1bd023453aee3bcca3cecc6cdf6ac9d2909f40902eab4ee28aa5a5a7e211d88cd422b878444243c7d0013c5b6183d06ea0e43414e0b3a4054dd7a5b88c7b7c452501420848236ad479466301b00f60a645660084d82c8df100b4b9c70df909f09b67586dec75997f94ee079a45f1f4b7a42c394e80479716474084621bc8810057f38cb9a48a825a25a82a84b88eaa5433e01083a88d29321f45d6c6014417c58af9ed7174299b4121b63b8ab1dd922a76f91236a2aa6efbc6f0e7d37b5a345df02753f3f99aab522c72becae654a192d3160e1a58115270b16d9b228d603d2bc2a923bd41572b2ee8ec31e456a1542a0f7d08f1bf226fca857fd2ac8b94e73db32dcd183f67dfa8abf78006022cf60fd9e6ea626b53f8f2e80b0dadc6794519284245e80553a2b260e4dfa815c01d84ab4022eaa18fe4e251a5d9bfccad83a3eb206863879357e95129ccd48388268f7095678fb198ed88fba3464f0cd98cec73cafc1b66638972007eee16d8ec877de2f85dc4159042990c0cbf2959d647de4aaf2ea09d3b455dec09023937f6e5ff845f1ae9d9d3814f80a7add9466e13ebb199c68deb17a5a502a81caa1031949033d75e4e3c63c98750c4deafad8819c19eb4fd9d57b88ee6e683920f9ec50dc9bd7b1e091d35a9d0475ba059f8d5c275d44a49c4146a324fc2daa6c0905d85eb98b3f3899f4a3a96948d4c6d781ec238e77b233a8bc114ec9aade95750248c913889b0e3a757f7e6af299538f14697487bbefd86dd7b2cf35571851dd964e567c39d4cd8cdf9f6ebfbcb875032e3beb664fec2341e3d519ffce67472ad0eb37caf665c98f6a401c0c3ab318d0549dfbd5eb50dfc9bfc95346dccd649254698999175d63480afe57e4abe161a666971b96c38db7270c608dbebd055fcd140c7a938e3616db6d781a97d54679919e8667855f775cc6c10406ce9df70041544b92634420f3bb30f35387ec91888c2bb879aaf7cd1f45acc90d8088670b3ce736489cab4b2bf3296ff80266cd9a0efde647be4bcd3770af24d378d4e4a6d08eb385c08d13a7e3f1b735f2601493868c847d6a6da55e7e738ab2f80c70ef90e0cf98fa6b7c8c238b5372178ae20e13b1295e55ba5d69bc602fae7f979e9cb797eb4ce37fb299d7c3611d72ed56fe9af8d16be21b8dc3956b9b7baf7bca2c6b1650b9f81f571382563b0d19de894f57f6855eba78798699dd961c16fe4ea559e23a6575b96f66ff1b78c83785c9d97174fb4c52229e850d623c9ee9cfda4b1f76d55f0302131bce6833d9f5b69cc2f573986b5376bdf6741dc4735209b905f4288cbfde9dd5d1b513e70fa929f6d76bdc307b27cdfeedb3a519f44949e170bcd9f6e187b18beeeddacea41cae7d30d2e2ed3af81ca9a37bcc13e8493620be5d2fae6c8dc0fe4ad94fbe1b59906618f2fc93141866c899e83f8de47c38f5079b69c9301b368a39471998cdd059b9ff21928e3c3aa8396a0c793514d00ae159a823fc1b4f856f032aea7802a0e701bd0c665190668d47569f1b2e981d5ff31e2d3d28a0b5746f43e94a145399f2abb969d7ef9ea3dee0b4b49a1a30b7e27c61b7b65dfc26a17ab4bc0c693f974e9b20472fd1e9ba3f97c9d1fd0ab5867fbc89eaf8d13ea30923b87bd4e6f1776a2da6f79616cf6bdc5e39f67bb6b8379c6ecbe0b5f470b588b7305cddba50e87461b8a4ed2866c67c32462b695ef889334f1a886a540092f592509bb68af9179b7db1c10b197f66d137217be5d3773ebc25e3c72c7e2fe5af4cfac0065652fc882279afb1c46bd9cc13d5c4874aff02e504182c59f5511edfa3d1bdbb9ac3a335b7320aa21b18b577eb7338bae4ab27397e8763376e610a844b7c752ec777617cdbabe7a17895a90ec4c8168a6ffdf51c1aaed9a5bb042e056c691c37ed6d78d7c62e9b606ca65e53610ddf6a0c5033c1045e2595d37cc93d31bfc06b9f554a37a49545567ad75e7e97cd9eab93f6f4bcb76ce594517a2166adb9ede77ad9adbc7a894fdfb3cb5ea419a74ae2169dfb2eaf9f65cbaf49f9755ed95366252f11a590349e4b9d2e8d1619b016d386fb677fe3bf5adea0516a7c3de769f41cd4afaf48df3f88e43f286776406326b935790ccda5307c415740ee00d8169d498a32df1934fd780e24c91eae0d3c358a2e195affd687faf27a3a33fde6426a7c73baee6174e2656e42d7bd51ade0941a7b2e1fea766790ff464c000275ab799dca7ab8f453bc6490f4307a819acd7fa417d4e160b98a23ae10d5c85e85a8ed5515172ccd8501f66632eb60ad644d82024f98ac5afd816d0fa655f09ab942933d05992c830676c098229e665d08f38c7029d4a0215516f5a19e7584764098f678ce6b0fd076d065895b61f8ff4a00f7cb90b145f382a43ecd4c42b6b28f6ecfce20c6b04e37539414beb38a3e73d62c684a963f3c3b1d453cabc90b90fcf3deee6700dc94e1c8d01787f0c4e83c283642fe55a3711d5b5b68b36d213329bf44c8e5a596816d20162c67162dc3489aa68a26a55f8ba01b44da46e60f30255e2c1e8def369414dbe785f6e031ba36bd9840291e8ee135c5a5de0e235858237e4266ed27ddf18c76165b8e80b39fd51b0c0f9cf604f2c6344551afe60c7da4ec9e6612d045080b9d8a95f6b33f232989200a9c814b53c825c3d50dffcc7b51c77b7dd3bb523f747787fa3a04f2168f298529b5e23303553629d47c233dcf5c301ed194f2b6e593451682d747aeae26af4f1b2948694098dc2cb4032283fce48dd98ef86cad26157402fc9275580e6c0a5bb52e66fbec9a2ce9e4468a062a241f66afdb8d43087b00e3cb04a7d024a4b101bca2d62b0ec404e9946e70819a85b11b7b4a832f78ed684aceeb7efa9fe92f88e7cda5948d3b24207beffc1b0f3d8fc85bd25212b15d67270e26357bda1058b123266d48aa5b8fa456032bf1abeee494df08588af2f2777bfcf76f3ad61240448ce830ef93ca6a47218c3df0db239b2f617af0af3ac3f40e69705ef93fe824df4f81428ba2889e5d8853441f2a376f2df65c1d5e7619a6980c2fa8c1d9061bb4d2cedc40477d1e49e14a6760a11559199423e085d375c5f2a30847678f5d153a51d7ca9115dbc10b8eb59dc0b86d367276697f57354d18292dab380f77e887180dbf2f311ff58433d171c324d8bf6ffd9e9ef5370bf62552522eab2b7f252d60510f21e0a2af323f2efcf01e4e99be75b1d14ee74c6050c9ae5ee206c78bfbb3083b04fb4302cee1e81ba2baa63b21d2a78a9bc7c598fc8f8d42ea1e00f5e3d79a7fd06e08acda1983ba0ffb31683d0d875a9cb170ec81b55b4f675a590c414e0aa24ff08dd972d29bccd904fc5ea7db98772bc468e17d80334ed6c0ac33b21e547b67a776cc6d233c4bf95f849013e4106f6e1f55ad61969e3842132a50647c266f432f821ffa900a3d68809063aadc161b0012d9b33f307838ad718cecd1ff59c78debbad04e2b9302de5751a2410a5ef1f379dd1ce69d1b7ff8d78dd8c7dc5c7f4a67070440021e0d44530a3960b46439330f0f0f0f0f0f0f8f6c1cda08a9ad9143d855a624252771f6d29367b94c29c9945212bb83776177f00edec13bf86d8d904689e8063a0a440aa90a76f2391daac2f0e6e541f72499f5a9305cc587adce522aad870a830a5572e92c3fc5cb4e410218a6a8333592e44a2b5300a314e6f78aefc1fd46054b11000629cc914de708692ae57b6423b0011a35608cc2a0d65446493a71ef5014e62cd162cf77cc59964361ae92203e3afda03009cfa2c7cdefed6cfd84412991ae536668650b767123d1c851c3468db20e2d1490fa1f808214f4030ada80e109a3788f9e0ea2f4b2993a610e3a73cf4d7cbeec30270c4a5eae8eb54f0fdb6ec2a4724a1be716dcab239a309a0aeebe97265d821046264c9f3b4fa574bbf3f96060c21cce4d26c42c1751c704965100e312263dd2c459dc5858bd3e16c709ba38808787ff09ba385bc0b084694e826ccf73b22f7659094a98477ec374277e593c258c4998adc5cc6399c7e9f725612e0f4997bbf47c981146244c597212f2bdd3cdba83010983a78d98a1dfa56cfb4718a47a9223457b1c61ce63b9e5c4544cfe2b4f0e301a6108733a8f8713af3cefc71a1a8e1b9f70d8401a58cb048311a68c3bcddefc8e79ca4518ed5454493e6e3a9c48173014618a64d52374de23b0011a20809108d37bc9c9d3f191b67d620ac0408461eb82a5186b99e4e3c71ae2210c1e74740821a789df591886308439ddf7ad092264e463ad840046214cf9b453d87afd630d871e21cc417b8a5e1d96523708c3e47c26ad3e959ab57cacd1c091e371e06841983e5c96efbe9cebbb05c2945428f590b27ef8540184696b54640ba254ab5f3c3ccc7a00e30fa6f89621352f992931f9c19072161dcf716a74a537727801a30f0613215c23d8872bf7f0c17869a263efa8f6603c93a17b359b1e8ca54214e53f661364f201230f26153d95905971e27ec18341fbec4c7950615424ddc1fc41881c5562a2164c3b986b5ed582c987d25a571d0c9facf427a55289dc14061d4c9f4e8f185539e2a46d3c8e84008c3918ebea3ca54fa76efde2e1810e430ea66ff1d421ff85f03fb18d83d953d453410795a384110ec614b35a11bb7fac87478ec781a3750330de60ac5e33e5173bfc8f36baf002c7df708349a730fac32ce4fcdf6983214ed0118fa92eb15e36982a447b3db5eb89b2ab00c61accb676f541a84892b57dec0860a8c1d8f9e29a89303d93920693107dfd3977c8d62e7dacb1a1c1b07121a5511d2939991f6bcb011867307ca59b54edfcaf265402186630cd4537e9f13f1f6be4108c3298a28c8a6f3ed992b9850cc60fa72cee7f4e3242f2638d060a6ee4380cc01883418490938731adb4edf9581383f9357bd64270b1a47f6901230c2669bd3e6a2ae4dbcadb086c80c6c300835952503b1b6f393d8768043640c30330be604e67a3f426e7a057cf8fb5340dc0f08241044ff1d74b3cfb6b1f6b4b6e0230ba608a23a62ab7d6240b326b040c2e184f746eb19c9cecfab4058352fac2f525651a9a6bc11c31b57ecb5a2e99593088b11261e2c9d90c190b467753e1d5d2a6de55ae60d0529e2aaeac3b7e680573c897fc616e61af2e877e09185530da84bf8dd79a0a8613f39fb19cfb4272533004dfd2e3a93c548ea00e2d1ed051e709185230463cad5951439e129f0e2d1ed0518c1230a260d2fefe3a6b0f1e49efc8a2e3c67768f1800e0f8f13050c2898939fea04256ff3974c097468f1804483f104739d7f3a55bb6542e47caca9a12fc159161d653a26f0808e64030c27982ea4907a7dddb9bdfad82ed0ce2c00a309e612da45b52ea70e95b480175ff823c0df8b2ffc9d0a3098609c4b2b1dffbb3ed6f7f04021a8916c74d18587078c259863cfe2fc435f0aea625c200d7c991209c0508261bbc45c4e7ac437bf28c04882f923a5204ca41061ef22c194ea47335c3b680feb11f60a23b4957fb038018611502bef9870c254123c09cc165d2387175ca085510473e9a8a392af2a6e46221442c85d92a2a505118d1c22d7259d523e8e873f16070e722387173086609012f2c8479bf7201a3970d8a861d7a185023ab8401ad8628bce02021e1e1e308460fa54499bc54afd5c75100c3fe1f4ef2ec8109d0204d30521ab1a7136d6cd1f98645784f07152981a9d0f0c42f20813d7b1b28f1501dd086c80c60d183d30f648bb4815229ec4b6033078609021398558a6e5365d0d10183b304e0c213a57b985dca102c0d081c9b4c87512e321c9fd3930df8f1e71133d4def8c0343100f9727e818f58edec09063a43c61ddcd4b451836306d6b57c81fbeb23dff58fb1c283839bef0c20603880160d4c0acaa7fc13def45ee3430e4d4eefaa6fdd5253e03935bc457bb9c27847c32307abefc8adbb12ae11818b49b49d918216ea6c1808131fd4a644dfa7ce4ea05c60e65dabb4abaf99f5c60ac143f717a95e2492d306ac70ddd925e54dc61b0c02ce69df596fe55182c84e01527f8a79f54617a19a52aa439f7244f8531af6db4bde5a4f3a830dd8f05c9f9cbd2854e61eca02dcb2df69252318541997ef67bc81143f552184f4ac8c154d44eaa440a938ef61e4582dac8a1519846b353626c7c9e4461ae8b3b0be2633cbca13077302f7929cfe8374161dad5b80e12b2ee5fe813e6f6a0bce2b25b4f9e307ae9603729b885d83b611859c9157b7438618e34b1f4457d3661defda8dd595edfdea309e37bbccef57663227b3261d271b77a1d1bd9e1c184692e240936e73e97ef4b184cdf7dfc8cf4b49fb68451b5934ee965251fee4a18ffe3e28238a574244d09836fde88df24dd23542661ee4c89fb69ff73c74512a6d8fb31d6db1dff964818265a5986be0512a6cf12e172d0213eb1f20883e9c9fea5f427aec911065d3995d52eea74851b61fcfdc897f258107a654618c5bbb7fc525e84d16d82f94f0e42e59115618a113a49ef79539171228c3ef7a29238a57ff4883087949de6a34f3bea7b0883ca093713d71026379562f13e4effbd85308799a4fa176467939710a612a735b725bab5b98330dcbf891197c3a7cbad20cc7372d79427df4ed706c2f871bf2e9deedef51510c6d4165517b3fec17c177984cde574daaa1fcc1e72984790e5124fed83297c9b9e209267a750f9608a5b4192aa7cdce7640fe6b57c721372125516a2078385dcc86361d5828ce4c1e45ef2da6dee9386120fa6cb197341750a923c79075330e5352b2aed659d763085f0d892c3fee79c9275309f50d765baa6645c920ee6cb17c485d5679b36e7608e4f79a28738299648cac19cfe7bef831cf17d310ee62822be75f77aec43389884d5c7dedff00de61035d4cbc8e7dddd60921b3a67670bb55f1b4c2ed6262aca68cb0e1bccfa26557e26e8f7780da6acba90b198b70b4f0de690929bcea12cc5bd6930c57c9890bcd52c28d160d25f97dcc1342e353bc3b9e17f2ae39bc128fe1d9447f9506ad700ca60d0db8a2297f4db29918f351a5b34068e0300880190c174656974f55a4f7c3e06f3aa094bea5a7ba29d6230a6fd487defa4f597a261d6a18502d202318030182c92852ca13f3098d3d489fea5147c2dc67a88017cc134ca3e78b0ea9920362f98e4459fff09d9179235802e18e46dd7a48a3dd92d890ba60b4a477abb1925f45b3085edd4414da5a924bf160c3a990a2fdeed6f5acf82298ad0bb146b373b0461c1a4cacd64eca5af603a895942ee56309c50d1ff21bea56e1e40150cc1d466c80f395effe6118930797808fe676957218a08a3dfa93b551ebe811587309cc89e252899dded88218cdac12e7789b3904585306e7fdc54cf6526ff26842944ef58a6a1469e18076118f911dc7c2c42482a419843a96cbe252e95a43310c691b5adadb4fdca0f200cd7dac1ac2defa98efdc1acf1216e42b4943b323f98b72fff855121a2c3d7079378fdd46bd739051de48321898e8df1d13162d23d18d287d93db73c2195ac07a3962a37a517a48e8ae4c1e035bb5ad123e7dc140fe6eff4e54964cc427bee60b4ac7ef24c5aec60b6b10b16627292666a1d8ce7793a949c1c54d0111d4c2674a4cb5ce7d8f6cdc154e15425a55b7ed9a31cccafa16d4a5e8514411807c325bda152aac8b29be160789157d5c144e510ee371844ffc745aa4a5adc7783a9c7c6532797a8164f6d30ff87856d48900d2651efa52778ca49e8790de61a392affb11a4c4a6d858811761accb6277794f04ec9a6a1c128d9f2670bbd1fb3973398549023ca2cbedbc86630056916948e37e9da7304897f71c2a229c960b02ce329ac4c3eebca184c1192867f855be8e7c4604aa359ba544a294764c36090ef1c3a64490183b14705914d4c104ac5f20be6584aa8ef104eccaaf282218eb69db2f7f38abb0b465d2d593a45fe5fd2b860b8e04984eecd9aa8f0168c96e27122520ca1c2d48231526effb34bb3600e2286169d5772ec9163c1e471575cd74a8c47d1158c6527a311436205a3454e97b4891252fbae8229991c153e675438f72f85f26ce1148c2be2ff6de7b92e45a460b8385a546ca4c85e320ac62a13592ce47d92775030e4246af6cd54ec2da52718949fd08f12c4f5e8a413cc6e27ecb388fcd14bd504e3bfa90f232e8509a6d117db6bbb6f0fcf120c4a081d6b399ef00eaa128c914e975e9057120c32b3cb3d2e998e104182d12a2bd48e107bba224730b5a7bcf179e5d456d0088653215b4b4e17845545304cb635ada915f6c485088668fb6f39a46c08c68f1eb327dd650b5108261f17cbd143f038a20a8241484b115fb234b427816030a5595717e28bfa4e0facf881397374921a995761621f1892956984931c94a8600fcc29c7474b42454fff393c30c71a11c24b5cdfcada0e0cde11ffb2a4322122aa0373881c7e3f5bd45c9f3930752953a622769e970c0746cbe5e96adc93ea0b6f609a91a2ce43cac9d2496c605029a712bf97e5edda1a983fa49c9f46a740b082068693a0f15ef319d9a3594ea692aadecb3230699b3bf17891cd4c1603d387d524115729672e3030c4daf051f9cf0b4c9e638d4a4aeb424659062b5c60ca2b77ed114fc29579042b5ad084b31219ba52eca87bd15cd879d1655e341778a38b1c5d5060050b8ca545d5bebfaa821cadc25495b38fde96bcee715518f46baf7acdf99afed4a5c21447a70ac9dbb72ac562a0c2f879f32faddc5afbae7488710a8350dabc4c45ed369b98d13064430c53183ccfb3bafc3ceda8742146290c395cace8eaef1549cd56767a88418a4d64e96e3725b2651f6b34fec8284ce92b7fa65858f61f89c268f6f12a2288699f4b284c79e47bfb29afa44a068539cd6c7f0ee12badbaf20943eabb38a2a727be496378229116b53fed9d3085cfa1948cb5f8133b9ce04210614deb85a56cc2dc39e97d7a9dfcf7f977648186189af0259ba770939fd20f87189930894fd4db89b76d31f281a317d09145470474cbb0100313e609b2c473d62f4996121c5b78c1450d2e625cc26865b327c74e928318963087d81b7d49ca477757095396b9c8bedf23c4a77010831226bb735f77dd132ae42010624c42f3d8b95f4f430749c2207256df6dbc87283912664f891e613f45ca128384f9c693ea968ba27fa9188fb022859c154533b3625accea711d9713a3d7730f0f8f24c47084c1bf82ce27425dea1b61502d73c9fc52cef3154618849cdde4bc327511c612aa84259d5662b8ae0853fecb2491f248d3179408f3aaf69e9227228ca75359f270fae67d8b71085377877a1f09328421e5dcd96d4de37babb4428c42182b4c9f55fa8813e3ae81a346094a87160ac85103470d0cf8165f2301346878787878b887078d128310265377dee9233e0873aeb6d23b2652be1395208caa216d2dee8460d53f214620cce613d4b7881a953d579a100310e61c5e2c87ad6ae8be3f96060d3c1c7a02e3e1a184187f30e85abdc88c91e62ee9d042011e1e3846d045171fe6079388ad974665bca95a8710a30fe6b82ee31e36e783594492a74bc9ad3042bf07d38585b42bafa57f923ed668e0c0d15ea0e0d0b8f3b7718128c4d083e9b3c3536a55b3d9109e1162e4c1742552dc438d16cb311fc4c0837947e7cfaba264b5857631eef04cca298d7659ca6611c30ee60e6e661df1468e7d4cd015b88bc0066804800531ea60f8f49f6ffc2c7af2f8c71a0ebd410c3a9847a93862412811529659831873304512f36515721c39a11ccca6bcf2d3f907b9997dacddf82db640c18d1cc46af40d2d8210230ee6c8413b878f32594b040e065db9e28a5bb8f8f83ed60c0931de6056f78827bfef7284186e309f1c712162a7dd2aa58f35c5b185175c3080861738f4c410a30d468c6fd3181369e4f810ace57805c460832987e8b1eba13a5a823ed61e3db2d1850d8f1c5978787878e0c8228b0e14a41a371e0310f0f0b880878787878707aa71e36d7c08140337ba4834b640ef5ee040351c35bce8bc220b31d6f0f89d10f2548386d98220861a0c3a26a88d9efecf1c3f768bd331d260d2ad3ecf9eba123d090de620ed44d3aabdb73b67306ab9a72f3565d283da0c0695d304d3fa6e19cc21a3f6deee53be4632986abbfd83776e0c86e4eea37116924932d0a1c5033adcc61731c4601e2a881106f3b011030c2588f185e3bc8de58df950211f6b0d011ce4460e2f70c4f082a19212163eab48d14917cca30331b880d9a5ae4e10211fbb11630bec65fd28eed997a297e30b08d8480099400c2d9847c84b9ea47f09cf97185930659d59b3b46a6afa63c114acfe737a9f9d8e9d87c7bb87871631ae40caa226857e5793350331ac60d0f14b6fd5e468a3a12a18de652d678fad0a31a8602ab1974232b5ee95728c2918ce7e2589a9d1665a9682219a88296ad2e5e37ca260cebe9994225f6be494420c281845a599d129b4e69bd213cc2e9652457011bd697282294bc821bb1eaaf4969a603ab1ba51394ee2f8cf0483107e3b39854ffafc976052a6e447751e9544e89560bcac0e9f8f93f1f027c11cd4ebaf5bc59160ac1c492c587a2e71fa11cc69bbee929b86a52c32823154afbcfe8553f15011ccfa715384558808a633d5dfee1fd65a3d4330967bf2115f2957bf2304c365950c6ddf39d4768260ac2024e4524a0d04d3f94b0e2e52437fa57f60d07f39eea7524a04bdf8c0a47492f7db22c7744ee981b16c54a94eda2a558907263db1542a9b841879de8129490fd1334cd9ee87756052a7272ee32408dd73600842cc6797bb383046d2340b96d444277b03e38c1651a9c2b581c9be3d5645c598ec6d0d4c41e77c96795093946860c8a1839d69664593e80c0ca6772552d292741c5506e61c4f581a1997e229c5c0f83d7a17f46dbff93030a567c50f93931718c592ce49ca25ed124262b8c09477232f9e7a69e532460bcc1eb28a25e1272f9b30060b0c33618216319672897115e6cc02db874bb12e187f63dead2d74ce29e58259c66757d6b6ba2f4798b1057347eedc9c9b34b3bf16cc55c12cad9536bd22cd82f953fe609795632c984bdd68affde8dc21c28c2bec0c2b18e7b4756a8449150c17dec23c584a22fddac10c2a98b763acd867e7f80e01a083195330755a5159d2c498f0310233a46098b4dba172853ed6baf02f7018036644c10433a0602c51a5ab62f43ead93c28c27e80c279873d4acd8113a4ea51e002acc6882f947992a3139763e533fd650b0858d2e68a079d098c104937cbb54f12b5c16110537b410c28c25cc508231e52598e985cf8e77e15f586146120ca94424695e614ca6450e339060d24a9575c5f39ef6682788194730489d20622afd067464d1c100057464613ab2e84040106618c11c75aec3b4998a60128b1e5410e1e9c8a2238b2c3abed81cc30c22146edfde4fc55a52f92118948fd87309a743d25f08265379478eca1ae71d9a1184b392685cc85e9553433e4d76f854229955980104839604754b93cdbbee1f78512c25bf6879516a860f8c9643dbb9c4539154b607e68f11c9dbb43c30472faffcb9a456077d07c6f3d021e8567460fa1447488ff5663905093372603e53672b491accc0813946a9b7679e3898710393259553239b4990f5906d606a7d537f2a8f5c86d0c71a8ef3857e31a306a6b82ff93d92aacf87c65987160aa871230717fd377258e06bdcd0c2a3c68d1cb911d8000d12cca0c1993183e72455f4aba469e2c71ae962860c4430230686a8f5fb417a369564f8b19645077b98ddc8e1850f66c0c094edb9d572d671e27e8131d3cc64723009fb161798439c5a5b49428cfcf5632d015f70d191800a7478787878e0b8c18c16983b758c8b92e3887479060bccc303325661909b62c1eb3e774d491506996493adc6aeb64da930bf9b52f3e3a93ea509152619ad19c923b3e3884e6152592ee9eb74540829a630c5c457ad1f9394ca520a83906149f5cc74fe8a92c22484b6f7a95daa557414e6b8f14e974db46fa9a230085915a174291426fd69b636d7638a0a0185d14698c627d9965bffc4a6f26df484c9457d10e1b7c34350c9e88421957a8dea94e6844909d10bab244d4748d98471c73de890be2449963561b6ea72bd90947e39c984b9a36ad6a43055414d199830988af59fe3989a9c2f19973005f19fde418c99d50532408720c31286ab3a79ab6e22d6fc1f6b663624903f90510993d6fed412f4d2af429223b0011a2490410983f8d61029baa6ec34b6d8a2699c7206f81b5da477828c49982744bdbbbac996a52e928d1a04c72364008cc0066808e0053224612e7db3b795654dcffab136ba283533332bbc4a3231021ba0110055c88884f1b3e775b68a9cadcb196440824f2b5256cdaec2feb1b60cb021813d198f307bee2c9b4f9d4ec8cac75a0d1a4f030529e82df43820c311887759a5150b49a66a234c21924ae7d15ff972d440c68386286430c23012a4eadca97d10fa451852faba77f9965ebd1561fc786fe2222811a698edec1724049521228ca391cf2478ae92593984c1e63ae4d2b9c35b8e210c29e44937a52adfa2c617270dc7091a021d5974a02087175c181b12e8c8a2238b8e2c3a50f00e301985309967c83c3cce681896e04a1e6410c218624ae25ec81e2f3c0a903108c3b5ec7dde5a10227b2b08638fa94e2cb73fd654bb901108b37a3c15d39df3b106088308f2c945db1f821b6e3664fcc1944ea4939f73d7bc3b8fc30fe612d942b44b37ff21d67121a30fe6be1821ab9a5021a65bb690c107c307492376726c0fc61dd99e95f318d5491a37fab7d083317444c65daabcefce2390910793fc20af434e677d6ee1c11cf7839c339d83952b02197730eaa8b33633f59145e7634d6bc8b08321071531ef43d86dbc175e748640461d0cb96372b6099ee479fdb176e373d8783a1843af6f8549fa9d82f6630de7608a615697fffa6f6dddcb9083f94d6d5b8f349ddebb8f353309905b7319713077127db223a27030e4a44d49992dd951256f309ae4f47071548559851e0326c30de612793227a26d83b9da430525421061e21f41061b4c75c1f7f6bf84e86b45c61a8c6a7f1b1f49a4d4136d1564a8c1a8ef2945d193d47212a7c190dadd5487caa820030d66918b21399d56b3199dc118da3d5c10e2f2741ad50c06f167ab66a3ae3ee7b40c26a52f955f5e85b8ce2183d14bcd66895114648cc160c14389d2b1d4e91e930c31184490c97121d682fae0174e2304366af0911106b366c44b67615a1dc2603057ec2a9d42e48e55e80b866829e3b7744e7d1df4b1568c20c30b46bfd393b6972571b7d20563857b10392cf985b2a840096e3c8e4301420120820c2e98d26993b9ee24c63db60573ec5b0af72194e95a309da4178d4f6aa53fca82c9fd4e7ff8249763592c18ee2ad7a57bfe9c73bc82392c9ba59027eb87cbac60eaf418c1d73bf2cc5530fd8d8a753ae7b40d8b0a66684b946ff59c7da0ca9882b94b8eeeb49072b458a4607c51d5d222259edc370ae6b29cffc5d4e710c38482a92d8d486b4b173310643cc110c5239fad4e50a1d5324186130ca6fe6b54ca8ab3336a82f9d7e563a88f6a7521345070234759116430e1205e44e819139e5f42e12c74589edcd5957045509616a3245ca14a9e8d6957598d0457a297584aba2cfc233897ed27f9ac6284947ccff7d9f4f28f5784ffd427779cd8aa25934104733ccb612bd9c8f98b7daced104c71cf8367a58830a62f70e0a8419cb5902104933091ce83b2ac3c2faac145108caef1693fd543d84fc3c68d2f4ec1800c2018e25e3aafcaad223efab1563c90f103b3c5aafd094ab2b87c3ed618027a01193ea853d7c9f99ad7174f0f8ca691b3467d4298b4e6a871c304884090c103937c56fbc95912d5d3c7da16a706fac2ff860d0678787878d0d8c20b2e6aa00520083276804db26c79b93ba866e30265cb2b90a10383921b79a268c9554f49828c1c98d2f23bae44d0e7938403a3a5cec9f44d2dc5fcdcc06caaa7335ffa84d8ad1423c8b0815125486f75fdbca293353075fc885d675aa2ae847b208306468ddd9ef36cf722321ec89881a9ca4ceb9966fb5f2d8353f69ce05dbede1264c420870c1898c4497c0b216c077904379a8bbfa10890f102a3766a496fd92cd1fe210d192e30e9996ef517bf107cc5814e03325a608a72e14ea9ab202eaf4624208305a6f819c1245e27f529fdb1c621b0621586b56c49989814269645a30bd71458a10a73a7e7a774f1fb58c39127b02215e6f1012b50619a70a3adc2d684741736ee4a60c5290c41566444515afd4bf6b1a63772786185298c599ece3bdd4878d172d8f812bcdd175694a2ea36b79446fb3c444861b01e6d1db4baf4ca95e371fc8d51183d5ccad09b868d46b78515a2308bcffe78887b65118115a1483bbc7729b36a4b21284cfa4ded5c6f6276ea393ac7175c28e013860db1f1cf126ff6ad159e306c6b79291da18f351b5db07568a1800e1b12382958d109e34648224adc96cbab114e184485ec749dd56dc2a0848827cf52af0953d4cf71d2f6ec8514ca84b172526be32bca6a2b4c982da9f9f7d39ecb7e711b351c7009531895ee21faa5b2ab58c2a463357cf48c8caf9530a4904b95bad3734f650eaca084215a9feab4a8a5ad4d1e58310993ab4bd4cb927941642561d2fe381f43098d0f9e48182cfb66b66ca81c2ec290304cc821b623c79520921e61ecb5d01d3b08d3db0f696085234c6317bb313ac88ad88d304ff02472b2929d4eac5630c27c92aec53ebea814293ab06211c613d275c288eb10395682158a3076a9eee810614530975ccb62635f3b29cea2a326d091454749a0238b8e8a4047161d05818e2c3aea011d597494033ab2e8a8067464d1510ce898c0033acce08005110c5ff15e544a659e45d7062c8660dc4bd2c63f6749385f08a69dcfa5cfc6b287fe836050a9424bce1813baf3c79a9905081640309e989cc376ef64d7f807e613d1a74ea784fb6c25163e30ae089bf0d5a394a51eb1e881e1849e4febd0a7656488050f9c49b2d427a798cb80c50e8c132b5db2ae78fb21494307a64bea6f92d5fa5c8a0c58e4c09c53974a166533de3c16a081050e8c12d4549468f90d8cad23ceca74795249b18149a438119404c921018b1a9844dc4babb3ffa1ee9489050d0ce1440ead8b65a33e9d89c50ccc17ac7254f2505713cec44206e6b42421968c18c27be701163130588d978c5e280df3c0c07467c1c672dc4c1a60f10243fcb42939e3528e185102162e305fec74fd69c2cad9d80253f8ccd2e1912e49ceb901162c3028917f44503677e6adc2a4f6218c8a53722ee95561eeace599efd65aada5c2a04fc952b1720c3dffa2c21c2f0725dfe659468ee514063badcdcff3164ebd798529ca0e7911a4fb7a28af2885f9adf745540eaa3c7e0cc215a4306a565d7aa9bc25ba1b85495e8bc52ea5623f9b44619cef109534a48e7c34140695f49c77e45b33d182c224adb3d47877aa929c4f983c08a553c84999b24ef284e9b54dc607ddeb172f9d307d8647fa94d725f8cc09d3e513257d239f25153761ce9252a8e09126795c13e63d4fb94ee798f6d6326130a9a363db3b4c98f47778fa7a08e6e9bc84b9433f947d7fd061439630e814aff48b4ef9c7649530d85e86a898bb091da284792fcfbac7235dc57412060ba63a4d96b108b74bc21494c98cbfbbb624cc48983a58dcf848272f270c09938a9de283691b99117d8429bd52d6f4e839c2341f29a84f4a9784e88d308f8b14156cb7a3e6cf0873a9b869d92f8d6af98b304e5231e5516c2e59a7088398a03c29eb8ce0964418f3c295faec26a77e22c29ca2b227cd49b7d4e221ccf7f1c98457ea8f690d6112f391f27ed89c11ab1086b1ddeaf4edd3b71621cc1f9aa5229cded6910dc25829e9d6ae5c3f2a6682308a5093eb66f24efc2d1046cfa56d2be4b1f11610e689356ab93ded837f7f309a08b669ddc9b476d40f660926e24649af2ea5d20743f814274dc8079d73f1c1a4437c4e3e619aa2f27b308b87ef91ff922f4febc194e592eb281dca8339e8a07aa4c6fa8930e1c1a4cdcf534a95b4b57dee60f26c2e5faa61da4d6407c35f880c0f3975b3ad3a98e3669b8b7ed272713a182dbdc4ecbc4b2bc99e83c92f8db8e88b13676a39984c4456244f6ae9378983c9f3072da23ed256b8e160ccb0ec3e93e659ee7d83c9bfe368e4ea9c52fc6e307edb7e58b3ce224ca70d265571cc4696bcde2eb1c1207c4b27f9dca8166d0d668be69fdd752599eed46052a762dc5ef2d360b0b06f932fe5b0ff27349822897ab6249b30217606a3da07ddf3d8da90b2198c172a9dea2b2527a45806c3588f99057921b1f26430cbe8121754d24adef7188cfb7a3ad6a53cfff71183f1c42acd8ab084c19494e4d1f92cc160caa9adcdde43be8ee40ba6359542cc49ea828ced0583ce0ab91d8447d0e9ef82a9d4c8daf028272388b860ee9c09a2b3cfea6edd822948fd60713ad382d9c25aca9bfb22d2e22c98ea2b2cd7838d05c37e8ab7eb5eaf60fc891f4d847aac60b80aa954879c2a18fd2f2b7a2a513da3a282e9fb53aed21aeb5fa12998a49aca75fe9d93ed2c0583122a8ba83c71d5dca360ea9e3d21cad7e3ae0205e39f0abf53dfca11ff2718e3daadd66ac4f7ec4e306609b12e5dd397736f82f13a42c8a61f37d2e64c30feeaf62811d43e9a7409e68fd439670f9920725a0966f3943d6f5d9d0493ac5239fc3d46024aee64f50886a82ababd713552762318476df88648b9ddebb9a208e6cff9da59abadedf315443068cf50e7a722bc78ea8a211843051121be2b243ff5c7da11ae10824984948408a13a657cf28a2018c373271dd127dceeba0208660b292be95caa1f18f54eefcce909a92ec5072679fbd9e47d96a7d63d30a439b1593a85f93b9d07c6f64eae55a5e3a992ecc05867e355df639fb4a70373f014ea7396e031a49b03b3099d82e58e0bd5a3c281e14314d15af9da69fd0d8c3fe993cefdca8cb0d9c034ea2f3ada5b0dcc974c88ced49ddf100d0c2a68b6a890fa2b66608a1cc1a36bd5e9f4ed15323089c9233e21a96cfa4c57c4c068b9ad2553c3e5620c842b60606c91907d6d7f4e68ff0586efef5c734a7dc427b9c05c6adb32758457b4c06059944e1d13f2efc457b0c0d8f9793fe76a9953e12a4c377af45bdbf6580a5561ea98dd59b9c488de532a0cf259ca57f28608924685c1639cdccfd9908b9ec2143efa7c4827dead7c539853a99ec94998be387a29ccf5dbd1f7ef23c81191c2ff52b2452585a3308574d123a2f4a23087c578b1c87f4ae40c85b972f43b071d26f959406110fb886da5a58256ff09e36887a44a23b8574c3c617a3799774ae28da8b713e6922d572a2997138694f42531a9952d7bb4099392bad725d6e2e43c6ac27429d9df489026adbb4c98c44434391174aeae7a06264c6b319e236f45f1d832675cc2dcf184123d92bb25451208332c618aeac14d8bca71375209d3aa76ee534a52d2a7a5845152862c9590cc199330dd8851497687049df399332461d061aad3f4847b38397346248c27725f92ad1891d25b8619903008e9f31af28312defa234c5fe7ad3a229ff2ec1c613e1d59951f3a8d30ec84fc9f446626674b136630c21443dba7d68a29e2468b306751223f5ca5acac8b22ccf92384f7da9272ab25c2d84967a78aecb56d0811a620eb39cb9d7d08f3e40b7dbac3e8b4962c86309e59aace67a91006f915f1c2ea76bcef0961d021ec9759d5cce5f4204c27667ff59d546a7f8230a451cf594f4d8a1b25e28c40187457ac4b8d09330061b03d5356912d5b98f107d3bd24a1d25b502295ea07830739612ba5583aec3e1866245b0771295898c10793aa7afe7b1c69f76beec1244975c8d14f19adf56098dd91232ebee890b23c98637ecc8ab815e2c17c7144a4e5990e1ec27507f3f01976309e864c4af2de4277ca8c3a98fc5225156542d0d9dfc75a656147811974309c483c254272e6600afe4174f68dabe823e9c10c39642b1fad2d8fbb650a33e2601ea54b58ea86b81b351ccc1641d6c2e88e92764a1ecc78c33d27ad4d92d2f9cb124061861b8c57396e67a737b405b5c1a47b294d0a292207d960f26cfdb80db575a5cac18c3518644cbcb6af570a29aa2125d773627c4a7549926930798868fea684e98cf73870e4781c38cab0048706a38854d2c48de68be79cc17c6abc4f8ccaf69cd40c4651ba434b4d5606a387cfbba4091354ef99253825cc2083513f57ee093a73f1a931784a5be3cc4e7677c230430ca6ff3ef5ef3bfa946c6130c84e936c46f9c8fcec6e0333c06034651d474b508fa2a3695f30e9d39343a6ec5e307d559b68fe018ae0a844afe5025120108682c1502010060308f89e0423140000000c18918662c170344d96ea031400034930264a2c2c20221e181616120886627028100804c44030180c0c84036150801c38864344fe58907986847b0f7b8be69b5731a8833822d4105328783c03a63b55ab0576492905a62438aae8e4bca0432725564786f29a7c4279ea207bd8a12cf432496af696248b54e93a633b7ab7ec901fcfc53b303bb25f9de33eacaa24581d59f3a727662b6d4c0f62072902c14ad97aa10a004ec4fb5765d741e8551606e0a7758100f2228d107f545e5c51ecacc56132e6609b4ccea8083fa61330a8f6b95db6fe18ba398ecd1cb52afea4c72d923590eec0309f5b95ee875ec5ea2eda6263b3187dbc75b40ae050790d5535389f963af6c549b7107a7c3dad8adf04b5f757390d2918b5b70d569bd1f71c597558a0efa3e742063aac6bf6377084d3b10603e9cc22c0a090d286969c27e68438735b6421c8a7d8d9358201db30ce6fce243fb3d70286f52a3c2b8a94ba7e514ef8b1d7a4aeb1d33f7be3efe78dd95f084221bc8f6603310a748347a30dd50205860a80f2417542dd40e1a11e8a5a948a13a1fa82768bb8a0ac00b51e12ea3f94178a1a6a03050f0503551b280240b02ee50bf582fa09456714a0c08bb293da808242cd433da1a20c5576028a1faacb51d45219282c5414ea190a0d6aab82aa9d9ebd5e48a108a008a13aa1f44435d7a2332650f0504d2842a8722821543fd4150a1b6a9350eb854708dd19540d0a1aea098a08450c2504552da080f4e789faf28dd2017bec3985b242b501057c0eeaab0905ab9cfd517d58972f0d82fa8151c005b6caf3200a38db7cb3223e0af8f44cbc5964a8bb9c08f59651aa166a0a0a01b502c587e201d5835242e540bda1805006ac42c3e7a38d50408bf647ae1e940ec7326e70dc4583a1eaa1684f934f676702ab94a8203c99fee9a25b2c2a503da0ba50d45019283c540cd41b8a006a4743f5210a733e7d51f42405c4351bd2ca13d7d3ff137d8b55e2b21794ac19052cd8cbf0792a7e22831a83e29f40960a56b9486d423d40b58a02fe009eac993fa8384ad8899c07140314124a1daa0b25ce8fa20d1d6bd411a13e50f55018a87882d55a64dc4c9d07794ed6657fb956aa8c514030c1e0187644828cd25bc8785c8d0412c9718ad5509715b1ccb85c663f1d071a4c776a54e2d0eba96f0b355d0d9ca2b62d0a5a84e8994b3952129d308d4545c8d6c311059654081c01da4539818ebdcf096f3918b05b69d869c0ddbff9c8c0a5914609eb11bd21a451820451c76d010336e6c910e066769359649cfe4407cf9bbbcb6c7cece6d982098bd1d2660ddc7ad34cec0390b54ae5a1a15e1d2ecb19a99f6fb2558b2a11b88a178b418dc3265b86e761ffdf96b500c92761fac9a0ff99142c5d6d9a37d52a67062f24d84da60a8c99dd2ce9af6ab724b2b10721a6db8d21594b01d1ce76af4f59eee44aab3d61d8422e6715c41200928543e821b6a06c85efc36c660bdc55e8f0e05a7b80e7399b04762cb0d69c867688deabe34000d8ad5a050be06f5a110880f9bd5ba7eea4eabbe58f6b0e6e88c559d62f4be705d78a9c8d918310685ac039f950107c988bd53debe905d74fb310249e8f6b78307c6995f318c1afcce58218c1b98a5cc393e33fcc5396406624ea61e15c214fba16f704286a560539ec284f09c1ae8685ef9c9a4151d523715eee90183a69fd25a56a68365fe618c940d497f2684151593bed3e13a689e8a4f0d1c270c61f872847c52512ec63feac0a0dee3409265e7c94be0d7b0aa34680644be956032f780329081186402d07d2a736e5332b2f25ad23be8d0eb2a6d11b2ce615ecc47245b54396a3ef563c32e48a785b8f15222df8878a0ab7b7f97ddc3fab72bb08b3f7199eb4b2130ba005091314f8616907ccf2a5da4b6c1a9f3370040a0034b1202989c35368461baabe42728897c0d9cc088b1d40af3704487f648210034526c65b2d536d83d8e90ffa29046fb3163e61ee141e955e8462540077bc4d90ca03e17400380e1f01bf3a1194032ab76dca73853c44cb2f10c0e1fab87cb4fbfc59eb41e12cfabc38e02df466b9a3fae6a8b2bd37d4f7d9e517da82de5803da6e8053d01aef06414a042d44a4b2d131bfb711b094b8f342fc6fedc39a1012b09776de9ba108028a332483d6b2874f16567f176375fd4a81590ecf5bdef327e9774838f05f1b3bd14f930f4f064c19a7739282683d406c390705786824ea5e094c44a6c1b78d1b3e7d8e34b5b44a154f2d294a591c5031d8c9005633a02bed785e7510cad0c77bd70690e7fbb2d1ed054c940bb861114ef0dc44fc1e3c8cce461b72536955bf9f0c75f2088594eced2a790de33327e09842baba5eb5595de22b4d21506928fc2b6bae65e5c00e7e45565635cd0dc09275df44c6bf2021d800e36ac4439a08d712c5b21309e6c5abd670d159374c0b4f7e75ab5b1aed55142ac0d0568a300e92dbfa51b759014d779573f942e897afb4ec2002e6650b7dc5e4b1fe1370a6a77b35095905684f51c92f9f387284f163f81010390dc77f29e6738de3030e3a9d29f32e0eec18ff9449e620220c9e536976384916f2040ca9359c79cd3763c1d0fa84b5d81d3052b56a91c8b7dce93b8c0310cd80ed675eda07ad1f63f76fc5ddac0e7f93e34e2e687df4e6b4119683850e72a486a15c0718e7b714cd84668b7ea6ab7d112b87484c5e86fbdbb7bda12a8989070e47e197bebc530aa15388a62d08193d64815851a46634a56ca0df3743f4a60103eea80a9f3bd3c1861e63b470172f708e2ed725c02f79ff2278cfdf777e2db42232246e9d819ac05456e0e1cef04ea8efdc92ae482b8a90f4728d414aefde8217b2c2d422b2c827504576229b6bcf5771448158c9c4b6828f865adb5b16903682f48dba37b92215de74fbfccc6933624c8423c34ecad7090f8ea4711e72615e8c2c1f7d2fb6ef6622730d7a10e2848b0431991a6201976869727ec4a7ccbbc3c8f50bf27bfd349f29afa08745e7bd06fbf412b3646e46c4cb04764a48b237bafaabfa18c1fbacec1232762588b1446907f163b576466e883f8eeb3cc2145f1d36544262eaec8c16da23d4124853cc818e7a520112b44932d0132ac9f38d18d57c2bab023ba1251e08ef80583e8d882f72459542ec6ec919da2758476dad7e952c2661e3e75ed5960254e2daa79cda8e2e2b00ddd4a37ec3123c4eac291763ebc7cdf99f20ebd00cb5106dfe2a41a560283e1b2e4245045800325baf341c5f34a5ea0a86c9eab6029c302882e0a494b0939a72115b7ea0904d048348c8b832f91c7b8a24fae9008b5ddf23ec600daef4460d0446cacf53990b3c20a8445cef70b286ce1e669066359ade2e326bcd97634c7178a0d3dab1bca25290c2ff7e48264182ab2b934454daccc2df7e9b7cf6fbf281687cb70ee475ff0a56c6deb3dadd80218baf32009b29ad0c256c070329996964f2803c421ef0674932788f00c4e843376302462c9eba4249634d8ec394103c94790735ce9a1550b5a5ac8161b8265107b5768f3e3b563824c7aaada19bb727de4bd72fd3b3368646ef918f9e6af827eb0ac977b380c66fe377a17a0e487cab67d21ebc11cc5bb60d8e1cf6e142adb99eaf21cf426b856d13ba88eb129218d139c7f7425b4fd0855fab2790d51ec03c3a8219d279ffe5041b029919ee7f8b6931c9d003d1d42d8d36f112f5863c1ecaa67466e71b5a009851046db095753fe642f55aba6e5d777925f17efadddbe44d705754f5d6eb678b0b846614c9a877d18d1b51f3f30db5af1f65c2f011ab44464f0ca77b278617749fb1f699b767494ddccb04b05ab47da1919f63bfebd562eb4f8cd13cd63178627a04a2db1c4b57af0823dd55dd43c00d45c0725440be3581af9691289b469f564ea86e2282cd50032c0f28d1adc7583d39ca57c0b7f7175576a61721a5f884f060eab45a51f19bfe89044892299f43c0074818f297705ef9eb39dcbea12ebe5e928f61e694809d32480e6cd67c028674a2ec3e8af3c7693d8812f64773f98117108f0bc849745d6cafefbcfa886d6e1c31d6811f36af62f1d981a82e6f37a762591a1dea77a1a3bc808f9ff571fa5130c9b6930decfb55c2f390ac8f9715c73c9175de4ec34fcf4bb49f8f99697e70fa753c58dcb725ecd0121b247b2249aa52d5cb5a2a10f8863374a8a98a78beb487d0a898178c928d15af595b64419003ecf72640bc35773afce9a48cd35cc33b502ce3f1acd010d33f9f949f4019eb9ddf4348b7ba0fa120ef11ac1967e95d6bfab46d03cb925c770c193c426050ad221501414e113494d7b7ffd7153378b823f99310fd6a3007dc9195856554105775b86a70f57ca3818a0853086ce80a146ef132214aec8ee55668e5b6b6777268284d0ed6f1707255dd45ed81ce8f50d3eaa0b06dacb420d04d750485051171b485f56bac7859bef7a291265ee331f92ee40351f238a30a27db46994b4940ffaa91e2d58f816c2cb738bef02cc9261baad4388b7311e83c91a1cea47979550978c9929522a7bfc381070767dffebaacb46d7f06a6fdec8d872d961470c9320207ed59b6870e2fb03131dc713dbd23a00a7b30bd05d2d007cf81e5420ff9d3b4b770679dd94c07e9c9373e2756803109891e19041a8031e8e3001ac2068d2e2e9e4ee2ddbfc8a03e5ad3f5e773740916ce9784ce021604d021713ef0061b0ccad5600376e3b476a1b049e9c724c759d7154c4544d022c4305108d0554472a1a2fb71ba3752fc5e4d6995785a4a4194f17e73fc6aa0e6609ba62345e5e30e7208a7df85f177f05591cc2137ee6a0238e89fc061aa8461459968f3a1feb4af103330b046b34a556dda991ccbb03d507fde133c38de337881de72df46ded352ed7f6d60a8173570ef79591c8201c5a0c099c3817ae6e304b055745b4c2b4cb451bbff911fb477d73bb739345ce55844199de487f0c43782411e0e5299df7943808a4cd171ea74fdbba25c7691e4652d10df6fd9b5e795a2e88d5cf3799bc9301717c184537c4c3a7cb1c4bae17e000177959b8c8e5b0d9b33a8e8166da5dbfe582cd24b172fe86cbd0d1c9d232a6211aeab197a9f7227e819364109c525420c0ac53138a350877d9eb77980b254ec92d995c8320c54ba039072c9e5cc61342288742f9d0e5d6d389889d66d478b085c9b142d3548fb8e5a609a545d62431b995803163cc25ba71558dc75ffab361a8692e3012c85958b789cf41976c2316289ca91abc364297e1a943db93f37650128d48b98e4323eaa8b28d62a2747fab19956f575853632d35fc2f9edff15f9a7840eb01a2646e1d6a6e48c13faba949011c9cb9742c56690d4b00b3cd940adcaa0f3687b73a0e30e60f6916d2c46108b9d7cc8d8ec4ddd2ce407a0ab9251165eb5642b8910509e6cbad42b305a452b177525adfbaa0a74ffcaa463cf9132d6d0463647d223107e9b1292369a01e34ac38105ade78be7c48f0026cd0025c73423031c8973aa03328bb87c4d9b8f7bd14d3a6bdaff42fe50dd133e275b4509d7dc748fa3157bbb0bf77c27afc7acd50e0e0342f76d32d24a29810a0b1295e96f0d2b981d5b8c3fa32efe0e71836d303d01b026a63472653acd7199f874062797c8dd7429e13d1f8021a2cc6b5d63eb32a45750e02d983b346b872bc9948d4bdd4820f580280525fc54934594a87f1eba3a05353324e49f164fcd8530368746d04c4c4563d40ceb8cc0c7084d0b409d631363ab8e72102980a710091d2a8007abe4b352f87b3d10888033487167cf89ed3e2870a94c24d6cd398712599c36965787bc30b1728c46f6858c94de582a314691d41ea4c4874a466fe0927af070edc10e059ec8846cb702dea0838f5a72c6243a152903d4a873e097cd5b030d361e5153d49c141bc50a0a1d8a07d51d4a81ca859a818242ed0520f75a42e94080e240a1ab514027e9f97432541f8a0a6a0f050d0585d2c120f7cea0085028fea83e8c51a128a0c8c128208699c022238517b71880578a7c5054450dd78283843216e41080416945713874284701d573447e6e1d403d4315a10450c1a02e50c07fc0e190e613232314050a7c507d364267d881a2c22860ee66f2b738951071e84d0110ea02450b350305d3e0704ca054044a4751020954417541d5e7a0a6d0ef2d1e1214b91487c303555b544d0a8950f7e6460a96c028881422d40b503df34c217c25f3d40619097e9175e36301501ba07050f35034287aa8081415aa152820bc4361fda16bc2f49f76596469a7f97c889ba940ea16a2ea23fb320e0a1054758102d2e3009f850296a96ac00244bc24729bf6059c465268d0c7ea0025e9bee1c9cdb54b4d857cbc8baac682c4d36c4085baa86dcbeebe0bd1eb20f654bb59f66075a73a339ccb28721acddecd53d1f8691b7bf483147480522f8650b0ee6566868e5b29477f1fa7071119ca2073c98c09c4b4ddb1d237f9a4e2c9e453b8102b69ce3c7b56931084a6809fa35823439d2c6441398c21b41fefba294f407e3a41b1370eced3b7c338e8ca54484b8212da1a088b517b0e09e8e6b4abe23f518922f70d15e7a4b7ed71917b82161b2f0b8c312062e9a6f043c6096875e8df071e9f529b96db2a0a4f54de1a21ef0551a7b08c6e8d853a5c19ac3df51f2eb2cd3ee5bc44f7a6198a0b211a0107ce390fb9e51ed0cd25b8affc8ba20794db247d97c95f5ab8fe8186a0ca17d2f247b28a33dc18ca17f3672a51bafceefcdf66204b0bc18f27070bd16bfb10b64e31b1aa6df16c6aa96362243250d441dabcb6a7f6d0ec9c53708f066936e3104982842885f1aa941fba5141fccf1ac97db81a87a00a3a88e79f03440d5dc439c4571f208ba2c031ec805997eae756c3bec8ae630546cb40a23c7d0059104d1135344d0aae4f3ccb66be20ef2dd820de3202a61b3b590e5ccd9cdbcfc85a54c1693a37d343ba5a8286988ce03493bb562f1991af282c9a57a4468430272d0b3cace3f87e8adc646a20081eeca1c2c8c567ada75d08c65987894dd10a84515fcba6a653da1635f1152ba2c59a376713a8f04172040bdcfe76e3b3cad01acf220cc46486475412a1dab8b286c92e541b2c863620aac61b3f5dd7bbe41a31f14188d2ee1bbb6de40f362c5744f237013965bee5ee670f533600005f8533e5e205889b75570779cbeb46820fc9f5c76ec76dc2204c0662d3264ca53535ad9c1c93be2644ca770837e32da5a91616af2a8b00144ed8e28e80fcd0cb376156f59669c0f154df46b1cf702c37d9b8ab994d7bf4266820bfb5df32ef94ba958e44595ece3b7c83055649c211c471d88608bac949c61460f520aad177b8398851901afacf48ebaca66125ff0502bbdb20218800142c83b4b97183c3918e0a0011b62b908b1d4d1c5d20647b5e04c0911aac2030a4deec1e04b7619ae8f2ea0df4bff25f6618e67fe385eb425e531482da14584ba7f7e219a1b3122c7154dc05b898a02dfe5aaa3278d3bd7e22ef60e16f38a72fc8b885bcd44fd1d4108d3b901fe5c94b8142c3a9fed6fa71f8837eab2a74db6a350f1c32b75d95c40d158b63176188d6db10fca619005d830118f9db36a5a9064c8843e38de9e48e47692e7a673fc86b3cc933803f029db5259712ff9c721fb9351f1138706fd6fac0bb41ba9cffe3a25d9a188d4ca52e01861fef119a4e196fe4b50c428a8eb84e8811a2aac455db5364433331d2848baad4e91da2926bccc5456a63ff31697e854967b43c0a43b0f5ac8063208387ef25634dbe7d8a32ce4b488829764721bcdfe633da32e9372509cf677bf0337815a464569855d8052f02946684b3dfe09d4dbc7aae9978f1dbff59856bd3a63031345a771e5c64ccf43d6d968920b0f02dcd50c0fcb02afa0d3f94d0367883c85f7ba40a157605c960aee9923248261cd789ece9f280abc95c4488548cfed61530c5569490407080558f51893f274aed5efb8e6bbe4ca623a0f99e97f3bbbe442c023ab4abda0d37efbe1482f4df3a7e65da022868fa8a66db2b2881470cbec3386393ec0baa9409731dd8990e6e660c4bf61036accd9b1175dd5684786ae24d37855f22d8ce36733fd6385265efcd2c88a2f9e844dccc6d9346b4be494e1c4335562df81d2cc3bbc818ae85a5b1f332e4d1d5141bcd2ff499a61df6e852767995b54b2ffca6bd440bc7d00b590891467683899dd150b2259e91f4a32a44bbe8982ef4c61ea144bcc764d5be56a931a467fa654355e93ed8a17882dc7fa5239deb9bb1825c6f9022c04d0acfbb5953d11041dfd1ad0a9352b1dd9ffaa6de065e95d95bb00a4366c92337ef10a782496f5bbfc37e0bdb0c6fc7418718c7875f990f6c8f3a9fe86a3d99bf0095de12e87a178c477edd00f9157bbf766f9ec239ff176c2cda36d7546f2e7fe3d387dbf9e526a554c2eff7515b79b3bbf17bcafaca33a443d835e3d3c0c864973d3e6f5e4567f1fa84d0359379cd9f662a4eea34398b0ffe266756023f3acde43851b9d4932ceea8ebc4646f560833ca2ceb1d3213835ddf9fadbcf2945d4856f43f629460190e334b2dd4df6301113eec3851b657451c18b0c6f091aba855a98159b9ec1a6343eb295785571529545ae81388a7b837c2f0eadd8312192e400af1bc1e60eb5934ac42919fbad116817bb457278c316f6129dca5cd6ccf3ba68c1371916ddd826a1e64177abfd10daa24fc2e5a3e13cb6d8bba7f538741b9ad15976adb5e4a714f8b6c6648a4866823dff8abfcfde33702165fe9126db26eaad72a803adf5b36226705d5960c2bdf754f871108a63f600f8f3c770ace1f20369f827b7ecf3ba005905cd1f67f98a1826fe2a9f770284d93e665852c84b87d60a9823159278160254e43d6afba8266c887fc47aa94cb7b45be69f0206a233746ebece0de7a28f02176d0884e52b2873165a654a35a33d904774775dccbb6e142075c558e333d46dccaa735a49c22e94b5e608d72f715a3f8bc9322af5cc50765bb30d9c11d688f631eb8e19a77c8b051f436d14f643e697ae74971804c7a0e1ab64361512fa204a5366b056db0d2f4d9d725f1b5e65a36f89da4d6344e6db2f6e971fc938a725e602317df68db6b7e0ed3aae399dce37814f0aca294b012cb698c7a7715d1962a3b141ad7085d5fb65a01f1a59b9e7971fb175337ee9a18651d96ec8342055b2b79466b3f78b6dc26a6b412d15b52825f1a453780f5a8a16635ba769c22776c1952aa48acb991d228570ae165fb59590401330b40373a13bf36b1e9d4f3a4148811b5d69162f661282fe7470a5852b260a84fa14c420f13f59d3346dbaa38538e6b4c8bfc295f927535a62b9042128bb8b2b9bdb1d3cdc225acbbcefa6b0e6dfbf0a85a3f4aef53e07980d5e61153e0b26f0a73947c2883e7d9a57b9b45acf94b725452485a3a832cf0065f1d9f4da83aa9b7ed10f0c712d8d849c5da8a69a6cd6fb11d3d71ca30750f4f17d70110246680a111d8c5a2bf6ec7c9eb581a77fb858ae474d26b4d03c3dc8b859f5a3f828f66e9da153793932d955441d86b77e990a540036210eec0a27e750952470454307a8fcb6500fd1bbbbeeb622dcabac74fccaf9139642d285959974a8f9ca92cf13284c21161a7674b082e115a5bf689e0d99184247178472d8f5d1a4bfdeb70aa1a4cc8fa0eebb7f645c924ffae936151ead2b291784db1a4ea66f8e7dc20f8004c144b4c071fcf0b6dd39dc63c96b315a68765787f8e652e0bbb05e4a517f1d328975927e819749db785b7330cc1d6f2f032f1431851e1bc4285d1e100c070d7cbfbf662d71a3b804261bedad1e1f9bd0851f90255957417ceeb683d065677db37a6863c27ffe9f15e9c04f0f8294160fe378a1804b2d963e7004414bf6c1af1078a258b18fa87ba05898b81d5f8c0aff0de04b16d08a04a50e635f70c920b38f16246ed95f9dfea2bee30e1cdb6e22a010a3e19c276bbff35266a1d9f0ddcfd86eb597f7c4a8767138053dd54de41c208b6a64711918a749274adb30c8abfa62b2c8c7d373c2c76ad71676080b07e4d8b895a0188ac9dbdd52a96c7c20223a9a2bd67f25392f6fcb32f85f2f9e55235fef88e222e11ed72dc3a366ca1d9add2c275b55256cdb4ea8a6f24805ab7e8742279f5d6aae35320b1bcd81254b5274bba383668edacf81d07118e43933e33ec2a1a63f6ecae5ffaf79604ddb54e759fd6a5ac2e1181fb62690612052419d03b04afe4472f552b9742fe7e0b86fa22acaa4d5ce02bc47ca30c65b808e22229458714753e9109b2d1332ee26f49b6e3a0581344693717e8b002213b126ee845e6837b46e45bb1bb29cbea16ac17c154f32e5e90f9250c0e1e682ef4a64d5680cb6bf42d2fc874f4ce88ebd1696ab7efcfaa821824d6fc7e24a44b9e0066456f5b69931d6018894cc6d4bf816b534e3f5e5ecff7854d44aa024603a4010305e0058307153ee5d43536c9aa160cac32817035c27135e2071bc9fba8231b495916b4b77d044d5d6001a30dd2ee794b1d66d44710a6c97ca33c85a343af4d638d0c61d0ed0da29ac14c8a1e139e175006f399aa9780f2883b91b0051832b340cab864527d9f4cd1ad47b978ca36990c0ba466a9a76091eb50714b1d29a08c05524dcd383439e335a3ad900c72e22dc88a04b00779b11d5c440009c2c196617089d5cd66150d155d8413ff4859da482bb2300f2bff8e02a64b7cd104f9103fbe41a40804cb1c9cc431a1748bd01d0ba00f73e23b888c037013a34604148e59503a2e400a1a29c945904505900afcc48dbe1dad384b36d8e40a503233e0d0ec9595b9aa9ac85c72a36f28640f97eb31d254e8f9e1b4d3ef3202529e424a44f50d62c9e83a9cee88be237211f885f00a7344978e4fda2f89fe982954b1a8d419b5d37a20c489ecdd5df763e022cdff5ddea42025b17ab6a079f61c0b797e38a9b27e4334141295e043c347943e85233c54d2ab773869562e433323945795f99572ff53f02cd52bf7c7600e72d0cefde3644e1aa660458cdd022ea684100c3540b0a6d0013c0c3c0c3c0c3c0cdc2e187ae36f03438e4c3215230c8d326ac494924c29a5e45e580fe6cf82776b44dd7d817d87245c100cf60b190ce8ea0e06f1279d9f25cf3feadbc19473cd92cabb0e06d9ef2f79ce83901fd3c1b42fa74cb68fe6609291bb27b7252f7f260753ab76b838954d5c5a6bc4c1a499abe695560d3898de94e0a54a8eca718b0935de60cacd54bfac3016fae51c9c1294e31a6ea842c655c4d2d65d8b96665f87f14f97f11ef8428d36cca8c106f3af28fb91b71825ff22d45883016aa8810035d2c0a30035d0c0030c07d43843d530c38f248618078c3290a10135c6c0801a62e0a1801a61e8318605de7d20a006181250e30b6494f13458400d2f2ca046171c50830b5b3066be7c6bf5f9e86b47d6d60835b44086026a64c10035b0c0e30035ae4046016a58e10035aa60a306157ae0a831051af80f3192901a5218408d28f060400d2888d478028f1e6358e000b9810570d470824928b573794ebe09e64a7156b289ba52b533c170d2c99f20ddcf82da76ece810b080470f6a2cc1205a62b797a0425e2929c1fc7dc1df83ba2a3f3f0906f1e1b93eade5b82f428249906d25c653c9abd1110c5e597749b679afb811cc9564ff1cf3f12218c4df8dd89d9d08c6132dad29152f7a949c2198b3d9d6cd684708e6ae122c09d262bd0f824934b145b97df854e91a403025a59359f76b955ef81786af92dac3058b76f2be3079d015dee6e49c44512f0c339f8478372fe9c479612ae93f8973aa94fdb5bb305896a4c4341d7d495474614e7176afdfa3b9309524c9559d312e4c49ceb2def5791469dec260228490cf36a6458fb630076d5a3ab67f79deab85392761c407fbea0a971626159e4ff84f3da1549b8579aec41f1d538ffb18631c2029e810b080070088404316b1a0010b5329d163e96e6f42ee25d8b1c3819457982f3b5ff42c7aac4faee8636d9c1cf5f3ad30059d59b28e12b2a3faac30afef7d291d42ab309a9c9434ad3cc553912a0c5eeaa352a94fd9829e0a93601e4fc899643d9e0415a634e3b992ca62d7a6730a839f24e5ff4d10f1f0318539c925d7a858e9837e4f294cfa3cc5740813c4b6438ac364c57333d91d85f944a5a4a275236eae284ce9fc72c92a96c2741b0a93fa0fb527c9899bdc82c29c435fbe0a8b8ba5da4f18f3d2ecf65bda13e650516abb449b31499d305b9dd81a4a4e96ca9c3099aded56dbc596353761cabd8b2f0be7494b34613691cd8f2f4aec5233613a499ad5123ac4844996be943a09ba84c19227a524d5cf12c6959113c4c35709c385b66c3537cf331f254c62d6e2ba095182d06d12e673d7dd71d1b66b3149985a4e687f55226192bb9fa33f5f6643c2bcdba73f3ee8504ab34798d297d292fd4246fe8e3096202b8e127ae249428d309fa0b3e69daa08edd06084d1e46ad172d1ee640683c6224c41c682525259567daf08f3ce8b9afe786294c68930cbc7aea709efd7af22c2a03d4fe5575d1c75ca4398b36c4ba6ad58c5958630fad6c8b533955298570893d4101e21cc974649394c5ba6091a84b904b55ebefbf93a1784e13eaed66428af52204c9229ef92613140184cbae98f87fe60b0d492632949e5dad20f86151f29eff667a2587db06bbfa357e911a90768f0c1a46c3c8425b9e3b8d67b30e94b8f6a2abb3baed3834189bc1ca773decb93e5c174494688922ceea8933430eeca0012c4c7eb18a70698d0c0834988b6bdc77fb7d15b183ac0d071020d010b788880c61d4c9e3ebf6773926c635286183e44c079071a7630e512e4732e1d472ad0a8834957c7adcade72279ce8600cd91bda7487e6601051957b3aa4fe071d3998743ef587281fddf1389844ff790b268809f32c1c8c2722fb4a7c0ed12fdf60caff26fad647286d1a0d379894a462b3e26fc2a8248d3698ca3abb7dac144e9ea883473e7ad880061b4cfe725246b5b40955a2b10653898ccaef39f6499e527671a0a106d3953241972cba654c12c8a7a2910693f44168e594f30ad0408341f7374dd0911fd7c33cfa0234ce60ee5efd203ad77e1e44c30ca6127e466b5c69c627bd40a30ce6f61d3f4957b4d9cfe7a5818006190cdebd5a2b6e4a74101a8351ef3c981c3e480c66dd36b182769153fa0983392d4d49da713ede3618cc6741c43c8de7fefd05a395a7ff957c6ee2a65e30652b6552fe757ddabb601c19565eb9f7e4bb4b0834b860f8926284906a73cae52d1847efa47c502abd85570ba692a3c3669ad866c1249768d2c4891fc753090b46cb0f42eb89f90aa6e46a17ccc6e63f9b56306528b7d2a1fb3f88bd0a26ff0eb7d81aa282b9f6c3868a65224d7a8e0c1a5328c4c29ca872b2537734a4607e8bf7a0540c0b1e74ca0d6844417b37f9701b15b515b39c95dd7672d5e6cddd020d2818d333c4e7196df3ef368d2798e5e414b5f2a94bbab01312954ebe36c62698f24dc5e5ece92e5d260d2618e4a82a49d0f79fe653bc04a3aec994ed204e92945c19417a88d1a3070d25182d2c8912eedfc4b2388d2498c4c9ca23d4cbe394276920c176d0388249c8522ee71f463e286123d88e43a308a66ed336e94e4936228facf11809d223071ba4470d7a88c14307348870348670348460d0bef433b76bc25270644d5140230826bf4f51de92963480603b7e71337c71337a610a4fe285f7cd5de7bc30985ecc7f8feeb57817c692bae275a7f59ce9ebc2d86a55a272f548cfe5c254d209ef26888b140be1c29c929d6b27b94c7fe816c62bd9ff4a6249253db630a9205757bf7a2d92a5843a3565c27cea3198410b73a84959f456888a53320bd3a5b89c794a6eb4c6b230791ef59cb2e57ca5ef8c589884ff3c4a09f9d1a3b2336061be3d258f56b3939fdc19af3099145b7274b194f7ed0c5798467c7b9056f1a2dd65462bcc5dffb763d2df87b9cc6085f972f6d295e52075cb19ab309e58dae964d4ee62394315661d9dcfff73acd41fce48852949c29612bc2c6858380315a63195acfb6fb4b289cd388549d23905ef7cd254f4d80c5398f479ac98a3aef2519b510a73ff29e153929438f7ce208549963b69ad94fc9ccbcd1885493494acb6df1213a600086286280ccaa4ac5c75b2c9298a720f334261f254fa2edb2bbae6748719a030c9a923fa4c1a8f1edc4f989229d1ead12a5bce559ae109c3a987329ffdbc6046270cebc946ed7dd6935c4ea052e54e2686bf657b642d070788964d98be5ccc427afc9f5819592b23ccd08449dc4992f8717b634f34ccc88449e4828eb893ada30be424686e98810953a9581eed703179f54b1884cc99f4adaa549d829630780ab94fa759f2255a09f3ee7e6fd8e8d6133f258c71d5fa964bf211de24ccfeae272cda9b14941c49184b8923945ae9cc8884b954875f0f2a6e9e1e244ce263c74e9a96f48eaa86198f30f7b5a89a32418a85e808a32949c94159d0657add3acc6884c1b7e43cc85f2b3735238cbef339f3f204f95ad930631126a9272531ada4fbce7f8622cca7d4955c302311065b0db51ffa9268262a87198830bfc9a6a475eab9c6e041468f2e03c8df80046cb698710873b8ad0eda497857b9cc3084493e5162c227253c98d04a116614c224dbb93d9a925732f2f1a31807d0cbc0870f11c4620621cc292e3c2c84522a55c91835701d14901d3b3231631086ff4faf0d2933db1d226608e253d9ecf2fee5647278654620cced7136aaa454f6271f595b1d616840dd300310c62e15bd3e56e938d2eac58c3f98cc5c65bde54e8e3e068f2087077abb33c30fc68e16ccabe3babbc73098d107b3fa65d1fd5932b2767c30db95f05822775a6c1ca3070dc8d883a982c55e515ac4e4e746d668f03f46d91e0a66e8c16cbb67ca2c76b6ca56c983c143b5c9154e4eb2fab761061e0cb2bde272f47f927e251966dcc19ca1b75de9aace04b18e303ea003c730c30ea6f571f524e8e589274807183a7e073d4cf0323823d8b163461d4c49ce51dfe309e2615b8819743048cb968388dcbbb4a43998fe925ebc0adfc1aedbb163c78e622d881972308eb7758d85d1d8cec5c1149428ba72f2e8683a38182e98a7db33fd1bcc39ce6bed3a65bf6a6e306875d7c89ffc249fce6843a11f4b4bdc8e550533d8601cd3e559cf625c10320dcc5883b9be4c849237a9c1f859336fbe7ff489a63498bc6269a57ad060b44f71ed627730d19d3318ab84103326540a25da663078f87ab332614c54bb0c6611de97fa6a6c94ec92c1a0c2579c7da9cba2eb18cce9529fe72427f2171583f14ad03e67a25b2c3fc360dabf7d39bd120ca612a497d44f39c9a17ec16c26a79dc395dea91003c5ccf08239fe96b09aaf2447785d309d942fd933c44b30f1e4ec236670c1d4baa5cbe2fae7687246d6ca160ceef19792c7549117d38249296126cda501897e30ac9f38ba53f78af49c9b10d207a39b5a2ae194ebba89f860d0f94b29ed7ce7700b2442f66070ef9133f932bb63c43888103d18949cd893f63f7cffce83c1dc3e2529897d0d2178308cb2fc78a621364cf60ec6baec7f927b497292cb0e26d9abc3777712bcdce6516208a983b1e343ae76bcb33b7941081dcc314d79366579557ff442c81ccc9d2548cb2537ddc70441881cccdf492739252c3dc5923898dc2f89d70f26d2c403f9383cfe53a20f42e06052827bb96df75e3a930a216f309f342f4a99248683103718bb7d74e5933ec54e9f1b6490903698bd3eae85f5f8a95ceb5b84b0c1e8a592cefcf89c1db41f014307183ac0d011c607745860072f42d6605633d95450ff512620774042d460dccfe92acdc92208498329bf6d759f9ca757151a4c52878b27699646d67a6d107206931cf6e42c7592dedc6f64adc6083183c9c2454813ef7622e391353c3242ca60d056e2da6782dd9b8909216430a55dc9e1399ed649dc47c8184c92b4942bc64d924f8acb20440ce6ddca9cf5cd47d6d40d21613058befca5e73d5b186f646d8c1f41c8486c4308188cf1694dea0b1dc4e8d810f285102f584817f404215cb01d5982902d98539013c2937072f0a4a43c42b4703b4a1642b03083902bd88e1a8458c16023f6c4a9999ea00f11ecd8e1e34715cc39f7eb2529d8f8497b64ad06ae03534308154c42ee7ffc9d1eb55b9982c9d4bce2840b256dda523029b9766449a33e3fe95130cc988538cb43c120b34e5225d79960e2279892b03af6d92c4e305f253f394b6b79254f138ca21fbf724ed761ac6382614ede9fe8f3124caea562eb452d955e9560dc50d2ea5fb5bc949c2418eb63cac5f9d441ba88048377bd6c974e2bff3982d953acfed6fbb8f799110e32cda42b9f2db7428a600e96929c8bf5b94b46214430a91e695ab54a4330c8d6cdcd4f31aea264647f1022844dd261a5725d10a120b82775ca56a57ebd630810187b93f4c979df03481853b0f10b639cf614d1296d29ad8dacedd8b10308367c61da4feb37a3266f4e522ff6916d92ceb0245e182eebbf8390a5d3c8d02e4c9f265709da35d22aac0b83ea9ca34962ee9bea9a0b6325afafcea5feeb212ecc2687bf78c2a9f9a7b730fa5be59496ebcdaddbb1c37d944146dbc27069dac446fa8bacb916a676936fe76dc654286dd0c21cbf64869ca0c4dafb6761f8b72e93ea7dc33c2e0b936c297946c58f6fa6b1309f1ea15e4b437b7c7164bf07903060618a15f3b13bff0a53fdaf9fecc5ae308926f8ba7b3cf934de0c62a315862b59fe94543affe42456983cdda913bd74779b9c10b080870f1bab309fc58f193d2255184674ca853f15464b7bca04a1438b7f8f0a5338758bad97526b074f61f23219a5f374d62439a6309ad89ff2b957fb4436b256c60f2041c878b41f78f4230475a530ac998e975e27cd934a073d5293c2248f27a5b4e6cc97ce8fc29483257d1384ccb8de47d6140c1ba2b0438f0927cc55caa1306b581274e89077712f284cf224512f675ceed2d7c8da0f1eef478c311ec88ec0c62730c9e773da13c64effb9aab5ad66eac14304363ae18cd727294d9cb09285d47513863ff149caf1526f6623363491785b7dddfef7b57b26bcb4279824ae39b266983075ca494992b09b7d5dba843925ebce393e9735554b9883b24e5216719ff6fe4a984ed691a9172e84920c7e810d4a98a43cff93a3741825f3c8964dc22477ecf730b9731ca54b4213eff7717fc9489852f2f192d7726a318484e9b774d076ffcd4e623e7a9ca5066c3cc278eaf4bbe4da1d614e162c79e93c7b26a939f8a18d309c94263b999c6684a9ef9438fef941e7828b30c8f1a03644798a30854f7297501b27893f1361ca395ece3916fa4fc4883049c92b8758d57fe67f08c308912b6a02e4078fdc800d43982de8a0ec93b0d713bd33cc808d427c7266abcfd97c48b38ca7018f20ae57860d4218f4b968070b35f75a26076c0cc2f81eef3956be2759b991351afc93c1c3c78f04e1712eb02188e45d5369965aac1a7c901e3c727080a005229faf0aa72b4927fd051006954ca45c89962533cdc1fb38fb8349969d32398b3e7bf7479607901f3c727080a875c0861f0c965ff5b633afaae436fa6052c9d3d78a2a61dbee91351e641cce2b810d3e184ef98bffbf75f0770fa63241cf873a41c4c564011b7af0e2560adf718bfe08a2f736f29058f2ebfb09a2f691352583950c1374593c184c9075724f656ae30ee62407934fc9a5a4e5ebc8c0861d0c26f44b6c8fecd26983c0461d4cd97e97449810dffbd0c19c9469b3f441c9cff93307d347ffec3cbb6cc82133e5f17cefa29583f781898d38183b94bc99b814d4e30a07c379a951a293f68f2dbec15c73c972ca4f82ca22731b6e308dee8b9e6bd6a673ab36dae05f923ecf456b2fd11d3b76ec6043a93b895d3183a1031b6b30bf25f1b28cd6bfadaf06a378be78de6d0bf1491b6930c8d8ccfb60e5c84ec0061adcd13958f99ae90ca6cbb99126eb6a063d8b7bf23ce15406537e936dc40893b64e440653cf6577137a4628d5c7608e159fbcb4e5314b25623089f755e1bbbc84d84f188c1a3a2c0535f9d0d182c1dcd97f6371bb19a62f984d3ca9a3a7a87bfc4c0f0536bc601239e9e956a6ee44a50b26adca3d51511b5ce092d2e1e53aa82c7d600b36b6608e77a54e8a258f507f69e1249f4b0a7e626a0216ecd821c62901df000c1d957c0330748ce0033ab20d36b2606aad0fbf5541a8d2a1b5c10616be24a52c49e7ade751dbb8822925bbf2d22176c38258061b56308997a474d5189db349abb0abfb2949eef6cbb512071b5428c6679eb0b09c8d2918edeff5930e72b584df86144ce29dea58a91cc45328e8322041c680828d2818dbac2a5fec0a964f86800d2898245d4968bff109a6bc1f4dbe68160e6c38c1e8694295497a6cf3434d308d9fecb5fcd9444b15261867cd2a5d6fddc8899760569332d342960e56660f1b4a305b50170fcfb1f29f02c60e200724c8180148828d2498eed287bc7bf2ced1b30d2418d544aaeb8c360ff6114c5b4976a6b7c58611ccc9474fb2f44790627bf4c34762c04611d617f55f8244482e7966f48886fb890ee13bdd4943cc4e34ddd9106c0881bbabbfbe1191265d82dc00046c416e5083e6818d2098e63aa95cbd612a5d361b403005659db2d7c9fb74f20b9358ae759572bcb57e5fa8b226c88f9da817a6203a25699742bc30acfc6d08b16d2a42be0b938f9f9e5d708b16725d9864d6cc77f08bb1b4e7c22422c4a5f0a9e3c2ec965ffd991fd7aae416c638b1b7dfea43547b6c61d6f4ac26499f61599d5a98c2a81276fad3b4309ce8342a74ba3cbaed59984e8689a2f2949ca6c3b230a5e8fb29e89855ca6d2c8c214e3651465f60619e3349da0a2d9ee396571867cea289598b2bcc75722c1fa1ed8349698549fe938452baa2e5569515e64b133a49e3b6b1ff2accb1d2cb9325b7d0a9548561f6d229edd2ca2aa5c2a4c41c153d49d6d9535498c4ccdec9bd1c7362780ab3ee5eb81c744ed2e9670a63679cd2f3d495734e29cc23f4c9bfe7868ed24861cc52e2495e4f9e521a85d1842e5d4b7d92f0c9aa210a93787777cadd4c12be0e852945277d424f0c8d9747d64a056a80c21cd6254977afdbb95d8d4f9853c9af8713cb3f9de809b379f0ff9c64fb09c294408d4e98b26ddaa7f814f428d1c637d4e084c9cdfd64df0e65e9c43661d0cffc74eee7fbf861d7811a9a30c8ac526ae74453b27e9940f5cf25ad327bbbd05003137d4eea6de71e1e5be310b080070a6a5cc22ca7ddae73475dd34a0d0e102016b000f247c18e1d58c312067962f69892ac4a98e47bface5fabfeda2961bccdd5d06946dea427f1999decb8a2a263d49084494decce0b42ac428d487c234c86faa8d6808449dac96b52b6f023ccf62697eca354c850c311e6583f32e2c467dbaa34c2a4a7fc7f3fa4f78958750b3518515ba5ef2cc2e4a77fad3e478a309be852829824889b134f84614709b26cf4eedb3d883056ee903be2d94af810a61925af78a924f89b0c61926d323f497225a98d8530b9a56eaba03c761e11c2d4234b9bf0fb31c4bd419884b06ad1f434498a550d41986d474bddb3ab04b9d20b350261b62c313d492232b70784e1e442bd4929ffc19cffbb6fe477bfc5b5861fcc276fed537eeb8339a8fb3541c7b95739f960909df3954a6ce6e4a43d187fcc3e94b8fc5142d68349101d4cdfa48925a83f0f86b32459e53c4a5d7b840793349d941059cd4bbe9dbc7b30ea5ac92927aa07c3989810f914d4e74fe6c1585ed6ffd92fddcd87876295beac244677309fc9b2646dd2365f3b9842c926c9558a263f5575309fbefc94a5ae7ef4f68114b8410793146579921eb5a054b06c0e959c63a911ab758235b20b24c81844b82107b3eedfdf5bda13f154126ec4016fc0c1bc2676784982cba84adf7883d194c5519743663e99c9811b6e30a57095ef142c3d87db6052da39ada767b354618331a4c7f1144e2f9ed4afc1142e5b9fa4d28ef523351894d03095237a1a4cd9392234c4070de6f592f475a8f80c2649f48dbd12c3ddc26b0663e97cd51e43a90ce692e4fcb1b28f50d793c1249d3cb9c7c3979ea563309ed0a7befcb2cf87530ca614bfd869d9cc4abe30182d8855d2e57b3a540383b1f46e7e56e7cffbd48d2f182d694fddf082490e1bad25965f5f236e74c194b2fa655d365584aa1371830ba69bcd924fb0591137b660102769ad144b78d58984b8a105e3873b5d4f712ba994d8871b5930ca7c5acb9fa4381037b060524aa55dcef2f1491ac148c48d2b98d49859b6cbf69c6d84c50aa6157516f794dca882417f8d786851e94b09550d37a860124275fad50915d72f9a871b5330a5eab0726725465c89871b523029edf92a4f9c521b7e148c21ceb4890f3a7e250e058392c4b4d3f9a44b92de27985abfd7a49649cd927682498915ad4e9f54d7e146134c2add4992c73fa19354c204a38ea5774a9de296b4d87063090695c2d7280ff1c8dac5e086120c57b1e5e40921dbf51e623cc3e046124c1ef483aed692bfdd6f20c1e4d7f757e3b98487d008e070e308a61629ea574b5092db78c30846d121b2be23457e7e2cb8510493f69255673a44ae5b64b841049350929825175b7bacbf37dc188259d7735b8e3d5a41772198b5e2d228d3104f49340c378260dc132babf9997c4a7c1b0c3780602cb1f54de9d13dfa2fcce1ec93d817a61c3abe9e921dbca2a717e68e7bfac48e3a499f102f8c6dbda25c554fb08b7761fea43bdb76324157d4d620a20ba3895689572a69fb996220920bb386ce21c455eec7897061b63541e673a97a18931f68ef16858cd041df4b467741c4164693939a4bf1acaf9208088f1f888520520ba3c9dd5aca927f57bc8c8c51831b246b4110a18549a825c94b84d2552b8dace11d41641606ef8f0fa124a5c4833d109185c15da4c8bf3b3d13cb26446281271defd48f546f0b8f1f880b2c8c3257e972feaf68496af802a009915718ee427b2e1d952c87d6550b1157182c8ac5a524e55171433e7cd4e007900c342b445a6130ad1643873139643b9f81c20a83fed48b63c2f357cdab30483529b77ec4ec8950441586b3f8f25fe22e920ac3ece7edf89f4fe72e2a4c59727e27ad2405d5a791352485c8296c8788298c2589ba5b89df55f847d6ca7484a1012061f81001183ac0d0c1a110298541d7c9ce784fbda1c5420aa3adc8aace7fe7685e7181c828cc496c4beac42c97d2771105ee0885e974dcc2042505853955f7e5ded176f5f013e62a4189792373fce3f535384032b063c71e443c6110522ed44eb6aaefa04e984a36f573a3d29c30e66f8930d32d6a95ee4d984d4d7ec731bf5822c45410d184f192a8ec1a1fe4fb148348260c57a3224f720beaf6cc2f8860c26cdd6667f6c1d3bc7e442e610c71f224ad654990964202114b98f32d6445e8ce39443ab2c6e307421b8854c2582aaba449d1fe81ec8708254c729222a36b2f483b2d193dd07484a18163bf10998441754922f2761c594b388848023dbfd89e932abd236b08021d60e80023b1b445c29c61c25c1e1d2577744898938c594ba3f24798faf458d493b3a7188f88234cc27d496255aefe34a748238c6b618492262813db9608234c56b36e5254ea3f576411c6d0169ee4fdbaaaddc50b228a3067dddcbbcb89979d144407cfc30e2289306e7f2ec964c78aacf0d541041106b792774a0efec94cf46e0e228758114398348434355963e393285208833ab1de345e2fc705a5408410a614bd3f592559d2bde700b9c11119842927e1a24678877cf4c8c08e1d381084d15a3db4e3839ae56b6f1009c4773f27e8d8631b440061ee5425e4d35638f1c191b53b1d6168400f901b9c20227f3057de77fa5c6975e7e07d9815113f14731a1ee48752a236b226d207737c29378b1e4e41840f46dbfd3db172f27c627f05913d984bda8b63a72f1ce001e48388d123a999881e0c9f76f6a49b3d0fc7c97c7b878d99227830e9569d93e2c911b983494cf0fa18276c68554e10b1834934552a5cf70421428805913a184e5a9bdad8131d4cf245c62a295d5e3a670ea691fbb14a36572d8e5d05113998d2a510fd9cc44db6afeb06913898cb942a39e9d00af755183c8c11227030c69aaa92c4adceee0da63a2594982785ca577260e800a30c11371846e834c12d495592b6226d30c7ad0edfd36c3933f9917c70000c1e86106183395ac7084f59d5728d0c0c1d3ac2f8c01344d660ce259ef6b45bbde551113518f7e3c72c89a2d396f84541240d668f279e6c4b3933261444d06030f14e1cdde555a2967a226730e948cbfd93bcd22feb10b080c70344cc6050fa59ffa4541fe47a2d5206833449d0ad2ce522d6152183694d3865da23ac2fb88783320673a812cb4d87c7bf908b88c1a4c3c7bc518f399f2d913018cb949d569cfa94672d41040c06378fcd4bc2e9d25519590b72831ab0059220f285db0103112fe00b44ba605031af2429573429e713174c72977041e99e1cc6f25b30ea8554936d4b6cf7245a30eb993cc253d0ad66255930ef5ee838a3f2fbfd8305539ef4775a21c42edf2b98bc74734d999aa5e45ac1ac6e920c613196539655306d9f3aaf10158ca77b7d72d219da9f82b9fbc354490f4bc128de4125a5568b8241767aac9cba824cb144a060ac90234e923c6d1910790257dd25c6673c14d320e204c3e7f927dd1543e787c7239e41a40966f1935dc177e42441c58309c63a59d49258a2a7a5c720b204e38d1eb197efba3ab8236bc705112598624952d23b91a1fb3f3cecb6209204a309e6275d6aa5243aee428820c1f8e9269af925a1de1521448e608a5f5372fe1caf4f220b848811cc775d52782fe9445a5a04c388bf973427c7d99d050f2244304952f01cfd3f9558d27f07912198e48962d2872ad5eb3922423067fd4ff1e3cad6e99c8804c1f4af2f7ab1f2dd994704080661da74ceb623f3cc1a596bd3118606f617a628aa57f572b72f6e44882f4c622f9f3fd3a43415d31186062ea417464ba25cd98e344994b82a11c20b73d63a1d3b8ab22311b20be349d317a2a61594705a4084e8c2ec6ea125f555275174c07893019842482e0c163f26c9214c8e26687161eed5d02994fa236b69bd08b985395ada4e1f74c86ed3d0426c618a36632acaac1e40c608f2e34706541221b530f75cbe37adb3d3cdf610420b83a7fe5ffed1499a4e1d1e426661d225574a8b77ba2cb621b2305f5a0e76c227b99773426261f42e398db813d6e2f46708818541beac8e5c93d773f22b8c1dbbf24f327d395a5281105718c46b6bf45d89fb17c221a415490b9f93e43217fa0a4258611e9de91d3d59566114ffafdc9ea458eaca1055984b647e89f6d4364a7c88905498840aa253575edfacd4c8da211823f88062210415b643f714463b3909425976ce2974c20003f910631d11620ac3aefb950ea6d385f9b81426f115fc738dcc0f21a43007ad4e49ac6ef7399511326e30461919ad81905198d3eee2532825264b92aa284c496b975229091923a3cc50183f53c4548bca497f050aa3da760e953ba87426e913a6309e3aff8b92d28cd813a6b9b0ffd1fe72facd9d30275592486b4f6267be4c4e1884ce21d772d5849b9819b20993645af45de5b0d4b035618ecf92534e213545949930accf273927f15cc9337c4308262ee412076b6f7515a91f1f22d001868e30aa10620953ee8f7982d9083d1b932188904a18f76e4f0a2ae78a4b77ec00430825b291bbb3380db3d8124226610e93cc8437255cb660626908918429595af5a06d374448244cb96327c6cb56a54a8284295cd6763f97bbf49ec4471847a80aef9de504394b078f7c9ce521c411468d33512eeba411060f9d5a424b2ff9ab5a08618429dec922e345b784911761b8e49b7e2abb8b97bc9621441126ddecbfd70e3a9f5425c2f81b6e4accc4e64b141126e9234eef7a8878091dc260e2b7eda5c8d710b883430a61ca26a99c925b3ea8feaa21843025f7bb1cb75416932ccb42c820304410069ddd792efc68287503610c51a9dbd6f1a1040b200c4a98ad74efba1542fe605c4b297fedb64615392661aeac5f57324e49e2491226dbf368a7a4124df991309a78c9b553699d542724ccb13c4bbd9be8d9f9230c7367929ceae8bc26e80893e5ddbf60fa2db6748d30452bbf70d729c7df8d8b9083117927b192243f8b4849f2d38afbfa8616a91a7228c2144727b123e6e184957324c2a47e96945e1263f6d376861c88308a30eff6245752973e8461438956fac6a396a78630b8eadbc54b21234e0a61b2647ad4db2eee091e21dcf9bff44a6258f2b5f420c7200c26872b495f334170207200c276648e3f600e3f98c43b954b9c5f7d287ddf85881b37e9c9400974d45922071f0ce23f7a21a4ef8e05f770831c7a30995bb97c8bc2c8c30e72e001b9a173e7d3dfe5e6650858c003e5b8c365e1dd4354d36abc5fcc538ea7ab3701dac1a4ffe27dd14e9807cb0739ea60924d2595a4fc1fd3ce1f591ee4a083e9450921af34078338b9ad839aa42a85c6e891832c23871ccc1e439560a2ddd489760edec71b5621471c0cb2254cce1fe5467acb52c8010753bcb151163fe7917d1728e47883614ecdc28a14cbfda41b8ca133f4eaeb32b2d60683f873774ffa20417a00c9013aaff7841c6c306d776ca8bbe4c94b6e0da61153aaf6e28c29f5dc3121871accc1b2083359c42b28531acc9e4478f8d221dceaae53420e341843c8f0d610695250692721c7198c9d930efafd4add2f480c317ad0c00ca6562d295f6e5668d3cb601ea52795944b2783c17f7b4fcfe5acdd298c841c633089a6275dac4f8eacf140e78188c124eaef2af6e3a552c6d3a0182147188c6352944fe1dd313a82c124f849a52b855dbf184a22e4f88251d53b5e27211ebb3b32bc60fc13f34b8ce54f79a45d3099b8b9cb62652af319590b42460f313e488f112e98629fb2acb81a59fd8690630b264b0da56546c9298b164c677127a9353d2242250be62d49343d7f6641ca2e841c58308f6eaee838b677520000428e2b1894c5f2b06157e7256761e4b08279b3e4a072a27e3b997e04c914e4a882792b463b4dac13d20603c8e5a0824958b94f2dbe7767d9f70012240239a660da4b9d66fee42ba5444dc82105538ac8eff5fca9418e2860dafd82ebbc4923cf1c50309ecc2fa1829fb228678e27c02087138c7aad765259dd9724d84506399a90399890399660926eb1e37a560190218712ccd982c9bd9f29c14a7c8b227224c160fa154d0abb648279236b3990605062265af796fa397764adde90e308e674e2f6965d6531e194c308b683b790a308e69455ca4e0a7ac24b1011cc61bdb2945cf221984a9ffc54417542307849eadaeaa431d12b47106c470e20d88e29e0f8c5e1f0855964fb241d67acb5ef5e98a2887cce9fefa57b7961d290f5b9d4ebaf78128e5d9893b62ab14d8aeac294636f62a8905fa1bd5c9852ca5a1fa2449564172e0cf7c992ae9cb52ee0b885b12b7aecdfdb5cc0610bb3bd7c345da5fb6d7961c3510bc35d67f79ffad8417a46d6f48a05d1c1232d4c72c5c56b2b497ff764fc10c3cbf500c72c4c3b962b277ffb47103c1ae09085416d9658b19292d764a810386261fc2873c2f8beb03099f87c492cd9f990f1f8c1658de315e6b4a154ce90d5d3370870b8e2979326df2549c503385a611aeb58e24faee5144e64854989ecf47abb796a269ac1b10a22e05085c15ec468a9b74be96338526110fdf9cad27470a0c2e051c7835a10f23aa7531854501f53df6f8289de1426e1f49bcbe550a733540ae3a54bc1a3c50a553a278569472fd6ac75cf29e151984bc7acabcab24e4aa230b627957b95dd5018445f921767495018d4f77eb2aa93f498d0c85a0112640c1c9f305c095de9cfb2ed69e90953ee14b4977a92be63d809e385975bf56052d6ce09c3989d0595de3fc7689b30a955e8b9f0ccac94d284a9a3a9fa244b4e260cb729e2eb2aad5592c7844989a1da4da4680b42c44b18342df65f9b8af8fb96308b90352d3e5a472869254cba4f08f1414ee8543e254c6b7a5775b64cd879276192f3d37c7a8f1da27b49186e3d96a4761d6b8a84d1434eaadf8f9030d8ff7b9fce3fc2eca992f0ba1139c2202b8e65b3e065234c525412e476329537438c30892f7582879d0f9f4e5c8449d2fcca0ff61a1fbb22cc29599dcef8927f5e4f84f947cdc51abdb1110d110653f1d4c9b9d45cb0f8214ce1c496e0a32efee40c6150a293aca1534c185952089352279a3067a2ca4b843089fe97b482e83a0853c89a6abdc91184f1b404bbabd41b4a92f281231066b5249b3e21b445e91c401854d21546bc6cf907a345d910954b51166a3f183fa558ba9e5216b9a6f6c154a28af6fb68f3c154b9f288302baf94927b3088f20a4afc9ef56092ca4c8efd3cfb4bc27930a8ab4bdb62423e4cc454d68791bf23dfc194d3845affc9b5a7640773496adc44888d9ab60ea692ada427cf15d2c1a0e40f3aefc436cb973207934e53fd3c7aab4437a91c4ce623abf297bc74d21287e44925e7d45f0207931c5ae2e9d115a652de60be1833eff78b4f517583f93b9c741525850db5c124edad859256549815b1c1249bb05cbe65b2baca3598e41c9b65bda1ee564d35984d3c1de73ddb96cac13498cd47858a361e66d6f1c08106939295ebdaa5b746ed67f82495733398b34fca6f9d351ded32984e8b32492e25a8b718a980830c6613da54ca717a2f2d63309a25e9313ddd4927280673c91dc2554ec7385d18cca26455bcc90506931464253d4aa56cdd292d041c5f3009b72449c2eeb8a98eff10c3043b7690e12160010f16e0f042e2e882f162c96d278afcac5ec1c105a37b49c279523d901f3c4e0238b6606ad1a5e71fb267c1d282491e255df77c099e3a94028e2c1864fbe5284bde6a2333137060c1fc9e5b3e5d8e9b7716b780e30ae63d4f6b2655924b3099d1020e2b98c6249346e6474f4e1d1c5530fc9ba43b4b4a97ec526af041c828e31207154cba4b8cf8ba6869f69f82d14c9f9c2e48932e9fb014cc313fd5a518c292785a144cf573a2675bea5338c101051c4f30fa8997a4594f8a030e2798437fb9878f62e25788a30946936b629e94332698b24a94a815765a4bb80f816309c6ed94520952fece724a09a6f82d7df32786c0910453c5cfdd924d5dae510f0207120c7349a71cc1242b6e683b612d67ff7118c1589265f597604a3544388a60cadae9e9b21d2298e405a5d3567ccaa1f9104cca7475d99fd6f1fc8460fca04f9c12fd71c2c5c43828021c4130cc97b0e2a5b7e265fb0f388070bf30e999885151a265377c61b21c2642e9f0cffef11bbd3068c89e244d09fef1a46ef002cf2c418589a193cde50937766150e29e4a9d436cc6a5236bec3dc420c36ee8c2dcc1537cacb8173772e1462e4c6af66424439170031778e3167ac316c6b7cbdda7aaee3edca88541c5f91116a49df0b86961aeb212a653342f490791e1186eccc228aac7d25e5b4aebcfc81aeac1a38c84c701f911c4043b76ec10e3f018838c0b04d181c1c20d59c4c220da749a3ed3a5f2f4b030dfa5ecb78e36e9e5e41526ed64e6f2265adde4b8c2eca27e2c547dcbc5d28a1bac60ecbe2e5acb792553b76eacc230aa2df25e7d3c4caa0a73c5fd5b7e79cb8ab60837525143b8810a83cc59ec60ca74f44f374e61b2f1134b3095c4e335b06307196e77c314d8e84629ccf972cc2b9dfc0faa2685394539134fab83acbcdd1885490e3142279547fdf2130216f068c10d5198b43fbb4dfc9c651385c2302aa58c5f5d6e80c2246d56eb93c93655ca1b9f3086acb01a8b7a56faf4c45fa2c627615f42d310b080c78f1b9d30a91497deb99f4fba3c270c2e27769f1cf7ed1f6dc228e29e3f4c652dd9234d18648927eea5d0cf4fa14c98d48716934e2c0f6a1e4c18fc53aa1359aadd83fa120661f7e12cc592f29ab0250cfa7323bf4a5e4d732b618acb1b5da64b1653522861d895137af95326615013d6bc4e525d76154998d3ee99f84165155566244c594aa824a73036964b4818d746e5b56fcdfb183ec2245ac9d0d175471884f6e79eec27af74230cca83499f849af7b418230c5a4a5e33a556bf841661aaf130b735a7797214613439c9733947936172811b8930556c9d9d0b2f9d5f42842998f8f026f6b5e41c1dc2181f3f6408739d285ec2e82ab3de0b615a3d7dba3ea26d4408831063c2aaf2e2a8f4204c695e94896c3fe9d74410a6b0d749c7e45c92e407c2f07392feeaf7b0e702c2d4f969ab15e492d6ce1fcc295ae3639efaca6b3f98937579679fb459a53e9892124c4e352df3c1943e258f0ea82431461259240c8702815010c4303cbc4d00431308001834248d85a2f1803c12d67d1400044d34224232361c2a2016161a8b84236128180c0643a2302014060602a1501048424a9c651d2b37f54dd34deaa450b5a00c0bf03052fb1efb559596adf6285c3d511d63581afbf38214e5ea8fcd695c0c8c1919957f55b1ba31e0c130acda6159615167cc6d6808925c991760852dde1ef9159ca604e7b08c9be38ba3e189315b6dfcf826f419cdc34a47d4798ef8fd229ffb903abf2b775a37f855291f073e26ba0f4b780ef18345027926c8c3997fb412882c6c9d8848af29e8038c549d984e742e364366afb037aaa2c8019c33bc0d0e49e9904d774ffc151a176c3cf9c97e0e30f14be4458fea5e4427a7e3933b0b8664e3cdb3db4acca4d7a75b2992565a8d0abb11acb8ff6ef5fbd939dc2dd237de8ef029e9c2acb947200d876b66ee2cfe9f284121c4ea4fb6c7f10426039e442239b320804e3c156cb80e8c340503a7b95b5dafce54eb6ce9ea948a5e139732dd999a37664f3419af105aab0f170ee1075587fc8d5796311ff33ea6fd092aed6dba0604f3b641da9fd640e4c37591b344c7786c2914a803dbc7d69c2761d4e497abe3d679acf6d691d3d99785a13709fdbbd898a221b74b3c6387253152068fbf6cf99bd8dd50cb5b1e544450a64b5986017a54e9b736dcd1ec3dd5848405d4adbc8efb11a88c8ae76a91808178f171768ea7829f9ed879ea434c8eb087281d161d1e8dcf597d3d02cc3942ac88ca8a9c45e75c4066ba2ce89e7f50b380c184473c26a7c2345f786c723cae5bf6c0dc567d167c0863c444b04276080a8e16970e8063368f1496e0763ed17840ad4d50212a53c7e8877ef18bad1f68b39b83580c84311123af76847c7689286b42d1b40f61a928910d91503804d881ef84427fa897413bb5e6825f439b4a8869bc92658d7046227145062fe6f38783b46cbe3a0dc6e4a9fd74169fc4168bef411c596b0ca65f224496b56884770e43f8c07540ab44881c416a6349d55c5e148ec16dfa1411df02681433efedea3611832519aed26be51f73630f850d0065bab4085c4c5698c0ec49232de3a375e8f007896f80fae5bdb3e57acae88e153b32a6cb8c12d0629600cc6b20ca9311ae18af04dbe28ca5a5d441f017b869e008518b4bc45c27bb10e3881448db81646e820c9927014a8f6fd396cdd2579fa64009a02db7e874e71174ef9fb2ddb084a3ddd46fe658d761431dc7c6c7fd9aa3949a23561d65dc15b0a3707d4d519ed7c4071b9971c3301335a8434662a2a1aff3732915c0c5609c01c62d83311ed7ca0365e0b08f734f6792f9b70199ec1be6f9973058cec5d0d2b102c5f21dd56dcc64c6dc125c089f57bcd6904c5e5f95f8c7343b9c4dad3403649c1cfec6c76b3f45faa2e30b0a320b012bd32696b2734cb1daf8e3672d05d346d5a6c195e9bc6236349f6cef8f6c00eec30b13ac0d965b531a15ffc878435a10cd4a8ac2e0cf9c2939a79a0d6dbea3e59678a618f4808da754229e6834325ac72ebc94f83394c2c67c27cd170510694a9ef23b3ce49eaca4ad32203386c821a857a9d59dfe650dd633632950c04215c2176354a3b15cc0643c39a34b612dd1a697b32818da143c09752be7d7c8265fac0918caa59eaa0bf79d73ff93b564fa0fe9917125e9079283562abfb234dcf6fe54f97750326698113968144b7a6db7cf4fd857376dc9e57d97f744b83c2f882baa041df49501f66ea89466c6a3164ee44b02fda89283c3f5145fddf794de34409e1fd584e6884dc0d147193c8f1497dadc1534412967560a46fbe510b22063fc7b99ca5ed7ad69f05b05e4aae222a000eb2d2f514c9b67af6409a13a7e6594d8fe1165105e7df0a4e365d0798c68343cff44774746c8d09d8a91c24467ae63c05566e14a51cafbc247abdabf14804e5ed86713a0ea3670996e5ce1f3eb06ae2a9a5142eb85aca84ae892802f91562ec1edf091d96f4237f8c4139eed44914f531b89308e570631b4003b95a9303f13fb2d093ce4eb620c535ad7d67787ae76136e3cb871b41f5e9c38a98c391be6e1b87562f46688ec8406c792d9e0dd21b603925ed40a01b638e898892d7a26f0ea40f093ef67fae5e095ac32766e2d5e47da6d3b8e78cf3f3ac8ca7c296376ae89f00ecb9a0291ec39dc79df0eb97a8b329f683565c88fbfa40f1859827cebae7794da2787bd0d852d4ffe199a251ebfcb97acb323d54ad235aaa710e52d8501ebe19218984799ed2077001fa44878cd26eb5edf43f52abfe148063139631322d6d2aed57ee29def5caa2b2ec79d5d57a6b89f2b066fb9e915d099ce37ef4799dd1123276f7e759e58e9c792db5873e490dd0ab98cc069351af260805ba1e976dbedebc7fc159935a3ee5cf18ad88eb8e4775b8ce230d32955c46f4e0bd09e47765a5871cddb5704f75b6c1018032542429ff4a6c4bcaedc5863cb72aaffc798ef7d669e7f3a40b6f39388bba77b2fc84fed636d7ae2dec71d1e99343c30e2132863858060458b2f220a4cb8eab549d8476c7a62ad9938ef4dc63b39a6910730b5c0bf6999904d6246c356d57543f671c982d203f420ef0a61c3da70f001932a0008b93931544d1036f2d913768361a90707396222b98b9ce6cae36c24a50c0d0d532125b98a126e43a9bbbdb585a638a9b4bafe8cbcbfaa2cf788db1a19b64ef9862e1495bbe5ecc44b30a74b1a1987d71a4e14a560c81c314ba1d79ca9e962dd3b5d80664128e8c59214e459057483d82e3e2f022749f6cd329bc6661f5423bafeab7bb1978b3757a9fe7c2a8e1d9c51cc6f2801191a49897360e612c8b6deeea4616f3bd1473b64a652e55a78823b4f0e581ff56dd1ee448bff0b50b8bd5c6d0bcb62950a0a2ba85583ccc6efcec75b70c73bb653be66fe0e85cc1a4fe1b4fa4a890ccab3ceeec000124cf7b7724b3629f76845e1180acdd608cecce0e1f2435e1d9492e9d25620d1c801619ed63d54a2279fa31f1b55c38da68145e0475a42591d95c1436f419d5022cc769b8cca27958760b6709817b629c410852c65f9a5e4acad0367166ce15315cc7a917f781b6dc637bcb2b566e08c93cac26a838d1d735f882c6405491ddf2f8e272399690548fc9c7c90a0adb29d14969cc7930eb8e631a94473739e773c8693ac873a20e594294d8aa14ebf0ecaa5a8581d292f51fd83c355c92021d3820de11b40c83ec41ff5f225ff3c2c77dfa3711fe417357f2caec1a34f6d7e1df9eae7825deef2a1a93dc961314a049619d88ebfc955ceeeeec0d3b53063f0da604890c2a166357c2ae70d62b50810187a8d7ea698b43f91c53bce3882201adf6ac817d486c7547d916f5f438760d2c9f39a9e2644e161731f3b382452ea2c22a43cf8c9b7f0416eb8991abdbb697bc01269c2650263a14f7ddb8caf9769ac6c831d57e40533071d1b31346d6338329d84938772edcfbacb33900e763e8c57cbc9ac04c9ef0b78f7b3d89e8de4185f2ccb0e961e92064b46a151c42beb86bf855aae6f43bb19b5774dab3303a23a00b9b831046eb590ce1d0b713310cababdd8e6f0913a85bcec469ebe247beb0360000954023378045b403eb881824b5e13d01048078c800b00a3808b2c9b2f1ccd2a79543c60e69c20441d7c55db4ff795e82668085370344a63f35230c7c9e245dac0345734d25acd343db5486db826129a19211e60c429b90a711a73816c218311436f83b9069d009ca7b0e6c53bc1a17610892852c12388141a913788fe708ac2cc64546696c039b461e72b9325d830ac2bc0138f3d10d44b1a52e6779cd69ea2d46a134a09dd3fa811fba514aea11498fe93ac7eaddb96e410649e009d711fe6e955a7b5d1a1ab94b6486d7a403e3702b4974aaca176410debfa7b03e98303bb8e3754a6faa493a30d194edfa0ee4c66000e4a4a74f3534ed0454f05d73036355f52651c5b5528f851a3a8117a06f68da475d4d6f88677a6e7fae74dd346a3ec024612c5b98e067989908f4b50730c72dba4b5cd101c93121ffe38a2c0e38f2188b812cd7a5877a29e8109c366be41427a1e9a7a5b4c8e7a8dea653a71c3cc9203147c5208c85e4c8abbfa16d91e03ae84d4b4047227447d1146ce4b34f035e2e1573d505f97ead1e94329f84cc2337520cbc67fdb40d58f820d5c1f98ab19e4c623c775c8e38fa65b48566f1b9bfa067c9ff8f4bbd55f520c242a68e539b8e0f4409c154fa34ab10bcbd4018a2245524a9e9a59dd2a03cc85ba08f74ddc04d9606a1ef8cf241e199ea66b85aac105875c3e8db721a5d7b143da25dc676d4266ad82966f88779a180ceac9476090e9ad8166e809262d9970c89ea24a2df8a548fe52c9e490f3e828da2709778a11fd54f218b61116283091d204f34c34b674309e5adeb5f24c12fdb4c106cee08032a415deb8459b4c37cc46d00ab6c6ca4512d5587aa12f43e861805558faaa1bfdab6ad20015ccd86a1bb6cb071dbf42f31c1d6ca1aacfc4b8740229ce2ad27adac2dec8cf8b94289128ec6b81fcee04b721a40e5f078c02f6000dba2d013e2960f3304a70292a5a6092d85a0a88e9fb3ca765fa43f4a546cd0e3e08b9982677b2ed417b8463f3ac5d1a434723d31dea8ffac439f5a8ea4f80ba60cd5890ec184f11164bd905723d903cb74db8888fd87dff0c29ec689c5468e9714724460a2a3a5e39d86daeba570edf177a633f7e837049e0d2c2800eb1c16fa9c16cbd93bc440c091a1cbdee1ffa78abd131a887abe572268ce42220a1202c894666cc9cd1750fa0190eb398fb6af539892680fd2a064b3c9fc91d4964c0201503113b0cd4ac0e660a69d501d7df9647671ce58a153805dee69585ade70b0e6866bc415417046a1c71e9a44ce29ff5666a607852a608a3b5f273f77d627193cc52f249586283f37b0955dbd8f890245732a789947f26ab61557d8726ae894261a5006a1cc1ae578c428f1de934aa2b0f0f41f51a17405162e3a97ba5b2c80d7946679289ecb6737a39e2f8d6877c9405297a298ffec0f7e48983328671623af28bde49cc1a33ff34cb641139ca8bb7a89485a3e196070a298f5052452d14200e1fe45e263f419041d3aa92e44d554d4041985452711963fc0399ecb228e3a567c6f569a882e3526f8fd1cd6b5bf4e98c67da4ef6665683df12fcbd7245925639552376cb5e42a66f79cf5595d2ed86964f187bc48a2914b7de83f18e545acf6176438ce5101ad28df5dae01b83c2586784bbc1b5b89a609a31f1da089f10a68294a607233cd508416a6d27974d6a7a28a8f2964a587d53e1fad661f5d37341c40793bfe0c06af12a12a945f97cecb5e9d96ae008f6dafa30dccdb254a8a15848017aa31436f28f5385a50893c6da1acc931863128a9c2b2691969350638b349c19ffa87336e4a6cb7042bd1ef3b1ee12f75c9a59bea5a5bea8a6802eeb7e4ec2adf7311ba68c93f0a35473e054ed048a2f4aecabe158e2ea8f73d87828050b3b5ce0cf50e848ff9441df283a038ba41e5c3b03bcbb0ad54abf8e4b29b6159c3727d81d1c72ec5462e70d4471632a8b5a128f75752b8b446e8082282270f44090599de8c283b28ad6b3541f50685998f97980687640ec2c0c2c4d71e316475dce212f9e14433dbaea30036bc95c8ca542ba4be471321802c4480842fcf404ee9058a80b99332d98cfa8e7ae549cc57a3607d84217e68ef57581c54bc98d7b0f5360d6eb6dc7743838f245519551d1e366a352307f4b0a6e00a27c347838ec4e7bad2f3663ad6c01bd7925bfbb74290bf1770b1326fb276a9fb0c3656e5237cd50d341214089de0a44d8efb177e0cd4c2413acff8e0449d4b791b31987c0d1a8665f478c305ddb46dbd5c19fd8703e83f7aaef57de25e119d0e4a5d8aea2780388476a2fe4a0794b1b5f5efcd2e47fb9275d1131c39057647bf19623ce4e1317a5cfb3eb65e2f0459e6dde0a7dbfde40a8a3dcd2358398692208824f511bed6c0dd154e71f885debdd6fab57380b4ea94d625706cef6b8d6a224d5046a9b2b1aa4b166e0dfb6c4c20bdc5642a29f5866c1708322b2b920ba5861701e1b7d98c022db391d1929651ae2bd2a3d0f07913389c96c37e6b709cb20ea932ae4e91b97ee170cce85d7abf96908a730eb0b9a60f29af0ff9086db5440fd325ae4662c68fc03bf1ed68da8574cfa019d731219824c8d122c048491563840224a05e40c0d35d46b0c936d97bc9cff35df1347ddc6e9e307adce5f09dcf713b44f4e90cde2f08378308c5200ac582d3dafd8c2528df71446864390d8081ca558eaf908ef7339fd1c8d1b0b05bf8682eb6e5b7c6550a4a2e26211f455deacc6049cf6453ff08cbbb2543a12f8b4bff0518d0b28b7813fa1df88560f282a2271f8053a5175b9569a02417b81ef4ff6d1dead167fe53542414ada959f0fd7535aeac7d7198ef905b6a77fd1af9668b0639ea80c501b2b075b49084185eef17bf68c3c50bc41a45aa52895e3bb874acb32e63efd0f19e6a233a797939a33c10a234ec4ed1607133ab2cb60faf09b8cc09d917d405e3f28e87e4f97195d37ae4ef17eec46801fdfe39ed0388501fbc6d8de25a9faf079f28432f9ba6ca231c57df7e98ec5157c42ad417af1a35ef898812202e65056b5ccc1e11d34102fa0f7eceed824b6c94b9f6f66f215f2264a06fa6b29442fd08d8fc6da3c00a86ad4e9b5578f5202440bf0ffd56f535ae4a5b6d9434ae77fc95cd7abfdf87fdd385409877cf3ce262bb28878378ffe39a8a1ecf46c1810aed970a6228f257d21febd1b8f33a0257810cc2bc91f8f6f8b180acb2b273562091af4080141b6aa9ce8aa78bc20154275eabf1a4ccfe9229d4475d15e4c6f7843a4b34de71b3ffb3650b4cdba8d70766b73baa66343e761afdd5e6f6b987546ca98e6ddb5503c28e38eafe062a7ffe2f5005c8caa9d05f608e8f56aa84ba2a628ef7ab3afdfc5e354f14afa4383315dd20b514792aaa28a387ecc40bc3d5d898c0f0d465a0f7ba9f08d68d2ad98a954c45a0cda917440e2995fc878f1d0ec5477d5988a893cc929de22de5a2658630ec0317bd2ca8e40aa3c408419e7fe17fd102d236ee209c9f2060bce07905170a0212af1e31b26e8976a47be73c38c7fd71a44448d9136eea834abcc5d9eee962f2f4cf1524f447665851282e1d670c9088891faa3fa33e16dd2adc264203672dcd93c1880f3b98ab0ded9f464c33208e71160d52034dcba15aa7bc96797e4b26944cda8a70f6342cd9e96306244532c054947c718d8b9bdcb9e4ee56536f575b326441c92c6dc51d6374401fd585a749b0c685ba161f0cd30d0abfad8e4b186a80878a18ff9957d43493080f33fe2c80795ca3e84460bf52ed8b03a1916bb59d3823ec39264b0b57383a3a762d6d56ee237a4d16c01d7d4b8cf241b0cedf449061b011710decb5c0e854323c299e1160e7629819852e69d694ca8bdde1b270f32466fbec1809ca7b402c14b1ee915420ef0086a70d86d79e153ed641561645674ed0a523ddd7597d1b4605ce85db198c5c5d7a919b7b44929630619bb2a948946adcc0aa2ed48fef18ec82e070a507302301ce23b2ee42ec6ac22424761d80ca3803c7c2ce37a8a6379f94938e48920edb5fb26d393b7066e0f9a45bc89ed0057e6ecd7af3acb99aa53956949cc693fe8164f000b022d811d7929e66750230de804a1f6ccd3dd49c40ca185d560959b9ee1498c9be089f785b9fac106bf3fcab3115b7ba8e5b4018334dd7da83ec44056d88c47165c5542d7dcb6017051b47879cccac1d9a335a720e66d341a54f41d7866860703c2941f3c4c9ae54952f5341ff1b348be2b99628cd304a5d4e9c478c79f3bf680885cb97a43eb351f89ca94e7751b841e21e2cf83228847b13f5686b783fe3e91f117584b1bd18864daadd45a2222081b631cc0445f3715f6d0ac0b9e5c7367b5ac1c7b651f0857276659493915ed1a40a48037c604fa3009010155856f70e26e1e23cde6becfae972e174ab2280e893ad1ed138b14d55133178286aa3c135ac83e813d90897f3323d5626931c74fa4f134a025622e1a4b43c7a6da80c6a76ed7bff42c088501306ff430285d6aa397e751f1d86e6d8face7b3c1c5ef693d1188384b60f0d11ec1a79182edaa89b0c3b021a5807665ef9a538a2ce6f5814e85054dbb7a8cce08c281bf3d045d7d5c0e7b4fd001ecc6cb09c87861371412637e5f5048a0fae388ecc28d7ef8489ce9ab01289eff668dd2c761bc8adb1043a96ed34a616ab0bc2e027266198ea426d4335222c8e517cf722c362568010c5e4a40bd9d80fd72ccd81728ef24692501e30939f0978c4309aac894ed6551a53693e47ad088ef3a0f866000b6a4bf8452053307697bb25a12338c133ae9b58540b18f7603acc635d1c4d5c0a6c0f30712ce24a544ce18aef353437aa8c7659c5e65ebd41bf607e51410af6da2b8e2101d9ec413eb9b66228b7a5ec662b5d2c275b55657bb6fd4b28ab7db58902d2c40cfcaf1fcd844b64427173ad04481e922fa4ce016b0d20eb1e4d2b084a73bf82f6a276264489451ba0bfe0d4eaa01dc52609b42338352e648699568b05109b82c11520f1496c583d74b23bfd418a16ff61bc6b36479d6c73890bfb19d528661007aa2ea5671143a9ba8a18e02e6383dcaf69dedc969fbe0f2e26384eb62fbe194a6e93a8ae2eb1dc5d1a8f2720e3592d3a6ccaea36c02525d57df247f18fa32f2782f036290a376997fbe3231b8987fd37fc9a05d3fd83548750c58ca20d94c18abe5d3f634329fc9f6ea9643c602a0931c0b25815e43ad71c3e4608e58d4e983808ef68a1c58b8e8148cabfd42424eac6a0d6c0a3fc0b9abd1f76dca5ddb5ba3c1a82d63eca12dbd03bc16a6e126f238409e7ed48c5575fe40b39126b742512ed52be5eaddad635d1b0b683b18f3324ba73f890f62b5361c5473dcac322cc20c52f215ad68f423f7b312e7d0301d57e4c885d0ee01d18919b40e13bc8b44df136294b4ad3e9998dc124a530dca78cb49485296910e48759adaa27cbc2c9a930c7e08fe0ddca1911ebe1a812219707c10f6ef1c693d0eb52b1aba71a3363b066e784ada141ac099c64a9fc2908bd0d51a56fbc36ca5cd9f568e40adc400f3372697c250a2dc993d4d24dec292d50cf22da2732e6b83e913f5f3fde07b0c98b9d5f5884ef619d2217f08660d1fdc920cd1e41fe4189fca4c1376f4a5f61a19d8e3aeb26152cf97485175d0f8d56898c501899d897b0f1d9a9c9c30e524000afb2cf0630f8c9190bd7563b72eeef77d07f2bc3f98f634d48202c4699c5cd4c663432dd9b48261e3329a9b2d150590d0a2442f3d10c995a3d79bd8546ae942c8256737a3f7d6bc51fff626ee1180fd7501d40e4e9ea06915d6d58d7f3d11202f18e5a9960b421a2605104a3c6d5003762431966da0bc46721df2dfb358b182283d62a3b76f5e08311c94b4e2b7b622889f4b8cacfcb33985a3430e51c583816f153bc94dde87a73ed57fc0489c13a179a2a0915853738aaabc708a063b1c84d2271c1df4b3c44687a46cfc865a58e583b877eed865487407ced6ea9290080b12380c0ed9b5aa559e147a20434098c87367db1b182942d3814c4d6cccf1da29793e000ce23308df5cd0af0c19c006cab661eba74ea553a0061358952463ae77e434681fb138a61148e00fa249960d83e72fcb38a761f2443850321e13a339ec4f21984584729f37282d459e649e0b04b362a20411f740587ab5a8422a28ff3187cc46e7556a85522769517b9f794fc8fdfe9abd313ff83ef0877a71dc9357c3b6ee8a58c453dffc61efdf13ddcd26fc7e0558875a9a394830810e2d45c378baf4c3a931660fd837a46a448191d9efdb6f3f2399c9315016fb649ed319b967e3654b84331e2b38a4cd6492e446f230cb6137157a380f05a1bbe0df9253c3b112870e53688738b8e018a0fa7ff74b408f8732be68866f54ca2d4217be3b85523dc4d44c65ff4a86f23a91f725082749a12b12492b2a08bdd6b02c3053a41e832c20084c57145dba53b984bae583133e41b566acef2dc66acedba98170a80ebb131e00d726a0bff1b8425c431bc2bb94da2aa85daf376c1836978144506016afc9769b5148f47040e3bdf58410855cd126619f84aa3e89043e8f5ae43000aec4e532b87ab7210f0e67b9c6f435d05e4e2cf2915dc90fb5782f396b0093bf071aa710a630e6dc10156e27a796fc4bfe664cb855c07637eb4ab0e90f0f621a2ad2bc9c1fd7db7f5cccc74c3375dd91db07d561c2efadb2ea6ac5112e5e07647ffca89622b8a3dbc33358d9f057dee321a006e40a28c203d81c39f66c1d3e9c60ef7db45b401cb833402f6eadab135d7d696d4ad83dae50bfe186e64f3f1745e2f3e7c798d468488caff898b6f4d38df831403296021055ae21fe96c37af565dc6259d111f522e433dd2ef0f8f348d6cc21eda1c87728e28622b43bf5ce941114dec11548f1025bb0b80c988c6a7c312a50805488b087d6b4d328c59fa53a9f278c24e9d40d83fa6625de706466304296b55dffc13087401a59fbd12c1bc1d288c123358e9cc53305ab17dee9614983a2fc8a74459f612778664220f42d51a0d25091c977072c36a7a1ba0199ba3369892826db406e6b36aee06040e4658884a3f8607433f6a2692ed3e71849e3dababf6bff382b73794d03fa3ffa58ebd9a09ea53cc707e334ef230ad53ca86f2fa01b1042080a920c9e206c6360df25b723459444768be75d1fc082dc544218a9b553e9c8659a5d5974b60766738f4e62734733a0063569ef4f2c323b65b7ab2b236a6a54246bfff1fe7018fb57284a2828dc080f182a2e38a1bd7f17883af86e982ec387e77464c9e6d406d1dca684f26de51b9461a031e82b3c72eb604f0af6dd0dcf48411d1940f2718509229793d0fbe8863db431dc0f510f1aa3ef6d1fc09626df74c0bf310f1c62dcd0052029c624ce4b9f3957e565f2f8989c13a493de10282e6408ba7d14073a94e9ec29ce59db25f651a4deb5a325c8b55bbb10e117077ba1150899d75cf4ccd2b8795ba2c27d8653732006be59e1033ea202242b2ce564d3eefe46788bf0a5436565351daa8961a0934cbc56e7d76844b0fbea480e68dee6a1e69efe5c93564b254b1260f73229e5fd1f73bdf85572042cb6f51184580387224fe803c92c35dbe862b70e7bbecb4a6b5c76a76c9352e152578f8eac0be47141cc38e2cd06fc64a1ca5958223a3afd0039c1edbea70635820ee61b9dc0a51a9475d7e55e856da2cf3f11d09fd0313e0b0bf079d4d330d9c97d14807ed62ad83fad235717f9470962f294aed5715838e902a1dcd7190f29b30ea08b571f9472ac2dc5e1e6ad02679082fc338ff4d27ae0c146d1ee39f06100e9bf831e3d6b30c95145541b9e9d9508a458fa171d0654d3389561869220cbeb6498e698ada6c13d476cfea39d1358540512e612dcb83aaf90aa15938954b7fb5f0fe7fec5785ed2e66d554a963aec289f254d5b816a39f934c1709a006705b55f20e16bdc2b2be8b0e1ba60420a1a08af6836885212cf7733fdb1b0295c5c08fd4d124b9902a36f61e52b3317eb2d13ee89030e4951738fb1b9daf8811fb855c1ba521912d73e5578dda1f7cd5d09a085dfbb7a4fa1aa71d795f939ce68839e54853ab2ec45cf9359eff42ddbbd1a15ec279e45c0ac5ed28c9ffbaf1e884da912f6726ee10e991b74a64801be5ab123ac2333676bf2c140de493d534966fd7105b5583a1ba54c6cf7a169962408d06d45df04523100481df62c7b949f4b4762bc46cab3795efd0313be62c9726a5a98a1179a1a8d559e15ed9c951ba0b188e2c0bea8dfd853ee73607649a034b1d2a8b0ad5d51abf1a81f94280cd9f00f622cb18200ac963cd5a2df4d80800fe3c5ad2c3df04307defc4f7b996638b68bb7f428a4d3abe00cb0d073719c423c81a356151ebeb45cf37b740d4824fc30e5ceaecb99000134aac20439a532a76a5dca79c88e10e1b20a813157de8f021850f2eae95628495197f298b75dfcedfd312824807decc462530017f675440652884c1045855c3bf092a15511b55a34ddd7d02988fa4635bc5727ce825dae13a2876322c08d607410bc82849536f03e05ea33b89e041add0e08cc741ddd7fcefc70ac6a4419fb2ac0b784a4f9c90de17f4b6174b554f29619b047c7fc30b6a3c3827d696e5335ec219bb2c1471b0f28b5c1a10fac67db34aea02dd3d9a58dfcd45c64a4b6147939c00f37aecd0bdbc8ecebe331699073bc5cab86c7e42a39adfeca7c4ae1c6251cf9339dc8a3b26c99a86e3d90143cd3dfa205e41d00d38edd56de7a72f305c619eaee8c654639b337d9ba2fc650da8bd79a6f7fc5e076f5045eb325f1ec6a8e72cee6bd9dc6911d8ae2ee9dd884a63b3748f2a4d088a9f3e93fea41a9aa6d8552f1c162911909eeba94fdf312a3839567b198343d8e1914a26ff23233a090bbb28d034ca5073786e3a74bdfbb09df7fe3c53116bdfa025d7500a900d6ed0b5d735fa26e0e732e55d85dacb78063f7e3a74aec156fd6681925b6142e184dcad81c5b328cc34134f1d2b60c79398f88012b85fcea2e592ad33bb5eb73fd78d7936ccc9c3d3171e5dc002e2067d61c5221c397727ab5455aca1f1a5589b52712756a9455b005130dfd6fe78d06c82d8c80f6e7baf1968b9b21e898ad285d8df812fe9bea2b4ea4e94099256ce148362ea9d73bc2ffa14ab3ef706a61db1a3c4bdafd652a32af3af75cc789a1277c50c3c2066fdb9b58da73c2da5bda9b7a9b4c76ee311d05a60b154d1c62a237276e6e57d4a9599e696efe123c9242b31cd7319c9c3edd26ddd874722846f3027f2ec6a75eda57dc9c7929ae8767a83ea6f3a60e9e574353d45c3c26bf8eddc05854d724c9458dd07320611f15915c1418370f7ef30f00e0256dad2b10f7b3ee37fcf25b5bc059c6bfb771fb6d594181dcf5a02e5b07350ead35ef8e32d33818d8b31e290e4495335269ca0cd8635dcb28ce4862595e5eca58d127fe4b98208b28a383b89251045ece41731aff8261c5b1c44240ae9e696a3953b2a70fc5b4c249287b47761d4f496900a1f562cc062047da891405b22d01120923df8a0cf6e9842d7a165373d94ae0040ea252d3d12bbadbdc4a6e3f9c04ce43b939e1e4bd99bf7dd969ef73c589861722f939ef84f554f47610f9bf5a65b148e0e7c2cedab6798a57e4b254eecef1fb9d44c0ba01807640b1b9fedac059d42eac30b80d64258bfb354ebe2e1ca7d08359744ada6a4eec4e06ecca2bf655f5c99acaec46e2a96b1a9f3e4a455fa849a8a32a40541b8c2ac5ba02e1589d37ef06d96c80387808604ad39905747ee6d40c17b7c722976ce9ef2501e588ad13d87381188ad465c5a4143cdae023dfcee13a575ade9a9c31611d1279ae1c4f78f8fe0c8bb6a22f6b4d350e630503fe16c4937bde0c556095d9446352f66ce53dff0962b6972e5418f1b25cf849860d0b77948075149e205bda9257807ab9ba0cde1320984c6a880dfc96c8071b1c7f2da8ec8ca047b147504a80a99b61c91ea7f4d06914d78d99ce373c4c2186424dd6cd6df079d2c208719d896ee787b807a5ab9d56737bc4d81c03cbe4aa35c5b32ae12f9e2c5614b15c2166120d713c33d93de3ec91093772bf8d08e4188a15c9328236b87199253b289d3c41d8cffa7c00641c92ed10f3101abb2f1e77469d91a66c06325388dbfd2f2c360673ebfd8c193596492ef43a1ba6170b071d388dd27335734b9d9902303021aa9bfa130cd418a5997c9cfdd6937aab1b1082303f459afef59f6451e0f25e87c34286819927d84c7cae19cb08f5e80ea20d8cb0de5314825323989daf1b6eca3b05acb07d3738bcd3fa144cfbd22941478ee78df607a3ae9f4ad9887e573dd0f53a606c4568bda02aa2c72a14e79ba775ed7b5118569c9897b30a9b764c5b90f4a0f57518d230f53b70d5c403c0a602df63c657b4fdd4f57e9dbc2a014eceba0959f50bc31d397f3c6c6786c2f412c1e7fa43cb96029c2ad2f040320bc955843500da0f3bbb5afec172677da5a33bff7f84e52998227b559158a08a67b506d263cfec956c253b7dd35169063b829d3543e7cef19cae2fdb21e50612eae0ceb97aa3850d31dd8a56026a6332274b5629913b72df09384fe6a4a928dde489cc83bff7e04f1add99b36d6e2e433978b9f4c812cf334d620d7b7dc0151c8fdd3eb2a05c205dfda81855432895012d30409216736b07d2b65023921d686accdf1a56f8ca8d26d5eb62a716cb8a9e2179dcfb31cd4eb75040ac4f115cd6b61cc94eb584606a5f28426ee44d086c3606aea10fab2c50534858b573dad364501065f4b620afaa2e29a3c0f36a9c7746511efc373f24db2037861e4f8ea1d8e7b4c016ad3b06a38c4c09d3520ae8e0f4cc865394153585a12927f5daa1b1679f65694ab847f237b7d6a7cad5b93c014bcc52b86a784f4eea03dc9aabfb4f44cc0b728f07a9533b77cbe9420793ecb299dcced0ff848af5596cc971cf117f2f2f50464a517a2f180c8cac0bccf1ccde67c92afcfad11177e96d2335be9e6a861990221b38ee469e8d264cab5097348184095253cbe6b5fe582eaa09c685929db3bf1366262832a68f9f1531bce3383000d9bd5f4a01406a3bce021ca61a628a0d39d83452d36cdef0843e3b2eaf28dd10a8d9f5f2475e932cbde780f581eeb74227022cfe8823ef4b2b8864a308b19d07e16e75b1c6025970a52d34ab02ca04b5efb575a277f6b83311aa0460d8b6631e64e1f02e790aefe6993ad3e68ac03ff9b7ed4b6bbf0c722a16e0ede6596874c793f58f10a96564d2f0d90a49aa7110d1195dd5d437b21a1d3331aed4621e25f418123a4718c11a59693e4eb5b550c90d71e72a67cf9607cba1a7c4cc0df13d9b012c860f9cfd072dae0f4a7933cfd6b5c021ade72c496dada4819a5051e8143fafc360876de800a65260393e3d398df9102280c5dbb2310b01ccf5801407d0822cd3e72991092450367546d3adc405c4ac1c3fde4c85229ae8eb41bd76b4d4b19f4b8c2172b03ba8f8825084ef642e280f703784b1c90054d32e6ec18832b6792cca8557c3c06d28e1405813874c765297c5de4c2489bd5b71b50157b4a05702127a927283a5b7b6f09a1662c092dde0730f44aead54811e30edc89c30ad48831060254e16aab08ad008d7adecb8010904f07e28c1da4eab1ed57436d97015df59add78ab654190f121b204d79817ecfe1007b5fd4ee94eee188c9016f930fd3c73984f1492e0da4b3dbb4e10ade98a0d420caca0419ee259fba55f6ef1071249f101ae2de60ecb8337c4afac1924e41ad62c9a15b5ae6f488c3922d5a4b2f911c399b336c8adb59b6e218b658901aee1512393e3adc4a954365c97dab20e5e08d15853bab36ad316d0f244cd9a1cb56435b118d990d5abe5a7e53203624c93738e2d744dbe08cac2db32d4dd2dc979bf043fcd11a27e5b8508e446337f67024fa71d5cf5423b7c246dd2796a99e876b8658027ffc79546489500040ba7ebf931cced46fb2c6ccd738e7b755ce0b4fa1fdf1512e552b9ad7d71d20417821638fa257061e4ec5f80c3268e9d719d87e6200dd1dec2a02be1484470a3560b25472ff000000000000000000c098452916d54e26b2b759d13f148a7f65666666caa6a733e3a75cb5d6dafa1769c35fa4f1bd01dd09270a790af582187be8347892320b8f62751c7888e1685884cb3c394cb40c889187567e42ce9b5df77d3731f0d04587985390eacd15d53bb431335e624fcee1f56587fe226808628c3af412ab934ae68896928b18830ecda6f0f04835e200dc418c39b42bf3de51c7c670f1e5d057f42c99722cdf15def220461cda141de56539d3089e85435f312162e76056c9d537f4a2213d4a1d3c6e6863e6d02df7a67468d486f64344ddd3b91cdd356ce87adac4628e1fe4e9b9862ee6c8760e52f21cd72c21861afa3895fc52b6381acf4f43bf495edf64e2565a1b030d4df9484e2db2c53843e3c187a7b21e1d87b8c43083a51ac4e2845a42885186def462bc8abe31537c18830cadf764700c5d2789cfe183cd71d44b0c76036384a12bbf0a4f0b9f27d4fc410c301c0c627ca16da91439cc6ad9ab295ee835275e4bfc11f5adbad0655c5f4971630a53792eb49d2b06d5bcdb99d9db4293ca528e27648e2ffcaf85bec36288f9cb3a96cc91857eae674456562b468a852eca46f2ef8bafd0c5530f737a07b22945add0871834b664c689d75415ba88a233f171c50ecd42853e78cd51740e3af630595368a3e7ddce1239e5698814ba68fdc8d55a8e429f3dfed8b272ecf14e1c0a8de7103cf8209e43b92ec6139adc9224a26a8e83099b184e6873182a39c73ead19d7184de873a0195eae24648a520c26f4a1bd271ae3c64c118cb184c673183e7dfd31675e6328a14d1159561153232b3192d0b7eba4ec78258e862606123aef8dcf61b13fca1dc638422b32792f07db1d3ff218466827c40a172b349fe64a8c2234137fd1d91e7f6ad8c42042ffb21a9dd38368b1e3889187730d13456384d0ba8494529e6409426f792b46b8f0bc794320102d9a5cd4ac961fb47e1a3e728f731821511fb41772e841780c1fc4553d68337686f89f7c91ddf3a07df5384c1527c5f1ca0e0e4a426f4a7d49076d940ef3a875071de6600e9aa462217cf8c1aac9386834b7ac4cc5ed066d7e309123634f63de6dd0b65bfb58d0a9064df250c643f6284a4a2e060d9ad0c9f3694771164d7bc871f276a7585a9145df1d1f6ee70f2a4e43b138751c89a44e4987453f9d359707a6497399afe83477bce0715e47a8c515ed598e8348953dc36ada8a5e4bd63a435886b7242bba54d5211dbfa748f756d1871a27c57cb9aaa2e928f4a7e6a04945afa61e2636c22793202a9ae8fde8329339452316e43745e72978788cdc6174ce518afee31039887e51a2722829faa4a15fe6294e3ebc51b43a29a554077b953d13459b2124f9384ffead9443d15765b2b2cc713c971d281a4f32497b53fa4473299e9d52bf9e6833a37e0ef1f289c7519de873d6cde123894d7393134d8af6299fc8a964cd4d343e55214584aa89762c858796cc29dc249968c2b463928d39fc520b137db4babceb76f47fca25da5c6a121a1fc44fe55aa2f51c476948a898a2e554a2ff89ea711cbcc31c6390127d5ccf1b637238717712bd5ed02f8d1da6c7a424da31d5cd5615e24ac623d158f858513c3d8ed45748b4a3eb715275a99c1df6883e12b51cf8e7ef887e634c21937fe5602635a255550b9ddd714d731023fa68993cf9aac30a162fa2492d0bbde82146c88822da9c2a6c5ef85422fa8ca3390cee23a2ddb0f815f5cf9d1d73882e7bca68216bae8eec19a2bddc30193965c7bc64213a7d8f723f2773ea0e21baec417a7c8e98c373ec20da8e73427994ca0e761344a722a22169c8c91e6502d1c7713ccdd7f1b25fe600449382c470cdd3d281997f68c5773a08ebea79c4f343ef41f7f27c103b5ec43ef499e4c3c398738710163e3479b2248de8a83df451d4b70e37f52be9470f5da5eaa4da41c6d5f8f2d0ef5fbc50d19156d2091efa6bf3c9891e6edcefeed0e57ffd1ca56eecd0e957f7f7abe428f7ac43734125e7cc1aab2a69e8d04647528f55f739b4efe17f8e28fd98c392439b3cce76c896c4a1f7d32d4f3117d9a30b873e48c13a53f2541a5dbea1efcc7111ad2fac45d90d9d0715cf3d48ce5c296943ab53295b773eb35ecb865efc4d43ca316c6bbe86f673b66fbae4c8e174a8a11f4d8fc27bfb8459240ded49d0ecd0ed912d5b3434159ac163f57586bed33ca77c42a4ead00c7dc81d1b53b8c8d99fcad0a788885f4c1573243b19fa0eeab19769ae1c31c7d0a687ea19d6346282470cada8f459c79b1663e5c2d0a49e5a94b5f2cc9a0543ef1343fe38517207f5bfd084c868963d6e88a5215e6835ddf737050f34e7b00b5d4cce93fb530ed58b71a1bd6c297f11a6b2256ea14f7539970b9131e74c0b5d0e9b4d4a43b2d00637b1489da11dfc040b4decc8ad1bfa7d7a2357e8b2e7f8272f1e5ade6385264f6b747fe4abd084cb3953787ba8971a2a341d87726dff720a5d880d39c5f786040148a1efd049349b66d1108a4217191e6139a484df120a8dee6aebcac4774bf8098d987af2174b9e52e79cd07c588eeb8af138ceb14dc0a3e3287648d930a1d7cf1f4e66b31c834f10c0123a6b5d0922d9732cd72aa1718d714304950f5de249e843d8eff81f2b68850a129ae89ca4fa41895210c011fae99823cb1e5b94548d11dad1ca56913a62bbe68bd0c5158d5711c9a0312142eb9323f9c15778ec39844e4366fcf48adcecb910da37110fb7dc0b427fd1b15298af88d213207479bdd79ba32c1347fa41d739c75e321d64f2c010800ffaea6bb5585afac1a23d6876df63b63d8a7fa83c68f73788a876a958e876d0b4a51c56b2ec74d0e6f77964eb901a729f83ce733c39c79b7134070f07ed45b076c9ac33fd3937e8e37873304d217c55678356fb3afc8d7f914d1e35e83fc47fc9a730a20068d049595c0d1ffc46882d620066d1c804e9b8adb37a283b222100b2e82d5c949f4c215b7a3400b158faa30811274a58f41b4dff5774c92ab4a78eabcc88b8a28fdfd01b9287ddaf592bda30a91c5a5f94e698033100ac684fa6438d7269b14a425c451fa9d32ce726ab10005534c95f2259a6e8a0234b2a9acb71bc8826e1525e0a156dd4b0cae3339b16255208c0299a14170f736c66d195b942004cd17c987c9c98c13b46be147dde9c2c2bc796144dea578db3e09d0a8a0a0118455fe91d86ce711cb91c288a3e49c86134ed485b4332430042d17b841432a9a48e9e5e1702008abe83144288e6191f661f87007ca2ed28256b8fc7e30ed6253704c0134a7e4d3147d18ef368e1c59144aa088c1a04a0139d7ffae8e9e6a674f80701e04413743ddced142a46c74df41b4136e5dd4b134d94efd48fc833d1c7e3d152f0f2c044179d6b1e26a656c7c197e8af3359afc865574f59a2dd10ca2d69254db293ab44e7951242b6750a7a3e257a1fcb29c7d0f0ddc19f44933985789ab2e6abe992e863b0a47b1e138976373b35f5e4df9921d1856c642e776dc9b9e311cdeee6c9ea85a4f670442f9d1da237bf46b834a2d708b96fa631673c19d1079eb23785f894d245b4f279213e33f24e7714d17ee8c12fc4fb3d4b4e449f25bf5e6ee850a45244f4f11657d11121c6257310e78a78d08a1c3ba30f4df68b67390c1b4298541866f0a1cb710cd251f3b7a4552fccd8c3f98360293cca04ae7a6835e7bc153b0ad1a9c43cf4e781071f07ff1cc7bfe1a1370fd73efda1cc435c045c942ffac60db42cccb8c341f0921cfb5fb8551366d8a1f7387b0ed13ca943939e93c3901dc72f2f86e185175f3861061dda18e3e68e33723b8c7368736cfd4f321e973117c30c39fc3146ddb2ace5db831971687ff344a586fc1b7905c30c3834217ec5ec751039f88c101ba937f431afa71472e0296e5d98e106ba5182196d6866f562a8a491cf4d2fe2c20c369c12ca2365b6d2b30a63c61a6c861adabdfe164f39ea1b37740a33d2d07b5c48ceef289377680361142e1870e346171e4618858b2bc20c34741ee718f1fb31840e5d33cc38439363f42b9f37cdf185cc3043671166743cc771bbc9769851865eb3cf7cd20889cd7f17ed861964683f85789824fa038d8fe1d0f1ec8ba199e86c5131f230b4a197d7623e2a09ba83a19998f7e7838b7fa16bf554a13ab0144b752f7459693d9f61ffa33dbad0c71e48f63eefa0437870a1e9f1a883567e8e727fb6d06676f4c6a4e296b5a385467390254569b2d04f4e492672ca0ec90c16fa2086ccfddd71852ebb721093fdc3d1b758a1d5e421e7aaa72c725c853ee8ffec38b03896f952a1bd6ccde695e7149af071d0f1799c526825dc924cfca814938c423f953aca68a60ef540a18d9952dea8b177c2e5094dcc1f4be2e778ecd509856c29e48fc2894d685ac6235135154b1164422b5da1fff4634b6824b968c81c87d5d79712fa9ca76139e860127ab7483196fb3a0c3b123ab7ece781788ed0cf67d5cb39c63c9f2523f4d9639ed79d4911fac914516a1e4984c6e3f01e5f760809d3cd184297df375f5b3c43089da6106bed993a0e6330b8702dbef0428b2b24cc0842e3df413b3bc975e8905b3003085dc66487e4b164a9c7ffa08fe829870c7125bac67dd05c4e996c58756f8bf7c04b99672cb2ea3c68fa677c76bc7352fed8419b2a5b8e2715bc25e5d041fb13e384aee8a22b1d39e8347f90373fce259f1d1c34fd96b3e6a07383b6e37c9ec34eb0281b1bf4a1a79fe5f03bf2b052832e325c84947366060dfa941c5e314eba575366d178ca61f8e4a1c9442bb2682e23468a3ba93f771c8b7e22a4bf07fbc1a2f3a83ae84a8486f17845177b73caedcaae5571459f1dc353868cc43db515be9c2695157dd8be2d12e2660e5256d155fa07a93f2455d174d8d1bcc38f730e26998a5e2c3579240d2a3a8f3226edf0e651ce53b43eaff147834c080d4dd1447a473e394ad1e5c927b12c86144d7f703a55194563f9323648454a7745d1c649ff6ff9ff48723bb6e89a62a0e83d6874dc9a235f64fb44b33e1b62b65f9e68a347e21f47a953481ed5894ef4a3e03a271e592a4ef412b2c3d0f165136df2f88fabd039a4a8263acbb048e1713f8e9399e8354f3ff4f74eae1861a2891591354e8304f52fd1e8e5588b5e2cd16f0e212aae5c89c6257948cbb12b7328d17a9cc38edd642c773b892ebce55cd52995e294447b326b7db95dceaf48b43d3972c9f7458d89882005c675053220d1758b65f7ebe441c4ff117d903a72579fd58ef1e188ab2453998c4f320c198de83a4ae1715a8ef453d419d1ab6e881ab543e7969845742985f8618254f294174574a5a982c410d97ff644f4c187f2316e8ff45816115dc7703d3391d1237888be3ac7430e9e27bf86e83cafc37e7f6aefea0ad1773c1b22e6d46d29436410a2f528796ca229b197fd20da890e564a551744e3bd593a632726ff23105da7a81e425cc8d01f8068ad3dca8c2972690e2b7f683397e51ccb23f4ef7e68d47526aabfd887b6529fe51023cb8746ccd2a3b4aa48bac93df431535a94570a29f5d34353513eb94f18d7955c1edacab0e1a1cdf241b3af62429a74875e73f35a92910cf34164d8a1ed8def8e95490d7021a30e8d8f6f0471bd8a093974e8ad245af258cfb821890219736834e37c8c8e869eb8caa1e2d0679c643987511ec57ec0a14b8df6c9c9315fdfe30d6d8ad529bfb347c9c38b1b5a9d9c9afe314aa78ed2864e6336569e9197f6980ded45e96b7994aea15379d7ebb0c24346530d6d9c5cea4ec94c43a31da468be4142e80a0dfd07ab1b3de4e8cce4ced04791cc6216b3199a9016e121765ab092c828439121f3fee41d5a121d8f19c818431f625e7a9fc50b1eae32c45032c24037880c303421e65863487a4af13832be5032bcd087eef3179bf13c74bf0b4de7a66cf940e63b7f5c6835c61c27f550775d43646c816e14195ae8cc23e6d46186b24ead8c2cb4eb17c42da7182cf4f1fe57b58e445ba45ca14da1fb91422fc673ac153a2d0d0def5fd9a7c42af41b1231739531b74428d082f2c517054d20830a66971c446aeb778e549cc21eadad99db42c9a020430a4dbce61817e3c88a7e2b230ab98407a571e115833190010594f10494e104194da81b2983094fc6b0fa71b6503a12c858421d4186124e46120e043290d087a88cd8eff9fdbbb907c838423bc934e2e48b23167f23b49763988ad06eeabc0c39ee307bfa44683d332ac4cac1e4caf121b41616979f12cf73182134f11fa45267b02c6d10da32ed2855360b96ca03084dd8e83d8fafd1d53a7ed07faecc922bf5efc7fba013cfc1f8c6281db8e7f4a0ad9c53f848b3234bd2e1411fc7d8d8f8e0f7ad6307adafaff687954921a7e8a0dcdcc932725772d0a86c5f7433fff0641cf493e3b9abaa7b83fe32668d19bbb5413319c2c37cb25973af41fb7bbd92643c6b4655060dfa903b05d5f8c859f42987d68ecd4dafe394459f62a5a8933bca39f2188bcefdddb3ce0716fd680793a963f53daf683bf0cffec19275ee5cd1677f13f3381b3db0b0154de8143175fc1ab276b0a2398bddcc27dd2a3a778dc1f35b4c15fd5aa890b9d69959a954b4eb9bbf637c9fc9a1a8e82aae7a2e45bbbd3c45bf2946758f3f65f19c29fad04f26a77a90c524548a76d5547fe3a4e8a7430c495f243146d17b5a9209ba9d2d440c51b431c7a3a3c396e0211a8a46c3fefa6b8e234ecc83a24dd143756c8ce521c6275afdf8c3dfbcfe20fac23a00fc208627fadef2c02cf632ff97dbb58a189de84f64437ca0af99e3a07a430c4ef459f73c761c8452cff19be8e3e082bf54b8943a734d74391253cb71898efec844df163b1ea19bd5c483893e8ef2f8e87c984bb41a737c8b19df6f4bb144936463428ece980b964af4be29c307997ce3c62c25f6d8f3c952cee3245a0f524988a79fcc7494449b34a6725c11cff21e89364a7e04f3d84c360e89aef72fcc8b6849c4f78846526aa61cbc8ee8256b79107b82c64c5e23daf6edd8584ded396c8c6872ca43abfc210688b1883e85b214223624e6a42ba20b395fd45a3c89e8f24516f9b024c4f82a221aff98af3fb6fcc8591ea2d5bd3896f17286e8f384c758fac196c75b212e06213a998fc1ab34c53b44901440000598e0788033c620baac9732c5d2cf88e1a62186201af50f2696048bce71e8186204a20f8ff8f863ef934a2e7f2106209ad6d8159e939e77c85221c61f30861f9aac32d9620555f5d843810f6811468c3e9c4f4ee6f53db650f2e2203e589173b92fca09fc0b12a5977f13a8a1865efbd7caf243979e8b6282111c3fd2d078ca139a3d99c71d15811a68683b30cb9c60153e6e8f2ebc38010bdc2450e30c35ccd068785895dce1f7a60b2dba28078c32b4a12b690e5312df13030ba082400d32e819f36e669da5d19dd515af9e2fceabe6503046a00204e38b6281223f8ad4184397fb03abfc963bfcf3c5d007267fb9a9ba628e1f863e4baf426c6684101f60687308e2f2513faaf2385f6825859f30fbda21c5c60b2797b2484ba6e942132e1b7285c7f6ee0b17da9c32840b6a162165d9421f478e5224e9cf49bda28556c3e73bf3255c42ce4293a7473aac3c55be2d16fad04218ff7c5eb2da5ea10be51a46e5d3275b6b85fe744e3abec3d0b4b60acd584c31c518374ad228159ad2d099197a9ac333a7d0658fa42947ec1c3b4429f45f39c68a5f6114da8931e49437cf8f162874792924cfcbb2d943ed096dc8f6788edd5298c6099d473119f32dd5843ef43d779789daf9312634be95a274d4a14a924b68bb653cd43c309f6029c1103989a65c3d09fdb507e12a2712da0f36e53c7d92c2647484b6c5b25d3b9c84fc92cd410d23744922e47ce27b70e914a17789c9c3e3738aad0c11fa9441d22207d1f11364e0c60d0deca0c6109a0929c594952457831a42683a3b48de112faf466829f0012d625023089da7f00f5df56b410d20f46122ef8194eebc783f685f5b333eb4466cf6f041ff192fe7948e10535c418d1ef4f1f479c7137e1ef49fdedab19122849e6aeca0f3340fdaf5e34e67a483aeba3ca8a049d5e4c41c34d149f24bd80c393cc7821a386852e7a5206ef23d95bdc111e3ee88c754010448c0020e3fe50419688147a0860dfa20cc780e9723a8f6cc356ad0ba498e1934436adccb177de346f9c20d8c1a34e8c2e310decb2db3039d98c62c9af2ca19fb1f6356e6b268f6c53d6477c71c6e8e58b4213ea37bfc0e58b4b9f9f3a1fa85d51caf68b5a31cc5aace714523b2d15b3f9690e3e069459316e3e6a798561e3cac6826757e157d9e305d31e5475976a38ac6aa453c5a880e2e2da968aa47c2e6cbf1c3ed0a2adaedd824cce78f4c854fd1860f63724a12b3076f4dd18985ee680f9b430c6d29ba1cc71f2a29c324742829883a164e3eccea28fa7f519dcf4f09f993a26843a7c68e8309a13a9ca168368711a2cca7e30a2128da303ec963c8dd279aade8ff9ddb424be3894e2cd7e72706ad90ad136deef8f2ae7ac6893625749cea5f923f8e36d1e4204c87f84f13ad9fe60bee67a2954acfb9a838ad6c31710595c8f2b3b1145ca2b7a4621dfa4e08d161892e071e4e14cdbc9aaca312bd86e9f30fb246893647cdd424fa38ee08dd894a12ed44eab7f66a7ff39048d08d11d080443b91a3c85ee99242e71fd19407a6a596f52d65de117d2aebf6b22893253b1ad1c648d8e9d8b7ba4396117d8a37bda0315c44af2139f977877f9d15d177ee7f4b114274b8881a1a89e8ff4c2ec4dc715ce7454413cce398a6a6102ea964018d43f4a1986cab8caa6bf486e8e4dafb236699df8f42f421fce414fb37669f0f219a1cb9557bc97754298368f2e6c97d7219ce1444ffaf1b52c86169cc9803d158a7541ee976e50f5a40742121cc46ec77540dfea1b5dc0f3dc2bca7e7201a7e68dacae3f5cb281d5a376e2c82610c8d3ef429e553b7b0ed81ba071fda091f07412a73769196c61e1a9978952d0e65000d3d741d8f050f1515d4b52264001a79e8b522caeba7e0b1b58787e67c46f63b26fc011a7768a7bae3fff88d39ced10ed0b04393d719e2293a75e8a3b2e88fff91275591061d3af52899c3c5565ade68cca1f3d8189770fed5e9cba16bf97e0f836ae59039e2d04408173e6facf8970e1cda6c41b6629759ae4ebe219dcc95c3298bdcd074cac1ff840f3c1e0f6e43a72166f6b5eed839291b0841cbd4a2055f8441b44a630d5d868788ee2137e5300d3534c9652a5f87930e714f43ef137b2292e4d05c42435f117b23ffe6a4e61d6738dcd01e242bc7710e2d19d030c3b98046199206199acd29562d3f8a31d21843de383174c94fce530a1fda058d30180d30349122593d44ad60256da144e30b74430b34bc70d8853a1a5ca01b84c616e806b12dd0d0421f1df1510afbaf1d9b2d948ab040230b4d7a68493b7a626877b1d0c667ce39f57bbe620838685c019d40c30a75a30a4dfc38ae55b1df42ef0734a88021a03185be3ac6ec08b99431e66948a14d615c35557cf120f734a2d07b10d92c159d59244f030a6dd4cb61f478e387ec3b8d27b49d51c67bf3625c8fd37042dbc96349686fa6ac864613ec98ff9782e798d0c4f9e7f8348f9a6b4b68a6673d8c090d215baa8426667f97ac978b9999843e458e34de527e8f1e4403099d4faad8d2f107f1d1cc6840e3086d05fd8ec377cb8145d7084d08dd9e6b957b524c119a0d9f3b8e31a5888a4884fef2438e39325856cbaaa805be25041a43e873102d4e5f66757fec0a1a426842d2b77896b5bda573e3c68d1b1e20800208300102282003ee0c389cd00842fb41ca43f01cbe3bf26c01460a4ec061a4e00461a4a00209a00184b635e438495c6e658a4881c60f9a8f29c44cd1e17c9c7f1f34a2571e49cf9224cff6a0ff8b11247a4a79d067c9af4a21ffad8370075d0acbe1798e2fc2c3940e7acd518b478b912d74ca41d731b5f55fe45a2a84060eda14352cb956f4c8f0d2b841e351ffa34792df21ee0e58fa040d1b3459da71302d611ea2a9011a356892fe5e794ecbf68f5e80060d9a941a3ffa879ff3c5970b2e52f03a8b2e7e3e6363ae198119b2e883c891293e3d0950ed19b1682f564795f348d61d19167dd28e63557f6fd88d5fd185a9eb55e5e50ac95dd17a6acb9edc3d948c885ad17a60aa122561062b3a7de98b983f5632935b281d9db18a76cc72c2ef4ce854615574b2d1fdf5ca772d663ecc48459bb434eebe25f190e344cc4045937b77fa2f3444cc3845dff162f99363c71d047d045f84818798618ac6524469cd9b139255cca10518250531a3147d301dc7612137637ffc164aa430d25c34427ec628da68221ffb0731572c8a9c118a3e0ab1ea71f810a6bbc20c50a479a26e5f5552553fd176d6949234745b28b5a0707170b1b488199ee8cabfd3bdc30cf903b130a313bd690e9d67a3da422939d19eaae5382f2762f8bb8592a115666cc20f33a3a37794acfe164a25f0c28b2db4702e8e1168d18517a5802dc2184107c0e0820b041040010420800208a000022880004748139dbae70c7ba1abc4832887199968afb5a5dc727a7f4cb5610626fa7ecf1c071ff9047ce15d7471032fd1c6d43c91fa934fe9821164e0bdf0e20b0b5c1d6658a269990d31e61cb3c39057a2b538af493593b9871e4af421a4320b112939263c89d642c5f194301d2e2b92e8b237a3454bffec919a1189d643e327362cef56740b250f6304c4856135cc80449b9dc2c6e6eb7844ef51a8ec6fee1dd17f18e6d1882668888799b3c71021c688a6a373f0eb6023954716d1c68c59a2e440bdc3941294304e0b3314d16589a91d1ad3434f2a020450000128115bd6301d6bb01833f888609276f8d055e63c590e718620739cb73f539e767e0bf149ce7c9023df0b1282a491da7272fa073d0d828eff726e4cc870ff4f504ca085736152e0c54108083304d187d152fe7cdd577176422728134809cc08442bc1e37f352b4290f89d6146dd1e3d5acaf2650b257368014621040602c630e30f6d08cb3deb32c99e3b7e68a2b26f44b99c1a169a1c9b396f44ec0abd98c7f7c83744685b5668826bbcea38b4aad0a9c5f1c8e3826e7aa8d0bfe4694b88ebcb0b4da1b78ec2791cbc95ec8748a18ddd54394f3b6accf92874dae26e312dd53be750683b65b694e3e811553b4f687573b062b2c15dc3754297e38f0a8bb16d42d36dd9b147e9eea833a1b98ed1c1a866d518ea12fa909a4a93c42befa8534293338fc714e28894e749e834723c31b6e4a47d6124f41d1d2fe768479afe1ea1f1c93e11275323b425171d97e61c1fc414a193b8e6679eba23b349845ed322e64e1e1dbee68a308021f4e6e1a679584ade5008fd6c0ad13765e8cfa90c42571acef3e57720133b20b4296b72f99ec254693f3069d0f0953b27b02f0cc007ede489e163d1b37c234d18400f9a1052ecf81dc60e5f291e000fda18346a65fef5e8d0d9428b52c02418c00eba18434acf588c3d213c001db4e741bb468b99170c20077d4c595ce27320f182555b18000e7ad79ca0d67963dca8aa30801bf491a2576ceff44d56b141af1172e7be0e461c400dfa09ff1e93cf6e3c1311074083264a7c0921675609db816863164de544b05061e23fcc21da90457f12ddf3e57958b06a23167dec481d2489b12a2f9a50b0018b3e94cba9c3a4d812a3e7041baf68e723f7dc73b2055cd148b47f472c897ee17c80ab600461141138054c30821b378e60a3156883158ca485efccc06063154dce4bfcff38ee8ce0045e68c05380821174b1812dc21841076edc104117230823055e7c51041baae8e3383ae738683f155d96599094b763d2142afa38187d9f10bd9c277e8a2e65667f10f130459f5525c699eb94a2e9dce2e3612115a2428a3649e78bc1ddf2b7c6a3683cdc4a51b34374922b8aa6b4827688e7610a910d45bb9de5fb4242dd520a8a26fe856ac9cb5b74f313cd74f841cca41a235e7aa2d98f1e5a19c74e74ad39c849638c73cd2227dadf2451524ae126da78dfef12cb983b779a68f522767ae8b31db59689d63bf2b81e251eff334c74d6293acad10309d3d4259a4b499625fa09d1de91e53c39eaa884b9325928d174f0dc1d89e47e1cd3245a8f1d5e8a312b8926e71cc7f1b198c60e4291e8334543ab88878521d15cb4081ae3c589b12244b0f188b6e369276be9482f446d38a2abf89573c578f7198f58c14623d4cb39a7fdf14c7fe92af8c2c120840d46ec19565a6591e53a44d898c30601376e88c2c622fa8eb859529ccb1d87dd0b30baf0e2106531053ea005046c28a2f51c4398ebd84944efa1738e83558688262fa2e3dd9c3944f3fd1f22e78b1ba20ba5f17298e8d739240bd1872192a7a82621cb619c1410a2b9f6301e1ee7e830a70ca28dfc23a125b958c5d4164a652910447f7933254ecc03d14fc741638907207acd393fbe183b3b24c71fba30f3d54f96236b0f7760c30f7d30b1279faa9f730af6a18f289b7bc9fae25c700c6cf0a18faeebc1a6a6ac413b7b68e3c646ca9763f4d0c5b874cfdcc179e82f229787294a3c749a211ecb897a20f91d9a6dbdfeaca8c1c3425c1833822eb4601ed8b043f39f324fc9a514255587b6cfe42273d82f1142ee0636e8d049acf89243c62b8f337330e89669ec0e3639b4195112524812b61187b632cf2be2c74a193c36e0d087bcd27192b13c7ebda10f643f47ae3bdcd06b6c86cf19391b6d6872e821d61125bbc462830d8d86caec17279860d858439b1f444df9e38f39c7b91afa24398a791cadb93a471afa8cccb9da63d0d0c60e33758aa1738656dcc7dcad7398a1d1581d5899c694a19fce143e272f67a60c199a9e68a1a7b2bd742e6368a2cb3fbac5560cfd5828d112ff304454c3d07e64477a06eb783a0986d662d04c957c3335c62f3431c152afa744476ebdd09fba68ab791c644a6217faef4034efc4ff6f0717fa702d5a12d7b8d0d66da1cd1ed772e071a8122dd342b31255e2b92c98c3a66acca68585434831a5282dcac0c6157e4d8bfe1f6e04d0400318d0028fc05aa18d0d99fdcdf94b82858b13d8a84293d69a51e6f1c24308151ac9bbe1e1ae467b944ea1b5a0dda1c712417f379e010d98c08b30ba285b5860a5d0be68a42025b9cf636e0bd515d88842f367e95a216a1e89996a8197c04e502650031b50382af1cb71c6369eb049969764b142947eb0c08613fe1c448961739837a10fbb3da77a0a086c30a1c9d11d699e9cf494b38436c6d520216b6bbbfb4ae83cb80ce971ec93d0c9e76c312ff32986843e54797eebbc1fa18fbb313742df1e934955c97af48f2234e24157bafabcc7e42042bb6761a3277786d045b6f81a3c2e478f1d21b4ed2164c77f9ee151138426e6c3a5ce540142f361c620c992c87910fe41fb16933569b73ee8a3ece99e35986e47b207cd6453ef30bd189591075d4e68478fa53b1e863b685c453f5f3e1db4d171993ff6dc2e650e7a318faa7f44cb72200e08213f9ed376c9d6170e86d9b84163fa192cc420fe9a221b5c513a2348272813c8401dc0460d1ab1d6e8707a27935f3668d0cefc84c99e554fec67d1ac96a454fe57167d5289ee5839fe0aab89459f6b39086e9abf298eb0e827456387392d7a0edd5734b12affe3f638ba7ab8a2fd6b734bfd817c98a956f41f779a4fc867f008b1a2889a1e54f64ff85b28690146d922e97007438b1b37fca8b18a3eae0a29898520b93aa1c033c05b43155d2c379dd98e825a23157d90835859244c9ca7a408ba702e2e6ba0a2cb98b24f2486ba5881175d94a08b149c82a82954580a39f64ce0451860a4e0a429da4e96a59d329c248b6fa1a485f95158a314a418c51729c3f31aa2e0a246285a0b721e4f6e07148d74567598e8f844134392fdf8c3d00dfda859a3af54eeece944db1dc79e5f633cf8a8e14497ba3ac4c5cf6ca2eb945253b7fa59a88a26dab8333daaa69199e34c7421eea943f7707e3d8b893ec6b918ba83c79683f512fd8e7a5bf6605aa23fe928e4b2c71f5c2e2bd1e885dda8912b627b90125d7657d38ee1d232c726d14ee50fcdf42aaf7aacd839e58b45a2b9a81267e27adc6c8144bbbb9bcc27bc5787ea116dca4fe1710e436a38a28db0392523af9976846b3462f18fdc999ae4e71a8c68bc93896b47994afcb1023516614e51ae438fb34731a2085e525c4959fdcc5212d15f0ecd53dc337cb2ab1c5003116df8d8714ac97e785dd538c4416846cdb11aaf61887674bef285a5e02907d72844d3419e09ff94f1313406a841883e658c2e61fac72ac80da831884ee6db82c458312b530d4134d621fdb387986522dd42498ba51a81683afe797a9c0c9e2140e0d11f54ce4dcd164a57e30f4d8804358fe394e3a50ea41a7e682c8a6cff7c27f12054d5877e420a12c9543fc2f67c68b68276a4de9857c5db43a773fedea8a1873ecc7153f0285b2af01b8109bce8a2055c78610177066c81c1801a79e8f354458e1219fdc2c130c4431ba2756c5239ce13173f4139602c7de16058016adca18d9fd5729869fffd981d9a203193877029f88e640b3dba70ed1a75e8c3fda81c8f449c1cd485175c7871b408e338098c177438de8e526e929ca2050b46f045881da831873f8aec33d7261d995b288d404950430eedff4f6a4895b32976e3408d38b421646cf049feea1e8c14a801873ea64c16436f042df70d4dcae21fe78e391174e105177b811a6e384a3991de31ff3dbe461bda70396c7f962fef1c52b5811a6ce822c6c821c49c3574c93399e96b844889caa8c4eca54222c2501c1288c32151180c2e672e00b31408001830220b0442a14098e9d2fc1480035a3016322626221e1a0e16101812128802814028140a84c16030180c068601c2b0781418139d1f008016cd28b9ba03e8f700e1f6e235787b404fa0070c2b697693455044df06d0011000f01700e167d1dba91c5029b00300c6aff7ef49b4115d100d88c481d076e636c3d28a30915837c41bcb31497b1b25d020d48500258578aa9924b192ba8acb04035b2020128755edcc9989162165216c6842938552a532ae868b3a32df6b42eb028e7bcd535c7479aa446413c435989cd4750e00559df0d189a48f8373fa054997c1c5e1ac986b73a5ae466ccdb1f91c60f57b360cd122124458b6615c6207c601925f6aeaab24205c41ebe845df81ce9239797f725c5f52d7ebea242df6447f75a389bcc077548716191497a08798a577d64e463599c3e51aa58d7b73a94c96a37f1ef125887f89249e8ad4a80c5b258fb5f53a72c3cde74a4f7a53728641206a2b1caec3e3c131cbd98890d11fb84ecba63c8def426aeb11c6376b314e5422815506710b0640162ba8cbae79a8642c7fe58b1c882262b3d6798e4e06fe0b68eec530cec6ff56d0969ee678f03a59971d51e6200ce05708c86d46c0fb3e9b9ad6120809fd4f3531c0f95766eb4f8cdca0568610a3e940164e27b3f6c1e00ae20dc9c16a198ce2009e43df3c87876e2281d3ef07b0abe4fa6301b6edbf188c729a62f41f85da4411de97f763fdca27f6bbbed7477f7fa537cb31ecf897c33f2755a9fd237fe87bfbfb7eeeff2b0dda4a18e9fb0f7f84005600d6614eb691612280d4f6ffa2f825660030f903042efd8b81ee7eab78c054adcb3db0030c051a79c573c192d591e1eb7a69f00fd25ddfeee85b57947d1ba5356cee833ee5cf29758a39d5f0147fddbd6aff6c4cfc37d62c317ed6cb45e443cbe53908272e90b8089a4addd2fe8a945542f2fdf70bfdda84a79c372973f4b0013a93e65db59369ebfb47256b42c991501913b6391238b6091a41f287a4656d5dcacd2b47e203aba1d68cdc74beb0d011e60646fed0d14666209bb619ea1c716beee650eb70e377fa218a0a64455bad01d4b9333add4be13863a513741f821b57e319b80fb786deddffbb413d74df22f186801f38e00c4867cd20a8bb6e2ade70908a2620dab8a0ef40c56efcc77f94ed24db833610f0acc9c893f761486994fa8ab51d11e66f6d25c0e8ed9e8128b57c9f35644688d8792b78cb9d4ce733c087826ec4e2229e93de0a1d5c87e44767108b1b683b56c695ea22a6c55d2c1d4cf2744fab5a981c9c11ea63e154fb46f8778692256504763330443530c346f8cb01603aecb5cc18710c8c378c61b07d0c8e21638833a996c5c8138cb00b4f168b1b219f23ab91658430ed1685c5781415808a3ecc4aa5c4b38807bc882966274c3ca26a57d8bbfdc5dc35bb7baaedbf82749fba60ab50cc28b51b5b59ab684c82bdf757352b4a08533987232ae084c07639f8a7343d751605c81a10e1ebd6095c2ed420e58e87f4745f378ee899ef8cd23736fb8369f37da593a60aa911f86de16aeaed5ddcfa55c98a3b0cd6113dc2a534dfe16cb0f3e6729f2c86342e808c685ce4dc452322f0114ac88c919e5eb9a8744320f401b418999571551091630e7286fa325b1bbe058c2222fce5891de97c8883c6af07c4c8f86413ce8c36b19133dc12c62fdbca8a9b32ddad6d9b84d9f87d7a67c9bfccd7b9d81947c798e66d22a884e1fcc47ed9878e043d241abbb02c62c726f4dab5f640d836cd8d01f949350dec0d6016a9a51ac843242d414508915983279a7864f7975bc54ee3faac58e5a042e4845e2dc1841108fd47d3ca9e1171894dd27931d9f4fb196533f094b7bcf2d0cc1cc05c25334913063228a761688e3cea7939517d4863e696b8b11aca908b2c89bbf4c1eeb1ad3de75e7a35d755e4f35a49561bcf0eec913a9bc9d628440d7e39cba7b853e608cd7706eab1dacd286fd68c7564df35ff74a636bbe3bf2ea8c0caf0812d555dde3e429d9fe935213b01800d74718d7c74ccf1c202d69a6a58836d73fe5935a02f58da5977151ec01add148bc6c2971d316cab0551846d44b15a00464597af0ecacfc0f7455a1c2c5783770ea0c98377b74ce6a016e8ffb89c84d202e90f7dd9bc2ef902fd65f65a24ccf8cbea7fda345979d8ac05cb3f6f4c0c606d74297f283f1f0810f36fdff5ae0b84dfa49cea23f541a1cdcab314a0e31cb8ee803be5329e4ca06c654306198416db404e05ab2f1836bb89a023d29e7b355938fda75e2bac048f9a186eb8714c451eed3c9324dfd3287724c158f788ba6998d0ee4d5dd4d6f26479b579defc598e566c966a0328b1fe62944bd29d30bf4af81908f6db86759618a6e2a62e04c496688e95e758ec637a81854c5a2d55bc8a662117994183414366af7bcd872c9812b1c5861eae0d0d35ee5c9632a92f870238d3effb9ff278b781db6b8f3ea22d6cb06ca9e69cacce15183eddefc6b0615c48cb84802e1d1205f4d681a2f646bcbc350366da7a0e95517e2a484ea088a66fcc98a5ba83724e419b81478d701a61289c57e4b4de08e5790ac446b2b67cf327c2ad7515c01db49c0788b7e06074ddfa3a6940ce1d24a449b3e76b625245786f09cc6dee8dd512b9303d9c73d7a62dba394f1667d23a9439b57cdd3d6e44dbc763040c9fabfbc499c351be57ff569472b678128c137c7c2b67e4d966024062258ddb3a3f4c38553f5d8830c7ad2972194adfda361d3c956e74ab229a32ede763de78e4994c8437e7278ac21b5ca6b64a15066cff66e32b48b905221b4c22bc6957780322241a50dea96e56bac25968043c4a2fdaa9d4e9103f87a0b317ec4eec66078c23b72e9b2b9d0f7966d59d2e1b466d7199849f892d28d233f1207489fd8f54ad5f86595da72f7cb31cbe0ee634c62ddb34b437208f3349dc4e14254d7795d2f8a2140135505514888a3f7df30c931c3ae83feaa0b868332a430528080540b150144dd5d01312961977cd34aad64a3149f584e44ca04ee89a5455dd8c326c1baf7520ad155e029274a2f24419214fd25323176b6a4753f7d1b8c71d5032d0138d3b62890d31eb0078fff5bab8b3e6a92d2a175756b9c9de84ecefc55a52c396f301f529a98867396bd2806037ae3f25bf348221e12d98d74b1c8dab7c6427d2b2df6c839c58fd0b3121c8aeacfabb29b6e73ce8699251e2ce85bc123765b37af3e2389892141f4918e4816403e6f8601670b23c91979807558e70e959150d9de51026c98b09dd64d9e34ccfdebc63fc533e3a5b878808794e192d1e1bcc697485c58518a64c9bc807f4a6c5d58ea25bbe27e04d4ab2baf2a2f89ea5c32b4df3ac5da1c56b23f3645fd85d1ca3c1c68761ee4e7ac2a2c92165873a3036444f98e84acd80ff252e972566b3b6ceae7e6d85b7e719cb317b0c5be1c5371a3a2c34ae3d40f8010b8fc963d5980dd684b9271fc3df79ee114f8aad60f81f5b6d949665f02ca32eab71796f68a842c39633d36d9b65a23da8690b1452a8faecf41f3d5abec7a776e26aac1a2c09c65920fa04d33f9660b53d8c4dc662928a6b14ffcfa6de5ea3a6197296df32997b8caba60c3691a8e9052f439da879c97c61a550b2a88c44999f2d023e72c396214025f538ddcb1c37a1800ae017107ca1b99a0534e7016d059ae7f511a9b818e8ab827818ff91eb8d993f2542542c1cf8afc2e01940dd40599769714e0f4c02331d4c0608535e1275426498733d0be99fb0907bbdce831f0dec71792b10c64a0df3963c055ac866f66d0dcf8d92da2386d522761c2d48d61c1c365c14d7c296da73cd04cbb1e7df2ca7bf22a96a9f070d87a07162cc4c35a9b1c57448e94cb82603459872149ee2e958971ae3254d7a7ba02c2b2393f56cc5d81c60e78bc408ca3e8a28fe9d1359eaa615bb7b68e8933113adf03e5707f9d45c16854614eaafb2ec2e6a9224472000aaf3a359766aa4882f3a316a6625cb781b61581a6d8802eafafd4c100b20b133c8f4d1419d28b23817ea4af44af892af1c8db2b6d74875f4a865ba1bd235b177f1a111131bf9d371787c9f9f2d2df95002bde7285104d2c967eee0d35768a922ea562069205da0b1f7b3234f764a4e2709871c01afc98536bfb48ae8d7cb7fe26efb9970b05ea6bbde244f3ccdae1d49bd173f8022e6e7daf29812b257f191de43f9b9a30ecb46c61403f00a7db461d0eb8698aebcce5b4532b3fdeb86f78407f6216f13b5821a3ae39ef0a7dea62ee0e8ade915d578885e94d7b5a85db0453f2447453758a54cbc0123fef2c2988b5005d453564298173157787a61b765b69f2b68862f438b56a8771c751312805ffe78c9231144f3550d76ea05b403ff444529330cf803a01c9340a54362c95aa1f1361ba9a0f7e5ea2ac8da7c2ab999d0d8585c071973ebebfb581ca97f2699f7d29887dc040efbcefc79e8577489a0cdc0021af988b219902d0f91433338c5f78e22c98cb9fee4f5a2ea88551aa5926542e4d9b7eb54dc63eed03d3e8ab952896faa260656ad2057da27f258bb03450f9677df78ce6db07441bd589ad2f5d27905acd92a52cc285455ec0a43f9f1fb25eb1b8427ff47f13c299daef058052ae3286d5f0b20b010f8bcc7c0445b8e37429e4c7f729419a05ae4a528f2520a53287a65c59f993175f48d02a110a1489742e4756290a7f337389233f9eb7a0d68b8fdf8bef9001646314b1c0a5964e847dea8828255ae90772ea42478e0900c3fe8695f14d2aa179ce446bd12223d8c8bac52eaaf309401daf36f1808dfaa63b8776a11957feba2eabd77b97472ab33676f1a25db138377922960a68b4458f9fea037ec21cde05cc7a4c3a52f1ee77f69428a9347d37687b2003ec2e5de5e6f361bf17c498eeb81c854af2fb7b4815d011507435cddf381be611427aa7eadab8e082bc565195e1d0da8a96d3cdd13dea2ace375a8b4c101b68e6c17ae84f32490ce62be8a9f3a8d92e044b463933a265f7645ab9acf81f71935ea6979039dc9a4c9947e3dafc0cdcfcfed5778aa49a3926951b075e0714be9b6520ae9e53d0b087b2e1292718838ef38beb88ca44d1349b7ffa8c1ca26172ba4899e0e803c364d120058379aac256901aac1520ebdae5dde612846c8d03b80f6d71f49505f9ce9805bdda9bd70f7e21184809f6c69ebcfa3c022a2922828b9c30ef14961b2be1c1076c3ceca9962c55ea0978a3864f9d8cd6b7f5e41d64f926ec0ace18a694d45d8ded4740093c146d0b3d2ee56101500ff06a19dffcfa992910ab7ee64607f251024b9cfa86ac672ea93386cfa00d007a2f83a1188fc89a4a4636fbabf586008dd9931029fc0dde683ecfc0dc5e40812f392200055252bec5d8d7a08d6ca436cf8c024b9d5dd8440faa7179beb29f5964d45903f42dd74b293e6363b5c648004c2a10389403ae8d8083f3940b91f074ef5ec4345a59f44e0fb8b6f9413413f586628b4b7af858c7a009f0adadaa85f921676a128a62b7100db29e96d12302291590786f42617467b4ac23baa33fa2415e5b549fb57b7e4848c1b6e9fa0e3b59034062cf2e5408e41ae8ae8ab372e6d8fd795efd30e426df536355ddd11ac1861bcb274d79cd21e73118493fa6705a2b35d16304b93122a00806296207b7db01e9ebc86af25521b521d455e960e15995d72a58aded4fb9005586af03161655d8e28281f1363dafdd3787d85478e4a41b5c35c19a41014c283dc94001354855f8ebf1ccaee0f9c51dda07842ea5d910be32b9eeaade9f3eaa30b6cabffa78ee7ae4b6b0a35e2c809744516e5c2cb30046281b4bd80063834eee6574e37db3d45664198404dabcfff937b0e4e4b6fbcbf052c28fcdc5a8459578012f3a2612bc0d13d8bcf9473385eac05c8a166602530f2ad0a81bb193e5494616aeda09414119d94e15d1903556fb6c332cbcfe46722ce1bb1c5016b5cf48cfad30efd8ed0574e10cb68c013dde5b3998e473886960f93ac91a19e378cb0bc06082d5a49781630b8f5cf353b76faf5ce03e2b2024b6d0ee8b7ac2df02bbf69f83f11961d46f873de0b72f90aae6192e8965229086b038af862ec39fcfa5b2997fa4f7161b4f7c85ae52c71c3b74836147b1424514f92ebec9edcb0850e2d4a4b479fc44485e517db374f0240bb2d24dbf246f3b030ed1dd0e2a4c570e043e14649ef7fac44b8ffe0b7f266b2ddbfe6039aa8a7deb5b17ca282b74c714a0af1798e7f4c957e09d94d153ce8b3619b073c80271016024faff5a6eedcef40f2b57629d4946e1bdccdd04c8924dc3752166adb3ee444b9a084b9d784a4a3c05dda1ab0a58b0c8a85d4ea5444dc9fe3e86053d772ff0bf61860175918b5f57783663b835b9264a750108030ea4ee6cab87ce00108832bf9713a26a37c0b1030e9fbde19f7360e5fcbc9cc53f32c5ed373f650f95be8e3657d665e917e131225ed8d3750e9951ee67d07cd09a15650bd4b9f749c60e4b5fe66090f8609860b0db0ed90f04aff5b286000395d3c2bf25b78467a98e96b8be102cec89f9420537a87d60a8c969fef9f9e646d938c7f35ba1cc2e21ddb13d93801db2623d48a010ff2b50e1fbcb3f0811611f92c22a197dcb3efabbc5e6edecfbc4de9f7e82b4605c24b9903b9a1b1aca82b07a5a760a71277fb7c9a9c5b386dde61a6ff1f80539bf0940785af52d6017a3699162a9a5b06d672ff476e429df6e772b80cbeb91f082c34a550f11277003010ec9a45c6452bfdafc7e84a9237fdef3880e5dddcede1f91aca362137d3dfed7a8b2501681e3151c2c21297dd234b6a65ae54b14b99d7f96b8735768d14436011d0a63f6cd95c2568cab0ced0662a64d23c2b1b541b0b4c9fcea7f14af02f46afbd9ef28aacd318e97b78b9093c10fa2c80f5d8f68b0f20febf6d1fd1362bfffa8811012e8115ee24ed14290603c24ff0d0f41fea1045dfa4acdb13d00e6f82db21cf20f2130fbcd01ab651d430cb48100851014d0c6fc53178416f6b40853008f94502c582824151d3191c8c3129a822836187b0f0f28a088d61e12fad1827347c315a960cfc6aa4d5cffe3e335982935a2abe2068fc2831989a9d761dc39d6a9653000156bf4f91fa53103a1d9f24186802f60107f002a45ad00e988f5901907202620a6426b38367c1c601788a157f8d005cf5fb15512ca966dce40552f3aaaaa4fac4557f5f3a9b330162fdf59531f48def6be138d54076bcd0da17714d50c7e96479288396c01474e5b17ec51d2da82ecd8b14086d870ad254ba84f9c27ec402ea36c37368d47ccd76fcfbbcacb3a75febbda1d9559713334965364a32d4488821f6d4fbf018fc2ba19f988523097714b3c99fdf72839f1316a1d08f1d6f0fb5abda39b7e7f2a04b42a27b098965a72ca3d5ceec71684575b51a053709dd2288804adc68c972a0512ba38b1e7d5585bb4fcf1072d0a980449e9e0da37cc036a3a65eb9699aa7203d5655356da0ae5f3291d3eb0ed4082fbf5f2bc04995534c9ccc4a82dc7d654a18bcb12b2f7d87ab1c3f40c725f8585b0f425ff8cf9e9a7d200382cb66c6a1374cd9f40c48d312d2ebebba8195833a60d091a96c3943df9b6da8deb7d540262742d20c51c9aaf2f2b0ba3733deecb66a0c41af04a8b816e8db89b1d75aaddc6c420960c13143ecc54f7b27c9c58660dc1c4dfdaf35daf0cceca183a06dcbbb8d6c4c1ac52825d5ab5951eb9a3ba922b9d9237e2bdfe62677ddcc783986b9727f9b49f44ca960b9a134c73736e676b5498a0bf5a1c29b74bb034199258dd8554382b6b8d89e343a58ee4bf96219c99fd6dc3eb4587bcc4b06600ce1bb5863b6c37009c5bbf43e804a987692266b2e2fc02de14b66498c1b0cca6b2f16d2545b1888e8b9b38babf8bdad3e8699029ce59131e4612d8ca45b04402d1896a2897cfba9fd32b39fd0ad80a29dfa4de946455f02b636127de78f3f62553144fa238152c9615bd7cff23011289082901a595ec80c6cc070f507ac55c5db97829e93529499020b6baa85575ce86b9c1ad5a64af035b5f01797686b70b606bd1bf3aa92d1dcd8cda80c22a54905eba93948834a28c154c35cc388458eefa2e65135096d9867b3e07eb469ad1a33d2c353478cb2a95e954255af53b9bd71efb9017d3eff9e651b732b02b7c30c4f1f10f6542e6657a50d4f7f25fdd46c7f563a420327df3275341d5abb44f61303c9674e1f6b7bb323a4c71a9983004b975de5a5b7574b73690a1176cc9b4d706a004ed474df126642e633576ec8157a12e9da5832b812d831919428b8ecc14ecfc6a90958d0d3ec5ec33f536cfe825a8262f0916ab813f089fc47a0b9dd0dd75fd2b9166a287347a1c9ac406fd43357a69ef42167dce0cb01d961c5a4b2abcfcd77277b2d5384289c8639536ed15196662f00c4656a515fb45eb24289baa5135d06039a740a0a3505dabdd05209e6681f33e656ba676bceeeeef72f210bd388497ac3a42a4ab1280887494ea9d2d247aa7c14629bf3ef43bd23e92ceab3f9566910a91210c18166a890d8c37e4374af03deb88f96025f641215c13077d8e06809337dc74ab9468a306cd81ba22dc786bc4e22e9cc886784872872e1317e65b0d1fffc86bb2b87991241bc7704547c4eec2fd0805a2130e490b1714e035f8d5db48a3722049bfd0a8e7b00b1a030e514d472312f8b1567bad57230d07e9b41a75a45bad01210d567a81f4ddc8724bda808882e8722bfdee7894e7769e825bc0da6401234981f7f05a64e518c8a8b30f08c6131fb41647fd6a06c50a1505b2818547728438d8a03c37f1813a128285f285a282328d88bd2f125e554b440d9a0863eb54fcc4ffc4ff84f16a76c14f493da13c693f5c4e329bb8948da42d33459f4a83ee48239364151158ab680748404a116a0fca0264565b4948ea8958bd341e5895ad3a7fa746478c007d50aa2fada0436063ed45d75026a4831288692415509541c79fad2bb07b5878a84aa41e140e50414d0dfc8a7d01f507d901b94670d75f5443577a69ebb64374524f547e49303d51205c5863200a540c141714031350ae87c1839ace0a87b23e167204099a100a160559408b2b87a8f1d6a0e15020a03650785818a1aa5ea29568a0d0a1e282035086599e7ee5784a1cc50e250b9a7b8b50d4201df53624022103591f3647c21a9ba69dcda04ead4282f29050a23a1fa6e5091814af34f21bf4508b229d4560445bbe64c9db750de501b281650c675940e43bdab1a543cd4cb14c5895ccf6602a0d8f6e0d69c7b1d1d51506da837282c2829145551d859dc1a03d40fd4b38ee2f6d3bd490268dc9a1b2a3c142b50f70ca1aca15e500100353e9b900b41083212d427d42c54c888ba97518f928da4344365505824aaefa7a69b7541b54314b0b052992295504c8c8b0fb3a5756b0856487585924291879213054496d0285b0854360342bb4414b2502fa0964d282b003231d6ce96281f85df08407da0a8a184a0d032aaaf379b3241a1ac05655262855c89bb288b48a495892588a703e507f56aa3e27011f97340ad417941518d0295620f1490272ea2454734c227ffa21c9e710d1183733b994472fddabfdc74f0e455e58327957844e928994211879e9da440d5a09e4201bb5a76c18819414554412b9ebeae523e08f317dcc0164476b47e607e64544e4be3618d12e0c3816bb9fba856e2a8d65c39c380ca482fb2941dd5de985435eba88056aa350021e5e3341ce29b36e971c243c60fe1fb58d54ea65a3692506e33223fc96798cee51d6a4922b4ddd154024a7de4ef0b1c63768b7c5271d6ec52911c29c6210c91c3843a9c4496c65d42d42b731f458a95213d5b931a03142fce1eb45b18940754e035f2cdf02e3a6e7f33424be28169e46d9be0423b7787b4437c4dc963890eb7f89ce0da17a2c051e506f2d85213e1b3a976efe3145064b9be04186ae5a471c738d262905a552dedb7a41a588236f731950634e0240fe9ddcdc8e6b559f7248c62711d9588744c3b917622f31f40cdc12cc9377fd3dc75cec9e3bb46bc095ef8efa67065e0d3927846b008fe1b86742fa2c9fd5bccd061a385ce2b38c2ea5075d449a31c498c1d188eadadea93b4eaca61e586ca66d168110545c5e469189f0104d7026e5085580d3260b25472ff000000000000000000c098456138aceeb4a92a02305175a8cccccccc746bf76906d156fe226d9e226df80bef40bb0d350df60c6c67a7c69ba4e6a7091d416a3d19cfb93455051a8d20cb5978ca78e162c91d6881186340a00c32184192bd1ccf738c93f1e30cf8e28b13d42d82bcb9153e3aba692882e071b6cb5b9dff30f33412b1988d99b4b74564a8b6789966ca0ff37e4504c92b85cc63517a410bc2f8e20b31c24813d0388419c20a515f1082f49f73cc586d1d43b78320e5690f53ba4d7515d382209e86696b8d658e2a0582209ed42d6764f6954e186584d10282010604316eccde9a2d17fcc180c61fc81b25bdd27fe05fbed3f003b9d34287be19a6008d3e10cbc30f6b62d2d1fd4c830fad4c994ab767d7a498a8c751e5aaa367eec01ab8c0b5f6408e52d0209e762a88b527a8810b9c861ec89d6eb56637940ea09107f25b5d7969ba7acfe281f0723a5177512ffb5f1a77b83d1ef5a03475448307e3044bc30ec4a0fea9a3ec71496a474575205aee281f5dffa4860d990268d0819031e5c187a9296ef470e08b2fbe0883c61c88f5b17cba83ef0fde6a39d85e57b32b8b5106c6418be832cbf46caed71ab1a139629c80030d074245f54af789ee0d24d7bdcecfeeac39185d20061914a0e106d2a70cf95eb9da898f551b0819bf3b0e513954d9bf026f01150d361877a9f256916d6a2f6739aa0ada1d2a86c61a08aff6661ef5a1c1e234d4408c26ae9923d559f788461ac82935ff626fa68186a27186721a6620f9a5e74cb5d4393d47086894810334c8403a9b1c8f472d795a4a630ca4986bf19307e3ea1d6220ed6618d7deeab4a08581d8a2398805f1928cddd00003e1e6f2a5ad9c3ff6188981c617c8c1c4e6858fe3687a3f6388018115882186056878811c3a77b26d3533f02ec88007687481249ed241d2634f9d9c2c62600427b0000d2e90bd2b7a98dd2317842186061e004619618480c61648921bbe7e527d177c400434b44050fdb191fe68b35807d1c802b134ef479a73f2de206381a81ea7cda76439cef1a5710592e6ecb765df5a8110193a98cafefd99f715338d2a90925e9e4b6ec79be1830615b81069b76bfbb6e9f8fa0f2f5c3386181068c118621c23d09802795cc57ed366968f3aa62105525cccc17bdc41bfe7880229b5e7c830bd6840811c05c9f00d1ec6501d78041a4f20f85d5c3d4bd9569b3286182770c1183f81ad319e3140c309e4ec38b4b8921d4b3f2d6841186394c13546196454804613b491dbeabab46f6f158ffb831e4f62290c4619ae812fbe00a30c7fc1175fd4a08c1ad06002213bc51c87fbe99b18b0e0c778c1328d25102ee79f17f5043378176835808612c8f371d4a041ba3f8a396094e11a4030caf017600dca30a49104a28d79545a99031a4820f9e66c664d66c79ce917d03802b93c76e5944246646c842e7e24e6fb97a308845a4dbd740b8f331b229073cc8f6aeeeaede06bc56008c4d83e1eb63ddebb384f05348440b610ef913a2fde7bb2400c314ab280461088f159c4bf3bcc1ee7edfc0364400308a4f038dc8fa596294a2f830c5c018d1f10ac9255ce1f1b242b19c609838c30b8c860411865c42001347c401a9f3d6d37f56dd5cba0d10392e6759856663a7a7c80b175821394f12918438c6357d6c7cbe00c0d1e105eeb83c630a71166ec8260b12a2f43cc83a7ac0b7287f16fb283f092517341781dfb0b2b99e6649a810be27c676ab4cfeae1036f41fe9c234ce7634af71e5b105cbfa3b5f871ec71f55a903a4f643e990dd53968b1ac5767b9da4d9add78f4f9e6539e858b66410c8b994e467c5990e3fc602c3545c9af1d0b72feb0d457deb1d6535890b63f7a50e1b25790c3c739dfe9d015248dd229e656b6335a41d0cb9dfeca5159df398315a4ec21791ad36515444d77bfd071f4610c5515c42873b721b7ec2e7f5241ce1bd37cb6b7cc400541722d97b447e3a9d219a72057a7a5a8512dc7ea22166698825c69de3d59eaf428d403cc2805f982bfb467a6c4e60cc6563919648451860bbc055c8332caf8315ea031a8c1188781119c600133484178cdcb51ea6b14e4ec91a51fee473fd619a2f863678482f878eb5e73f4575f18cc000531f97dde3c327ea296ef92b12a7939bb56fbeab0734f102e784756f8741d21ed098a8cac4eac51d21593e9c3f49339d2b00c0438c0093a769c16dd9b7ff1c5d961c62648ed159d1f59471fe93541ee9ca973e4dee8d54598910992da9ea4dd8baf5d3a031344dfd45559132a1da72f414a7b1fb35e35e5bca725889e1d3d734ca6614625489e2dcb05750f534c770625086ab9fec1cd63cc2408b96b95ca83e8565e24410aefdb890429ece35cb6d289fd784810d7c7ec2c5656d4d38f204ddfd6a67d98d6b6750449b47e2e7dcce139e78c4634e9211675d335b532d9a13f91e9e3bcca19419e8f2f96e65fa7f5db1f0c068811819ac28c45103778c8afdd4df1605e618622c8d551b9b7e6767fe9b130231124b3609939b68e3b9bbf3003118490d5141fe7d8198720a68e3398e6cca179cef1608621c8915ea956cc91fb49f7168c210604661482e8792fbd44479fa247d9308310043ddb91fc92670c82b895b4d2cd7e5c5b7907f00c4110e2f2eb497f1c73981108a2b668c6b017a73a1e5661bcc04fd002327c066c802055188dd9816f8ac9d2197f20ade5703d5d54c50d921fc81d1ea8c71b3c5ffc75c08c3ee8563775dd9676e3b21ee5b86392accdddf08130fe31764cc333f68079cacda94e3d0ac20c3d1037da772244fd6b32be8c1a94b526ccc843a76f79bb5c2a639031460c1c30030fa4b49fe33bcd8e4e39e30eeb5a4eaf0eae62969131c30e64cddb58bba7767b65b9e78e4cb162b2b35233ea505f180a66d081e8276ae1e34f9e3a8e9e3107826af4cb4eaa39cccac88198263ea778513cce678903593ce907716d9ffe0287dd03cdf18dcfdf40b8eef9bc0e6337902c5e3ebec34aa1f5b681983fccb94c1bb281bcba5b55e3d9c3c8dc8c3510fc834b29e66a5ef6a8196a2086d3ce8faf39a58fd78c3490c74dfe430bfa1d35cd4003696e4377d3976571c7987106d29ebff9df651b4bb918c0e0f38f3058d0812fbe78410b0e061c1833cc7033ca505fcc208339e623b7510fdfcf408c3152801f0318fc038e0741d9c700066f4e70bc0c5a0533c640c8aca67953ec8881145dbc73b87d3e1d7b184862a135715157b739184822bf17bf6dddeff22f103405cf8ed13f8e7d5d2f10733d8e2183e6d04c6e17885a731e6627910be4101fe7c7a934d3e8b605e2aaeb5ccef832ef282d10462ba6b1fed7789b2c90ad2cf2d2c7225e2589600616081a677a234ec118df8213b0c0c3287d8119572045f77f57a60c7295b102a9fd72bc731e7bee385a05927ffe0bea62e2e32a1548963eb0adb6e858bee4291033e578e521439602f9eab3ae7f45b7ba8f02b9ed52f420938102b1346e4ac7ff387b684160c6134829e4693eb91496e9760231785f6c0e463e58b401339af0cd6f9e5ff2e03b4c40c47265ed6c1ee6fa2570211ed96c5a094e87498f2478f361fd4b4ba33c1c09774571cf51d6472878a97758a91b36421f87861f8fee2a5959047c3be8345babd1d522425b2d9f2cb5c710d2f8d216bb16559a210462c6b49e532f130462e7f78dafcb0281d0ee192bdb4ce5b3f507848ef151ad2ef3672f7de057ec98e34b1f6bc18c1e1c85ffd833af378307c418dceffe3d788b8f4300bb10802e2c17fa850904808b2c81006e41b0fa4ba9d451c4aac716a4cb389a3f4aae96bd530b62d0d473f1336ec6ead082d421fde3868dd3b7ff2c48579b2dba6e644148fbb7ec605e7dbf231664f10e4f4aa3e5c8a50316e4f9ece15993af20447ec717dd781e86ec0a7256aff7b8a29a7f465b41d432c9545db2827411b167a3a1005641484b1d7f530aafa13f544156d970677bf9efe145080a01a4823c9b37ee71aa33fad684005041caf13b6364953186182fa0c1ab0504700ac2c654bf11e9cc97c380b12718a38c17901863a8004c4188cbaf397de95210c57caba7669347b7a420e658cd36d1397f2d3a0a72f8601a9e655110632faf7b47eb62658682b45933cb73cef972212848c95734bfc97010c02748fb399e003c41fc8e5dbfee5f2704d009825aa799850f4e1073e8fa9b20e63887ea7661bb82003441caf96521a6fb995d0cb8601402c8c49a3e4cd075531fe5d8b9735e9730df7f3c8e49754b10a2e296f6a78e4a9063e5f19ad4fe0f3e0a250a2d2bff121db34924dae6d95272936c61210049dc15a683a97b9ca4e365508a104024c81f634e1d2e53ceed40829cdbb1ae7ed9d691ba9310c02308f2d15d343b868dff6b108023c8e9aa41ebf3a6984b05d00842bb7f647a58ea5ed1b920031fc8800d07d8c8120023cce93b8fed759c45907e534ce1163e7de15104396ef4e497459cf49f084279d45857d10ed52382dc9bae9fd33dca2d9b4390c3f5b2ac1fcfa9d31882b879b5d28547dd61fc280431b6edc5b5cc9552cf842056fc9473983cc5acd80e82dc49f3e3db5e1084d19baab48e2c7ac64090223d73732f13c0ab97742e498502f8035153b725b7189a322f01f8811c6d83f56fbfdfc6d50701f081f06176f8e1e6a5213ff6408a4fb2e992f16e1eeb8124df29878eba238f03310f44b5d5fe6449c603a132bf83d7f40eb7870a7677323e197620e768e6a27986eea0af03d9cc9357aee859d3830e04f1bdcbedc0a277650ee40f476aeb633a47f7c8816ceef9c78110629b3d880e1c881bb335e5cbaf29e70da4594b1e85dbfcdeadb881bc57e7e12d19d367a50d44390f3eb6a9760a196703c174aeec7bf33510f6c2858d4cc9fd6a56c3fb759aa3f4eb700a200d24a9ca1ac34746032942f5c26d46e58eaf211ebbed071fa46620870aea66177d9b3465206eaa6efa8e73f0e14e3290c5732096e38397d46320071e69c667c95c1915033146c744a6d457336118c85a7924811873ea50afb2ccb2030904cd9e661d3b2a68e50824f1f39cdebf10d98d4096983513af9cb8bc08e48f563689ba945b4e0492664be6f02190ca529a660ff7576d211035f665d36946e60802d13ead5a9aba880e0472f775fabc5eceabfe80d83296c93c8e6d791f90ee37f4ea3a04e801315af4d698c3541fe508c003427b740d336f17e4b03f0f64a4d50539e64fa17fd397e614e7823459a56a1f769a458c0b72989e23cba1e71604d38f74b2c27bacdf16840e2e5ede768be7a616c4f5ee6cfb118fb7a10529f9c60fee17a7736616e49cc2d2d3666441c8f1f0d43a866d78c482147f3c6ac66f1eb5c082d8299597ac82665a5e41ecc02f4a8c69a58f760541cf3aacb9689aef6e05f1b22b8cbbcd0a62fa38ca9fb3dcebb4ab2076ceb12a589c78abaa20cea5df6c692e6a9fa920e7384faf73c731e640541065e3c64acb3c05413c8ecdf3e6d4486f4d418e345553eeae14848a3b0d5339b62e460a72cc9d0c19b51d05b12dc45cc7942808a5966b25d3868220529b42490b0a624cd797aab72fa3ff098207cf1b3fcc17fd3e3c410aa19ea325bb1304f18ef113d6b15ce60429c5f71c4ffa9f2abb09b25fe68e3be7e649ab09d289eaef5db4dd8d66827ca122cde348c5876282bc71392f53b9638ebc04c95ebe523497cd0fb4044953c7fd725825c8f14ddb7a2ca9ec965282983175d8183c93209464677c4612e4cc619ebf95a5892341ea682b8db9e54ad9438250973ec6bdbe15dd3c82a4e2fae1bbc8edef08a29fa6f839763482507996a37e1823c8abefe1fda6b3987d1184ea28bf94ba46ed8a20dee5dae8719fde9708f27bdaaa5cf23c891141c8144436c8ec7ea5872094b57d954b678fa521889b73f0c9ef14e4a310c47a1fb796bfec21128294d3a4837a5c0e82a8f14f54df1304b9fca6d6e338c4931608e267f258d9b3f3930182ec9ea4a3cfa92b452bff40fe301d68ee78c5a8d20fe44cadd511ff9199e90369a7925c4e153e103c63de94ce3a67660f64ad170f1fe87a20c7b31d62e3cd03c1bec3b23ecc588fc303b9ef3a0c9ebdb2c7d41d4829a7438de6f93215da810e75c23a9075c377bc1b257b3d7420f6c570fb58e7404e8d59552fcc4c460e04cbb92b156369943f0e844e1fce579f458f337020594efd96f1c312ff7803c1afd4f2b279f4386e2047cdd1df35875dbcb4816016fc7e565d2d763610f5c64cd7dbab52d640feb8de2acf564332f599e2d99c06a29b86ddac7a0f2f1f1ac81f722e1d77dc1988dfb7c1e2e7a84ab3670662c59c9f7ae3398eed9581d4fbef81bd87d0308f0c24bb4fb116637be8f1c640789d30d720e229079e1888b795322b5fde7d776120f795c887561d3263070662fa245529d7e68deabe40da8bab1b3ed7c27a2f90e3283be5e5d105828876aa646def9dc205a2f5a5f9e83b4fabbc057225fbcfb19767fd5a208cffa71c8ac7548d6681dc510e37a91f768e8a05524a5f99e226ffe0d22b9065438686b4a8b75b819861773bf3a45f38ab40700fd1ba8ee897930ac4ebb037f476943994532076e8d32bbf162a074a811493ec9f481705d27b4d077f9977320705a27754f2bd7fe3d1b327a0215a9f7c730279cbea2cbc751c3ecc9a40a8fcd61c6daa54bf8c09a458cffb1a83d7c6644b2094768cef41c73186c894408cb1e7a1a54e13bd4902f9633ff1769140bc1c6a788d995953e508043ff538ff9ba3c618819c35778ee7cc3fb4bc08a4f0adaea989408e57a1773e0f81d01a3df77c98a5f61502c9d2d66719ffb0b00681dce5e189aeedb8402077944751f43c8be607a4d7e4e639f0f7f5481f903f4407aa1afba330f680acd12646d24307cf0078404cf3dda476da9fdf0529c7b9c4bf35f3dcd30571ff6a3fd59d6eba2a17e4f5787f3f47df6d1e5c10d5df34665ba33a6e41b2b4f05bfdd6957e5b9053266f09cba9b673d482a89e642b3b3787c9a60539233547e529f9f5b320e598e2be5d69265b16a4928b69dfc5e3d734168493f89c65ee5b42840529bba3a0a7c9bd3faf20a5f8e71bdb0349d315c4c84a155f4ad3824420a8d10a721cefc85eba9ac90a52c741cff2782c972d263357413aadb9a8f1febb5ff10f355441caa12d15911f47b7169b438d54904f3d3f3ce9e8e6390a0b0418871aa820bddb9be6bf6f95354e410a15fd1f73766b0f2f621c174ca08629c85f9537e64c390051a314e4dcc15b660e37793691fd508314e4b0cef22965d0de9b6b8c82f8e97168969673a65c3544419a0e63c7c93b478d50103764cc9abb3c5a32f8e20b0e4cc00531602c3cd4008522b5b1f1d5758d4f10aedc54dbf2062fbf1450c313b487bdcc27216f9f4ea812df615aea6ed336d51d7df09fb26b708218f769e33907cb1ff49b20ff6fe4e9c781ddc657431364e9ac7bd12b8fb2dd353241d6b9e8ba5369c53fa70626889e5394c7f16da8fab3c625c86187adeef33f579ab104d142746e4f1f9cc6116b54823c192ed8c7e1a3b5cd518312c4be1ff329e994c3ca93204a48ed26bdec0ebdab21097247c918d472caaa174782f0137f52c1e3ec870b09a255eade0f32f908a2c764d2b2f779b73882bc6e2a253edd919d55a311c49bd713ff3085cf69acc1083be6be5ec3dcbce4a4ec36cc858fcd22634e8d459033e65f8db5acf617540459234375cea9aa9108b265cdb6b757410479a3773acd4187dac56b1c8258dba931dae60c410c5ad925d3779ad1e2408d42103c4aa355ec06630b8f10c4dcd1058b513b4cb51930b6b034506310e46033d999c771f43e05412e97ab50a933ab747c192e0804e9bd3d88d7d3e85f0f185b0d08726c49b54e2f05c6d6591863948178f8f01d7bb4b12d3f90e39dd4128f7e7f6292d1076286060badd3f181d839c8b8fa25bdf1da3d903e5d7ab4dcc8e820d50339a5cfb1a3c52632ab7920795c9a73e4a16ec4777820c827ff900d899efbdc819c520aed7c39da0ea4bcef49dbaa37ee6aea40cee12ee94fa7e039ce4107b2a5741473cacc010735e4a071a80187372c6b1fe56253df2117590d3790e3b27ee862b9528aba13a8d10673ddc7e079391e8c2d66033174103b7f611a2b6f30b6346d0da428a35ef79e06638b6ad540caabd816377c98197a0758c082302af0c5176938810bc248c197139441460cc608400d34381eb356b2fffd0ce4384cf46914cf0c870aad9f2e18db801a6550d4a443d2ea2bd6b756edbf642045f338c60e3558630ce40ea3bde7a293740c21126a8881545b1b7356ccb5f3698d30907c24d2c3f128bca72b50030c248f99c53e34058c4d810bc248410ac460c1921a5f20b4a61c37462d500ad4f002a1e3b39c3be77f8c8363885186b7046a7481e829e477488f9e273c2e50830b640f45ea62adc729a61c1abc7141185819a8b105a2e5b30e3ded23e99bb5402e8feffd53792d97919105c29e7bae0ed3a7f41e6181ecc12d6435fe98a407185b1fa8710552554af9d8e976c7510435ac40cc71fe918e39da64a67ba0461548b25e9a52b414f362a521a8410562f889edb474595edd2990f247d61f7c9c43fff8679918619ce00520a82105e2079533fa9a7a16b36a44815063975c654a3fa7540d28903ecaba981d5cddbb19c63958138000045a4086cfe08b2ffef033064da1c61388b9d5b3e585cff34924420d2790db652ba7ec2d1d5df9c517d604a2b5c658b51f3e6db0984056f5cc1e7f0e5c34a53596400e1be62635690d2550696ed7ada1a651e62d919fb9d7bcb26f359240c8b2186cfbe242548b048247b9715943e589696a1c81942dd47eac38d92c3519358c40f6de289ac6c3cdff0bc438c8b87a08d428026973873eaf39c72c27d6200239f47c8fcc2a5e6308044d3dedf4a1b6836a844092d094c2b22debf858230804adab9c6393a9ddacd40002e9a35ce9b5ee996d651abc04bef8c2d0e0c1a8f10362e5ac4af7632e1aea1a3e204e67ec309a47d5f57a0f88e3d39d3cf278257ad7e001616ed1a1f162d6153589416317464317e46ce1961fa249ea6268e482fc1f7705130b17e4706c673a588d176b1ab7b005f1efb285b30f291b99462dea96b5b02cab880f13cfb466ee394c3963b78516c47835dec1050fc3444f6316c458f1bde23fdcec0e1ab220af87fbd1eae76341bed68c9534ceb0208b0772f572b9ed018d579043e8b5c796c398c2423fa0e10aa2af975f8ee38c45cfb782b0d71bdf038dcbf839271964f0a108a0c10a62140debd0166b8bf9096a1504d5980e9995d2ca215590f34b8731211ea9209cdd7e8ede435141fed8b6b3f71ef754770a4b4b4b54ba5d3a3bf96a87214653fcf7655ea1592e05a173cce71cd5e70445461962b0800c2e1aa420a99bcc5db07c14c40b19638e2ae698ddc1464314e40f2c9ce9054f60c30316b0e1802fbeb8018d50905a3a6365f774f431ebcab431c8d85d030d50902b274b37cd3f41d4cfd172465a3c2cef09f298bff7b5071924fa4ed0b1225f562df15eb11e9557129f374b1ec509c27c3cd7298e4af5dc9b20c5a6a8e1e28f6df24813c4b60a1630b6641086b907345b7526c8d175a77f6d1c8cad1888c1023f410dca096ac08217e02126c8c1e628b3e865587fe612c414dda666630a5717b70431fbb7e58f2e45479fd2a80459b33d684db3c9a35018658cd7c01734284168c9cb1e37a79836ef4990365d77caf13c49103d8c9239dc1c271224efb91c75fa24f59783042988d5885dabc6ded023a8aa8ece682f7b02410ef154de7b5ff97300826815b35e5877d369fb0fa45909f9d0b5f6037155e7a3e3555c8aba0f244ff59a830c8d480ff381581f74943def7b20b7fc9886859ba85d0fe48f3bf46dd6fac0a3390f44af4fba271d64f038c603e9af925be7ae1cdce70e84bef439b7746b076267f12fd33ab5d8b60ea4bcec39e5f0573a1063c63c7ffd49573e7320c58f376e597aebf022079245f31c47e3389083b1f85799e1d2bf70d823f1b052b9ea1b0c33bfe9327e6e2067b10f99fbcec252da0692740afefb9f3fb3a46c2086b9fedf909a7d316b20854b8674fe5003e1c627375af7264d4943bdc177eaba4503c1a793f8d7760672607fe255261f6ecc40cc174fe252fcd64e590652bcf58fd43d642055694a152fea63207794fd76ab34fc52500ce43899fb1f55c2403afb78ce32f84b46c140bcd87953dc302762e117c89e4365dbec5bb6df0bc4d70be191c5dcd2778124b622d7fe29bac205f279b054c9d26954cb1648f351b070f34a315a2067ddfd78d9f3e5ea592099789ce9634ed5ed628198638ba6df4bc68dee0a24db1c4794f9c7493f5620be5e775c31e6733355200792a5693b43ab6e2a90c2f67728aaf6faf114c82a1d79e5c83229904c3a6a31cf8902313beebab09d37ee870249e4d433d77f02395bc34fc71115f19d4076d90d993585d1dc3481e431548c7d6ee8cb308154b93c52dac385eda825904e6335d5863789b89440dace1d788c798fe25a492075c88c1ff7ca61cc151288df5e95639c4dbeb13a02397cb51c897434ab5b1981f01655cbf3c5d471a88a40b4fc9e39fb44205667d4cfd1474966aa2190f63c8675141e597884404e31f7dbbe3ee3fa4120b7aac6b38f3c7ded4020c6985e31eba334cf0f88f51bfebf635f2deb03e28bfd78865ed78f1e103d4d778b7ece546a0178407e6d0fa7c330bf70918d5d90be3d2a4d641ceb38c6862e08d75e15fc4e3788546ce48238219d739c335345cd94079ca0704152d1f46f9791d470d9c62dc89537a545faa94e69366c41b85e893cf198dba80539f029b3eb94539f655adceba9f3c325f730b3e0bea24e25aaa4bacbccc2b2fb76b77dd89997053907a55ec9e5473d6c6241ccf091079583ca1e5b0a0b928a068fe34be99992c43fb0f10ab24946e5eb2cde774957103e52f6c3e7681df5c7462b881d373f8cd132efa0831504cd0ec35b35b5365641ba79a914a443ecaaa30a52bda74d316d6ce7aca682ec92ad731b5ed6e30e54903f774dc71535364e413c39fbce0ee2c6e36c0af258e638c2e2f75a2730b68e3f0bea05364a418e66c7f36d4383e78d14c496ed313d4bfe6139a320a96cf6e9e4ddf1e74614e4a83a47fdcbd15038e131a693d79e111485dcc8a7967e06cd1b6c7ca214bb6f9578d578bbb80b1d3b73c7e758391b9e20aca614b3a5e754393a3a41e8a0562af3348de84f26c671c1040c0bc200c301cd093569f0143cb44375dd04216af12e5e2e36b6e9964cb4a3c9d3e4519835418a71efa64a3d8a282f1387e87a342a9f46e3620313549c47d8a475879be7ea606937fc87cf25086f6a611d3af29cfe470674e0aa0c1afcd9b004a952def0405364ea792a414ecdc82059b14109f2dc8d477dca3944692641f8bc8f1f73757cb13d24410a3b9fa328abd6b2151b91207b48d914331f26d98b0d489062a88aa9784b1d6c3c42d9b82899f1343bab7b97cf412f6eeb6fd4606c6d276c388274a22f9faa5f30b6acd2c4b0d10862a8b464ea24f371c65ab0c1089259caf414c6e36e778b20e6f78bb6f4e9b72e5404392ae675bab496d64289b8c34c3ddccbb24ddbcad35eda8e68eb750f450441e3ff484efac6ca151b872077698735a2fed1f78fc686207666c9d792f398520882660e6e9922a6800d4210fcd2a5b0221f45f86b6310c78688ba5675e80019d810c4a1c0462048398e62faa67efa381601418ed963b5e439364f5d36fe40c8b3ace2e1928fa7e507b2668fccea52ec021fe304297041182e7081bf808c1390f129307f82e34f670a1b7d20be477733abf6cb22bfe00531e00351f644d3ab79a7d2dccf400c16980d07a0c1c61ec85fe271e79395a5cff540cef89b263b1e437a65230f64f968493f16b54f36eb256ce0e1bdea785b3d750090081b77204be5c8e850626c2a67c30ea4de6471b5f257cad1d8a80331b87ca49a7ec92b54f26dd081f4daf9956473ae6d3a07e29f8f6f1655ddad0f39902cd755ec736473d9230ec48df92b7e982d1c48be9f3367a8d2d4d4bc813c95c3a5eeacf4e29d1b8899b3c2c9c766a30d24effaffbbce6cb081582b6179a36afa47a2ae146cac819cdbfb3f6df2f018c080d850035163e7774baff1728ed948032975dbc36ea6cd5deb73a0d140ae1ddd98ca73d8380371ce5f2ca6653310c36cba937e67a30ce4e4ae396d4e36c8400eb43d7476bcb6413f520836c640fceec0753dfee869c4b3810d31902a7fa6e44cae74eae4c0461808ed1e7b837f5e69b558e03eb00106e2744c72f7de5bd9f105c29dd4a7f09e3275eef002d12fc5d50f3a050836ba40dccbfc723699714fb3c105f26bb8fc21eb525b20e597ca9b22b1a9c1861688759acc62ea3cd071b09105f2947a1c6aa50e3d858f0542a698e3e3d5b2061b5720c4c5ddeed4cbf7b636ac40cc09c9cc18e72fbeb0b2510572e83495bd16bb208ca25428258fa962eecfbe6cedc0c614481f3ce2b492d559dc36a4707474dad4a545c98448f568a67b947c3fc67558f0c5173db01105a2548ea1d25d658eec800251722b7fdcc1a9ae5b369e40a8b34a1eb78691afdadc1865bcc08613c81e5a292ea4a4d6836d3481d8ae192773e8a19fa6cc061308eeb1e593ccd1a3e7b4b104825ace8c6fb18b61aa0e6c28e1b054c572b44e02394cf6fb293d69988d9140ca8f17bf6b5d1a6c1c816c5f9b3f85afbef5a411c8d17a875d6b8b76952e02f953b2fef9985fb92b1b44208ccbf55b2ad1ecd11902593797c79d932e0442fe76e8876bf4de1d60230884ce71f688c614ee360710081ec97c5c9a9a9ee707e43871c937060d1ffbeb037238aee7417b702fd1460f2a29a9d3b8980e8bd2508f3f54bacd7b19d9e001f1e4c3e7ca5c5dfa7741bae8b5fbab539f7a5d103554fed49a9f3373e4821c1ea690c1e3b0c3a6e0821cabcfeeaccbc8556ef1f8a4ec7ac76d41cedf18f3e1f2079b5a90ae63d9d5e76df09a16a4507d51eb3bc65cf12c48b3d6791d2ff4942b0bf287cff18fe7c71c1a0b62dd7d764ed391950a0bd274b61211cbff5ebe82ec262b7bf33b1e7cae2047151e3dafde3fb05a418cd60f0f8f0e2b08d6d5e2b9a3b30a52fd74cacba939ff795590aa7398f5f16d8e52fe53414e6139b24b21ba33f3a8205988ce8ea318fab2e54f41cc9b4deb165f3c57de14c4fa0f339505d91c2a5f0ab2c5b51c7ee4a420e593babd1b75e9791444ab0fdab7c12ab82c0ad2a6d431c723ab8a361484afedb4b8396c1c1314a4dace0c0d1a3a637e82d456169ae25567143d41ee8e2d6decfa381fd609f27959eb6b324f757182e8b93b55faf2fba6df04396dd48d5d371fb3f49a20476d76eda82f7c2713c41ce6a837e7d50b9a830962d8e660534c5706cf2508a329f8a59cbab97b4b10a7ee5365e770336e2a4138d19c038fef4cc18312240f3b5c77f5ce793b26413abb8ef27afef42309f26be5ae4e9648105ea38746bbcae7154890e3f02ba68ec31f410aab9bc3623addb83b8214e37de86c7923c8d2713eba53d6543623c8a1391115d63b98bb08c25a467b8a924cd92a825011ab1de764e93e3411e4c0bbedd35c5acb8908c27f4ed3de81872047b1381d366c5e360479f3454eac5708729ca3ae98b42304e93bab698fbbbac706418c312c7d6477f3a909821c79742c559a0904395fac798e3d26d3328020ced7a7b8bd4a5796f90329ebbd2519fd40ca1422c38de7db8b4c1fc839d40afe96a309cfe103c12537c71656ad42bf0752c8d7471b3adc4cae1e486963b8fd343a996b1e081adfaa952f96c2c40339a8646339d2c247df81d0396e5a904fc94cb4035935e53d9deea803294ae74d1e3a909267ffe44ec67a6d0ee4b0e81f3a9664bcd0210772ce213e5d5e37574e1c48591ebece0f07729ceba15954de40deaca19dbb811cab3ece21d3a50d444ba1734a7341731c2e6c2054efb9c61483e6ce650de4b06334b4e46d2b59d440cc7f51daaeb6ecce9206f28c7bb25819ad3956d040b8d0f2c158aa9c8164a531eb48c50c84f30f3f1fd8efc7be0c04ad78c9b2a9476b4f06f25e6a4c66dd2d8b190329e64b1eb685f4ca8d1848e7b13a63aacab1728481509ac2c79836b5ca010682a7ce87587d12dbbf400edb2f2ec60d973dd60ba4f8712ccb97e285bd5d20c7e51d35f9c90552f6d5a6b9bee67a0bc414b24d2ff3d7c4a805d2974717a3f4270b84d5ef3889a68ea3cc3916c87158b66fb6f915089dbaf76d3bea4c1e2b103367bc28bde729fc552087b3943359a70ebea702d1b3f5645c9dc8c73105629aaacb51c7aa581e2d05a24779d234f23af7de51207810ba25d95b7e7a4381386f9672743bdf61ee2790b38c6a7c8f8aaf6b3b811c6dbfb86e560f6eed2690bfbca30bfbe8ee239b09648fc2746c99ea25102e8885e6bc8e3bf695408c631e47ed9dab0306100229ef65528fa691f79e3481018240f0c062647554cecbf95e60002090da2e67acc757998e0df00342ea78d0e01f733b6b06f00131c6efe78a3719a007a48a0b4bb1e653d09a0dc003f2268dee5836ea9f6378b10bd226d5eaecf7571d7a744170add9941d7feeb88e17b920c5d0f217cc2f3ef00217790bded3238f8f677fe7425b58f5a17a7bd94c7f5ed48294fcec2dc2f38216e6c52cc8591ee6ddcaa13bd47b5ec82263d17d744d4998d974ab5ae8052cc81acc3b76625f727d7e05f16b37e5bf156b0b3318bc70457ad10a52beab8a79d89185b4c90aa255b0fcad82e8c9d2445590a6f7e38f175ecbe3302f52410a1fb7544c9d3a8117a820a4a5ecd2c155b9253ddd8b539063cc5462ed7b610ad205b958b5f9bb45f6a214a4d41a2dcac4ec7fe40529481253d1e163a75497f36214845b2f7debcd9979698117a2e84626cd2edb2abc6cfb552d655ec250f01726f00214fc09e267dbc7b14bb4079917313082136cc00b4f1036ed46ab8c9f4e103ef0f6983ec65cb1524e10366bfe48fdf3eee56d1344f3d8d2d24159f8ee35916eda6ff0582e9920e8d646b18f3986ca3526489b3d9ccf94f325c86b19e93392294e65bdb0044936e8a6c6eef0e2642a418eb6838628ad3c5d9102bca004b9dd73ee3a73c8a9ce24889239c73ae868491063a8e56d683512a4e8521ec743d10b4890bf6bc7cf5bbe82588f20a47472c9efd90b1fef08f29aa7b57a4a234813319b6275f869d48311442ff5edb1bc396d7a2c821029119fdb2c8a2078fe18a3578efb3b8c27829c396c6c17951141f03ce9483443e5bdf810244fe71a93e17332cf1a82bc295b5b08728af0147f344dc5781282f466b55a1d6610a49cefb38ab5e7f07308822c356a39f4f08247848120db7b9816f62c7fcc1c204821d38256f6f70fa4d2fc31fba6f5f6f0f10341ee4ce4e7a36ffcbe0f848ff7632e77ef7f6af8408e8ccbb0ab8c9d31650f64a94a9e991dd703e965efd264f799c49d0792b8879bc6b28d07427b58eb6b1fd5a798ef4098f9b61cfbbc98e3b50339ca67c87410eb404a0f6e7933aaf473d08194331d74eef03278c8e640cef5919cf94f4978e440ccea1e365327710f2b0e44ad57ebdc3e9a7a8103e1eef3486498b6075ebc81f0d15bbe16ad54dbb163f0c20da49391dfaa1443c71ed406a267548fff7083e8051b489983ece5b4a96b5247f4620d9ac56cd6c19ea586fa02bd4803413b7da0f13c48bee4885ea081f4d991f8df873c0d1f885e9c819c7647ecc31c63d4f2885e9881d431867fd2f4d1c64d8ac18ba3ef9ce9dbaa357a4106623697575f8fda63d731903cc5c83817c2a2552cd10b31907f343ffa141ec6f00d7a1106e2478f95cc3f59660c045e8081dc1a22439947b575942f90e39c63b00eaf7b81986d42647c3ce638d75d20478f769b37485addc8059287565d4fee7bb105e26e8cd3f78b95d2f49d175a20a608f1ec0f9683c59c17592064fc56cab697e99c82e80516483515db2e9d17572084ea5887d9a161c10b2b107ccafd6cdff3a20a841af97075f3a3ce1f4785e38eddd11db7e6c514c86f39f8f5d0a3bd9042de9d7673ec38fc38f4220aaa48856b989788666c45861750d81278f104c276a8ad91d69b17760231a759d08bb3ced1789a40d896b1f5bc14cb15670229f7db99c7a4174b207578d0bd3974e871e62881542dadef35d9152a2609c4cfecdafdf0f6ca72788104a2590cefc9827f04f25e8eaaecb91b8194a603ab0ee171935314bc2802e9473d1ccbd1debe4f04a2674f1d3fd45dfdda8740d62c1f53ceea6e6da11088a96396908ef2799a2c08c4b618b397e886f9090452b278e5b1475944b71f903d4fdf475ac1be2bf2c207c4ad0be9aa31f8032f7a40b295378fccd290a93510bce00129978a76a06a961e7bee7641caf04bdb7b41d64dbdd30551edb347131f7d43b8910b52864c0f2e32afe5eb385c10d43a28cfd71cf33a7be316e44c17563b8a2d1bb6dfd982ac61fbe38ff39f4866566db8510b62a6c58c1fc4466fd082745e2f9a692d6ee1c62c88a779be63a8e6afb4c882e43b6a313ea54dc71f2adc88457d710316e48f2ca579e315844be17a3da86cb9821c83e7cdd261bfc46477a315c48f1f3eb01cd3af7d9415248f2753da4b278d6eae82b81df7c2cd73cf6879431584f249ab9434dcdd89375241f268e77dcacf2a549035775ced51e7745c5d26b8710ad268c59d87ae212c365390ed3ab450398696f3dc2805b9c7df3ccb2a07972f29c861e6dc471275ee611905f92dcf988f47b1f3ad28082299ce3ec7a0ebee85821873186374bcd01cc5102808d1b166c9d45116ebf30a373e41fe28c7f238fc28e6e0367a8220193fd2357239909b3b41fa74393405ad89c898e5043908958c8f3a872cf3d04d90f77292d11c7f3253130451d7988fbf64668298d9af348ff707d79c4c4c10d3aa3a4adba1c6747ee625ea8b1b96a82f5470a312449791ce2bdb51dacb71460992ca965d5e0d97c5e3c708e394046e4c4212e4ff17cd1c684fb4a78a182c48c1095c10061865843183489cbf6eee512e7830c888c10b36053720419eedd84ad93c4e59078cad32c87016dc780459bd56f673760ef67f30b6ca38411847811b8e20a6ab2ae2bc5bac5c343b4c29adc2489e588c6f348218a3778ee3a67fa83532829cd472cc296e18adfe405c042987e52f4bd1deb01ca222c817ada265ab3011e4d862d80b1a9ba3aafc1011c41427a52e9f8d87207649c741e5f01b8274b21fc6cbab1f2f640a414c352e752395774d2604d1baad323cf640933e0862078f3c47ebb3395412c10d412093f1321f2d95f2956951fb1fc4ef7823104497148d51c70308425f0e3cebbaacda5bfe40ce1d4fea873f6b55e534df7d2068c7130b1b3d87b30a0e37f8403c8dd1118be73bdab1873f790e4f13eb81dc335b973f6ad563c90339bc7768b6a1e2811c5b901f8f1de664f9bc710752bead0f9f4eadaaab1b7620580cf5e9e13e10eb40d08fd1c737473662261963b84107f2e5053971b78d299565b83107721cf5c8b2484757e8e44012cf11933978230ea46d8bc9fea472a562851b70207f7822939e1a4a2a8d55b8f1069276d81abeca434cbe6e2057acdc15e63b0ee39f3690536f10d599ef60f32b24dc6043c1926b6b6ba82f8e1b6a302de355f47a3cdd480331dd3e63e59819c7676dc20d3490c3696edaf8b796e2a60c325c30017ec28d3390a6d2c72e66db0d3390ae5a64dc326cc67e4bb85106f27fec894e6c7ba550197e84c1822f630c318c0ce5c00d32903acafd81d69c7aa063176e8c81349af692771627dc1003e1363ac77130e9d2ff32e146180a6a1db6dee3606cbda0058719230337c080dca58bb85898a4b594a6ca77f66056eb23e3c61788a9ee27ec33ca1b5e2045e854aaa6982e9083d1ce5a2f1b2e102d7b79c7ddb060ad6f811c071f7665f868faaed602319c586b98bab09e3b6e6481701a3a5ceb9ceb0616882ebeb162fe4c3ba6ddb802692aab65f3308f70c30a24b7909ab1d283a7bd39b8510572d46ff3c93fbe8c871be106150832b71af3e33a7b70630a44cf39e6e7387f79430ac4fe20634e1a255aa627c28d28103ad094b45352aa1b5020996dfc3c1f9d1b4f205806150bfdf10d27e4b211751ab2a17515e2c13f6ecc5e92e046138829c5fab0f1ae39c48709c4e95adf4e7b698f72dc5802294dad53ee9cb5353f7f704309041fcded7f39f2e8f76612081e761ac9d873512d3c2490e3a718fdd1b0d62cf21188f22af61d3eaa4fcf6b0452908d1d73f7f5cdd32210e5530e99a82f11f748221032e7b86853529ee3c221103c2dfaee5b847bda8725638088861b4220974f6f90be0ae35a2206819c7a2a4dbc7298ebdd0d2090e3b8fe209b5f3edbb41b3f2025bff30f33264b1ad5146ef880e0d67eaaea5f87e1460fc8e91b57da63ea060f4849fa6374568ffe51b40b72983adcc35ca150005d10e3b94d671453f1b8d28502e48270ae97a39472435b0aa2130a800bfc02dc22f3e0a5593f76178502d8822817e3c51c497f0ebac442016a410e8fc45226d1f70b6b0168b1b3d002c8420b100b72984a4ae3af25732ab0a82f0af00a826af2d64fb96123635790c2e6a34dda6f015a414cd196199952ce8f530158414a51cf23e6631584bdcfb983cd1be26c55102f467bb9aaed5ef6a482a81e94de06c94fd13aa82084eb744e4178d7a9d08bcc315ade14a48f76ddf3430f2cf22f05c93d74b57ffa4941eef70fe7a3bfcca1f8a320daabaa590ecb22c41705b943fb4aff966ec1624241eefde878f36eb5a50d284862c93b6a2bdf05db7c8294a23f0a657b31796c3c41b45ce6c1b5359d20eb5f0ebd32678b96c30952c58b5dab1caea3bf0992e664bd2d2597624613e4358fb7671bdb75c9042966d94c2922f355c104e93a8a89d0f4188f1f97206ea7c81cd53e4ddfc312a44f3962b52bc7bfe95109729ceb3897a7f82defa004295c5a86f6d03109c2a49d5f364deb1d3a2441ecfcaaa11d47a7dd448210d9b5f2631e49cf9020cfbaf999fcc7b2f911a4eab093ef56b93a76c4d165e8f8a9e2d20852ebc7165efbb1c7b1851164b54a5b39b28de9916511a4725b0f7a3ca8b3b32882f8ff53213c5412416ecd61959e7a4907154410d39ce5a09be38afc8720bbd7c5982f3efd5a0c41f2e0d153f4e0e121f54290e37b54a32947b172ce094176abd3ccf05974733e08c28737d3b1362708928cc753fb4105298d08a8140d4622a2c160241209840151300c50e63d00431408001834200b456291702c9374f1031480024c241a2e2c201e28180e101c1c1412100e8602a1303814080302615038100a84c3029c3c08f601a364b1a81127bac4b6b71f7470da432d9c14ec4ade132815845da329fd36d3b017a072cc461fba9b631a61b4b7a5c011d174e25702dfcd6adb671c7d94a90b976a26341cad59526a280063d240483adc99d2bcd2756c69360cd5961c8f14c89879a870271db9f04183560599577277e31c5af52ccbd3348fa404a175df4ec8a90a577d4ec245d8e3d41901856ed9cf93ce08d80ae6d5bc48d36fded3db7c518e48e0b0cc5c83a7f446795f0014d9de6ff552c2c23a927e3814e560120a3ef352c3f38de1728913f00aa4870acce0fecc08b7e09028f156df3631c4e45994971cfde87928324d837e5277774ab9c86e1a41f8ac8c18520cd6c9b4d516234352bfcd3851e56512187a8cba1654c6b6d4fba6b7f71c2a6b6273e3948758430cf4b29e627e8ebc1b1a5bc3aa11aab4afd5e876fbaef3d36438a15d71d01b978e2cd224a3aa3b9729cedbf0d1eadb5842efae442827e3b750b12eba6aa51f91a35db83b8f11cf88266765e50a823da0320a86095569e230d96491be9874aba9ca5f31ead4a7ace2fa15963a89695593f9b9d18bf680058a4d2eb4a34dc20a58271287c1c6d88ce01c0ba8a19331429e5eb34a6ee45af10f2ab62729d89c9edc5dabba2f9fa283b2febe0d42d6c39e2f6dc42a60a3dbbb8d449d13b84801495e200097865d529ed098f3f5d77a618cb7e30c15260d7f43899f5089b2662ff9877eb05e9f7a4ab37457d0036f1c4adf30a3da779b9d0b4d114551414fd0611019b0a5053600c550a7ecc1aa3e2809291f9137a80c24a984210d58d094ec842b890486628abf1ade891151a2eef08cf9a3a7c12be20de463360587581daa64c82e08fc2447068ce0474ea578aceeead5ce90375e86ccd1a0a3f7a221b2f42a2ffac72a4624cf3d273ddaa1a4f7357375073d2063c64c4d1c0cb200f64add12a547a3c4d1875d9ca027961424a361bf2dc0455624bd47a180617a2fc0f7e9aeee6d8e47e2f276b1273058b4af3c2344fb7e33bb75824630cb3d9952cff51df2132d8a6d560c80c2ef07bcaf396b6f9eebbc144254f6d84a2e9e6b9818667bac285b8743055f453912895cc69f24aeb47fb242df5c4e1b9e1c01f6c03999ca04ea40039be147d06ca974e63842b50cf4683803b4675568041870ad7f30a16749225762714d95dec7c442bf16d07b991bb84e3c92d97bb117bdfb43c8149ac1150781f7f7b59f48801f38faed204b62c6dfdfe76c3ab4f0961fcbab601cc5c836c135bb887028dd699d38fcc5a1d97537b2f499f3dd8f9c1238f32bb46aab10380715c0bdf0841447f5048eae0cc4ccc3e7e5f1d35bf81ee081fdee324be5a55162fa2088c0a5c8b20b8eb16e69c8f78acfc272f381597cf9aabbadfce3847c36d3f3f43da3b5af1798bd4faf1bc3b9dbcc1eb019d1d624933da18fe672e636913fd9f71351482c41fda0a6edc5ae81e2e5c84e118b26a298ab7d999948318f5e2364174c54b3e04893719cbc69498bfb20f4b6879e135215b01b6f112af9522f2f2ab1c016c358c4842139693509a86942476feb0e8494f1b44b06f0ce40f2f94171749a7d2481ee2e4d2387edc0d9e009dba44ea5d28daa0e7c6e1ff2ca9802e7e66d73333b9ef53c22a4cf05aa9de21f8a0d1449a5f06e32d53c321c4df56aa82fe97c9b1cee4cdc5c300f91d2ae885abf4882947567a0a3d06f304ed3091a6d42c80e0dc891b6891736ee1a2418b96e7a5a2e0300c182a6308c22cac7ae1a7f817151758d06ebf434face6d99ffa185c4479399b811ed97e65b2090d597bbedd366072d22568762a54d28eaa56c715ff6b5de495cec5615ac5132f92255dddb99fdd2e18f82b469059af1a9500c75a685997b2e744e4b615d2a419da594a883afda93b814d273549217674be0088d37a209f3b0509b23e245310fad9d6c63f08d29e00af57ba733e6a6170e22fbb8df518e27622d7b33c3ca6fa53cf2848eca186ec0299e52fbd42bde082f51515225e618315c6bbc6ac0a612703f017c681e40fb912ed90a35932db5469afa198504d0ed66515d4591059762f8a31c094cb8d3c89bb609059a864e8a5320ddf84c5e6a1b403d36a54a396bf78d9669f13a77492154cb93ec72eb6536a6d7e1eb5625365888af8a7b24e4ad2520ac663075f76e17624f2794ada579e01acf089bb8b5145f37228bc0f0c8f9c79b2df02b3efb2364341c98927e99c5bed0d3d1c404a0b0dc447518bd3847bb0c41c75a22e78d218d0286eff9319552d2010edfa1a9d62bad882a7993f8512d35941118c19e1a6b545a6a8c14c61a37a65085ec85a55b3c409fcb084060e34be27cb2f21e23d5c91e80095e64dd22b9112e6496fc2eeb09211304c0f8f5b87d651e99f3d95e70341d2bfc3d999e800ac8706ef8a5d9de982629d1ac6650036d0455631a3c80e10ec4399250deba967a608bad02e4c89a59e90d3576e17a1c45d243fd9010f182fa14e93a54c90cf02b3d7ae48418c552836cb9f434a8d3b5a07e449bdbe07208e20e2455b07e8aba51febf47c05dc2a6cfe1aea6a75571616df91021f7b893930692defc19ba65e08eedffc449f0f546e29cec2e56c2201c6a0caa6bb29024120b12e7f35f263dda43b0255a94cd0a62f063f6cbd13c7dfd4c74f9a002dfe507c558640f8857ac125699e3d3d8b4e81e478b3c26e2f1a351c39b36482e4b801344d3627fbf329e44735380409fa7a3c7eeb7b7565b669c09edddfb58b69802b6b69244f0fd4c652c9ad2728322d9d80e3863f8e3ce2c8b96e71dc0fae2b22f74560e30c3ac6f1ebc639d47004e166cd2cd2bea9608ef5d51ff142afbd17fcdf657adaec8c86443c963bc28ab2a01a007049a2075492e4c78ecf67f666b42b62b7bcb4be0d47e2f58c2687e3535f5e2529ec136ea8d36786a3c5309e3750f1875524339f6ba47c8b28b5778c50fb1d2eb61d7b289dfce595998ea7ab62d06051e98c2e9d1992aa88c1f6670100c3fa420a3464461dc52b1267738b66b106dfb607294ca7b099fe3c3703444d6a02908c7aaa6d0e1a7d7268e9aa819421bf2c8518df4d3d2567a496e2cf7129c52780c1ff4eb7420607d6433079cfd4d62b9786b4625358df5cbe3507aad9655401fbaae25e144f71ac7f2c98d5888d705d129ab878a8a55c26fa9ac9dad660da3347bb3fa67ba2408ac060b966783b2b1ccc91a39c9c2e5f4da7687359a99a7d024e45a688d4e14fcb6b8c274d84e6146e8961cb33c74cf99c649e7713f4ee67911b0cc25386b18e7fac09302391ce1e281b166291b05dd5b4cac732aabdf22ef77f20ccf525410c85b34f50d9ca181239d0d7bdef46b24983592c455d4d27216d39c49ceed408614b38caa63b9a41a37fee41b0217e71997bb097baa8a4601a5850bb44c56079835a0ccdf0dd8d9c1d00f981acc2fb629e9746c248e69fc6002567ad25a081827af521d8bd57046e08c9d2a1cb0604a3e0c3d05c8e942d00cf2604d03dd9d14cae04584c9f837b6c4f311ae8f3c02c5508f3b2d54ba57cc8afbf964eaf1771c3223972b040c790203575312a5fb470fbdb44795532905bd3d7cf3f1344179c58e44810aa1a92b0edea659565a3f931f8d339a56c6cc83864c3314360a9b483daef5080551d37044cf16411fc38838e423411ad29058ae92dd73b4c0e7c2bae3eb9dcde9ec82e644459641ad209de05704aab01b7586b7cf3e3e9300751d512847ad5cf4a8010c40a17a35388bede94b0c667d20513e5014df754cc5088bb7917082a8e896c90c66501ea7afd50e74b56eb148cf37c367276e4558824674c23a1d7a2fd21942f0321ca3a67c299f8be3eb03af1be861eda2d812b6450271eea0b3fbda14617228bd920d7b01ca25a07d31894b29accf5096c72234ace71504a6c44205e5eb7e5cde6816c66aa3786ed8046b7ab376533ce773b7ef80a784388779c42b42a82b25af433a83385b6bbb134fee968e69163491262969a75762991274abae9d52c82ced5b7e13e393dab6906a95d2647804850000698a6af093c47561fdd8775861e0810721a0a521256e1f31b9553aca2eaf494aa04105469938c714f909e5d92b6fefd3a1a104f221dd5782aa76001970867ad6940b2dd5506038567062954ff9e1fc1c60ce50948794e91e6be038fe417206d3ab5f74bc1172a54bc6554f3e7c88b3c0c6b0314f05ce000a33501014245f87127ee13647d1f0934c18a978603cea5fcfbc8af1a159f2bab48fb12a7c1d7a911c48811ad4f9a9865ad4d65303ba4c9df22f4e1c889dcdb22fd59b20b1781ca4c059a33a85075a4fdb7b3839078b2dda1d982ff45d0cdefe48d7fd61abfdc49443135d0cba960c8613222287ff9b614d7f206239191c4e7ee0be4fd502ace91e4cddb6681ea6c8651946b735ba3dd8c36fb8fae5014d7bfec697288509f9c70b42eda0148263ab77160957d13b043dfe662675f7a7362a6389da906213ba0c571eb68b89649f48dcdd04c079dedfcb47b686cdc0d49b824185a17861fdc0c26b0e8f166d5cc3dcedd9730d4246e13160937101f01eb252551270648875556e2a1293539efe00919116d8ef12c1df2a7949fa4f5a40b6cee1c9b6d8888b8ffe9036d72628957ee03880ec8d9af3bbe018c1073d42e02e8c06705e3b9b0b5fa15c64f44b3200140d9013102efb6bdd35907cbce020464efa90fa0c23f5af9783b984f71f8cf12af30d96b914c00453577b0e2f0b17c48a1f1223644aa17509e6894dfae3b1f1c08273141a2f8eece2acde6a4265c4d28656108f8143201a06f204043155ed035d027d0bd61e882d5d4558b44492e2a3c1e05c615201b755694672d12271937c075a45416b48a0f11ca88d571e82f25a8a9a6ac655c8488dd84086ce5c9e637166fea0e42a74e4f9fe1d66b502f47ecbb4b842ec5b0044ea264d409dcfa1cec66dcf1e3fd0a9086ec5fb86c661d42072577258ec7273d03ae6b51d7f25a0da9e554019c8f133077afc9ff5a207d273e8c0fbc7173d07ed1ab4911105dc5b0bbab70d786315c1516a16ec9580d9db2ee4b0955f424b9d008e4db4fcb25ca5ae40fcb4d756be434bc2a53c40cf880326afa45222cec4e18e6dadfc480f58fe761d0eccaaa5516799e58c40c372afb25aa10c2f7a0e6d316cb8a3982b94ba6657686861fe6fc915ee1534861d02e145b197924627b1051672a9b0ce51fdbf090e367eafadb35ebd0413768dae2bb0453accd59195be29583d3f494e7df7b2a47882eb43d989363514500e7663e38dcded2da4f6f63e7a4c3084257a346427d28dfc1aaaa3fa87f5dcb0d51225a1cc9c20eee7c22a16a8486ffe3e8216e4b06b34f8117a2461102297139966a8aec388187994cd2448bf59b4ab1270323b860d74cf95fcec5169d3e2bc002a82afa326242214a1035c7eaa9481e861b10ec9bd0abb1c451fce991546b82a422dc8f8996ede3f3c6fae1a97732caa102fa59e5ad6b7ac046d51fb6f33ea8c0dc2d1df345eebfab473c13e72eeb06d162993b5c3fa9b708e2376c769b027a134d32fc8920f37edca5f41bc3abd49a04f6b91d8242388f3fcca3ce8e102fc0c3ec58d0fc1e2038ec2371c9b4c1a1351043b83c7a9fbca050da78bf9e01bb97268ea632f7c7c3397350f85c12d8ca8a44c0c7ad7c7606450a3c8b885b7eb5b4439ad76320fb60b29471b6e874b48200f2054d22cd54eb2d698479eda8bdaf8d3c1cc3cf842e221502940b5d1f98219dbe0592b16b9244ec767c3b6df5a2e32b453dd4f1e77e4c3e5dcd33903b80b507a2b5b713c2d31c0371319911a549c5c824333b1980ee3c5798b7fb5ea4187395830cacb19f6dbe2b6a0475ede41f876e1fa904b721f35e30899246e61cee1d1881f9010ed7c5f28ef696a9b5f9e88cf409adaca0938d4459fee4b365fbafe29db60225df3d9b34bee39ec53b8999842493d820cbce8c719d352c996e894451adad2592ba43297590bcfd7e15de4dcdcfb349ce93e6d4120e4205fb7fbe8cfe73a2767b2889178f5a367f19ebfc8a539ceae7588b4d63fffaa3f9cd601decdcddc742d2234963b302c065279ada49ee967d812a9a62e3de867ddc3ee4ede5a03b150699120b783230385ded29c9a9bbb1f8732cbf99f53d0d4534136d7c7963a960b947e432d9598b220d3ee41f629fb20cbcc51539e8225126c67a35f5691941d5a5240eef4a61d0a9a1b45d994acfdcc8243298eb7b99df33b8d5bbae1e3776618764d3cd47032a62c798b080e6f43a66c5df5b30045831ab8a6f3bebe19c9437b1a130bf9e89bd78ee82ba0b2ea70356773bb6fe15067c7d78a741908cbc8fcb68973f9650042450503b29d064b917efea9af38c372fd9c6be986e2456652e2e324db99ddc3319dc6af759a4b8a115dd56ddffd9b1c743833810596edeef9c05de42ce6fb40877ba850b1ba5ff9227d5266918eb01ba744cb6831d9d0142a70163274616d8ba1ab36caeb4e91ed080e9759d56bb8a11bbe614770ae9bb517f914de596ba1258534c7e8ad64662bce222a091a26cdf9d8fc5261217b3ca2d404b90d4b8bba2fa38796dc73db87604e39f153c81c0fae61abd6d9115ee1e6bcb335015dd6305e44829a58959ae450a1eae7cbfbed438a7c88f6e40ecb5a2a427972aeafe71e28b9aad50982cc4dc269ac747c6777c158e9fbf6a64e543af2be46e91741b78ec8a85617950c608b839722c8a24f52d29dbe842695f501bb1a07f886642f7335e63b1feeea80cd2c27dce9789ffe0c6b8bb3cd0edbe8502b81a05b6dbf5d44200a0a294bb00fa06dcfe78964fab9cca774f3036ae9693b34007f5c9cc33f9bb440ada6f41dd8d411a7b73dd78d41a7f965cec67ce3435e1db099e113a8602c3c3ce92931c1051921ce2f37a52c52eb7eafe558e7958ecc79ec63b96f7b2bb1baf93856d94ff8ac9a582d24d93037a29e5dd1e8589fa4a00a3ed7b00db09bac56bc6358034f30a56b0b5d8d4bd616e37384ea6292562350cca89790bae2d251fdf931f5c9bc3450474a03a382e8926219ad59749e9fa338e758be252de9642f8fe9583d7188f40ab9b4317606a6accbc0a49df3928a63655446a4a21ae2902765673c66b5cc9c883419fcc1f4a66a67a15d8b899cffb92701f9cb587c2b73114789a8b1812d5db22497371abac1f734481d001c6d09787539f2ab90f50bc84ec70aee65f555f77d244fe057202cac806a097408c201b78ae402637e6f0994f543c86534f0955700161d3a322711cda501fd547c7494f147679a96264703169d4f3411df06711f848c739f911a3320c3d1126671f83357857928754cf6d2fcc47929bb869b28a94e13e16b370786fef9496e54a50f981c89e54fbf072bf81e328e50b5d0a2dce76a92cd6b358d3d073e7718d64312f634c59b33bb11e8c030d5b782d0a3f3228da007b3f02f69fb2ffec6a8318210fc8e761ae00495a4c34a0b5e9b1892b4216e10064a81e27681001cb15550dd69dd05145a2145409e3a107dd663319005a457be24903111f4cba43af8454ba49714c3e7b0d9e7f1551d35cd6e22fcd1995ef9b7b0f3d2142008900d6b26ec1c35a9c437933b4bfd133c0f8c5f7c5af0be20ca0bc07c63ea0fba98f5819d5c1232a18167e2207b0c45ac6a5e61e2baf1aed5e69efde3faeae97347d5bb7ba1aa0ac1c332524a14f5af0fc9c494b646e4970750ca6a91fef694b36bae0a3cf859d44fbbc29e1b50c09752e322f35d46646b360a44871f41c02190947c6302b79da240dfd84010300fc35170f2afadc58967af8ca2d9e53eb9d144853121d84bc54dcbadf0c0e8c5ab4844ebbf13719ad25cfc753ba0d94870db7676e0826068c19042b82c042f650f597a02af74b93ef61a922d2d8a7df53f7509fe2a00ae8f7427157ec8d1bef2114ffde3c88bd311d1e61d2d5e7f92433d209989465e36c3f4a105e0c4695c1348b33d1d7354954581b207ecb7e72fed4c13cf2bff290e607ad5b0f096f62f631ecc9202c7de6384e6100879d8b1cfe4b0d96f6791615f21b116dfcbe974c85b46ba7d011ae86d75415d3fd06b5b405b22cd589390868a3ac65344e6732d373a4754f05bcb059e1238eadc653fb8bdeaeb30cc00f6aae4e7da262b8134bb3d3042465849781b9ae302b0e2f9a3c5d1ccd28ab883e96e5812549d5f3e71171d8ca4a2b5472aede4934e9b929d995f85acd7bfb26273cd75738c1163c46d21e300d95cbdf306c3fc3106637416915300a6e25af4ee58f171776382b0cad123817d1e0f713a3b97146079bee0080b9adef4fdd4d28dc0388726e737c93e17955088f7fc970882230b86550de2db295c30eec5064485a2f3bb63340ed582a7e7f1ff43b775d62c86be139e328131a4c3bbf5c3e263de3e498cf81432ae68679517a8417c5521fad73b71d1cc936fad08433f6417a165a0c756d43cf979db29483fb0bcf72716120a42f3e1ef05ce3514350d61d720fb7bc77fd2544b579d5c191c9a8bbc0939a377c34f3cf99dce704d48d435852cd559b7c8601526f24609b33a1123fca00b0f48d9ffeef738c0e1b02bf97d5bd971f808e8b00384ee7df1cc64cb40762c3e467b3574d43be4a7ffe4b9536d69344465823c8f8a91135d77a7d90283f41b1dadf59f40e548c96370c2c10781b0ea7d8e2178d24dd16dced0a7dfe0174465289027f4d2ac15f6ac4d3c9f01202cb3ff33c65803e3c248eac57b44000427ad6b3b56afeac40108138d5fc0f307b2d844891cc202ac27931270dadf09fd9cf012368af535cac44f1d5ea0eaf4dcc0909531c33af2c26967f4edd0131e8cc23a58c49b40d67638bc8f16a3a0152d134c024d57ac94cbd7fa11c6c949bf7e1fd10b1bb36219b6a408ee333033d9ba61239bdeb4268cfad745b5362b4f6a5287560a77c9c345a490116327f9c91430fc7fe3bbf259a0ca0148a961cd7af7822733e671a97ea95ac8a107eb2666395ee674fcf52fc00cca7fe55af97ccc8b8f37b672dbc9aa07c845651dc7cadf873ffd14fcd5187bc68ec354e54c9829148fdf333942aaf663279904426073780629874b50c883faa1d146f137e427d3f863349385c2bc84130e1298d0380c871d7168d668435e55c835f93ac8c7e0cc11bc39014b1c7e91a91f53d0c22467de285150a2d41c7ca63c0e9c775f6dc24952ec0bbcbf51ee8b5f90144082e4193c98447f24d1431b2a8102f7d05a847b70c14e29999759f12fff3a6e3e4fbf2a2d2ffa1ef2206d0a51779321662cf3e6f6e6bace24a072fa28fc612b5020e2fec7f59f6533130f8fc0f61a9e63505c6d7c5b9afe7fa6fbf08ef6e14aa442b35749e00fb5be58c184f5513d23f2254292a791637e61dcc7ddb1c56bc6c0a24055d457e18fca8ef858df9f266f29eed34b8e8807eaa4a8f300d13cf0c62d3d750387a2a1db4b581e74a8db21efddcfda02674dacf7782e9bfa41b44c7a8c4fe7e01cace790920d83890ee6c69be28caa96689d7024bab845ed30a3988fbe6559cc2a8198126e9a5312805f2d3e71476fea91b720c0b489742e7c1f68a9112be6dcecbdd7757d9617c5059f1390576f4c7b2ef1a841b34d16e7a6b5bb0c3f207a07164c4c2b403677298c58215e24594ecdc809ecc45e74f4cd903bddb150897ed5b35600c2034e50121b676061d424513fc0c9712258ba28aab181a60fc8ba3dfe0fae2f89d2514fca2051e8d11a72ab234b17a08186972d7429f9578acd42c33d709a5f1ab86b920385da2ae56732d02a2d347ab9528e56b8821300741e369b9848e230d10d395b1cb8bbc52fa3a9b2dbca1f3313e4593af53f898482da8e474dd83e93b5144fd947edc70beaf39a2020f38483c4a577e54d86ae5d2c506fb596a473bd2a55e57a6d80cca751fb40473b28ad5bf97d4a69f13d59a3e23ac13a90f9d13d91f1650f7c4fa8fd7f0870f40153bed9b20c30a659f1eeec8a4056bac9c5d894a1a563ecd8526cadf46881c20ddc1339f51f9f58d7514e7ea375d9e2b382b2635ca2e946b5bdaa1e5a57a4e123e09f325ef91ec26af421c0f702d154063af5c67f44f58d46a669028720cbe06f9b4aba92643d09ee7119835bd6f3610cf5e7c3256d2423adb72ef56f3ca0ab50da68bb2821a74cc85b2e913642f888c6793b7c87a1e7759c665584fd31c30cf1828ae3ff84a66af52345b105fd45771cb84c3838bc25cbfc21a5aebd7dbdac11908ac44be0c4958e2c6e5b232d9284b2aaa5307167dd92e0444d281fb086a1c18db86810982adf435d4119c6ea14d9381f6166b7fe753e2b4f00e4da138c22a16ee0e462e16ce6dce682c07a392a223d89c95ea0a92a1987537c1a611245d6ba596f47ecbc25f840870ad05bf0056d0f8f913b17f2434c9c46471c924ce2ce17c70016bad12507fe30fdb21389b54690d3951a2fbdc954ba19914fedf5910189aaf599057cf26544a9465b83bcd0a187380fc9e96ba8f67ac81104cd1619795f0eb9bd639bbe2a0f226641b3591f8d17102a2bea4e94ed83862dab552008f41779ebcbe27cd9a1844fa240d796ad2233d6da4a9171f7e2e43d1287a40bc67f07016347cbe2e230e2cab816678d44f4e225aac992abb8b5592060521b69663d2f9049cb4fbcd8cb7915e741715ce00916ecf3ae9bbd99d6bfb1869691017ba4b71629bb533b22d467bd9ec32bafc7f3f58c23122ce652901bdb7222ef232be8178fd1d9000d5fa5c86a2fbe9839368ea0242e3761921d88e64922cb33f58cd44639b43c8b0e011ecf571dda0825dc924fcde21ed5c02efe1a2c5d53b506771082ee8f92072843d496cd3dfd74af7a99a6ed5836a075cec4c8b30d20296bb2e8e980f69ece72aac3aef92cc80d5cd542715acf2784be4b8a3a4a3246400e683ca49d7b57a0b701dcb1194047eec845d9d39ed36e2825f92f6c3cf72f65d9e31dc275bb093e2d4f87f13c5db49e1744083908b2d2fcf95aa7e98189cbcbfcf9b7521a42f085cd4fa1a0e64193124ea44ac02adc77690807a13f3c77a0e0aa43b9ea05a383214813e2b7caa98186a9975b7597561a80ec4a5913ee08bc3ad354625e7a91fbcd94e8b3f3183da12bece487b2da412b02be8184f7e6d3d84c9e050871746095ce202af7e2157aeddca6b1bd119c0f040b8a9337e80aaf6868d1796d8b4fc3f4224690d606d9892c5a6562ffa3db974d4502f3386fc8818a6644d995eb79a37c14c726c1a17da414d8f79ff980757bf97be007c921f7645d9f9547061167c366fe912b96fc8a6b6c35fd9cf50ac993ab2e9e7b4add7295f8cd887eacecbe20009d1963125924cbad07e3908080464a8e524713f731989639800e97042a040e1880ea877e038b9aedb18487a4d451fec73c2a0b728432041212ff283636ade37b82fec8e80f0548f7550a992764f59daca95315329caaca94c037098c9d5afe1e15d841e657fe70f586250a73428a7c34ee54e568858ecbc892dcd987f4fb52a638fb50787cfb3f410cb6f8b87954a8767fb4d40696714182a16a00679b9820b2192d0dca6c51fd2d29dd5c9d9cd1bee2d3032c0f438a62585b134e4216176e5e3444c1437c62e66031a44925ad043e35c84302c207850ca17c8963b477eba877072b53cd67ff84eea71d2a741d7bdb4e4b96f5936a29dae3776da2c40727d081d83f571ad905ce12c48001c5b82be984b7dbaaf7981771aaa907ffd3f0583168f52aef6c7ccb0d3724b925c6f9d5d3e26cb4ecd2ae5f8a86514684cdd022ef504787b64f77ea02d90071f587fa0068a953ffdb7869534de9e14cf1d28ca3b0278f387c571eeb952d5576d29bf9913d43ba6c126812ac9ca96c028807a80bcab2ebf5be219cd116e37552cb573ea31cb3ef775d73cf30cbe0ef4ceb533cb4ac44beb67be09d49475b9da09adc2467bea3180e2cf07b01391e70ab79d9ff81417b2fba218e0ef890015ce02e09df33809bfa7ffddfd1bf9b0775cc706ee246e59c66323113482f3eed82059cec425642d3ec260e4454a8635b55c2c7c850f0fc9ed89b2200137d766892c313885895fc11d61cee8ca8bb8983b1a266d844668190967f50971d09977818ec703e284160be3a1e73b5f38ca3c1c1e35274168e3707df5460d8b8ff3ada3fe587df545b97ced8f6dd6bbdc5dd0a6191a3e4596289a462873fc844c166f1aa9c24edbacf9bb2609c8cba0c0d1a8eccef29ebe55cacb82fa98240005309f852fb3ab6ecb93a7050f89cf6bb7f2126c88890b220821702b6b67beb04070d4573d7795e51a331820feb1c87891e771c1c2ab68e3706c979a523dc878314d87c1bf72d28453b98804148aebcdb1ba873aabe770ab36edd51d1a2d14ec49df903dd72e187ac6ce3def0ab3eccac91664162fe4fc424316d2afdd091da27a831412974c98d4971a040b4c2fa86c0db70f886f9319c9eed386444c86430a8e2509a96937b4ff65b324667fbfddb0e0e858aee8dac6bbdd74368b865a10985ca55d36c78e49a0b96278df03622d59aa3f3eea6c5703224a9240c896096d86a1007a0922cedaef58a68066f67735778fb8a6496fbc2408c6cd52cb01ff86436ba6e48a2a01b21b972573605d979654c9eaa21fab3d863000edff243db8848fbbfbff396d59b31103d4057a61a0e0933fa6394ee1cad6825fa25f322fd6584b78c76655c9e79f32eb22cf7c1650a02dd0666004c41f360b89ee442205202d5bf35a12b049a49725c3aa10dff342f962356ec42c473e0e9f796a4065d0a911d329b3d91de9fefcb28fd0b4306e0ad02080c795186a93de2fe2142905360b4ab3d2af102bace7b77d46d7b5e606e2fe8d830a4c91e35482325528746551f3b6b0f642804a345f8103a00558c5e01cda8d76f64d5633ce7316aa659283726aab644cb5017f4873f82c6c9f54ce6cbcdd261067b5ee61f27caa474fad5138970659c1da6370db8f412e30d3d7982d198e0e8dd17c39d8ef4ed958bb61e9af2c4cad75ccfa1d58891ee3a893bd72aa994cbb24f92af32971b61df932aa048ea0a9420fe3683dab8eb715850419768410ed79b441c8a0494be42f4dde5b270aa545ceffe82443202cc681e0b78f8ba8f251ae0839ba726460803afb0208e249b1eb75909daa690c037d2a813784ca9b476d9941c0168dcf843eaddc0da406107c6228ccee04f032e0db41a7ce70e6652ca018e7484b288c1661a1c9c1de5b277afdbb75ab6f9fa8a09752abded74dfb6a9fb4d22f4075be9d2e7c31799d57963ea320017838dfb538a7216fafaeb51cedb3000c05404133ace8de1d69a1df0f309dfe21d52133400c403fd0bd8a5009899191d4b4bbdd3fc02b053f46659cf022f1220005014804559400b5c2f652a003ef480c4f70976b1e8313ef03207faa2c2bb349f005a015e8abd643e02a6146866c0f5038a084874002650f5a3518d331c55cb006a561d3945606a49d2010cf00cf00cf00cf0e4ddf95c0f48433a548730b1efffb66dcab6d651d54699a49c16bcc1900c22c8979d70534a32c99492500040800c7cf12ff52bc3053d41285b035e03710348f572cc9a56b34e7d5a3ba0452d7d7fb8a0aede65473c3c0a92100f2f2119f905e4413838da0f933ae0840e885bb142beb3349a6da698cc61e5707140a7bb52d9f15aa99b05077446251ab38eec7a527a0332a3cc5bfb2637a0e5f4ab9aa7ffd9bdb401ad4bb6df689cd739173620a574518d68e8875df51a90c14df6a97bb7b839ad06b414cfd53a37e9ea16a701b54a2653a75f9c96548c0684ca9c326b2dca671963ce80546f3a2b734233204437b78ea1f93a369601a5e3cbfdc14ffbc6cf9101293fb5faace336069494fa45e1f76fe73213035acc41c53e834b1d3b596312860503326f307d4acf6a51ebfd0b68c1f566ccde3eb1df4dbc8096365c3768f85d40ba2cf8c99732b5cb555c409ef03d199feca5b7d31670cfda279569470be8985a3ead7a655b689805bb0916ecae809c55fd1b557da9b66505946ca6b8fa2cc75ca2aa024aab57263726f38de24405f4787c3a9d99672f5ea680922ecbbe52d9dec92c97024a07d5edb2cb1b33c9390a28771d36e75bbcfc4a0b05b44a2d4b231ef71f1ef304f469f962be6894a63be8047406931fa7329f225f13d02af3b4f79c7bbbac4263c204d4a6eef1ec6e2da7dbbc049496a5bee1a22901b5af336efe7051ee629204d4ad6292464e9070266820c5b7ba60de9fa7fdd1627204d406d5e2fe75cc1f8ba3607206cab5ec5cf23fcb966a6aec1928264640b867f92f5fda1cb2ae1fb181133390aa19d64b69dda48c0919e8a81e5e9bcba5dde6998c81525a10fd16cf2e99582762a065f99793d8289aeba2c2402b69a6ef4b4675652a02da65b655231bef2d4d4440bb2cb5e5e6cf9321a0c37c7d0a939af4b8ec440867d89cc7b22fb371510fdf9804a12740e8c90f50ea4b47d7729e9c81890fd0daf779ffb4cbdab7ef01f2f4ba70a633ffba977880306f71538bc15789690163f2057a3ce72cfdc39ffcac7780dc8e579f33a35ea0738db9985ef7bfa67480de64aa9bd585dcbc982e10665249555f4dd5262e1062aac53f667ad7bacc014a5398a613179fa9411ca0cd4ed8cec6a46599bec90dd02eaefef0c268709dc5263640b620af65c75c6bf6bc1e2e2635303440bee0a352e6ec73259f015a5e6d7239f732409a1899976d1944356a1203b4742536ebd31ae2199cc040514d73cf9c549cbce0262e40cb132fea6b693a78fa4c5a80f650cfb73109490267496814b60d90443902625ed024e37cdb6a8c52ce409676d2d24c871423a03fbe9c55ea2c6e067ab443d5677d9ad2329432502febd6fff01dab341432f4ec385b55cfb42ad54ebef8f974ae9431902f8b7e5fa752b9cb2a8a18c87fe165759f1b763426014a1868a54fe97c71a2dd325904a4aafdab29ad5f7d914284d4630e9bdbbbdb3e643bb896b9a4259fd33a65081421a0de5eca8e4d390868d9749e5b541a05084615fbd8eda6ae6680f203c4c97c2d6c8e2b1f1ca50748f5b2f0f55df2ff1d850747010329b5723f7d4f7e81328ff15e7f9221734a9d0565076e38a54c7e9662a5b9bc7065b4953f19141da0e52c8c6a502dd4554d5da0cc5ca72dcfb36a2e4ee102255b769d5ee6142fbd8a92036416db53c3a6dccd2f8303a4bdba36a9e3a310996f80967aa75e6e8d694e77a6a0d8002de65be5e1ea37775bf02835c8533e7b8a7ccea09d83476d5068808cb2f6d7a3fabb973b79066506a8d582dd2a4f9b366d2e03b4f2d64968d2edcf9d2931404a71b3f9a953e8bb161820b3fe152e371fca0bb0a0b8e0dc2d1fc46eee637366cf494169014a67fa12ead9620165058817a6a5b4672d45054771b99dbbfa33650bc45c0ad78c4ae9cf16142d5052b6a8f1f3b426794a942c905a83c9fca5d665e9cd1a7b211e200905250548f15a2fe84bb2beb4dc20e9502fc5e412481dc387172af746b38462dac3435e978b9540bcffc6d3abbbf351acb137a104325c76d4d7f93a67a999047ab5b0ae53d4756e3acce91d0e4c24815cd3b256e559d451fa68d2984402f9313a37a7a517172a15211eea4384022150e0041208137feaa28e9a47a023d6aae54ff2be1a7b5f856f808383a4118db6c62efb1835d3bd93ca08a41cd5d2d7bba4514d5fc4de5a6eab2977f2a269fd4c8b57f3c21345a04e29995d6b6dd72c69268940786dc86ea8cad6f905110895bff299d5c7965beecc617208b494cff2c92463cecb2e8640aff8e6bd96c5a4fad44921502a755ed7109d10c8ccd9fd7d579e350f029dd1fb63d799e8c65a10a81753dd27d7629340a0e36ff77c773897999d00022566f477e77635fa39f9034a4e5d44337cc6fda8891fd079ee638c975d706933933ea0349d0cb6af4d7c409ab7866711d9e4b233d9035a0bda7a6d74d5af6ae901adbd2d74c73379404b5a759e17e475ee9499e001ad741817a2525fb567933b04a8cf2895d457195b3eb3c66a49c85bf196407ccc1b53ed32af29299540f8c989fc46a5c3f5cac2a050e218bd357c69877ca737f3fa31d9ee38e2db4d022d2a3c271732777424042892406b3186989829b95dea20f1e8e8c01319490ed2d1a1b791388e830472f36dabd559beead31e9447a023d01dd7fdb54c8637ede2416904e25cfe99541aa7746b1881d4fbff39b5dc627ed517b1762d4faa08c4294f1d2e99cc26635312814e9bcbbb3dbb6719e31b8840b9d4f5e952feee36abb1c7781e8740895d5fa5c5551f66121159ce102873595c4b9bcc8d42a03dfe988bdaa9c273eb41089496dd83bf169e3a52a101110b70705021f2c1c131066510e896560a974988abc3aec483c4630a551fefb1f4011441a055e764ca93efb8f297ac410904530081b615ae99e3d2bc5f8cf207e4be26f5a736bc5e3d51fc806c79bcec65cf8e3997fa804e29e22e5c4a7571753ea0b416b328650fc811d7d7b899758adf50f480105bbda93999fa8e32943c1c050f7c073c1050ec80ce276ba58bdf2e3e7c287568ccb3c78927edd8704fff9dc3c6342a6715020a1dd0217abf71e3a830a5340774dc739797858b1c50526af9cd62eaee4d1e07e497d6c26dea7bfb8fc3012d6deb9371577ed36340286f40e9c9a05ad0cef1ab85dd805a99e59f12e31ae3c76d40b9e86267b89645ed6ed9804c42f36729b65d034a939ad7f64a5b098daa016d1febd3ee734aa5c63420d4b556a5c598c54d8d6840ca57dae552d2eded73674069e9e5def56ebc4921c50c5986e3a800850ce82c76bcfdd4a2f80cbf032863408a18902eb39ef6534a1850eed9f59eaef7ce280506846af95b94f5a7b64ccb17d062cd76d4a832a61a7b01255ecb72683cbb804e339de45dc6f5932d1750725e6e33dd967295ce1690415cb7dc1bba22626ac1532f5ff39e785940a7d5f9cd0e1b1690dafbe4bc95e7cc2e47ca1590f2ca3d9e8d8a0babbfc0ff043cc4413afe175a01a9c757be3d2975fc885791442c50c515942a24f39ef98b5f2d692153610aa99997d6714b55f3018a14a2d0788eade9a3c72023b3690a1490351f9a94d86bef6935b3407942529c8094176dd749cbf5a97913d031e9aca6ea51ffb687041fa2548cfc05129f8a9107b1a3306109cba973fb658ba758ffc3c68d1213509480d4b2dc7c3abb64dbda2420b3e9265732a3165d87d3400b7a267569b1a120018dd36659d9ae778d0f6f1b53d90114634fb43d61d09001e72a592fff130618c731c72d209590dc18194013582c4fa83f401324234e3c80c4c3861fa089329868e289276a20c0034c90902c1c02008097b8e21840135ee24a6484a3004c0440014e88d8e8a8227909494707029868220105406b93496787dd35f6b2808e2633cb47ed9cb5da0a0f75c39484783ca082850254ae6003c40aa8fddcbebd1d35b3caab80bc9359f6c7ce7dd9221590d25e473db32e9d963b900759900799026a4c479372855963ef803c8856a4901e255678a828a0850ff677af4975cb523596f16ee081fc4887151eaa43a5b741d297810a14b0b0919ee044c509c8f5d8518dc81f3740d2019526385161427a942811901b1d1d4e549650f224200f42808a12509b5f8bd75a8cbbd91da941f29104a4ecd62435a9ae8ea747c9470d12efe8682d09f14892108f9291bd34d2a3e4e306484787012a4840c7d69d85dfcc1534902fbe9b4ed25f060d5793d810e9b0ca11906e662a4ec45c8e4bddf5a99c6176c6cc12d5d89a2e41c508a66206ca5e169549995cb86a315054ca4087ff6ed3e4c97fe74506d2b32cb53853fd1f7a8e8170515766378b295d4691511103d92f8bb3df4a1e1f241d1f1e22e25162430433059530d0aa655ba5b5be13173d35f63acc85548af04751ad3765f02b4440e6ece1e46bd9e6497d24fe612782ca10d0a2562deb8fea53ebd0685111023a79567fea6549930eaf1120332a414087b6affcac7d539fde0a122020b3c78e2fceead8a865490d2a3c464ca4f20394bad33fa95bab0a558e547c80d462a7f8ccf625951ea06ba3b0d72e9e4809498788b9abf000f5b1dfe9b27751482181282cd080f45360808363025234e0fa3f96c523e454c040ec29295375cbf3323c3542fc238a572221262b5fb4092a3ba878712e39bdd29369291c49211e1b812afc3bb027a8e8002ddd4bbf2d8753a58b65e5517cc9ed2c93bdf2112a42ae10f9a870818e5aa836a9aabb4c87951ca4e619e5336dee64a6a9ae3cacca471d476594a9e0005ddad4366d964a477d312a37e8e4ab57aba4da89046fbca8d820bd1b95292d76fcec3b18951aa8a55726c4b470ad85e40a918f0f91be312a34c063873fd3fa2f2a3340d9bc89c6c7c78e711615191cec7e370b07475762b0979636be185342e229e40a1105833f471ddee56e122f785f7981dba667838bb870897ca40e2c464a5c70bed7e6e0d2ed9516f09a7ddeeabea3d886a50a0b34efd262f533b55c95157c5ab9f8a699a3a2a28263acb54fad4f232e655ecbce8e8e1011430dd88dd88154b640e7563aeb738ffe4127f92d2a5aa0ef7e5e7894b6fbb15e250ba4d7cb1c55ed93dd7d2a2940e999ebfc71cd97b6dc4b0483aca8426b8cc3943106114288218635690c9209120461418ca3308e03a1b5d803126030398ae4300e821886811885083184104208218410420831c492b26e30288912cac239351ad1dcf9bc97469b7fc2a209d041d71772cf4031a2bb923ce58245c05748137169d6f1ac8a45d81363687fd25308468e8703c6d2f8a926256991883a6c8f6c3c8e24da015fb16974e4c91e64789058d8778778c8a8db84f1acc4a21178afa2d4d2d3edac09aa4f9557283a8b731c740db0e4339063359c4988d34c90660e14ae1e296f146a01a0e664db62a28c830831f8edab2294dc43051e05690e1d9056ec0ce19f55d034cc0b9ece95fdfde7ec668eae1dbb6ad0acfb0652944af3e6d4a74e76cf02e305834b90e6d6092a78290135941e3d0f46b5d1470bc5ecde6bcd099ca21ea1e30a95ccc1ba58d0a43f1e22e5d4081e9c765d49b5426499e530fcb59add2a41547f56919e421c9ad2c605b89553b0cc188aa40b190e992f95f925b799f75ab8c5d6e0d5405085e141ab3347e17d40e0c25819291015b45e38c6a267b7c7b229865dc43cf127b43737b2c0e3508ac9e1a4938320315c4ec10e4ca436109c44423d0ec06e897bd2db9679c8ae6feb81b073ff4bb65a363e0338a80bf7a21b5354ebb9c355fd04e59ac8e99841c0a8123cf3b614cc8ce409533e324998fb79537fe85c03f617b66405cec53d2a629faa5ec349c5541a72c506b8e8bca52b226aec211b1cd639c5aba8cdd4d0118605d50ed9b5cb2cbbecd4a70297d7e5116e19e25c19fa7632d591caede47bc912b6047bf7bbeb68eb56961bb7ea8e74009fd5471a1306b860b769bc5e04e397627935ffa2d1aac53e5daa96f0d4e346928dd95679ad4c98735383f9c3588795db33de86164be5cd3bffa397514883b38c47117a1f63a0e795155d4d79f303e728515ca695850f2003d1e9c4d275c8e000c1d530ba71e7de8c004709d578640232f422985ec5bcd044ccf93f26c7d3d412c161169229a6581246233229d1e5449dc7cdbe0fb5e4b037dd02d53de108905379fd9b4b95befb14af67fcc643c9436fb5f376f398c6c1748a37c93febba81a4ed84279a51b24811743cc1fcac6f2ea67941adb9994ff253b703306e2a3333ed73ae07ece266536a3feb9b76e1604b4c19a704b36636bd15b15acc1071472d3138675a939e1e33f0542e76fc899a357f371ed31c93525bb076a5e27cd8347bf6700f05da5dff368e4bd5f64dfb147e1455ecf85bbd85c71178f3c7f244865ae894e3d34037ef68e0c6da17d2b2111f7698543d91501aaa790a21aedefe1b75323208d114dc40296c5b4cd000aa0d572959d0d4aee3b3d8e65ceedb5872a5872f65c8dfedd42b41b33a1adfdf592a41931b8d30ce90b0d199391aa76f2efe8fc9034451d2f9ff4b18be89f9f08bfd4c3c4b5c09c67c82a7a2fe8c1e281b2a8add1ce5a6680cceed0643935f543444e02975fa4326b2a3750901c3a90d9fd79020674b27534583bcc1aeba4d1a372fd461272317099aa063c2c839da460dc58d38ef804f48b61304f2c0a5220e423972ec76a06f996ebfb8216b56bcf53fd6f274da18c7bc5e284c712d01ac699eeb52916077eb08ab910f7c522fe05ae669d1762f217583d60c360cb9ba4f2a24890748d6181d3d9c19d10129b8a3dcf30cf54fea895678ed6c6e5520bdb981abac541f6a8bcf80c7e515ccef68a48525a08b6929ed6834313dcdb61bfe6f416c7552064d278d825274265a15a0fa47676f2f7d2d09c65795ad619d55bd1eaf79c7d7c779ab2e213a3960d4ff3e779644c8d86288f565202d7de35ead569db89710f1d8e10c37b6f3d82fa11c56eb737c6979936e363ee201af4192d78d2abfd4f3b0d488de8daee09de0afb8f9557756a9b44904466f89d5db4c826cf7fa6bae583eb436a8b14fdc055e988ee074f8effe71c46f303fd68781c14a53da73a319d1d81823791f90b85d78c492135a2ae41cd0fad2e8d5c325f5c0e4febee3dc9f446a863df256983ef3201753009e9f10666269270d8b8e50eca5a34679a67be0e3f0143706b44e323bd626ada057f0bf53a6615bc6dbccf1f185548bc1ca6eab3ab6e95341c2f30d196a549f5b05d3f63373eb2304f00663f9ae9dcc07f4459b090ff76f4b253d321d0cd7537b3dea05e600891310340357aa8cea1e2885c620ecc5182fdbc4d61b020832bb21d66631f0419591e88120da0b3970bea63f9c6c947cb4987089251903b79fbdc94a29a6a7ac526877c5176548670e955074c2e3d165cf77d6b1dcd68af8cea834a64cc1328adb6dee63a85ad287a16399772fa00bf467005274123b2cefd97e1e01913ca0c2c74cc3e4d88840f669e039622124c595680758321e7144c9a200320844c22fae45ebcd6923026b095b7b10f13b05d526a2880fe3725598ec44fa2b064bc603433bb5f9a8c3f0c9f48418c80a45cb84c932661f97417df85bdef215086ee21210e7c021fd48e8e58ec776fd88abc59d483d4776157fa1ba7f7f668d301a02a551a2056cf56fb2ce0c5c3732080141c49e1286adadcdd94ccfed2482c5635399a8ad9751777668e31547d015ac5fbb0bb10d029640b34707c6e872bcfb66150934b10d454f47fdfac51e916fa4b8111e8c66da35df72a479b49fef8a2224a7a60fc9a960081c8b89d739f8e989100b4f067d07792b6d6229816518f3c078101f874474fe69a5ccaf767ac0b3a7c5e50fabf06659213a4de037a5ef8232b372a42e12a5836062e69befee58412dcc86e6ccd8d1698c4721627e9f76304b18805f7e15a3c15e946d000370ae02c145ea8d90fbcc9979ff47ff3f829274bdd9ab441b4f1f5ff2294eaafe08726d7b5974f4f6f1f8800861f2a0c2be032c43577aefd76d65478f82effd06f935d4ebe1597ddfe6e569d19af53ba95e55fbec7f0d677257c51615fe7a65286ad9aa8614ca97770d6375f3c2528efe1206aa94fae6eb959d893d8f504efd811ca19393ca3327ffb7f22a0311cfbc4c1fca529ffe29c80996a3134a36225e411dded313281111af3d87d1a40c928123f75cc0b9a399fdabc342fa3e4049ecda6832affab1878368160f15b468a73a5ebd93ca1ba3963fc85c0f58eefbe1fc83af4d5eaf0eaa0a39c7ef6ca7605fb7be19a359935578d9e9cd0139525f498362b290c35603642b150cd5bc01b12239345534c2872ceb019f81466484a5f7a3dc54b7a37da1ff82060e7f028e9f2f4689748e9b6074dc157978d5a32136e404b1860d4f2766f768a52a4471ffac90a78685714421de4ef915990b104a5df56b551aa9fd9559f36ec3a282bc5c83eaba6aa87aa90f6c61640a91585eddba6ba7059148708347c75dff33c67fc7c374658ad5b68836c476bc7c6963a3b216f9156288b179900d90c7a3249832ecc36902f5a41e755d4bab7ff5ae7ad24b4aed5c3917bfcfd300ef31dce8dd8dae7a9971efd214d4fe80b3edfbc3748733b2ecb762a69f7cb3f3902b5c18267c794883f3ab6ba16ee98ca1caf227337c7a19ecd9d973003171704bb351955e7fe1e4efa1eb9af8b87435fbc1c80f137e037da2333bf9954c75ac6f76459d02fd25f30c6c58a6a46374001800eeff22cbf97cd41b69973161cb77ef39cade29c8ba37c243b37469cc3da6066d183c204412101160b1d034091a916a730dba528b282bb51b0d2eb1b46cffbfe82eb73180e3dd64bb50d07cca5ac6cbf8427911fd0eafcd06342833cb7ea0d8e52a82997767fdaafacf8cf5f8d703356f8e9e210b1c717f65417627aa9688a2053a74f78d686581fec24a86d02ee0a8a6d5c6e8add5ff9f93be4c297b2763d2bb3412160f39f9225ce129ea2fe8f67e430876153e96ddc2de7a6a6de2d3ff996b660131e7d67d04fdd33634455c3453e739fccc2d2d685c25cbe848054a6a9044e4485471538eaf854e96add4cd11d7683b2ca7332f3ed011bfb4718a23ddc7002b0839066f139a2e1971556a2f8e82e104c110c2d83135e50c", + "code": "0x52bc537646db8e0528b52ffd00589cb4052ec5c75e185310686894746ada41c31b10bbc208bc099f203dba4ea0f0df2c84da4097c22a2461c16f39afa1334274bbb07b0ddc6a3e2a1b6703863823c00bf144a3bc028dbdc423f48ff8e8be25ad114208d964efbdf79601581ba6172b175f42243fe4444be4873cc889dc1c8b008527508889897966623a1113d3b9c7dc2c6f500f371b1da109396801c771cf4ce48998c89bcedd3ce40e40c8cd19908113634082c9647a66c283bce9e620b707d8f50770b3f544149e0801ce52de890d96cf4c844ec484870b5d3e5fc7cf31177ae6cec3b3bc5900d707d8f5b19b2514564ca10ace4cf089783813a10b04ecfaf806f11c7421e0c4c23c9c891319ccc39dd8601eee0fb0eb9b6e1de6da51c7398eef9ce73fafe13f0ee43a7c87000420003ae8a0430e39e40004c89d9830101c70c0e1c78f1f0000c09d9830009e7d9e7752a9d4330dcf3a76ecd8f1dce399a7a7a7e7d986e78e078f3ba9c13c9e6f78fef1f1f179563dfba081863ba9c1343c03a954aa1b6eb8c1061beec4846de8d1e34e4cb8c7f3cfb3cecececeb38fe7940e1d775283753cd7f0bc8387e74e6a30cf33006aa8e14e4cb886671ecfd7d1b9931aacf3dcd375775283bbe71a7cf8f0f1f3f3d3757762c2dd73ea19c75afbbce339e7de3ba9c1f7b9e719478e1c77528373f4e8712735b8070d34d0e0e3e3c383078f9e9e3b31e19e1d3b76a452291d9d3b31619de79ce7938d8dcd338e6719140af5fce7999b9b9be79de71b3838775283719e753cdb9c9c9c679ee78b03c79dd4601ccf1d0f0f8f0e1d3a7676eec48477fe3b31e13fdb67ed743a3ddf671b19993ba9c132cf399e513333775283679e7572e4b81313cef18cf33c35ed4e6ab0f67c73e3c69dd4e01bcf39eebdd6da1b37eec4846f3cdb3c67366cd878463dd7c0c0dc490d8679be79a6a1f44e6a30fdefa4061f070e1c39393938383837377762c2372814cac6c646d3eec484b5e79ae7188ee39e699e4da552e9793e6fb5de490daecfa7672bcbeea40667cf32cf366a6a6a78cc3cc3d0d0dc490da6b1e1c6cccc8c8c8ccce97427267c9af34e4c783edbe8ae9898980af3c3692693897b2e9db66da3d16e66d204c3f44c9c6c98de8909d3e74c07ebebba64bdb1ac3ba9c1d661d7cff407ecfa4c9a443ccfc44909cf3ba9c1f34a295f4483e5d501764dc4831050256f1602761d2f8a087c3c7cbc43f19d84dff383626f41e083e0d190b7c31859ebe44ec2f0fdde7b37480ea0f6a0f9c0fd70028226889b562d59d28406c737a9387e4951c544710d241c5f4483e385c077e02ace3f22d093274f9cc0e125139a7782072e28a1f9274ef4972424a1283d42f35172109a77e207121292909429340fbf0317df4b709df4441af8078eef8d080e583eda21f903efc0fdc0f06f28fe07eeadc80f1c2f110f58881db8873be9890fe057399a7718be23500be51f0c3fad10f0864e8a50929175c7f5dffbc29d1425099f6aa6b4de97b39e3ea35683dd7cb51cece6dffc7cc5537e3e93367efe06aa92c8bf4ff95e64285e09242424240cef952bc8152917baae1116cb3abca822f0b7e8e177ad8b12f2b03c8a486d02cb3f2c71c5588886e21be7239ce5e38320b58d8dbcc32be71dba8450055943d57ba69650d550d558bea10a7e3e835b90f8ec6570cec7675393364bdc9f768b37835ab4306ad1bef706e5adb08b4182e0d6436378041f1c41d63a70effdac555c6f36b2d6c9c7ef12aae0fb0d55f1fdac7f701cecdeb7210f571cb87c7a3857fc4e03edc327a87abf812af807e183a001bae2f88ae34515918f9737dfa287e18360d63fb8c68d7b1b7284e1d57977e8f2bd2ea264c11c0492428d05ee6b50f5709f06aa1af75ba7efd071e7387a0f08142962bc29b8780eaaf2717cfc23d0132cf1f2f15d047a82254b1c2f6f940b617938fe0481a0504c7a72058ed7a02ae2f8780955eff1ad138dc8ba6182c0620cd835965b909bcc892db89f995e7c7eef5d093b08efdba27d18dac6cfc20dc2ee417b04dfab9235ce2a54e587e5fbdd40deb304e2fabd0d91b7664f937ff2f93df9273ff4fa3d3e9316e224dc843e9c356923deb8e0261ac459c3f019d4a49578d34a0d64c943c2443ce026546b204b9e17dc2406bfc347bb24e2ac49a4de88705a6f441e127ef14130b2c6f0ef395ec2ae9f455b61d7f0f1fdde8cc00fc55b61d73f7aaf87ac5f07b84e7222097752135d703661f86602eea426d2c099a9753287e11baa1a76b962f85c71bf2150c3147c3f7b5b11dc7b272149a95095add3c3dbf484c1599fcfd456d8c1572b61070f847bf861eb8de1b3a711b12e7d109cb66117ffb6f9ec4dfb30dce6b3f81a9634a8a2879750550f5fa1aa31bc651b67fd83a3afcfaa7df86df5368409020b3260d798de26082db2b44fe30c6ad436aef6e1ec6df470eba1317db58d336a8b9e0f4798fe6d444124ece2897098beb7201aecdebcf908cf4aabcd12e7f8a288adf716643e0866596f43ac9b25b67ebdda7c5c4f6dce39530b209195c0f50dbbfaa07859a21596af36dfe0f8ec69966d4c6de3de8c482ca7258a58beb720f24ad8bd07c1681b76efad03ef10873bc7517d520459bf29b84e6a428cac1f0ab84e6a420b6e9c390c4f0355b9c3f0f05d048a87bf81404f089e83aa4e42ea02c39fa00a62f8de82d08206edd3380846fb044bd6307c940b61795883aa3e7cebc03bf4833b87d13b7af05191f583d1604703bbf7893b0909099f60f7de3559d60d13041663c0aeb1845dbfb7200dbb7e10ec9bac7bb8f77e5f3d39785b388118588f969e2c7a6ad043831e2c7a74d063839e2b7a56d013831e2a7aacf45ce951414f0b7aaae8c1d293821e17f4b0a007053d5610d123a5a7043d1de8f140cf941e0ef43cd1b3811e2a3d51f440d1f3819e11f488e055e909410f0876a4b1438c1d67f420ed10c38e2e3bb4b0e3cb8e31ecc0c20e2f3bbcb0038d1d4dd8e1841d50d841851d51d821851d63ec98c28e27ece0b2830b3bb2b0630b3bc0b043093bccd8f1851d49d8b1841d61ecd8b2e38b1d48d801c60e29763c913a426a4b6a09a924a4c24881914242ca8b94155264a4a6903a232585d416525c525d487121f545aa09292da49e906242ca8c5416525548512115859413525d5265a49490c242ea0a2921a47ed0e120e583540f5249dd968e0a1e1bf094d1d980e70a9d950e09a9187460745c78b4e8929062412785ee07dd10ba2c3a1f743ae876d0dd2085a553417745c7029e11742b48b9a0834137829413a927a928a90e745f521a483d918292ba82070b3c62e0e9c223021e3278b2e0c141aa05a915f0d020554507821415a92ba92c78d0e00183c7073c4448f18007093c49a90da4a6a4a4a490524da438d0add19d81e70c3c27e0b9d261c16385070a9e1cf0ec80e7063c5bf0f080870b9e15f0e880078bce0c1d1a5d14ba31745ce866d081a1db4257a5334157864e0c3c61e8acd0a5d1c5a0c3c253059e0ff070e9bca4b6e001437782ee053c54e8d44869d191a02b010f19ba297454e8c8c033a50b03cf18523b48e9a02b42a7a5eb428a8b0e053c56e852d04dd179a1fb820e2874804007151d53747c4087077420e9d8800e293b58d82163e70a3b65ec7cb173841d2f76b4ec106167083b5b76a8d859c1ce951d18ec5cb1f3829d2c76b0b04cd831c28e0d768ab093841d1cec58d949daf9c10e10ae963b842bc66dc265c25dc2ade2b2e0aee052716b706970b35c25dc2d178c9b84fbc5cde216e112e162716d7067706570b1dc2b6e0c2e0cee0bae15f7ca75c115c20dc2ede202e1fee0fae026dd1e5c1e5c2eee16578b2bc545c12dc1ad724970a3b823b850dc2877caf58055e322d9352e157b86db015b86fbc4e5c0d58035830583c58255820dc382616b609360b1b037b059ec16bb858d81b581c581a5c25eb12eb02ab0565e096c0a2c0b5e0e8eb026b022b0536c073e8553e1607ccb7b701c1c8b5ff11bdc06af010e97c780db720ffc03394ac8112387063938886ae01c01e70bd3153722c071851c31e478c9be684d6848d91a365a6e6690d3054d0325277046c03103f7054704ae089c169c2f385e70d0c8a902e70adfc0a1d83871a2527960e30c9c0970a88073c69f388160e6cbcc194e526c98e15270acc07500a78c47c191c275051b65b0f105b5458e14385dc811414e14385cc809c10da4921172a0c0d23821d97820b342f645b6844c0959153227645ac8b29075c9c8c8cac8b0905d216b4206852c099914b230b23132246451c8a89089914d216302c6042c0c6c0998123230b227645b3233322e3728c06a703305e7050e183824e0ac9133c67be249315531d9c034852905a62b262c4c2c30b5c024058e0c70b094ba70d3e5060ba82e505aa0bc80e201c7011410505e5041c841e35c60373085e114861b3430a9a0660c1315364db041814d086c626063850d143632b099810d169b2c3657d8d4c08606a711d850297961f3848d94d3066ca2d85ce14ec09500670a3622b019010e16503ba819438d1830226045c0b46046c0865013849a2e6c52607302b805faa0e60b4c193567c01fe028a1a60ad6093723c0b0c8c66092c10e1264143aaa4813d4a440a2c064c54e0f5022a8c1e2615193a5660697154c55c8294c35306181d1029c829d8199818101230326064c0b5818302ed040b9a106cd139c2adc3843ce0f6e3c71434ace12728e9043841c26e460c9b922c7073931c819c28d2c9cb2385571438bcd941b42c0f102678bdc82b3841b30b861051b03f6056c0b5816302f181a9817b02edcd0c08d26726c90d3839c24e4d42007083945c8d141ce0d72b0c809234706395a72789003464e16394dc87941ce173948c80942ce0c72b6c83142ce0e72b4c881410e17395de424e5e420274b8e10729c90b325c78b9e2966d0b88162e608335ecc68a1238a9e2a3357542e6c3470230c758b52112e2afcc98d2fdc00c30c141916cc68404605334dc85c9169814c15325d645c70830c32556c1537d0b8e1059b854c961b629009c3e620864122a5a43879c1e9728a8283e2f481d39313074e509caa9c767032c10907a7294e5b9c52c041e19ed820034705470ba8244e8a8d354e529c9eb0a972cac1890527149c4e80f38453132728262ba619f078e0d40528052e0938637024b831861309b82e1c0a4a4ae094c045e19ee03ec099c179801b0137850b011705ce0a1c324a6694968003051b0e9c9c908982abc24951e2820d354e534e22b08152ba42e909361bc0d942890a9c166e5c4053e584064c14709260ea622ac34446ce15b232d04891a5012346a6064d14272f6466b8b1c2b304930b6e546012410e19304eb861c10d1530c904050d096e566022812543290aa5324c4d94b694b050aa42e90825304a652835e1461a37cac039513ac30604a81f94ac80e2a2f445a98bcd935218a52c9c3c50820227829218252994b898904a53e0a29859a3e4c5a603a52fa5317020e03650fac285859c2794d02879a1b48553149c2894c060f3011c334a4c388500d503cc8b921820074a6b4012947450ca025e812e802d80554016c015402aa015a8029802880238053c0134012c01ac02a580514028e008a0086098702f9e1660c880e1022a8a9a344c25903e7811646a702da52a4c62a89902278c9a27d44001c708273058314a51708a509a52e2c08e284e1a9059e470e154822d09395030c1c04483a783c865870b9983d317b019602cc87c6092627a0253a384046c0a1817cc0c18181812b02d5812b032d8c0c0e605d817d811b033ec98e142e3024325434da39484921630282e2f253270b2707541f9e0aac24546698c53076ca4b8ccc03880457179e12ae33a03eb003645460aee0857172470c30cb605350b3757aa166ea4902181e6816b08560c38605c25b8aa6853ea186a146a0f6a928d094c596e6400d30408460d186ac2003305182cdc5cb113841b2c364030c5e09ee09ae02606305430a1404708767260f3039b225833ec19a628ea152a19d50ab50a5b19766a9091c176a94bb869c14d15353ca8e122670d9309785c50c3851c3360ac90f3a5460b3548308de14ac14186f885520f5059c06401e60aa61bc048413ac103021c24a05090aa02334689075b10609e5083c691204f703101a60b3c66c8d142490630667450e0e0826905305c525a70542165059503a9839d2e6ab050d303eb01d30b6a13b40fa48c005385541172bae49c51b385ee8b1a2992073959e86a50e2e25a4204034c82e904305bb048180e503880e9c2a3842e0a4c073b3740a580670affe2c68a9c2d745e7c0d1e2bba235c61d80003060a355fc82923070b376eb02384d410de44ce1960cee009a393c286127892601ac10d2b6acab87941b7011c54e029030f0b78d2e8b2e048e306163c5b5228b881814d83a706300a581629227455e8c8c07260d345aa8b4e089b103a19f05051f38404822482fca20706b208d208f2077207ff22b10821632061205f205d20ab4829e40724955886680669458240aee064904f2494e8257e896b4434a2186217e2182217a4067490006a01768158804f804e80654028e88802c78054805c2013a0126e860b011a012e0186f1215c8d9701f6e047803c805b9c08b003d00a88c5a3006500b1bc351e17600ea006e007a0072017cf8c97854be16778633c28bc29bc28401014113d0e2079523c0fbc29493ca4d70493219638a00141306001030022010838c00f0a3040018a1080480f43840820871a7cfcece841834feadd00d3227bb8df298c0b46244c8698c01124864062812347b2178b5082e4c811ccc7e72604cd04c905865072047543a58b903041b204892345482a5073038246523444111326463041a204c9109b9b0f1071e4080a28219224c911022822024992244708a0e7c6033f375392241982882449861040072c50540125489270a09120a1c091238a8e1459a00246207192ba79a299243162882224451c418284023c3752fa080a2831e2c8124b902441b4c4103ffc66038d84082547283932c4112390c04888507284018a942471041144609c9b28451c4104922270dc4069264b20193ac284c912488a2839c208264c9024c0de3c69274620819720195a7204038cd81b27fa08922490247100208a4052810a0c0144cf8d069ac91011482c40c44d13cda448099225482ca0c488df202931820228d49726c208264a8c5852a40492234b24410289218e2c415244122392101a22e288244237a835da0912239a087182c488052020853a4333b141a9d1431cb94199a12f706488a2218a18a2084901605065c08011498630a2c8082546c8a0c890041148944012834aa3971c21000d358656720412491c29228911494ce08892218838620412b84809920b540049028a40524412498850628412050cb12409cc8312433341624491114b8eb040511243d84085a1951c6144d1104b9228e248d11149981c3102093cc49224b08ce9033d44c4114926700449d110451891648826a57e48924c608822254950e0481111489618518412238e1ca9c97195c0da2286165ee03eca3a090909bfa35843b12db02d1e12cf92dc7befe1e070ef3d4e460687e338ee8a93c628e7b4daa2742be5443867b609a38c55ce5aa22894f401d62ae935e7253bc6d930cabee6359bbe17e39c94ce6c66b3d639698e19e3c4b039e78c315e57d3a672ca1d51f66c487bce481bf675d5da978c3d3bc66b5e59d634d22925a53de38bdd13a3578c598cd7451bc29e3d63a4714e08bbbb69379c35462a67acb3d6963593dd52d2d9fd6677bf9e5d678c595625bdaed85d6ba518462b86454a2336a1a471cecccc6815b625a385513aad1a69a431d28a4953ad5726e345e915a99475c648a79cb51ba395c658a4ca6eaee98b6fd249e37c5a849376946f3e08b3293313e7abb39b62592df59c354a3963acd112e0d69633764f5abb67cfee186bcbd874bef8289550d2d9dddd1a6d9b8e594ccf386562ec9e337657d9b3e71523bdbace39bbaf3967c79e39cf14a3a4b144698c945248a98c924619639c13764b2963ec5209a3d89c1b46bb648a447068ec81079554768c0d1ba6db9a3bf1c6536b301d69ecd8dd1da39415abb56252caf7a49cf43434343426d39c3de79c3dbbad1863974a0de78c39a21c026dd8a0dd0d23edd8d69cb1299d16a554522aa98c3036ed1969cc2165a53da594154e78d5965885f5f974539fd93042181bc6ae9d452ae3b4e96aea8c0aa157d3be68103969b7a413ab55d29e2d3b769d93365665d339b318af189bc70068c4b098180ca3514a0cebae526699cc32292386c5586995b5ca4aa9acb162f492751e93326231464a05705d58c422166322966159c44c52c2c6228df38210ce572114a23737373793bef9669c11c649e59c53ce599bca96598c31c648e9ac73d207e19bf1451495b49bd2a651a2b61863948fca5a258d7176a5904689a915e39c51d23853d3c6d8b2696c2b46d8b223ed53c738e98d91c69918638cb17bcecedad431c6d8b25b42d83576ad97cc6c648d92be4863a5d214218db14e5aaf8e32beae3433662f464a4ae793f549f824ad5276d74a6b954da58c36bef7ba9fbc268d70ce07e79b33a3339b336273ce78757784b369c719bb044b31ce39e7a4dd539229f5c8d20e5aa2a9d841ddb3bb69a4544a3a63376c4a639c7176d3d9b3237c31c649299434522925c564acb146d952b6ec8eb0d63963942db15a2995b3769cd1ea860d67c7287bce196b775f52d2186337cdb2ac562863a4b1ca482916df75c18861586c2cd248298d30b4bb2bedd81dbbbb676dd92d65b78c35f66c3a69ec27319ac5ae32bbaac44cd5b22c4a6b8489934a4cd22823adf49ab5d696affbc558bb5bca18678cdd1d63a4b2d68ac5c7184d94ca3925a5f04d49e794323e08a9a434c6186bc4260ff3cd49a10e2a63ec76e84c19a45de5ac35a334523a679d01e0e179f0c198f9ea9cdd7352ab9b52aa439573ce39dfcc01080e3ade7c313fe69b744ea0a99a16a4524a2aa5c42485524a3a27f66e28d1186795b12d4ae97c3de78b7176ecc9418f0ee28d864b2c39e202482e406d50e128718493a21cd50d35fc460d3e2aa0c4080b3019c202d7da07922648921c5162880be090a9c011498e5440891115a8c011496ae005721a0992251438b2e488a221883822499221960c51c484a766c766888821269024c9113b6cb0c19183a3e6c68d5544c4104c940cb1a4e848911117b8c0115dcd45d9508204092486b8b1f19312488a5062c41125460c6101222840812370b48f0b1851a4248925f707058a92c039b50f24163852a4c48825481c2182891117b80140114896202962c911475437d470a4062443432499c01124462c29da018024498c18faa981098f8faea1e88823ba9ff6310492255d0d92a123454a2051c2a3a6084905787ab40f26454c8c5002c90e1aba06258ca000922548fcd85832049224441491c4080b1071a42849124350004911a91a728a8658824409920a2cd9d9ba86229030618264091217388288234b9034398208244b8e0cc1a40822901cf131a4baa106248840c2044867090a18b10449932338f8b8e1861a8a4072e4882224965842c491222590e468a2044984691f47941c61049325489a20c180114c8e50e0882396207104490586587244119323454a200140132548626a5301ec95758419191d1dd5363aaa46471313e2e81dad8ee226c4d13b7a47cfc848c6a31a85387a46efe8c8c8c8480a71f48c8ca051b4ac23ba3aaaab2329c4d1333a32323a3aa2991046cfe80971f48c8c8c8c8c2e218c9e911126c4d13b825188367a42b4911114e2e819bd16a28d8c8c8c8ee65115a28d8c8e8ea41046af8f2c21fa880a71f48ea610dd110ad14747474752883e3a82421cbda327c4d13b3a3a8a42f4d113a200120cafbbdf05980cd101f5d8737d6ff97ae9d9d3e6e6c333562a3d0866721bf25e9fcdfa7eaff541306e45b0d7a152fbc49bda272261d93e71029c446a029b9e25ce12976eb24b88da0b12122e8ac1dc8b34cc5d8b4b8a28d696682fa2987b6f458e60d3212e9db34438b0e99a25e2e1692693e976f328d94c6ad066ecdab3de8640ed422e36fd6d441e15474d60d385d036de6cd6fe9ed9fed07be3daf8f584b12e073b7a6960077ff1bc27691f2e3deb89cc029cc49d14c5122cc04ddc49516ce9f6c9b16ddbb669cfbe6ddbb6bd75363164599665d8af675996656f9dac0bd7755d57bdf5ebbaaeebad7375c9881eee5bcfda8a01bf0d77920cc6804ff6ddb4cfd63ed62bec2c48f4f0b34bded5dac7fa90c6900a473fffa870f2f15962cbfad64082c05bb7ae351068bd752c2a64f0d036ce3279b386e5b3d84a7206ac2e2b254d06864c2081610cd75c87926018bb4ab06c42f83921b40e2d7c3de433f92aec2484cf8214e9240c6f0ec2f0d935df49b893a098827bfa004b69551c9368785eceabb50bb2f9c94155252233a84d2be5db32074fe16960d79d498dfe7a507cf64403bb879b3c4c27f62048ef103d7d94371761999181b3470c716f44b0875144fa0b2a38fbc4b20bce2e7c3de6b4f2c18ea57e3d66943689861f1dfac1189d3673ef27d861d6fa65ebdf4654f14dfbf4ebed2b6fbd1aec24ec38394646643ec6f9193fa36d5cad07c17a7aeb700b126f3ec2d5d270d9b44d1eaeb6c98b9ff0ed235f0b102fa37db4fea8556b7dbdd9fa23d2308c90c20823fc8312762d9f416b3d7bdb1078eb19d4de66fdddb22122048e8fb79b4715325fe9b56cb63e142312d08810b83e08e68763bddd3ce23721f3f1d607c577ab9fe1162433f5e9c97b44dfd442d60f468b4270c83213117aba1dd37e1dc3ecc9d2c08eda260f377958d360bf86b2f4eedba7b53b44ff1a735075dd7a63a687b3de82f484e16087fd076b7f5b90171483e0b3f9e121fa77b861da3d359087fb997dd8b26f9f3e07553fb87f590e76155baf08fdcb4cdae71fee2d4805eab54b734fefbaf9085fd7ecb37f0f8a9acdd885dd2c31f6eccf46981fd69e0970d403dccd43bb19b3441a661bbfcb12451cdf50b8c8e14824b195519be7dfab45bd4bf4b0757bb00fb6ec0decfaf347d6a351de5b27ff3cf91b913fb65ee185ddf51354618fa7c1b2ece6ecd7336a35a8ca9ed98733ed6f6bd85dcf6c63cd16454c9f3dd82f961eec3a1a1e371c7e375bf13dcb36be6ce5c116cd20ef9e6007e9df6d1bb79e309d0eece2ad1f763128b695363f4cf4be7cf9f205539b8b22eef7d56007dfdbbc1cece0b5d3753aa86a1c2f6de31ba83a8ee7d140228effc19de3087bf389ac08aecfbd1cba0b200fe2989999b141dde0d4ccccbc1a708f482221f5174188a06c2e330b3a864546d5fae5f0ba8c81fbf001b5501f7b39c84bebcea15f0f29d340fa0c40da4b610d0402c170bfdf1838c39b8d307cd6700c03ce47589a01cb9be16d027105963cfcce71305a4cb54164c24da4297792175a7013ede5d0386688ad2dc8bbc2bd5bf0d6468422bd676dbdf75e8def49f81eed4aefa76570b25390751f86e00b7ef815e021e178f343c2bd19814d1e966df311ee37d1c3b1db368eb6dba7ffa864930a969f9602dcd03c0fcef3b9aff06cdac648aef48fba8cbf775f7a9f44f111a2976243e85dfe4d81aa1396b7e959029793e0f91f9c4f38f7150ed0424fe8df9b023bf90870f94db902965ff5b9980ac3143950410eb270414212a27fcfa86da16791640c3ec0020dac800ba127517c84dea5d8107af6491428645dca0e42efd44ad94168850588f7d50f3125ffb6d0bb0a8a2979ebaeb00041ffeeea31254fef4fc754ae387752d27bee2d2d860d10e1ca169e00032a80712cdf8304ae858ea2f0828b14a4c00762d4000c422dd4cf3f401c0949e84d812a1e2cdf3af20e3d2a10ca136447624a66046ae01bdc49239002ce4cf0dd4096fce0f83c6f3eca4c703e4722189e9728124d232c7b33d264e0699d3e1be11cffacab84dea124fd05153c2f3dfd8a5e3aa0bfa02254afd4674afa0b2a7028499381e9e533c5935e254d0696cf5249009e246179af3061d4a3093fe8d1841fbc9b95c0f1d5f67b73c0b4572a51fcf2055f41c2f1400ba0b0820499306a3284aef77369c7ca0cb42049249a0c7c05a947137e804403f024a922f51754300d341942d7456a3284fa59c3f3dd3974f7c89d24022970d1c3579066a4400327b2808424d49709a37a91faf36679331238febd372060a8200517acf1040949a80b6003c34f486390c5b74eee2d183e8bf6e14ea2520696d6cd47d8caa216a978f9f9015599eba02ad6c3eb00819e502785e00986b7610b520497397ca882ff812a88e17f40a0c30741a00bc1f7005515c3fbd04022563d4c450d0c7fd281aa87aff71430d1fb82b310386e427a0c1c9f454da621b5690696cfa646b72059c0f299a5512c60f94cd286a578530389b7dbe75d268b6b77fc6c90ee0743af06bb796960f7a890f11ede823b87113ca250f220eb6702ae93a8848127ee2410a0813b664b775ff894c8847466a4db741b5bc960ec0770bd11e0084b796fbf3780ec3d7b56c8c3f5d9878fdecba1c59bd3a28a4cf9f9a69c6fcea10e4c3a27a594d249e9e97c9f76e8dd9e2774712426c5acfb70f3e1080ff52532c2fd0cfffac63bc4bda46c463a6dae9fa776a89e3e5a549138541fdf386ad4c63f9b413a9fcd67bd68e2f74c5acf54cebf77b80579fd6eae87b7c9c4d6836036b567ad196d8eaf77681edea254ce17c1903554c93f69f3441579a7a77768febd7106ed12221c4c5f3431fcc948d434a822b2701388e9611db22eebcdefd6e139a8da82c013861b914ecaf3d66d32317d36a1a5ef6d883c7c10a4f6bd9be3e71d92703e4805045b702781e009ce262cdf833b090450c899511b1b76af61972586a736be42553ec2f0569b39df16247eda876dfe3ead95f341b042154ac8c3f3f356fc4e6de3a19e277091c808430984d681d3b0c49949ce172fe7fb5a43150a5e21f0f191fecd0fc5cb53fa0a55906a380806412d593f80cb4c20e0227d387ab7c24e5e3e33f9406484e5e5dffbbd09640db3c62d330daa5045e2972f387ea808e20a34c170fc6b02e3e08eaf89ac6b4f185c3cbc7cbc7c266594f6e1dee2836094b6f1d17b48b20a55f16de33fe005a681aadce1a8e1f8a3038e9f198ed701aae4e36fb82d70fc09aa2096cf15677859a16a08bebe21100753f12d6fae58c234ece425ecdeb386df3387e3fbbdf7a40f50017a427ded6df0bd098197b74208e1103c50456380eb24113cc10fe9f019d0d3da52807b4810779208a0c00fbfbe790b22dfb689c47d698970f908c777034111c1b07cee2660f9253f585e2213eee7fe82733c7c50b40db5b60f07dcfbc3bd119d88c3f1dec0ee3da42d4fb03c05ea2e909084fa48b82f3393842afabe13b89f7503293dcb8eb4976cb78f767316840862faec6688b3bf6b361b61ede152666284b3cb63ef0672bdd43ea59bb3c76fbf6cb7cf76b3f6f8a09811595fbe7c5903cb6b361f0979996d8cd921799b3c4c9fe921a68f5b1179f8c6d99fcd0fbfc74d087de999451191a76ffcb621dabb7d9e6689de175c5fb2a822925abf6e7ef83a66f3c3d8336af3c3f4dbe56644fe41d003506079faac33a8f536647b76b3c459844d2a2ebd74df464462fa2cebad74f3112e5db34d2ad69ed9fc70f66e20dacdda9300c1dd3ed9b307c5ccc6f8de4a9728e2b705a1df6ca68fefad883ced024903383bf6fedb86bc2f58bbdd3e39fb7c76bb795c8fd83b52fbcc5b36c33ff8a3eb4d35b25e020d2c635ce22161da0132307d7c6682efc778186f86f277085ea2f705472bed10bcfcb3f1110b7c847f9f1b117878898e9030aa883c3cbcf908cb370e825947a0151620acd7c3bfa40854efea210959f72535ee07718d1f7e60b44fbf630adefcb4e0fe4b8aa97e7e48b8e7a51d926f4b038937cbbfe7adc84322224f6f8e971745047e1e7edea1f88784e163bc6f4bfbf483a0113c92306a21eb25b2ce00d7491cf0828f901e12c6de1168e6f03502c91c9e8b40a7c3d344201b877f048a397c1781600eff1381b8c3ff8840a6c367bd0db96ede7ebdf46873fc64a1e09cb350ba43e1fec4138272df739385627328a89b3e63a1a00e65e63b97b150e2a1c81cc76d58283c0ec5c67bee2ae73d87b1353a77c5837acd5dddecf8ca5ec7a13cf16cbe6353739baf52b7d9f9cae63d0ef3180ba507c75dddfb9cbbda71570078cd8ff7fc3d5fed78cf5ddd9ae3dc15ce7b0e25de557ce7f378573aefd1d1f92ae73a777573739daf7aeee3ddada9398ebbd2b92b1aaee317c7ef573ac7715735aad7f055cd6bb82b1f9ebbe2f9dfe33c77e5f3d7f0d55fc35df5d8b9f73dbedab9c1faf88f8efbc4cfcdcd69d0a1e32b1cd771573738dc107d624cc59a1d3b3d3a3638f7e2b03a28a09a9b9e9c1b14ce8e47950ae5e3403b8076542a95aa47a5c2c1c606c7b53b3a37efd1c1d9c9b9c9c1b9289bd46ddc517383c2c1b1430584a346c7265ebb93ca51a97650f771a0d873a0ab542a150e3a3df7f11ff6070e20a0af520702da6193f2711c6c70a8f9f1e3ab9cff50fdb8c94101f500451c70f80ae738e080a346a5ba8fffb8d9f11f3a2a950ae82b1c2055cf6d7048e170205fe51cc88f1b7e7c85e33f5e0d3f7480806e7c5cf5739fc357f7393c201cbeb2390e770584facf57f6406aa88186af704e838fffe8711acee367e740fee3ab9eff7837a8eeca061b7ec35da96ef82ae737dc950d37bc86bbb2a186ffc0e183c75d01e03c3c3b70eee34034d0a043070f1ea78186af52a78186af6c0ef41cbe8acfe1fdf81cc857a8037900f80f90e7f095fdcf573aff61c35dd1705734dcc78786bbf2711f9faf72eee3f355cf69780d3c78fce7aebaee3d7abc86f3f8398faf74cee3aebafbc4fb0ac7bbfff8aae63f9e0ae8ae6eb8e1aabbfaa1faea57ddd50daafbb8ab1bfef373a0afee7d7cb5f31cee0a071c0e80bbf2b92b9ff3d070573c78dce7ae68380fcf7dbeb237884e59f7b92b1e3ee7f11500fefb43a7ac03a9e13ef1d3e3ae78dc158ff7b8f5f1158edb43a7acfba8e13e1ed429ebffeae6bf2b1c72fee3ae7e1b70bcbbab9cdf55771c361cc757f138ee2ae7a7e1ae70dcdaaf6878ea0ad129cb3ad05da952bfe1ae7cdc958fdb0080bbaac1478422ef0a0b10f1392eefe32b1f77b5e372309779cda5e994f59f1e34dc950f771e353c5ef3158fbbeab9e77efaceedbed2b94a74ea5e24523befee4ae73cf73aee6a47e7e6b82b2cf4f7ae706ec77ce63696e93872706ef315ce5ddddc9f4e595f996ee3a8fba353d6639ed9d816a2f621e11adb4296cdd7fb712bf29e1f12be0e37214748f87a6f42aed707411b7be33596e696d54e6df6a0180483208d65028bf516ba6199c042645d260fd33339c2f32d54b2b97ebb28eb0f094b249c69b6270c2ebb76ecd9d332fb90706f05e82f38bb43d96dce2e8ac87bfd7bbd44a822eff5f5e623fcde1865fd0809af90701fb33d4be01e126e5c7fd9c633b6630a5ec6d698823f592ea6e06d589a98828fb18f297818dbc5143c677f620ade647fc4147cebd43bf49070e730f239b2e0cf10b2472028a64379e2fdefff442028d6a1cc9cbeff230241818752f3d2fb5d0482120fe589779af73b0241a9b9ab98479b43c1f1ecfd1a81a0fc40b9f19af76922109499bb9ab9c9f41a989bec67be9ab92b189dd77c3573eda643897755ebb9bbe26ec5afe25dd5fbc4fbaa3ee730dfdee7221014ecaeb043f8ace6aeeead1ce739b45ef3157ccd5dcd79eeaeb0735fd53c3b14799bbb3a9d1e7357f1d75d5db7d957f6d95dc5f85576d46d70dcb5bb9af3d85dc5bbc239762e9efb4a3b7757d3c657f3a9ef7cc57de7ae4ea7cbdc95cc2deb397775cab98c25f39dafacefdc55ce1573beba74ee139d8dbbb2711999a36cc8c8dce7c0b0e7e06058865d56a66606267216bcb09958339969b25383b506c604abb5b8c861964c36b5999a996a4d3013bbae9871960c8cc6cd5c5a0d8c052bc44c76cac42953132bcf0e2e83269bbd076607e3e1b15193c52b95fa0a3e95ba6666ee3baebed376ecf80afb8e1dd6b24cbf4f69d853b3ebbeb2ef78ba6a92e17ebfa306e63bdef3d5cc7b52a9afb2a77652eff9ea9a3c3c99fd7d3765de411e1e9e1d5f59df71573c3c30f13d3b3b385f69c7b97e9fca394e8e999ea7beaa79aaeb747ce7aebae7d879ea2bec39bee2aece6dd88035bfe7c1c1798e9c9ca38e93e3385fc11ca79ee73cbe329dc7fbb979cf57a6f73c9de7e8398faf669ee3abfa547773737f93facd57f637efabec37df41a19e23e7ae70ee0ae7398eca39ea2beda8f7d5fccebbafb8774f07cf57d679ee4a07cfef5de9784ecebbafe2ef57d779dcd58e1dd7b92bd45da16ec3c66feecac6e6a8bbbab90d1b477d2573d45dd9a06ef39576833af5aef39e1c5acc71eecae6ae6c8e734dfbfd0afbbdab981cbf5f6517894ebdc7bce72bec2ad1a9f79ebbda719f78a9ec3b7785613fddd5e9d9ceb3afae1b44765758f69bbbc2ae5dd7beb2f7874ebddf7c25737be8d47b77573c32d77157f7aeee77ec75ee2ac77fefaab5f0840c5e7c410118442045c82661035020a10c5d300194240841b10faab9d5ded5ef676e77ea1dc7ed98eae7e0d4fce6ae5034b7b9ab232d6c60c616315c00832fb410aa393a81069e10821f38810c62a840a8e62b984b53735734b7335dae53ef376e8da9fecc57f15aa053ef337725739f784250607eba2bd36ddc277e84a0c4c7dc154ce9a6bb3a6ac195335c69411a686cc10b42b1a1e0c5062c08c109d2f8011984a0c49bbee2ee8f4ebd9beeaa747f58f7a753efdba58157884ebd6b7795dd273a2128f4d85de990832db830033494e0250642d77de2425070f8400c37e8c113a294c10c2128f0d657f5769d7ab7ee8ade9f98eaafe67da7dee5e562aadf374a3d1f2e6459d61bbc4336c7bf67415095b5e7937cff07a8cadacd2b1b04c10b5f98999991f9ccf38debf0e3c79dd4e01fb7e199876bef0f00aa5027ed4b4e43de0702aaf2cccd191843194318838c8c8ccd659e67bec30e7762c23bd860c39dd4601b0e800bbddf03549d4ea7d39de4e0d383bc1f045465999b31b0021f38c10c1b1b1b9b9b9b9be71c9e7b0000007752830170fcbe0f50954f37e7dc8c73338e9b4f02781f025095836e738d52ba0414337c298312654cf144cacccc8ccc677070dcac840ba8f002858c8c8c0c8ed3cd5610a21042176c9e651e80e799dfd8d8d83ce3f0ece3c3c79dd4601fcf409e69a8a1863ba9c1353cdfb0f9cd56153c80c205ea031d4c010c730c304081041c1c374b3154218c22003dcb3c87e799a38080eec484819e7f3cf3f8f9b9931afcf37c236af152021bc416fc800c37803ba0820b5e3c2f44410c29373ccb1c87e799ab9e6fbc238c4003523c276090e4e5c84a16664061020b32a654d1e359e600789eb90dcf37a618614b09b4a0010b58b012810ca4f08281a42c7861049f6799fb789e390dcf37a2f892042a7246a0c509507094f840074420039465032ba2d0a2e759e6ddf3cc793cdfb0a156bca08c306e726e9e25e0628211e4e0dc2cb3400328a88183ba197a39e30759a49e65aee379e63b9e6fa06c6e865c8c1105149b9b9b1f15558081859b9c9b552f10421272706e66024b0a5630841ccf32d779be8183ba7995032412800165737306ca70852f43b8712226376c6e6ece00d21424689939119399dff8e926e7660cf8600853b670e3c68d99df783edd3ecb3ce779e6f7f9460ccecd4bf8800c2b00636666668643dd6ce5a08c103c017522262893cdcdf30a3f50c2183627626273d44fd7cdcd5209603c010314ea4e6c30ea9989cc8998c8dce6a8e7d3679e657ef36cf31bcfa82ce666d8852ac4e8828dcd9dd8609b6726a71331395de63695bb195aa90110bc909191395dc6d24c37f71a51b410c2e9743a611afd12edbad9e80c64004194e7eba767d36d9eb9cb3cc7d4d06b279a5f42af69da9de460edd9cd46556c41093eb84ec4e4d26eb6314f4fc47dc93ca594bedebc9ad2852aa0613299ae9b6ea637c3cc39e7bc75f31252f0e2812bd775d55f37cf9b33ec6625a294c10a6bd45aeb73cc699eb1d3e7cad5dc6c4541861da031001b374f2b68600620d41331a925989b211542e8000feac665373f283c8083266aadf5d97af61c731bcfd86b9e2b11cef4259c909b99484ac112aa582762623de63d98ce9de8fa12d3398ebb931ccc7d003763400c2f70b104ec444cb05b8fb999bb59c875d389e4975c37994ca6976e5e22046b40a9c2b2eec4065bcf4c624ec424e6d8ad9b4d370fe0790991fc75a2215f227ffdbaee24075fdf6e9e48e882055ec0b03bb1c1d83313ee444cb8c71c7b36bdf4cc7d7b8e797dc66ebe6ec69e9938c16c607927395806f3154311c9472ac0f0f40518de25c7f447985e987576694c608137c27e6145b0aa5df3c980eb242fb2c0514802b05f9789ebd815d042d7c5023fed86800df02084dd2ea6e4b3cdc80ff51be041e8faf5fc2053086e45302cf119dc88c0600dda79ba1181c1f1d9a541cb1dbdda44efcbb4dd3e4f8ba5ac003c6f56d21e7c102c0004707e008eff91b0d220eb87a531088db0c513b015c10bdec19d54042d45c82293da85fdba3f8f86fa20580587fdc2ee84c32e8a084442c2f1464848f87a5b1119dc44e224d7513d34be6e11ce649cda2504227484bd95604c596682818131c53ce34c0f823130a5125732954a968b8729a45d326c83557b17c10aa601771211bc7021c296a8555b352bb8ebb562ec99d434fb30c442a856b327d8617f2fe0aed74fedd633b7f9d09b0fd90d7a34600f829ad50176d82dfbe347041a004c61c7ba0b8cfdc0d88f01c00ea3c1d87377a149a842652f4216dc4945b001ee24227881ca2e11011af7f070c40f57abd69abdf487b752c974b311ce6a6820d9b1d344a098637f047a42d8bb08c41dfbcfcb41db388bda622c6a8b89e1ec13ca6c5cd33218ee41d046cc456926138c29e34c1917ef70238035f185dda1de42b76435839917983e2260817d702711e10946236a1a077126356a2f2b6157fface0acd3c7ffbc1ef53c6057dfc1aebe3eeb22900d30555fb30db876b8b2a0b30176b509375f9f6dc044a0da450421e0f862291f61149188b1478c1d5a14ce2c0a1ea5fda1b47b450a0f42db3b890841c09d44842ef085dd6c84afdb40aed7d708c4bd9e8b404fa89e2602955eff9703f6fa0cb3193b2abb132fb01323e09245657f425088b3a8ec1ea0728ff284b83f7b5a89c9c357608ed9ece4081893b8b7203f981e044b0f8230d68927c45d1476894c5ff0152936086d77c2b486509427b4fd49355d27aced10f78680fe92069213fd250d2424a46b02475e4af0cec5fbdb0ac0152062eb751e4d38c5c8f0cbe1e197037c2ee177337d06ed50fcc35cf002e17c276939037792962d60f87a73120d5ba79695b8832a7afa31b464a1c50a2d55a4162d1bf10d54d11faa28fd692302b1a414d35b0598d88262d0f2045f2e5b300edc4943c882876045086b609d8ee6e611bfad08bcfc0d54e5f83b54352d50e0296dde0a100fafdc0a0023e6a02ade21fac633494b1418d3dc1c62b8c9735035f4aabd1c3622f0f1e1f89703c4b1003fb8dbe74528d4c0b30bb8797006be183e33113d2c8bc4c39b93a0c0efb02daac8ec027e8f76083e3339c2efd212f5972f5f70c34e8ab44d64b0849d9d5dc0cf3691c10dbb782d8637c36722eff142dee3cd0f2e91181e5e5491778b32dc2fca700fa6e022b8a4e2f7775144649619e03e0c6eec82c7051938fee480f7e04ee2220bdca62dbae0f88b26e1f9eb700b319e763510faec6f33127ffd6d3d24c1e157c461ebfde09f8b5e0f6e46ae5f17845a707cdc881abb8c0de9dff6faed70cbfc3f2b9c757e6a9a162bacb97d76db505c48417ddb220d1c1f37ad374dbb963db376d36c49cb329c9c1331e1e4985e966ddb9e6d0f82a852dd50af47a12e1b38300c1c140a8542591c8ee27ce638574015cee7b3130e544c038523db6c6812aaae219b5fffc1d9e636bf1e7fc5fc08439c5b38db6fa0ae802ad4e7ad2d4896693718769ccc2e2192e53c339dc876ed594ef6cc74f336050af51b4bf4308a5ec313067589da4ef3edb093f869afc6e6876dde9b9114de6e636b6a686ed8590576f33336a2013b189b5738c6e61567f3aa64f3eacd2a50f5621a78fe45346018f86d17fdeb815ad81573fbb6bd3720fe87c29d84650c5c54e1c28a2db2d8c28a2daa649ad69ba6dd6afff5eb77754dc353db9e6ddabb02aa1acf6fdb83a0a65df5a5d7974a9fcf4aa5d255ca2eedca82981e04b9cb2e21725dbb340dbbf6ebfaa561d9b3794e8127872f93257a5aa9b4fd7dbbef0ad8cdfff67a1054e2bfb77f48bfb5da9fd5de758b855e7b6f6e41e82d7a3885dfa55b6c05b8f075b313b803d2b3bad13f9b95c0efb74c18d9ff4842bf4fa25ce8b72d444f9fe7145a76f38bc7e614bd15a0c3708ca75b4055fdcc730ab80576336b78be2c78be28dce19697653e2cf0e4fec6f3ef8aeff04fb90161ffc70d887f75ff6b7f3ba668120a766864bd441a98152c6dac2e38dec6668851df50ffc13ff807f7867a1084364be0e87f708698fbdb8cd83c43ac41eecf6a371f4121d41ee16751df6cb639fc761c3870e0889b900ee3786f40e07816351c381e044da61c9b93939373b805c9d9b62ccb7620068e8fef6efe329c920dee242c4938b3d16ab80fe17e849fe56c7ef95dfb16cfd0e89c726da4c964da8264df7086d2def67eb319601a60bedbc37ca9aa81ddfcc66f7ee3e6e6e606bb390ececdcd83e06f6e6eeacd4515c1f1ec38b22c2b955e1536b7729e3de7c22e6e9e5187cf3621f1a8876f5ee31938733392ba719cdf384e8638d446569a544a3838190e0e8e2d5d388f9b9114c6b9a822342f9de6a567377689c4372fc95346b1c84aa5d286692dbd7451456abebde6dbb3cd66bfb1153f2b5095c9e05862c86bf6e12d7b38c3b1440f67d7b287e96f6c637a3194b57950b4b18d6bac1506ece4692ccd023bf91b98cd2b9b57d7a452a4c3d9451599f9f6995bd3809dfc769f159988b3250696af6958629cec8bc2416c8501558f6261c3be28dcc3340b546d7952e90255303097bd7e7581aacb014110da7b2dd42cd412e43aec02aade25365dd34d37bd37075cfbac298bd74ab990bd51bbb6abc0a6c72d88e9cf3686b18d4d1776013bf96725abd5fed5fbeced2576a0650755b448d242ca1652b4d8b2032967601d8ca1832d7470850e4080b318eb596799d61b77f30a737fd65a2917ba577bf6aeec8d30a1863770dcb34cb3f28f7b99a6d53a4f2deabdf1114615e14e3f848b67d077f30abf1fe1b705790f8af55d5411ecdbb16f774e819dc42e9fe52288b14d4887b1f716247bf44ffb7ba797defc6e11c4db7355237b10cc20de5efab3b9e68ae935bb848876ee4462ae714b8870873911d3b96b37d3c7dc869d76ed6689616e267a583b7773c38edeb43dab11edd018d1c318463723298c5d5491ebf5d78d5db029a0aa5ede2657359e15d8c967366f051cd15bc10a56c0bd3b64bdb1b41e04a370399e01b5c83fcb5e6805b1b072042a90848c64171f98e007424c2cb13a12d2f9067e84a2fc0861799f53a02a9e01550f4f811be7e805432d581e7a912376c901b5c01d72e45705967f565cd8c53dac02ee70ffaae0c6b962797945ca85ec1b4b14b587f8ed60691e0defd3da348f776f6f735c8bc9231cf8e30153dfe645b1813b29075be07e63b8937200056ea41c20755244e3366f031cc49d848333707338c608a37568a1a5599675c30c2a0841091b7710a2fab418638cdd952aa4c3f382f6a20f82517b7f1236bce1cd799f95a9adb03cb4d54ab9d0756955ca85e60ef5aeea8dac37bc014a35a0ed57db42124b1388832e7011248a785ea29851ed59799b91149e16aef83d1e4d883d79fd5ac0491c6081e961fd410b420889851489a73c7d10f10656443cdf41158afe07cfd6d2c3fcfc0f3a78f6e0f920ba1d785e08ecf31688404fb060774ea18945173c6f03544d3cdf7b4f876e42ba0b1adb27f6a3ef47c40386ed135f44713fac035544ef0b7e9f4bfa4514d3bfadc811221c443ce0d73e6f1342b72196f636024008730670fd6ac50413985e46f166234c6fa6ef78f87ce443b543a744e0cd4ce0981f8e3f54591401e023845b9158e4d15be4d14095f5f99bccb29d64032e98da496f7e67c0748de661712788dffbd23cfab8371f8e7a802152f3804de07718bd5c1fc8fa51c1c937f714b6dec30f324962eb9fafb53387e9738b81ad0b0155f907b66efd070db6ac0755eb3d44a02758eab55e04048a42d68380aa4eb2c1146c1d02501583a015c60303430b31cd16f83a9688de17dce7a02adefa09aae42dabbdc4276a9005eae0781da8ca1547f8c6f13e0da41f73ed7ac3e0b2c4f0e5a0037bb27e2ae03a89066760d8493548c2b86a3ac0471a9a9b0a81a41016ca1e145cbf77f4e00ed98b828350700fc38d88081e6c545530e346003e03989f400f60be370a0800036109202e483d80797be044c71ec4db3135024eebd8d3277af80676ef2b68f48e5e7c1dc002cb635564bd847c9627983e9b011a587ecb020596cf4cdfde3fd1dc5ca7832a7a79795dda2f4d7bd534a215d68cc82c6ba1deb2215411ebf39665fdbabd1520b3b092f5faecc2def8c2ae90faeb97f66a1fa64f08f66b685a18766d46e4b13b349fe5991c61faba19617284b50fd1cb5b37d36bf73a3ec2d36ec7ec11aac8f5edd7b76747583bb5264b6dce1e2f3bb45d5e37d9274f9e3c313d4ab78f0731fd138ad2ed23474cef130a8a2d94459c8fb41e2670dbe3b7b811c94e6fde9e5d5476ebf37023b25d54768bd4d3d78c5aec56b5866a0162b52a11f9eb66fa4c3bea7ae3ecd4a2ae2b643e7b76b126241bc270a6d9edf6b944efcb7523f2d9cdd829a60f3f9c99fa557b39c02670bff463c30f1da0aab1d13bc26096465604f7de9d99de14aef1c3fd077fc8a0171c0fb9e0187014671a1c0f83b385e33197f612a4b9f41618701206675373c13509cb476b04976b9677052771ae48583ebe66a94151ca27b797069df3721621ab0d24de18af6c20f1fdc6f0de9557fbf45f6c2033be581fe9237db41e5f697c8cf4319e42347a527a94fcc310a32418e8a77df4cada3e8d65271121237a0d045a2f5ec013da7765fbf4fbf3b281d0f7670379d806d8cd7301ffc06ebeb77c83e763d6de941fa8ca1a9e40d8e77568206f9ffa791e5035ff03aaaecf54bd0e04aa305533ca062d785e83402798aa9f473590f77076d99b883b49066660ab677dfcab59c0b5be1e65a1ac77920cc8c09d24032ce0d3756f60572d3bdb87da87e314594f18ee4230fc60ec6b257c4632eb99b505d1aadd4edf36d7bf679b1522a4be1f04b7a1fac69d24032e78b60f15025fdf163eb315feba9ed9ebbd0de9873b837df3c37ded19d4368be167597c014aef9b2b56e289069a40c2444bb6ed6e4b4c1f62d25bac808203d8741b76dbcdfdecf58906907050ccda362ed9ac0454026befbe1cca8464efec41306a9785dbcd0f6f4230dced93b7678d33a95d16beb721d7a185b53b745d17d6d8aa561e6d4f66219f69f0fc99f33f383c2f9ed78140506826c9200b3cf13c0755f0f327a88a9ff31a54e9cc3bd4491988524e19a50cb088dd842014e086a47c386e45e42462511908cf2ff9c1f31299a4b48de116245ebe5903213c2b585e8fb7270cee59c1f2bd442f813d9b5a696af0b51ec36a87b16adf318b3ec3ecbcd8335be726643bf668eb359b3d28d6ec59c9e65704317cafbfaebf7bbdb720d89fad370ba1b1f1b3dbafebf17a16adf586aa2b5cec70bc793e7b6f407030f3596fdacd2bac61916bb803cc5d1999def006ecab8637c4738f979b910ebffeb3d9350bcfd91632592cda9fddaead98bd3621147b66eb8322562f68ad5c04df662445047e5e6905f7b3823b87513cd22085e2085b45f27d3391f91e6d5ea99634a98f2f92a7cfd24887b351b459099cfbd512e1c0f5bd19997f37c7472c4fc0f9084b16dce1f96c6a562e82789e476e41e26d52efd06dd8e5be65e7e3568407c76705aae68b20862772fc8870e0b7c2749e1e6e4578708e970f8a34c3c74f9b5738f7a58d5b910ec7fbacc0aedf64622c9691d5d74c621be1bbf941916885eb7befa6892f9965bd777311c4444f0d4c2fad37e1701289d404cef044961a4d7cc14d2a86bf6ceebf9b39fc0ead9621517da28126f09226145f6f62612647f8928799c8f282e76111248a985e14919784e3e1f54e1f6d1388e533085ff380d45e5d2fb4f9419b2febd908e1cdd7fbba56b8de21f8be7585f421967728c63bd487976885f31fcdc24f115ca6c1d9bb625dbeb5dede33f81a966e6007af033beb364cbd7338d3649a2bb228829334181e5a87d6132c3b185e83405108bea1c010c33f0d77d215574c087ba07385941f1f54efef815f0efc7e82402f0664fcf85002420cb28881151878f1822d807479cf8a2af07befadf380d2a8e24a1738e227df5b302c40920bb860f898b15f8f9b0ff3f27133021f2f6d66d3b304ee0763f60767a61ffcb621cf07667de0dea286fdc7da8cc4e78787b0c72704071cff3621d863665fdd1650cf44bd4c64559b5b114c7bdb02eae9b3b73920ca13aa6722ca13a2f44cd05b5b10f54cd420ea2df9620ab22c387e45371758c1f1711e3b85f9bb30a7d6897afa698d30a1f96e20d6e935c28468dc8cc4fe41caf5f9842e8b8588079c8f30a704873d8a752cd99130a17979d31bbb800ace32ab04c3d9354b042b5d6e42de63de0d24ff60ed9b1d4a925dfbf6b809b14ab26f8fb1f908c35c1491f8a177d3e393e0acf6de7c7857de7493e070964848ef258bcab61688812deea42abcb4400bd6c19dd4822a5a00c5d4328b2a6ddbb6595a665159c9a2b26d6edb8360666d45b64e6a0119b808e2786b2b8221a085e875a2ded5911076a3587f4273b357a458dacd1e84e75dd179eb17bd46739e7e65544faf940bd1d7393f6fd198cda33269c4d515a7c4bca8ec73febd8bcae691150cb720f16fce6a44619542d63af907aaa0e9464108710bd86e748231db63626abed1f716c4f618abbd1ceafb41ac9810da01020a71520382891bd7ce04f71bef0d881bd7eeaa746ebeb720b8df7810dcc28224dc596b7303a2e630d7ecf69265a2e6a5cfcd0136df4e2d103587b9abd24fd7b3a95de7ab92cdb7bbaab956b22d446399d06e731dcb84cd6b7eb24cacb4d7fcb2f908e7b7e23a8905597036ad120ccf5f960886e7d47e7a96bdcd01a59f6eb24c946e3a8c5d950e73ceae4ae7de9b036a6ef32078b22bd375aed9239c1d7b6669d336e66c6f0e58c17cfbca749af70644cd6dee8afb066399b03913f74cd8af8c98c0f1989fbee20e73935dfd2b9bfbd5bd3d8d6562b5d2be7d257398bba2f96ae636de423a9689d56a3bb7ba79cea1d0dc80281de6730b827bcd5d1d09997ec3ae9e90e94e0b44691ee632c11de699a5c56d01da6d2e13db4bb7367a81a83913da4d8fb1abeda56bc4c48deb7c7bd65b10da75c2e6da4dd7081382f9668d3021ae1bc8bcf9075f9152ba768d3021ed743312ff0e634de7ecf6a0b8d92774ebbd2d80bb2beddb8d523a167a8792cc5fa7877903c96efec1d7b19bdfe1e126e43dfeb24ae6e983223659276c0e73574f68e732b1427d85f3d5cd73aef3fa6e5db34ed85ce737ec8ae6379e510f58c1fd0515ea012b9866fd52c075121555702701bf13709906cbcb670e4b791a8c91a50b1658f1b2022ed80777d20ab254510503e14e6201972ab86015eea42aac588195153c4103e3e04ea2220c4c4517545881334d9b1665dd2217a67f18c35617dc64585d306d32b22d004f926415b020617a0b539c95b46951f39645cd4b248e6106144898fec215f746a447137e80a46d4402f02489c8bd22a5749dbb7a42ab1c77337d75afd1764f5fd92be542a66b84e3da7f8d704491c28310942321d34d3f7100bfe758291782398ebdb146db4f475d23ee278ebb46db957221eeda6decea48a88688073c94fbf5c89d248514fc3edff809d15829175ad5d557522e6454ba7698dfb0ab996b542afdf495cc358af9e94ab9d0761b57ca8560ae51cc9572a1d2b5eb84e9cb972f5f84b6db31953b490a24fc6e91c4efd866a49380dfbd00f705cef34a169ca4b7e01f59c1d78600eddbb908b45d29db4b37ca769de041a8d411e8f27543c07698731108e64a299dbb514a170bfd7679eb26c1e1220e0fcd3ba480232113142a5d1a7175f5909038253ae9a2e64b8f72a1d2e93312985ed4bc4070ef5908fcbe5d26b66b97af2f8777695e8f7779ba39e048484848a5cfad001c8e971b10dbb5c70d08eda5bb2a5d3bdc0ed042a5cbc5d4fbdb0ed042dbad31f5b4db31f56e7354210785cc029ce46204ea962285e4a305821392ef8ef14b7e70bc44267c454adb3195858542d61346839d84dd297bcfd2746d01ce3eac35903edc4add7d7853bfbb3788258b3c583e1b6af8dc10be43d8046ed8c1bfcbf170506452da8be77ba3ef0c0c5fff84bcc3c3bfcd0708b5f77c80afcffa59e13a298a3170e9f52fcb9e16b720da1dcabe1db319de743376d33393c9546de959c9a2884824246cbac41143dc9b110e099b4a461e1236c10f693769b7d43e517bd62bec623f98d2d560479fe18702a64bfb70a9bb2b9d5ad95de9bd99ee1221a61391d8546adcd2d2a2035a8c408b1368c1025a717fe26c6a5336100bf727b50f436ac9eee010898956b876075fefa36235d696bc290f0438fe79a07bc4c73f7a9f9433703cb0fc7b0c3ad536a85a7040a0013280165dabe8250f380576b15f9708d4422df4d2c0f138b3dd25023d29318514819488a9c8715d5e8fe3facc7a665ff7681feb9795ed6399948840b3535615ebb9be0d5b7ff5f600bbf82503689f38041c1fa47bc4b7bc41b08b108a0ba9fc4ce072274dc1f103802a1bf0b302c71806ce36a481e36d7852229001b6b041a75a8b0a844e3596820db085113ad578c227b07b875970c01c4949583e5362150f9f40d5eb34706e2d48b14ae1a8bc2a38082cba805d9217a6c0b987582bc7659abfebf28fd482930da409d0f40bd69e6917d54363ed431a6b3fc219a7d9ecf07a6f91465b34f1552d073ba91dcf9b6974f0c6c0e51f3fa24c9243c8809c6cc83eb8bf93719a70d87a8e1af73afac8d7cb56cd72dd03e2784fed236f21ee0824d329791b70f8d0ec609c1981ba989aafb5eb70641c703b7d99a5f5a98140ed5bd7fd1081ba7b4bcb607a8bad67b11f2c69f764b9d6baa3bf6ced8ebe5ad91dede85f120c39ad0a91d8ba442b0c31bc41404ced1220da67be09785e01dd633ece8381fbfdd7b7239065254cc9c7254fb047a9424f9e44b990f5283f42f5d7233cd73ee62f0bd3374c1ff9069e00c83278fe79e1320d9e774951c54b8a387a82dde4da67fe5998ee310f6de02018ef19b843184590b54e965bf07c9675f7968e0b6e31f03cd00f52f07bd5f684a1e3fd4c877d82e561cf200db80cbdc0feb08761875ba00adbea310bc3e8b9019751ac7b72c06535486754cb1a8817a84203aade67c5f3ba9efcb3d7a51df27e49aa1da1779ee1126014e015f06c592502713035cfeddc2cade40ab720f562569302677f825d76fa03040aa28134d0ebd44e5f62ececd8432e3a9f875eccc32d50952b0c038a01556340557cedc279d1798669bc2ab625442cc62e73ba05b1c76cf7f28bd7b1f9e19d7a7560b7f3fae0154bdd3e3bc7ec06bd785cb8ecf4b9bd402fb69d9b5dc6367e301cec5e15f6f65ed17119fbb09c22a920512bc7b5171d37ff581eb07b34af34af34afffdf1604c77f7839609f474003b93e9f8056ede878ae3ccf1c96cf3438e6dd4056a7ea63be636377b547bdc481eb796ee07a1d265c339497ccea2563aaca4ca4e13ef37aa970f2555ece4dc8af67c77e3d3371303acfb183cecece6f7eb8f68ebcaeebbab9fe0d65a62b522ec4f3a287aff0bc4a2499230155d8e78b9458dd271088e7f31209ee20e5423a3ecf6361124ccd4b6b7aa56263ca94370576f3b20a3cb39c82e76515a8ca71201d9f9755482be415328bc4426621b7904939641559454e0155562e541389eb894cb8de1bcfedc588e9f53679f80aa8d2b90dfb5cf1c94b4ccd9f9e41ad07a87a37638719b22f7a78e7d8ede10197a397246b631a3b36a201a3f514b08bd1aac0d47b0267fde6386f35f05cd17cfe3d692052e2cde75f951e1e7043efdc87621ab09b2f7a388bd1de7c911232c2d7b3842222f1ce25deb999098ce958980576f3392cc40276f33a2ccc02a6661558e6197a51a4845d79b9d77ac9b1f9e11cec2201bbf9ffa8db1c0908748484848424050909490342f34a40d53fbfeaae94c6e641f0564e01bbf96aa5954b93f5ca4122a6e67f88a9f99aab977a715c79739c6c897a25e26684e6f5722b427324a0aae6f3454a3490c6f3742b42f3260f5f37c33ccbb18d71ec8d45591d60376f53635b5ed1f1199b25ceed45c69e6cd66cd818bbc4c2b9b770b6e861d31d00ece67fc05eafd66ea6d17167c56eae95e3ae9b6968eacd7fee7ef0bb75f30fce15cf0eaaba83ddbbdc62e14e19b2d6c91067ad21118166ae6535381efb8c7d9d8a9781c1f127db9dca178e31ebb9019759a5f75bc2c8432b0d04e2d783032e3e5a78cb0e891712371f8e708c0f8a5940d5835434101753f4342f380d7480e9618c5c04faa199fbc9acc7e571795cba8b5c2210f7ba78c15c349a492d463168b02d088c3fc41485480f22412488947507912290d6a9f893941b2a58a74a9519d54af66d013b7aba2f09a6e869a69179e64ef48a41234373baf49994703bcce66c1b31e79e79e0d2636e93876ddc0cffeeac02bbf821784bca3334ed51e142175cfaab1bdc8640dced136f4ea2835144269c7f70e9ef3679185ad152811db5c0050276f1902671b9e3b4b8bdfbb290026703ece27f6017612e7fbd3e432b5d6481814e0da4afc802b1805940d51630e90ca8ca3fd00b08f4aac0d3432d50553a0d19dc1898d29fec0f31456f95ec8feeee479508a443a7e2c3c8929f15dd058e373d1b6067f5d6e303aeb978610ab6228b2c22d0132c9de4650b8e72212c3e981e5e01819e103db402559de485272fc228d00aa8ba4e1fe3eb1604c60b817e5346d82fe6d00a3dac02aadaf46ed39f0d313ff85d08c08e3e086e6fab56ab3030ef242ea481e95f16636ce12509aa726fe982cad30255f94101ad442024628a9e6a3771340f0aa8da4e83208c3dc16e9eb3574e37592b450f976e1154281211a8762a9ebea3461ba31722029d2e042e2bed0f11881e7a29419c27d9b3e6b8da3e4055ae3d64ff01882020008168622aa321a33b03673f38b3defd5cc075d216bce03e0377d2169ee05adf26a566d95c6d805d7d36e383b3272da18850fc2ef1bbd9085b412aec320d76d9bbc2d077d2195e70d60167cfae43a6ca3e00a882cfde436bd1f24c8369eab59b6bb56ee6fadd4c832b0dce68c0651a9c1d6e439aa379f5f575bb636e2d3d64f701aae2b3ff0055f2591094a781aafaec7debd94f50551fd21959ebc059974952d4c09d14c58ba428636030a4d80237185150c13db8c188c20a36dde8e0bed640dd167dae4848484d08c967730b2273865f18f07b57a3b969382386f2f2ca0d64ad9323170cd120038c108481afcb1ab3d4679a7740314b529608f4c68029486fee708e59f2718e59681e1918fe8a5934796803ae270cee89812dfcc4801d15ceba539315f7f57c63a1e29f183105ff82e013231e5e4f0ceb660e47799f18183e9e52a181103d2ff20f5f9762409575f837c6e3d2401ac3ab6ab0b353462e5407d91be3caea33cb0a32df75ebefe788eba433b8e0ebc799d4e443ba49035f5e70bd84401688a9fa0b0abe7eb00522f6ccc9ebb2e0763d2259d7eb8b945841a01f31559ff4440baebd05d7e70705ae421401bb7a392f0424ccf57cc2f5f947fd0febd9ad5cd31fda36e4dabbaebfd85d2cf004d72741e28a761ecfb2fe7382400d0f55f1f53a50255fdf41d5d46ebd6eb542d3306d2942a4534a4a2d2b527a631306e6b0841d7dc38ebe17a78c314e24488bce59ab66dd645ed407b18d5ca5535698929f41a8efd7185282617252f6059304bbbbbbbbbbbbbbbbbbbb0b3aa594539a41b9103d6c21b50f7c53c6186504436b79f2453178a1977352db4f074abb7bca1863cb8e57905ddf118852eb74d279d52ed3a232ca18a18c10aed18416dea3b476983ba59336415f8c53c61865a43017562b7689519f6d59b5ebd12364b07b4eec59c25fcf2ea10a7e5a4b4a294f3437cff684c13d6c6daf6a6f6263c4f920f8aa66a7ac0da18c105eca04094306d1c3b5bb7da20cc39c9615ad3130b54b1eaeaf7ff55e7016a3b52c0b1f2d5455eb0fde2aaddb2d6f3007bba9cdf95e53cb9a734a29ebe3a4534af9e693f407f1c5a8c518e39cf1695035e59b31be17a3a4b4e3932fc207ffde7befc507bd40a57c53182b9f64fc694238352b06e660270fa59c7f74d239a594d6cdd2b2a87c5094536a384a988a517e8e31a4f119314aa88a32c62968610bce3ad342d21938eba701ae93cc180367fd9ce03ac90c2f7066922f934c1e9631d60a8306e6ba4dd3e61644de8c693423d6972f1ae4e484cf27dcd7aa84aa23dc879bec6ac4824f66216b89a3942a3a5f5f18b82c87747796c4d6cdf3e1869dac9ac4bd59933e08cebf2f5f661388e51719c55e63252c5c8fde947cd4d68d30fc94504525ec26f60cbb468278873ab093b72e8f6969ec0dece4a93dece4a1ed7ec0d573106885c4851e071e00dee5b5d59dcf32a288a111b6def4f5075ccb4beba8be19822aa4518530a61006ce4cb16a99cc1e9490287ef95200938dc3bc47612e7d8781a1d68bb10e0323730b8bb943ef361e04df94a1d36d9c72a5eb5936730c06060606cbafca75e33030d76330984b14f110fdcc83e00d98cfccdc88391603f3cb64bd2110cde9160d85f9c5999e652e95399d5a373098cf5cec3197b10dbb987b6ddc7a46ad0d9bb9530f78c00d719f38b71738fe9d2ef720a00ae63e0071f40304842802aa1e67637eb2dc4d16bb654d366e8eb95f411576fd7ae9f148c0d8c64550657abc1250850455ef3dc1f16f0a95f7e44981aa677aa67bfdd9d28362895e1716d2c0ef03b893cae88265ffe048ff7af0432f51fcf2650050f57e6cf801551dd403546ddfac06bb78695f12974f3866abc8fbb49907dcc3f984637e38bf4b14ad4355b46e3ea2d1e9aad005cedd05c7230155f94d5104815a28de0250d54955d802c72781aaadb7eb3e29af877c7e41a4dca8c49e2ba5f312bbf9926772c4a55a74defa8e6460290b19954212aec19d14052a7016b569454e11f1bcaf0aece27d50c02ee2791f15d8c578df14d845acf479f39bf2b0cc1e7b9e9bd3f4ebddba1e23b6de696399c4d61dcaae459f69698c89e97687b25b44b23b143fb1753d6e46268ef49a5366d8cfc0c79dc4458d86f173fef1522b9dde1c230df26e3ea20f6252ba05a15b0445b90579413c0e48a892f741c4481fa3845d1bc9b620f10611e9b557605eb257a45c08464846cf590953f499cd200cf7a0983d4de32c4783b5985f963eb3db108b9eb331db710cb559b3b286afc358095397f56bb3d9612ca7659cad30f58e59ee64d99b686f6f44647c3cb5f90853794914b1348a471bdcbc74c102efc09dd4450ace4cd78e592935a9699a8661524a4d5ec3de94780b1ee163cfb2ec9ac964325529dd649258c3be6d37286a167b11c4da258ad8f42058b2d9080f69cfce6d9b1633847917937fa5c7ddcce4283797d2bb173b7c865dcfbaf91d9b207d421962d0495f195acab05206155c03eea42b8c11235c357c100d1f14691f4eeb34e2969b9023f9e2ad02a1c02f52b94510d3be3452b944d1a6e7095cdebecd6ddb7a9e30ebddbe699fa56f433002994ecf5d5abadbcd3d8649bb451167371f6157bdf5a46dd07ae20a5e5ca10a9c9924fc15a0c03cb893c838038f8101803b890c2b3087235c59fd20ac26d2015b6f9b5f152211cb3febe687654bfc6ec367549b5b10ebbd7134b08379a687cf191077eb30b661cadaae15c1d239db3095e74db66157a237cfec666c3e1f0dc598e1758b208ef270e89d7e9eceabc14e7bbc2538a9b8ea61f7e33f345d7eacb76e26526fddfadb8cd45bf397f52bb332db130627a7c039cecb6dc8f5ecaaf38f403f7434349cf5386f4f185c1c523f74ddfa1fb2c3ff5c879975ecfefac17dfd5c37174d6c3d42eb7e4a2ba5783de26d2e1308528bac82e5e382559c84c23a0d8d9c029201b940a0206c1bf21e0fa114b20a54d5d35f5b10aa05d72d48bdd94f047a5490f8814959d2ab0276f3967d5660f76da1b2cdad74e1cda87d5686d08bbd565a69a5ef65b54ef1324c4af172281dfebd67fafb7befbdec8fbef72e7cefbdec596a454625865456b1b0435b319b31806185af5bc02cb0c0951e83c7b2600a2d29b34095757a29059559307d965860fa88057dcc0255d89f9041082184f6ce6ae9a17d56b8e0326785665ed4660e47b852e2bd2a7086af1b9188e37b12d34b2a128a97433d9553bccd087673965530cc0eb72a185ec6fa7863fd19403f31359f211938467a586b4c750305c5d47c2c9a59a5cfe8df839750bc1ef4d7362473383f2bf985712515d8fd4c202efbc9f57512d5a8e590909084e022101235de5c33076fa6c119c79536eebdf74ad9df76f37bda33ee9d7bc6592bbb6ce3d2965d3329a9b465578431cb7befdda4244c6f613666c1c20a06b6c8228b15740b97a42e9296f0428c2d5aa4c6597acdd60b11811e152422d0b31253f3d3c4a5f44cb33d7331953d5789a9cc82694f185cd1c4eff959c1f4d6311bad508940b10a98b212811e52a7e8e7a514b7e21598de44a50aa62fdd4c4305d36f37731d9f144c9f3d2b783eb334cd4a29687c865c307c865d30bcf499c4d975f85c2431767833e482e9b45e9f8b26c66ae5b84c83ebbb81ba53f0d6b1a24925152945b605b16415eb4a295e0ffab4c783b4056bd8b242162b48c1d62b54d50ba37f414055bd456fdd0745fc7ac2e0f2a38261bddc86589f376e46342c6fd5c357db1306072ff394c724ecb09b8be235e1e136c4fa9011cda2b7decb0711041f075e0f781b7b910b2a8c817f702751e10abc059698cb19f827e63098a4f2b07508c46d887c7c8dab65fd4d81aa6a6d11a4de2cab96c6ded8c38e5eb33ab0a394925105df803bc90a5c7026b5b759f7043bedb55ad5aa56b56ab58edd526dab64aa5635d522f5d22add2288eb4db414579b97c0168659d6e51604ab190399c3b2d62cf00a2b70b5aebd6bb70a5c6f96b71e1425c599cd4a60a2f8450d1c71ce007e146396286e43267e5085ddaa39092e82d87a7e56e06cbb953b6c210155da2d797306bca041f1fbc4f4d69f3d69c1e513a6aff41c54498c69bd0da957bb653387235c29216511ae82f3fbb54969d92cf13bf627e5e5508fdd869d951f159c1f51c4f9e1ec0e59d76644bb1962f9fa862aecf94dc119fe3d7be6ae99aeddfca6e0f797aa8d5b0471e90e59e76ee9d9d3b44ba8daaedd5c14b5c75b329b6e11c4d64b125a8f765a97f25dcaeb61d51b04ec2c2b24e10cbf4fc11267d4c2302bb3b45b58568f69cf38f07288b9842af977b3884dd7639e8b22e61ef304ae0862d31dba5efae34ccf5e91eba5980741534ce9a65fb399dd6cc36e7b1663b167308d0636d91f5cb2135f3c3a2fd8c2003631121d0f8aad88dff30fb68ee51e0363df2c0fdbc1ceba6691809d8501a871b6d3c026fb03972cc530b66df841035bbf6c5e025f4bc458eb30b69eb3ed059b6c874b56e2cd661d6c3db39acd7d06b65e37231a7eefe60ce0862a78ec742b40bd76ebcd3d868cb0943380afbf8dc8c417c6fe38f072688cfdda82606fca65ab845d86eb7d1c783d2c7a877e64b664f2ad234fda3c9af74aadb67eda05084d8bd63bb5d3099f09d9317c6603c7a3ee9b8db07c6f0b682b085957ac68172044df2de3ec2fa8085917295e6b03537a1b387b8d99a06fa1de147024446117309c711f757791b64266e7a92dd2a3093ef882fbb2de7a36c2b45afdbcc2f4e688e12fa8e0c6307d10095997b2661271377e387ec9cff386e1336921ce9e46f4e455d264403270bcfd60903554f51b122f047a82fd0996f8ecb29d046106b5e6b2f920372311c763b68560361b12e00804b81af9692f0608c2f5712b024dddfd66291b51813d04e17ab80d5182898c88681907018e5480ab90232b9848085c9fc1d7a55236b2621fb5aa86d57b69986d2122f0f4662c1b61275081e9ede3b644c28ede1c37239228e2a168dd246870110da6f12fbebf4b8b2a02bf0486a7707e217b34e0e00b702731210d0c57803b290c26e00e77521851300db85806eea42d56f0db823be98b2d9807eea423a441444404882064c179c81a4819c0998913b214a500e72224a42452c0b9880a1211ce4556505982735115b6e03e11110ce09c440892709f6808e625056be0fe10ec085c30517ff9c205f789fc70c20beefe82fbf85921239ab72c9387adbf3b04ff3ae90862e06c97bcf6992faa98a8bf60780c83b79bc79ccff6339be9e712f2db11bae0edd8b38961452411ec1bdc84d46b7f563b66b7c3adc8f5f732bcaf7ddeb16b3643dca45f6d7ef8c87ab04b6ccc4520ebf4306e41e0b5ac753ba6e25f06510eb84e0f44bd552f2f10d7e95d6191bfee632aca204b80a0af77c5c5543cbd1d53f30868219a988ac7b0a4cfc711136a214bc6ae858c587968a52572317c0f8e3452d81096e07f228c5cc01a81ae38e79cf0e6a315961967cc56099887af81c003188973be20583ba6e4a795875b1048247b263c0fed7c461b48c41d8409fcf5eca2892979cc723125ad2d48a67fa864a9d5e973a1204549c618424334d2009000f31460304820168c07e48926c9d207148010aeae484e1b8ab32046621442c818430c01060c801901989982000080e2cd37db40baa8d32a5fc42fb08139d8fa330250f957c50c8eaf00be17390744fb77023a567093ef80882ea562b30216548860a1bfa289635d7e8ccdd9a001453b1ba6702585d19365d61ce49b97c7ae675203ed7945091be151bd5e80b32e120c375cec6faf3517c91d102f8a95c1cbed4c8963e16fcbdb6ca55ae9c01ffabe4b982f3d4058d290e8a13964fc9cce9f3cd65f8b4a9f8baad3ccc3197ec37dea8115deca84d368c7b0f46e859ee96e9929b00165176452788bd0c0dd8934f579ffad60f65b8971107b124054d86eac9090dee7912a0fe578d0390b5d16825603e760fb17a4ccdf24c18bde90ca1335e0e9bcf75935f03a631a770efb020f721465010c23aa7e03bcc5ff119446e48593a7df586fd04ed6372593e428527ff2a074595976cd3c726dc70405543eb65fe0f677d77a2db48016ddbcd21b9c68b25e62980e2affab5e38fc45aa25d37c23e4f7bb416b900d0fe71f272f314ac88ee5976f54e374b0ea9821daba5db6401389c0334be23de3c040f27991d9a04fe4892476e3627ad7e5020b166638806a78977c505fc596ab794bf1d6d0de475fc7ca54c5baebfbd2b8897cd6704774a4d6ba305c010ca4ba86ae2bb17aa112c5e589fa8a77d5e2cb4544e865eb84182b34856eb29173f1715bee31121408045bd570b3366998306d790621c9c3563589e694e5dd944eac33cd230b67eb349f55d3ac3c76cd93decd7b2eaa5a0ff882a299a302d40742be6e8311a053c4534e940297552354cbb4e27bf49a29f952a094e3b2196bd3d03842a71619e1ee0c9c0c122688b4a3b78988d20fb419f91c2b510465bfb64f542bc6b0191fea26d5c4cab0b3b03553606973065f58b108b3a7ed94ac48a4e5916e0c9ee77673ce40e6fb4e3ca0bfe1712b6e82051bd80dc687dc182ab1770d3ca51778868159f0dc6528d32160cd15f191cda817f2414d7bf119dcbdb4073d03e7b3967ca93f6c044eab00b4e99a9d4d8dfcc72ab6050231801d9ae8842eb4e07ee7d24bcd7399ae5608e772f63d0b5a89dddaed80cb0b172940d6ae56e0ccc5dd9076a47b9b130838fa3d356826ef865e464787153f92d028312f1cd0cae355f3ae3f15bcb89a28d084fb5902d159b4ab8dfd08dc8000998e2d401396ac01ffaded234bd2272b5d5237f4b854e5ad8d8e8bdcc842e5a996f90cbef2aa6eac742b6c70ca4c5dfc65e13295852244c8603a93e44b0c891a1969a5b4de42c1a7fa035327e7781bedac33ae8c1f26677905ed6ab1066388d443fe1e293b494c59f9f321078df8dffb422b1fa3897ee42f92115dd33832dbb851f37750e94d2bcaf744a4d560c4a0f443e3d5c05c37a8e252a54dc9c3ff2db95cec14258a159d295649723822ee6961e4c831c65a367d6fcb3bee22058e907770f0f7140868c0120eb7372811d2a6c7129884dae960135368bfd334cbcaf803942368afb113a12d230c12f712123a485d83031f2492a9ea0bec1f00ec71fadbd3139a21b90a16b274059eefd50dc24a5e180514c27e8abd973e9b9967749c8ca98efe950f210864c5313d41f89584f9cc047328132bdebdceaa750c2e0641bb308f2cbfbf4b28630e97ae68361996c9592a50717786ba3d82265b9e801afcbf7f9ecd42ce1ca76a5bb2b0084299e36570dc689a1a457aae9eb58bf28c659a0cb49ab7816e56d4b07ad505314f73b305076a00d1156d332e76376f28da944bcf3c608c8497767e06fc3359e143580b66c806bec213fff2c412f1449ef31198bb53e7a50661ab679c8a91f1b3200c944d4280352298be2fc34717cacb8abcbd55aaba1d1d554e111afad88e584ca2eaeeea9db81e8dd8a0f648e973c6d84e6930ff9345eb09166dd2e50ba19b6e828f3fbf745f1e2af6c301bd8bf3845d6f73491ddee971a0e1dbadbbeed38af18d53ad01b4ec7ab8cd6f00dae44ad79976f425e80f37fafc06d6d5c75b010d10faabe35edd2b1ed9c53b04f63660dfc9f52c5509319ce1e8813722d9ad110e16d353c57118a720e512ea605fe05429112e48c40db039210687231f90b101a6b8e21e17d524a7d95c33cfe139e2e9f9292087af22b049e02790206b3f43dd6f8052ddf366859a3ed4f2ee6142084213583c60f12d40b997553f892bda3bec5e3b8b2a69c4bc0a67a4a0cc8816dd8276f29c93be86a879543b3e745f62acc70d0987c3276f90a6c6b29d8f5a3fb1caa3541eaa07dc7945911d0df06be7afac2d43602ebd24b897e4149822e1046101f2eeed19b6c1619e9d6ba155c93e6d3040e5e49e773a5e1ec1ba6120709d6e5fa8698a597fbb15c7bb29bfe6e597d60d6251d30177032a9e47edf23ae21384e2b017394aea94809bfd0e878195762072dfb3d53f21836b0a023c002aafbc3c33d6615a98ccc854f9cf74dc0c0c322978063769bc1c5fd4a86b5d9512364ebd625014e4c5139be7e954612dcb9cbb2c2e2a551be55e88b2e3f51bbab78097f7078d5273693fd37ceaff9c4196de1f275d0c7753417d7c2a2e57c17875503bd9e8ef95bbdc780bc7cf2fd3c1f3f7b6f70b2501cfa4cf3b13acf2f67d4292b003ab8426a64ccd6d1030e141aae95d0db971da559b9f981e364042483a7dd3939ea66bf90efe2e21cf5a775ae71588785e45b4f3cacbbb594ce43e070d762903e0474071abfe0f7de7a66306a7b4f399e12b9686d2996fba4c2db6f2d60230c7726b74464fe05dc1cae694708733f4d81837195b332e5e0ce76eab476fd668d14ac5aaccd1ec25cb4caf326b0eee91d3022bb0f27380ea41faf38c07c4499fa32fc04e7bbb0e5603340aa7d208355dc42d46f80005439715da8a994c2386b0b5603e741107a3c5faee07d0b834ebb7983a0136c629405b91ffb47c543c91e4843475b290bfe6e812a07315def1f55785f2d1ba16ab646b0d151afbda3a2129fc07fe56020f373b2e8cf8b06fceb0b88588a0baa9998260159e790c6e6c66716305fe4cb4f7522006a10168475acf838349c7859e3a61a5ca400e708d9347b4b7533f8fbb06dde80ea62ac1ad1ff77c0571969c2d4725a081b05782001a432c6045f73dba8e3f8e9b26580abc7b15f20144da2eb7ee01a5715d1d0885161209a847a98094830df0b512911325081c2726ce22fa850ecefc5896f2bb932700c007e2a8347a2c3acaaa8b17c26b5e415cf6d33374debbbe7d8a54fe8095e61f403ee9e28052b7c5f2522f3b18db2228dbd1348e7e5934a9e82f54ac8be6b63fd65096eba12aa8a437c2fb0d3fbf8ad645250ac738963472e2c72e27957f53aa722503838d2bd6426d161a45028859babc192dc0fe88305933cc8d61b49e9bf7a695918c2ae21acbb4179c870d421024315cf230644331b52f2b7c34d714aa77df1d08abda846dd69f9146a33c04f1e0d620893ca6628c850881daaacc5d2000b34d55a4f66bebe88e4f9cfbeafd7504ff176dcfaedb31532d2f954ca700ba5672d0f60d9bc83143448df59f38899994fde3a89c5e8e6db8a154a082d51fc774e92591aa8c164c8c15955dfc047d54e1d0f3947067a176419693df5ac5ef78eb704362491f15902d9393a095417fe04004294d8329afcf6687580c9d042f7e0f7c140541e9dc690217e0530fe13f599eeb8604b0358ec51169dc4a9327e03c76b409b62ad89e9978dab32d355a875e61275def3984658e20f696d99e43849496697a08dd8959887a03501702042d6ba07719a1f91d779c06cab87ccad2d10d0ce07e3e40855e3d3be71957ff28f38d16d151bc70a1c4073fa4e5cfe011efa681768fe641855cbaaaecae0fe88570b3508896094baea0644fc42a97c15a83f6c81e1e890ca8da0798948523f6b14885ca176316c36ed70f782775491ce88970f89285d6109c95265e72ca544de339ce95c4b890d1075c7d19e062c30a611ac5149cb294a16ba1d703008248d839b56e7d3d1eab337ad462bf39e1ca7d4a9c2844b7fa1b86cccdaa1778764b39dbcdabf89040fceeb344754979dae33b2033a53c24f8ba83cc915a7230af4ba30215f79a1bc7dbc4e5a5ce15796bb7d5a76bb3e144ec0b90cd440a6120302dba4321b022b688a7e3904a35410e81750fdf221dd8b754d39860084e27c7ddcd753d4d03ea202d1ce422a2b4d2327efdd3765ac31c6d44275412c99cbf92af2bcc6c1a44102ca80fa4038c2c562123c42d9685596de8446fcc1b42767967e77a3321dd13c75a4658ca1854b552cbaa89a05b9240eac5b2dccac614aca6de337bcf6a47a6dd3950043c040fde541dbe5763382b025725eb4d11cd68319769eda67318cd408a579afef58b4c15d9095f0939903e93c8b229f40d6629baf4b8cdb61dab1941b7ad9788644fc35628dd14aef52c22012868c410a87a8f03dbf5d068348b7f6bdcdf32ebf82c4ea4c0ef38ae3bcf106ee31b9737b848b150a3eeb3946ef8dc688b868cce4a502e7878dbdf11b410205b7abe58a8cd4da0bcf622ca5fa8e8b97c80ed787d5d42e266bbbf61f70e70571be60686090f66f2dfec804f48fdf1dc9094c5d96ec0ace13d9e6a86d6e945bec53bf64a6f99d70c089cb0199a4ff711744431a0b218ce766bc93194c7ec82f61fde2b255803d58a8057e6adfeee90627500a073b5a95f971021004c259adeaf8e21ca367345a8231e2eaa6bd0b192469b5a39faa743537776dc5d80d3b88bf8efe85438cffa37283ef27a2804f8e28c69130343466dc15e293eee25fdbb583ca9df155566ea0c399aa40a096fcf90d2cfb81f8799dfbef8666ed3a206c549b1ca1c4121480d99bdbf4a011dc9935c421a91b40e3c0b518938139892c06cd8c21dc764b51ccdce52228b0148e46de93fea40ca261fe123d3e5366b96623a03b2d9e55cfc68d0e0bb189aae64c847b9f6429c2ef478a0b2545cd7124b35f984b376c3a3d417d3ecf18d9637dd88982588aed19acc54d1cd930b5d95070ebd00106427ba5b2e43dd6c86c0da8f63ca54074408d2ad559859de102055a1169a993a17e512d56d9d2c7eb37613b4cf02cdb3ba17289195a0006a663cf00271b2b5652ca98526901ab63ec4ee780d37538d525bc60c31523742d400e2a922e5bd87ffbffa0ba3738088a91ba500f7a2f8a25ed1e39d9025298b4b04fb037d03b054956324e33588751431992e07663ab2b86ca76bc35645d795458415681c19454c89df660a19c1ba2c4d30ebcb2cce595128d35ed443d1479b7ac9051c033012cab89742c5505c380449878a38aa7c91036fef0504d40450f48b00410aa5184ab00ffbc28cf565486c4225d31d46c9b2096170367e9ba1cecbb953e966234ab8f83ae8e38c83f46f34f2f81494ceba88c6c6d20e8ba5faa3799461457357d45acbe079712b9caa730fd46594b43165dcc1cb3b059d56aa7d88deab174ee52ff2c45518c547438cddd4c55ce28f2af2b9c8ff34b91af6032ec77db7079e154a9c3396582c8a015f7c421e4f83bd66c516f8ddfc31df0004134325237dea193fc244a969f8d1f04c596ab150049a8bcce492ed378a4b5a94e38fe417546afb7e99c1d741006cfc255a26d15c6bb5456fa45e46905eb874e7b60bd171437f35d3d494709ecd2cdb878d7de4e59d5b14ef8fe02fe8c87c70a3f098ba650397063244af54b0bba60d18667cdee6bfcd559952efc7fa197554593c35b9b85f7f85212ba660116253a2e6753bf2dbdcff147637a1256aadbc90708156646ac3b909841c67a0bbb407943377511732b8a00850a81e8311ac17c29f6d5f7be5cbffd6e7830dd7351a9ea95baa6c5dacc4f16f0dd22b6a248d431bb8f10e06fe91639fa7a96bcc8da78884b831e0b2730b551ca663b5bac2e4f76955d7f4b43c36fa0c505fa6a56ff8b7f7a7917021a6dcc6b658e63c663b2a17376eea9918cd86b8a8b84f2c939829127848ee50b277a9caa1ea9cc94f6f0c637056cd61d5453fc8536d49737c92ebd6aef4ae9f89e5a970160e0b3674d814682a8fe662d021af92dbefa07b96952746474b506ebc2fe305d823efb5bd2651ff8baaf23ade3bb7445a73d35ebb000c235f8b2e7d733080b4cc553387001c4cc9f7cacc3e9a59562effc2a9658d50461b78d0f28b621de27e2728031c5a133134612899fda25dc4c853d1440807b1d1e1ccc2b227965c5b1bb4df5f02e5a72894ed3433158da1e6b4ae4ff4ac4c7131551fd0fc49edf6df5f85d33a946bb89853d7f7d177c30ab44f4054adac3929728ac2102f913d4efc546d9f8c6d9dd84f707d3a0e25c265c58720b04a034100014925d2e35dd693f52caa92017589d369914941f4a9e52c73ed9ba01a3970195efd5c1ab7a9852b3545563df2a20dd8c02b35fcf367123d06ffcd1ec09c473016b3ac85fe47ac12ca3f2c57cd7bf8940d71b4f59e5abe1df26facab4b4ba797558b7aeeff90da6d4694eeb1a8366576d379bd1fac53839fda7276160372a2ae55ccafbd3b16b2b01d54862a00eacf8ebe7e29de96845ce95896bf6b6365a94c03c7fa04821b60bbbe29ec3fb4c8c74bd428a5b829a771341685d2e5722e5544ddae546a5da9406226b3e220185b17a4e278bdc7bda1de48fb9fc6753993d108e79d9a8734753cf9fb174e5e4ed67a25dd83674e15cfef89bc4a73ac5a28c9df707f4e8c1f8070b8c3ed8aba6614d7801415d4b7896612d97de1d3a8c64f11ed4170338b0cb607abfb42319f4712b5b73c76611a599b049ad8f47cf1f9c316149d593907aec7c8677e28f22e2a9f0095545759c7d22c37f30c370836c7d35f2bf587425f49db78d9a005634cdf569ec502446980537e769d4610b8e611bc2832786318088ca0f1c0561bf3e1a908d55cd8492126b3c5212237470901607024bb73d30e2508ec73bf6ee21805251b2b2f2a1b513786a12e33e588a6450c7836569157c21c40fab5b36f04f36cdbf220343e02735010f33f3705e94069de7e2708ad63d8014dc83219a7ea20094e47c4955400af9570753f2dd57bfcc26010023c0cb1c28b472fb4955c4dfe8180e7160d74c9637483894eb7cdd925ece5610f4d7207a7976e022def4a74c0d9fb62db47bd16400cc8d3f592ce6b508ef4c2a47c2f78b07deb1eaeffcff9de8efcdc8828100a0f11adc411aaa25fdd57a6b885cb6af0c73a45ef76733f80ca10a170f0d7b90e279f5a44ba596ae8f6e2d72a6781f912e0638ad28236d368fda7d0dc7b2c90964ac9c0b7b13df8e5dfea839198c3583ebdf654781a5f24ec4e8bb1f4f2d22b5ab4c83f316b81b7e8329cd263e06c2f156636e664e45f21a9ee97d012fc020310f8d2d8499a202b7c29346797a358b849d454c5e17f1c45c43e8f4a1236b286768fef8577c266718655a526e3a9fb81a9ca5592e750a785837bb7528e4a5a9e0cb8bb3e8c2f2aa9059e8908703dd1a2f126532a62285c9e42bed5a5651f383808e9e2a3e6213f8dbf02fdfcda4d047f36a1779eee7eb9bf5a46c7f04cc0892ceb1505ed0c38e630a29b50251a90b75b97776b195a162727afbd2d455ce9d5aba56a17ab20ab70f48e8297d55f012fddaac899a88515dd77d6ffce31171515f390c8849a8598f39f0f23ea47ff6388ce5ed3a158a8647bcb2fdc59ad28e2630084031b7c82ac56a97795e25a7fe050a971dab86df4ab18c3ffea787422c365c1abb873d44c391f4fe735e04410476ea8dd8e8a9af0a0672e3dd4fd612d80e318f60eba90b3ef61eaa6a663b97ca0deac070e84ca409d295cb9748119d79f84017a1c3b99bd4685df2b4a690aa32cb02fdd218039c21693e5f29ae875eaa1d4a05a8b865ff720309f8a35acd7dd32b3936488ee7e78f1aab1fd30ac88caa754e80013e7ea96d2eb29c6e96e17fa0e26fd3a327a92504f76f7b185de703fe26a9bd430ce741ec6c6feb2c64310da2976234d687d5e0915bc3625a461afaee84d610ed324d842dd8ec9c585ec056a3753d6806e326c5b557704f4c6c3759ce5753ba7f3927e05736ab9d06037e49de1f8ce55ef4eac186eaa77112432d6d556ad2b8ec491ee695ab61be1e9091ba8a943637d753364231cf21706b9f8fb341abde2824b42896899daf57da47a44fa75bddcf2bd33d02c9b06a9b815729591a48f2d9daa1b4930611f8e9ef9fc60bff9cd5ae986224712e96d8ddec41d6719cbb47146b814088b757717731b0710757b2bf6b8a19dca4d07f3a55510ec6b6d25d40a717d86b24e187bb142e1431955ea06089c5cf9c9e60d6e12b1d766bb8378ef18db03b8c74651159c4cba23d14a368a046b91b3296477fe3ec47fe8fe24153cf1499518c73a1ec4803ab0df4bc0522800ef2ed3c998dc64229c77b8854a4a837e8c1671d6a0bf1a08654c98b0671b8b81b8238f7f82c8dd938a6e880aaa976f581be3b07fb297683d71788948ce8355f7e2c978bbcc7d0916f8ce6d33b8a319ff362950b6cd00d3900448e9cc8a5e9feebb70fd23ef91c3311b77c4e38d468ea2f6eda0def58beb38e616e163a39ae0257b6f94926b6311cf98ec8be9f8cb252bf27e2c37bbe4a3eaa9545d02ab2a870c6578235279a65210e3de9a5800e7fc52aee711631ba94f0c4cedb05c8160278cbe9cf2b6b02033df0e1ce562fa31eaa2e7cbaa64d11ecc3a3131a4fded0d82f01c3b853e86b360fa2cb846d4050e96e428394d4800de9487de74a5efc4bdd5a1f037d1921aa4a5b480bccf36621707cb19338bb72ded16c79c0f198294ef306b67a85ef1420ec4abb1ebf18cc6c7ba13b7a91d5c968a0b832e979b1e5735fdb60dfee7cd35d04e796b0ba6610dee363b2f31aeb368429ced04e91ab8f50644c7773cce4c43dfb6a3363ea11bbea8666f982792281ffcd506475b5a0c4e430e035d452b394f3159fe3459c60ee0f6a4f75490c4d378fc5cb800cce388a417c2817afc5e91210620522b5fc2d696233168364b253d01e1668056d8b46a3ca30f8270f3b07bc1022d3aa4da1aa90e574b1aca27873e2166695d5eb84f1179f96732b12247b53e3eb90afde40afb7b288a6945ede287347847a4fce7210a22463884e31c3f5850ca781e456db2eb236205cbaf23b70dfd917894681eefe13353f0fceb2819ef19d72307660fd96d1e796013f136f74f045956f88d476b59cdfa086e866ff28b9a597e74d8991628bdd04c269276349e94f37d81dca0d6c5e5fe568e5a6c60888786153903c58e41a8589d635e2130ba4db17422cc52c5ef8340042b4e503e8573c73afdc5b4040fc5931e85acac8d89ed491c6396f7d90d5a3b5683d9a619c07189b865a413a4f8259c413a9263f0f90d62a344346448b8bf641b33160d2e4c98543d5afc075dacfa2779bd1b32523e562235f916439f20645367f2d74ecfa89781220fe04ca11cdbd05117eb6ad83ed2f956bed461c6f4024aacb9555ca7ab108bac5524c6fe9c2b24a1a3fa8197c753d47d1c707098c370d50c82420b82f467d62023082df5bd82c83744a2fc340039b0e7b84e3a6514fa7a2894cbea2a38d3b24d20dfdb143aab627ee3089d34637a7a87db081d737c72987711fae80fe18189a616621d9ff6d84465ce1009ab5f8b293b50593b100b5fbfddd91adaeefa5ff7e1d91dca93e421f3b9f3b7c791a7e9125aec99ee520dcee8866cc6e9e687bda09fef18bcd925206977a6be013f3c6fec10dd939f86050908d7e0cd214f80207351dd537682ba6ee9077f80ccdadf62c6eefff4430037b5995986cda03313111d988450bd2989658bd94172f673579beffa577f9b8c2f6aebe613e50d167d8187a51c8d124c76fa12632523dfc9a76493568233d39b336e75b361ace059ba5514142806999b960680fd70179ed14b72a2bf084109c78a286a818cbf000f0cbd49d6a63d3db6d6f37119c8fdc9733adbb99f6e4ae02199125b2eddc6de89f6b2c91aa3d8e13f32ca6b0d4fa802cb843ab3ee7f8be4652b94dff3967c18d7c6fb6a23d4de131057cebdc2eb3d429160ec9aa043b60b81855d9ac68b897a82cc67c2a70220341f656f93290122e53d9ae670b16d995763d69ef655389e746944252e748c7e5b2fe69c3dd5b4f7b0c1b365cfa8801dd3c08ffb710c6f7db91ed3f09e134bce320e5c0c37350250a6e979967ef48b0ab149a0a443a2497e323433c83598fb336df40a776a6494702906e72d6967885604f98ab4a1b9cecca2d3294f06c2d46d1a24c64e4d52655390dec898c6b94c174ed6580622905976d87a2a524c753b86981f390ac69ce410a9b33aec32eda7f3c9725a7638962a52cab99ae3fd8a2dbc789b7cb66e1d8e7f7b0a5c34294cbfb8ad01255873a2f39abe730c7c6c1ab4e4145760d285b05a7bef1c8da94bc9bbc4bdde1c46ab852f50763ad0e5095851e89a294dbf9187045c46c4571138fc788d512cf7bbfb2a32c3c41d5b558ab2da4271735a374b55612823a590103f04cadc9e4df1004667e5c80210c4e55111a0b5b84e0e849fda64ea7c3259c9a8268d3e185f2bd9c702d3ec803d6a3c4d391b07a43881c08ab940578d254268482323485607f4e9aaecbeb89ce15f5234dfb70f035d162d6d1dd3bd32bc43dc58ab12daf67841091a334a27569a08b6b18e3a7763549db4583c246a91b054580b243d04081d8b7018014eecb3a54e876942170433502f2f69e6f284c956dd6286176cd27c66646f6f271c5fd1c4b1c3108f4635488b457185dcf207ed46eb45264acdd9e11168f4f24d27315d31775203c60dd19dfda6404e0a03d986e4ece8496a92cc2d5105c735512da006ed29e95e5c1961a36abbc4470a2e178f62952b0106ae6b196c076368d5cbaa1c61000b6ccee41e109c1aefd657687b049320f979b088fa164c364ccf5d47f45fe99307cd22e85a6b5f8393bc6b088e83ba968686410aa1edc14f376bf8071de1c91e5a1277814e2796345f819283c73ab9bf37648dad96df2c93093a8c6b460250ee79e822e30e33d6aa02ac104e562e632c4876539886808d2d14c12b8272a2a460e0af9339269f2e53603bb4f42da3c2878b59ef41a0206e9f1cda94e7b4090d359a407dfb1714a8e3a48ee49a177c526792ae1af7c27a60b59881b7abf3a9afd129a18939c5580ec32cc60308447b9c3004e87e3448cb08c52348a8ae514150dd894054aff3c6f4e308d0fbbfa71725f53bbe647546c5e131214efd2de9e22c8077bdbf6fd449da96e7560dccb6ac3ebc43083b7712d44e66aefea29d42d0c769006913e75d5daf26cd1a039d6e0be1536f686023309d928f1d5dfeba56fc2379ea6c8abaf8dc45bee0552b5ee27edd51e066051147e0bcc957aab6ef07ac059fe8f4e04a8480a8d667b02e830f6660920c1362b2d3a2c0a119c58df6920fb3dae906e89d259bd8824a3f89f2fb2a86458b3e3f125f4e5812e2ef01ccf98c3449001346f5f2273c20aedb749ea474eea4d2cf756296d48464a510b1203f4c34827f6059ecdd0300f5a5d9357f3e2b731ba5502925709ac5811e654466e9f419eed7ae0a2901942cf6f544cc1fffd802848b50632a3a7762d7f6c3091a64cd731beffc634b06c3934aaf75e85bf7366a8e617b4af7e83189c693d0ff641fc15fa952f25e68d1af9219b4b5757411fd08b4ee67029486806e3eac45688dcb66d0786699ea48284e2a5b0b5c865e9228e5481014cf5a3864820913e10e18f2225fe7843ad0dde818cf880f9eff8768099328d2a58bfd67c45ca2e2bf1915a802eca2a23082e7f8ed86b127ca691aac3d6c43ac85651eac220e00c6416c059750edc9e49394d71043f8622cba5b7575ee6a72a74b7a009912052a9eff58b6190b4008c8bd0596f0d6a5f2560aafacc4b3adbb4e96db61dcbaa0d30c9c9e65ed3f1164acc54f90d8daec098b3a849c3578f16f697a9d48b75c83122fa5a0bbdf2d4f425ca89452e50bf7846b683c23a531f11687a3a8b1d9e8835e5e8479e939ec85d0bb457d614322eacc098d57312daa14aef47707625a9a5571febfe49123119baf5587b2f7eb78b2174d9b7e09579ee70ca706e8024c58c496e4761de65932f90325797a4578cc64ed53e1aea1b99750cbca31caad7748c895677386e58f795e188217814c2010c0abd7f13b34a0552e9d40357ca4d6a2ae19a2eb1c44d7e86bad16a7f170d1974d360760196b93fd1e312e0a6a464577164e82b4f89fc094184dab0294250e56b48b054bc65aba7830280403fab2bded9d0b8d1de77417575c32921787f4d13a9ac06213a9251233dcf4668c4cfb6101f00eec685cc6d14aed21153bb3ca3c7a6774828dac6dd816db56ccac3286ba15f0b641246a4ac955a414d31e47d01074bf2711a0584d7aca16dab0af816f5a3610cef8e9963f30b2b4702ace9aaca4ad949d7c6349ac365a72611ea74369cb012b8dba957364117ff06747418305e98feddc08cc3870651da2ce6e00cf1c5f5ce9c4384d27c2fab480646fa76bbe879433a7481fc68029a690bd84b5270f00330e375579a56a7c52c7fac51c089f92c6b1854234aa2a20f6ba083b3f214879da447320e49b94ef6264fa6c0e6d391af7c1488226f0df160899844cd669841c904f30dcbdecb53918da1699f017f58c57fd2d4e6114f3d402b4e699120cfc191b1033cd96f061270c7920a0697b11610fe044ec889f1863fd67c7574f9005536571e687f4f1955cbed493099f3d235ced1b883694266a08282a94d4bc708ea8ec99d2eaf0a02ac9bdf6d6cf93dc77e46b2a79db375f065f9cf5483b099cf0d79f7836e16652e281c9dd41c4ae6d0cd19e26d0af3afabcccb1df41e443c2429c408e4bf17c161cadc1eb8815dea172097831bedfbb0d51851f954697376b90619fb05a20582598452fdc52bb93136737b2b04b9ef8a41c491bff63942b2c6fe0e13890cc6d2e5c67d6517a75346c44e443ff77d5a38a81ca90d6cd065c01f5520e6da6a0778cc6c57003099216492875f39db68cbcd1cc2a4cc958021e8639a522de1b14e451764f2fcd3348b31cd98572147a401e3065167420b667b0cba49cc70be14609f7ea74a05b8b5ac7e673c923e35c4ba1983634e590068fafd990212367c0787924bf042d8b7f98b8654d410c5e7076bbad438237f69fb55878fcbd392c8da9bd7019f867e4f542214adc4611dd9327b887422d99172fcf6e048606b2c23c812d987914271b30d3559e16758d9a45f748a2de8d05478108db8f95e38935d0bf54d9cc9f61d42060a7b414ffa89729deec9c2022203ead130e0ceefbed28f9812440247d80947af1dfa246c705b05b2a6dbd5e96dac896d5ef21b254b047482dc22fb49d1852c07359c84d7918740f5f38e597ccf300c88457c248e69e6ac277b0df7ae742296e24339353b0a6dcc4b3a10837b9475df7e36e03ab2108638ee08c436596a353af7d3799f08072dafce23efdf1cb96811cae8ce44750a464323e249cf4d7ca53746741a60c3f62c5adfe0997d61404fe2f4b8ea2f08baa1780c20ba2ffc04cdf4ff774dc3f9cc5c2a845fd1016e1928f682c4a56df9d90cc43eaa9bb3508a9b21d6a7dd2d33549354c15737f065a3089f683f66ac07b7fbe8d574ec00b91b0b8cdb54a886cea08516669421bf8c4dd5de748acbcaca8467709b6778999177be7ef16aa4319b220fc25f30e03b06d21510124b3ad76cedfee0c30762b4a6a2190a37a3bdecca9b5568b414a7208dc3eb0fa34668e7de7ab0dfea70d891f6646402c12afb243c083ab075ca392f43c60da766c8b5eb361c358b9b674fffeeec933b177c0785ff8d757537777c71fd470d6c1b92985e8bcb0e28d891cb83d46d59cc5429fd81c7580bb1eb2734fdde390ed754b470de9342fcba8f6829b6ce713828a9b92a3eebd12f3e6b7ab026a3bc45175981c503e4ef66b5c840acaff98e501520608a6f67eaa2bc3156af3b369ef9fe992a76a3d2312cb0828b47c5e80102591ed193a05bf247eb6b6f3241d884b0ea71b4abe50f4a608b88a592698b88f9ce7fd6fd5b42727892217547593c0470b5336ca2dbb078a28033fab9ab1fa857a7a7947ecc5c79b8ba9444ad8fe2819c1c2d6d2ca28eefc5416f191f91895f35a5ba33960da1da5e71f78164c4823a5e38acc7182d4da64500d4dc84f71607362531d5fa2b9bb8934152798d794cad88c6eeba0a4540d82703f26c9cecb655379ca2d829296c7e276a434daa3c3ecfe06fd3aa786a82d0e430ec8a6b8eaf33da26d17919ea312cd7a2d5da24f3aa0456a158027f57311bc257c056f11e9db17df0de95ff1e2344fe4280a14b8c20077f97099c3a87aed1268b39c3d0da1f21c077c10a541c055678bc60ed9b48f82487ad801f2b2bd5d2b46ac23e8debbbc15dd5c61b8af4781781455b3023a845aa8a53205f432a0891efd86c57db529d70c17cff95a5e5606f5d3aeffd8cf27c180c7949256dc382dcbaafb11dd5cbed44fd8ca5d88ba6dacdd98be7c6e76ede77bcfb5f87a0f7854cd74a585a1426d8e9b539051dacc8b4c5ef8f1cb72ccc6151b27717898956b3a400873560f3105844ef8a65c36c75353b913299a8d47225cc4f776f0b9c8d5c028a8cc13c921fd65429a4d04f58dc2d7820d37c8ed4d49f3dcda59dada4da4645012ef0b2f116721060f87051abd34780a06ef485b527ec299923682ea36163863722722c1b5e695e0f9557c2c76dce3385fbc160280f8ef904418d99da469df9ddef7552a146ef085f8898920bd9a49b56a04cbe2fa994caadef5b6086c8eae444f60c30d741d9007351ff929239c860441dbc9b729f0a07d4f2f46f59234ec3d805ce1ab3f8130f119181a9a03a41e6f9f7a071a10e0cd55c8a1a083d7476ac0146d0e976f8cd3bbdcd0970d857801ab37364d152c8e5d225ef9df929ba2d48c19889b50cd0cc65337254d593306f2706962b9435d5c4cce23beac0b6502c6830d7deb75c89d24c890901e709ec93e16998e431114b91d3111e714fa9417f7832eb648f588304f05cbada8188975961b0f5f14cf35dc580cc71f7faad22ca306d3022f1e6b8b1336f09289bdec1a8113d3ec10a3207b0f800e8de58259d8e19450d31f3fb0ee88a29f45044daa0a54d84423ad4eb89622f8ab49da9c60d10f3fdc154fc65b2f1c48f63bc272f90491968c0848e0d4d2a6b268d28a8166a36002a2243f628982f18d14627a17ac11730cf8e31a32b863b226b2ba26d0dbed58eb77fcc9a1741f03abff25d8a52442555f91190b1699340c92ea7675535d1968d2599369a6e89a8164cdc8d7ba8bdf4457d1f81a8efe3f258ba75540823d7e0b0be0c8f183c8ba01e7a1ee13b6c8074482091341608bcd54cfe69cae70f1700cbedd19dbf1b11fbabd5f27963b4c57a8205372a370a4051a7693e05ef34f6c829d86b657d87429165fe4b03e84784c1461a27c5578d6f64538339bf5bac204880e1017592da7f5c94804dd3ea3455049ca8d049ed0d997cc58b444f080e1df5f685d63b2ef0cc81c9cc842d3b8ee00f8d1ef72c4c7048525c9ea0adc3df1514442a9a0a831e8958bf569ecacadb77f44bd0c66e1b9202689211c23431447380990fbe010625372140b1f330ecd546d40836fab6881a0ec4aa32c96ed1facd776850c4336a92c94b058d7689c60f355397dfa0eba3fe04764ca9e4e4137c29e7fbda4f9dfac531df2316c18559d80907b8c581546c71a5d236a68d0198ba100049c569b66152a659fe1a00559ef2726e0657012ce2e725b221759919f9473a6694db75ebe63e463795fe1fbfb5cc008f8187f650b0a3ecd98de21640527cb3637aded478333b4a24d1bed7ff431b3907fda1509227598e729b49e29cca67d3586690aa3c072cfac41fc258988b55ffb2f3687dca41a180329989ec52028d6fa3335021fbda5c252053aa1b20a40133289c0ef39e707998eadee8131f94b535256b37a06e7e4fd9bd17def7cde7f0f8e027f10d539cec747034ec518347e31e8e594e2e7d00109d0fd8e918e67a2cec80a00dea7e5245ffb6d130de0ae15b3f43964a1f8e2282f449ef16fe36b161badff9f62cf18d01cb21d2e3ab0325d9551238d5e4e0b8ab7dee0936e8541fc50eae2df9d56eda0424f8e7002b00ac0dc5d2690fbf9ade34c0b46d7fd8e7dc80e65afbe2f88665e2f1ec3a7b0c907208ebeaffcce70f471a4434dc52effe2ebb23525583696e12e46771c31dee74877322a44e083d2e83a032f122cd81f0549a9c55578f15ef745ccd4b9c777c1ea6c58f912c0bf0e5a8823008eea215e963c830d36135cb6fc0278c0ec899c18d1b92fc7bb675d207a67031d65974e001deae4280de8111dbc8978d209e12050a0ac733c615ca8f5bcd2a87472431844f855ba2b785d32e6d5e0d23f5c20c68796832a733ff4b6b50b3dd5554d869a0d0b19227c3622a7faf21cd57cd665b735a2b7e82f297f5b02a8c89cc31d58c9bbe3485da3b5300372f0e879be21d0b6423bee7212401c57e55504fe3b7f83badb5585cfc875bf0a4bc5e3c3d47ef9bd2b17bf961b5ada11d2c00ac865c002d162edc2eb8c56452ad6b4618318f770ecec2e5cef3fa9543197a96a9c031a6a18e8e51fdca7b25d606126d34a83567fda7cd71517ce4c0080d64d86ca9eda84b3f679b32dba62dad73f509b7d216a38b63954aea8d2dd6ff795c30302def9dc51bd8300028e0b3c23206e80530039956a576ab8d21ee4cc3b1c3ee2f3a4a741fa371086c28b2ccd19bbf446cef963f5c848fbc62b9fd0bd01f95ce5433b2faae12f3e48fdd4de75cd4ad6c35fdd26dd68270dcf7c3273c97e77f77f8295bc09175922acbfa3a3c63c4719f0ad0831e1b12ab21b78c954e39ddfad5ea208d782f3d97fd6886b4280df7ac9ce511f5f18cff1b785159d66c8cff7382b7833db7675153b5ec14658c01dc4c9d949afd4d760300d6a824affbbcdb30ad74b23dde49cb432665cae942063500c08358f4c7321f58e99385fd43eb4096a5479a3a8752c927d5f8b1bf2df58ac59322c4b3160e4915e9ae5e71e676b4c4f5cfb5bd2f56114c933b671044ad4efb0fb156f8f617a7bbc75a43f1fdaea607c1ea75bc79951152a58cb8b11400f5442a0985ca9996c8e16802c5096ecd0a3bc1c2a0ae19e2005a6c762e5e7fcaa932e9e3b882b265c89f29fa9798596592bc79038d897dca2741cd2af3995bd5c8e29d09211998fc6e513246308e6351f456ab4785972e4586d6a3cf9f786451a1e0a5841f13429188a0b5db0db965ecf44ee9769bd5c346421e3131a0be31f1aaf453c44e40ea0874820e6767fe35e3a5e122008bac4a3117fbde531eeb057cbdd27b28bd1e704ff05b892e76760010479f1e04885b72c757b1c3ec35d733e526582a71be415615393103d94f8d4192af631d823047b2d120c235547f9895a44e8c64f555a5348c59b1d469977f283e514ca49c48cd5a075cac43a5d4fffc66b5df9c4b6d1efb1fd5d0aeeac1ed4ca6460ab9a9068e7b34849128d5b772d4caaa763ba2c57bfc6a4f230ef3fe925a722978e5a95683343bf86196e1f7038ad780d2efccdc5754a23ac4635bfe9adb5801994bc9bf61d0cf2ef3bba446f5a01fe3054bbefd2feff829d6e4ed6f9ca39124f7ff959048af964366c19c9faf5a7e311dd9dc232bf545151da16cba2b7ffbcb578602073c139a29b4310f6f4e7c550e3bc8af68fd8d2ed8808dac14a8bfb875c411d8c3a84cbf63ab8aed74662c1efde1371fba61c90dd25ccb5b5eb1410af24b752ae21609a837370ddb1dd286bbd33a912da5a54632e17aa1590349db615703470c8cc5ba4da06a3034fda5cc9ee7d2550c412febe2ac53caf42be08792ff8f1c952c5fc126bc80c09a1323f99623c54282d07a890f31bcfdccfd55b90dd1605a4226daa65be75e51b3064813c2e69f864d90b67799f78a1e818dd9477d747c819470e15b3c3be1cbdaf47c577598d87d0201125423989e098b077fbd1b08774073f4ec846d15967f9dfa99bdf2912083cef4be28be61a239f5e531a0627c739f1d0eeccfc692fef015395130e7f8879dcc82cb24e8ae96e304c2c86bddc859d917f7cecb48e946614d97091af93a37c560d59bb9450debbd921fa13fabaffbddccbbc9be6e5e46185a7e6598cb37b2185e446d1e010a229f0cdc73b99d8c3feba72b651b9060228b7ae634efa101df94b8f19b7c53de59b656656d5afedcf4f27921af2ef88e2220b6a865137f86481f251bc85a815e552bb3d1f35bf12688d7cbe45a4409e430a067ba3c8e2a57c9e9941721e2bf28243d1cff37348d41c6aca2ce320592880105fb13080e3807cb84136b723aed6ca23de91172a49a99d0393c68cc94d654e77129d2f0f1761beafc9277f6255c2d772e22120fb2ef324750cbdb7c84c0d6c59c1220ae3f3bb635aeeb748e88cc4ff6e3167845234d12f6db8840f1b80101cab5f62d0d40652392113b1f3f3438e228a4b81fc4d483614638f00e4d4c0cfaa60e9008d56716060470a6df7c108722cfeaff053be4f333250306054c3b3019b68b92cf8b2603332782ca68ef41c6092c5f05f0d3b5da3c0a4c42ec2ca6c197a0ca32804c95c0abf1a8a432cec2b5c5dcc21aa214a484301ea87b35d5219de68e765a0d56212d8a73629575f61f4640813018d7d97f024b10a19e659102ce176b891ada7f86c03d35b0680f0ee10d2b2e8c08fa198e18d51eb9f11b743084781bb9f4b8f7054f530518c86c3ec70fce4d038c49df1e0143f34fb1844117fbadf214a9edbf056a68102367604c783911fc0890a58cd537eb083d1a5257c7e425882f1f67aa2f7824ca0d13f2829a14a3e9dcf96f3c1c9fdbb2e00ee6326690b3f8bcf5e314c22ba57fdbce40058700e54241e129cea8537f4a0b7971791f9ff44e1081b475006e177587db50546678dea354c9d5966e0d22356f74008b5e1057b521b6c31397595ec83734ef762dde8b896ad764de795369d25efcf502024f8368b1968d1720ac3de096dadedd28bdc721d4c2df1885c16f1a2cceb6f17d2282629e1c7e321f00ae16301675beaaadc052f8cd76f899bd7ce7001ed08ad23672438878ad72b6b7a6b96f8039ae65d032f0fafff0b80e9cab1b3dd1714cb8be1ea294243abe9f7a3b69279aba274015f7fdfdc760dc516ed928e59c3a7cc9d5f6688557e3e383501df0b440dece645a393d345652b6d49219667d887a2ece1ba490fbb6390881a16626efd90e5e95269c631181397b703ea1b138890a72206ec34da9af25dadb22104607f35d4c9f5e6fabad1c5e7b23e061d1c551396ab30c8e6841f55eaefa5bc47c4f9b1763d365b9d112cd1b0170b9aa5dfc31fe63446c93c129fa80e2b8b655e4a87785150604bd914adb567c63faa65c5b6364a3dbc26b4876638c44a435ebd1c6c12fe4b23985b96be873238b73d7329bca672013d80c587eb1c4c8a6f5a54d8cd31728437fd381536e3b67153a2d93ac6492597a82465483402245ed7d4d45546766d6b7af343a3ab9ed4ded89c5b2837553567ce7464384453a582328d5293354c6b9c72f9a8c5f37e1d4c7fd956efeac474a2bef52ade254646685867b7cd9d38e02deaaf2d3370c035d3afd79843b454ef829a04781fc658716b1a363f219caff1b7bf7ab2dd380de92286155fd93c2c0e40363b15e48c147a5709339ec3397b53da504e0a9c5af5471ea5a550e732fbad7f56558560c4321d9da707d9dc84b8814d488ac4d5e0810e0177715bc8f76d7c6fb2af5d10203ba696f729d6f82e4f59794c1da997cadd042d378047d0b301b643efbee607cd2d3bf4df8fbc4d0dedf9d01589d8974456e4535c1e0bb019ca761cb24859577a00ecf58f94f9f6c23e1c896a2da960f503050d8506961e19de0c493130d5ddf38aa9263875e56f001cfc46f20c90da3a1e722377adeece689c719b8ea2770c7af7d14e4ca706ed260e7a88a777efadb2843c6d3cd19be949214845d5ba32bf2194ed092059a56fa9a00e17a2401a1ae9655415eabdb6549d75bf9e6302f08c834e09559ec28b7f4e053cb2da0a114a963f6d8ad7b939688302fed00b9694d66e7f25b110da18f555296b9a2143e4f9481f442a3c18a32a5017dc77f20bd12b909d664f9d89367a18740ed378a7cece4f1db79cffba16c9ddb1cbcc7a9bafc6e921dde5e1a017da21426c8f7801e8b89f4dcc02cfd8c032754fc4ee6fc91568364f77f5b715e1768f1f05892be0c9f108ac23ac0211379c83bb12b99b20061f0cdb5afe10c4df5ae051105f6044e3d02c9840bc98627481cba02b775e57105148090432a7d958d0c44a4be0822eb8224e1c43ae6a8ea7c962f033541609184cde0fd2876a4cbd76750cda326f2e01ab81a0cfa4967387d721b67e6de90dab9c6cc569193bcf05a1cac27169254ecdb2ad260dcaa3106a2ca9a61873645238ad18889dcd0cac06700a221bf10ce3ca12c89864125d5019a76a38da635b7742c5aa73ce20d0fdd63c87c36b55714990c530cf12f9561e86bc908ba8ae6329884266982bca85b10da37d4a32ecfef6189dd26ea7a3423aebcf460bd2c1d0855fbcd95c815bdb473a4fcdefdbc712c0472bd918c6db54d6b990e55f02a58a87aa4389ee35812e04dbfc3482e4691bcd0cf001c0af9166067ce8f52a6c8a33650ff376ae4e4ca08082cbe95536588da7b09b3826ca00d571332906360ac071054dd3c9b26f920bb61dbd3155c39824af4057c03a1c08006fd040f490b443f4a4ab49ef08bc33ab7e00486916d35ffafdc693459c83e7ac9979e721a9d8627d7eef113011f0a236201fd7c0fc66b66e06c4176081c78bdf1878233ec594d13f91ab7e18804c62b9331acaccfd1c967a5ba76d4fe07a7fdac77491aa7b2674686b3a07b2470dab69b3c7726c8f03f6a01f4fb8347b3a0df63ca8628ea93a0e8cb9fb6c5423f0a3c4103c546b4a724e12fafc0db9bfb5b41ef438059fadfc3ac7d914ae123dce769a198e1b7230758a3fa2c92818fa04f85407c8d29b81a00d2fb34238459df4b2842e2074ffdc0c0776e18d27d992d0b39fd3575882531e2010c05e9cc2b29763b7d880d35d2aa82bd0559dccc1b3d4665560de501a5bc683a737ed6ab4efc6073e7769220dc3f7f25f9254d02a4cd40e4e9cf4a81afc2e73a06d52c6caad40e7fdc108589a15a4f68b1f040c6375ff3c731d34a585ece21540471c1897a595b8cc2025684a77369c6fa97622846d539dd5842f1bb48f06fb0849974cb74b072a83cc0208d319d6c59449a509e596ec02f7d122a6ee905451b29cdbe9f1316ec98b83ca53274eee478ad77bb7ab3caffd29e172207ef6592de9511ed19eb95068a718dafa0f52c0d9eb9e01019d272de4f7eb7b8893fdd3af19c6b3686787d40c78b93ef0b40cc48525c8651652181645406a47546c2fef7a30d37fda84ed2b5eba6f6236d89699c6f4ddc5f4e1df608061261c024be125b49d1879f46744170f4c478ce7116b50b533bb151443b8108df2930af66d2a17707af37dc00d6de26d72f5cc33377a3dc98b36e7cecc66de08a118fc6f87eab74c2de1887177307ff974f3cf3ea374f5b7f41e45bf3bed8579a8e26b68a418f4022128f71c380f35430ac06bacad7891e68aa72d0f27ea8cc2295add51c09ba96476342aec3a151f35f8ff456cd6c00226f93efcdca23f911ade88b4eadf9ec22e2ac82269095207fc1879f9d299a8978e9f9094c97ace0761c8a40180c51f76b7a4ec564dac78e460a4854adb13398ef4096297fc70128d9f5e5dad7aed14341970d889a0daa81814a0a4d2545fc309f650327adecd1c144daff91ab3d7ecbc93743e955dd0880e662c987085c85c609052a4ed7df4ca6b1cbcec513204dc86a523a4f853fcd850e4515653e99693a38466b30f674719d529a919db1e4afb3123bacd10d3eace15cb4063dedcd408533583fa45cff7c71177071f67c965fa20d7f152b420bea819107d88e220694077f2ed907fcf47df313c68ff6a3e16d799197d701cf2417659a861f384ed94909190000654fb12ab5a6f11b4190103d26111fcf69d5a2ef319b499918aa6a2d98d5c0307d0f1e87d10250004a5304e9803da3d50c34e10a3db401d4440ac9847e843caa7cb12095e150d6e295f1f2468f4661aa0a907319418ffa2fe937b96455a9aab6030b305fbc8d6816b2549950810e1e9dbe8b717ad8d41b9965929f945d9da25c6440f2b98bada144e1cebece98bbb7d275b449c11813706736f2a2bd3652a032a2ed0373c9fa1a7185409eb361ffb4c4b9d421072e8251072d592cc65d01c6454c35642035f351be85c82728f4529a19d3484a2dc410ef4389751b6ca7ac047f092c10abc564237352d34a286870f5b570156d6f6589efe87ab07f8ee9b6bba7a40d5125dcb8e3f7a6904df7d734d570f28596a6ff1f3d9a591c3aff99658001f6b43c6f476fc6914da625fa9a73026b5c4ae3a451e7054e59172af3aa2525ea5f96b7dce00c2950a400b8b02650324676b39733a8d10a9130c45308511fccb0f6e490ff6920d8f6a7d811ea0c05a37ba8978c1f43c4618901c1c1b1e1f4622a040487c11d04c857d1cacd63c76105a2cb507c62ac92461f41e3d1d836788a4144a9861a2bd978660a482c10dac42f0b6a536b87ab6b483ae6f8709f797ea3a00d6b52670afc7bc9472eec6036cbb9b32b93d2c3220301f04ae307176dcd6ef2dd5bedd9446b7dc1a6face3378d6e3c0a9aa52d4014486ea1de5ec00c237d82dec817d7ccf3e7a7b9486149b27ab81c16ec2f64d9b6d12f28a5ae2f60f80b99c064d39db2e30c414eb63928b1ef840972d146c1a4e810c77c9741e5e26a9972b063b0c8a93b5f76d352685637b44e2fe5c0250e37a1595dfd325b6eafa8b6ba314c1ce8d2794713ef4d3ca69e877c03da4e0b830e3a3a2e886a96f960f9cb2fc1f466149748180c4fbb6f48af65a76edf58e0fc608bb9aee5422ab06f80a208c6f29601f3d9610818a989eb3492036243b07433c61bb69cd1464a37b0d11ad9941b4d072b443f63532565041906defd5d2a43c297914341d3a703cd6a63c1e52d100c9e2803b651806cb77b4bd1b164e7c4d875fe0a767703d5cab314d7efbf82e37440c0e9cd135f28ac440014861767ca3151f23f6dc361618ef315945ca75980ee64fd05ccf9ef1e6434ca61a74197aca28d4c40b050f473fc28f1616234f2d5686483e790a66843b71bead10091768953b38cc71c63bf42c1a09a44f7bbfbfd01887cde83ac56278ad39ef945595335fa637a8da407aeb40bab20cef71841de59de967e3e6a64af6b6ff38e08241d4e6f0a28f17c561be9d24e8d4de0b805205140d86c9312e90eceebccc810d3fc84be8f3b359f6df9b310bcb6ad0d2ae5ad4d0fddfdb14b13cb15362e67a13f3cdb93c049ef1fe5ba4ea812c13664cccac5b895c83a6f394fc21d57cb76f3736d340978561f7565c0270eb3ef483d7d7149ec9db216776bc6c329b5b2be762cb71ddf9867a815fe3af89636509be01ae62432530aafc60f617e3f581d147262dca3ed2f5be1b9eb661d98c711f7c766cbd150d00e4b4342d27d27ead303b97e236e3492443e01b101781804fa26fa947b8ead5ea3e2464fad2624f729ba9bbc94854c652729f9ccc5fa7532b550346802cbf5da906555f2f4eb040f7b898544eded562bf10f4a7ef858433656266a40fd88abf7da5429b8bdf9c725445d2208352637511399d4a2707b0d0d871fac60808a8f93a0d33182caf6a966e6a5e7b19227896fba172d4b039db1543bb303dda812ccbc05a84ca819d289ce45013924de2068ebb9b4638fc052e36dc6398ba813a799ed0c5fc60580a102e5c1302039d5a709190e076231dc09019f3158c07344a2335ecfeaa4cae8516d5514c81d4272fac759bdd3966f8e7027377be3282c4f758f8e7b6f56efca4b6751b73050ce1ec20236cb849ee4b315ed3d8155aeead7fc01fb758400f08360ac68cd591316d02d5b13cb817af3ca415655c7c2ebc02ec81a142e583c8fb867fcf6d8454159127fdc45b66b5c57d6b4474ec3ae604fab56d3fec65a3e5cb80e30093ea0470829d2d88c97e61a6710808424e77f9f455f20afebd39e3611f22f744604e09c1e0d0f98ee9b50e855443e030f91668a9a21be8049bcbe9057d502d271f46c0c5ac8ee09397587f957cbab9039c0fb275d7dee16b449eef51c90be4656c047f549f6078063a24a46f992a4360191ff2c127ee643443720d6a6abb6b8bcd308b8e0c55d3250f19026ae0c46e5bc2b424c9d9e7591ac6739034ababfacdc7a205fa8b8a911df3081fb9dd158abd6b0022b396497c9a6db21f27d51ba8f4043357e860bf4282118341358c1e5d607452b52fe4e2a4b794667c47276c5fb2e18e69fe3c0dc0c0b4d99403ca364c949fcc2f66146a4efa269b1b164e0505cb3d1018ab045d6ddfaab2c5f51f3c78a75c7fa751b2bc93a4a77aaeaf8546cf902cd8d7a66f945698dda9c6b6f760d543d38a7118029048790b96e3fbc8a9073b75e22647efd32a055b79a5b5b513b95f01284717d6ed03cd6f2b530de9a753d6f20ec47d2b039d34572f5c2d24f71957e6547eaa58f05429fd0c8081ddb2c0e4d55661df80767be1aa41c19e7d027533b8d6271545616639a52906343197153e4a7c9d1cf8def8d2cccb5a1b88dc6f8abdd831623ea787f81f5f62a46c7810bc2020d9e0c20f0813af63866d4ec747542b2cec7d11e105add98926034eea60c2c60134ccd711f0d4251a581a7213aec0e9cea2c969fc82ce7605f52a18ac56369f0cc5e354261a414c77c971a53c5d2081909f661a46abad807d4abc4f0615c455369ad3684e5df0943a430d96198bc512b35a679af830af93e01381460778760881761b6bd5d62bad4b07b8db36903b23c4d22307ca75bf130dd815c3b363b8be4a63be8db98e053a5bd850bc620d18c9dad79db1196cac801384b78c52db91f77ea9939caf424e0b1174bd27f8154286329242477235c90b74c144e233c92b9b8c6794a654b5db5ddf520d6c17910c52d638d203858b4dbf27fe7089b8218d1d401ba4c9eaadc8a82a75e1b13452c69c8f09403275bc4b2b9519009722c4855de46a5c583e19c0894f648f7690e8b99e3b84ec71560cbeb5ace0f0689e1f6e23b98adbfff145b0f85bcfb86afa60b52ef549b269d94ada27fe203717b204118dad2e163010ad758d1efbd800bd85657586503bb909608fe456c33445201b79ebdd89d1996d7c8ce122f4d3c01a3a5956c93382caf54a913f58d6dccad7ac0c2cae855ca1f8ff17786bb919275131c773e512aa7c0fe81b725331468cdf2c36dea0758bd58657463df0c8d7bc8b594449c11f5bec63af2da1128b9bea6511876945f7a73a687e9d8ca375e8de9993ebe039f4ccd972324e7c80d2aeec2fa208dfd5218c004523435ded1fa5e5c29c4edab984eb77d5d0b9998cbb609c7545bcf1289097dc9e24484c0457931bf9a8c64f1e553e0672b04382e243f6e9bbc07b8f2637f5f71ca6f540172fd5f356ed95ff5598cb98fe9f2ee03ad75f7f500168b5e802114b3457ac2178dd8e8f1460fc28de2725b33320e820e2732971d4d97d9c59f00f2e952b449516ae69d25cd1a03a055a219c8589e01a33b88dc8e2a424ce5bcc24f4bcd7f6cd476a64fcce7fdb8330104e481a9cc280cf2c45dedda285d1ac77a8e412cd26b867fd2d0e1bd88bf987974d3ad18715ddd1dac748b98a66ae66253308fb5e571c16d94709ad37184cd488f4623471e60a81d0e7a44656cbd5a055650a7a142ee0330bb5d50c44e2f3538476c90da32adead425fdafc715ee12d689c10309bd5f5dc44e2bed388b58d0dad27ad515d61efddd0252252ee4f4c6bfaf878e4cb9b111f4be2a685ca790b449799aec28ea41679bd3a86baec15fd26b8a0da3599d5ce37f42afe8368896baee06fdcb3a90c62f647673457207ff859ed10dca7aa3983743c95e9637c2a53317c825094b508688be83edb6973f2365581de93ec2bad9d023d2559d6a375f50c893132d66bf5d428e7431705db2eb71b9cc6e0e9360e353d4891519ad0b5db970f6f39ba18d9ba56b9c4e0cd079cd515bd89ead1e90f3d8a0f4426bd29462af42595ad444e1f4795743b26b85a7258ed8b3cafbc1874fa3692094982908de933c5b3cd323c091909a1e78ac9e4661e045b022d2e9f0481e48cc1db8e2f4f97b96c4e3298b64c78eb980383d0d15af6b5c0c358e34bdd7a1b411c71677a0a043bc362353445ca7e2a400c47d8b9bca78da5aebcce237289f5292c2ba56d3324ad188276b352bd3bf840a2a93ccef913718b7c9c57d7da5d1a5bfc8e440b1cf539244cdb9626861845bd3c00c28e0062fb53713b99b2c4f743afd04e569268e11b1cfdb801446ded759f917cf38f43be98e50a873ab7263e66ff738658e2e9aecd0ca14aca45967ae6f0713a5455a9cbb2139e12f177d138745e21482b4413817ea5df633dc02c35e78ec31ccac540b6436833371e7e40f2cfd57694b7b642db51352181ae222514dc95d2c86562b1fdb3f162c260746bac9a0b59b7590469160a1d3f2e5a3a6b1eff362d04812761fd7980446841e0688b256bc251780fa3dd37b7b90f1b2e3d013b12dd1a5be3bb8fb26f48c6c9be852e72ed8bfac17992d4ea7beb927ff49cf29b68c7ef5728bff0dbda2db267aeab91bf62feb4567cbe9a837d7c97fd27bca16a3afaedce2ff436fd4b6449b7aeec6fd67bdd06c723aeacd3d58b7b31e7436398d7ae61efd27fda046dfc8745b45c73d97a234b0eafbe3ae858c0722610c16ce75c3f2a219cb86ac4473172ec6f8047560c54782c761dfef22b4943b86f701eac88c8b6037bd6295d0da303eba6a04569b31e92aac8e3e799f0c5aee68e21d1644976e332be795ada7d480bb596bac2b9060993d8d5ee78dde7561471f41313333583763788d454b5b70e03403a41a5a8ec26eec54ef7d3a4c9b02fec0f7dd2afa2941a373816e400faf75677d7d2368b365c408559b1063e35599e8fad8a6210d460cf622e85882f0a11f121de9bc1c2af6f3a6d92d341758155906e06d5b009bb71133cfe42ea7ed9af5984675fbf52172b48502eeedce84eba1cf349f1a6476e77953749f3dc4caecf7d0a03af7dfd81f6a664f8a5d4805e55f0829c65d32f9a0513bacb83ef6af261275b0133453476b50a50e49bf8428aa4afda82b0e217ac9985a50788e1f4a4a7f4841eadd6a03cde59664ecf3971cc379bfe6889dbeace45f7bf16778e31fba232c3c325b160323ec29e582bf21a9c020c3429fc1407a8c88eb7e2218e8d96601aad0566417134dc5c392a3caa9ab816e4af73d88114ae13d88ed0337c107267839b9acfd61bd565e8048cc8b1f492377e60fb87177a68fa2913bc31fec4968d5f2e2476c349df103690c9df92337becef4c74b125a35bb580a36029ab154699ccdfc2137a6cdf4873c09ad26bb588ad16eaf19f6b781933703f70bbbeb66967b97b4efadde45eeb4edb2fc839eb41f9cc067020570299f4ccc900642a5d24d40032edde7c44898e1dcbd13ad81e3f83f01933c70c1c1f35b0df41ae05c3e138a34c21dc78789398948a1c467f0210ce849410f9b3a041f1a2725d65df942f35326770f3f27c824ca851ddf79baa0f80f9dad6ee0ab3778d0a9fcc7197c40cae9cf558dafbc366d44006bdd58f5e41f281f0ddad561e3f83a37340d650468670996987b772d318974bce9b36b0ca58b12d471ce1accebd15854bf3a6075c7bbbb02684ea20a70e23e6163b8e9bfeeeee4ff698f462a1db7d556f8ed4130988e9665f2cf4c245f713a4e00959eeca972e2fd3bf73f47b251ad2b076a4636d4d41fe92fc9ccb3064296390fc851d1c84cb3b238baa6a65466d6ab7796e849c58dfff0dab28da8f71053afa3bea47e64e55136206f4e1debaa17493723ec7b50d1ba95af7841673bac43afaea657099e48b81d21e2f2c91d232591a53ec92ed72e2f96ce3a70924dde51f03d4777178c67bbfe5ade5caa9aa957e23fb52ec7ca67e3025f4b5febf20f49d76eeae95a517c970fa040a78a5a57735db58dec4e9f5b1f2104de598f230dbb257c48639777acadcdbef7124ceed3f73d55ef1424ac523d32b949b7a23d2f5d382f88912080f16293b7b8eeb1fab2e7d5475dd936cf541c54cfe3ebacf3fd1b2bd41b49bcba4ac8742b9b1a6016d4027ac3420d334b5653df983bf4f86c44d6ad98d0e077b4f83a71562cde5253a0fd65f460551935ea1d4e29bc7f95ed206907c876486a87a43be092efc071e2a12c2aaa4b08914322e1e5507a6d7b086dc04b5293c402ab660dbc1eb0cb20d8b9c2158543aada695988a7a6076e70f8d75f9a1c3a910a4658fd109ce210468649869c2158d7a2b343de5637a88102bb46d895f2f9dd55aff6a2a33f5e6cd1df413551df8d1602b2c0201ed8474a9aced82afa0829db918b26e4e675737a34279e128767fc867baf2a78e903302314efbf720f4ad39158d47e4cfdbe2587ab9acfb6dcb05a946e0e797bda995bbfbea85053201df84799cc8d6312426df337796fda21e338c4f5f9e1f636ac54553d3a6f5e817087cffdd8ab3d5bb5a0a59560f25e69044f5ee1ef81691c34b70970ec7f1bfebcebd9db9d28a5a22c25b870e7fb1fc03b8e38e70ff41c488f920438998713223fb01788a7319e8aba51e4811216da96cb8f9617b31b304380e7d4cd105ad9812ae5cc53f2c794d212415705d6adb9d85ac522a04a7293753d46f92bb86fe529c010aa605ab9b0d49b1a38737ab1ec0fa8d5fcef18bd69db58c1e7ac898fc79d050653ab1127db09055c05856eace8353ff04d3359cee61f5963b198e50b5fa014af88da9f076681b9eced0bf6c64c470f328fbe5558eea33b7499623b435502e9a19c85fbee642ceec25e53918560473e99640465b9b4b35bff8889dc153235055016b68f3147749f4632a5637bf4c899ce05e25319b06884b17d88c0364e3d98f72c2b098a1fa83c1d7923fd8753fdc7f0fda5be1b8d1cd13e5118928ddd6595b11ed03a0737121a6474a6040f7264a1636b4643f140900381446f8088744797f8b0da78e2fedd9385cd03a79ff01f18e69848c01dfb43db05162f1dd6faeccfb769b5826b9e648de8eee5c660a266b52f28b687694ee8bc75d284f860e8bef308dbd11d6eeba9dd66844bb5e4b47cbb7fb5b357bb624da66e9dafd79f4ba16887faef46992d106e9f538db52753ae9f45b5dbf261d12854260f0e464ce4dcd41ea4e61ccd6a98004699cb3329473e0957b981691cd38990c04659e2937c8fede96aad88639f20d809217c470c942af699ebf32f0a6127ffc46c939af0bea0963012d11572ee15a1c5a1daab659ce46745f679248dd2eb43e088944af15453b6f2ed70f5f21f23dd4f362385e3d0bcc2d723f68bcb7bc57c550813f456826888dac64de1148ceb8eb4d2eaa83d4fb2615e098762649782380610761c179d3a9aeb2e7807edaeb6413731413f99d2c64bf14983ebe83f24aacfdfb0ede174b855649826f80ddee6f8590990659c52810dede85352b1aaa2298064af2dcab99a212ea2512365ba19063af505d260a903928c696f9cf77c6fe236b2e929b422f1f31d436fc16ace7fc40fff289bb748a387c2fc850e675db888d966d254288b6e1b445512755c02c574bc1c83f445d23fae8fc4664a745527a33be7cd750b7eb7584b234a04cab422fe89c02335b2cc46ba2ba639c6a48469d1bfba8248da519c62dbfe6115d80f0688364c5975742a92e86fa20d1c2a58071b98db1a882710fbc2e3b6d4f75df7609ab7184664311c2b7972a521a893f8d6c87d180001347862b820cd4a80b0e46f780ee5b4ff3b82495426bf6156a7df4e0865cad3a77b58c30452d7860d131d526cb8e7320840a9624861b49072d2f60ccc99c45070283a2762b69d02698fcb4dfaa5b440126a0d177ccb30b05b69f5e770392f8c3f14aa03c9da10685b2b66d860b823a804c174285610b03ab152cacda584a32cf3c5ccf7361815f6f0fe2a299084e6ebec828587dcf93e8fac6ac0fea1b8947462440e21390756f271062d3fc5017e82b7abe86e9506c1cbed4d51c795726ecc446716348f38bf9c76fc49deeb67fcf84f4bff3d65d4332e52a620e2a1ab25f28cbab7fcffde17bc7402f625185230391c4703f53347ba113c67234f235dd90e6461a9963697ac80c519b143d5a2ac1e24495dca065c31042d37ee89d73b4673aa3a2893c274fe0c293656647de98426f0903157b116dd3a7e8b9c16f4fa6cb077c6eed5a11589866d5f4942ad64ce58162690ddf6a6314184bfb4a7f30de81d533facd53e4644cf00d01ab316ed16648788e55c886b853b71a92c2b4f18d840599819e74d43849443c2982b46e003ebb454150d2913ea58e5e90261f01d2abb1d0fcf0beab38ff2f9027badf5f47a340abe77d75623ad13fcc7ead704c1340400a2e10c05ebd0bf13a031479a1d81076da779576dbedcf6add9fdd87f88ee410737552cf38771b2e4a0bb00347f1217139c1ada63beb990507647824053f60558a7da1cf1fc6f624828c93ad117cdbe05c65cf4446c3f66ea609e87744f7774868956d4d8be342a65a8097eb9fc7df256e9c8627db6c23fdb69186ea0efca974f28a420f9fc0794d0043ea944cf0e59305a19271d4532893db1c71e99c1ee2b72e4128c6b4d22f7f319f3dd44fe1ace92cec0b627801b29e0550442d45dfdf0cda9fb8e732bf9f6626a4c413c0cad5445701a7834b689af6a1ffc406bdbd41a216a8d1042f6967b07570e980fb00e5d0ff4f321f3be996c06bcb6213ffad68dc4158e18a58ffe7d852346c9ca7f3686674756922e890047423d6f667a747992786f24931e591ddaf34c04d43e3ba71904a0767a713bcd121331c65b7d8865cd620ceee969258b693bbeb13d87d3bec5d051bf1e324aa4044a531e785a6bca3adcdbdc34fb3580cbd04996201354a59a4a00ef76550d524ae9265b6c61e39047158f3c9b80f7bd6dffb6bd35aa4296b6cd30113b40a149c6550aa08a55793aa95100afaaab8a2958b32ccbb2ba84b904f07aad690755d77260b2cd6d6e736eda8c024739edd606e56fa40b215916c3702c1e390f701cc79de3388ee346a377a3d168c4591b33445d16864b80b7d5ca40d5d4349e99533c30a40340c508513aa665921ea19ed2093b7447005574b25579bc4013c0cb35e5e84baac216b580a453c8ced2319f005eda2c5b4c1b5dd0943d497a7ef41c0265131c2ce9cbb5d4a14302382fe7b444e0bc1c40473d1e6912bc0874b225bfb904acf2f5955d9e6c551fd6c0440d425a9d2f3930015731ea331b995dc5c8ce5d08673986d14eb53a990036d1c14fdf0a4e249de41e5026e9d9c1546615500a5551d2158907402954c5a765959eae42f5208f92477a3d69b31f51d4f45d0e40005913ca8cc2ae2276914ea794a63fbf76a04aa7678d31ecea3eeff475ead84389a7227da990145a44a446e8119122e191823cbcb56fac594b897c52a7d222b4089221264ea2d0293b7c00196244684993fa845d27714750564f89b04b72809fa901a8b3835f03b6577b6d83efaaf6f56029118ec3e1ce3e1d3e2b258b0b7e5e4767dbc14bd0eb4ae2779438619c589b7e3d6c37d9fbfeba7e3d98ec55d10fa40148845ddf66e9107b7566df17697ef7ae7ab3ebae061fcd1f7d31c01edd86bdac23599cc9a74478a43f89dc8825cf515642d1ee2a4b494b57476f961639899c26d21c4819fa4ca4468a002f0dd2949e06a143d845a416b55cc191410a9d3ce5994dd96955d22a948a3081c8109123c280061e174401090bc290e4046010826d3c94f87810ad086db46d3362a29b90debedee8f6b514a282032d075d5f8f0790cec7280a2a7d6a2914c5175e606a291445132c1e8097d581aa6c347bdcd168ebd14863d765d17c980ef5d486f4ba2f8902489b4c2f89f3d3a1f4d168741ebe8f2a09bcfc2868fa143bf1e63089d94be2372b89744debde83d491b8796ece296a3fa7a1811b8d70b6e6ce7ddbb86a411b2e1bd234b7320001cc2e4797bfa4cbdf4ee49a247a3d12c1aeecd264921d549a49adde35718e5abef296f3b40d0b45d1a3695a0aa1414a779aa73560b3ab18e1591e9ea74ffce9907a3729555d7e1b1d9d44d35362e9a1d82256167145dca8971d25765e85910e840b1eeb6978ac2a208057d5b2e7c79899a344d9a713bf63bbe2619ecfd35c9336f1c6248f9c8aa73731875b753a275ed944e7e8d3fc48aa907576a15edf625777b29aa6cd295ba374d28f465a054f454d0345d973a2e103390e676bf0e0bfcf247225f11379903d2d48ab5679ba36a0136b9344ae47a2d7ab18dbe579ba1e013d1ee7e4c0a95d4e68657a2e5869cfb24bd9a272a2c7310f709efbe52849850a15249c59d46f9ce9a4b98f3cd0791d27de4fcb4a593579d9e824b192ec9d9f0fd9cf890a68f9f590fd72531e14d09cc5514073ef404fca16729298d6120e6e1d8db3dfaccc6cbd02919229ad7dd583f6ec5abd1c7bf36b80f611bdb34a73557ab47d3e68cfce89a6de3ab3940713cf3627103ab9036e3c9024e93cf7c663f1deca07f0a5cb5e7da44bf17a39ddddd499eceab331405bb22f953cd9d4de4dbcf4527b73fac66bef9d277a2650bc5e832f8937a74bef24bbb8974aece417833ea7b793c4eb35e9a337a7bb6fe04962e92af1f34188ea36acb2db4fa75e8ffea10e8a9f2d895e9fc44badc9ae36528a8adb4922c729d18676e335ea92be781c16a4a144ae790778e576fedd7807388f12676ff652e68e126bb7e8e8ddb7d0f34e371d7ce9f492744a3aff6457dc57a36f27ddbb495c8d569ce79d9e64ef8ab4496f45a26ff1483f7be3b53a925d75a4afbad36f76747b571b7bd293232badb7f1fc7a30f5fc8cc13d0f9a9854d4757207ece6b7830fa48faed77745e5e767a88d41b2d2ae48313ddfeab26cde05c9c61871dc333ada42d2258cceae4636066733bbf261742eeb2e3ba73d6a5724edf57c294f69f0aab33146969bdc4adacf26a45d3191d947434a627827b9e819bbba35f2d9a9ac5f65f492b333abccc680c1a33c0d1e25b577a6d5da8d697eb8bd53ad36fb6edbec8af3c495f615f7edf4f5a4156763ac341be3aeb4b73a6c792abfd9bbd26c8cb05b2d9fc5a8565a8f8734b92f742b1c31b4158e185a8c6aa5e5dfcf8b4c04487f337b239934fdcd4c53ab43391e3a2711ddbc8bbb322189110534df9b2c18f273069f03d453296486292db3037010c0eb0531839136b5142a83916ece39e7a4a74da77c16c02b9574f55e1c06bbe8eb65a8f855c330f3f5342ece708428e6b6bab2bacee6809499cf2165e62511fd0092ce24eb923a3424c88e1eea843681e4c8cf0f96c245444b880cf1d9319f4c27424880fce4c8a1316326264af663122d2132a4fad41d4f9c0821a140e8cf14294c888a10e11eec03e58912a1093481c472fc406346014e39696946cac8190528ad941967f0c839002f0d0fb3f933064cc7f0283f1e66cfcf2cf3bad089330da07cc74c65adb5b46a96b2d9e29836e8b873ddabd89d136fab397b30e4b84b9ba330f4b722a03559d0dfd91cf72e0a909b42a4419eac7de3f85d1a40eedd9ccc515a4bab1859672f475f636b2200c664416f68e2be5feedb6a6a6548193a8347fa911ec64480942c48a7618f0eda1b96ec672fd3b30ec07a8f3b7b6fcc1e8997bb69b5764f5cf500b676b0352b33263ac92e66d728c7ec32e6d268fa09aa42d65b630cbb4aadf18792f816109fc87a109e18b284e8445558832482aa9b91e8819c97d3f4991cb38ce7abe19ee6f0e38c9d3e48c03b7d8e381962d2fce9a43bc7f1e7107d491e7da8995fe091e65f86128620f8cbd1b3137ecd230cc3a79482b7e1790409bb50e7d3f953490efa6a3983e7cf22d308bb58ce9f3eecd27af0eb8720ac94302d96f49ba36facbf97de7d37474effa3a8d34f87d341f029f1f274ea5de6b188a5cb2f653299ce836c93359da73fb144459378e94ba26a85f2f48a0afc07de86a6449047067fa0af1a09c36fd2b706f59dba299b5e87d3e5974314c0d34bff7838fd137360029e4eff3139cde6ef3b7da7db303d596aef8d67c32651b6c904526a126d28ced6a6bbd326ef7b373df17b893f1dbed2fcbd7ba26c4ac9f0a4e7b43707d7de67a9387b5c9e9e9fc5d9daf3be79409a89c8a62ce96bc298c920a5ab956dc3dcb3c2252a8c01288773b81b30bf50ab0b2a2ea8c8ef58f444708e81bba9695aa54a95295dad906db33b35b0a0ccae7aa85d5fbbda550fd9eb335b2995ada9f10c039379de3e07cc1667f337ebaca46ca4755d771e6477e7699278dfa44e249db9671fe5644d740656af8a379cf4065dc6949fd59975cdde99a6125087bb6675720a3a13cbac8a393001f9b299f932bcd3cd1bda73b818dcd36c29f37da8538ef559d70e34c7c86a6ba20e3753594b38b4bae43cbd4157eb0dd2b0793c86b67e38b33929c32f9304a014328392be5e534eb6d8ce1fc916120d9d59514e2a64a0e6a6a626033555d3c9da463d7d47b773e7d13b4ef446226706f0cdf576d9f45df9357b389d99d9ea71099ae70705445c30c39013a4c02417aa00842730f12309204380c987ec72b5fc8c1f847a7a6c60d0170793974010a90825cc7cd97023a115618b159ed5e26c789c2f78f4a181c972f6a6a6b7709b2fbed02307323803178c0c614607636882c813580803100c7006d0a708cb0a859042fa22591bcab11a64d005161401610813b0ad0a5a1082124f48a2062cc0369a201c98acb0f7a6a6b9bf904236f41516a0b7227cf4e6f5560490de4eb06de3ece57a0a50ecc0083ac8c113440002db00700313a481064d90900228609b65855c8f449a99b342fa6a31cc7ccc8461137e64692934061ef49de178fb41977a79d2245f33537e06d7b8e017d72295b4ccc97a5e9584474f9f5a2601410f28403074cd68220d8f457ca064ef666f6a5a3bcd240378677898b1363c435f1ec82e02b4f6900cad9dc52e53cb243c52d0da5bfca230ed31fcaa306db3292437784288c867071498768ebe12500514342109124b488214609a05c9007ade28b6542c7a3c860c333fdf330a78677ad6ccf06bbee684cdb3441fa0ec3a869e5ed152480c56e8dbda38cb78903c90210a2110210411b440b6a82d3fb37fdaab387bded8813bbb0edae5a7437683256558058bc98de40948aa80e409245fa042e8f8b583fbf62a5b78cfa68471a284b1e400f89b286501aed87c1e333029077057343f85340087c105bbb2ec9aeb3c324bcaf033318564c12ca7a51674d17c1bd964868b1a19cc573669760010be2061241938203011124656de91712d414f2ed2f45c3d811ebb381d6a0d8f94a62bcdc9795f8bd1e557b205e9f22e1201dde543d9e207bf681886567e5d162d7f6f68392d0ef235a1a4902fee51a15aee620ad5d0d0b8984253680a4da129d4f4cc43585c78c8a68527557862711187e470a72e3f1d5234352e525af6e90092342df5ee74f9e900de8657eea5f8ad61fd0e60f50bd3f5e557ec7a17f92abd3e932dc4d76b13015761c3edeb43d9c2f46aef8d8be6a470d6d321078fb4a50cfd45d86441af427cc123bd0da21565300c952a42506a7f01b94d968694a12f893652867e3e01dee93381c816dcf45ce51eec837fb807bb7eb0abe5f40c845d2ca767200e52eb2f8d94aeedf523aea70f7d01e037bc75974bfa5af1f0bc837f0280e880203c41c2c8be41744010aa206164b7440704e1090923db455c213a20085f9030b243f186120a4ddf22b28897eb95aabd9335dd46f248a39894a197b5e7c79f904d88b53b2e60419a2a95a16c0e1ee9b70d490990ac2006486c5063e2ece111b4399c00eff4a9535e52887fb00f1e692a4dad648842c2c82662fe2011414ccfeed8638f7bb5e027ae7aa836b457abea2db11d97bf7c87e52b15bf0e16df69dd9e50a752e9333dd66275c476641e80efc41c008fed842c77f94e8b0db7d791fa4e8ab74aa752a9f47da6c7588fedf01230f02b5fc9645a013fe3c2127e070533a9561e5b796c07069e45cbe93ba5878feda4b80d8f09c0ead891b141de636c50b67a6ce7f497c7765acef29df02ed761fa0e2f015bb98e1c6c6c270036880f6383e6633ba30d1a1d071b54bf03001bc4fd061b447a6ca76583ee76b6e10a1b74bb4f7b6b83ae76ce8a36e87227d9df065dd24756850dbaa357cb5add061b74eb331bdb79790a1b74b37b5607cbc676beaf2cc806988fed94fe624136003fb683ba8b0dea6c6c27b441a4161b34b2dce92c3688b33c54b015958df9a480c54cdf81818fa56c6ca774940ddaeccef7930dd2ec4e5d92032660a02562ee4c123881ca0a6026bb53b24199fd6c50b5f22d1e12774cba5f1c29d4d35d2745f349dce83a297ab3dc7552b4662f0e2fd1e09631210d4668d32f8e4e8aaef6e2cc3000f9c209ba945d27454f7b71ea921c30d1df2fced449d16c2fceac52056772410a42a068ef0534953ed1b31a50d11d69c46d5a66af0654f4b43634a0a2abb52125c7791e08aa5461c8e2916fa326a1a3b2454ed6b2c50d9d55733774589a7bced6dba58e4b6fcf41c916377458ad3d6776f61b3a2d9d3d476b6e7143e7a5f939b4995ea7eb79794db6d049f56cf1916ca1536a4e67b66ca133eaedf29f6ca173eacd7a3cb6d0a9adb5d039c9163aaad62c98922d74b6ceae63eaccaa58640b1d6e6ea1436ad64135db9047d94227ebaaf375d559e96a5936c8163a9c0a7e0bb6e7d9263541274159ebb460763013553cd2673632abe2110be0f59ab2bc2ccbb24f99c210ca2005296040c2053b9841110e37281a831580f0c3029f2accd06c32036162063e30e20324f8e10418a542d3871fe90c4f0fb690051f44c0c2900f8ac068fd2184f96308ac1774010a2e90011a90e0050e84a0270a16a27882079e98c20f1e74614ad9f1a783f67ad91a6b1792d99da0f99dc9534a27d9a5035ff2b9e6c9af999d5ccb6f520b047ec2d54ca981e23dbbe7762f396d4e5bc57a1596d3b256b36b64bfbd1b893c1abd52f13cce7b6fee9cfd829a1cd9cb59cf7247c0b7ec5b65662fd8949e5db5f91cad58e002f582e9870b28d759d32409a29a0493544d26d2581a17490c614bc2085d0d4dcc48c3faf1a3bbe6730460b54a40a5512d9394c00b60c54127a5abd6db7be5a7ab56cab44a150430dbb8315b56a9d22df857bef2287f043c97c3ad809674521e9c555a4b908551b5608b47b62520eadbe2414704528d25077aa0041f54583085343c219dcc600a6460a283197c800c5228c18f540984c068d40ae1381b5298f9a1db8214d0600d6a10c193133c600951cec0a3490e881045144800e5440234ac9ee0389e1fe0a007450883134c8010c188884110175ab0430950a2c02a14485004123ca1eb0aacd62ccb987425c10ebad6da02ab35e32181121e0ced800827708108569534b1829f1abc6004223803acd28d856e6899840447f44acb2449a0419b828f2248fc8008d4b28d63ee32910049e0c04b2208f4058f73a46905f051e402862746d7469ae49200926a4a278c528d9fd034262411822e891f4ddfa21af74466439a19aee5030cb3003ec2c09fe1d7b08b003ea4e0436863ee03125842085e2802141f4cd10215a450c4044d08a9411a9e408135cc800a3ea0a003283930034f912bc4a00b5430328235ec60a2024da86942abced0ec20e9397ab047901e439aa66094d2cccc2811849192a66f51ca84adce1b22e10356220c5b2641c2059d6a9904891e7dc3be9ed0152690832430410424433c18c24e5111413872042a10010430e98427482021843118290a0311d80e60b8810c887004143c7102a26c0941492cf9c008a0d8c212376841124580421252a8421356aa16f97aa1444593cb444df987bee415c62084256030048322c200a36720fab231c11a961cb18521409a80d1f310764926142141d3b3113eb282a66724fce260f4aca486c7f9acabcd9c40299a12a5e9271576959a9e7bd2d0f4bc837bd4daf37308fd2c423f8fb08b00424c50c2aed5501796f08b32a1b4e787a02f1e7a1801c4c71496b0822460f439e88b470548503264094890a1081dc0a85cc2e7a769ca064d3f7ff06b058c7e0261319440083d7c74109464078cde86befe821c80e0c79122621082cd80a2534946d0d314462f448d6bb6138638d18524ec4048133c80d128964072c4080b7c1084266074094d7b2c694aabf042c1e863ac0b1e67cd4c4c0dbf668fcd57a56f0cd1d6856eeb1bd29819937a4a29ad4900b729ad181a176370694dff42060c4a29189a520ab6b44c7284148e48d277c6091a8ed0012fb104c7d54ca9e1255aad1e3f7a107127341866d2996d4c56b8664b8189abbab0115f2801ac2d931c71839e2139f0881a74ad5dab95b104bc72a86918661ec60c8ece577b5b3d4fed1134e083fc90f9ada9b54c72440cface38a93e261124a2e0832488f8c1cf076099123acbb24c44421a80a8bc600714aac03d9c2b3b18b26eef4dabb9d725a0ccb2873d8ed059965d66969900de3ad7c07135536af808b5b6a8b46a6a6a6a28e523cc39abcd99555a2d5602b6ba5629d43a02b8d15a8f94b22cc88907b42221fb41129f23acad3042cd5e2b8bc7139068666f6abad650071e2470429322262698811443cf5011625003911f48210922f0e94a405f48219b30e705222842851720b1e3670754d2d0030f042901c21a86cef0896047656dcf366bb3f5fc400962c0828f1082c0aa0d6600640c5b28a201152058454257239ae89a7535c20b5d3f58ad190f6536d5882c74ad4644a1ab06ab35ab9587e40c972404456c53989cbde0d7ec9161c40f237a94b82d4a419f264de96f6fb537ad9e4d8304f0ceccf038a3d0f4accb168c848c855c5a26f101437f2d93f864819aa108b245ed0ee98bc7073f38c219a40059828233c0e64f5f2956c0040b8056b0831f25b07939cf4d258ed0f392089d9c92862e884088066980e2084c62c003513459c20307476802268d4081ea839df4cda9f5a702a93f7cd413d49ffa43824e8af5875aebccb25ab3ac6633abf6875a6bad35ab5be86acd321b5a6517967447bd595bd32ee5762971b6d66ec3f5e79a5d8af355cc9e892ccf9f9fd386e26c2d7215b90c8928dd4d8f03b295ecf71d758ebb39a667deecac7e3cfcc02e593f1d38e4919ef5ed57059a441b5afa277a5d3562b2a0ff814f12b923e0a847f66ef273b86bb6a1dc954dd44f87ca07a7b60220c0c93002a095c724a047df625776d6659df67af37a3dd9de9c16b5aba65619661bdd786d03f07aa3283bb8b82cbc76d153257be06c481e2f989d452b33e0a2abb531cfaf4a90fc223d3b7d91ac8a61f8cc7f715309f0b2d0368e1b691ac76923f1eeb47643f29843e9378ed20b215d7e129846cc02d093ac0d934086f1a6c8312d83146aae3b93b665f7549399413b658935f8600a1459d8022cfcc8cd43831118f94091288ad8e0073056b554d3de90c605bbe667d8c52e28cdaf3ca8c11023886005a2a228309715bee0840d3c9005258c0063259a89e8825ca20a2a18431226849eb004187f86be4a2c680224064582c00223c064119aa550dbb00d2701722d9310e1a46f4b284b41275bd77426e112f0ba68791a7ec990a184c562b158dcf2dd0c76d1cbf15fea0b9c4f420451d3df8405cdab51f845fa61183e2705ac54c21da49f1e24a1e6dfec47cb9386624c454c454c454c45da5484618a1859a244099221234754e09012700af1384943cdcf0109e09d4b7afe923634dc29d473fe987c4693cf4d3e261f269f36f9b0ab87298809c81c32fde8714d3e3c31872580d5ce253c0ed12a347f7000deac49535393974905bc2613169a6fd6a477b0eb9a9ae4b0ebd61c4a7a9e1f333561976c92510152a241e95184c936058810f7c487089114d982cba0061208482320fd70c214b2d085a2201e08c1084b9a3f0ac12889510a462f18a20528caa086d18e244970c2149c349f63817c8dcec9800be278c02141c306852d079c07b8107049703f56d0021452b61f6c49b6246c44cddf46a0754133827c8dbe996063810c886c3e9b07d0208625a0608527cdd75ea006f91a9d9f4d41be46d6c60c509030920639f881d0af0644fbd54cb0fd6a23f8d540c0591b3358210b9bb5318316baf0d2ac8d19a0c8c4e0a2d6c60c52e428fb6653b22631605aebe131078f758efcca9a300c3f733203d6844252ebe91c3cb6429694b20129c3bf5b2c9308d0c0b439524607e0ad3df9599366768d667008454a182380b46422044efa9ab01082a2eea40b5236338ee68004f08295b29c596915a3a5c949651530f89c34bf1b3f29c82f09a394b2466b06e3327bc79a01590224fbd197e39634574b8b50233b00ef0bcba9829a644b39d2cb73745671565b3f0d89ee76cd97b5f2ec20970c0d09b2a3c74913488efcfc905244b484c8109f1d4f9c082101f2932387c68c99182923cf444b880ca93e75c7132742482810fa33450a13a22244b807fb4079a24468024d20b11c3fd0e022204fe6d7667b777ada6fa893d256a00a84ca94264c8c14a13e688f28508694046120eea1d2449323467ef818e246068cb1c545c0696bd6e372ea2025a53d30cdcf2a065036e141275b97895a7b3737b1f44e3c9d7e4fdd49f452f7c4d44fe28dd92f3930016d9c8efae9e5e1b7956fa89f4ef7c4ebf5e5da5badd818a03d7dbbf7f28ebd93f8f272d44fe2cde9d3f9dbc103affa7696a3564e2b76c562638056655176b32d979f0faa8317f5177bfa0a75ef9be5935da16c0cd5c1ab0e9e369777d3037fef3812d03953a5ba77ba0d7b2eef2e6f6c3fddc55ed0aaacceecd3adad7d31bedbcb4784e23d5dbe45bca791100e80e0413674e60eebb1950dea1e74bbebcc2ebd439d6b0066e7a3ec2ac61bf537eaa7e7cc5ec5409d3baade989d333ba5b297a7553fa12ef9b53acb25db5b1b75f02b51320c686fedd351281b8a126f8eeaa877281b2aabd3f7c6ebd44fefd84ba5be72fe62704fbd4b89a8771d7f3e74d4535daf4f4771a7ec9d9d3aea2a91857e315467e106c50b9ef4faedc08d7a6ae57495f5784c89a8469d3bca5e50f6d07d4e1bea6d37bc39bd8a21857ab3367474b6cfe76c5667b68dc7b8077abe67f59802602b1b344f4422d2d3f4ddbc2402f263c8243dcf50e88c3f2dcb2ec486856c76c78305d5cb2f06476115636c52839eafb66732e9ba8e6b006a4fbd933e88dd6537f5241f909f0f28ef2b26cff38e5ab977ea3c51f68a785397378938f3fbb4f17d5ea63e53d7b149bcdd3fcff4b57c08bfaf54d68755677d903c8e3cd3bb772694bd2799e403447dc357857d60a8b7b33e7247e2197d3ab05cf59178c3aed1241cf4fbe9d7ebd168d4f2ef82e7ae127176668b78515f398b386d749f5f11736002a2ac4489f3dce8242b55def78e6455f6a63eeac4ab7a17532a9554ad19577d57a94a1788269d47df3ffb95ead66892e4925d7d3606fb90ea01f5ef9fbd3a1a354289a693c493bda0bdf17a3ed3880072c051c140438a846f79b9cb657d75b6e129ceff559cafbd785b5f7101f01bee781cae8c11070088ac1b5a62b8c28a2af122a8c206d14bc112572fa24bd8f20310323130e7c760a0d460178e0a9835080047851317210470440038a61cce0f420045646280860cc12e1be331613c268c794c180fcd6017cb4a0dbb54a813682a7d637bf65d0e27b11809808b39cfc09c03709f17180ccc0c0b166766162cce4366e80c0bcb4014860560630c45c6c6d80985e10700c6b2d01013711306e2221cd8d4d3e5b00bc79c362767882186b8b9b9a951a38610420811441041000104103ffcf0030d1a3466cc982143860c183060bc78f1c2c6c6c6850b17353535343434333333313131e338b65aadff2c162b0c43954a0582a0e779dc74e1a0d4d64aad9c33b3821ac00944676aa4901c924439e8c17b5c6f1991569b64d449a5b3889bd500e6c003c4e1fd6a20d4808a669b13368f720121289ad1c40994a2ce0a8decad69cede990584600ac3c8deece51660440fc3800b30c28761c20518e1836164577bdfb456c149f7e861c4c7a7c88e1db56708152a41a64c019222054851d10f8f4ca3e0d8364ba13085c243db568dd4223288bc7811c4850b201c577f709c9da93e661dc29148b6028d68fde1348077a6faa050a24479e284c7274f9aa04dbc73134d30f94e89be3313264be850e9bc6489121e8778880ad1a0f183fa902183f6f0e1fee205dd217b4677e182a9f014d26968a4cccc70510cbb70506a6390c8233c328e5a6dcb88a44578641151a982781e101cd90f6bc799c7a1593a84477e061e675a1b38b271801488470a45caf0590a50f387fa4e22a1999f66254200d4971ba2af398561f81c187a76a8e321069a76caec99d2dc640851f3e710faaa3f18860f840b021209ab91e639a4f95c065026f9216a21d6aa367981bdb884e17d5c60292a1185794991e2750885611c531da2309c82b5b2d5c70f1085e15ae40885e157210ac3e79eeae3522833cd443e9a4fa1b0eb0a61bd3b5fefaaf36911bbae90d5bff3a91476ddd257cea753d87585bcdc743ea5c2ae0b9ee5fcdac3ae2bc4e5a7f3eb0e765dd45bceaf3eecba42c2a7ceaf3de669b48832c4173cf2574417220d8ffc9438c44d0d218200e2071a33789c9fa12f961d57247bb9172b1966642fe862433bf479ca55272cbce202d638636ef1bf79dbe559acba6959a5aa201ba0fc8e36f90b9dac2b27d5e9f2ad137d054f9757a16244a8f07181b15cfea9ecdae53d96ed2ca393eef30263e9eead7c2fdde705a6b241d78609656341779e6cd0156549ac6215394e64b178e473a227fe628b478da7c4340b9d6c31c79d6bcad3cc795cdd2a8ea9da588e9730abf53e2eb0118e8a21b453130c4d7b0d70c46d7686c2d0d750187a1b0a436f6333280cfd0f14863e88f93ba3f14cce883ac92ef93a8070e63b29987c8b5db19d95534a00389054a458b9802b2eaf8a5991c37d5c602b2eff16197b1b582ffc904585fa4eca5b41007b1b58220e00b8e13b2b0e7379968c8cbd0d2cf17b8803cc0df21c01063063633b332cc61521278000b4ac04108055cb0d2b33261607408b45695c210aa0fe256451a1bed3725026c6c67c5e6039d8d8ceb842541180bf842c2ad47756ec633b2d2b27181bb4a5c6ee38d820efb19d1507800d1add6083b2efa878cb06d1c77656b0b517ed6da8c206996cb0201b20850d2a599065b9d567592f9e952d2c2b3688b335658334940daa205dc1f33187826e8675930a447da7b349c1b201447d6725bf9f826e52bd7da7e529930da2df09bf7279106c09555ff9bee3fd059ca8d277bed10692d77df59d6fe774d6633bdeceea2e8fed784f6183b8c776beb35636e8c5c5066d0f47df69e1504f7da7f4d3633b2d7cd3633b2c36a8defb0ef89519e33161b11d950d9a364c912c0b658346163c71b605da20950dba49b566cfe5cc1dcf06e574368877543c23ae419d6c5dce0778553338071ee08dec261cdd4a87c3f3522d384824171c9f9098cf0bece51f8e5289e5c731a15a4ee7fceb25bbfee2420ae74ae7fd384e39f00071666f3f52865e368ed35b6c2cc8c689c5c6826c9446df760a5e12b95016070a65739e9c2c8ed36973c2232d6a8ba354b2373c8ef4b338becf0ac1e3e8591c9e676708751647d7591a3c8e946471904816081e477a8a6334b25b131cdb71f838b68dc85a1cf3386c6de0ccc631ad1ce25136c9810778c3743e9f0104fa91497ea6f4ffa30ddd4d6853c2ae528b10bbbe27ec9aa916137679560811bbbacd09bb485f59c2ae51e86dac6d885d5bc8b5d4201b520d444dbf35619766836c8441365433c80658a54a95a2e601d637db3b71ea73e001ee20a5cc95b936b4b214704a017f5a2b92444245926813e2a6af4d887913da7e7813da7e7813da7e7813ca88b4a2ed472b924ffa6a40da90064480be1951362523ca7ab221598faa6f2dd2a41621f5a54eaa8f93a6e72960d697faa047a0501f4dcf50380aedc153980af56129740717d11e16daf887671110fd2c9a52f807ef601f93ca9cc23edbcf50cf2533ca6c329950fabb09fd34fd01d2c29242c22e1c53cac6389f17d8ca90d4e937229c00d57d5e60a9d47d5c60e11176e1a8e07a280cbd8f0b6c2548187e6b62845d38a6956f5380c21616bb090d116d45d8b562633e2e2fb094dd9c6c4514c60c20ff6e429c8f962b76381e902d113a96aae773341538a6a29e9e1424520ac7d43a2b4d7a4eede9a16ee06cadd3420a49f69eaef3d2377066eb84dd3d67b66a65da0b5ec7e584ea6ee028a075524d7a8ed6b3b3d7749d97fe4ad3ded2755c9a74034745ebacf47c4e46ea48f67ed779c129f5f4f434e939b4b769af771d172a5bdcc0a19dc34dd29a74bbebbcf49cf6927e93ead486d24e16c79481d544b9c4fc591c93c706989c6771547036c671d771e9db592131224cb1cadde70536bace4bdf54932c8e0a225454a95205c659c90698df49c17c5c609b8db5341b7b6663ac6a63a10b8cda988a0d30eff302e31d8eb51dde8f50bfeb37277c868cbb36f2a89769242f1b0378a90f15f0379b50659e3b6c2769991ce27e35a18f7e25d1e87742f1ecbd77ae0e91449bbd92c8f3b196fa64403e4dcf6b006150187a8e03c1309443750aad44f43fa10fd027eba1b509e884de3aa4695133df9134d284c64d131afb664092a86f0624a7f4cd809a7e0e1135fd6c329d34fdfca1afeff443106118d9f430e84bc27ee791df59e4770ef99d40a06d142cf161b28d022542d4360a90300c6d14186118d9444d9c40697a16035837279587c45d13453d81865cff2e33204c970f825d7713825d97fbe9f235d8754737ecbaa4215497f35389d04472641a293289cc2133c8048a919f91a791af912d67b9747978577fb94c71d66f0e8fa338048ff42c71aec41b71fee091de45acc1237d284e1f3cd2b78842f048cf22ae8841f048af12a70f103cd2a3c4b9e30771f6883462e28c1c3c5e39a5e5cc81c2ae6e8827ec22dd3861d7a84613ece28408c2a50141c4aecce6ccfe81c77957b539b369f038cf3667f60c1ecfc0f377029d01e4537a4603387f479abd9e8ece9d7627fd7ef77e4f077f53479dae5c752a83c7f9d68a0883c7f3f88247168f363c863cbae051c5630d8f24711433f2388b5aaee059cd6d084d72829faea9999919c73004418ebb4248bf6f1edd49438ef4fc7c9042cd354379931eeadaf5494e30a5b3cf87edf59958ed9d36f89a0b1d3cba93ac4ff7d877d289f05efa95425d49dce113343a8f201c05b4f63a85aaf4f4091a5d5218faecf3817b7ad2ae1f591c05f4d4d15a23d9e04ba1fe449f0923dd13bb4f98fc7ad8e9697e06f8f7f425611cbda7924a8e03c130fcc77166a6a6ef6b7e39d358b3fc04d8ab0156e78432990d9c59d46cb34b996a67dfd938a6e63b4fa9d010916c229d6c3c62a2e3f3174089029f1adbf9371e5f8852777e102ca4f381d81efbce4305e3ceff61b3319f1461cb75a44e631476a316d375c43cbba380d5677861f7d2721d258bfac954ba0e15dfce9711865ed7915aaee3b3b195a7b8ca54fab6eb10cf43050b3bcf2391b8d16329ab23e6f254b7994ad7f17f24cfe338d6e8e5b195d5e16263367c65652375a5eb7039e771dc68f4c20aef8db897175678b1233d363af7b25ab158e14f1a9d633df65dc7cb55581d36a4b041dab78e23b1562f76143ee66247e7425a05367a6c873e01045bf800acc506e960b1b11d0554a9025bb141f42a1b4ba16cd0fcc9ee4c1b546d8ba3282a810860a6398d0471620bb0920d627d36e8d26b3a3c1bdb9946f8800c50c0b6c776e61340b00522609d0dca2c28a3282a410f18c90655ebcd2a6550021860231b446d9d3b78e20417609c0d9a96a346f8800c51609b553118c0f95be58a2763af49275b771669eeb22140cc1d412607442306a48edb8f0cfa9c1f940a41f978a193a2b5dff0c8f60a49dda6067da5ececc1284bba3cf7e3495f09e5357b300cffb3976bb0bebb3314a04c62021ffedc0136f81c30c6d2a5e790fa747e0eabbff36b64ed3d6775a3c3ad3dd5274bf335686b78649736d998ad4b76c64251d19a6dcdfeecc823dfa5f3f5c8bae09181e87af49c151adb734c32462f4acfa13625cbf56759617bf69dbd275915aa47369cf6869cf5bcde2c682fd8399a50e784554a991b52ca545b04e451505753f47c0eed1bdb6f94fa06a83d07ecec39a8be519fba3cf7d29bcd099b7b8ed637466fe91ba38ef49c51dff03eba3ca8ea1b9ecd01bbf49cb0bfe7787dc3a4baa173ea1b269b0336ea39619f9e63ea1ba0cde11abce9864ed7375236876bd56fe484cdf21cb0579eb3d2a94b9c3925276c97dfc8013b7ccb8d1cb0554899f91492c5bcbc8b48a5cc7c28b294996f11a56431cf22aea4ccfc8af82265e655a28b94994f892c29338f12515266fe24a6a4cc3c28ae48997993a89232f325b12465e63fd12465e63d11942ce63b9124765286c53c276e5246b298d7c41629339f892c5266be8aa19499a7a22665248b799e70522870145026f971fa184e804f0a580afa960975fae7703a3debe53197f350c14aa70f5f3e70e53a58c4efbc7cc5e9551f88fa1edb11bfe23a6229ecce0d87798b8a9f1e0c41d4e93a4c36b683c36ff8ce7815171fe3a18299ec7508e03babb74eef0901c13044a14ea5c75c6c6c27e6308fedc8fc86c77600f0f13b01380e2bc4c7765af65f5dc7cc79a860202a449d4ea595ef319698e3f0d84e000e80efc87c7c32666660bce04cc00413a2254349b071c1a354c2b508d110519dc1f57e6dd6dda73d37e7799ab3ab18a3d13dcff33ccfce106dc4732a4dc6c66d9cadf545a6659a9d9931b4d6d36a47dab1d659d3168f37ab93ed97e33ecf5dd2db50a969754ac9649012498d8d9491aa2ccb40205a426865d5e3aa92db6ab9a8d1b8e0817a29c33c48a41225a4126e820cd9222665e6654c8e3943e3c2e6058cad042a4fab21003fe2ca5559df9a01b2912d869032135532b9c09aea86c4d940b06b86d60cd9084122e23bd50851e3497342d4601d11c313ade6ec0d38fb05bb6266e82bb4a135b363d8a50aa90453620d21788077f6c8a29e2873c7f4993d62ecba3743e4e410a2c64d1040d0188d7e98014306c8da94ce94c916dcacb556920c1e2b0c1eeba58c7a76f88c7cf0ab6685e0114877d9da6bad1dc9de50abb4a6a608183266d0d078f43adade92327c9218f238d2d7105404e09554bad6c776c0903183696843b04b7b7d0ebb48af75236db547626d2e3315a14416a492d6c2d604d288ce0a61007235a4913272268642414a2983004a56b8047a444a29a9ea413c063959675c65854788c0f92aa594b26632e349b39a65999452ca958ea6b6053c465a2ea181944bd820ab3a88e59840a44c8d30281ce206c6ade97a5a0370beded4742644102fa02f00e7af8a07b367fecc1f9b14fa0470ca264c58465723345d65c0f80038634627ccd43a6d549aed38e90ab4830904a326c84d0d576b0aba9cdad20a71bbdf7a9a7d4d3a4ff36cb7b6f66dbba169aeebbaaeebec0fa491182383539dd2c86a6667f048c5d9dd9cf459d72adcb49b340cdd0af762b97c8c5df205a3a851af9a1af0e3f8c4757a854f58c4a984619cf038bf22ce2614665e254e220a333fb2cb74f918d50e7ea92e7dcc1f1907613b04028e4bcd34e9418670107b1336690aa5c4796422a9110253db066e2927fdcd264c52a8232dd29e44ece25eb123f415c4ecf164ee68a2299423454339789c5a8ff45543777c1b48da3efb6ddf068a9348910f15240924f8c49b9ae6ec341286a3519139640639896211200dc22f190c336728cca44c26919e3f3038fa9a5118867625316b1a058eb33cc826ad48970d923e1f3ff80788fbc0d9434b2b1d9f9823c7447b0876712cfe815ed9a4d5a2933667431eb51e895a772ad105c3d057b1c607bc930aefe029cd1d4a9459c49dcad15787cc2013088ff3a30f09d1179abb5cd29c9d403cce8f87f9337dcc9ff874836ea499b7a13013c62b46c52f8ed2c4cc70ac591a0270863275a94292bd1c6974e335f71167cfa393d1248ad29a3c10fcba6118ed93ab2ff81504c3685c23f4aa9901c7be7fc1a030da6ba4302208401acb21f200efdcd1da2f4576d79e75b2352be4bbcc415f9561b4739a565b93421421b63cc8e66b2bbe0c32641a6117b32b2b32c3894580f5b7fe683734cdb1adf234f83595308c76e550111dc7d5349fe3aeb339750627ca1061f0c8afa1af991a2f148b00f930e8cb05c3f03525237d4d25d408f04e20ad699f43d8a50105c9116357cfcd84a271d22ae99137f2c44ada410a96347733819ab35cd5ee85fc9230edad4944da51b3cf2ccb325a294542a5bd5e4b251001e7593c4a105056381343b7bad15a6badb5d65a6bad1cfda4343bb541ebb791151a019cbf312d9f8930a48cfc0b1b1ea5860410385f29a5948219a552ca2774b23365206c1bf2da3b6d7ea5d16bf4dd9fad46b74157db37db7dbeb324f991682767a50c40fafaec463a697a6fe690a656876734e71372063398c18e0e866c1cf42b791b15c68abb8d7a7aee2bed36b2d36b363bfd47566e56521950195019cc21d289366794b362b6a9f16f9032f2dccc62b529ad31aefa4ae9c8a3a494057de91d7b03a2e5839b56d76bb3e3bc201e83ac7e2686474929a55ca92565e487e87a2a521880f339b52ba7027994d976b76ddbaa96d55ab9eb81bcf6a9695a5629050281402f88b74aae66d9cc448e59045d0f28a594f2a0b59c3bb8f2f555be7edec6644eda7a6badf5dc9d57fe0cdd9dbd8a61afe4df98cfa95dcf97ed8dda373ccd23a72745eed62a4625f548a43900e911b6e6af07a9b59cdac68dc45b7b4ecb543a1d6460df2ca34830d12294e857bdacd348db88f354b55a9577bd693dae6f3dc8a3aa6b5fafd9ab2d4755c5aeda2da5ab46cd2c750138cfd394bb1e6c5c152fd7f5d66a3baed55e3e7f3b5369a69d5d8a9c0eb5d57a2c04052838c109a809a809660dc26903151113f4bc8a88093240d3362ad7ba0dcf39e70c69238d9e6d19a0691bd9b7da3b3cb1f6003dca4b34a1094d68026582ea9ea86ad98efa76fa26be9cec69dbee89376ccff3b683db4fdbb66d271f580efef495a358ac9432a783564a19d451f6646f8d3e7d0b7b3b6da9834fb55026784c6869b11754a92813502a150ab5f21614eaa7af5650aa151fc2182c57592965c0b3a8a44c2865c2991a9d117409f09e08aabcaf742771bb27b6dce59b6559b967bdd429754ad9158a05f594b79d5adeb1e779b7e196afdc136f8d1d4edf589eba8e8a5e396af33cbb62b10ce0e915bb6d5ff9b67dc5de8ca94b1ebda352e2add15b78f9f9903aea77e52d360726e08abd09dbfb6ae5a76fd64b1df5d4519e8a2e8142fdde849dfa892e913a5d7e367c52792a7b51290f045dc270f5d8cbcae9122b287b793aecd357aeaa4f2d2b3fb5d80bf6e92c238bbd60af1c14572ef9f57216f02fdc8a786bacd840851f037866af88376cf94aa8ba8d95b35cb57296af9c45f516fb5918b2572cb791faca596c0e51005731525f79ca4a1e57ece9614853a3e7e545c51e12baae898d8b16e855cee6c5592d9a199a9a1922168f2a706b81deb6b578dc6a402f8ce1716bdd8c46e1adcdb466da66a255005fd4168f59a80a5934bd9ddb60c8685101bc353de7ac36474e0d69ef4dd8da39ed3361e53629def098d921e4d00b20728668751042ccc4f0984d01bc6167aaf35cb9a4e539297fc39e3b789c3d371388d21180f39de4362dab942757ba397a05e3605f69690b406ea254c02fcfa34d8037a49d59192aef7785001d240bfe75e9c9ead9ea49c1799e9e35f5d7833183068f3f00c123cff6c42b91d09cddb0991f8661e875afdd3ded5d13b5b335aba194e18fc4b7c49147aedf6d58fbec4e58cfd3b5a9653101e733221db5827793dd1c9d5ddacbfd000cbb369f475c0d3aa14c0aa5c605a5313dc51a8e03c130049b54cfb18b5fdd495765dcdcc130fcee9ddd0961415cf6da3c7d1ea715c079c95c764d148b006bd0974d514d87506a5cfcc0238502387f6b9ab5289d138d948db8960b172e844017b4cec48e88e18921add66c066a8484326dc46d355dfafc26e9debfee5ea976b59e44a9f68ea48366736a67df6a6762066ada63ea8334aab5a67f60183ec7816018ce2b9b4c8a0322d2565b7e241baead6def400fa0a80250673735445de909ba53cb0a633e1d461eeb087adee77d1e77d391461eebedcdc9e4e899785b9d6599766ea7339c191e2bd73a65566a49997a1bae55d634fd6616834eb624e99b48d3f431fc024f47152b758aeaaeb233b6c530daabb65dae2990995abd6b87f1c9380274c12e93cb74ed4612f576d3b5cbd86e12431eb7ed9f3856b17590c7ed289103c51886d9ac2422315d01a7a4afa4d24400b7731ccd810928956c730e511f1308dc184a4f28bd4d20ea63098fb4ddfb34835c1233e3a2352964d22e658b95f63bb27edf2cbfacd62ef9d6d4afa7b261172b7914e2e52e2e6797f0fc1a1d25096d4d4292d048e8f344b10890fb0fecf23ad2166e2b2b3147cad0bf8843dcd4e01108a667b12ba2a431834719305ef058396f44924b8a5e58eb8114229d8a24b0bb36faf55a3be5e8abb392dbb826e5d411b313ba9653b10508d90245835da04906bbbaab5eb0ab741e59466aefccf8a9ec0d29904da53aaf9c3f77a4ae1a9db2d8115713047d814e4aa2580478e5941cec2a7d6766798bbd120a8b2869fc108494a13f892f6c2ac7a324853694c647cb153c2c5343a21b9d8aa36b22d3c0a0797d671aa669fe0f24199d8b3b77de76eedb9864672e173ae998a680d6dc189ad6c6b7c6baaad65c307824a5441b0a433a4aaca130a4d7a0af93257d067d811608cb594982d2a41c76d5b861d777d2876057e9a4e760d7e8a497c4181e49ffc4191a1e49ef44b10890a3302431072620f79a8fe911a4ccba53b1bb768daf9d020129f5ced4453adf24d2c4d450e63e512c021c9d3402390cb97186c452c9bd697566bdca25a64d90d75e351b9ae55800b2676b767394a8af71160175a5dbeba7134ea613b30828bb9c4ecca26c16014d27b24c66d3891afa421d6583a030f455b394c27c276dd98eda9be51e4a85a7ccdeec94329dd859c463fd1d7dbb99cde159d4755eae377b4da7dfeea54b7681aae68e52d117eadf4f97fbf6d9efb3f746d5de3f93bd5175f77ba3aa3d223de18f071bda6b77d606a9bb51dd1b556797dfef7c329d9808f0ac8decddb3ee4636d3ec74624ae96c9b4e4c16db36cf239d38b34a53da1cc36c9f62952cea6d3c9082a02fd429156565ed40ba36df89a34cac3d6b8bc523f32c9a4e501e139bc4f044091128198d46a351bdf67dd3de393f1f847c746d16e2f8a5fa56a791d6f88823d807bbb46d7484e6a335eec13eec923e2a0b6d9a0f8f75b475d3fbfc74200939412075f9edc02f144af41866b31c7d9d3621a867a29094f5390c7595e8899e89a71e488f2d951081941e4c1a87964af420d24a88c048bbb454c2889feea89705a9401408ff58fec1e376f6e961d9078f5b77b3aad926a9aed95b4aa1aefdc49dae5d256a391484313d65b237a7e6c0042cd99cda9b273fb6727ab57645eaf988898051369ff596d96d5afba337abf1119385761bd6467b6fb8b71a5daf105d71642b46d8b746d7dbf0367bda0c845dad0ded23905da7d3779ab87d7699a81d25925a616b3b8caefd749238bf89dab9a6530463c41685a11ced62bdbd8ad68666ef2a1f91e1d0ce6a894f38e864eb452114d0c9246218fead6929e5d0144924672e9d4c4a67bed98c823a7f4a912a70e59e65f9b4f74da4ca5c328f4c2455705404a906a8d4ea168c7341ec18433403000028d314003030181009c662b168a42afb1e14800da0b8465c244bd424c751ca18640c31c61802000020003033401a00f623f37cf0eb6ed47b22b1875f51cf66cf98efc12064fae2692945c1bbd10a4f8dbd26ece04ca8a3d2f2f96554a74d948a439b90ddf2d34053c92a41d7d6508a3371b43d9b4ab55680a57ae75058f95bd66c7ab5e847544c487325ab82320094b45a7f42e68d5014fd804451670c3298e423e58d1ae820de0b27ed993aeae628bbdf3efb7b9951f6ac9240cb132cc6a97f972412c24dc7fd6eee9ce4b6f8764c1b1c2798ffa848e50348b4251299f008f308e37e2ab27896c33cb1ae2bd16981d98648a13fa002149decdb9cf1ee093f39caf98b8ac1b10f6932acd85f3c8a092bafea185d245921134c638dc0b6bb2cf22158e84b6e68361a64455fc099f0b10a6ed3ac312833deef4750d570733b8c54e81a2547dc4a467fd03f13765d3e2dd4f424b906577c2d38cbf0820b2d977e48f92b5f17518159e2b8cd728868e8560ef73f4f65bae08177991de022d7007e7b4ecfbfc941bf7b7d8c0ce787c90539d7a664342e5d1a144ad978394f8b0eacf9c22160dedfd8253c62fcc7ceb8098594ffdc2c5de0583a9879fe3d2693f65c668f3c629a28a157f641d73d5054101bc4057563f8cfaa000d8d83683e6b30c8d212f5e0353aff5f70f5a25930faaa04085d38f747f3f8444941ae6ed917da7f835fe86f09d6aca4e9f7098c22bb1499cf7da67e769c6c3681f124aabac10ed0357b7bff243746d0c53e2073c5b3f50346b56397095aa301d07edfb025cb4db4ef2452321dad5e292042161075d6390cc979f1b73e7d6df3a542d9583314b6b8d540443757359087420a16740362a9c7f466ce84d2bb113b746c5a6392f79777728dbcd87466f7f3c1ced25847a86a507dfc1c692a233b0bf13a91182d428c28aeba5449e74763ab066762204b121fe83910433740735b40d88621481a94dc1c4b14c952bfe1e86a7cbea493b6b3a4557689c7bfbd2c4360cb5c8012fc62905972f5aba9c488b2392d89d8b080812f5bd86460c494bad7a4542323bccff1e1d63f8270e4a267f3c3cf0c204fc625ca0886fa893daaa29e35b08c1eb58c564736f532b20a746e2bfffb386b0a958db549766ff04c96570fc3758609602f36842831161b4e27df42e8400581e85bbff65fdd888259340b271f7d5d71a64a4d1285f8714f5e8a348962c2ec5840a2d8b2e6d7352a51fac0e1e2b52c258a5d41d6a022471c0594ba0b6acafe2c9b8ebe93fa62f30b597654d02ebf58eadd2fa964f6458fa90962466dcecd3d7b2c818cb25bc9c00114e12b30742a49c8e565ca64c1d9408a965dc79c2e8d426f0eb59fd561517216997d8b9f5a3a793ecaf1f41e2294554c91a1bd0845a4c86507c3df9924abd09520d0fecc707e1f2f564546b71e3b8d4a2933ba3ed84dedb87b43f5b260247d0fb54f1793293dec32b2ef53a9dd13f17e71fa4d0f014d48203f8e1d2411c87b5dfe81faf6a1c35c76e2306a859985343b3ea6089761c40c308e26e147ef6117edf67e872da0b704ed45a77a2ff69f49a7ceba28a46db19a381a1b46ddb12ca96793c9631d7914076bc2fcfa945c9bd85d161693c65165daefc359510512e8acfc24388ce539f05bbaeb9ef281459999dfe1c17cbfbbd4ab7c9cfce3c564579db966446c786b612d7a83462a79d1ddc0fb843c7c288fc9ba2ab002d6b58f1c21a18f809c2d7cb7b1ed9566b06a78897e0d5d71992d67d47f63308a0773ec390455c403bbbfaf25f6f3b09d75dafaf6468fc03d15e8c128ab000ad16ee0cbe8d127f6b71525fa0bf2ce81d0d159d8c28c9741ab193a1269bca9bd5fafa6aec3c9fe6387440184f37d7884ccdad93dfda7d1c0f382dee58c789a789c4adf586c76974a14d8486d4f5c86968990f02378e8a07df3dfd62403b52740b8872c27c3d898752a1d6093693bfa0ae2fdc6182289e4e51d0bd342d1d22799318a2bcd59df1a8c6a88eb8245769d138fb4980fe828fc0d90af89eb64cf11f88e2b3ea44824273e148877a5048cff03dd0fd49a1190887fa239f5c1104685835092fd62315f4351620b8c65059f8f90801c256b752583f3d52cd1bef1a7904ff170f8ffa008bd520f7e93a9f18527a829cfdb731971f852663ef7600771224134aaa0d3ee7af3f34d083ab82b5898a753c01bcb0f42a5933e4e0b2d11d93b4324e0d349e72423c9eece1358e4d41fd7989d84ff98c60f261b8d5a8e3eebadbb2856d2bc2bcb39e3ae44c38f33a6d29c3034fa77740c1a65f88f14a12a5ad74c96fc2e6e11f02032cef714a093241801bba17dc9b1bd2634eecd0eca12cf28d1ea5138537690a5c7a8af0c6a8307776e1d18fee88cae06cad80592711a7507ace3bc724351aaa6c6b4812d71bbf82c7586d2dbc201dc0d2d5218cb55cf56050bc5da2a612957968a017c2ba1ef9a4b4562904e7a01d49d925d590a9f6c8221de76176a36006fbaa091b1ba9722ad1830d64a087c40490828c1fb063431d6e5dc2aa34b969ab57266c4978189672b488010d56c18ab46156f5f4d833c853489854937901601389f1a76347e712f8cf5289f4a38e225c002f19a3bc2f0359bb26d010a6e53d4ab07fae08e185891ee8e45e6c2636e3cfc150fdf3b62bf1dfaa538e5502979eab5bae4c22df792af288703ba45406f133d53790c1d3a26a2bf6974ae1f2781322551d7986b1e72e488e046d0a7f86471ca4761d6fadee983cc9ee51b3b87c1ab4515dfbd1e646484d62069af9d9dc03016edd703215056cbec58cbe345694d099ab369b492411d416675c8646b898ae36f6abdc0c3903682b664303e07fea2a6d68d88b28bde2a6882e5f9177bf211f6ec650a59fd7a3efbaad71a5f2ae53d7c43ebb199ff9097ce83d99195b755c3007e4d0d595659379fdd81dee9e91c1f17804ce55dba105f6a5add37adc0f49550f43458c30905860912b65329d0f328c165b06a02ef1cd5ffa1b09df111b03e7cd25a1f7509544f59e99677092887afb0c9e90615d49780cc13cd6497718f3a227404c4fb3c002289f2b52034af18250a2a33c635761d14f4855490fe32d3ce269d2f0c24e4be5a3f1dfb1b74c292cb896a56ba2dac99b97bfe50996844f4737323a9e217ece6236164222b03f5b58476c877524f389e94c44740c78d50d289665f35744f6749c2dcca49d372642fcd39ec87d5e9caa8215559885f93819dab9e57bd79d276b6bb01332b9a55e421b709e1d76e513f5888531eae3b04c00d0a34600637be4de3b8f7273378006c80ff8245b7256b98f44002a10b29311a27c7f1d4484e04ecd8d5e42b7c311980d6ed909f997eaf3ea40773ddcfd403c041f5f7311de42e6dde93d4a7e034eccc2e271ca01acf7e327d6a8668f0062c652047f750360de136d44cd631609a84f2501b93c4e35eb51fbaeb72bb576fe419e081a85bb1d7cb5ca5107b8f6e6179ce2e27f42dde48d44bda64a3ce83342fa439e8773dee101d453f1f7a63aaae4137fe79e740f327934149ea988e61e3b10144eeb232da7da48b37266929645144f230826c9ef947bfe9739566315035450f8aa0ba2c657941e9d41eaf349b89b27302b48d79bb0fa01d95fde1aeb8383996b815ce42e2525ecd779b75bc964a077df0d8426c4eb1dc7fd31e8e98ec110b353e651adf8eb75c8d801fd2664be5173e285fc042a63ba2df5242c3ac546fb084ae41663d915378457000776585541d4f9f698e862d31602d27bfb0e2e9cb983e057318bacbf909d7d7ad35aeaba409f8006cb22a98d12f4d061c36a2f7e40fcf3f1853b10ac17be968197af010ad6a023505bd1ddf0dd8c34d4fd70f207b10fe95bf00c119a221b70bca0b6e070a4e5516cf6390dadf4f832282a755639158d89519cfa1f947cb9c70f11248bb0a9fa2c832962cc25ffcf3b139b452557b9750cbcb4bdd52db20478f90fa593ffd189fbced97825f1c3436830c7c8a35601272c170a8c55a41c3c406d3ae025ae4904eca6b01cbae512c62f38e0a9d25c73a4cb0b4a86a62f32857767377c9df2253fc954bb11e975ad4a6533a02415c0d2c6e6803d2d2da3d30556530113cc5d5a6920556e4e8a9555421a19b0f059e410a7326f51dfe6783bcbe0c25f98ecad3e4520e6269edf621790e89f06bb3299e777ef77f0b8df1b135708805a2fc4ffbc248b4f731a53a24c7b122e292ec44b2cf0b5c371bf85e5efa4189aee06e8be02d71c91445c7bc517949db380a36318fb3e3e27b37149d51e1944208f21b3425803478eb595dd6e9a034d6edc2f8dc18262ae5c506043527fd2383e0933af60636ddf8c6288965cfca5749e928e01f9b5b4c88cd29ef54eda08f43c73d19c5d5222b4759a420ced30656756d0fc05df412efb1558d6d5190e1d62794575cb120d554de749e974da05100995f71aacd38de4d7736ebc952fb15898452649d0090f936721d0858440d52f89c7864c983b1aa0017ad413f6afcfbfcee6f8c67106a51a3c6c5ba574484e951a7d047c71ada06b5b97e9856376dc3921393b63ad876436fa9ea0566ea0cf9b274449a7c5e4b75502283667f000ff770102894bf61400cb2a2df23a7a62fea926d6f52a43c594a5d3a9b29a1dc6ea5c895ac135b53a821c2f296a243245def016c98bdc83273a0dd4225faa8281f4405a808969edd422d9ec3fcdb67a7f19d9b38d3486fd9b3d7b86ad413d35c13f7bdc2980b2efd0588c85cb4a281c9cdc0ab5214ce63f6c4779cd74ab2b64c4995c3b6cef18322974adabb94638e2852914126f3ca8be8d9a85e5f1d63756dac201b39d4de46a739f5c0107d55e61807c010e7088760ff73c8938254517a07b0dfb9b7cec67a506a9775afddc9129677c3a863016699f1c549a507011b71ce9515392c9913b3a53267677a9dba2a13e793965cd8b470bd86c76891bb5026934448276d093973b3ae27f93f53780c458a02b3bfd598879511a2811e3540fba84db9d6226c1ab2d76c72a8e8dbde838209dd16fdf662431a19c89742af6987ae3a5cac94883405886528497bf99565a083964a0334614e226a6d68378856325c53beaac18bad58b1e5db41353237e377df0627efff9fbb09a89682e634ba33a7311d3e7a1f6b02396dc83478f2353b9a59d71f9edf40194bce797649b5b82d2152e0e0a079e561960d98325ef3040043e076e34a7dddfc52df6e6e29af1b5fcafb6fead68538c7503858e8e601adf5e53646927280712ba0fbfef08d78c3e8d03e6b2765c274d8c763ab89703a86612e7401969e7aee2fb9e568118b0ab3889ec3855ad0f7482282c7d7cbbcadbf6f56e25794c1001280a8dd736c438a40698ada1707153485651a757152bb6130b403a2e3dfd1445ea39df588ea87142595d6e602514538d56b5ac2957099273a86694f478a2b6fc4d80d83b3e743643c677e86df9a13550bc21afa3bcbaf558804558d10d3d6d044ff8995b4cf095e359698b4545cb025065c69065cdd171f4363a6f34d6b24bc0b2c2e3cf422dc4bd9f56ebf7c605c423335260d1d0878264d64c817e4a29487f449997da25131bbf66ab360064a691c9c31e8ea391f9ece405b16ef8c75a94163cc501bd14cf403d50b17ccd86bf140de0b6cf208763aa6f9864ba50e82839d3340d3eb832186e0d5fc61fbb708eda7312d54ed121557a27267f911f339fee6d77b3dec9df7df56dea817736c095b7ccc14cf8c2d61e85220fc1cbea80b6fe0539187892c01f1480c592294b52de58fe4efa82115a7613f70b21a6443da123f527de267f857e3c0957006417226333078f75e74071edeea41d5924ba50476dc7a5c09ac9bdf11fcfce1171e792ad178228ae3dceb5b3509f177c51694f00ca4f986c79ce8f412b56b4420869fc4e47405c76f33610677f3cc5bb93f61787a125ced34a96f50636ab0b341e95c95a63042490dabaf2593c678f9c90f9bb75187658a44017a69c3efb8d4265ca02e1aa05ab75ab1c18e2e65a0293d3067e57676f7c2f07c971d903e7bcaef68a96d222fb4972d264af2aa130ebdc502e167621a6d13b579aad152a2cde02005865a3dcf5e0ce1776d8690602b80a93b44932686dfc452a20386bc290b10e8d53fc5dafaedfb67b36933084f2b28e6958a1df2e783042054e00ab58b93f0ac50113ba78b9e561d310a35221598e56f57593903d931f650ec97fc878d03520667eb8132809de1e11f031d51ac9a3f0636db630042be8742ed56128c2f6d0f322d8681480bc44be350418c4d9fb07b765620fa066318f86adbf19e45db6ef0dc44b20e67c53272b0295e61603021c7f1e579723ac3b35d318f4ef33a397f4fe2159f4ba13e6a5ec1b3bd1bee750550a114ddd6b1ea030e11b95330738af6e2b0c933f67ebba58b164a33e2e9b900ac016a4f1fac1055c6f4dffd9d3a7f1ee753d563c21e7585c1c884ac6883d4e37eb11945e58f867e3774f0595476f9301a0e81f4d459e484746641ee729c84312c27828819933fe8e00f7c9f250d87c59175786ba6656197603501db74c1ad81d63ecb1972c954807bd30b5a99807f9a79f730bf8ea49fa6dbb0266d5b87de1bf07305627c2058466a7ced0503045171d2d18a70c50293e1751ba4f2b10fa02102d57dec74dc13423854b59215efd8aacbdc0ce88c8e4b22c92c151cb5f258a4705a8e235702c0e8e562a3aec1a2685312882c3b5ab4a9e8943dd4049b1576f30551ab48a3a086cc08e68067b4dc1afbb74faa320d07574d7ac08f178bc90bbcbab62f29c47ee1a63d58ee14432222d207c0213a20d65e22ad5983b521301f78dfce9fd1b722458620d9c07f2f7ae1b2a50ba157012fcccf6a3f71315a6282076c1fce1986ac7a8a670b1777de1e95806d596ef930e03de7a029182685f4a370c67cd46ef55938053988e0640e08694b13aa466797f8b312bd9f81e7ea9fab88e818fb51067fce0c24bf3fee5fcab5d101c8219a368e27d42f94e76500f221fa69759625363fd07132764dca876be4646ef493cc09e2c6e4abcc125762dc4d1fc27566b16161a50c7709a35ac06e22cf947fe46e285d5dba4c26737e000d971d6707178d42cc33185f6d91c06862245050ee5b9e64ed1bd5fb73b2362e1ac56e325f2286bfa6c8528de7b03e3a74160790bc5c2a440249cd45c29e53d17a8a5d72610304862341d50cdf0759e76f4e421e4e4f4439cbb55a6bb5b9b7a1483d5657360de50812149cbea246321de4418c39f981c68baefa7a4553a1e87922036b47c42210648ea20c792ec026e246502d453dcdea5e6e688334b36c63db5fe25dac8daaf3984bcd780d32d089b82bc97480406092ef85efdac9d7424e84d98d403ab387274d31616dd83b9795d5d82f2c9eb312b009d85d14f7bd0bcb2fbc88f2abaa245ff896b1bf7fe7de89b25c7a7ab0b411356f8979bfd4b3eeb1c905d681a19907a202c2a29a0ae7141ff139f3e7509b8a0afcf5127b3cacd304776bf54aa2f74267c808dd628d51665d50ad3ecfcede088bdda8ceae8105f5959750ddb72e77c5179f8eebd1fbe576d6444135cd229270c0c460687f6129459a6a65935acaec050ea02410163b19608699d1dba960ecc6802b223c575daac480a528deb1ded50591caba94aa1674b632b8df27b138601361e5596feb212b4f25258392392c945a4cd7a294da434e43cc00cf081ee5f626ae17dc3b1dc305d39210fece8bdf389f3b310f15c335008126a33f6fab3c170b6faa587b66a9feb91355467459298307907cd7fbd258d48e4e2ca2416575ba7e60d472519c2924b900f04772a1a7ca452da235cbecd98b912e52967ac1f7971bc5a6c17e6dfb5c9a19cfc74380a243d0a651540893c266b475b5d116012c1dfa94b382c0f032a44d202c4e309d9acc922f1fb0b10b867e66fb830994d2fbf63c359414478186844508de286eb4baf69b069828df3314f451785f87770ebc6fc20c1339c48d3d31fcf5b807ff3ebd97419cd09f061c227f5d0b72889f77e168cea269a3ca62ee3ed6fc389ad11db6ecbfa7459ef259f6a7cb99e3ca0209ca3421c7e5b4260e33bec4a33b6cc15f77e0c0fe17e9e007fdcf3fd8cc1a6e5e34b99b4aafb5018134e850bdc0296816776f6357b0471517ab9d8ef2a5878a9b302c2e2edf6e38691f4b52511e0f7f9dbffc74fdb14c8ceb53ddd9422cb18f492acc4acba1158a0dc083f0f90589e14f3cf06bcc2de15bf5197b0fca2c50383f99b0078a99f38a2284f333eaade7d6c3ad91eae13a71c6e2da55c18915a32e5412a270014371ebe07b7aa0bae07676d57187e89edc27d51c4e371a4d58204686d16a68ece7dd19c185a05e60a4c4a49ad3510f0901a3582cfbed2bf7598c43353b5aa01bf9441d5517d76199d9a586251429d6d758e63206dad64755819e7e094ce8b3fd307bc231783e709a1ecb001c8195ee086e51e2b99cc80d10066afa2b9149b3bb0884d42c30af1a3a02dc0cd8d6a9d46c25815feb738c1e99719687f90598e76a1ad609cf37eb706b26421b9733d0c30b3c96e980447fa471b6cfc02b544a5653382f91fa7e64a85d7579b7da9c1b66f4a2d8e4bac740084a939b22504a340dee667ee75f0e7ec84e24f573bd3ea38ddd5d13c914ebfee726a6fb32f49508d3d22a7895231c3c921506463b06d1ce89d01b2052d04cb9e4e1d841afaa52b160109b5f6c50181be539f02abab503c589248f71d6ef63507a033922c57520ca924f1073c68e3f209dd9fead56cc43fc03c40e4bc77efc0d18b4adf5223db1e19c7549f68126d4eb951f05cd8436b594f96193c2281a23d41ce317e9ec33be1a480a1409120a0d73425e97af6ea6a6b8f52a8f8c3492cf5a5892e10e9e4045f383014ffe54d65faf903542dea47614d3a28e339b1a684cc0bb05ea89bafa7387b4344296ac3a8d70212549ee93803d9744a455e0aeff9da86d4f1aa307fe3146f2bc44af8fdab371d21149e0338b88323bbf0308fa4ac81947b0912a2cd3b4c6f19a849002f8dac585578759abccb09ac747e0a57a413c2110f4afbd0486db5e8561eb87d852a2d8e23f5906774d30b7b07d31b928cd7d1e8d33beba785c9122b796913130970ddcfbe43085d6bd341b0c1ef1c98ae41c042ed8b3c4cd184eb3cd2de750a2cd5886ddea81191361cd1a0caf0e11e0b5b51a7a1b56d6c966a9d4812862ba34afd195e09ec59f181308e68e4c69465f747bc5a7f750632462c24065af139c3179b0307a7971603f433c6cd729265f3cfc2efa2bd2cdb81840156843c1146d09a773c2f8a46fd14071afede032d5eeea98979c5a7e62526f4fdb3612b16b2f9c21c47f16c4c1c6ae333ed389db5fd929e85950a140c3b81636b801897f40665ef64cd7ea65d45b2645e698671492dcb4dc1a8e2533f156e46eae71bacba1b30a1e0b470d9094377dc4b704feb94bf3c6164287efa23c93a67ab24b0edb07f431b3333dad0f419547fb8cb4180950dea11bf46ce453683b85216ab87b31dc611bc689a07054cf1ef9b0794687df0a96775b1c5b7980fff6b698892505424cae70947eb3e19e9087a47b0816ddd19709ffc22a704b3b6d15e40006a371b0b4828cb8788f6599d7534c1be8d105d68581c45ac609394422a55978c4e722c87b9a71807a8dcab77eaa973e9be381757469d519450a0346f3ebdbaf70b81ac5340bd8a8bdafe94dee65e0ccd4dfa706936329a33a3bad859e371ded566ccc6233cba61ea9fdf6fb64c2122667627db9a31de9f8dedab1ddeff78f7868072acdc4c73f4b20d30a5946b98eda79f090015a227a137fca229eac641390f74fe8039b98f2c4c63edc6935ecbb5102aa1d5084fd91ff622678f1fcd7f93ae2578bf7b127136c9feeafd35fa8c67f782594e40bc3a6ffae3414ed9353a77d6ee3ecee7fe9fda7febf75f317386bab25fee0085e37e4b2e57e71291fa4612e250b9d0ba2ce4f38027ba7eb60540b58333b295c0e1426aad2ca3bf19869512843ce3022ade16e7be86d840e69bf86b4ec815408af8c41b1e9d65e17a7c2078516e1faa55241859926ce9f68063d77e3aa3bcab9722a18893178222daf3e28aa8fd1de5c030c6110e987ce9114dc7f5236318dfc09418ab91a752ad213e91579e8c91edf81c2f29840d0bfdf9bb8767610f1464498330f1e0edcef9e50011f3d82c9befda2d785b090532895b4a1c2ced3f6fe5abd39d2d8b955ac8e55590130a9d266a46d8b11ae4b96a215d6b62291bc517e1fadc8ccfcc0548e74db302f6b9bd89f123bc3a2647c48f7bba01cfde144ae091629bad444287eddc7174cf4d544f1bc84ad029d3eda887fde76cf28e2b8fc8b34dbacaaf0eb57339eb8318e91279cfe23163b100e601a4866b1d284c5085aecd84b8d81ea550248bf36b77775af4ce355f4f45699502dafbd956e903a8f1fd9f7ac5a79f9ea7f1b09cb118f18dfc851bbb245d46f57a6d26e9bd70af59b6711f1a37575478911986e330bf98effbe4d6d35f3800192d9e97b1d61c6279bfdeefd98b4b3d50284581d3e710a76d93a8e89c17207c4a8cd55f84ea78fb0fc689db35618498974a5dbaf0d0c80b0d55cb0e3099946ab9601bc5683740c862d89b29e9a0a9a85cb04178734690efc6bac3e28642f7b39b4182a6a9d689dc0a2b54fb6c0dfb8cc3901a6e521859d880dc8cb8b97be711404138f5687d5fddb57ca9d962f6019734fa9fd9f9481a652ea0a997152de4400e6ff9f93bf09ad3ac72bb9f1d84e9926bb7507846ede60b3d537e9d68722feb7fbcd86029ffde09acd7618579c3220da4e9f1a9bef94c5fbb96deb36b8441f44e4f3643c0909e3846d091dd582b3ddde6e4642bfd0a7f4026553049b09201641cdd0e021c5e73a4ccf3b5f45549ee87337434fd2b3bf216326d8d079f135d1c8ec7c4e0538ede7c603f4bd4c9ffb51f3c748b4e9f3e09205da7130b68f1641eaf3043951a69faa2173fee40d1973e71a0222a170f25f911c7edf7e574daddf301151ef6bda56469f508008d06f4a460107a7e8d8021c6933e5d13446a0074024794e1bc92cdebf6a9b5414a79a54d68d75fb76c471eb9815a7d1e549aa82922713dbf003ef57332f52062db39c44ed5795d10cf64240272499a6a3da0481ebea330692fac1b5dcafe41391d2b9d47739a0b0ef1a5cd47dd7347a160835798bdbe984c4ae356ecc4e187e6771064a9728cf106104aa1e2525735a0349c5ef731569720e3054503a82ac35cc9237985bb8f0f84a3e4e8844fbe9e88bab6089b27971147a8fc755f08d6d9b078ced7dc0740ef49428a80a4732a3127f532a8e1b4f4f2fb330a009b24eb27a059bd397699dea5ee94684ef040e0cd6edfdc3096865fa68259f82317d9bbb5c612a7b2ed1dce1c8daa9e80e5101d523bc4519314524d02705e7c0d7223eb0d8012fecb62eda2c650b0b304f0cb9387f218b8b829f8fb972c663e06689ad506294667af118117fbfef403b073bd68df33a3e5523c39c66594f86c7fec8940c48e69ac01d273d2a3e68a11b9b463172a954c4524da9af1fe51085a24be0b34bda90b8b3c53bcf2bcc872c5aac2038bd375725b49be6a86f1fac7d6ad71ac66673b88926451c5997b95068a21956858152b3f2feceea844bf5727dc9808561c5db2aacba01bbf8d712be937169f45406f3031049d112f2f6479c34a8ad51cf38e3de5d83e43ec9e402cfe8591aad61a557de25964a0624392ece1b214419a9513fbaa86874d250567662198602dab8fea34f07bd2053df78ba425fe3b4bf1067af42866cf33188714307acefffb14dd769f039ecd0f24854a04790d56f9d6cc198d16a0b269668fd6defe01270b536719c1738447e56ed6c1ca84ec0b41bb0fc01ffeab1d8aae20ce9d3a2a5e55f030ad07a2694c58cf8538f9939fdd0b63499eb3025409f0fe11a235ef82973a59ea7d616e706ac02d4d1e13975c00bbd4e6d53d3bda575b900d4609a2c38dff8b80a297113d8b577fdc93642041d07ac37cb76391a649b4ad890d38a16b4c82e5a2582f39e50d3b166326ccabb58e1871abd661738a6ecea4e1dd8f454447c93d1071668d61b8f230138149912cb0c1cc991c22677323766ab07279d9ca6171e8c038f185dca594c88bb3dd561287e7401f099d2e5afa593ba19f246bfc5169e7bf53a555362da40fbb85fed2e8da9f2882211c5b59f33e6bac325ba86b4bb7b38e8ece1b29312c0f95067df04dde143d7be695b33b102395b71a5803f26100d3af3e9a7773365c431e044f9494b80e75c42bfa7b9ee4acd621035b59298e1a065f8df0c9aa43c4076f90a5964453e4a0aa40e45d64d1b73d13a123d73af4baa120747dc7a936e26f361c9fd6b820e9b22143b7ce5aa354df936612ddec2a2b6240ee11760f016dd4417618a9bc55b807664ee7c1c3690031a9a2998eee120f0de4f0d9646a525047863742112e0f9c916ba81af0de5500be093234eb4d948fdfa79dcbe76ee99e62a2ced5e500b97612245da030f82f4b67c9dac1e779339e1cb28d11cf6f0d82973a2b867d9e0b6af9fc88a32531da126e944039df7d5fc8e61085cd709063f871cc373e36a2409f4f59c0ddb44aa6e383d814b1d6ede19d9e120d61a2f93a2df1e93ba0ea150a25aa3b4f6d2f6a0977818b02b72525bba66b5e45992590570697b0d71ddb4fd710f9deea77ac1bd629047b51d3d738227854f825662d693dc1ab2a5e1232f568d5b8db333602e4f205c320a28a569cde74bb7e717d21a0f89112549115e67b94809e1d1ae05ad7d94d1a6006142ebab9b9507fe10110c483d0a6fdb62bf06c0088aaf050daf87839f73104a74e118e97b75a740aa9c0ba87bec7183fc3bae3b99ea9c1902a1b414a24cf742c453f00027ec59e85f6b96a15b7fb48dbd250417b67dea799bd0532856ad1a89f66cd9cc1880688d0a2df52c17ffe2b7f78b67c8864529d41b719501d614855f4c202d7533259fa39e6b9e838c904069263b2710fb300dd36447ba48a9d5105fe29972d83e280a3ef986ca7008701547f68e9afbd5c5311076b2a805a373e400a448609c532fee7066216800fd104b3843871251fd3de51d3607ee37fd56703b7c4b4b65f4c9a4c2689fa2587919fa2ebfd75552377b7813139e3675b87197974fb2319c311837ea77cd9acbd080b93065c28d2d8772fa6ad570e1c54def9066db091cf9d65fefd88b0054711dd739e9e881b8bbab6a4c8852b9ea70281b634065dd84f2a8e0cfba816c37498131b65a3753c9af5390f483ca63435bf4814affc38c22a5377f687944e6a98be0ec21afd7bd3688fa63caf13ae4341a3ed7bd5cc5c03a56d57fc91ad42b77aee3ef279b91c7946d53d582b879709265caa16b9c750884d472fdbbdf294f6865cfaa3937fe3cdc332748ea3c0792d5d8abdbd1cdec4a75ee9aba282298c078b9c3c575ad2bafd504f4516007f42919d67c7b184b9bfe7bd34aceb3127b5702bd248c5a333a222e1ce1b512a5dfbf568f5904c4805690c665d0adb889f79fdc25d5fc4e698663d3fae1e16c8c91789f63520b768bf490c924999d326a351663b73218286c3a3a8b7d2ec52e37f258eb4084afb042479f12b3e50d4da19dee436b817a1e6c0578579b3e82fe3480776f1730c671ae7e5f07aaa92133dd1c0f0f1c2b4fb887e9b2ef43a90a8222884b52a718386733a692294ec00dfbc1b87fa594d5b327d7d57ad314c3165d99be1eef3a6e539bc98f362c04c8757b89b82e0d4b3495e75247628856d804df00bcad59cff496d880053be61df5e33ba6e36ab857646361031985e1f8a1e35ac4cbb55ac7489979c34280be5cbbf86a7c9b0182c993443f527641ba8eb9133cc92d02657eef53108d778b1127e4964a4ac0ed5d593aae4fc660a472ff70212dba35a7afd830aecb515be4fb61fc66c83d8dbbbe3ceddb64165beead9b7563870c8892536b55eef07e3ae8117d36df196f730ddbc6c45351906eb515593a331e85a41e2f89e7b1c0da882d1a1a667f04cbd8b2429cff6aff1445cc652f2e58fe74fffec18ebcfa21cca353f28679a96eb1beb845142b18def1e72b4b343ad2552775a2ccd396121d5cd39aabe13024f10e80896f98a2affacd8b671a6c4baa29deb8b7c82c114d31fd229ea6a6a725d9d8a27f177b74bb4f77dbfd19ef9ff31b00a8a72611f2c57edb436c14e22a191142de53588e1095eb86ca8d5ba84aa356a8e9663e7fcabb4ac96b7549922f087275a6a0d807d5026ea007b93530d3261c85860dc62399e18c7ce00a3485015c88d0763548ea2357a19264dd23f320c81b61a40dc64464174b79a6a418e8189693985b9b2b307ce64eaa98a1011e07430dfa09ea691a8223cae61cd63ae5e980ba4209143da9f2f77ed5b9d0a37114530009b3df40fa93dc9eb26240815632a0bad1326cdec65831635d182bc999120f3ede3e2272d0b6b6ef5053fc80ce3e5223eef47a4de0d8b2232e0e442e2b0c85ca3e3249d59adb9b36063228dd8e9ff5d74bd65bc25abf44926aea959bce0cb26fa20d3cda80546322f934586500d1865e100c31801ae231b4f2110966783b0086166a5558f66b0f8d7dd2db626f79f578fa560591443d44b236e3da07e18422ed2799888d0dd4a6c6c2fab9778c0cc4e529568add2a969032a09312141356a91aac5c4cdba6e0c39a7d13e26f9540a956125fcc848aee2f6ce3efb7af371e577b095906555442e68730e4832a1eb3fc4009e0a90599a23158cab091bcfff3dbfb7afc80527b989bae02fcd1da81442b71ee8d8f394acc47b8b10446b6f2c9d93d2e548366bb96997925995a1236972d3c24e924ed24fdb518359830e93b92182d522c392f7b38d36cf5acc1da64a68981a2466211f1c3e5e220a33c30b02cd7228122640e284cc8521fe3cca7508d34271f3de77aea821f12221881cfe1e11f0f3c7364105c9d8a1f7b1ea9b1f0d4e2d0c454216cb63aed7abd805d1c5c043cafc3a19cbdb2ef4fe267e33e4054c18dd78457428b0973f86e0d4119be0766b2d2b57c29033900c81b340aeb7b217c115e8fabbc9696a7a501bf94d0016eb750da1d43ca2ea5b293601b30c1a9245568e28c7b94eb692c02c41335079ea6b5a562efdd00a4c7a05aba83bd02ded250fb82b40b7c7a6558f62a6a05028496fb1fbda3aba4a8724242d3c1409d37d4c619d3bb1fadbb871bd7c8dc13b0e791d5c1e5e719201caadb8b76b92d459a034a86945b3061a42111635072a123e04f00af4ccc5023c51a54884ec255e512e0ba5fe1f30902d52d9e685f28e5662ec5addf2d030d663e8bf65a32a675e2f6e49f11f1408398273d37617440f8ace349c75d20f027dbe7d1ea40132c9be11398db8acab80119ed85d485cc3d3d1b0bda4017e8619984cac79f6e46f23c50c8f962c7d0376c292427a8dea20b0b30382a92192f8e1c84662907adbe73b2fa79250495f8639411d251663b64bdf9f0f008c98a25f5c9c5166fdde37b10a9ac6d732c7b57cf099ae2ab03f488d91aba6921cd6e2ed76535c9af4a7ec5f23ce7f49f3bf92e07f41b941f8f2ad1129d954f46725a0d8bfef27f005e34973f58b2c4bf7f4d5f866c79a5603521093e9af82d0939d25f70ac8ccf0ab4452409a20bbfb71a98c6d453327c2663d32778488c3ceab69bc17536293ed311257cf9f0d1c559e77f6b3322548a41e9e9e8277e587e8535367598a9cda6ddb4c9f03bffe63a9e20a8bb81db4da99b4d7756731961c506ee6a24120601cbc1f31e0901045af7fa478a6987608f0cb5809eb365d8820949013f1a6d5d2b84a86a5520d594c7f1d4f4b767b24325c7ebc9b4e90eb456ba898ecd046963026a767bbf590043ad4939a64edbc0be313d92de8925f4a68a7410ede0e25f01e166e6e5bd9666053834933fb0736dc9396b97769ea65d75299a6159f1df68023c7710c33ee6a61d53c4d8023c527c1415ab98fc513dcdaf1cdd1e20dc6cc4458fb58d1f7bc865049294e52cbf22975738eb9e36568728453b93f7e640d68baf2f7823ca03013d6ee5148e635c95739aa3b05ba2d95d4bbc0fb160e37c5fb02128f10d2426253b43fcb72937e7c4c48ffad27d4c5fa1c4185932ed17934dc39638e683f5b12ce145295829def6f90aae874f4e7b17566916c3805e09e73091261325c6327348cab0a9dc2f53614db16a058b748ecc343a0439cbe3daa4e82f97c343bd854806371b4e37f4d25d7b6823288f40d056c6cc74cf124470fb4d76c6516cba2b07f8e130863028ed9218c50029039c33e06f6745390d99894cecd60d7695bb384470ef294014efe19216dd622dbf6f3b3e2ec5b2613b80af95e10c5c8969db43ec7f67d6eaa6720a11c82f4755193d3a00e584c529b58296bc4d5088a9c091d4d01d1969ea2c198930aefeb5a17fd8b158b176db86a960684ad1ef695a420f667ff354ce3ce91eed04b8109a0a428ba6a478b2e48cb0270f444d25b4a52f08a0e9801133118f03f8ab6fb170102d624c3ccecc797de338149ad79b23c955d1a3c5e581481e3758cb4fa171ffc692c1e86fa2349a94b887dc4b502659b686d325b257ee6cbd0d8fba0dfd7aad85925b4657ad7fea4faedc7d0bf0af90c6241ec87df4f19491087484446c95a548992d15d8f59ecbaa8d7d4384117a4d013be853ff404c5befdd270239b1373bd0d8fffda3130db0fdb70d5e404430539b6ca1e9aa0eb1731a5b56e49e54285dafff4142bd947c75b13659d41121b1eddaf319b35c541a87e41aaba24a82322bd9b43542083f9efa72a631499c29abe9ed4fec68991f569e84c34d0d9dacb093f11f18f188ab9d0470eff3ceca2f03fde8ea3734bd7db899840070214b27b2c62330a2bc033d6d11a822b4538dd8405bc2ad2c4a0c70b4673d1a6640f9aa4ddb41056ee0c1af5c537042dc850f6e45a68c558af2ecb9453188d58eead8fce1601c0121e2f70663e97fe0f0c1c73d7208d35ba36670a4203588d65cc3607362b851c066b339b018b7cfcf39a91f47a2dd50985a92a1c51153db0e8b2064f24b511bf8452ab3e62d9a9225a32f8552ad329cfe4bd57c850204ee48c36a2e5d2daf6362a255ab6175d305fef26352d9853a8825798f46464e4e0d1785337178db2613b2a3c62c4ecf2e55c010ca064512a75ade7387631fbe9c40d272f8638c023f50e80f1476091ce441fb050a9c7b6850b2e19761931f692859d6fa2056edc7e0386ce92f9b82ab04182bd29b66c160bc5bef432c081b7358f03015bdd399c6ff5804937806887ae6f582ca1124e0c692e2cf6a0a0b74404c751cc18d3a49395a8a5a26d555da031a5e0578c0d5c4cd4631cb028ef6253d5c806d5a94b80f87d93d630af18480cbeb1de07d2f7fcd704d7581b8ad62aabc48bc3d056e78a35052dbf35bc318803405e47e01bfd15007b1ece88a55c6f03cb76a7d050e4ead6b2e8c2ed8e67a61b40e5bd48a9f459da0d1ae026b9cc512b0aad28168c3fa1301f0dbbbea63acb052c39ef6e20e7ac8829b254d0482a3a06dfd3ad70ad8780f4cb6193ee4d5f91212d5afdfd06a1ab91942b5d4123a85eb21c8df607ffb1d777f87cf7e9b40a1d112e1c36cb1af724e4fed4a372ce458228239d9fd4a627a4e828b65f4fde2a189240af4bd75eb4710e7a4d0107c58710a74e8712649f860e8f006b53cbf52a17d36e06bb5ccfcd528681878c2ad3364da0e3fabb77307cb90547ece99458ada3eb24fbc54f17440d6eceeffb7c84f5e4da5c6c6d4698219c104d589b97e641e8a36618b81b33828d1e366769d6158877f6f32194968adc331fea773724cc3da573f07fdcb27362188a98cf5a4476b937c81145186b1425dc475db7ab9458501ff92454c6985ec01d812d2b68a77f086acee2eabaf23bee0c0bbeec387033452d24dbd27768ac4e0748bb55d486b0cb89791be28ef8fab327d67a2123c6cfb3a7d8d6bc20c2c1ace58a32763037d142bc1350b3bb2ca170d5cbce7380bae403b55629164db8035fcf06f282e6ef021465f0dafeec327069c705c131a1d3f46d877c28b61ba3c91689ec6ff5dd83ac61eb547cc8bfbdcca82fe8bdf6ac481fa6771a352cff8a9284d4ec6909e2e8df910bfae6221d2ae272c069db470a6c0dab9067db6a0ffd9aefaa12111194897d7742c1d138bcd39a3e277ad339a4eb6576308f8e892b1bb3035ff463496a984f9855b6ffaa99eac94cb79e3acdcc875422b3769423f7105443854ac18608fb0678242f903fcdf073ccfdc8a46c4a459e7241587304e82b13dd78c35cc730163b5840c7bcdb9f909cd0d416fea0b78ed08350041c16d7f25f007818ee75a1758814595392e16d7abf77dc473e4400a466473c6b80dc77e9fb6ca3fcc8d51f8befe76b941f9927c4a33771a9325ecc65b24005fe86efb665071f3036bc2b8d8aff9686570a3bbe15ebf911bd38ec360cbfbf0b7192762df98ca254d68fc6ca6539180434dcf22bf4c48c15b541000ea23470f09adc20f05630c0905630c208c03f7b06d604c14471f2602e90155b6482656c2f7d366bafc0c35dd724deb0db526e616332af0017373a77ea3cf0f631017de385c41eac043179d5335063a87081a23f214305990799792edd3e4a5e2fd7821f9006a1ce3a13129f01cf857fc0317802bab796531fe14cd47ab028d0f05c220bcbc5f769c8aea31d09e8569aafbc2736e48a85310d4b7d3dda8161384ca07f51e3e471e2d1394527e58da22fa08a9abb5eb359e4268264259d77bfdc25b78aa979cff3a8af8b89d1340cae851e1bfd8e683ed111a39341bb725e34bddc256642c8135841f8b6335c0bc14c4c28b9446fb7c307142e12758d5f99d9a8daca468647821dceb4f42b1d3ddd8db3593ff5a149f1e08cd44072005ee2573dd59094d9f0eb4c39bdd8f0e0df931d5959f94812b315662981eaf327ba776c73b64fc5321046108eca69aa66e9a32c0505190bcaa523c6af3bba94eb0c56a10474663c2ab910939cd94f68c1cc2c5f81c77792c2a5a5ddfcfe7faa25c6d145d33b401ec38023fb24912b79270b0745c304b97b5ec1ea148df2b52fa6ae993a44e7c6ab4454589457adbac4de8a5ccd01cf483f0bb64c563a0b0ffd4e8c5ffb41434240d5ac5a56d0983cd9c9010e0e81bc6e5c68d8cf340797057464cfc11fcb8f2faceec615ff708c62a49d4597a0bc22e6fc944dede3f825dea9bd69386a9be342faa66fe3ad03ee2e162a4a7122cbd4039c432d4aaa5fa60b525f6fb973598a250c243ea717e625888f7f3ddb9a152cc68a38d4db0d97be5550286c37124105cc908818b57f2cc433bc220c9a1619716349de3d2013e630ba990a328a8bd6c6dbaafa18ed9e8cffadacff04daf8bc59e07e1a5ed0469f19d733f5a0d5cb0c69cdc337179e935d5a3266e7c60d0f20e87ba3d6ac4346af0d4ed541488bad7a287842121b2774cdd66e5bdc03f4e2919943dbd96fb24fa7fca3d4f6a8a2bed34833529cad6192b6fda17cc1fa9e806e91df7ad6cf8fffa0e835818d1cbf2cddfebb3dacab12bbbc0032844a73ef9421ff29d3e7bffe24298184909c0113c4bcfcad6d07a392701c6a4b0f9cb88189041c51764bfd280a5ee507b107995cb66722c71349b0ecb26f87eed592027516c255a8be6e33e0168de7ce1ff3bba1f3b6f3d870e2cbea77165e705e6d30b2ffa43e9f504efaa4a7e327bb53ccbd8c2378a1e359831a8811be29278a897e01265c6f96c09d6cb7ecc3d04cdea89da0da43aadeda283de0ecec51f06cd35fee639b9c1a3553f815003a61bd2f246c4e20e879d5f98e17b859ee31fbff83cb31b2a88ed962e80e76bd657eb59fb7b9f1b1b972d505dfdc7b09325a54f004dc18063c5bbb335bc96bedece552f2f337b97a2b85e7f62c7eb11d13139bec42669ac8aa50e76c7805a6f5acaaa3ec77954bf66756cc31f7a7d0e8184cf82ec8e29bad1ca5940415d638a41b6d3496a6bd3557e62285312dd4aa45fdf95a03f219784ad453f82d521ee5e93cd56a719c79c41bd268e687886865431f2672bf4fefb451da3424e686b7683a74341183b9837e638949bcea8292e1ae666a945b0bb31995149b75f8e2ac8447113e1829370857bfbbf85247a33dba216fd3ef3ca0db0ffd3e7b2bfee35b15bb61105d961f768788f8a3d5936adb3c04193819465f5096c6d34c44954a3936416e7e5004855036a2d894ae02d6299cded49800ba5764c0d8965e691e07b809420cc4be3e1557e678f7a702bf22211ad150822af32b9befb7fb4c07533c8633ec379f59ceba3779b1093f913a001ee3ae7078ae08b8c23bbbe9f605bcd9c3d1c7d33c28fcbe85bb04700507bb5acf274844fab2eabee19c0a85d0a73561bb2043ec8c63bfb226abdebc3aa1681c61c19fea3fcca85be3801133aea1b8fd8a78ea314e0dd4d1f0654349214d61a30b714184b97d179926a541709a46debc15001b57df104d6ac3d8ddefe5fe4b7b8203e593ab6e217fe46667077428d3d04f962c5711beccc93de88edcafa332470d3a4fc1bfa2c83287bc03a264c7c03464a4e60ed20efa86b667690613f24162204468a3c0821eb41387904119db1dff520d6282e98e91f6a48c4bac5564f09bb12a690b591d6488fcf62866cec0d7de271d45a8aa36ffe858cbdb4b6c580de7d6924498b3682b7c2bd827130c6afd614c2612012a90c45a0270c29edc4ca1376f2be35eaa93992f0fd238edf5a5af05adf316bb6e38376f6f90938151a7d7a28b71147ec460ad298ebe1ec963585d9fc30ad3b4a203ae5f38772439edbcb181fca7e2dc2aa58132b3b29322914c8e3ee6959cd9f95560e8625a3b12748819b0c9462a7152fff51c7e77d983faaa9a55cf0c831657516aaf424893f82ba4f22302be7a02617694cd2bd04a4657963bf78e9010c73698cb41048a4258ed1c59ef1a82a047aa933863bcc84e7d7dbb96c3728b73e664209e563de3b2c720c245befd8963ea2fa98e6b494adec809fce707c5cda9dd9d6892d3382f6622d491c80ae03f9cb15df55d995490139819a3dabb74ed29ca7c26e3389a88b7020cb53fe4a4584f509cb40412e7501cc67b21a8822fa0d35a1177b61831517a0070e013513121ba1401d1609e6d631d0d16545072a89412bfb8fcaa2cafe40a3a6997efd999b7eba76f31a79271a7472ecd80bed72fb015992dcb685a8f77ce9ff73b39918c04ff6765e350850767098a1670d6028e72aa45d812dbfdb6fe7bf7aab420a7cf8856fea29b3ebdce8980eaa2d2866e8d8c7936b4ac96b8ec05cbe71e0ec33f0168995b3561726337c0c5090dacc942c3a03d9272bfa92f8cf13b21b05292ac167082f598183028d8b6bf1ba49a2371bebbe75b43ab910310799850928064044f9d38a36fe6c31e2471e86dfae333cef2e46759b3014dbe7ffb2b085f786aa0914133da401b196b159f393996bed09fcceff1258d89b0476e0e34ce9b2a2ff2d31a986060f2458ff07a210790327dd4bfb293eb14e36b78de39dce7dcda5c41930b0ec268235c4d9e933514d9800ddac18cd11be4be765da22781f8d559cf7dabc966722c49e9f55d674cba5bed9735f2f81f4e55abf1a05804ea53ad5dcb3221417ecfe4c67a5145e518492b7a0c332343158e1ae99282e11a8f47e71254e3412dd05df31c602551b011f1219f0ee144dcb478afe897c48bebfe8d755f7e4be36b05d74cdc20d1f8f0fce1bde908c261dcb8a6cfd9b8e00a74e7c42387f2648ea200f66a809310935ee38086669495bb739ac615d646cc78e30c245eeb9fd7b9413f39b4ba86e07dbe4bebc1c94d6b55f4007d08b6655f6c327b522f0b717b69662597c782c5b546713ea92f50878833d6352fb2d23a6a4d288ba495d8bf43eaa489b0f268978a571ce3aea80214481a984314e4e9e9309dce15372481c9853f41c9002a5045b0292a7b481a02e2372fef475388f1a6f67decfae44e35257ce9e6ba87ef611175541a9b2eafcd3a177ff6c2355b2d0566d1c2593e9bf2e585544605ab8e966c563f85f23d4e8b6e76ea4a8d93b749af86546caaeb892a9aca253cd8d2729a983a521f45f252c9300f1288c94bb7a9bfce960835b2b0477fe98b870edcd92e7bbe26a4162320bb9130dff0e9b9adb4f6e8ee0f82541ca8e015e85350aea721e90d032947b84c6be482b3fc10111874c0ca9a2853c061d472f2cfb734e3e1e5113ee44cd69a1c9e5b4cf715d942ae0348a5fa318a8ca032beb1cd6653faec8914af506604e7394d262d082661c5367ae4bc5f63f05ab66b1541b14b4130622ad731499bb6a20292d04c92f8d941e5723e25343fcf81adcca4f0e04b8d49a1fbc327ab5b9e3012b8f43477320a3519e610e24e6ed7104f8e68f4fbad0636c99d40a437af2d927c459614321bd6f1025270668a0a35e6a43432b49ecc2cb993b1ef710fbd3a93688137c3a19a8c4097ba203ee936c9ff10f169e06975422a0b6d074c434af073638080799471bddd8227e71d2be93b0b06848ed47347d4c6a3cb340c42861f994066bcfd2c80042f806d1ba60e1169b161051078f856182d80e4a99f621492e801b9bb83fdb6d41fcb761bfd2402ce12137c56b2b30afb30737307cc190deb863ae4a94b91b63efb3a50db15154215e899f8ac611e24f96d0e49c0dff3527869438591f2b83ec8381df6c2b0dd8968a157ecff387fd4a43e67f588623480efac74ed5345ae280ce85a38c1a61a71b454f577c0d10a9ab9f6007b6abc26106499920207b592be26d7254525e6f4bcd02ea1b81b5783c440113ace3ba46c9a276abc6a28af82d15d219630b491f43a9e4d83021760ba7f3bea3da9671eca182b27b388e7d84d47f5032e0dfee1bd6f2bdb3b763dd672b4328b46df8b75777c0b7b6780fff5fbbf8b9a99246abab4fdb0d7574ce3c49297fd1cbc333b0ea0d7ad7bfeb3a4f6ec39c267608a56467d66fbd6b9fdf8f1d81c03a9ba3b328bc4e15349f4cd97bd2b5a9576cc018c0a64437ab4195f3d240e255714ddef0cc267f4bb061dbd50dd2418686d2100950a332dfe1b4613f9664e88ed4a10c07ba861fa802e02b0d60b04aa2bc9e594634c2cc4221387f1f363103ccc74227f1350a965220fb6bfe148f01ad9bb1155f24f810b399a6c9f2fa41000bc0283ca79675223f7d767b4716d085cb3b9fd0a7da670095023fa4313fb3a31b21ebe1e77c1e1f44f97509914fe1030e5d80cea01795d9b0ebfbd7ee504ae39100b4465db2c9e7f39153aefe759232e6f814872ccb4758e127a5b220b082a194ae51869512a18937123ab74a1c66b628a5223b2e81ead4ec4563cf275cd08d920b6d8994d952c25b889bcc14f920a4de934d5fce367d917b8df28730174802b2fa1e29024c00aa784814c13f2a8fdb88315179192c9b6e61f0e655c26df1a773bb42b949a02eb93454396b4ec25ac47e9e59e9d274b69a817c285fc78756b5600a61bb46d43435628a212816192ab311f5b8500ac1ae02091607392f0d16b52ecec8ea6c37fab4f4f1c2f53abd184ccbdfec871c131a601c83b32795d35fa6cac2afd32c548a3314ce99523e090aa7203ca3badf1583784d31c3a717ca03579880c9bc0a705d51e2594a2ce88fc3899a729bfd3d95a3f0a5b2198193381987581725ba8de3222cdbc4a9913546f78bf6c22f125f7c7cbb12fa1b0df7f3c0390e6d4074a870e4b07ff397e8ae0958fc2a4a4982c8f6438c51158d62521aa8c50f8888d7db0aa6b9867771c109475fa948f9435cb67ad3509c347a0b775dcdbc9f77ae857f2249e49d56d72b8ae78aced2ec84dc9dc8c8d6259b00f74f516a8484f8590995a01215664ab3e59c57d633358457a0bae8fedeb716f9f6e17a908401d90d0b9d41b6cfccc2cc77fa3885fc29c10ef612366f5d8f321a535ae394d590d21aaf442395d008651aaf9cc62ad168a535a6a48628a31191977548d490f3ae47e3e2bf2c51b2d2879e22272190be462ad1988979790d524a039474901dd4404a1a4ce98628e9a1714043946e5853f6fdc3633b7cb043df617b1beb1e9d3fc4da93a03acd7b2fccafa909ffb24206b6254498130c1f36b56a4cdfdf4bc8b51bf961d37bf46d6517bfa659ca63041f1628cf68b0162818f2b56439183b2865da2f412b8a75145f06fb83860618ea678ecf14fe4ce06b6625d85de90923dc4fdf15575ba9a24ba2633735eb1ed1022f655d28e8da26f0819f7b6fe45f3e0a594c42078aa3a7d099064b46c4ac56e6bbb6f4db012ac27c915857e3d6e9047aac38ce5b270411f01ac14c9d252167ae5c66b7781be4cab2072cef11b4cb450ede4a98453fc4c8d41025f615bd382546f9ff8b9d63dbf129cc7dae8e128a372de6445c5204691b36a0d8ac7ed6a7e0323c6caf24f64af7f2fa3a1f4e14f14dd5822e67dfc29c2b6634da5d22e051de737f70d097127479d9e2d5225dcde58f3a83cd06a417e3636eea24c92c5a7af6822cb8b3c4df0831923aee4e55d783a62eedce32c2b7344f32c38b44ab498f70755930d1ec5150aae307601d8b09a86980f5a217b436f1263d53e3276af67c7eaf3f5569b454b2dd7db2f395138b16b79b30fb2fa8c1375919c362f94eccb286c022ef1f6af2875f479595d3bf2bfbef29138f7bd78891344d54638f1d3e127ca0477ec86cd6d99533060d8331b886d686fdaab4f556c3821f4cd78133edcf2fe002527cb0a425e2852ed011f6e0495b2e173633e7672643f78ddf2967729350ea6b6648de9844ce5d3cf5cc952a2dcf89aa8fa25471af86258eed583383714645657865af80c3efa78cfde5a22bc6c9b2de19f72075880718328c8b0a4f065788874ac478fd2f123e01a5e2b7bd511ee85f27d2eeff5ba17ed1b4be105872305848b2e5b3edfd06ef494f7c8556f816f208eeeda6d7d752577bd3a216e59e21e81df54ea7d97629230602a868a28f9e52582b73b04fc79397a087676ff64382a2a715de0c9263fba665e7623e3b073cc45b317f4b68c9c2178500e7409f035ed69a098ba39c08c362bc43f9fc99768190ee9d5d9775a4a244d0b87698208dfb05e4b44387062c5f3731021c6377b1dec8919a054a87d6c2ac2f1e8e0d90283205e9f04dcf35df792744f9990799fe034c7d68f2ae5f008896aab8097c2fd6dd01e01c8dd59a9bdfaf4e87552c8d0b0c85545cf329dfca64624452946cb81e117460e19be7bcd30bb6edbde3e6dfefdc5c20460e9d99576346c9275e52cd137f3919e9b4aa953451030121b0e6c710050361f92f74d9afc956713006493a2cf152b5865ae140cb162e40ca3ff4e4196edef363989442b80ca6094e61f8cccef2852c065e950142a9666e632630be8c671daf0fdb192b15f82c3073f6081cd0aca64e768279becfa17f64309a1434ba7aee8c54adf6ebf930ded6379202def0e25fb86cebdf790e9e39f21e99d0dc0b8105dd961990e1580804b63df2fe4e903c05404b1aea33722a1361944c702077be13722d1f3ae9b9a1991e9921d7eba4aaf5f45a561b7c6dd6871e57620da248cd30ab0f5048ad6d1f6fb80c18a6f9ff0b495d91b5a0119a6c859917c29968619be6990d87fad66b9565a127fb3de5d82c4d591c614ea9e6bca4a40218db85419c86dfa25996b4bfdafe4693105c34208c607b9b855a4ddae686f8fdc532959051f31dbcfd8f1ea5f3db0bebda726c0e95e4b75235de3b61a2a1ee3b1f326a7d35780369858d6f5e63aa933bb211f7b28f0b44b896564c8ce74d83ab0f53f6931b1ca67cd6c243ec552163bed542934e73c3afeec225a363e0d2a3ce5443ac863219a6d29f2589beb1d635e8e47523d1b65822fe853643b3d5f5fcd3c66e059f144416f62affbcfb675d3a559b0f399e3dc3b9bd06350210a950185948ffa6e1d62240474e7c3951813bd13b388f92d3ba6199d00e47494b82257a7d96fb49684f2fca98abf444e70c6b934d2aecc60158a901c5400769435bc6be45b8bad15aa52bc37376b6527a3636c71d7cf6e7d5c52cbb3cc340d08c356a76b447d4271a2fc2c941cce7f9b950fb15f2a7a2175933c6cbd614d8f1c3dab66a72ecf3d5f03fea67dd3892eaddd4b00f981d06454c28fe69abd35d23d93ddf86de0cb56ac7efa302db69d47f72f3af752a72e056f0cf87368ed95693c04b540e5bd5b4718a3d0106426efd6b4d8eb4e03072b1556afe61ef040dd806c4aa4cf844b2834964defb067561ed37d510c301e9fcd7ff252dae6d34849d43b74ef3c5865fd7c5663054398583c1005f59e4b088633c5d42414f3765716f7e793e1c9f1be41df0d1a18cc4cbc4fb5cc2649afb0a4d0f9adca904976d80b5da8984b974f6b4d73ab412c7f9a3f1a4dbeb1ee8f2caf216d7dd40bed41cfd02e9d8bab8b36a9e1ff2ad0d0061509da68dd2bd7581d00b81dcbf1a1203f4f583e39c15abb415c5b281400e270ecf01ff220f3566502746450a6ac06f04c24fda3c2927beac825b2e8f934ac9a30a50fcd2caa02fe44d0a750fb8ab5eaabc32f20c07f600a64dcb0c9f161397a99960454f574efd38dd80e3bc032039464eb321e4032ee8afb1ef78b13f82c192a3f22f96da9088e0272f7f7936634410683d429592e94fd8205bb88e2c7967f5cbc6cea6b139607136e6422de7d4e351e134c2a8a6900890e990289c40007646e5b52fa0c1b79f7c8b0494050ace56de3864823f952a8879ac55e45ec56b3319d89e25200ac9fd8caa502e37fe192ae6dbe66a3b24ff7481953697ef9e1ed1a830a47924bffa9ed91a1aa39aa2923352038a67527ab8b37497ebc30c331aacf79121a36bbb9d7e7b1b94d882264d0baeed78119388c051e85fe438c58d94d1893d4b7ad2e671d706834a3dea546314c6e78f87c3c41d7b0e54b2a01d88c9942224e359e35b7426aab256015e9b736be475673030793d0f913b6eb8e233f856d2525c01ee7ee98b584bc220f292313d530ac910c6494c0ed0ef97bad5df8193aa4292dc14c77080e9203e1aeb7519e99f2e629f7b4abd3ac577e0155aeb71a24295d374381fc4e1678562685e3158d975e131922934b4372ab8c763f8b0210dced5ba901957c00bca7b96b21ad113e81a06565aaaaa00d0d7cb1799948e8783d94cb9c4a28a47cf40ae4e3191e626eccaf591f211056a7e0ab1529879e6a3ffeac4bdc9c04733e29d22d10819036b127a937dd07187ae590838b291a2de579f7b9200cfbb5c496383af0eed4214232519bcb4489c779d906a67d25fc8fc180bd523102c965b1bd982c5691be99188eca9ef576ce7a1c79ff68ac7f2ed127c45d73b28349e7ff1fe1a91358b4db1f7e1f98269c6fb4f2dcba4147c18806a43bd742da4e4498340ef8837b3003ae40bffd776041407e9473b7c49681550b4efff1c0b25ec783ae2aefd4411f691aa2344713be991ca5fd638af2a3b9e5361bef430a17a3fd1a166cd0d3789b46799f27d815b247fe28d6267ce591cc3f6c64c2a6b867d425f1e1e09cab0fe41271c29a6edb7ddaea3ce7a980b4840b68840b6096c527e7a444403ceee018a13282e0125f8b395e52d0fda8e83a327c3e76c38642d4748910c54b82749caaf911669da1fd03ce9d4b54843bce676ef10f758ae853aaa89ecf3f83d61a89ac31fa01148f097f90b0c4f9d7c090731f7f1676554b6f3c2317905d187d9775dd1cf08f46a1eac0f9ca0ccc1f3bc70fb4a4565df5c683cc49bbb8c41e96849a053c3f3dd566f3b9267d15630776cebec652bb9f22063f324308f5724ecedbe8da61a75491b30234c0074ae2835c4317e4fb53b21eceddef3e4d1960e363627cbcbdfaa9cacaa0dd41f2aa945536c213182e9d7c4bebdd6a7c557495c8e2531d4a76b43102a9a7d1b3f0da43c83aac7692ebb013ab4f028f9506c4d71983746dc7b144e72ff3b01cd0f7d80ff68b5e386b6f8aaf02b0c6c6949b54aa35831e4dbb3e94c961683d194e062b9de927cecd70e4190e95260d33574c243d8bb14740d4f9a6d86e5804991f54a73071a3b9650c4050b7870902308496f4ab6c1449c3240d6b43deda0613e578e7044845b0a127d166941407b1810d1212cdaccc8e1816066fba11453dc95858986b028fea8220ec876f968ee26cd1a49f7d07083cd1b73eb368ab5afd5b0c810424640c5cfd6ee6aa3d9229b381bb2ad2f5548cc302adb6a6e9ec8143b6bb6eb4b1e1d5f2d87e23866c78447a4bf54e46548c140c833b55fa2ac476ad37050e41a8fdc529d85692470a7a3911450f31103378e661bfa963d70462f867a0dda7e8a550900c5736b3fa6acd15d12195691140c138bf4a1acf091bc4ca2cd2606d9d6ce499fb11f3740fa68ab4b08332d0222d54e9ffa903e94c998bcc00e47f42161d6ad4f499da42ae2c7b3a02e3275545b1fc5440bef350794ab385a5a5970768430c9f77f346b12e4eeb9c7d028528cbb88f45ba593613a0601f7345eee0317705a8ecc5a8869c4260803370fec4782846f0ae59ddc533e6b1345319de016694f015d7af8f5f6fe150227f92525cf66dd0042be8f4f417c574141f29f8644f34b4a9f1a5110b0efc763ddc2d12ae7896b34ca15df0f5b08ae9e482b78354dd096ae428660c5900e40173ae06de7fe44910b3637caf2dd4c6ae8203fff517100fd1f5a9ddd653baccad776448e8d9560c28d54fe29e71808ea0fc789ca54cfff708ba15fa182ccad4b9221151ea82ffd2867ae14f071134471b076a208404e0d7da84565a644c4433de8a91971b510c851699784512ee6029f1587c67ea14e7b9a9142ecdbdb34102fc2b2e2a7b8d5f8b3a8ead7d9ce1e1804646ed9dc3f74069f31027e1bb4aabe398f0f854692ad22b188dd6d066ed3995db6c4de49bdd55745e497b72943ce0b9c2b698957c390e36352e4fc406e9ce703476b67fc05609e1cfeb408ba1c29c27fe71865e715a2f9f030b6efb83467bc2f2d4f5fee67ed066923a053b49a49db39c7bd7571221bb9daf6c1719111e6b29d6dbf26adc22ec4ab3c753dec6fec04fb51c67340744abe930445cdc02ac2d52c5c8f726e7a1a8dc1e7e2c26ebbaa089a69c27f83edc8d656c8136a11adbbb33596c41cc8d44b3be516875784864ba678ee66f307a64b447710a9e855e4d31856d07a75194ed1bbd61cb12fce8f858f70e6faae376f02935f61b78010295d16c7b2a333b1dc5345e14a958e0eeca037b72b4bbb663779b31e572a1486d9c0003ac61f87d78c9bbb558cc25a4bb969871edb521825077d4f7fac299cdd1ea52845034b24705f3e7e6c29fad5459311f2e1c96d7f9452c65629831f60d240a95ec6181a8039420dcdaca2cc20eb2a73653a6b851c0ff3e71300fbbac34c211b3c91f1719b12d95321149326afb4986a483f5252376d21fad220ebcb80e4396d5bedc42ded2dbf74543d30de21bc78bcb9cca3b84158ee7367d44718714249b075c694475bae39d8bf7b31f9f2837a26839aa89487804cfc88e20e30764787c0bc8ddae2ff4de925c53d8719877d8011343b7afca472ffb261ffe6aea42becb18980e88dc33c3683163897a23d4c06dd7a4b0ab1c100dc3782d503b79ab6a7753b6315205f2811665cf5ce8d4c7861b998883ac1a96dd1a204aad250e67e28b29481c39f3cdee1b891de3d3ee1bfa25494e7ab860b43010dfd5bfc5b2c026a344f735a4e88626c94c012b4a59ae9390db0a0d45bd856d911ff7abb11bbba1e4650ca85a39c5165551fe03ecc128676808da75184016d6587e0eba75dfd2a3ee3515348d9620fd73b661301b7b59541ecbd47314e9033fac23915d2fc65a2201149025c3beb84d4e8b6aa1e2ae43d5fadd208615a0e2fcda69789648070653db3b25c308bd1058e76ae647e483afa3826381502d1a704d9cbcb9086bf74ea7426292d94d2994fa2a85a4b67453301cb2c58e29b7d4801179f96d28eaa6068517cb45d7d9d0749912590437285817047e088014ba20920b186de94c055c800e1059aa396e9462b2097b68cbc5131abd0a1588f6c9e8746f3fad4a198d0dc1b46c69155bc0fa8f9eea53f74d4096d2d43bc51babc3ec390db534f266862a2cccfa856370899f791ac3b4c5a4bbc180cffe5b898b5480f273904b504ffc9dc3891b6b1f61282f7d0e0b017531d4ca8ef476e2750b18fc8fc7d000cc5c30a85c357ab19836f8ff220ac8d2c83b247a98c836366fcb7a06833b4d0c05762240327b11c6c6d61acda4a4e20ec033fcc0eb1da27da67359a60fbbbabe9f71ae2db0ec58550dbd90763893240515be683b38942d68379167cda408964b33f58fd4ecfc56f0e7e660852bf64bad9dc927bd19340515c13955e8a9792987a732753158837b6c4a0f53ebce52f8aa5f6e7b3654434798600d1b86900cd38db3741d7db1a6ec13982a23d71b06fbe2ee97fa4c4d11955e1a1f3b6b070d803c23c6828cbca7dd05078e563007a378466a01aecf070340bd6250ce4985519c20b5b543d1807b30b523ae609d1a5db644b1f923adfcb057b5a279f4b800810eaa083ce6eb06aa58a4df42cd789ecb452c843c11cfbe804b101e61378444d96b6800a13ad1f7236203a5415504f6f659cf65e61b142d5e10b93ba889e73088d1e2d8e8704ad1c60d2311231ce8ba762694733a75809c61bc43d3e0875fa568906c3ec7d2173d5f2c90d7958f51362ebb9c0d99c4a90019644c1cfeb399b8397a862b93c649bfd022612d2ed78ce152efcecf6e430151d9717f236b550a88c3561b58d46156b54d691083cdb4457577b0823317df92e48126fc3cbaf150176991da2fa8602d467ee27255e3c8026bbd08360481b9b2caaf07038ff8f469e105adc4fb472b569cc0bd264bc48dc2c7aee92ce6eae476a2cb7f4e737fd82657dd3c4f9ad4a4425475e2bca1cce86111dc4548dd782cda243915c65dcb10fd485008a0768792fa702026881697cebd2683eaa1984f4aad8e1bc888b7bd0e13c130df50783b262ce5da20e2ef33316d5029aab72f17e140cb99a9b8dd0107170bf5618c4d4f39b89e89e42f223fb4fdd4521691b454a5322106ca31f21358420e9196dccf56248aa14fdd4c30ef90d1cee213aa29c51440db3c5df3f33502476f1e944f2922bd08c47c4b56fa6bcfb07064fd92e19dde30a3dbf9cf91245da66aeac642eac7a938b957af44aebdc6b5f44448ec9d9179e067a90014a6acd68b92c8af7606345159d8f2a100de691e1166ac79ce4e4176865e8a73af03c7652a56e0a574779c806802f318462325149f082e9084b5283848d67851c4cd2c29a597990b604380e858ee0f5e005ef06643a2ee79454a10346c15661baeb2ea25a063397d9d725ec46775b0f101b7ebb63209935fdc8b1406608c83749005b6200305046df31fda21d354c3eebcd380850c96cbf735766cdb014f9ada0f9883c59d54e7a282b0990be03572522790c01f92b82646762e7a9fd5510be8f542c0a1d0db1e90e97d8895668846d74925ee8baff49077f3bdbb28ab04b56672126610d97687ad54f0045a662473f4b30e9a183b694e2f9d087100556e68fbbc40c7f1237c56dc4d4e2e8ec15eea0ad0644737f4ba1230a1fd79dde6fe8038707e35dda5dbac4443781bc65e57984d5da646b72d6c1955b8cb2d2aabc6f962de69e71446cf6ef70f37ddbc15898874c89b3f6a0e72180d91ab9ebd1a5046a8bf1a8ad5214aef7dbd6dd4b1ae078d9d6e9559137367c74fa681aa41ed41ca881361e3f27760cabba11e2b3953e374b7f75abce950d5248cd30b11bd8d7780db1dd70af0b72419fc75c5d26441939d5ab3a1d9905802e3a33a23c8b59f10d9dce3f30905c52ddd09d27e84b9a748096e8441f8548d4d207f0ab7f8dc0aaefe0eedb4ef66b02b60e2575a16682f8e0d8fc8dd68849da1df0880f06dd1710656b02c46415b65dcf231af6fec62619211e81174bd5b2a51128bf4a419c262b64cfdc852c2a530e09b36069973fb5f4e0a8395b8f3f8bf889cf61003598f4828d923992da9f18c06d8606aebebbe4a284511784be4bf8bba4247d45a1b6b8d3aea41056650f631c94ad0352415501447cdd2daaf56126924e5763f178af8ceab2561c368c503a8f8db4dc6ce76b0f95e6c16c6629b4e444552f89ae88f653a1a0614492dc51fec857846d28b2753249acd37320ad956553be1a18f2a4a78e1f42987567b542870a37deaf610ecb9ef086bc14e88bc9bb2aae03e9c5dc118cc4adabee0df2d0d11bfc6329a7e167580aa5b61d9dd6530f6a995d292dd566eb3e301891362573392436aa11dce3006ada8d2d44eae7190434104850d0e923389fb47d2446746c576d3cb25dd434e1d43cdcb48eb36ef04247d011b2bb8aeb395fecec6d8f004ec010f543ddfab23dd09caf8a387608bfc95684b790e7106e4aadafc047b3470cc7855750fb13cbddb6a45d033e4f24f863c24f902ae9d6b470853ee86e0f3179b72903bb43a514064570f15a4dfcbc88de8a269038cd5e8896cd8fc1dbb77b25f041420317e7e11394c6076ab44eef45ff5ec1c04e9c91247120041cc61b025eceb0a2633b1677374d3c4786d8248ab363d4742af227b3faced8d14aeb7b5e428ede6d5d01fc8eaf8bbbe777b5ee4d1756f9431fb4dc6f4a0057f241c3ed318c1ce685b544cb71c15925ea144486e5b97ac3890bae4ac4a4e9abf301df1719190fa08cc00fbe88aaa0d0811938e5ab770b2e2e7235bfb5048ca8c0caf6aa0c20deb48efb737d85f742937157394f58b55ebcb18e91bd59a61a6be558cc486b90f5a98467369a6dc6c94aa25cafac5acecf0d880811005089fd28ffb151f72da0bc909374b199daa560e01401094f68cd8cdd1752d9180d7e584b29f863e1e591300986e48d2642c67585476016acf0fdae42ba0f2e099e08bba5913694840dd604a7422d990a1c168fcaad2e18bdc2f17f321983f6caaf5818122f1ab167efef90920f3e62f53d7b2692fd2029fcedac0e9fd4fa03505d149e72d8e6d1e8354206dccca5708e781cebe591a5fdfdc9a9284ea3cd78ba32de407f1cc8f6c206b9688880f49327fb80733c4f1f31deb91b72fa70cead0a6470f935fac823c3f4626d4986dca19114c1ad13d1f1256f11dd0ab4d4cbf21f08cf2ab815a2fc80d493bc014718d310ff803426a87448957ceaf19af596d0b1fb0286e0916f6517ea4e4709386a0441e6ca5d7ba632859633b28785712872c0c238319b519b8fde124af975deccb73abd51f03e8a03c7e546522f21a85902afbda9120c31fc15149f8e0615ab8f9a99a1f2dde5758ba90e1da82f19ceeea65500d82a84802a69c812d06105f418ac30bcdbdb9a7c4d8a64b16e84a621c15a196412272f5ab02e87f5dcdd94e40e814ad264d8427f32c321d4df404afabc0cc1586bccae6803d2cb910fc27a6d5e55555d82d055183e4e3c2e18e79182a83240f42380f2eb413bf12c6de19d43ade7d044ecb065d5d3e83ac550dfd08b9385b7f8e2070f6a8c8390d3b0b9d758aa5d53e6a404f85fe83ff3dd259e39440e97cb457c6ccb14528044405a9ed0b30e08dcff73a6df169b2a88753370dd37a94af18713460784e187d88a7521484d0a41995072ab9f5ebfb2b4d99f07721813069e2269e6ec130b8ba0bf54cc6b9fcb169a2d272b95f9bb4719b1ea99ec663dd610920b365ac561c9321b4aa1bfb41b2a7264c05aa65f7b677a49b1bd793f1cb080d78edf5552ede3682a255a61fdca7d08655a2e93a1a9d78911146b085ad4d0dcb82fde9e770dcdde835c8a1281c14390b8699afac17819edd9e10e7b1e43a9b277ac6d6dcc39e453f4c53b76b6ff7563ddd0475edb5ed7b50865e7b3caaf61b193eed2deaa0a50e76ce5a0b4b9391242c97a2e7fc26d5355c1bffb1aeb797f32d4dcc7af978cc2e00c8f172a83ece3ec01f3db336a2efd44182571effb624367ed01275fe117f119f6f8c6dd049b8e08a15a193fedd48e6aea5520433096b9718a7377a56d0e69e5bdd91b8aad2e6d35ea5d07e77e32c70ba6e6f4b647649d7303ba5bb93fa0f5f423ac24fa56ec2780335819865f08744f6da72416c9de74fceb3caf6cdb3387c49ed9273340097d1350606cc356024e2a99ef9f8bdc73efb2ed946ec3fe2f0c3c28279341b85f108d70ecc22ef263aa9670273b05e0a655b64b3d7b3c7a19263bbcc93c0ac90973a956c3bcef21d97885904598cb84a9232b9e11cd1f7c9419033aaeb69156208c69261dc42d35657d9d9e45b3e8f73c3f06e1b13da9d663a6af97f5ba3407d51154dfc14bb2e405a26c3020bb5dfc76e1b9a1b5cc625e0bd12e39ad8945b79a002816790e1f05a2007df6277befbde596524a29652508c008c308b557fd2abea75b7c1dbe065fefcffbf3febc371eff8eaf757d17ba851e757d16b5d61635345b58307fddbfb7de9b9ff65d7c9d1a659d556ea74d77e817750b17e309dd844e2929020bdc0817f473a9080bdac6ccfb6fdeff7db6c5b7f37f36e7b736734a3f9021d0361d9bf8de9cf3db1659e31f61f167fa2cea59c74f31a7f40319427d9a83b1d11fa33959ee9cbd95fc28d5126c20d9d22106500b5c6cbed0966870a192a74aca152f867beb7c9006073370982c1153654d2f2a8bdaf981e585890d5b4de45c3af8457beb9862dba56d97ae4636897cfcb79b343e0669dbc4254d6a7558147515cb6e7110fc039bc34a3687dfc44d32c21f3afe1dd6338d63b92cd78db3adae92d5cd4e7b3e9e3a0faa2e06dd8c45bbbeda9765fdaf7ef96daf8f9fe1ef30fcbe5dfe0ee22aead76c17df425ffb8f3682b60fcbb22c87be2cc310fca0a0f21b2adff6b6a0a10f873848eef0857e875fa5421a797f6828dca78d07853ff4556a28fcf0c1fff8b96bbf5f0c326be6497ba117f578df942a689fc56fbc6e4a15b42ab49ff62e6c887dc252ff469a19be90497bd2fc7e9b648d9fe1f71fb75e637dea2165c5448a2ae823c74a7270c41dfb0782bd205d7a505d1dd30fdf78df7cf838b75e3b8b2f8af9c229cf52efd7da4db96bbdbf7b3e98ba688fc79e7ebf36592ebb553bc85fb16c2e7f5f3ecb133649e712fbfbfb69beabd115aa659590a62e804e7b41d4743168e74ccbb4fc341aedbab0a2f839d3f2d3b0f859aef169244992a7f8412449a3895f967cc4a5897f7bf9236c90f5b25db4176fad6749692f3e4983c8a07a8ae08382eadbae5e697c937f7f342d57ed40e41497fcec65152826faab505140f6f438dd834e7b40b0fab529542cbbc547dcefeafddfde15f313cc7e9db57bd9ae7bf1f7d87af5f3625a96fa4fdb559625076876f9e55fc0c11817f882f2557cfcac44ffe10f7fe093449f8dfcc8ff6c10ed6d34da0f9965108dfcc6cb4f91bbc03d7cd0360ad93d0588d40f3ff6b5deb6ab9f57fb30f3f135a7f7c3abf703abe7e3cf59f66b53d815cb6e6dbc2d58bf59ef6cbb28b65dfdeefd7be8fb5b922ffedf241b77814ba1da0fd55e3477edea357eae187bc937a7591a3f5d60927fa1c9c19872e42b4690ab08b78bb1af186b56cf7fdf7255046cae3ffd985baedac1e54835abb7d48a4fd824bcebe918ebe90013e4c3dc56d4dba163df6e1b6bc3a0d39e8e3d1d77dad381a79f3becb2c1467f8c30c6f77edff79d2b72fddbdf773f0c95cf446d2d252d7d7ec5fae1c939ff08fbe56b6db6f75a9a6b17c57befb5afc94bf1f8626c930b6c9fac0ddb649f705428a8a89a83e2c1b3678c628c87051df62c679b2c0efbf474defa7eb13cc5c7e3583fac9fa28bfb3f7ff5c317eb875f4330c80eb1e62a22b55f7499cab3c84849b45f64299e11d6dc3677a315ecf52b4daae28b5b7cfcdf7f7e9b7fe7efa05b7dffd6b190f2b475fbf789ee9f144cb76fcbcba3fc7ffbdd86f1c4b721f0131e3a2696ebf833eef184a1ba446c43dcae2e06511b62850d7fae37ccfabdf7da5c2f7e6b666cdf922064cbb1fd5aeb8b22bd16bf0d61edb5f6dea7e41d37b7bf83524af7b8c13ff7dedb05ae591d572cfb646dd8268bc33ed5b029e52e6ca7af02a42874f07308058221f845ed6f7f6dfa687c5f85faa0beefdbb9abcb925559fffba747948726dde70a5b07b39873b84f17f637481ffc5cc76a07999250dfd40ef26fda31ee3da9d128e44cb3d65804daf1bd0306480c5f5dc2fba5d46f0b4571044770048982ca71a4fd1038128de669fbfd65481414aa10451b248a61188a24507a049641a339c44f1b5f710bbfbe584107da83a6892e8260bd75b014c7b3f6fb69e1680bc3af4f640b87cc3a8e43b40739f9e1836508fe38d286cca01f4d211e9240e951c93928de2462b5fad165c98d61bc5e4afddfe39a502f07d5d0d050f9b5f233589643436118965f1b1a1aca5f9e4163790a3d7d705441be582d38f4e4388efcc40df1062cf571fca1311443f0e98ba559e367105f71137b397af472d818bfbe684593344f139d2c4591d7a10ffaf3d64551ace0874e9ad03854137a4a86307e55317e7d226e9fdeba58137a919fb72e3e093cf421721ce2381bf936f28748919f297a2954fb9a097e6906f193c67fec38f2558c2f3e39bef8a3188621c86f55a9fffa48716310bf90c42749721c3749063df9d6c49140fb9af8a379e2caa73d451fff3ec7957c041aaf71f1c73fcb1dc44708416e9fe427692b853e0c32cf143de8451bd8efdf172f3d02cbf1f726cdda8f66d0df6e52a53af233d8c9b7d123902612fde567a9bf6696fcbcb74e440a711c79eeef875e932fdacc73839e7f6fdb493e256d09f292e223bd12c78d5ffba0bf952f746ff8e393941ed5380e7c5cf8e48b4f8f82382ee423507a443e0edcfcc48124ec1771e0fd12f4e83e521f37bfd1231a5f712b012271dc7813c3bf1c47861c07eec78d7f9fe4e1e6276e5b6b473e82384208f21b3dda7c8412f408897c21d2dff7b64920af49e92882a52bf21178e8b6bfbfc1df6f4d4b920d58ea368e1b1a127f7cf229116fc052076d2f3e687bf16de2ded43c477ea6e82b6ebd9e29faa67d699e297af9422f96bd1c4fb0043dd16fee34d1ef13bdcd3c6fddf6a479a6e864ed292982edc11f61f74ed147589b593e690a591d69fb0e650396ee8f2fde1fffde1f89785505367e967dfca0bffc1cf98a5b1f1aaaf1f3d683ccf3d2386e243febf1c9f1da1e9a2abe15b7aebfb2dc25ee974bb9fffee552daa7f7bc7cc5ad3b200bd94d26eed7af94ff3efe5b165f4588ff528efb9e7efeb30c1ffc10f73d6ebfc56d5e82766e711fb62258ea97e3f0abb86ff56bf3c4e9a7601da9e3f4f72a7446ea14cce2a89c73e6da7e28a5f7432e5d4fa73f4691ea1402628a12533c85b1d11f23143c18e181ad2ee0a9bd95fc28858da09a448907d81019ef28cfd2da1350a84cb5c9aadb6ebf3ed51e35caf68f8f286162ab77fb2832f00110bbbc82d2adbd7ad26ddd59cb95407c288b7494241e50c286a84fda00d2a2d2b3821c206274503856b6a44c3921a952a6862760bdecb4f764ab9fb92c750d13a5ca587f2e36f207d37b021ea02e3565d6e4e1c101267af0e068333626b5bb789e1001ab6a2030a601eb6cec3da971f11256990d73c47c1c79d343048db21ba4b8fae860dadd9c51874e7b4e6af4d368cc6b5f5ab30d10cddaca12846d92675c61d4ef2b61aaf20401e2032225add35e13389d7a7dc8e54e7b4dd8f43377b7d4828035c581e374a58ce7e76a0b991bb48a34b9836763f9c1f6e9ea0c982f3720e1b1c36238c8a8ecb400c3c80b3b6c32161c524c8f617a0d4b9e5bd107647461e20522bb53c7889e1798ceec29b202103327585ae61a2c24201d8dc5425899f4d869af89943bf469c5ea14487952310ca4a4bfd4977ae54b5dbcf7520c7575b53e656b73cedc36d511c3ca7ded08123c3609ea35e28645032ccaf7c98fd398254e644c3bfc4e2fe49c09b3b307109c3a345cfde918e38c8de4bc260d8d4ec77a8771ee3549f2473cf39fa7fd4a3fbf4829a52372ce5949bc3777efbd7f3b33b6b5bc3a1af6dce905ea087b01eab5a3b59ab83a1524b8bdca04fac12edad15e009fa84c4cbb13d46ba77989abcb4a7a4cfce09c2929c25216199cac2074a07e8895757cd5ebf84a0b91046e5cd163a54c159c34b64e7b4d7674b1d35e93193088f6318fad9bf4bdc59f65fac46cd3d857b74c487142b5aa4c15ab36996073563ffefc75874d1329f81ef35c3651705c093805e2e31dddd11d254130a17f84dddfe74f4185eff1875c85efb168a6d0a4847a470a17a69df8f8535081abf07d0a5408f1632b7593f22761cbc41a406c0ce435eceaac95cdd5af4cb5e9ea6cd5e6285c9dc59590ffcbe14ac01f47ba3aabf95f9d9532add5d5d9df4bd6ea2871531135c9eee88b4156e497a05fe82740773082ce28892285f1c3efbfeaf5fd57b72a96cd55215ec3fc58a61aaf605757ab189eb139353285092459bef8348ec3bfb4ab7114a4aece0a93fc84ca7475f54bb342d5a6da82458b12f67f5f827ef2274077b56f81228511450a412fbe7eb1fc5c3e2551889fbfc57d162d4ac09500860f3eddd1be8509da057025d05ee885780a76292ced44a09d9a16eaeaea6fd34a5d5dfd9a0923e8ac3471f69776fac56b4e80ee62804f7bb19225a020518c2882b86dbabafa348ebbbfb423f95f5db54f57575f344b5c5dfdd0347175f5411377398bdaab96761fcf5d5d7d6d661367398bda91764a57575f05dad2b55f0b1809a51403f5cbfbb3e12225eeb4b724c99223986adcf6cb35b7ef2d89ba617a5750bdab1837971bd341a2181bc9f4d65bc202852149143952ec6cd94203150376668c062b6c6c6042e7f6b7d3de12a88e74b1c42b5e2cd6c7fb6fe52aeeef1b8667ae9fff5e6bcfda35c8cffab5b248a1eb17cd33ffa7a23e66717b7d6ceb4b9a6c2547003ff373e78b55dcdff87b2531fadb246cb527a73ffde911f26b7ee657a1e2fea8cdfc95bc9f4d15da7e25c5aadb504a29a51fe8bdf4deaff752bca130c618639cb3c639e35c73c6f8ed6f8b64a33c09f23533ba229c3061a3b42fd66a474b8260c2e670063e138559bb091f4871820b146c888f9fb039fc266c0e3f8044d5fe5d5aa3d20850798e1de31745d1d6fa514ada4b993211f1be51b7f6d62a4ed34fa16a5dbf844dba5ef64d9cb8eaf651985005d6ed7fc0cc8ef6ac8a74db69af6aabdb47c186b09ad60f906a0e39ddfecd633bed5515e934879f577d5bd75040f9731fc99df692d418cb2432bafea2524eb93bed2109d491e0a159d0690f89193f948612d8be7466e83a8aab6bedb5e9171d4d6bde7c0154c6676744648e9eb3233356c0dad141c2d5699df69030c94744bd5fac94fcf6c61863244d2c4861ba749635ca5aedb8c107f5df721a04f5de558f98b44fdac72b94e7d88b3e88fac6bfb4bd11b6b97d6dc538d3f4be7bef7db5fe8bdf62fdddfa66acf5fd3ead3f8c75a6b48281529494484c516e6c2bbf62216cda2e9bc3a010c6df8c92f6b51f7f8f65de49366e64edbe64e50962048912208008f7a647e7d84fa1af8170ed94e48b7f0e3df86517fa6d9e65f8e2833fc4371982102f3fe847dc1ac72e70a7f17d86ef4204a1f4c1de2f861fca7397162c71933a24d99ded2189ead68aa0188a21b6b9906f9bb3399053241b629f2b468cff33ed56ed606361db53f20296ab1600dbaa6c3fe27630633421eb44669c5e85ecdee2554149754920acae3ebd19040ed33841f45a97725095ede8a1d56546991d76d33156d3f1b7c35809932252d0e481f262b3c3dc46a72c6fb90f75faf6d3cf1c8d9aef1b2ae2f215461debc71a5f3318e329193ad61d638c6f2090f6d4172ed3b259d788f68c0c99f21229aea1881263aca180d26573b4df5a6973b80bae70cb6057df08abd7cfd9a467626252b3abbd291b19f4da3b62d5eb7f509fc4b5e408b6732ca31ceab467c4854ec36c94488df4e73ff1bdce26eec4fefcfafb4f671377427ffeacb359deda7d9c57af7f020ef3106cc74f7b53acbafd151fd8a40d9e98989856d80de9f71f60932ad8dd3fb1d5efa300b3bb6f820d417b4666f40ebd2765d5efbbc0260a2a59260a2c1b260aac279ba3fdd61f49d331105050d9b239da454ba2d8257cafc107790a25fd9bb439eec4f7fb374fe1c697769aefabbb499997d7da5b46acb5d65a2f6d71f9c8497a14d53bed11e1ea17541c25ed11b1d1e9ef4e7b44a0f473f74b75a73d224cbacde6ce5d56c93169aa510eb5dc8dfaf7236ed6868c6f778632ecb437c4ac9f979f14ac5737a2ad5d7f1f9afe7dff540409ea35c2e6aa4d86fe7ddff7f122eae5a1d3de10287da8d3de9022602a45aa60bc95a3ad1745d58be2819bf4f75a6badf510205d6bcdcfcf368447d75fa4b5be75b053003aed45e1e964a7bd2838fd34aa9333cddff72d90fac75904f5fd9b67dc0855aad73fa999bebf0552df9c04f8e8d6dffb9695a7fe6d7359fff93db6b96d56063afa042565850582d496b9f3b83730a54546941b597814c9600e9f315858589822b3cb4e3dff0d4fcf394b123e3d87bb9cc7ad6d4d3d93f17220a8365c4d6366b8f9b2cb73aea634d992d5832ccc2ef39b0ddbfeab5988062ff48b2b45d4d4c9f114a40fd558a01759fa6c71f265469a33b1ce0a4432ea34f9ea648194cf0c5cd0d4a023a4690600b674113343d61524653e946c12c5037e69b321be0e8220b83793d5d1a6fd5442dda4de2a17021396cd59a9e7aca569aae72c77aec64b44d4a0d63983260563c244030f4d0f272111b84106b6468c8531285e99d65d63e303b9cd963729e4586b1836601afa7beca4c4658caf2b28fda5a689fe0017992f5a61ba4cd5d9e9406d9a40c112bb73b6d3dc562655a6e751b3c6e8d05a122787989e0ae3c69b217b8e60ed2093b5c215aff0b0818b131a8870d5b0a3bef89a73667b6225cb101b53b684d0119d9c8962a5dc00b90c5741b1cd593c6e7ac45bd8be8286d134485ec2fa7923f3eae7be1519e14c804ffb09cbb40b77d3de81ff99316428edc06fdabb303c01773f05eab533c1f726d85f801e02e36bffefe32837b1fff209d0dde61c2f658bd97429698f0cabf7e28c75db23b3ead6f655fbcffbfa9adf8942c7f7deabe2fba11e02e36befd919026e8bdaa90bdbabbea764090bd87d9c5e1dbd41a6e6df39dcb0b7921fa55bbd0db96303062d2f602fecf2ef9bb4e77801629241ced48cba029cb19e8376598c0d64f2f7e64abf17f46b642bcb5ee230a5add3de9b256f7a5420831b40157c429df65e30eb449df6dcccc9733356b774633425add5da7b31ce59ebefdbd5da7b31ce59ebefc3694a52840b6e5a91cd556b69b81000d05900a0dfa7fdf440bffc96a930588973a6ca563697999c99aa5b2a9bb3d93462723f53d9105636c46d81efed5484876ebfc8888aa019eb2b13e9c784490f4b5490c5f42be9004b47589c7e1aa369eff683ff994d7ba7c209cbb4db0f9a3294765f0c191fecbe6fc23b15fa7d4be23437f13ded27caddaeda7f2ef55b99fa3629bd3a335bcc45a43729ef387346eceb8b151f3b6ae72b8718c69af2f4f1b2c35b9dfea6ffd1d7f4337d5cad3afd4bb9b5d6da200c43896dce5a6b2dfde060304bf9b53f8c31be263da218638cf199bc2bc6d8661b52c218638c31be58acac7f29a5942a61bc6fb7b2bcf76ab9d80c6551cf3a6e84b0b3a86725e8979335427063b16f53da75ce19677e628cf1eef96b5791ffeefc9ae7bc37ddf4313ff3ebf740b7be01d78bcd98a194d26b86522691521160ddf6bb1ae78c2f364343549aa37fe6d78f73d620b8435ad603270c4e5769bb8dc102d54f101f60e9a124437982e8455878e4506484e5469706bcc2bcbab0d4b05e585e80d8eb824e7b5e73bcc6f0158cafb555d45489a177fcd55d9e4041f15e61f759c1eadf87ab60591dedfaca96d5951d5ff1bae265e4b7aef2b4f5cab41960c5eaea74b54a9e2a66fdb4f5fa770fc6467f8ca8ecade447e9defa19df6bcd6c309b4a573f7338d08cebd597e69043d814192b6233e8a020eacb0e255f72ccf066876fe8b82b0ec652c24e7b54a0d829b7e7ae315d2f943081c226612a57b7df4f4145d87ef1144c65099ef20115ab3b25532f2a3b7a0d2f59181bfd31cada5bc98f52d7f755fd5a6badb5d65a6badb5d6b5fe7ead7feb4fe35cb3eef5b3f9ab55bf58ffab49becf3ea547df7f5fbd5a4b174de9d107a6cfbf29e52ff10013284cc89f6245fe9d7f2ccaffb9afe7fff2eb7cefcdd876fae2ad24c1eef86aadb5ae60a40842bd72a147423d8b5a537aa4398b7a4677ef4a85e12765a73d2a317a583f6b18d2000860c3dfa163560319c6b60f3dba2f420437083dba6f6dc01c8a8ac0977ae9b8627ea1e8d15549bb50bf5057c87d5d9318b00588ea68bf4f6b0806b8c0a339da4f5abf533aeda75067c0561f8a2b0218b09503ed805ea9b12bca46a5eab4e7829a7ed2b37eff03aea87e7fc4fd123d1798f40a869d94b4c7b5a707dd3ee8d7feeefe091419f8c00aa91deef751a0226ebf3dae38fd1ae5f859b9749a799f102a975cab2ceed8ac4cbd9a6725a182f5fa9a04a16a12041646bd7e8c6ecd24bd825504d04edfaabc75fab58a8a10418dd16b153da22f4204499274cbc1a80811e0a73074fb750b1551c1e811fd2df4887ee5424590f697a808cb6ffd9c46a4b54879df8e5b4d21e81fc0dec7d94fff58da6efff93f20d9a431894ca27dfe12f4b38e52fba2199adbeaece6a5be5a7ebaada765a3e72fbf28db1a22b553a03ac5d2694fca982e0689f4265df0f4e997b827dc247c938a9e5a31297cfa296ed2064f3d3cc57df937893f259f7ec5ba4926118a9b34a4c1d39a054f9fd2003c7dd38873f003f80fdfc10c00e71905e03378215303ced369f0b9a7999cf30670f41d7e344dcecb80bff9a0b901e71d75f80fbf4d0f9c97dbe005f09f89e33c6ebed16b1303cec31571de060278dd5f60f23078fd1ebe97e5a7d727f2f045afb9d3871d00be34791eb813073b1eed3d143dee459357c49d8876bcfd45dc89b6fbc780f32ef8f22d3079228e87237a0c3ec8e41171a7bbe3ddbec4e0833e347930c4c7803b1d659317c49d12b0e38def41e44e458fe34eb61d2f3fee874c1e0703e04e16ec78e017fd1177da3bde7ddc6393d7813b09ed781dbefc40f4183c07dc497f05264f00dc09b7e3e9c7e9b893d18e67c197afc19339ee14b4e391efe137e04e4a3bdef745af01770a77bca1c7e06b262f000f83b7b4cb803b6db0e3e1c73de74eba1daf822f398fbf53dd856f4d1e0cded2ce883b2960c72bdf83870f398fe879b6e70d3daff6421f00ee94b4e3855fc4394f3f2f3f0f3fcffefda237b993ddf16a8fc1bfc9b38fe33c0f9c273e2f7c1ef8bceff73bd51dee0160f26c8f01e739d55d11e795cf0b7a1eed79e3938fe3bc0b9e67c1f36ecfebf015fc887b810566eeeae8df4c135747bf021385aba3dfc1ac44a6cd44ba3afa43268aaba32f6456a6aba35f33abd5d5d12fcdf2ea287d9a69c2d5d127cdda7475f447b36299b7aba31f9a23ae8e3e68a6b83afadbac4f5747ff33ebd6d5d1d7e65f1dfd6c96b83afad83ce1eae85fb3425d1d7d6b562f53858bee809b0a47757f89f2d4ff467b50a40237bcf5f75a6bad73eef9f9be98beafa6ef03c35a55b9d7b4a995fb437067281f94a6b1351c0c80e8b30df6ce625747b7073640c1d3e606922846c2b2a0b11aad82f4d090c3072ccb8d2f64c6a9da654242222f53a7bdb3afae35531f61c5d2d481074d922c323e3920357981394942364603982b1c462c19a2286ab0276342505ea0087dd5c43157aaded4d0c56406396735a431bb82e64d0e505fb0b4d0b0c610ed99fac2440509d49daa9d3ee30576430e8f1e6bbc407961fbaa654169223690060f9e50999165e6298e93922e5a5aa0a123a165a3cc103858b08021e2813a10243319c31c241b63a27cadc0e5030d58e44a4b0d3554b1f0a3020269183a8181e07847a7b0518b939a5ac6a275d5462c098c3f33b8d85cb0618f9e2f294f9ac450a6a2184d34a001c0d8671d289b193c2d2b006a6286862d3588da8cf9e1076c0c99ad359512cd98f3c2d88f2c377ec4008209a0ad3b769e902103c3d2f1614111e10e19706541f386888c253860d8076063e78f0c80f21019c3666071c4b187839e3d48006971da63839628217bf89b315e8e949991c38b3045130e3765718ce85193a5ea88872a65a86a24a9f2e584cece1904dd446d3754db0d93ed266bbbe9cabdb837100d23e9ae751826f1b23a0a162636a6414832476ba41ce21a5beb5a6b18d43d32c37ac307cc1529231f303347099a1c4ac8bebce430563dbf118f5dfe0f48e5cde6b097d551b03010c4887d7993e8ed53a60c5697d314285e3bedc30d133a4e3de6dcb0d3bdae7516303d3bc630d52c32aaac9a9efe0f483a8c54ce9fd585e1e7bbed0cb581e84c80cf8e9ef0d3232490193d5257daec344d1387888e3d737a64cdd8e917bad676a4dcb4bef3850fe02526cb88131c7a6bb29c99b9e1caca101e5758ec7811ed88e1b64e428b38d92a83b246499c2c2f13b680a509634106ae214c1e80a011706723386e14319ce5494acf55cf0b3c5d50bcf4b428a957daf418b98419394355430c1cb1b30df6ae78062f107f7a8726c3a1f639be2652d702ae3a3f6ea07d41b00ed6de603d0bf57ccd0e54d91375d605c317202b547af2286181c12a8a8f589b17b21d707f7bd456df18669a73798503992e73662003d20757a64e0e2e3153a6f654a123c3b7a6aac4b4d4fa490dda4462030e1d1c7c6eccd9e92f6d5ef8093443151bb56b063adbc8d65a7f5a07196d7829d3a38c4a142b5f546a16a0337583860e1e75c204b067ec7c81362333a4b9beb0ac47a01b9c9c3149e2e686ab1c2cec502383d887122f6e4039f3664d131b2e6c50e546922d71ee38097466cbc2eea0097339d7384c719ae23cc581bac591fa9cfef29aaf387ffee8fd790884a13c1589819e8a2c889895176370fcd982c397a2d03822a74e18384c9e90905489c960c6829d38bbac956f2033c44b8d3331b038d5300a4e6d70785303aa8b9e2960ce000914c4853f61c427a526c244a489c81311a8fd4a3a94360f0541518b35212c7d4110b43303bcdd6bc14881b10283a56f1bfcbe9c73ce1fd91edda67c5baf80591d05e14ad82e61a0519ac0adb368b1193f3dfe0b980417a804d19221562789942f367bf61213393c9e66fc89a365f5dd3a358c3734e3515efda47516eae10bd5a74ebf74cc79a2e0d51aab09ede212045d00f1b18a4147ce979deea3278cd7a5ea2a10d34e67e92b2236f1bf272376d01df477c9e00438c0c8f1038609ef4d944d63da2a92e6cc4c8c180eccf0f49cb1d65a77ed052c93f01236c2da347a422b8a144c94310d200b45cd8e2de42362a60590530e1b4d3c3ea811b283c8123874908cb951bcbd2b06411ed4d5d1fd8d5fef85c13d78f6f8e1c3c4a7e96910033f8b4703de0c291963b49290ed34942d7dd8807991a7c8132cd0441d332838540922a317057525091c1e57614c0198aa853baab021e373c64d0ea72b2277ec2c25e93a82634b981e0c7c3cd8a05e72b2c135d66ba146988d3f40ceda449d7962476b979df47ceb6c019bdc1153bb13e766803645c6c08a78b12aa300150b6645d8acf9b2e281101855566b669095b1c004491c3d675a52366870428786945a44975f64522c0e0931b307f39509f707b569ecdca5eab372839fd5b66a81591d05412b6c97e1f7e470d16116ded827834895caefb88b41e106c7320cdfccb13a8a479378e3479380c3a4f5831ebe2f5782b089c21483ea855dd65386236b0f8cb2b03fbbbc842cc8100f645d370fd298ee20087e1ddc3b8698d5d1b1397848c4f04382c79491946059d957631d7294df07a5350e43203a88a87d7830018819132d2b5ba4c85ad0b264cb057988984962a60c981c9ad008a471a225c50e1a195d5655927c29fbc2aabad32bbf0f418c961ada6cb9700550d5d4d90b3779c2804d71314374844c063545c8b474c99044eacb06baa687131d5c6aaee0d009aa809f3b3ab6f0e842b605499134747041dca009739247ce8e40391ab63308d618b33a3a07cf2651c3cf26618369ef1c0543f505ca8c286a986aa07ac2a4e7af27558452006547142b4eae86b8292fd34dc330b3a263e827935c53db2818f3254b8c2f7e6a20b2cb60bcca82f8608384cb2e4f916b6a39e72fdfd86067186547f611b3af2c95870469010b0d139c29661c00a4c95359d7d81b3e5683dbd3991e576677fee0c111480e0c46d46c997166e4d32c9452e0d88f1cbae4e873e50622540b9496113d6dbe98c5e1b78c47d0ad1346bcb4fc709d3562a88bd0d9d3e6c677e3e9ea0f09063134200f2eb86280a1c69f216afc1099ea81e7ea88130d42e4e0c1327646816800206049182534906ce16133c46aca045c3284893182d50307a05d413084207b6f21614442c8b068adb51eea9ac498b09c4bdba48ac71c281cee50598094295f43b0e4f8b913a5064da8268e286aada68ed65be3f24be411c31e301cb6b20861014939003537cedc40e7cb0c5c3a688db1e12687d999244f846831c245cd4e0811a2d574c60b1c32640ed2b3a8d58212324daa6ca189b3cb5260e0a2a5e7c6d48ded83ca16a7335465bca89863c2c2f4c1a1434a10a8fd69203de7accb66c0a84105069319a2d01ac244b123a60a1a2e529e2826afc8f44c7e3a8bf9b10edafea1edf8108faac280c8784303abe92a4cd4559b2831aa1c7a8453565358535b535e53605361536263ce79dc39e72c55337ace787f21d18f2d45c83c85814306838f2a353a1031f850b2668b86992d1eaaf45993c68913355e337a68b1ea724108b6c688d5d081e3ec864003e041962fbe17319849a9d2c272a14b56901b986250620406201e7698be3225a4d6bad43fea90559f255470984225b663690997a9b339605467541483b317655176f4d1a36303eadd2045ab0a1628e28c30e71c43eaea6807c1fde5cf6aae601adc7c9f7eaa5345cbc1332e65c998d3c60e591f395aba28e103872b4a071915ec95c1932b654284bcf0c545460eb3399b8927a34857d78c235ba85249c1c09ceb53feb2531004eb548b8e2c0a66b3c482fc6952c30bc92ee3a0014acb0e272201c890c58351e7c893296039ef9ef30d3329e0171695db047e3bff08827c9b7b1c77ce39e752fffeb48db230b26c4d2d488f0cb3b2176aa6d89093438f3c66a07038f39523086b4dc7ced79b610bb6538a74d520a32486312b1bb6fcc071554489560db32774fc8834ccfe94c1282f58d3234daf8e9818a0ec74952b3c709ea0d9d1ebc223e7506b1d864d369c20a8646cd809639421641589000000056316000020100e874382a1344e145d7d14800b6aac4a62421687a2c1601c065114c3300cc3501003300c8318630c82d6b1330a71b39b86a122aca34b1b10976419fb81259ab1370ce04bca8939b909ec18a09346a04188c0f725dd12c5f5316f3fe55a3630556e1cda3471f31d6639dce0d7220150f6a93abbe8c221440f1b7d50781b353f4a9e8dbd2b6e8c6fba3af113e79aea7dde824ad26a116fa1f390a75f5413ba4c70c5bfa1b215861e0eb5cf9c5569e852baf59f52cc02bb8d6951ad2266aaa99c5225ec4aa5a2e7a7aae5797b917d155d6f0aa06625525e01b4408a023bcaa03d81b0c0342d4fa2d1c055eb6f8ba19b604741e1a87221a1a8c7c0d240e7a323eaa3f53f7ef40a3fc6cd4fd17ea670c1a19509452cbb12811b5ac0f2db1defbc3062c581527f76f26c8c3c24cff0f65c7683df10632eeffbea0045d8cf3d9e152a9d63c1a218995ef935e547962323571f68072ecb645c0be9f8b15d996997f20aa3950fe5311b80c010048280fc442a730893a8ce7c55ad601bf5481f7b664aaef09465be9ec91299c09fe1b4f75e3acff0fda1f6d32691dabb62ab444af48113316e295f750b1c02b98d039d14567216103cd9504506e07355a0cd1168482fb716d358b17d0b2d39357481ecd0c2d9a33ae550dffd5ec468c39e118c94494395837dc9a54665cb823b0bb8d426365c110516cb662e400e25e2739ac5ce40104f08f4f95baddf72b6a162a1bf5184aa08b69d55588d73c521a6df144e1fc2b59a49f34ab0a8cc4468e5bd9188734498eda00df09036f0a45a5d223af2df982a615516d7b16029b85dbd477372002c37b0a0abdd24019494121fc42c8406ef29c08bba69d073008795f0923fcdf14f8125c73685d5c7564139c28a383652d13fda9d294164526069a6e21f152c9b943c7471642ec02b616abb1d117a9328faba9df53a251907821f041eb2ef3835968198f6149e5a85a5aa0635c25004622543bfdb6da006eb15a2f92f175982f2e0bae68ef2eae89280593a902404a4c45139c63c83cf17ce54ab2be24c2c909eaac14fa206a0bbd2088693c17a24f38bda8943a70112a13d697ae6afde825de4dc6b009f0799e7941d86bfd131dda3c634c84b9c0c6e451c67a2b4046543d5ea41d17bece77a8cda9034f39705e39dfd275341ddefc89686aca9289e73797b5a20bc0440ab2fa550365d3ce114521b39bc37b059268583c804270db79905c668f6bedc8e069472a39c772f06941ce5d37fae5a6dac83e99263e8b9e1fa13314788e840dac187969e26f1ae2208431a15b465b947593c9bc42e82db20460f69331cac4954480da65c8535b187c3918198cb1f7607248d00740cc197af7183a83d7566692067bf75e4904941d2c892041353961ea51d8e16e8e72dac1c79199a73935742db1ebbddff6bc61b7911d8cb118e552abb42c28c015fe629d0011ac62a40f55f168601762109fc6df0e7c99e9cc4a5bfee6945be9107ad6403428e97bb2c31687511357e373e896413c1ee2b8a18f3d38ad23a2e30a6698e9c82afdcb19c02b0c705dae9bee80758e0d753509758dd4918bbb67b1937d279570fb5d94f88aa2e7a925d261db1de9d063ae2d6215d6c2d9601e8114b93cd4c2dd343bf2921be4858e160fa35ddbd0c58e006779bcdf2946b6d173722b3fa4d4ea18091f2e061cd1eb1c1e1f2f8191b416cc5c6565b91ef30426c568c7eed9b5af6e0e2d1eb251cbc4dbcec38f727006c81c5fff49458252dfa685b83c5a82016f860a8eb1517ea7a3dd473eec4bc9b862ff40fc85851cc0ecf581eec9886645cb9312ad3abeb1e2a8cb1770822f3ef2c0e53e63debc465f325b022f60ef3b6b15802e7cabca5e6d53f2d96586afe40e12a340ff52c503351ce04a9571bc6b29f3a8ccc78edc88585addc15382aa359774738a531f6ed5b3a0e2467f42c0a9894c81f41203c098c9b0ab3d34e55f29b5b5a6a96dff3e42caee606c9e27161ba888c0ad1644a4cd80af788ea08db29a3f5e2a95090e745bd88c9a7d63122a95616a893e29dfce451d921d172359896c378bc90eb62ed6f1985b235c5a9b3369df289e0bdb4a2afaeab5c179cbc6c191572182cadb83462b252c223af4b992f6ab3755be90793a644db974c470a0d3b7ecc5e25b08ce98273ccc167d9271ef2cb8e23ba8e2fd1a2b73ac0c1552972d702cec28542f4719e833bb2f9891517ee51b8ee2923fed4fef92f238296c8aa5d946a799ecd80f4734b7a412c631512746b777f3f247cc59b1715eba758bd6928a74098314866026a3341b2543ea3973c5012b3c5d65bce480334ba33594b611646af6151334e9ce8774e54c0caef2772f16f8e4f675975532780e436ec560c3bcf80e842b38b4faa8833f87bc61c39b9f6311d30b800e80718404bb7a8ca82c8b122ea03a05216325775c07b8c9e77240f0684fbb2501289cb5cfe859a9716b23e4d5430acfd56914164652e7bfb77daabe33a58c35bba59998140f788604885cd204d2b57bbdb109426dd84f74f211d0a7fb382514d8681e88ea7fe417c6fbd0db31e76c8c5fbbd60745b62b9380f0e580e1898b2f4c1e3711da828c0405d7272fd6ac53710b45cbdb1004a31c8b2c2bb4e27f4234401b4f204a4d806386ba2f608671c3981ce37161cc683160694090d0148acdb30edf32b6464a363a0edee07f7c5eca005e659ebc5402aa4c89403628e7c6e8997c835555f6cead08b1c18940ee9e5a413f4c6b406db230780deb0f345e142b4e9a85aab7f5334eb7d6386e4486471d0ea920278423f35e173b54812f27f729f3955b9a486212805cbc166fcc7c510d925f8c47142e273e559031d93496027451edfeb66d711727e6793cf1aa64c4366cca523c95abb8821d8dd62cc8585a8ba257f9dc10e6426929cdccdbeb2e5450f88a3bef24ef64d80884a07b7b2c9237d3a4aead01c6e1de94c15eee63b70d123ef983d237110d59fb9b9dc74ac85a8471b34bacacd4a5dc6518ef37888829421468015961a7f4184dd6c548c648ab5d54a6330aee710b0f01d09798a9468283d9be942c435f2a3bb5a70a605d248131e58865fd8c620e7c9eacae023b5cef7797628fdb43c8a0b8170f0fb72feaab05eab6a4dae9f3f53f54105901a8873f75dc0b62945f4d167d0209aea6e8508d939b1413e1f96d2ffddd252eea92eaab10504bba39a17c5bb3b4687e1669b66373487aa721a1e21de969e52480942446ae58c087c7b7cd1284c9345c50faa22258ad993e8ca38a71485c5e0b696553f47493b2e424459e3d4bff3db2065215d8eca95dc9ced0f107dc58b3b1388a55793fa4e572d21860fc8520b652466dd4417e9fbd0936c243ad004103b9ef4fa61ce3deae26152f565a3050ac5c489d87a50256568e239d17561997492dfa22215131ed26a47baa27cb7cd853bab3407821da40e93ceb32faad9aea8e9b93bfd9420282785c998856f5b08fdbfb971e842b93847bf3329ba5dad59f5e918666a82b521b50cebacd815d2303950b3500f7e3a93007c3d19a4a6935030453a6c1d7eae8502a60cb2626b6f69cdb0d8f4f4c2541158857076b0362a8561044c40f97b62baf88120e9e9281936a53ea3efc419bb54506eeac309918c8ee7a35d6c13445625e08189e218e7431fdbae70a45826468240463ae524409ca8bfb9edf3a1174e21e2eb75a313b0ebf629a734254b90a4b21c68402fd76d12b040bca835062e57d72d4f9f8f992c74c64495d31591d0891a99d661f0113b4c042c19d9deaca87e691758d5aa41311612e3a9d01f9989fa42d355020dc4c796f01f3a11754edab6568346a3f3dd13b27f01122629b33b77f0af74a06f083b4c0d621fe008373bca2eadf8d2e4879d64714276f6b264f0ce6496b8d5020507d328dbb0b1cc883d8aa175bcfed81f6e320ab1949fef0a5a46123bd0e46f90f2bb05b263034ecb2e49178703cf170a6292052cabb386ad024376c3084a750f4f39ca0296e0fae5a61e72c91e88e04d4580abf7026e2f362ead0b8dc9f248f643d414679e1261348f1827a4abd14604dc7a5e0272abd72d1e70b758457eb79881ee830693849606a5c33543ac4351a152052c0902dac569c4868fc986218f7337c2e5ee283e32a45f1a249647c230159d6e023a14de70653f2910fb430ac4407bcc202952bb754870b052f3ca948bdf25d68d6642e5c01568461db4f6adf87dbc1e1fdaada948df6104f004ceb8065028783a0a4dd0a0e412814090a4523275e64cc3be4ebb23ca5fe393639d42a6e43becb4055542f0c94d01efc7bb4adcdcf0fdf2a9b943ad918440eb4f8a258f98c23627e5da64677885952c676f2ab618fafa20c7d226319b0606104b286204790049bdbb72c05ae68a9df83fa7de6ca6fe4ca421cb4fdaf00b10879448cf318abbdc793180df21ab9bb18c9f9dc7748018f08fc203f272a3fab7b644ad2d7e00ff9243f0290828ba1e21bb4fe84a9d85b86905b4b3ddef0004d06eb4b58e823b45fd31aabf2782c6b7a325c0a15532bcb0f454b610e218d4ece49187780dca1a15e55975d1a12cde9fb5064473188a16cf97eea4749fd8524441d53b097f90d3f2f3f5bbb89ab4e621d519c730d0682037bc3e7330f933b2a5c080f0a111c8350dc2dbaaf2590311e83fe259f79ddc60e008b55c6e8fa0d7e4aad0a9fb321810201c05b7ca0d36c60603c2a9b77c896ba2760dd601fdaf07dca1839aeaf40a8d84709544c1db8dcb5843a7dfe659572a5feba93de123284a97dcb69968724a3a2b50f3cd96129258bec2c12c8c433dbd8ca28283561877a6e7f76061e901485cd2e126b0020d7617cc7a620021c6a5387e0d4bbdfc0d1a9c85d1a47b357544f05c461316e0485455038b02cc23420aec60e4b60235e86e01dfb70438ddac525517027bbd621a560246c19ec7776d9203e3a81b49ab2a86c59c10fa5ae1be833c131c280296e7f5c5efd7f9a00758b84307347a131fdcc72b6a920fa63c7ef3700bc0a15c092e421a8f50f18108805d0127b62e27a384183582ce65c7eb2e758c7865579d1e93a3685f4887a11b10e41f89e580390e8d5a3ef3f2c1857f27435bf8b3668a8c4e7a328aacf218959b508faf74e2b04e5dd4790421d9b5caacc6db381f471c2f2957e226b243f393522090901eb5cf786f2751ab282ecf8b1514ac46809726c7575767aa19e182ea46b5869a46882ef31db22e9afb0a2f786803efa67302ea2c21a11904a9a9f227fef042888c0ceee8efd50b0889298458f30240da27535a531f8b96b4199a2c8cb4e211d51518e1872b3722d3b0bd6a3df75513454fd16308e845479aa25b278e28d1d447f6903b4d765083c0f8c90bcd671df7dda9276340b17d9344bcc6bc97864466d942628951a5c0a8fe2cf5084a332447bf54509383217e63e71739d4be3e966e90d1ded3cd4126fce4bd7ad92bb23b24a3b80ddf506679790c8594a2e6d9940c1681d762235cadbab1d9b8c8ba7c9bf19c467d3078c69e4f23b4bf490f041456400caa31f4bc3abb68935e123a9eab0a06c12373cf99366b4af5149b672f5f7909430f4d5b9369ff616afa0c76cabca39f313a3748d626f5974665e7d824b690fe50c543febd2234ee5b17a5b9422b78636cba3c9819009b0d3046857b90c6ce2f3e26a6e39afba74449922c09922521b924252b4b664c03efad18594985825e4a4828d48377f8923e07caeae8968f12bd66a34165fdea133249a7b47f317d44d0da003ae71bbe2834091f26015029cab32fc13782406020d40b795508dec08935b74db41b1ddabb2a63ac92c39a4d0521c97db034e67c2e0efb085dd6f96103f193ba2f1f88c13c2c93c3bb56701c5823c73ad6c626c300af79d141764f672e431ba370a34b17136b299c77d20eed43a64390de79d8490535198fa7336252cd0e093c2e7dc0709bc206bb18f98579fd83602a086cf5063743f4b094f5a13b71a26845f0009d0fa7ef9a0786e710387884b51bd773b60de1dbc568b816dd14abb85d5058c60058190fa7ee8bc252c81ab0b2d7769c7f963599145add2a6ff42393eb0f04dcc17a832187a9b6b792da5b18e0cc089fd7b620ce99686c54f40875128360d087973178b4b420bed94dd53d5d883e9b73be80b8cb067992612cd7075f152ac45ce3c1697a87ef4b85a8f2ccda3473d2dcc106a7d733ce26ab0642692589150d7218f8cd380990bfc925523d5d84f4532f91b19f74eed9beffb23551886ed684600682340768beeb50367ea6d4d2abeff46841e90e6a7fd39c64e186a011dd2014f34d7014c496fe29d10f1065f7309c4aa585d1e787ad57d2edbbdbc2032d0c068aed7ead03be074e0b5789bc9499bf834c1fc21f275211eb12694ed7292f3cdb69780c66860cf8806168aa1fdd3945f77dacaf2e398da4cb2a359a31bba590537762cfea9791b0ef384276611c5e8132c56835830712e0729583b8c602620a7daed7f13b20a6e6a3d8c2c77347b5bc232e6504182694c7e819250eed0ca366c4e5e46496095089ca4e8960fabbffa058112579b288e9b71c88b4194f1a79f8c24b72c9cb2744cb7dece4e22b034672b7086eee4bed78885186b33ce65c2ba24a098ded368ecb2c3bffb1335b76b2eb20ef35363099599c2a54d5dbe705fe86487503090d595fcfbcdf55cc10d2a07f44f834b620501a0b82b9b6812e3bbd71e74373da393f6e7ff39c7261b684e8785e1dd6f8b304dddd1965b2936ce0f21ef8f16aa654f31705837601ed527f8e8ad1bfc301ec25a5c461f95421b1ca49316565134b7288a68766c96c995c0d656f84c5da2490c59c3909694e658b914d0f5324e7c4c76b313d7d19ce110f684ec74ccfd05221f303c146be5ea2f3300bc83246a04b53728880ad54a0e03865da9791f1b0b2f86f23a3c7668f39e9a6e7782de88d8dba23ffab35bc4e952bda84e9d2cd2b46531cf5e966605068806880c800d100b1411103604785d6f6b57052a56ce1a0a3c141034203448344dec0098588746ccc70a9b961aa8d414a6a9b51419205002343896e7b84bafb780e734207fc71efdd774dba351f2577e09a9c4780af54c7896bb35868317d21b2f1ee9b50a699b3884e75bca1052020efdcbd658a568c446949c5ed1af85e2fc36bdaf1efee8537cb47736f5e62a5be21ba3b4dbb20c866456c5c98d08e60e10f815a6c97d437374bdb2a0ecc0ec44a49327467366f86f0a2a47d3c867ea7783e83f3e22266b2470ec3fce6c5ce57e617a0e8d93da18ff5e34806fab31f189d72b9324df055e455111c6a189458a51cffe445740e1bc93a8daeb93b411727b228a81ca26bb8ee049d66b4c5503838586ba0523d59199df44e50b06a75fffee2e520950c8b8a88842fc1fc60ed8e7e0391763413f090d36316a8a12308ff6342d7510e0c1314646567cb76e8925da9dfc9d5095a2b8c81348324dcc099c1b1e8041a10a9892ebcbf08e35d9e4580b14c92cc51d9993ae79a70e2d82426419c2874d5ad59f3259d69adde7e8567d0d6ab8b29f040edbfecf8de2286ffd2e631602fdf24e5ad05202e2d54dd0ccdac21bd552dc39d6b19383a9889201180d0418607a09add88b480b8c4c9b00998b40ca9b2089b8b92295d98e85212bf5a49fab937156a09ffa3a2621c7964f787e616c2637ebd5de85bba7fc472c0c00dfd84dc2fd84978739bb4d59b503b3a9f807e4ad7441b32cca2832df56314c883ec8e5261bea592f5b6bb9ad453dd96b6c57a4c418d42dd22b83b2c4e7a01a65502a3633a1afaaa71a5f891e74f703ec3ef83d8e1355c1494afe652b590d092a09dd632d9a068fef8ce08f52ef1ec5f502bc2258ba3ea1c4120c3094bc061a1e7405d1d5bff7d564164d11753259d730159e8d28c4901cac3378810f350a8184608d32c258b8047be7bb6029e04b935800ffa9e02b64b33174e62079ec1dbfce13e5e27647dba44bbd41e5ac6e64feb9c07e7d1e7080b0b602134d7dadffe1f1e69e9d73884c2d4d45b331af8b8b34d7e26a9472125b4cdb003aa27a6c59edfe0b480bcfd041b22e22422f0bb10a27ff7706be10673ede7616f763dd633db09463856161d030511d3a552f6a870f8485d7b263bb58d3f419b0225ca4920de27f5ab8a214148a8d2316af2339702dc901e2f8137141054feea5225825dd6c4fc63e90e9d9a5530bb4b8560d876350999555c6f3f79a30ea639fed6265900b1413d6326193a71e9a001f0bcfa70122b740750e08991705aff77b2d31b991793a2e3960fbc6e28de89e7da2f01d9cba9ad161f292ae46baa0065adce878175149a548c78172ede8f740eea3f98425c86640b51aa9694f9c3be10c6da8aa8ba21055702577964faaf10f9e020c230d691883806f69571c2929d93e36d51ce53ce7c7df737013f4e682586b4e3565805fd17d1a8a22d88803bd614ad767c329af07c993af633d4fe4e1fe361be3c727ce86c7101d6ac2355fa554e9b69131c48ec603572c54b789e21a21bbf179a120c0962c9be0bed8e89722a63b0372f1517cea166befd21ea43d0e9f46e361082fd6528afecb2d04064acd4ce43667793ff6a7602e6d2562a8adcf79d25562ea14781da30016900d4f51259ba5ba9472d416c7bdc66baa6d446db31366a7f79932407116a4e5f44cbf395afacc8a2ebec46fb6004df151133cf2e2461da42633384c5c3be5c42f5384215b407d0d26fe690ba83bcb41de81239dd8014a0255be2fe37c28ebf63a3a100edd1d46e4ac47801dcc45cafc2b9b6a1cc0485ed702d97d6c166b614b90983e0c07dead43b27a6e5b7f22c296aff999b53c8de74502d3c148684f5c7499e9f274b4936811acd6bff2c3533105f7082ba400f6ed05328e6ac9296761c16b3720f4b0527d000a06877aa761a8e2ed94463e4932c62e3c7fba1b6ea4f1f6c70f3dc3e1f7212bf3164038254af8aa77883993ed9d47b0c2a1339037e4439b0a8b48ae1885bfcd81e55b57b4904a64cbf8aac2462602d9c47767a5d1900829fd120d8c9437de65a07ba2d678302d41cf3a48d4083ed83b58fe9039530c66f7a74d27a9dedefceb4bc6c208619344929a28b76c89acf4ae4738062b73d54dda966cd90d40da7c81ae0bb7a0856319a1259ae49c21607ba7a0b64c1ac83542c067bc8947494390e2b245812c5542d8a3a1292df1f109b66704bc2405d89beeb15d03afd53029e182316c47f81d20a7960d08a9784009b2e58da08e5c955805db7c601853ff1b837e16f234561dca4b4127f650f0c177f879c3b0a0ca44db2cbc42b2430bef251e46ae59a61ed47778eb6f4add5732ffc8b2cbffe6900e1616549a98c51ac5dadd2f85d80b74bf744032dbc235b974e31ea6a7d5d5c93d083f9056ef33aede9134393c6eb0ea5505492b760971cebc7b65e79068c0ab02f7613f01c66745a6fa65c00c84e808a9086d437daf9bb4bfacee9d38f9f110178d4dab204240bdaa7eafdef170912084494bee789551a5f1a087d0b73f40fec34ed856f7d8f94ecd36f861dc6080d2a898123096d439fff3d4403e37b56937dcef563fe939ba06fc15fe58253a92dd8cda3e157f8259c3b1fe8c1dc599d14950cc56623ec4171779af6e25fbcdcdb7e30184cd444647de69f4c2e3932a5b75ed380abaa8d2454bcf63eb796a83199dfcc8f146e1262f3d925f2fbca73aaedcb437156287734fe217444fd3a1348d182c2d47c5a099bf23851667a25af909904e6a2d8ea8df9f20aaddb71a0e0eff55e062c69b065fd9de898b0f39a20735ecb20e6b4e6ead8b07b08650ca0d8c504d08b73b5b0760c397864d3e76188fe2a6eea2288b27ed02de537e888257bfd9733dfcafb48ba706e06c1165ab2980bf47e0bd1fde44593e67e97bcd8f4a678be573439e4e70b2ad19f060b9a4c4682efc48b1d98ec1a175bb17acbf6b9c8bcbda9a5ef7d442b12affd340c8dcee6114d4701e2bca6ca447a1dea36708dafb52f9f42d7a7e25bbce873432752c046d8c8f98bd4a1178f4958a036c0d09c9f1f1213ccae729db6af74ef9bafc4d030c68952fcd034892a0178dd0d715c45d710dba4c52de1f0dff5f3dd268dd84b2b2a8f4ebca0a7b08efae4ff7a0f4795c199a23cb7f41ab04c603bd49d516b18691533d5aa3fa7c056d24cb7b4e27753be4ee38d7ebc607d8f4ba14ce455cf0bdd7e1a58974a86976e93cb213a92838ea1367ab9076c18220901c8cbfb6174840a0a22638b71bd4bb7377001fe5c01e7670dbf68f7fb530203e9bed1959859b4ab9c1f8d21a3dd7f293f2ad02cd42063f7ad424dfbdc6241750e2b7faa48269ad663a52b5c65352b8f55f01b34b6737b0b8541c96605e795395a27aea8dff3d1bfca0bbee71f061c01e5f637dc3e1001dda6fdd5a2a317adf990b461fd2369e42fd30544b7c04a5674edd5b77b4d4d28fb0f7ffef3a0ed432989e4b2114e59ca49df5f6385bebf6891764b1fc9826524734050ff93e1ac94d5b0ab1c3715129932239f4b40611b544ff717ae190c75607705f3b07d557b17e81bfdc57d8962d21be7c195d7152c31c4deeb0beb9910fee98085f229437b55c95db23ed9dd1a9c68c24eb4f6e565fbc3e1692a18e1e024ec7085ebe6a03e7bbd032da4860d46ff4a73877fd0c0fba6c1aad5fdbe31f05163e2ba873a4f5d5f373d2fef0f8cd57b2583860f8380b7129386bfb24d73444e5020f51daaed9f83c05dd473233003ffd6e3072092b8857d597b89443b9317ded3eb2ff94232e0eceabbcaeb92f3bed67a090915ca7019a5db8f6a597a2f03a4d058c2e8b2718c26a2e6e8f889dd6d195f522f8e2ba30f09a29b8f6478d8ac89874f77450f489aeaf5640f787840b3021ff951beeabfd6587eabcf070830e1b753c78e16b4818af3e2b27f134e6a38d9d540a9df166cd18b0bbc439e6f43a1cdf280091ed74f7d6807b9a6f06fd4d2138e7f0573d14e3a15195809793e7a17a9869d6b9139ddc3f1a1a3bcae2df48c4accd6cf144a77d3e7119107160e098cf424403e253144e248b4e1cb6f73a69f57b3b13089fb4a30416830b73d89bb37f35c2d535cabcef49b4955e5cc1a951e60badd7a4208e266c544b68ed114b8cd912e95418616e1079ed54626375b56a2eb2ea6fc6eb97075c4a82b79bb09ba8f55fb5e3584d9a77f21b076d0456c471909a767cf01798b3f074e8b2ef9191d5883b718b1254a266c66b6ac527ae7d139fff41c90630e7c01fca7f0cf53b0c21c3ebf74969ebd9c072a23ed6e4c81798838d6e0877c25558c5da6d66a1013b916b823bcab82ed907f9148d720dd650f19f89a1b37adb613c37c1b7620ecb552c5fd6890e09a9ea3c12aea8e2dd56dadf50a341f442d1b5cde88c322126f06e1fd47c072e0686f9f3d52d40550234bc77b1e326fa5b1a867ef94046c102fd7db6e3834bfc39c12badebe932936f98b739c33143bf65a47662c114d7880653a8dc2ba6e02f6f6d50b511cb407ad7402f92f9c39ae57dfab82a2da3e60902cbf1bccedf1c5baf762bf06220d2829ecea0da901e4f72dc121bbe9daa408f14e810c4920aa066043da7001470529bca842127d578195587a3bc858ae14ebea6c38ef6932e754cec817a19435d115bf22f5282e50fedc87d56cf63476fdea7acb7dec04d32ed3b989dc76787b1fbeefb653659479b5a3e441225b64321bfb22d1c71110265c6b2474fc42233cb2f67f76495b1a334c29318ef03bcd0f3a921915f49d7850c0ca5eba21c883b3e512b6da8604d9899256d3531e027c8b91c1ada4a4ede0a33431aca62f442d14566d095103612b29bbcf9d814570d2f008c4715034addc74e0c06bac242fff1cd90d18866f9d3c7cb57e87fcb36c3de23b0e371c578cc442f3a1b1451bbcdb6c472f7d609f60d07ecca7a163ee192f94530996107e2d9006beb0657567805c33268702be38d05aef98dd29f0e901c424d5e284910e49345382e6855fe2bccab8329ca0a3738f7b8b30737a9300ba419e43d7ad5970ed9a0a9a24bda73a0652149843cea6e917c795cb47569300900b41c75ae84fe85165433041da1821ba571a84b67620ff9251abe6ca62d7c429704799484db2a9f43c7a9c21978291eb8250524568550742f2438f9f772de6eafb70d86357ffeb87f7f40d5454f2e286ba70ba2b21e9c6b659d6cad98f679dd5fa179e1c24f92b5322e3e8aa87fe2cef057febd8bcb2dd5a2c54419083e8668c1001a17ac0eff8496a563088a7192ba980e590a6b68f7a9d78d082736eefd6749e0bfeb870c997a2db0160e139ce3a23ede028808ede7e52e98cb5cd0338762351596be088b2e6b9960e10f1a7e7ee91fb3f0120db6d52cec670156e2469362c8486a6dfb68e9b316a7e69220f7ba2106a0673b166fed0a69b3d721eff3129a404f82b7663491e009f951d36e736f5ef79ffd008d02e81a94d97ed41a02df44c746533b5016da660f68922b5eb186e016c3daabb6d47d872f89a253c28d86279443f0eccf238ee29f5a83c7295a9dc9b259b629936b3464a061b6ef9420727b57c24981f632ca4e2fd5388ffbc2d2f6cfb3c43eb4d1fc2b28a20ac31ac47a4385671308965fcafb8396399faa418ec5883961349e340dcf427b53a042bf669c646601d2be315eff9f48553c46b598dba3c93e7582fbcab22073d148f98a7152e80d7602432916ad64f97dfa5fdc3cfd0b30adcc1de61a39f7d78dc24493405b731772bdf91ad58bb2012c918dc546865d1b94ca75145808ec5fb371d297e5f92ef4cf478a9b8671b50aefe4330b48e6bb8f5500ab610290be2b1016cc73a3373e2ff48c95510b361f9024f13251dc0384e13488373e7b8ce7de7fd483089a9f4fe085c0b4af5fb348a0fce88fc1e87a35108387004672352cdf2650d202c753fd8bb9a73ed0c6f9c04aa9b1f2267611e9d604f8b0f47cd443f8f249fd2066f28447c843eee268613900c3471232e5869b0656f3da73fd9f65a1a23caab29aaa696331f5848b7380994ba52e114842c75bff4d38b5d01d1c28e30f120d09a1431f0469384c0218a150ac9b1cced34cdda380dda2b5348a0dcc21d0d6a9f64c8a619bb93b5c8b2bded75e67932ac52c9cf53dae3f7531f6b4b4379ac0fd55c64dcbeb3255007da5b186b75578e47a89924e9098fd0104e25a26e0939c60629a5e83676044321071887fbb578261ef123ab00841c3d6005d1b0786072dbfd303571d168119fc5f99fc1bb22662f42b514c1d97e3589fe078fd118ac420b4c97c991168da29d1a263419a5a9cbaf84f440dbda029debf5bdebfe325287ee6a4ffb53f82686cac557ed1333ef862fe2752abd79ecb3c67361fd70ef997ac57d313851bd71e2e3f23488b3d5796349d31bc22a2120d4e1ffaae8bd72999e1b0c70a013feb36c50f7063dcac2a98c72a4fcbda0cecfecc7e92189c94e8d1a66a63fad3046635d97910bcdfec9169eaae26e231bcf2506e4e2ee1916512efd272c4df5020564168eb1537a60eb757fc9cacb49a01e248524781dc7ec8ebac1eeb0cb6e4e197afd3d046a80bb2d1045b2f69fe8a9c0943c9a4436903c5d73b53e18527f3fc253a887d08f3c7eaca4e70f2d7682a27b8c055f841b6477a1c564b7fdca6549d5ebe13581d1ed8fe3b6a01078f67dd13aca7b0eab5685c17bf53e7ecb189be00ac7129448e893754c4d0ef410dc3d0ca46820bc0f5d7c86bc7046b9b15582476d3546067a31f58afc364c5f46db80c1dcb68ac57854c99c092ac14217369c2e5a6ce18031168e9ac0b5a35c396f96a6c63e2dd92a0b04f0e0c5821ca5be95c74307bb4867e34c26f6d0500eb4d6f6d4ca44b2b050f9433475cf80f61d8bc6feccfa9d3f2a052fd52feb8bc16a92fa50b62058d4211d41a8562382937efb208b57c88ab9d022952def738496a9a770b0c22f3fc9ed82f3ca48fd0539de87f1678c6ecbc9fd10c56f1d6c18421391ac51552b0fc722a66945704184fdfa27044effbc28ab2985be3d9962365ab06a020706380f2290ef07bf1b1088b8d0a669e81db8f64c04ad896e2e69bfe25a795e28015557475cd3c44b3870107d67d96ac29c4599557c9c1c7f931b299725a4b6daf3eaf6d5230872c32a4e0d8f475b3226902ba1d20f222a04e8f2ab3d388ab7ef5598dea71881ada3b5da526cc1db79800a2793c4f39ae93cc9fecdbfab0d86e5e73f2a19fc0416ab8f21d4341662cfe81dfbec943a864bb3771cc4685fe7e30fab3ef85991f010af70e8b4f14e975dc61d09fe029b3d4b4f0f15325ca48b18a842c592a24bcf8bc73c633b8e7832eba39818b2411a24ac39a520e975a6e78d9320139997da779d1d5a673ae38988a1d50b08278444949bcb702f0477649a75df6201b24588125bbc78e26255a736ed4290cfbd38654f04335a531d55b1653aae77d4d532408cba936353d7701c867dd96ade34628d091d149804c78410cf7f8f756368c460390a78f2df0859bc893a2b02b31ee61abfcd047d49090c684c960f0a345918aa704aa20a37425e68d1a207dbee46494a2ba034c9c704dbde30d1cad1ba471b2c394f5a8e9c9a68c25190a39b24b6e8a43b61168c81362c8d11173c6bdc743c85bc55a34c2306a385f706ea77209426cd5c644465ae76c9941165c1a89dd4034f6790dd213e73e690c7d95b65a3b89398d7d5a69260b21d0460496f203d520689df88eef3cf94d163c57a2c44f81c49d41b67d062c2a1049e859e2cb6f1476cfbb4f36d88d57dceacfb8f09d0210c624ed5f9087de3234b2828159e6ddc47e610c291cdc9aa4b42c53a4b69df8be46384239bc937770ef52c4b05421b1c939db25d0d21424ad61c3d6dc42e2f7cc05bb1e844518c50073a15be1943feebc9f7cf1f8b9a6bbf8c4321b9f55d21bcb0193e78d7e502bfe5d46b4f898778b7ad7708403568eb62355530fa00500e065329a0b01ebf25769b5ff99d6a0c57b00716156c0d62ce13c4b861e5fd52f20020d975bfd0f8e74020c0d720743a3da17185db3f3d98cac08bf83e7cf1f4d35e8ab698aff4c8724731bc063eb096a2ead42f3b62eff3ce454a5df01b55deb952f0bb9af48f7d08c363a1774d866b998c0c01f3a348ff7078a919308f041b1d007fdd5574c6d4e30209b319ebbb37c651f27c9612fa88af380765c682877e81bd215a263a96f235e93a288c687360fb5ac7aa1aabe043af16a838795f4dd1c974c01568cfcd91b33d309e99249d32b87166a047dd77272e9011362afbfd41013bf601870b81fad091d92954b96032f69d6b58c65cc4a1562298994385e1c2f31e4c829bab4ba175405302e7d0c6fff613fd55a5d889437d618bb084771e57a0c4c1b8f4e45676aee629dcef90c933955c0c78faad310435a5f992645f16b90cc48ea1b5c3a924ac18a01ecc1d2d3bb4fcf24fe3080c960787806b29b9341ebf3cb89c6599d61c884f4a6206bbb148a884c103a99320fa2f93b9cd2c20e0477c15af2627c0b8735bd08b0aa6e31fd7f0cd57f196b50711c75c0a170b2b0b5271241558beabf9d92ed05169151ea543215c8e468826601b32e6c7ad7daa34014506a2c078ae43ca1706ff943857a87855cb542d165d3c13978d0a5eb3ee42346682aaae7b757dd2869de980d3f717350a0be3e2490babbbfad53e367a05af7b49fe6d6dcbfaae0e9d28bb1645d8a1eb1708c82c5157bc5f3aecd0f197d2ddef052f1063ce5bad643b5ced4460b9bbeeb71a8a87853a79e1867e201f222931a27efa5310040532dbad5a2769767740653b1a90908a02ab2f08d2cc5d81fc00cf19213d6141f725f26c26967f720da91f79d14149a65c0ef579fd7e531c1e8d7278285ea5d5f4ef670370455bc7df681499eb7f9f0e1c96348c69d8c58b2dead1eec2bbe6692ab7ebf9afb291824842b84c7112d95b532e96f67c192cd300415121f45c75e4fb7685fca604dc85d551bdb440856472cabda1371d775f61b1d760cbbb42a372e4daac6f212e2c0b9eeacdac3dd1d0b0ea3b5b10868cf2d543a6bc30fb7614e12cb2e0f51983aee600e8d2aa0a032df875782beac5fb134c4369ce807aa68e6e640f8e0c3e1f93d5fce5b169829317bd632763fae7e475db9b700e717070bdd62d79a9dd3a1d80397b0fd24f54aada4294be6e5b6db86f1d44b04e2d55cdde67dfc29d3b198bd70327f0b7f8d0bd28b3f4df3a00da5d7aa3505dd02dccabb7c997b2b2131d8a5317a47dd1591cf2d368e09df6ac464b7014f68b682d4edcbce5b8e740c4a59536dfdbb725c9e9ab8af4675539d7c3fd311924b1674fb322d91bb1677f0118f864bd287ef036f558e09bf75832737d010f14b401fc2ae11a6de169215444e9816b82ad6c1f58201ae9d798c5189e6fb3000e5fceb8b5021b9ed0645b331511f362dd38baa56bdf969e94fe75d285ad5df18199d0606b14c9c220cfee709cb43c8cb91ffba95f3efa62d9e482b9cdac0f21367b581384e44429b7b2a0682dc36aa9ca94600a4007de806d9eb8f179b446f385ebf5b9b32b908ae1292ea1d82fb002205c5ad24c1334e653f5fc9e80d53a2a27f628f057584e2b258b2fb2f0c1b2088fc21655c1072def9ec26543e8dc1637c3ac2dbc4cb505592caf29663c363badf9eb2188006c1addf73ef11b869128f4901f76a5653af0b290a5d0b12226a80909521592d4964a2f97356ca38b03b9ebe6489a7c4afb02aeac3dbfced78d092d614a2fce6f3d6f2dbec2ac7a75b724a46ec52c0ba5a6accdaebbbad7296be2e03c49a49662ba3252d614ba94a90bb87772a3c3ab007ff9c672b2932ba79ab0df0bd21f6633d89caa3640fc34d1c56f3c97151a1cc1964e79620eb701be4fc40578a72fba9a3f2e3cfd67b467fd7156a5d7f1a4b97222d50ac4a48e33ff0be2dc21a65a2a718a96bf5e4455d46ad7372e076f8ef5c0ade181afa668dc552b544511e159cfac8d66a5aa5963e6769b350ef53aa699b5cb17006b981fb98e43bd1cca49ce59f80cfae0dd176b15e32e80a59ada84bccf6ebe94f0270cab7cdf3a117d5c4bbf9aed14e499cc2941be1e4c204d62367448f1b59bbb48e158defc41dca02b4ab1845d287eb5b31502d5f6410a7e355ceae091b5d04b5644d68a1a346c31b11c0b555d44a29444fc9bd008e470816709a901c7fa5bd50af3895f2d2f43310daf888ab65321e1ea82d83783c874dd231630298f6caa4948608bedec0fe46f36512aa8595eaa72e06ea3af66963ffeaad3519d1a40fcf3d57c9bacf77b231592cb8d1850b8dd886310a3321f6adb49e43140c52a4d91da457831af06c3bd9d34d964f872dae270fa88df8bea836c2a4b404343e7388bbaf23f583883e1ccc44fbc63287763de88c2f649c657108e53f9f465b2214f441aec1e8e5175515af6659d3250e40d30c53abd81c6dfcf07e7999e020c48f076b4dcceaf518d8a951a02cb9db4448729c13a8790943bbbca80afa359e9423a772be36543732e5e232123fff78b62e95823304a4fd2b81979b6aed143dec22efe1d72d1a0292aa814ce1676b533bc6c89f9efc03dd5ce4eee1e477703b0723302df43fa6ee4fe09b655973cde203fb05de5324709ee98a3eb5172dad324e6fa3e8e5d1ef3e21d0354b80a375eeecd362a5d4c8eaba314df6fdc2e15e271e11f4dc6e1e8524b3b1782d683b801e455734e757a88c4b4681395dca477779cb00e660c2f33934181f5ef1e34ec70d1baddf0db249d5af68f61b4cc505592d70ee60e5be87f73469537ef7c48a222f89c2792937467df5af1ec2b979f2e05a723fe57fff86b723377e4b0f72990e4a2b879de61173d268a9bf120d2c42573fda0ced86940e622b4dd6ae95f23b435f1bbcf9479ec4ddcec7dfdd0f0fba39da6a5d86e56764c26f82f3b29598b89df5f3b65d81e5a1237b8c659cd850edaa1a0a942bc9b71fb0da7718b9b12119fdb8a080a1ccccbd0faf6e889724447abe8020e6b7b930a20051e207e2ad0832c3ab10e02029684504bb03a767006429cd611c9e8089acb4e1cc2375fa7eb1adf00ad2258350acb69cfe64d1d67605acd3e1105719146c7c44df3ad8e1274af01df2c385d0b6a10ffac6e5ab50653b7b9c94a981a1da06edb0429b3af5e540276ebf600ea368febfd8b6c5d01e5bd71eb004ab7dd7e337c94bc34f80e4c7038906ecb003585b7767d3214692e745b5816174947bdced98bd33670af28ef0b106457cc5df64ce95dd4ede9211b10fab70b2cf52a07ff6502a66a8ad721236505bf5eb89e0e895e6410c4a52a93dd76b3e4af346a325a7b4cb1d90568e3be8353c08d9f03edd5a5099f7a991943aa1c566f37a00fc1413f343b4210a9af2120f90fb71fcbe7d003fa37bfaeab1b999479d233028bde1c5b506c3d17a3e06d11db08aaf411db76254b6afb8638899efe85b66f80b7483fbaccdcd340abf4c5df23712c59fbf9b93140cb9e4d891061f90afc1b8f47e60d6f5cf0051e581f85b79c10ddfdd1b8620d134cb30adfb3e12219ed7f45f917f0ccdd6cbfa066f5e26201ecb503b41b611abc5ecdc91ceeaba1142557ba032516f3b53dd87ba0a38e1b2731c6ba0c3ceeb6bebb720e1963d46e9f6e87c6c4ea0d21b4c0e428b4d8a94569b175b3ef7134fb68150caf6d75ea91c98e161e801484a2061637901045aef041fc89c90e0ac4c6b1d288e06ab17ed2fe64ee2f19cef5820f6b8f8e0e8e9b9399f7449823a925c59d2fd66052e59aeb4133a0fc052dbd3a18b256200f9c63edbc87ad32a387e6cbd4e3e288aa1f972007c8acd78c5c500a7b05755e73c53c787eb566e4f62c95af169485a79ae112980cf82a47a2abec53517524693121c18e2438bc206f8c21ce9da321ebc17025b5ce7e5526dc43b8ca7ca482826eb0f739bd2de0ebdd968258052fd48d5f7ecbd2562626fd62a49879c1546d4a6b7eb0b07c557684f9a4e9f4fe084f9a05dc260182fd43162f242cde9a9f1524a572fc87c402df4c1a458c0fd08c90233bd8fa2b3754354633aaa203ce141435a0b4726d52d48dc40e0a36880b941eb994ae4912c695dd646d323ac79a07fbd7255c91c385acdacdf59f36ebba74165d266805f541ca6f92728e441eeb92de8348271fec637b52d4c42d728edc30a73770df62d38525d5aa7e9ddd5712ab04ce38e597b157be5b5fd6f7de26dcdc2f3d6569eb6fafb4325f1ca627f241b57a2cd9e8b1572877b49d4fcca1cf8542e0819509b0e9635426f57bbc10c92263d0ed1b404ec9e3e14e92575608d08d15f5b4efdc6be0987c4994292ef8a16eed2b53177a7f9ea7903289821842a41ce3daeed0e3ee60932a5a3ca3ccf2f4247dc404c983d7940e39baac20f674573bcff7db86df68740cbe38e5741449b0c6560b6e879121382fc1996821007ad24e026dfb08739202b663a79d59b3670e5dd2c98c1bf4aacd769af815de709f36bf273d7e046a33ca1ddf117421c627dbf4f89f41791353604eb2aa3035c6e45c5c0dc1425e123b7e731014adaa51895ce1a756bfa9b11fb618f9332aa9fd7a836b29de2600a3bd08a7a2e2389d2f656a7a0b7a758fbfc539cd3cec669099a71bd74fb662fa5a1aecdab3c7e769248b1b6d2af16ecf97fdced685265e343a33cd51f3db98d9752f025b1136dc172fce7e55f4ff800144c8c06fba4806ea6b048c50cab27793656029ea8353a441ade8cc4dc09f4ccc513071918b568b3f84526ff27a6c48b10a71b6e5e63e1ec42fc8ae60925689412eb8a3d137a9cb94c62043d9b9762d7dc206d749edd51a38af955c4374d0b317661e64981eaf3d52b731225460bbdf902555e92cca7ced579144a803a712a9dba19283dc2b7658db86754a582967ec32d43ec40e09f9397e26000a1313c37bc98a5f0b8eb3d6e6f5496e192d1b305228e301e999360e88aae9869d8a8dbe2dc8b2a8402cac2e047674214179f833e8fa83b8f0ba75acba89eaff873712445cf08e901f8ff520ee9ceaf9539bdd2ae87afe8ca5d9571530f11e633f37e5d5b41e7dce9920e5d048b9775686aaa391e1f6c35e3f5fd7278a4827d3e14df7b3070cc82f1006676382681e08859417a29a5d6108193715369343e948d88b043aafdbd72731b604d42bd86c27270bdea10c14374ad5373bc811d1ff16c93e54b29a7b25ad1ac0f193e403d57496cd1f68487d0ed0834da3595019929300257036df61bc9dd5483cc828d35c6140a68107f5ae1392e40d6f7d2a36050806c0af0708fd8f66069426a5723309dce6d47a851f075a6d8694390c4735427e20e2081e8ebbccdfa102581ce1df475d3cb57272e39dfa08965a362d0c1d3228c3ea352105037c7e34f5321a709685bd7d10a8e6397d276010a7c51b70e63e7df7f3493d9aeb131aa600e81642885dba397de78c80911da70b5abe2b4afc0c48fbca1870ded7c3d620ec898d1f5c025d84d348f9eca18c8ce197fd6b3ab9a4c059c498a3a8acbbdd264918cb2970c64838bdc58bee6e5a9801469ff30fa893a2a303e445483340134ee189484932c1da5f8934c157c0c5a2a59e322bb6f5fbbd9bca6e9a384b23d0ddc126f1eeec8df8936f99422936cf9b73a966dc05b666252c6e2bf04416b5a19179290517832b0ac8c70168b1ea40e7d50fe1a8a20061fb3545155dc691932fd81e85f25312c48851bfd8b23058d4c9d4e30e6b4f9e5118686728ae9125eb28c101d961e1913a027618e5045f80d2eaba03e775aa8b3bb4102e896c7784c25eab37adf3d9622097e211ec88db40b96d42d6c743e582b68192460a635d6abb9f095e8c0006abec36b8edf3c0d7ee49600874667ad6d642f50854625060d085a0e26b9e068c425176a1f32dd077c486165c14c56248abf138258830b9d0175031640526d1cdc6902cbab6d50953fed82a2d543cf4a888062c5a2801d94a979ca845228526227207b78184f524224d7964e9179ad282f071f1f6a7ddc8fc4f000ca464fd29b9ce99eba89d5aec3c930bf1308f34ce3391fa10982185dc7e8103a2d4d128d19cb4759e29cd2ce9e544d29e1746f1716496cf87e199437b7d2a8cc1d7784a1d4f1ec37cc7c63d01f0428e3535440cbd173b9f03d9299f2fca300140a85bcdb342e588275c11fe630824deed04e4a46307f5d5e62923d1568ae6480a429581b0a691408c304c8b44096c3a58ea5213ee5760dbe9a6f7b0916828d8481bde41696b7f89da450520c25c53f097907d6065a02c34320be561bf1a949b59f0b07065e5a2a2f042e092a69024f6364b95b41719b7de85866eb35d48269b35a8195b746a01453e24913d9b5d225739c364c30b162c0ab9978faa37034100c7b0a7d6e60f1de9d7dd3ecd2d27ba79b30eff998e4216c99f8d5751a63733267928c5fce19b336dc49ea5a0effcf0d87c6e658da47b01e921081754d366ad362f13c9297ac25ee0c3a16c3e61ca0eea7217f1361d36db995af9737897b0a85e267c7a608aad1ddec63e05991548de507583014641e6ab55f4f4afbd6e7de25f89f9febc0b352394142dfeb9dddc8d47a5937631c2b484e7727b5c039333bf25958541c2f082876275e06abc51c5a7ae5f59d98fa909607675bd28ea7491c251bf87834e417fabb46a3f32a31d1c3ae3739bf17c6cf3e73d9665840a938cab9edc006251c229355b3e1c82160b9e52aad61e1b31f4e116b874ad2e331d9f173a6a67e7acfd2e8be6d2c2c7d0dc2fffab5e9b4f8561ac9d6c89fba053d60aeb7f6b8ce2563f168d5bdd641d1d84176dacecd6d54d090fea42d71bb5390cdcf02a87e92cb011b76be4ec181a30f38642e3d23d5b6ad35b8bb7d17f839f2144fa996a634fe0587fda2954e18ebfa7c20d218dafc9ea6623bd619619e1c022ea52a828a37f92e796d4120ffde2a878060b33c52fbf98e5d079d6bf38c5d8a80619ff5ead7f078ac020069282dfd62a662236c8bf973a6345bba35e250a3de0de87fa8a9ff6f96cdf2587d216b4a29497ad6e76956f5af31f570094d5771536ec9a7cba4cad421cd966c267432129d40521bf83aa6f2d3cac990aea57d0775d03574feeea0ffd3ee9836157d92232ed46c8930ae03b6180e2bcb96ebbf689508a65509ea3ee5136d6667e0816cb23ffc971c6b262063d1748dadff9a5ce96ace3b626da3e2fadc7c30ee0df85951d12e30a5eef3a729670e73a00ee68b2dc82391ad6f2fbfd59e3c6e7c5eee3d4a046af25f2f67fa92a81f10f7f28574e3560d1ad9edc3f5e23291a1f491c58c16dbaef774add10f1cdc28e61d8f72b0715c1788ba3bf7e695f0cc9fee616c08081e8af21e21c76ec6870f944515ad7e707ec1023d3779a53ba2f9ace0a484407f926d6c80a01206f62f587435b582734db24c91019297b5662be90a77a515616b45083bfb75f2ac1e1c4afb5be83a8223b0cc6413aec82c4c24fd76f5296a0f1c52f1d0d9528eb2a2bb5921667e7f0d26051eb1fc688550474b4a577ebec2199e3ca5ff3aaa2c59212b1fe40861ee309fb40033af121cc0a0054ab7ab384e58666ea129ef9c5b826cfc7e63a3343145451572bd2eb01f9b220c84e32b87f67e5b39bdcebb9b32dbff27bfeb65b45da7c78fc545f8d16a2c135a23899302139921e0fbb32af575b40b16c17814e41e0e2f9765b84ebeb43f00c6a024aa6155a5d308e59261d322309f34615b4f9c419157f796e2f7f81798299443e3043f04f35bcd1830e0711082850c6df58e84f009cd0f5198dfd7050411064fc7e88dd92dc05d7df5474313a37c90aab3db553451ff4a391b8f7965bca94b69472072106be050f0509d8618041dd6d2f6ac86da7ab02412c650693eec594ef061764540ac818255cb0601c11daa10256a8d6d0185383852e424c9c09e9eea1db40b141b939e9567200c3d592ec76395620f13a8648fd6072e34c931b48bc0efbdd0afeffffc73590ee1fd8f83e6c293d62b3237cffcf187431672b352b4ab87bafdfff1972c8d5802f65b85490c23ad24545c2cba8e02c94061842bb22355504a40cf82167aa29107c77fffb495c9cbe06f6281aea73335495c7bbd23261660b8b3ad80086694c94275859764a43390c79b9f1e5e9e6847406bc3275a5ea4ad695dc15dd95dd15b0ffcfd98af6495dddc6193767af328d2b9b631a7eaa20187eae8209efe780cbdc64e08c0c2f589414e9d8818407a1b2c2181c5833ac92d8c0a0cb879be4e5737c9045e9a2763a2f403263f056af5634b73222fff1952f8481ef0fbdff8b391765551e2fa7db9528022b714348c7dddd75dc5de64404284010241c2ed214d1c2858c6c04342653aa00a101e48a7a5733826c1dc162a68b130e4176e8f961e528cc764215253825de10d8cd87262c53c29630c101e7056e3133c48b56141a39a8c17112a60a87992b4d37c6e8d03ad265055f469eb4a0d2ca32acb4ed45dd2aedffc37bef1025f6cab0843affaff359630cfff745877213431226413067793cecfed9ecb115860a109b9a265d3e82384db9dd7c3c9d30c3e0b56f315252e5f1906c18e946ced6e0358eafedf2ff6fc4fdffff9ffcff2ccbaaa29316f167c0000cc9638518762da400460372c3069cb2d470d2edc89cb991a2240527a5e9ce64ce844b0ef2f3480f2371f8fff7f10d4f207853021862ca20595112d60209d742650b10ae274780a421e13a19a38c1b373288b189316afc81601852e5f16a4ab844184ea709f35db0d80663398360db93ea010676f17ff767f85095b3ee667346029680193fe30b4074f359004b92ac1a58967c0111f3821a1c5568c0b01506cc0ab8501b2101caa4407b4afad123aac6b54346022d0a0c2f341c3fd678f8f46a8c0e1a6874523684d95aa3e445e80611a325173d987c77af296468a92051a901c1ee0e04fb75f7fc39d76a35a51aaed6545b528baa51d5aefebafbe3bb75d76c808444d565d5055583d5892c203ad008d1d5b6e076300cec3946aaee978750087f36fe68230cf1952946b0a080030ccc86251f09a8e1691786480c5331945163c1901d5082438b054c7cdc908a9a61c8d714a91835303c699a6c3b8c7c21223a62238c8d861a929c992f0e03cd32206b06ad49951e39f8c8f908d34186173190669c6025c314bb254c6b488b480b49ab26a3871736e430c5e9ab8a1710d0d8f2c103102267a606b0801a38647a4f378ed4d36d4f6a06a2fdaf7bf143ef72ab3e292842c0a9303638553e786898aa0859fa4224a44207a47aa872e6cc8f2515badc90f521ffdb6a48834b32b5f4a587ca10b0335652c2d4e092a4e365f9823bb2c213a4266ab46260e05f5e402ab221c3960a6a72dcdd3dd47ae1a33861785f49c6a07bce58545857585a77f6ce8549cebbbb560ee3d723cce3fee5610cf17d7f1da17bef0ec484ea8c8ba92d3778299125053444b26cc470c128ccf9892db6e5b954c5c2f0bf06fe2fca57ce88fab1430d4d0c235a6e5c19545a17181862d68c31b383c1ebef39ebb8551e4f0713d6f144ea809ae998d23b2ee0c8f8d22c28803f727ad8687842f585898a8b254e2d80f2f2e20229ece63c65abf2785e5f25a6840d1195a001c93bc0d7ddb1f7f8ffa71e0872ed28be38c4d84231428a5e8cce3d0c04418c75d0aa3cde96d757091dc286884aec807489984089c80e4c70317238d02c153065f9c022a389ca9a1674c092e88628bc4ee4861cb2eba5cb1f972b2e5a5cb6b87871f9c20087165d901c8e356ab06c3c506e2c61018d0e32eca0e2f960ada0c88d314b5560351c0121022a3ec808c142f4040b16282a843f478ea70ea0546083b241668c159226b02bebc2d34d0a212f2dd486a2bec6c0b013052c92e4a901379833287542d4c5ffa328c7bd92e6c8275544743170a3cc2dcb11965516189064a99183099114064cc877cf81c0ce89cc131b98bc0023f12a9881e4056d05435f6ed848bc95fd5f17999cae243a6f35468d178d1c023336d0848472418446a0430d627266b2a8d838b2b2f556bcfec17bddddfde28bab28880f4b1696dc17b4b02a048ea00b3f712c5f8b3e96c7b5ebd797ee9ae856dd798d53525de5791d8e217850795e7f4df2afbd70859829534d62539724f17202c0c16b8b3beb22547b677b528a286d2c7a9446f367234a94f567b29e2bc4f3db99b4f5abf8bed5ae3df7d2da2d30806d9fed4981614a0a0cb42dc548d376c0f6a41409db528a68ed7053ac690dfd6123703c413548691ed168c2bfd1c42d33287734306fca59e5d16052ec4300cdb3ee0b82200882a0be17ac64adfa896c4c839a96d53cbfdd6253fd65ad200856f3fc8f55aae45469bb6b0f74892ae2a6c4a6fa05f2c4e46f5a9e256caabf5a7e1bd710557f314dffbf3aa8ddbbae6f7d30669e7583daabe8fab2a8a3a9826a505fd757839a6ab052aa9dd2c613942ccf9dfd999e17d36148290545f35c218261386a1b1d2bc3b07c1d668f6a8fa56f1cd5c2faf6a0ba3bd57e1ed7b1d283bad3c2cbda63f93b975e954755c2c6257c57db94df16cbb3839383edafc32b86a5ebbfd70c55607d31d6deffe3fb8d35e7c9eb02533246f1a6a6c07777771c6fa293e5f645f928596bce27447d70029593e22542b2a29413b02461614714ac2bb817ba6a0d2b279d170b4b8c6c51a221ba2019a32448101ecc541a5f2faafc98914256142c9e092db6da05930503060b4c6e4e5c541a1608cf4ad59816b0a89aac7af89cbfa6beaabeb2be725fbaafdd17987720de1745f781bf0c8237c2b0d1103622c24648da0cf8e121bb9c2d4ee16ae7556dc9ba5bbcc8a2e484e147842b089249c2646c641679f07b92fb8fc912af986348a630ce9e06b06e5e464460a2b4aa941e308cb102254b0614212b70d2418d22ab2b607070c2c970e149d251d5932b5d40722b7cba1470691203869432355e90f01aa38a5b19394055f5052703971c65c80ae503480bdbb9df7b6f8893f04fe960773146935579bc9c6e67020d989089309a779024aae0197509fb40d65aa16a504a98bcd74225598952066ac80d12eec40909578d3560c43421e175084aeb7ac15ee4478dd515345f5e3466b0a0c2c0bd30a307150a4e543144dd108940d908b98bff5fceb85be5f1989e705033dc94c655edf8e48c6f7db11d33dd30d2b2beab3b8435844584858455c352c2c2bdcfffcbb0da39ae430fdaf0a0a8a0aebc125fa60840932a538e1413afed9eb49d0c6d97723203b4a12e288de8896cd5850e89ca0c2849496c3092e420f14484e0a8dcd0a2215742b74bf2d6c753e5f1a04cf898fa1998afbbe725329d8b1960e7c2141c6c88496a41155a9a410042a06489e129cd0a495330f89ac18bedca172341d6ac5921484e061fb41976e4a0d243cf87eff24107bcb137e7875103ff7f9ff399aa3f93f567726774336d71d7e29b26ead3d060bba81a2235486a6a6a94d4e05cf8de45adf2784ab80f5c34d5a1b75337e47b4936293674b6aaaaa90d18b3248ad41219ac76a8f1514426c9982eaa231937323bd0182768b978a2e6c71119693e301406a456038896156cd553a5719d8688491358557f349359dd3e24985e008239cbe3e18c69ce36cbe3fdffff93ff2fbe051d04c71ceea4e3207105c19c0ee77618fb0bd9150f3cd18244470f5f392f61485aa0c1a4f3120308ad2a51295d3949cafeffffff65e4ff7b0ec34ff64664ff81042914c0e068b2848608cd12189eb18712212f284b32bebec9cb44d39793efa423ea041a938d8623126fc30e27b7262c980175c6a90bc729ecefbdffffb90b0e41104781297d57c644033003182b56a07e50d9d1030b7a7ae820b2440a4dc80e6ae89582236ca43be4d238f13128581f104c8384d3d4701aa5d9970f78d8a0e8bc0c81052821274a345cc00093828b91814d1398149ad21a1c74881f64e0e73c0582a36efceedd22b485b6c508c458acff7f7540359e7b7871084ff8e05145b30a622606123fd50218424dae6831a36b4115310b8982252d575a5396e8b0f515b9c588f10258558ec49bb191a302008e9c6e90be0f52f0063861273752564ce13bf12f28e7e14be38469d72d6f71775772a324bc5507480dab0af33dfdc2214d0e19239b36097c07417b648fa2ec110fa19741cc068c72117fdea535c4a5763c41adb54716a9daa86a35b523a50de1324539c21d4dbc89a2eeb8c6f8f1e3c72f62fc415b2a9a2ab0a621b54774848eb63fd3e7051fc231cca1b6fa67268bba65a6a8cf0b6421d654a73ce98be5f94136246ad7a158fedeb164ad1f6a5b62d35a23abf1536d620ab535a223ac0e2deeb768adbddae2306e3fb5792230bd51a63f0158c5e6058a90208870811318eb10636c646dfbb462b5fa6a6b64936c15c710428b74444788da92fac4d1a145da56637de2604c92daf342d38aa3c9a2eef78d1f5b6b447b5ed7d3dbda6e774693342dd2fe76f8d6daa3300cc317f5875ae72351c7cc1cd3b12c8e5934ed11ed895d6de35060b627a65b8b3c9b9164050b4018d813d3adc5e7c2a0b2aaa6ec51ac7c6d5362bd6345a0084005ab5f75e735463113b3b66b7b648f7ea4c0d5a21996d41e8116c91e51231925000dee79d813e18120b8e5d5cb41ed58eb0b6aadb92a17d717659374fbdb6116710d71e9c6b359f5aa5cae714e776dd26b1c4d6a1bfde5055288a30937fffdfdfd3dfc770d562f8ac1ca25d3278b13db5019754a29a5bb6a5aa200cbdf5f9e257cb19b9cf7aadb58d7f271dd7a22dad07e6c85b6d7dfa0500d81b5762b34b49dd45e4d416e7f2d4d5b4b11600001c72975aaeb16fdbaa9b9ba4547bc06bd3cab97675385df8c2160f33cab2e8760087a1ee8607ef72fbded9a3e352b57dd1a4fe432c73c318e79e21b93344f3266da9821a8474ae9d5e0088eda831a8ede7628db13d3ad8575a8d2b7ed89e9d6e22c61dfcf4165554db916cb9f7ddf761d802b82eb6fe6aec1cac5a5c31bd1ab21bcd6ca659e2c3c5401ead78ec17bb9aaee7ee5a23d7e43412061aa506857ed513e652ae08af425bec4a16a085a734049e0d307b201d540d0dda1b6c0bbb5b5ab762887023514ae1a8807108f9a03e2110a8501a202aae9dc7d35906d36dbaa21325873403c806a0f4465436c795c636cad0e924e924e2da4e3892f75bcaa718d85f6e6abeef855e5718d31e9f73e50cdb39452a8bae4690335e1df16ffbe18eb5a2b5013c5fa04027adaaf417cedd720763544b69802f1d0311a42924de493934c35442549265a9e643501630d9474c338079444473c908d62aac710b205aa8dba02d576d5f835ae1863f3ac98c43a67695ae9636b02f1004aa23d4f4f124cc768bb8e95a74ed2f69ac350db75ceb222dc66795ce7ac9c95b368a8e97802ef9cc1dc664590466e739b8736faac5b42bb9ae1a847138807ed09c71084b2b5b03b93680bc417889dadc513d3ed1170cb994626115409595553e199c1b66bd2c88a20992c8f6bd28834228db66b201e5e03b1db4adae70559fbf5495e5d70c504c403884712c9644432d148a6ed403cbc56b7f6b9c26b5edbe1b9c26b5b3507c42304aa01f1d0b16daf002a18e9016ce0d9cc7a20b4045c5f7d6fc636eb6f3c817568aab8e2768dbd6a9d4b055c79f6b935494d42996a122c1fc525fbab5ea048c70a4543113827acaebfa486c0da6bd7d08ad0225ca044119a3e75c7354ec941e5710d42dd715dbdd0defa369ac66ad5f56bacd66ada3a019b1ac325a9435aba766bafd5b72ef9b052269bab5a59b55e6d6b7a606f48afec8ad722bc66e155edbeaa089c13802084f4dfb63c4bd8567b379a965f4886afef93a53a364ac0eefa54e3d7984555111b43a821b2a6675db2a97e6cb1fe28b6d46aabbf9afa353e7d3c2aef6a3b7dcf5f1c3535c391d2d1668ce9510578d22de67185188ea0eff716f6c11c0ddbd1af2bc26bb0c5ef6afaab226696e72bcad5bd7c67a4fe92032058319a11a83b23d49d4f8bb9888eb8d1150787cc74e7a7d5c6c762ecd54814899a9870bbea4a13752512eb2d63ac6f455e6fb8ed26882aa06d730425e4a73ffcc5b468ab0995a8d66efe68950889bee846b5283cb17956a35d3569aaa03a7fa7b85f7f55c4674db567b3165522b2a45facb4294f4fb73fdacc8af0402f472dfa904594e6d98a59366b11787dfb54511168d6a26b44820977ca759e2a2a7a6a4491a8526dbbce534545601981cfc757ccc0c40858111ca83cee79aaa888f6b8068bcc15b315b34b2b0a8d8a76029881ed1705f3da557b567b34cb98721512e98eeef20a9aa33bd9926c29c7265b4a41a625c35d199349956e5504ce89fa3936d9920c27d3baf4de5ade2c5e3c81aa2db537fab451aee4b7cae361a86bbd555f19ae86b6e21c9bec5655a9a664372c8bdad58639595495454ded0fcd9c5cce96d79bd74806f2c3e2477eb8ca6e4fd7e6d86a08aa432dbb8532a65ab195e146196e531d9a55db5aabb631cf1ca55ae9addeb8d2bd39b66f8b661b255bcad9465333d72a6e2a5ba23df96ad10be7b672b2a50c9a19ca0b344f9cdbcab578d10696a1765eb2a5ec4a51dbb56c89ea13e7f6eb9b93a3b4cf2bb45f9faeb45de3943959395775e7b56c49b6245ba2b96d696e677daea0b9150fae10c350637183394a3936d95228c3c996ae0d003cd4acceeeac97ed3a77b68f8f4fd756e8e363bb6c97edf2284c5f8deef7f1f1112102d575797d355bab0f8ef6ec8df62c2e5990600209ea8eeb5cedce767dce539a437d28bda123cd31553ca566a5d4c76ab18b046b77b43e676e75d6cb8a566744f4d1ac6e48b437e337544374fd37b45f9f1f6dbfb6b6d7f6a6c5fad41bca011090c0891c810320c855577555577560fbac576777f5666aebd555344febb5ab35cf15a235451c62ec3ed7561d09763ee649de982739d33ba48fd7e77fb16e89a68a1ceaef8a79edb36e99b1f0c6b2efb7618bcb365b8bdb13d3ed9f7238a8129ab2aaa63e6a44029a147abb6bbbac6de711ac088b54796c97edcab5fda179928fb3edcad9ab8b29463388e1ab39a5629851a4f830c53bd7df17447b5c07d111a0364b6f83f37341412882426a71b476832245d03702093e8a226885add5b18e1fd81d9a1a781bbc0e6f89f1c5175f8c31f6822ec6175fac6d79b2b0f7c32852785ed6da144695c8d2ac4e6187868682e808acefd0be5777e07e7a47832fe822211fb4b69a7052125278603885b7b39e57101d51b1797a5e9b6aabad796a4b1f105e4dc5f13383680fd52968cfd5763cf169ac3dafa02bea33d4f9e62c9a2a826c34ce096a1c50537dc6721ba7b2b09bb46161290d0aa2236cf4b5a5e76d10faec58e97185d9a706fbdcd9413b1a74c07bc0a7afc7b56fd9016f83abc752031c14d4c18e959e182e0e7c82827676acf4c26c9bd3dbca20282887e64959d820cf2b88f6dc0f31fc6a2c7ee0bd57bf0fb59ff5f287f67cfae7bb5a05a6fae787f654fd437baae9615ad1785b5ff6f90143e013558bd4fba123bcd7de966839d8df8f262829fbf4e8a648dfe93b7da75fe9bbc6a78dfeaa29fda123c698cdc7aaa6b1f1b597df967db53c4bd8ee5339d8df68028bff59f5cae7cdb35611ffcc40a821b0aeaae6ec87f6b8291e213f7d8afbc331d056136ad53e95da88b57a3eb883ea36630860e5609fa368a34f52dfc4f48d7972b0a90a3f49d3467b6308753c63a68dd7d2dbfe3fb4876a1fdae3b5f476f8620d7fe8082aea519fdf1ecd1f518f1aeb3083d862e9fbda1676f60362d6426fb1fc9def0f7e3d96b32d823f74c4cf2886a5ffa8b8fa35be2630073f373ba23200e16333f81f9970a8f40db9e590a119d400002317000028080c054362599e2952c57d14800b4bb4405c46360e47e4b148288a02290a62208661180461108041208ab128640e3b40464e1634f5adf991e93e7f881957c2a1f99962201fe13e82cd8c2b78fdb247ee48b2995377bb899d592a4a061d724d7a6bc1cca3e91670d470356d04c5eec1beff922b6a949f8c20c66d038cc4a287536c687072e851c0af41fa24acfd3ee84bb8babc08588677555a5e717228e1b68a7b2c626327a4df86c5c2708b6e2ef7deefda186ceda396580fa1597ebde95f159b583fa5fe52c4fc0f111ec978cd0e23351758a7d8c7a061d0706f8cf036c2ce827f0ed68522617403dce3742172d5f2955877e9c5aed3fbad9e25a71096e111fcbaaa6cd30cd2d71a4737a92e57eea70e2f346b15aa750c3a8c84227130044d2c728f1140b7e92e1a13966a3b9f2d92d532c010d8c443b2268dbe1a8bb05c1a978b3a42fb5727510b52b8cdd93099f3be17f2d5a27a1e92ff0d792184839f3d2ebd8aa65bf027fbae3b2eb5879ea81f03a75d55809db8f0ba66bf8e7e98b6216726cade59199c84380d667ce3235811b8571f95fad7cb20b92500499d5f7d21d6275d13c59105beb052cf3ac7561ccc6f2ca39794de943b084d313972ec05eb1ca47270958c213e02b5ba5d071a9acbb24dbd86812d083ce123e5340a4de63225ca86580f9719ed80ccab81a94a7a68f15001251a6c4aa69126822acc333c88b119625ee2379c191a8143806df48ee105e57cc96e2a91a3236e423df71312fd72a74a3b008d1bc3bfa96bf2aee1b8276fccd8deef714e7a436f6460acb8aad83422f8e91250179a3ac22868d5c7cf5401bf078ecae448f17795dc6dbc5491c85454fc4605f2a951180b88a6b89cf15c0c099ab20064931a53c4786b46501681d1df6802ac4dd2e9f16fc12b77d9b344653d33118af02c64a0dc2f9182796d8f62367708d52b85cf83b8a8a172b2fe5b3083a46906140548852cbf995ecdbfbc0432c02329c787f3e7528b6968fed2ef70e1f604820495ebd6e2fb82320367220d7b690084c2f64ea39c61140ae47bc9e7141cf3f206e01ea4e656538ff9bbc079e9e4e3ab00ba5d4473a90c92cab62468a451d9c342734cc5cc8b7dfda0d5588e16376a2c32c358f95802a040e73364a8a1556253c7fb1eb851b1c6e7af0daf50a993393245558bc4845399246fcde05a88274345ccf93485aef1698d42a316eff45076ec66d08762a624caed5f9771d6ae66c9b174cd039a77e79c4b13374078fbd5ee54741929fcde39b67c8c808531440aec75067f276ca2d19cfd0c6f85a246e8068a9f7a5ef58b483b3c66a55bf054d66bfec78e91e0bc2847ddff5f0d2807af410cfc5a36470297e2f4b2d0e71262d71fdf8f8bd9e5cff5116b49665cb9019d3cf2f5cf290415b225d549d5e0d8f5f1ec724ba5db06a0ac1864a1fc073bc24428519418dccb6f0cdb2ae283f91deac769a657693702dadb7caa051e492538b0d8c02cc77127c922fed305caaa2535fb14c6a276c9927b357f19e492c10c9a9a9a8ad9899406837f1627e78f1dfdf3d93205321e796761aa5fe273dd52403771a6f0f387d07c3c1999bf8c913aa8a7a6a13997e13b9d9dad24a49505a67559bfc33d4b2a6126f7427d54da7fe050966fc3000f8a6917277e50a8cf0361cae3ae98afde315606255fa912609cf8c33158ccd39cf0a1b6453f8029b6ff0ffa8855d4d2318f0ba4ea1927515852d083cc135cf9a9b18f6e0ec89c8b367fcce013942f76d00540b39f0d5876f9469d9719c49753e566dbe8a28585135efb5008e97b55735aa5862777b71dba7e4b43dd0ba948c012c37867bf479051312cc42f619e1985149c69520a1912b9b0079fb9db5b402c8cd913760ed9f99ee7d0a0c20379df340438d5e2b81730c83ebc9a7d1839c062bc7efa6e8f318d2f1324fd2abfe944d16c069005b2fba94b715c3d323abb85cec468946cfb99b8614b340666c74ef61c4135b18322dc094ecdee93ba0784de51e702596d08a00882ce2f7c9d101bb4d12c1e241ec0c7a3d37956abc245dfbc5c0ba0582c4516994732163a9d24079b91b48fd2062ac80b9882a8322d0ef223a27f02fee6f8e0e94581cf6d6405efd67c837fb2fe15ba1bf523231c9cb2c86698b64cb8d3aeb64c4f4dffabbedde700eba4a2a97c4b9d4f1c75a212048150426dc4ea2ac468c4c56ffaf87026cce4ef0df410fb9fa7e25a7576c6b7160c15d6be08d9eb99866e9247680545cc99c330557d4bf652a97ee0fb4f2900567eb6a78aa6c4269e543d06fc0d7c7e1c50a7ce6d3773f3538c2229a9a7558ae4ec4fb6c54756e9a63f649b07ad0d602aaa24c15459ebd182a29bf6d980068f1d81ac939c2e3fab3b907592a907932474a70ec13abefec1605b767dc783e2a85f4595ff12fd44e18dc26fce473ca96b1acc70277550efa0591b1c99f8289ec2b69d67fa1c0fd9929d9474121f6dead4850182681457582d9c9a0a81785c932b12fdbb43764865035b4d96fff1bf3cf1c771de4dec93b52ebc2142dd0ed49375d8ce413be4fcd4accbe9b0029993bb4b2f5dd37d55a3eb7af8a0ab931a27e5da6e9c5572b45ad8e2777895a2218fe7058977702b7ae02679e23ccf4e2a6a5cc35b175e6e154f4a74e1c9704b22bb822fbdf77bc127e9d5b397182525f19894c4c07a41caf5ca87a6fdb384c03ae118cfbd07f5374a2098dd573be89011aa2058a65f7e687b94cf0ccccf9b93804ad6199e1d08ba0049217f3aa5b93fa31340ab1f9d75ae03912e4b9a0815286ab3017b8c830b9df7141c84a12073b58f793201e4c1498c3d06ad4116649a4e6ffd7cf0dea96953e9a092d28d9aaed574eb24e51d11dbd775cfd0da546065fa7561396c01367f5c3405ed465962e8c4f804a497cc4e6a6fc1dc4ffb9d47a746e26d184674e94eee084bd0b60d633aae7f539adc79b83d2a75a6ffb60df398814653bb241c4882540b3f268595b318579ba000b6a96859cfbb63a15f0bac1c92653c3f65eb3acbb62da8706369989ab50197006732e09b7d01e7f76e77c47d6bbcf8aca8a1cb4c6f10b6092ffb79315f39732e6a86b546263b791cbbeb91b0d5d977e2f7928a47579b6299f7faf29da28f57515c9ddd0da1868233b133d2757a708c5a54eb44a7215c01cf500a8e11dde93189769d0457f793b1934796c56189060008d76e48c2e0b84a156275266bc0d4fb54a177e14a3ccd3240c2aadf0f0ce650b8f14e8e1647d645eb3ec698d8494a1019ae26c79e144996368d1350e1e590f1e54f7c8e28323c62e0a503fe12aba819b51b45928c9d3b04bc5d51660525305ff6cc3931db76ef393eb8c64ef46f34dde1be27b614c4569bc187e218daca901ec7ce46286f8a738e6a461abdce17c3b92f95d9aac364a7c483f491263ba933be77aa53343db3c2275bb233e3e0df28a2e059b10c37fb06e75f08fbaf929d5c8d41dc1308ed70327174e3dd9a68396527b6e3dc3f08b6d96b84496f2b2a3b6dabecdcc98461d779fdfa53298f9d4f8c175876026cef8daffcdb71c1f8367b969d0c0c273b6f6af15e12c1c9c51816b51118d458082b232730859c347f8c8217eff0d849dfd6c744d398f9d727392f3bb9036e4cb9907045b29c13d18e24757d551cf87a6467025c106e313b33c53063769e04c8d42093937adb1d598a842b5e6790a1a17fc3b9177a29fcf2b6f85dfa3d84fe21d07d303b419ef120e8535d22fa1cd70bf0b76376cec439460376d237cb4ed75fb333975925c44cfa7be5b03fc0f4854b98ecd29b9d4e383ba376c37949b7361a91f08fdf6f0835b4b426f088c9e6df913cc49baf8a9185763dde385319af022b0a9c500bb26366426677ecf4525ff7c8d909c09c9d5430849deed9c5df67e78cd4048dcf4eadc37d68a745e401b4f32c06f80caf8c114724413b0b31ed0c16e761311670a13078e7b39738e8ec34097b1cf7545ff150ff709b241d1f5da6c78be3e8453bc59b05353ed96827906f10408ca3f6cf5f9d53198b6943eee302d8297a8c8359393780682794f9ac79c46518ea686754f7cbead14e753e543d39da899c8bc01bb8ea3251ec8dfa559080d43db940339c5af1d8809458bd1616d4d405a82908363506359987f4af227352efcfa34e46eaa0e6c252a20d2bd051ed39123529d1b4bfb8a3e6d0b60ceb79399da9d530e9a347cd089289f96b35bc3c17507556c530ad07479e5213e4514818276d983522cd15a33125e8036e00f6d86e26131437e84177efaa02a797cda4b551ca3f699b98bb64c76d3e70b1300f9af8c7adab6dc8d771d09d04a00da2fc2811f9a84bec947da584af6c17e14bf8d2377e9b4092134144cd8304fc62975c009c14a38402ec7eb115e64d5ae7f1ef27f14d5ae4a43a700db8b82641936dc246f995f5eb25e9fc36d356c9ae37a2b75128ea4757698085c5dabda0613ca66f366cc05d3c3563532742989cea937b145184f421d539d86b73cecc95d0946a7a4e5542c0cc21df734c04470471d637ef433ae15044009a49aef9e2717d6a6b317f8f06c9a1ce69b7de1f64b2a2fa3c4b826a0e4a5d8e15bc8a510ff9a8aa6af4669e6158c1c337d0b79c7d1bd26fbd500ace446eb7b69b78019fa40a3e2e6ca1bb7f9f06095c8845d0764feb2fd9a81ce3238a1062d904a7656edf4a90baa165d6fb63998017f3de79ff4754668c087eac99c09047f8ce32b1a601b7bfc21476416bb4ae1298ac497220aaa69fc6b43d21d13f4e8584fae9c89c213008e952ed16d38b292a4ef9709f8e991643e24e9cc0583132212d3c2e4e8691c267571bad32892447348a13f85a7b6e3d78c9a9ee1d25753dde59df6a865f1968088498b44b2905ca4bfc26edf47f9d584aea15a1cc2cb58b709c156583df3adac81961f6cdff7ac3b7193d79b2b29e6e1e904a1977489ac3ec9aa884e1e9d96b66826b69fbc0847a12b27238a08e05d227108e5d2413373c94a22b3adb9f430e428a1b790ab99f8216a61faa9cf4a90a43b2c91092e33512128d38865b4c2cf0703866dbafbebb9158a56c12a44b238f839865ba742e45b67db6ab41e0a630422a3fe0936d11491b69d545821f91f069aaba34595007e05b08626268c81bca267f23f3e4be7aaf1076455258093b006e7a9e2d5708cbbba2c7d6dba0e5ba806d41d80cc09ed4c21ce4f16669022d1ed0677a549e8fb6165c7ae0a31c665e118894b9c119e0a5fb563d6d6716c12bfffa2c68b4fe5cf9b74a90dcc9008a78a9599992152cebc927d8dad1b1a38e8013f9178fe94198af3cdb0488e30090d2eabe1089abe06dda83b86c452f15711b79a8cd9bbf636b501e3501340ce1664a9c235174cd7720127797589c93e83c7deb9bf198971fadc679c881837e90dff4701e0ea0897fa46f8c8d6a3aa99a0705834ab90584431f6b9c320e912b1d090c0643850ba2c805663835b67c6ee3eb5957b20427f5d402a8facab8d695242d55dfc252ee8d218eeb92a49722aabf18faa0f81b32906fdcb98e9ffa59569827b43fbcd8db7525cd420dc8b1a81767906aed3eae5014151ba2445df8f1e9b94e393a282a00fe591dc15e1324eb4c26c973a2966c8b970f981f3c14d15c4747dc92d7d0271805307f8c38445c835a4796393fedb056a66bbec05d4c09be4e2d489c764ca067e0a98eb527b96949de38cc0fed0238e4adcc7974a6f7eb8ecfc20187e65c57fc6d6f1ce74aeacf1fb03ab4381fe21f327fad3c8a8658ef01f8e94d18b769c9f80009fd19540f4e8094160f52ab03074101238efb553b5887f76c9dc6d1c1b1e18d65d0b8a9e32cd38a39261c1737b53ce99755c49d4fea56d082b2aaec56e89285af2e19765623499a907e25f3ccfefaaf07163fcb086353f6ca39d876ad2303873733b0395713ecb7384f03ddf454fbc708b1a7c018a66cb9e8adccf38961a1298e6ddd3e7391d1ebdf76c85ebe1aa0431dcf2eb78111d0aa8734999582a5008641f163ec93c3c68d3ea986508d82bcdf94ab1cfcba8eaa11b4e41f5f4d8022971c76ccd0d2dc2f392eb54460f69b077b5f22c94dc5bc58267d5467457f82e015510808edfcfb33ae9d6a9a39cc10467219ac8cc401c0c2938f22e2ce8c1410a7a4e997dbecf9d32e82a620a7694a1830b35d05a06c4e7187edd4043321884dc5d58ad9c2efc95a009c05b2b50955171fd66fb620aad0494efb2431073692d915cb5d38da0dfdcdf44928e88f3ac8b5e2c70fd05f545991c11f729f99c9a6a685f4706a092f4ff03e8e36fc667607bbb8ed791a11cc14456e1368f87f970b9847260ee9dab51e7b4c9728e6173030fcbcbd1b4f26a334cc35b192b3841175024bf6d49f7e3dd97b0636211c567709ae11388923e07e27d6204014e5d2ce42b448677305033585d515f5f74141f80121ff419acccbb79201c2087f8661b22b5087404c9d79e9f08a5982199f6130dc05fe1fc113cd551795b46d90ab2838955e5d0b3cb9b1e1d2cf4a34cb743a188e4d85571fe1a484d5d6165d1479db2a270663815dfc81a865912d4a4385b80e45dbf59234ccd72ab743739047db17d559f661f3c725a0260fa1c01bbd5eb4c3eac01092c8589c9fe003d5b110af32cdef219c7843aa0910e5ff85ccf0f08f794ac0e151589e60d9653907ba5406a4c6ff7bccae8ea94494e2524a5cfec174f394367d10ce2ea414a896eeb10c79b9a4c2903764796b2ea753343e1564432067f1be155dabd04739ca5b39918b66662595312feb360335117c69a26124552a4662a175c91fb8d52032ab2311c7783dfe63908401f2ddce19868e63f847620f4689ac07162c6a0ce4f9aec7538653ede69a19857c89e316e740f34fae62822acc5c94bb7c1379f1837e44cb0f3fc50c829e9e22bd9a5dccdcc1cf1beb0d82f1f11af605a0124f92f298b4e501a35f33c5367f9812be14352ade8cd88b543f5fd12bde3ff0e084f200c5aac02a400ac58ab8a5904dc21f99aaaf718024eb45b435cc3fd3730e06c4062c301391f82575634d4f4c7f629b0f25bcbcbbe9a3cc90e41d3d1a74393aea54df84304e381e92e626648f8ea8e22f61c289654a48a840d0e11ca4ffa24f2f18d654f99201423b0b6e314d7c42c4c7578095427b9f6019a2abf9152dc29b53a0c640470a0d70fc2a6b055a2d1534fc89537eac2e2f568d670b4e103fbb45a5878c24d41b2f83692f2ee6a67b80ef46f8d929754f3848a5175834fb6d2bf8b1491d8031cd9f00ede6b2225fadd7225d9e32b3ec66be13fc0a863e5c7a748a44951b74aee27ece6a140dad1a558d978cebffc40e825a23e5d4c7000a3cc45551c67f80875952e10c97988a8a79976886df0bf986cf6c992279d95e7624b7f2cc0fd126db2f9f5cf5cb23cc26f5b3b6518c727093ba954c27cc88b39860529e5c87331db3b4893b1fdb460808feb80870bb7a8c8080350f9bc786560ef640bb98b5000854f855526f5151df0f76cc5207992a60d1aec8914ab4335c4544c1053755c5ec539ed302fc2dcd7f13bb3db4b0a253ee25598aa0d786be59c05c070b2e17e6b872f1eab4d284e92f10273c5872f95e96fb96e84fa30d33769eec092b2f2f34ad2bb15ff9a02d4d19d589a83521cfeea648584c5b7ea556ac54449dd8a71161fda75b5737f5fbe74cc70aed20a56c36df003b31db2669c9244eda4a4797bd4e94934781483e04d9458bead27a00435a9d2d6f0699e62dae63e35bd55197954329f5e93a918c29822c27d76957a86c0c84498312e02e10167797580bad53f12d919a5dac1420df35db7c2b445330514c3b717aa2627bfe613d27095d454c75ca35891e4a3781127c5d87671368a6e60921c2ebcc6600563f3271683aa16b24180ecdd1dc4fcdc83f7eba0196333835922a564de8620d69964265a071af58085dd14dac3a91ab7cef4685389d3cca113db60f80ce4db9b213b1e879f17029e9d7f19726fa32ffd0004bd05464c920ee9ff1f2e0f20f31b332ec3a9c5ce5341e4d05f66a56edebd6a03c204f1abd6a2cc4cd3b1c4a0a992dbae1b4eab849beae57317f81fa2c046f0054c8da033891feff8840307f25f9628a6efdf980d9cff8fc38b6e05a0a1a2f9b28a672ba3afdb8cb2ed7f8bae5463ad9d84c3ff80b47dd90669c1b277dafa304530d47f168c113083c47ad9f53d281af45a24fbab52aac4fe11e9a85623611c4b753c589261ec77dfb63b8319e40ae8913d7bce00dff59f4415099bfa36e64859b7c20ae6f308b0faa8255980a7997877686e8b2d827c910eb9940d23375eadb43f7d722259ea4be90197999a218276e0068a72e3c7007bfb51e225d1688e61d8c13697e396312adf986b19310dbf7cb67c637e79e6183b88aaea8d029ed91cb9a987be303ec044a3d526f31a0830da2386c4ac99986683b8767f7665a5518485562900f04d735b03588fdb0fe270ce06a323e08bdf570d10b9ffd03a4bb81c1455f8492270f9baad6eb69795744095c77c03fa6671ceefd3582e9b56611f4c2b29c3b930e5a0e22c6836708e1746fb2f04a073d37a77e64c5c69c8825c3b8b40463b2122ab8c82aec584410f30c560e3af160cfa600a013a13577b9f93991f2aea2564b8a2e5f5a5f7ea9fc141427d70b4e4f2752cc4fbdb00df2ae4e0c8d2cb3c02e415198c23eccf7a94442f44bc3c9041973c0b107cf29e233b7136165bf09246d827ec3ec7323c7ef4e2413b534221c290c75b03d10107c9df00c4fdce9115d79838ca90573f71138d4a016885479a596b3c55107cce1678610491ba4f0efc821e8f3e2a0ef23c70aa0da13ef471defd873d19e4896868155956b392e76495b925b4f2cf6651867f928cd62c58c68ec2b91fa2a0ce1f5eb32a6922461fc7acc53f456e9731dc98b247d629b24581333dd0c9afa7d021f307103022481c7e9da120cd50827340c55705c3af889e1a80a53e9f5b59104dce8c114a6ab113a787714e26f1b32a43935f60c562324468cef0d59175b6f2d9b20b3a8db750484b4b9d698ff00f61aa1753a442aff0d67df3bca9131e908d1aa8039d4df810df01fe9a31ee5794f2f3a878eb03686841153fa5d060466bffe99592301a33f474ab4d73812fac6eb448b6ddfb50047028987d93c1f33929f9b085dc5fd1a406f7377abc7390c12048605da01b0ef9b7ac15debc909e7b36c586af003ead60f280a1db23fb3eac09d608601734e46420b77406ebf5167182c0836cba8c6c018499da9c5d5ec346ca23b86558a9bdc60ec82dfd214c5b3277bd7fb84f0484e15ef3145fbb09c90137ffebe58402e2e48d4e4cf8cd43232637abca4777ee8d67c4f453ad83750944e1f67e0b2ae9ddc3a3a9a87ba0d3e087c17161a2ea61236e5e3653691673744fec0de58f1f1bc6091724aa03b04d6c243174e50784d38f409ad4acde20ae7eca0c9fb00eb0f9f8d783f853310d40d96112e731090af9bd50576794c933d614e54d3a5186dfd37c3626def045f6e421039a51ded0dbe9fd8864d5bdc76c9a3dd708fcf007a87786e5094b3579704b00a1d0bfb316164459497120dcfcd2ee4763185ff8afe1759aed84d03c48ab6aee84d17c11a2a84978cc64b3e89dd6534cc4bb8ca95abf758fd2857817128b6cd6d31d5168c4af9eaa2493658fe77a4b49dabd7e02f7dca1a6926a56ebafa7bfb8476f34a31c3a7b3d8538535d67963d534c1629135b9e6561fcaee3a65c0f7c792475b989dc09b0bb2aa468e706df2e124eab09f0fbdbe3629d81fc747f637aad8eddc360025367349414d8b7cfe411af9de3ed929133b4c73b4384bfbcc4e3d6d64bfb33728f3e7841b5c479a103adf88b6b96a2270b9ddc2482be21560658e831c2d2fd724815bee6b9072e83b48b54cd6e7c85b135c3afa767b63aac54fe00783bd67e518f14e50aeea03d42c9c519d138dc27446ac0b85a1682dd63a707fd71fefce3308e8715f8f285cc51cb8748c97cabcac4c65c33b85ee2a76dc631be5160b11a1d5405e4311c9aa4a3c37b849e15a0535450f88450331ba90ec18db57b2200086de1b7a7331ed4579ff1ab139556405a6aa9cc86b2c8288b6bb839dfd5ad2408548d617876da042c7735139b6d3d8ad9fc2f0b6fd85649845118b7b9ac897ba6661134e2c52024db3d5089189838288a627dc37c7412b3735f0c3d474242ec6508d25bb1cf4c77e9ddb5f2cdc87faa6c02cdc43844f78a275a2d7dde23af5d3caf3669c02e53ed08df12d14050ab43542c1e2e8fcc64e1e917f7f3aeecaff30fcf1610dbf07226b3c54fb7a85577776f9dc5809ba307f974c1d95cbf68ed1850dfc365e100cddc69847c81bdc5a17e57ef86dfccb76e1207c790ceb3946d0079c105beb5c81182f846ef34e08381fcec9d41e10a21a5ec87566df0d0bdbf1d39c8323fc03ae080cba70ea1b4452bc903658a4d9914cc1f4f5d9d65a6244e86810a2421860ee7a69d906c99b561c2843c6a147290c30584748e218b8865d20e7eeab1ac6759b721d190229590a508b010c005bc41de042558f4a948ea7627d0149b92dc6f257e419abeb2ed424ba03e91339495de6e6d9a05b9ce47c49c318d7532527619586f8b008f3490c3ddce6580cf5756ac0eaf93b63859b77a73efdf192bd830feeaebb77e2eaaacccc11f1e710d76cad379ff9e83b71702cfc914d5fb7daca7fa0801c5b6348dcd90ffaa3419588772fcb71bcd562caea35006e1e394f749e0dd06bb64a713b4b16e16d15985e57314e44c5f45ca5faaf973508be22d325f58b10ebff795c245848bb80f5a9cada2ce78c617a8937366a212db3232de70194cb937ed25ed8b1670f20244c73dc599c8116b099d989d119c266126760401a0d38ca16e11e9d706ce0b8893f0ea5e9481cff694fc00117920aeaa2fecba721ed7cf8cfe03caf2ebcec428fb5b232965d28b10f45045a7cf6f74eec370932db85b91cab8fb9546805242530269fc570570b61e248663d7af783416e9b3b837821de84192a7d0c173dfce1f845f9c41ea8d335f85e8a9626f587eb1ec527e48d0e39f2427f5c2bb289020704158ad8a26862a9c8216ca70776841a8310a5451aae497bf19117522d603a7c748c30a65a7d64dc2c60b44167089e542b445e08b767fd2424bc62de2f2e3005428b058b45b4a3d85a355c38f6d0f473f8fe587e74401188e7ff2794a0b92cb1160744ad582f03565e181c522c47505d8aa183c193c6d550c6284ba1f74a7e796866c2a78c0eeb2e03677875a809e98d5468dcbec1d80006cb7633ed1cb3a058d119e967bd5969873e06c0b7f56bfcb20df1fe3c787a7656d1a1455d8d4db3648b2bd0adb07cb2e049bfb4066118630d882e2d9addb0efa936aada55b5f53a31bce5c77027e0d415a4f0ea6f020f104c832f83fcec693811fdb316c87afd121bab60e2fea8c77ce14e6efa646119435b7c422f3c6e14c1c15f2cd2f41519371c2f2a748a124ebdcc0b270b13015b2cdd0eef28bbbc745194f215c047398082d83e569097dadb4784181eb1ad2f07e8940ab56ffdbacccc9f7c4c7da2740cfd190e76d001ce848324903ab93733dc934fe0429d42ea5b130bce5cf7ede6fe1929b15ee7ffbdf5c83a56ee49d461433094c0d061b92714509ed5b0b182b6da904ed4ae17a9f2380873578b84c2cd9bf37f4a8061bff9e7796fe0bea78ef002aae6b39f845ad9bc6f5a8e922f22a6f65b81ce4aa1d2d2f31a1a83acca93c655c87380e7f1134e76cc202f8d32d04e2ad714887d6e58c3fb5498b27aa964e072943af19240b3530afbdf15ab2228a65cb34faabc9b5320d1f7a2522724bffbe71c096a0a741783b74720e0ed441693abe5b5020a54fd11643878ce5aee4dd9b1a86a459d3c327babfd08964ab519f367559732a5ea2a4f83bf9e273e8ac6427a79e6aa1c74fe97d824156b02f12b3dd4d75474263378845f9530d35b3cc21d597a2e3dc6ae05b3670d26894aaa4fb52a303b03fd06e34866f0d9b322b06133a6e6ab9f47d440541771209b8df73671432d8618c4d97cb14732e19ffc2029353990802078e9fc65cec24a5f92606309668e6d135e8e59d63d14b7f5b3bebf9ae2c78341e131114c30264f70e901fffdd462146305dbf78fc7358878a24d8f14b85d92e8c2b992860dfa6c8324459d6988fa1492360b7f9552253e15a95179ebffb88628b593a3b474ad779d4e29ae2ce83fae50fafe729bccbfe333e3c595f743b6796d4c371c43e65597f56ff8e1a67d6874824a56d276ede5ba4a3394d9bc416f47f2670511d5f064e81d15c99e2b559c05052deda9c0e1567fd2d8e5f1a6140e244818883d3179824351f208fbf41f1ba5ba6128d58e6b2acbed3190b30183e5bddf547d6bcee0744ad101c947bd4125a1b588589d161e4362ef27b1007cacce2501b4f51c94242bf0c7951d50e3d9097d1603ba87cd36521306f426e26bbefed862ab87b38d60d213826c7851473d40e40d6ee8506b0fd7da4faacc3591c02a761ccf7a7ddbe0b6b98c3cbf1ede37030be0c86ac2842e13b6924d9fc1829a068f91a0645f68613877f99ee63fa82e3beb05fb73a62bd7377565a1a536f17adce3410eab8ef0442141adb206fd7b949537634bde9d0e3318ae014c397da17e8faf3e62ff4fd31ece7df86f7b331ed9bdb4fab3cd658203ad89fad661100c86e054a198fb434aa3fee894c908dd2e32e541cf5f43d9f653321a62142a583f45f748e2eb9e1a819f1fa3f56a7a719daf4fc1b189e95fa71625ba07a6e60af8710503d632844673bb5032a98f165b51c0df839820e7e60b9458a7f94573bcc0fee88ed939ea69f367a8250ef632c49d0308f8cad7db35224f8cf2cbb8e92e6062ff9dce14de47cf82f637a15cf69d3d4c7a824a629d0ed1e949d63aa85c941b47efabd3fd078ea66104182084ab4ddd906a3d7d6b31a75dddd856ea8e82f027de0c387db451574520f0ab2c6342f1ccb6fa1da19b644cc6a68a0417a7afc2108df1a6e28aedb51419327a4b4ad8ee5d2023e3c783ef09b02ed6c5065ba9bb786df8bb2ece8e06f43f9b4de616f71e643f8268350379442ec4e9d5d76d00c230fffa4c694317220828d70bf3bdd5329c0cd11fd552d3953616d0bb1736c2dd486210dd93e9053cb808cca115f2a37af7cbff71f354f51e414c6e3afacc53b636228887446a5828b4ff1ac05d6b9ae2a153e8d3b82ea6723fd89982b60f420d3a4a36ac7af683854b67e2b84fe4159bac81720da1cd9868ae9a0043c4064d01a0aa1f6f187ea6b065412ea076eac13c21d03a45731c906c18439b716febed8f0b4a2b067f51f6c437b5051f948117eb2c4db56d940e41d58c0d6d886b12a87288f97ddc0c85d123e0eb1c6913551a9b355da601ac9a4ceaf0929db7654d2a657860a94519367811a81a535b2bf8b7ab3ba7d44208c13e97a499bdf64627144a1a219f1ea4df0ca21eede8d3f7cf3c7374ba2b98a4c74f3f78ffca87e68bac39eea6e0acccb980cded8943a603848d8744a825d269a23bf895732b070ac782c71df7101b7080f52258de74da376252a25699317d977c0927b0f471f53c2273b9310fc9a51364479d9c4527279260320298e372e9c62af6f531d1f4517ff7b4ea471cd04910eecea3d50ff6d6178d468a9d54cf43c44be164f96f95e94563cd8425b15223024509e027a0b24bddb725b9a6b002d252eb18160ec07c2a356620c82a784a4def085c0ce5845cc502fdb8fedbb58d86c6d4b6e09f97092961b6f0839bb96bc002700878705f0f05c9e60165c8ced9cf3e976f30e0e304e3d0364215ee9a669593af01f88713c18ba40fb675a2d65f8f13a428912f10b611428e09e90c846c4a7b96b70ae5df83d05261f0c458ba58a94dc7a1fee1604d72bd96ebc8e2aa0b31f2d93c0a890c9017a1e20e8bde6f8881030f2daa6c15e72fcd9fae2dc930e0e32bdace65f40c54306fa2870d874e799e4051bbc3752f6e6c59883d5d97e8ca11e1563f0524061aeb301417f0105526e74a9a5e3a5889dfabda71615238e03dfbcb34db50ad13fdb80b0708ab12afa14efe1bb7a997d43eaee1bf51eb562b24b78910043e361404f4e1220cbaeac3c9e7cddd98277615fd24553c186bedaa54f09f69ad8cb781668a9b251cad0b4fee19ec0fbb4460c5f7e495453dd33b73c7a300217ce368b57c412492f62e11c55dec2d91bb6b480c906e9dd73afe572abb77f5fcd02fc695ca5dbd9d9bf9a114b507146874ec425146db0ac33cdc6bdef375f551ce213932de73a2cd9215ea4fb3b1f49e2f50334e9a26653c8eaa173082fad924a10e59b574429a2b6ffb21caa9b094662d8cc5e7fcc5bce8e531c422a8ee4c5c0f23d4e8ac0478f990f53bf5935744785950db914408e34a333ca885e23527105154c19065fb2df52192ce96f5cbc116a697a8838d86e2e2bd0b35a6c0d20b6854901480d9755a154721f079ba22b0c208ee8746e11765407ac81291e90b704564db9065b3c4d636bea43a52b0266398363d23cda8e22671f766bc58b22794ebf116aa8b95d4a8e6fead62e1e44ce4655602d415aaee67a7609379b4f89f1b257202f48f916d6c4ea98adff212388a7089c0b4292992f377b8e43f89760adfc43ce55a7dd92a3c87897c521cf6058370fde4664f0859339eed784bc7d8ff64eb34ef25519f0c819ddab0cab8e4293fe71dd6b453672cbb504a659b4b749cfc03883e621143606fd54281eb05f2e21c9c0fa5593aed62d27d4a57cc236d1975b9cbbf896cba887417b546ba512f44d6ce7ba95d55cc34883b77f4493fb90afa96041c164341145c3e30e9c9119368a8640627a46f879687ea4418ff3b104a8ff450fb5e814ecd1e08b4f0e150f370fd1fa19bf63209c2785c6f6831411eb92c175fa83a2110a3a662aff05200133404fcaabab227f8b63676d399961e08f3c8f9f7041812be95f4c5d3d3792600214c629f7c42de58b1efbad35c0d977b40d03ac010ab2eb6bc6f96f267f2cd14b2874fb6d7e1010ef809617acb014385412037e4c956a051fb48a9de0cf658477791854f0919c919ade4a07c9ec45a480f3cde965fd5596988fb94f2969288d41ab1de72026f7df44483f107aea5a4c01ccdd8e995d6d0ad6c6d146897cdee06c3230a917bed2264c82ed4e3b388f5d8256a058569edc9b157419ed45c82afe00190f122917467c3671b07467ae797e9a5a47925ad480f888fd27535510c1976c5e239669b4bf158ba6756a1f8b4f97a5a16b8d43a39194b7fda76175677b323caf498c4071c8cc1acaea06b23691e5b3a126b3633d4c60ccd689fcce089dd3ebafd927cc2a2144195e097676ac6a721e72c337a01a1b726afaff771663b0f3bd346b3812540f7ff958501a68397faec7df3d56b0ac009130c63172f2ef7cfd742b061e4981fb4893fb15a0375a7346063d64953da4aa2ee0af893a56aea55ae40cbaf89206a89412dc8449ecc5459f88a5a9406ebbba88007043011b2164db17c84b43bf20b7bb56de6f1c50cd860d5c64df3e2e695ec129d2844e3f5ee15e33653ca0cbbaf95c095ba648740b8ce3b04539b96556a13aa70022f0de7e86cc94ba8c2c7d7d9fd4fa5692350b856758f09333c518f96f8254bcd4389a5db6561d1d5793c7c185b45c18fa48ccd19aa8a9b0ed8029455d48dcaa428ea9ce8bb7630575b34062ebc4ba563284eb7b2514911756e37a6ecf94829b1b62e08672ca9c033665e13d9d7f8ad456efd0cbbe781a427dfe3a300cd4788f6524140e8182348f78894b86c80ae85c57018b0f77ce05e5a5867c20c4bc3b2741e81a8771e6e234cde214de8d3fff92ec1b4d1f835051383fc4df496f5729a1c327d47a99b32d14d4cf4e325f0a634faa8db4de19e9725bbe53a86fa7aa87b87a665c4a66328440a3ada11615aeadb2f65fd8f32f5c197d292d0033b9bfed1496990459d341ef4f61f6582f7a4b2faa36fd53b60502a861ffeb5d091f1b72c459cf88d03749a97475b0256d1c48e2212e4f38ec3fe9e2c5802a78d09f9a11109140f4d6368c90832c0bd1647b84fc19606aaecbbd345b97ca808cc0a14876cf39db9c9d978987cd4229318636235a4d566d26dc41a5c26583f5fd55e4a39161c5b43a68ee893ba6c6ddd9440719d78515f605a0b5064d76f997d1eb47f1fd8bc86bdbd77838f988b63f174ca7f617b24334422dd08c5901b412c7952ea0cce0bb77030ad0e810ad1a19c44fbcac063dd775ae29b37fc410cefdc3a24d70ef4dee8db3602896504a94e28d031427f0779864320f131d6042633db9f4ac49b4c341c5c7627e3d71478a590d98896ac6f08095b4e1f5a6a74d95d8e528c69eb02402508cea746c6af94de092c206d5f38c1ef13242e6bdf889a695bb38a0fef49581b2742fe64d83c4db903a9eb217c488c7a33f4b6ee86cbf08a992bd6becd1fd6b6be2e255a22e65ede863b65d0728e046fe176fc22d14a4b4186f1ad70c56a26563a1dfe582baa6fe52c38192c30c0d10dc40db9c2f4fbd7fea4b5305e81e22bd1978b0c1d427e60d32180ce19920a522f2fbecdb1893a74c91b0652335ef2c9e4f5e858109bd1484bfa065b0cbbb0de18d382916cf3d04d9d609732658e59312d79dbbc91ca2198fce330220f3a3d5e81a71d74c5cb6ba5d12a0188efaed53477b4563eb70548ccb5e14a4a6fcc6ab830d0eb7c95cc90a3f405bab556b42122c6e5ddbbe4371d91ab4106a2a546d3af5b51f7be4040fdc26270a52c8211d21887bf04e2c822b2210804461a7d7391d81e7499025faa486d040c1b9429ae22d3ac00d2a18fab4f25793b83f70d098f9c6d53b72ed756c2746327d89e10ba32a33c37de2260e02f9f7b376c2e638c292b1159e839261815db6008e13272ecd7b42d52f689ae421ec858be9ec8a55aeaedeb6605cdf9c1eac8ad740181cda72dc58e8c495cd36d1f9e1de97ab4845214c6e9866bcb0fe16cd5e8f89dbf0b0bfe7424fa9f7b127456bd6280adcd4a37223a9e6a506d1fa0cde02dac7ba4c7345c3b2cb1476930493f9210c4118fdd9b370c97ae0b0552f86a4b68dca723f698cc012731f9e6f20591a36eb6a0f98ea5820d08eaf8060242b36a957ade0940a4f0b132471ff9fed40747983b242e240856a0fbecac07879e4abd3d395b8fa914e94ca200a33dceddbba2b3e881c53b5394f655fda36f691510209c338468201d846554f7192fe7658aac0c6b95b9278861e5796a56a9333259182dd714cc27cc2a6df58520bc28a3a36b3b1b13dd4aa8bd4e99a9abec73c81ac74ddaefb09ab2ea5c696d89e132c7ba17697837744ac1acc1ba2ae086ec1becbcd73eb771f91c3382f266f5d3d770d781b7071b77009d0d05646adf850a1880fe7db1d7403e25e8de32202d966bb4d74b43885cf30a18198518fcf43b5a025e07461fb47aefa327574fa2fb5c8b1da67f7e7470d316eb509b7b83c3bcbffe47b34a13b21c0748747bf8b9e4804e26d32af87485abca10487a7b7a73e16b03d37704b738eebd66d46d5b1bc1dc033f56d60aae1e8d41d42118787a6795f68961b12f3f9cdc937e5f11c2d4ff1231e27cd054385a12222ca124969b7859dd7af2e465322851f96133950726a792a799a7fd3c8b0e57c1eb759472131bd371182705cd4189a5576c316403833a7532ed0484f0b2f713193b1555c02af42a1568d2f6584af12b352c97b9e123af810c541dbe4a94246c68e4831ba5ae89fdc60aacd3812773cdd8742adda222a725667a5f0caa02f581bb56a15f6f006912124afb38f1fffc63c764ed8ffe75bbdf4baa1df4e334d51dff168438a8b6aa70e8badb00c457aea077ab25b008d7dd56a2668ec419b93309ec303ad8d3dd9477b52496d184093d2d0b65b27ac101a9975e1479862cce73597821502dfdbb659d0de53c2d431701d7dcf4823d313af089e14561265b4ee90ddd55f1ac8fdefe2da7dc9f6d2020e07b88f402f82525f0929e559ff77507d02483b217702e1b62fb70d5051107e7649ef8ca784163c05a869b39d0b53129e235106800acbaa72f707323f34b771cfdd620c44ae34ab8bf256321469557aff2018e1050ffb6c5e70ace4480454d15437c5b092d0803aeb0debb6d3aea0fbe98c44d6adf59ac999c5fd7cd3a505507fd31a1008f927bde2e78e471021c85cdf6abb40c111e8d622cc18ee2eef15c627f81d15dc9e03ee880f81123a90d68ca4d77abf0f7660318d8668f5e682b7bb0f59a3c64229dedec10337e1a9035f9b068695a98f2d046d4532efe83ec56052d0a2d90846e744d3f426baa4ab51e49fd7c40f77ad5ccf0349aa5d35eb871701b10b286048a21a5d07dff30ce56d03d8769c16822c17b692a4dc7b042d9b09a55f2f4e449cc64621d1d8adea1b8260c7f1055e380af01d0e3cfeb16edc99945515599285c404c4b647e5604502aaf04d74c29320627e86fb2f92e352d601a648b831afe1975fae3a09c919c3ea7bfe83c7f4706675d4d41243f21fd6e3c6f33bfa4089652c80f532f6dca8079dee1f9301ad06a921c70f92035f215545a20c2dcf55448dcd4463531677c2ea74c9885933b6e2424b2a10fcb5e771b3812e5383dea1be4e5361b8d01e28182acb5dc197166a5d44beae8dc537641bdde6e41690ed1eba328d36d66c9085a327ffbf543cad5ff380d3277f110149b8e313aa897370a3d6a2e43691472d1c37abaa5c407c32306e638960c02a6591e1f3290a9fd8540d82cafa6b720476c140b81a99f5e14fd3dadbd3b551a4bc8719b37d3a87d2ffe4c208ec12d99a223d56622a0738b6c340903781221ffddcb647970ec46996bfd29996cc5e5c5166888c50b315f449d04dca7c3e4210b3581d4e6c91daa4351060c0b8a88721ea26370d3b4fc244b1e09cf213897a1b79bc3d635805d30a325b53d830419b98cf6f92950303a842ad423c76f9505de3fb984a9eba6e6959fa84da933c99e4998e1a0879bee0f5970ad1c23f6336e9f907304461d3c8be1034da8ca92c6595b2872aa1be8b58bc764a4a1c3f465d7415c3d8d2cf0bcbd53033e32910e40fd09c94a406440d7bd4d9b0d8507f9302fef63f1932cafccd82e99fd8e21e922f490c980359c2873990e8b24c1c9405c92e64aa5d0c532514e78c140655545fb248ba05e5f5e8af487ffdfaea07f8830b3010c684876c7750833eff085f5a0f658fef57213ee8aaee72ec7d0d8e86b71484567cca4c0d19e9448789ee6cd691e1b41614acd803e16ba08ef41aedef25b89069364de9d61976fef122a1d23922105549c783f035c5da09177e81e9f3a7b88b159085faac06e4d5d908f9a8249be47e0c0652a212f023c430d5e418e9c572507d2ec45d63a0eea548f5326ceec41033333a07cab5cedcdf4a3cc41e789759e65a7c919c60f77c2a1d6b574b1c83a9e921872fff453581cadd3cf6c6179462f45a831d33f5c6966e9210c5ca6a583377a70b6103cc170c00bfa13fc95225a49f0368608eccb018ce532b976868668454baf736d6e8ded139eb3f3ccc381867b9829adcf38eaec02c5fab5a199777c488d9c04d308d66768a4d1dbff51534a33e348d75a7d42396ae263c6e1a0dbd84745352b6b351a631729a53a1f610ff5608747184a1c32d1a0f8e9cf66e70deb08dcba028e80a9975276c8a1690f12f0d9dabbb52caf76cfd022407c2318086e5d29ba1cf6dce2eacb6df65525d34b512b852afd7accf3215675a4d7ebe528c4eb038a74abb25a20d032930e6913de365a88cf1104d7010ec467805881d14a6e29720d968d83781ab507adb7c71e54d886b41975981e3c00a5da6e3e00002c53950939d9239c03b45ddc344f0aa94d1c2e037fd33e9184ecbdb7945b4a29939401910aa40ad40a1e940462e9b58e3108d20a580bb6a4e84012c010e6573008082d9ba08f96cd19b653af9d575004d9b9742f6c100c23d8811b18d28ac1219d37a7ad3ddc4e3a7b585a6b9d91478f692bb5a08d59db819e0769fce174eec5ba584863ec3816c06984931d115d7489bddc25f6729898c762b1582c19e5124a46b54f8c2a32a1a414f224042a4ab25c0854144bc89310a8a8f68162b184b0a05c52562b5a35a9e454cbe89354cba80b914f328a157e2cb7a06c75d9a9c7568c6ad9e4cf5dfe8a5977015dae8e88ebdbbcbf1186d421de75bab17c63397d000b1c52bd3efd405a410925f5b425a1e4b6755dd8db4664b3f6f52191dffc253882d76f609612c65ac0c55fd7cb2f9857ec2548cb57ccc62e4ccc7bbdc857ccc56dec7b89bd62db5c2fbf6034de3219051505150515051505d56a1710524a296b15f2558f7e38b5cef9e15429a5a49240b3ad07d5aa55725256ccf2bc31c6d85fb1d83618bc9f2b26a35c26ed05bc39bf589e8717f48e453de7d7f358d259d2afe79cf43829f1d6512a1f80829049730165cfb4999303abc7d5f912a45cccdaf915903d56f6fcfcbcf3be0a5e11a4f771be61cf840adca56ba53bda91403b52c9cecf8ecf4ecf0e4fd7efce62de6f11f49c8b11f1debbe090ee7248f0f5be3c71dbe49cb1a9f761914d05f97604de57708804612d9b4e411e243c487890f020e141b2c353d33693023c46b4ed8bd520917207098f91ac4878ea0e121e2324b5562437a649beb32fd72c1cba5813caa35aeb15b59a554dd5532da35152d72d052d585d5e3031de8bdb975f87b91e138bd1e65a8789bd622f3197588c3616a445ea530f8bd48d82433a9066dfbcb38043b253c79962906e3df5f4769639694bfd445867e92c2df5d3593aaaa57e3a0bf515669761b03c1dc71f72e2ec9dc7e9f9e7326f9be34f84e972cfe3f4cf1ffbe6cacf02c37b1f638f2b5c9fd72a5b705a0f61d7debb5d7c3730471dd3391ba3ae9fd3bbe59c372dd5598e5aedc245277b48ca43ca1b1e3d64e5516f78f4e051b958abdb90727bb9679b05294dcf78c81d9b6f1d0b94df081eb839cb83cccb722eb66d20cb83f4d65c8c15654fd6e7f4e657e5e1f8882e76b18b5eabf56ab90564adc62ba682fc97180fd230f3e5e5e5e585bad0ec39bbc8222945c39b1e3e9cb8b810392972797152f42289a274228ba414f597987c914e5873ab54a8d244ea23692489649117b6bb5e9e2ca2160c5dbce5491f312e1d2676f3160c63a457bfb198d8f5964bde1638c4a525bdbbf9ed057ae881170ca9742281bc80435c5aa0742277b840977452a4ffb3d2096d59748f5acfe5772ac8ef9c84157272725cf80f07b75c6058e4657bfdb66ddb167371155af8cdaa207f7317978b5214d01f52eb0bccd63b179fde75fc40dab2cde5b67d9b1031fe1213a206b8e3b518ef648d6d9d2b166362b76d6a2bc672978dbd8c705d629fc7c4607c8bd523ffb97498988e115ec78ab5a4d7b28aaf750bca22e9e4e6e5a4ab35c908aa24212c6a105d32815ac9fc69d9f461b90ca74fa4c1bc868719c643d8bbbe968581d1e68239d1a605469b0fb42764ff5a1ebff8f402863956170e2c529f934edd152b00536e16984177397d0e1cd26a3975d0e5610716e9efa8a7141cd272ce5be090cdeb73e0bc41ee90e0377ffec35e3d48270ded2421f15369e8af17175a9078b78e9a37f4d3ec993e953ecd1ba6cfbca1d6271a8cc380274c9818af014630bc31e00b386dacbb78d78ab93c7f606fdbd6fa5c1ebf114e985656115aeef2201d2f6ec53f61d264ceb4995ee3cc894fd3bbcf65cee7de7dfd47f39febebfccbee8ab562cee9cf413ac72295e5b889d2397ca7cfbc4102b9f4cbc7394a39ca711c57a49f5a4a39eadcf47af4b03c78c81d9c73f967b3e079bcf9e251fe3e96dfb07c7cb9f3f19f873d6c50ca4302d978bc9196ac574e969e001f939c2cf9ba76eda95a9fbc280fca836a2965ce5432e7ce59d2599e54f6a4befb8a88fc64f670eebcf4967fb1abdea66cc94fc2602d58f6a03ca89753bca8def19e3caadef19ea87a4aca8bf29e3c298cbd288cf1758c3d6c5927d2da5cdb46b7ed73f1ce2f57defcd5f29796cbd7716068c442bdbcdc3789a88ac66a65541291511291501213abd92cc49b78b46df36682307df4b0373d6fd823c47efd769533322b8f97677100f2a2b6def19e368fca8bf2a2c2cff1cebcadcbe372e7e5e6defc2516db26b4acab0f89c42b4c245e79d689c07e8b57f1aa797e529fd283f2a03ca806b25a30916272f45d2b3219fa017c4c6262f508f898a404d25b1a9d46154078ebd1f6e07a7c5b6bf1ac8bd40687c122cd83070f4ed226393c3dd11c680eb44789e64095b6286ed58dc7be417af8e038ceb77aa952bd9cdf7a73e3512ee7148be094b96710d328348a101ae50907484f9f5659976ddb36aac481970dc41f9da494224d5a45bda98fcc6a6597df985c9232269b40091475587fb1ee599f45fa3bee469140629cd6985316939973ce1a3ee7ac010e99734e8f71ce399dcebbddd8cb3b8ac2ec98efa51c128dade0a994eaa8a7497d52a797db77945e4aa953cf38a74e51a8d36f5b6bd14c449a8f6953b45d0fbba8a35ebc4b29054149054af6b2a5309dd7b359e0841c2d7d487ddb8e24908d2a7192fb28d021456aa71b457aeab2988c0bff75799de577f33b67f442ea34a5b1a403251cc4a3b71e462c3e22177fc1905eef6da351e40e7a2477c8d05bb110c68a8519c3c4424925944c6f9d82425ae6c3facdb05938800f7dbcdd3e9779270d856963fde60c83490d000c07f0e18d22a59452bab45c4e1ae573e5160bd7dff094c9962dbb8b7e731a25c3dcd55137b21c451d139bbb5a8bdf3c5ff19bb7a6fce62c28bf398e62678f8f9b1e511f96c9335f48430738a051bed87514264dfe4c1bebe2e10042b7d9da2d479193ec25e6352de3893a366ffd4c5acf106d36b74df49bbb80e1008cf8cd5d60e840fcd6c36fde02c3fc8dc36fce0269141ae5a3512410a71b95a76055cf796ccea54e8ec739def390480e2239de497e12a0515c28128d229f6c7ae86ba96c55d3b657d6aaeb751b6bb75a2e5e5ab25aac164b65b5004d25b6206bd54f3576515d02f6aa56f92d65b45aacd51624e5d5f43ab09da20eeaf2ea73fab964c55aa7779aa7bbf75e6bafaef5b6569f6b0687d8cab5c742c9c5ac4b19eb1dfbb6da6aad6c67a96c95921f9fb7d53bb755ddd6732fd75b4fcf6e8f96baf5f87c9d5c44201bf0e9147f745edd866581eaadd5120365ac73a078c16ad5dd742c77afa5ea5955db2b793bab450269719cc7c2b6566fc5732e81086403720775ce2300b6aafc400ab4ad6f5bbaad923baae5e2a9a5da8004e2c9e8949f3c97df08fd9e042285e40e2a3d8fe3404f82568bdce179dbe6592df1693a4d2ea6171b18ce1eabc5d2212a448da048cc27aba54a2109445ec91d9473a19c21199b3c5187bc9240e60c7147755ac3d70fe5d5532a1ff6d157ea568bd562b5f4d292a5b25aac95d5d24f3692e0222b4422295c8c314e21e2183922f129851b31be184b1b309e17637cefc517637ce39c7346d97df1c5175f8c2fc618e31863c4d7898eb2fb627c31be185f8c2fc618cf7b3126c262a4b71e62a5b771d27befc5d389bef8e28b2fc617638c718c31c68b71cf79639438c61823bef5ed54df8b318e32d27be3ec7b319638d67b69df8b714b1ce7bde1ec7b31c631c618efc5184fdcf3da9de691d8e2f6b918d70b83d1400406f3863591a6a169e89da6a129cf51ad3e011f460f12752cf1a744d825844849cba287f71e4599f35b9058084bd34368d924a16593048e093794c3788442cf42994b86ecb7895c3d4808246cdb8cb48a3aa2e3b7f9107b687deb706cc80562ade35c059dbb9ed29c9cf6f8dc0c062bd081f14d884735eebb6d73fbf567cef7c7cb44aee0d69c1543ed49bb022b63fd3dbb23779f51a22eddebd839efdc73afe3f075224bdad55a9f934abbc9a49e72d364d3267536974d39274b86d55a2bf8d667079efa049f36b9dfebd839efdcf3cf3fafe3f04de3e27b1d3be79d771cbe2f60ce7da9f36ebe3f58afde279b765c7a964c5bd6d1872cbdc39ba619c3832c3d743bbf39a792bbbbdfebd839efbcbb97cb19c360d71d8af50846db3032ba58d3c9f6a48cf5f7ec7abc5eaf145a36333469c52fa548a594c2b4a9515463953ddfc63acaecd7697fce9691565668e42928a38eea76a3a9a179bdbc786d97caebf57a3de63acfeb60307799ece6a607172ba51075b880b997d22b5229612bb8ce030a5ba0def77a1dbd3e105eafd76bdbc0145eafd74b894a894a49e953388a54ac8fc5ba1bcbb2582c5665491008c6054addc84f23df5decd1c0c6c8d23bcc755eec59f771bbf8de9c61b09c96cd24d1759ce7c59e61a6ed62aeeb7286c1dc65320bb46a41ba0614391fcbbb3da3af2c239559ad1c5e8f170839707491a587352dfb31d67cace991e3c39ac75ce7791d0ce62e93dddce0b8ca2e8f7b998343c7e5429d9a640eeb654fd451854b6ebdbcbc3b699bc717829341ae6e5b5f09d3a9b33e118c7c7dfaa21f6b5a06254bef60bcf851c951535353b379bb6c9ab4cdc39aeb214d58f31d7a1fd670f7e29c2f0c269bbe73a28e968992a5c77cf4ee637d5ec7e1bbd94a674b04b0b2cdd55b1f4e6dc11aa9fdfa2205f7b280d2135c12e47c6d8079c03daba056ea9d04c3127ac84f0a3ee0f5432698631194524a5b8e60d26aab5b5badb51586ae251d07c78d0f68666cc8c06ac4c0bc5e5c5cb9c5fabc8ec377b395ce9651476f7921a607e9ee09767b0bd2487777d1c51a0fd2d17ab6d47a2da39452e9f945abadd6ca4ad19873cee92d4ceffaa3a7b7aca00814ccd7089545ba39e79c46a47440a45d9a5fb67e888c4930b42ea56fa01c22ef931cd2975b645b6bedf41ac3d2b6bbb9a11867b5bb5e4925832d62b51256abacd203efadd4da5ae92b9bf1ba5eb69e775385a5d55a4b69cd418cb296b653ba6d9df7d1edf3ba13de3a6737dff08dc907e3cc4229bd21e7b8aeb8ddddddeda4bbbbbb6ba28ee9323ba0b435f4d33bcf7bd59d5a8772e879af187ef34b699e1f8e577b9a7248bf6543b61e3f0c41fe40099a2ab904f4a5042b90ac3b1f724115e48268b8c8d2432e68e3827eba975f527ce1829e9ea7ad21286af5f2bdd5524a6bb538785d2fbf5e3ffcf0cd80f376b5bcf397984bcc158bb303436c1463b4e9baaecbdf3917a3f8040ec753aff7c2106185889b9ba720f59ac2e09b7204eb6a29a5b5b6c6b030181da2c986154c6ebc256ebcdbedf50bd3ace1e53af2a2b6565a698f1268d41b0e6fb1f084df30f6288d71b2f2973bf7aa7b20fd4af0c05330bc6e31772f77e517a98fc12116cce0bd9968c800f6c3b6ed503ba75c9a91b0945a5be7934a9fd4fac4ca3a850c8f4c926f8a8c44a69ea713305893cedb3176af671d389d652d8cda9bb73e70129dc3b8cc0586b29b9cc3b8e4c3e5e545c10abcc018e316b7487dc3ce71d8daaf758a090fd4cb39b77290e9f560303232f63a23b00d772fadd5565b431755500593a7af5d5f08abd3af045a020bbefa908b86124f589199e149123d5cc0884b946624aed7b289e3bdbe56eaddad7b82d036d3b308df836094a58720b48cd3c26071c9fa1c81c60f1e0d94e841cb860c0bd2af57ad95529a2755ca286928ad94562b5e40a568b251a5c9c6d2bdddb576753a29754fa85e6b06adfde1b45f2fd7182c944a034c8f0cb825ee4808ee885b827511af44010377c41dc1f4cc5caa3879696272e3e1805ae1b1f0dc750e0c37a2da7fc118755cbf4670ee16a36fe37c3b9f8274ce9c76baf92b53af965a6bab50bdd67584d65a6903b66cd95284a2803e2dcaa28957653755a185a79daf112feb2fd70bafebe5ea793f84e6d0e36527d3aede610a3e0f59f09b470984f3b005bf19f9cd88d0c8d7b88343c1d318776c6fbd283b4adafd8c08f2b74db200c762a44f2baed6523077922a45c1a28b352147f5b31ed5a12675a81e6d9e8f7c02ca1375a80e715455ba1fb2fcd961628701324471856a6707c88a8e364dc7083aa49f0294ca2afcd5b221c3685e2f9a1b7f589811397cbd6836f03e516b7dc168ac10618508cf9b69dcf626d7e569b331f172973930dc1ccbea41268ddbddc022d52d8882fa7516c5a750f6b5d64aa9adb5d64ae9a7642bb56e2b11d9d711c8cce8aeaded3226a5370dd25d0541ec947a8e3faa537b6db6aca5bf7a37d32f3fea902cd4eb65ef2615512fdf9ba97b43e4f0defc7abdeabfa28ee9ddd4eb7a19013b50c9f27a8581e379afcafabc18f66013167f5ca7b420207cf51c9443cf83d184b4cd64c160fd172412754c9ff1214ba7210b4fa9975f94ba76907e000184a73d542a0365ea2d81644f13b24702cd6a79c946839222d9237b8c50d95547306b91a0b22bcb60504a002b4458814531b28c52b16989d8f46196eaf12e35745734a1436c8a4df348cb864c3dc8a4b20b9bf4084bc2a44da589a7dfd4a884df47ebc8878fa732870a3dca44e450163da57149850bc8da751366ed822cb4508bd3c6eb6d6b22fdf3b473e2e7c31c64815acbd3663a2b067aef64a261a97ffa87bed0c51ad99d54f6b62bc2fa983777ae416e6b2d95a19285c95322b2a7d4db293802d90f797ad2c9ee5a52ec15e32e3642e72cefef011d58e539ef62f2fbae7ff76b79ee41a691af44e2d2b754905b5e0251c7ec3a69ade8944bb1212ac8a7f29cc719cf3d70e673cf39df7ce6034b90bd072a3de79d876ee4e3077260781d7b9036f215b45a66aa53af99a96009b2a720092d734fd61f0fea76add8b329fb763e63f1bff6eec642a982dcf22cefe227422ce6c5662c848d109fe579fc2640a9b3409653678121e7d22b0b9c21213ecb4788cf02673a1fc272eb1dcbadb3c06b9dca2fd6b967e4824dc3dc8c74359df4913f3d53e2457951dd5c775bd1b499de604804d63bde1328852451cb627208365d164d9f376f34c81e94e741d120b7477a7b09b79da18b72851e2d9355566a69f3b8913b240f3047c75cd6b2e92f180f89801838ab65caed95d65833e9d0a5d57a2c1668371f60d8f2add5b276b32fbeb57a78d8e337fb7561fed92cd8160c8b15d26f65bf9140ace79685b12d90fb3c7c01b3bf84f45b2c976fded9180fb983fbb6a43ce48b521b521ef251e121a407c7b13acf657697160fb9a3c542cf5aa08f96715cc7f294c81d0bde7cb10f87033997b1aec35ca43129cb8f3c7c608cb7291b120fefc1618a7970e00da6b83fb4200f6ae4457a38e8624d387d7ea4129fef5a666759bbb1ac14c62dcbb2ce62f986ad67cf0e7179febafb72cc62b158d83d2a17560bb3a44b2c6ce187b0fce5af968b63d0e57e9e756d2dec36b08db081a6cd7c71d95a2f508529bd81ae0b18e69c63e1e7f2ce7a9b14adf3d3bbcddba4e4219f57e9dafcdb2e6b76d6bd96bb629f7bb10c862db07fae5f9f317ef7f4cc736b31e83d7d3115e6160fbc6ebb7b7d929ae8bc777b6c52f49849d0936a99942004092102afbc29e51096a5dda464f916043d28b963e3a8270d3d7dd8403fc3a9a48592869a7e7a2ff1a02ee83dc91dd43bed1f0cb57f50d4fec151cfa4d5b77fa0f481920f967cfb0739ed1fecb47fd0d3fec10f4d1a11c8a5e1d240b3e5db69aee20fff769aa9761a241a2a344c344e4d8b4734514d43e4218dd1b7d304e5f0ed3442486aed343e344a68967c3b4dcf8c154d0ecd4ed4d4b7cf28b5cf2c35f54c163d11cd187dfbcc4ffb0c50fb4c50fbccd00c0e11c88605cb4b0f6774f8f6199f199d199e6fb75165e3ca86d4a46d529b940daa6fb7e16423ca86d2a46d56563696ac6c347dbb8d23a06fb781644388e8db6df4b4dbf869b701d433e9f3ed3682ae6ce87cbbcc50bb4c51bbcc51cf640cbe5d46a967f5db65a8f40c7bbbcc52cf386f976192796a97916a97a16a97b192312202d9a06c506490f87619a1f8e3c6b7cb289159f2ed32399326736476a64c8fcc0facaa691b12d2d5b7c39e266d5bda966052db128ceadb614d4538f50c2351f97658503b6ca8a867b28723980f4cc9b7d7b06a87e5b4c376da613d5135a6bebd86527b8da5f61a4d3dabf154434a04b201b10151438a6faf81147fc0bebd06510da36fafc153c3a786921a4b6a08c5584dda16b405d5c8d9826aec7c7b0c15d1b7c754c538c544c54c7d7b4c53cc518c52ccd2b7c708c510c5187d7b4c504c4fcc4fcc558c4e0ccfb7c358c13cc148c1507d3b0c1711c876643b02e3c5b7c338c51f35be1d860a0cd3b7c30cc110c114c11cc128c12c69daa6d33a42df0ed333695bcfd603f3b3f5c0007d3bccce936f87e17955bdae6074befd45f56a7a3dbda4befd85f4a2f262faf6d7d12be835f42afaf697cf4bc96bc9b7bf7a5eac5e39af9d6f7fd1410462ad587939e3db5faae28f986f7f896a7f617a717a519a34db349b96befdc5e805e92568d2ac94d4cb905411144b7ab67dfb0bcf8bcfb7bb50b5bb58b5bfe4f4ec65c729eadb5d8eda5d94967a26a73409b9107dbb4b4fbbcb4fbb0b50bb4b90cb0c11884d2209971abedd8527fe80f976d7958bceb7bb9e5c512e291795cbcac5d4344bd436d2899cbedd753469f6e8c8a574e45afa7657519251cf5cdfee5ae212fa76d74ebbaba7ddf5d33389c3b7bb80aaaebe3d37b5e727a99e491e5021652adf9e83daf350cb20be3d1f652022108b83c5210bf1ed7949fcf1faf6ec93a75a55adabac93795a4d93667fec4febc9feb4a4bebdb594c5b7b7987ac67d7bcba885d42a6a01b5825a3c1eb67c3c6c29f9f6d60e8b8a65d5caf97696132b8a35f5edac26d6114be99bb5f4ed2c2722909a461a2c28be9d65147fb4be9d25c422fa76964ed3640e0fcb87f5c30262057d549366736cce6715b2a4ae4cf58c32397dfb57d4fe1d29f5ac6158fa967c42dffeedb47f3deddf4fcf3ea02aefeadbbda676efa9dd936af7a83c2b1148d5420b2f8b6ff798e28feedb3d248fcab77b41de9057e41d794a9a569d9cbc25dfeeed4c5a9592f27aa4bc9f6ff772b07cbba7d333976fefa63cecaabebbab6fefa4ba250fbba6efcea843faf60ea8bd0b6aef86dabba28ea769b42aec7c3cec947c7bb7c3517156cee12002a9405420c6988a3fb86fe79c9a2677b8a86fe7a8342d1e71dcd1a4d5a019f492236a5a25ea4a64f4ed1cd0a4d5a3206ee8dbb99f33be75389e6fc752ed98aa1d5bb573394c4dbb4fd8e9db71513b3e52ea99fc62e93e51f049e8dbf14e3bee6989c4b76320fc420442af5c89e1dbb14efc51d534b9d37ea9344de65ca6ebd437aa67fded57ea4e35ad8d9a46a360340ae9dbef50cf6292185bbefd12cd506bbf4a9a3699ee5d123399aed0b7df9f9b3369536ada488701c3bbf32dd533d5b4b9e4359754bd8073c976f5ed9bd4b6b4357d6f4f464da3552e607891de05566d54be7d2bda8026ad067d833b43dfbef51081d017e80b3e7cfba624fe984da33b3b9b8fd3d3a47db5762b3569b7d66ea9acd596b3edf46c69d2e8cfb44ddf6e9578bedd52e9d9f7ed96a86934880659231a6491bedd0ed99f49bb5497ca025daaa06fb73a4da346d4c8f25023ebf3ed36a74a4ddaa4fa59f4d22b53d3e852dbc825a76faf45edf5a8976a9308a48ff49125bebd12c51f4b9ad63a3a42df5edb2b4fed99f5a702d1aba6b54ffb549d6fa75293d640405440d4eadbe9d30edf984ad39a888889c8496968d25a49a948a99d2a695a4735fde959cea4b5d5b4917e77ac7eaa69d367fa547dfb5c6a9f4dedf3a967b207b34a042277883be40e567cfba4127fc8a749254a5eb64fa039836aedb368fa344d0ab58d742125df3e73a6f49d6f6fab1f7ed6fa964bd25ba9bd97dabba9bd9f9aa869f2a96da43fb5f74f7b03b577507b0ff56c3ecfb7b74ed32415cc17df2eb14420307187f486b58d7498d3b74ba97649d52eadda3ba76751f10752d3e21195a6c55abb2c9a34d994b5c7a6f508fa9934216d23bde9a54d9a4aa23d024d43a186b6c209ed28b4a7d0bec24dbb8faec1b793d0dd0e93112387b7088a94bff4efbdd7bde6520165e83d98f7dcfb70bceec3b93348e4f0fabcf499237278815e7a8d2272b849b552cbaedaca8a1cb6d24b977eab7a4677e20fc9f3d3b338658ca8978e95f42ce6e0a56320c74b9ad635e978a867710a15162f1d1349c746f14a42711fcead31440e37ab972e8325871bd24b9789cae1b6f4d265b8c8e11624050c38fc768126673005d1c393319a6a9b18667c71e585d0d316285eb349f1c2187fafe30fe76e2ee470d379e9f8480eb71ea71cda261be4d04a154df1d6e9cdd661d6bd465664c46f4e7bf601ce7683e38c1c5aa2978ea32a87f6e8a5e3f82287f6e7a511d77327f93a935111cac15ba7f7c3a93737ae72c8322287d5e9a5b3847258a5a8c8610d7ae9784a0e2bd14bc75272588f5e7afc79faf4940a2aac1e004f7f26adadda46e69e452a8e98f2d443685a57a3be81134440a448fc219f02bdf408f6d513396caba8b7e0b56a99fc4b55e551c4a71f5eaa97de5633c78b187e3abdd3f374d874973fa7e8e2ca53a73d13c0d32953450edbe7a5cb54c96103bd7496510ea5d04b673dc9a12c7ae9324c64992572d8e3a5cb34c94b1fa4314c666007f74a0ea3140a37cf6e89946553ea0dd69a28af82dc2243b61ffac757cbe4962f818c3a9a0c2432d250cad25db6909293cad0a93246942c9d7e4c0a638628b274d7c72432a6dc7bc520dd82c122279591e4a3049864a944961e93c8d28d488942279b3a76b707991da3145df7ca21bbc92193525229698c51ca08e628398259fe20dbb30c728d85377a06cad183cc4869cb66552919f67adda4fc80fe0f8020470938ae945cd3b2e817ca8d4229e82dc377b39ec762cd98f0d5acb33e942dd4aec4c9d1b2ecd17e2feaf08b9423e8d14a29add6d6f808fd345147f47b4308d2b2f820441dd163c4e93142ff4db7b142233ff300fc2ac82dfd210b2f4158d411bde59a22773efc954108f2f2217738d66e1fceed29657b95543efe70bc9c2587de739dd7fa703c168b2539bb553a7bdb64e458b10692cecb5fe4f0caf80223c6cedda0d7b2de5834ea882f3072cbbc06e50e5d943d69b5ad6ec916417a6f57213fd296132e1f93c2b061e663521954f7957b16762c7b34b096fd7d229190a1e231c32456e308870c1859fabc81e329a67a38b6c0e080a185afe062e4929073b2a2482a1345de94e8b8fa514e974e2985cdd8cc74fcdf77924a19fbfafdb23f13b2fc192b41cad84c09f2bdc72f6335a264193303e9d67c04bd037cc7c55ebeeb3b96276325a85fa4563a67b76c455cbfe33c19c31103c62287b7fb3220bbcf9314bcd326ca58975b26a4bd83b42c86f43d22de47c0c81bf9d8b1bc194610f61d25e2c54a409f08cc6e21ede2dd62c70a8dfc8d3aa2dfef62273b2ee2385b7eac16a491d9f6aaa33ebd8bdefeb32786c2a47db4993e85ea8aa8c5cf583b53feb44ba3238904c6123f6f8d86c2b46997404d5ba16ddaad82248fcf0f0b4d23612ae908e9e92608f97e82f1d345d03458fb5cf2d16e73c4f0d36f9ab6d568cf72e6ccb122e829084fbd011f0e359a3c6dd32ef4110758e860072e4ca5f18314351d2857961062071aa234a9796f851239f5e104facb4334458d926ed01949224415398011054a1329e295d50d4a5b987c78b0d245c87b04735582e080e0e413ab0a25a62a43bff96b7358153bbf39cde60cf870362a553c759a44f514861a4dd262450a2ab050eae147a94910a5349e7a08244cb9e2a947a002530cf1d44da02e648aaba7be8113a8b0f2d445800215239e3a919ec59efa023e1c4ad5cfc9508619503c602a9a418d1b63082d84c88842ca8e548d23222907cf39081f0ee749481e3bc57e6f78ec1e8e8287c7533c768f02cb63af912135f1d87360bf9152c363ef811d04294a1e6329663caef1d8817c38f87abe0ebb51d0f0d77f7c38b7a99aca0b20fe65f62fae800fe7c58b1a625ee881d318554e34f1d94113379022891b5cf922ca10b40b2921ba38b2802e9e20c053f7f1e150a77d38984a57a6af574e50404270504e1ff38d5d7879d95e7107f21e81b981120fe3303efb70606e023e9cebaf32fee53d3e9cd745c087b3e9f8172824fec5797c382f18638c31c618fb013e1c8cc5952a9ef39b0f87bbd4334df294524ae995299efa8e0f870ab5d29314f7554e1aadc91aad75bc2e2bd0cb5ff9e1dba955cfe253533b5d6aa74a576408ea59fca08f5c28b962f5c219405419a2c671e1e4852e826042c411b5f65935a9ca68ea5914e27bd084141c8081058d1882a8f1200c309a18d2c14e0f64506b25d6001fcef5cdefe67973d876c505bfb98e0f67c318638c31c6d8737c3898d2272cf3a9cbfc86c713d4532f4050d0139377f17771027c382e433c05c1c30b2d378fdde6c3c197524abd18e3a9cb3e1cda3bbdf33ebccb5d3e800fc7e5a48917c0481f24dd9ef0c4aeacd88288a61c7830b250ac9091e48c1fa024416c7ee4ce26b2fc751a44edba9791f8ebaf9ed1feba003e9c0bdbfc6e9e37876d4d04fde601f8703629453d4429f2a2865a510e846a3078ea3d7ad683892a9e7acd87437d60bfd83306e271d10e8f1d001f0e964af2d9b3831f4e7e72d59247f2c89329783cf6d8878329a594ba7f3854e9d240e95b4e5b8ee3c3690d4103a2d719535e4092014913326861822974b0d4c0c90c535c5832b10b28a6010c9e3a0c6a942ee93cd5e2e912174fafb8e2081a6071c4072c80aec0820c9ba77ee3c3a1205002d292e34316533a0d382289093292400db1440dcfe0b1bbd563ec32ec37d87d600f82c6630fa167dc6327017b05b00be919021e5b51c663ffe0c3c14f41417f24e5594ecf729a0f8725f4c4122d013481e28c3064b802a2880018f1a013c553103140e207b961fac4134b063d391c14525e64904243cf114a8088410641a26468523503215c7001e8b28e9c7c7bf5e959eb23152e7868b283832331aa4c5a8c1a0309d3969c245744d5da6b50cfda876faf433deb9e51cf2d6faf484f93168fa0b8f22da72d9ff9705a5070f1d46f3a0636a215cfd2f22c97f97058b7072570b041930e39e43083da9dc1ea0c18a2506125882cb51b83bf39f8ebb00fe7da78ce63d2735ee3c3e12e0f358c3d3bf1e4b1bfb0c364788c9f50f2d863fc6e9eb7199c50e23787f970b69d9dd7f29fcd7ffefa703ea32b302e621461460c37706207a824504075e14393145433740fd4b1348af2d869cf703cf6970f07dffbd42ff5dc8591134fbd4646fd86ba0f6ad4e4a9bb7c38140529a933de3b7acf5d1f8e97a5882baff2955fa0f1c26ae2c80daaaef0028d24583cc002680b22a11844d14a8e2895cae28a573af8f085142d5090583103634707e8081ed058e2e1699b524efce6db2635c36f9be70f67830d51cbc2e42994a759aa9e7e71c5536f7d38d431c6ce0240969dbffe9180c5e83ba79d7b1f4e671485c4b60027189058628a8b221d8c141551994207264c39408241de6494159f3ca23e3da37ee4f62c266141a24a9366a448cb0bb4f831028b2daad4dae9d2a4418009a3327a70c11136b052eb1da4674a45abba67d26ea29c9e5b7acebb0f87bb936682186cb0ba32c3ea0569d4b0e7492b01103a5881c2a10929a2a8e19fc74f901e3bf7e16099bf4e6e7d4a819d1b34018413508ee050a3467cb04c7185104788629054a33a40d18443bde6b7a824b226a5af4eab5f2d70f8eade142dbaf8cac5d72d9e7cb5c1571be4f0b5561bcce06bb5010fbe7a08d54970c2e2ab4780885a75137a96e474f5d537d033fcd54fe8594ce2e285af2e829e7d38556a88a626be7d2e9941516922f5acba04cac9c971819bb49cc5d453a7d46f94a755acd4f0d45f4abc88a75e936465cb53cf31c3d3a6a41a6079ea21d0a42c9c78ea11e8d98ea74b3ffbbed65add9ff8ea35b249933995b14411395eb8808a5a0d622a071b78b1c305d40fb5ea3e7ad6397c654ae26b9d6a9b7e2dde002e27399c40df1ed62918fcec7b3484ae989aaa02638baa38258494284d96d83046168dc3b7cfa34993394a9376b3d433eab4596b9f5451aaf8f65935ad262d4a71d2c1053c282a632a49cd48500f530dc4d00107a6266add332990acd13c8a103f8025d9889ff234098a1658d3db1c0dc4a08b93362382045245ce526d47534f4f2dfa9d31613a750ab22093a07215549b60eed88c09200b9407266a2d7180a18aa35ac7280f4cd42eec86e9f2a333e04995a3da8c793bd43a196394b2b262ad633bb2889253eb5a3eab30028b9c5aa7815443512dfa9549726a3651d4a2470924d66e5c7122f2a56ab904d21fa948f1454e2d5aa945cf1e7fccc819098a50dba46a3128d9258572a9fbc768d35eab50cbe2db2453c2b8f25d8d2c47adb6da5ad3b311daa9a6d0ddddd6d6158ab44c76d76a46d117e9af4d698cb62c24e27d8e9a962591a787353fe78df13595670eba5853ddc6c7b7608cd443978fde9156c1186da45330471be99d0d1b34b46c21a5a80acae886ce0d378cc12489283a5f4c2194e4871e984195858f1b8e1c31c3851ebc90610a185f08e548f990a40aa0266520d183177410b5658c30620043135049f0e0604487862655543cc164658303a00889a183209838c34aec420a2a67a4b1058727292a78dac2278b2124183829b1e2c91254605cb133840d31c6b8210c1728098222eb144dd1b49304930d8cbc50c3174c4831a45425ca8e23848e48c202092b3f18d881628a55134c55746024c9942a8ed04116558e7cc8e24a891d2825d2809a410046425396703245185f4432c4c881892b1e7488812a0419969000d2020616313a2457ecc00a26aaa2a4bc5c11a58a9325769e98a84d8ff9841f1cb858424616a6206ad36fa4a5e08b1c6e58c2c244cf556dcaae56ba5813e2a397562fa3f792a65daab67199911cce00ba410f40dc8006216a3998ceb862450a2fa830a25ff0d1499834234f1c71460f64c410c51560d4a25760d262193a4d434f40604145935abce12394262e38559144091053b568e409149395a8234f4652b568c3475fa1672e4fe3a4d59c2da2dc00c45303941a01b0285581060cb0fcf0548b3d1f47e0e387ccee699e9e6d3badd3395dc3479754932600a0232eb88003932ea46ad1a5d4a4d5301d81852a0719102da945974f3d6b1a3e1a497246174a8cd1e40566ecd4a2cba5494b210cab1a8c91831fa6e0412d76928f2e8fa2cba2e87228ba0c8a2e8162cff0d165cfa47d5138f144c90ec8b882a5164778128484961824f1a0442d7aff00f5cce523759a9a1c3ea883d0b4568d7a0811304108f50d8880489115a8b3d0b44f87c7e7670bed5b224454748651d32e1215a6262c4e4d73a9519751724a56595197574da33a3c3e3f5928691ab74488a828c9a8692e242a4c4dd4dba9a37aaaab7a6645bdaf9a4675787c7e8894346d5b22445444311215a626ead36946cda95935ada8cfaba6713a3c3e3fd4ab51a74b9a766bd4a95053225a449d1af58cf5d497fefecb6c75efd1d36f7df4e852fdd26da2e121539f4b2ffd3af52cb4bed433a69e4df0565daa9629c130f4d4e9cd4e5d462d78abba232e95158e327278a9389daffe7d38b5bd4a04729b34712bbedda9c41f3cbedd8d1ce9dbddc795f812177222cf99b45bb4f3d77bbe1d8755cf62521857573d63454d7d3b0ea5a5a69e492a4f4446df8ee3a71d07503b8ea09eb50b8670e8e0e0f9f61b52ed37a8da6f58f50c47ce0d2c11c8b5e1da70e38b6fbf11157fc4befd06d30da76fbf5174c3e8c6d10da51b4b37849a767d7c88befdc6cfa45da00b7403e802dd08faf61b3d48befd864fcfbcab1b3adffec153fb0752543d935b585161faa356a894cbd7eba294858ad10820000000f315000030100e0684a2a1304cd420a81f140010779c5260481749e56190e4300c19648c21c60043000400448466b60900d60d667591b1acf28e8bfb18818873696479b43cdd9472af7868a072b81591c741d4ec14518f1c794428da7dec44d76ce48d3126050b727802969d3b6d58e43ba7f2410cb4a2ea2fd27257427ee36b69acbeaad06a599b742b093dd89710e93a10613766e91103d42927024cd6849a608563bd58ef726c337cdb7e1e9b17ade009901c22ee88d48674dc5769cb20d42caff287181715d4a74921136d79ad24fa73c82d61e148c3214f78e8bdd9f0f0e0b1f4011263068b445e18b23adc9894e3a3a1ec7bbbf8bb36e77557adb9607a9297b16a4060ca2b843a407020b18551d67fbdfa490a3b14c228042034792ce97c8d9ff3e40e9ba62468068444f04a55d0fa6760d53f133b9e382cba5b54184f55aa004b23913701dea3164830a06ae0ed5abbb9fca9258d892e4d8306c680258700f71e89cc3cd96f49c1b84f63887a9d47fbfedd5149ccd3fccce65a3d0a6e8a635b296af92913c590b9605c906be0987e989b7c7327d03d31aa9043752c632fcaf26b6eec4dccd7ec444b2e084967add4c6c1597e170f8b8722141d64f165b7c33c367bb8399f127a418f9dc16d70c34b2d28a46330c05157c1b438413da0869b4307464ae72398a59ae93f4e779a0aa285c64071d06e2a426c65e649f8c571ae9ca90d9a6aa7b324f364b8702255ec6984727f785a4792a631555928c424e78ac5e70081e8b2215ec9b2353d1f6dedc1b8008178a8147cdf5b846a356ed41473e8217ca779ced34caf85cceae1af41fc9ad5d84da1bb19df35ed50d6d5be0ed5f3bc5b8b6a1724b6a45156995bfed8fa3aa49786db89deca5396d2e65a0e2e924577b8edef3021b61316eda96a2c33dc49b2db985ec539b344f6f5b233b90454a2ee61a4fae7c8fb1709416625792ae77566a76eccc53323397190446ca1e1e19b1c6ba6af496131b10d9e07958e77596c45f129939cacd19c794bcddddb9666bc042b8388b16169182ca60b90391b117a91aaac9e11a8e8094094c75f3fd25507d7e14fc9458df8cb38b23da495b9896c2657284c0e548b873eab045c7a972f2693145794598dc1ae07846257d39fd5745a617674f63b0a406075f2e7d5e4216de5b1e6db062097287d8390467c65432a1d019e226dcc93e90afccbcac9757f0ba54e42802967b5c05d53f33be055eb8ac514af48267b219952acbaffb32224a34cefcae466208d5bac8c754fcff0a3ad3b0658a7a47a78497eb390178d7ce14840442a28af739c0613cdb067d80e6dcf1079cad4b0f243ab0e2e5b686de1f3e986002b504b2e5aec77e0202ae7750b8dcdc40e22506f0faee97f6ad7f0c79586d2e8c902df0fb162c239442ef07a27e8e8b740ac2a2f3f2716879ec314f2d35fd54d95bd4763296df7e8792a9ec139c074ef4d6c486073c3ab6915c84d5c7db131552859e8790ba5f46ac5cc44954e2efb467a7d7db80c6c1b9c0f5ffac293661fdbeadcd85daf4e9dbea8549eb01213f5b2e95c073c886d27012cf6ed704a01aa81d275e0d12ca7b17dee04b4547d52e050be2280add1587284145bc9514eb04c682180d2178cc4c402e2122af49f81424e27badb6e4159b6329cece2669c841caec014a78387025d9b5f8fd3e6d2a48523a47e611e66936c2ecfedfea315ad0d10715151f4c40459860de5ed589afd21dc23961301b4f21bd40d5cf550e94d563869145b68eef815acc57c28510b04ce6521343e99a9c39311672e159ab66ba3b5adb57e0380c9c5e14d87162fd475a6798d82b05c148941cac139135af26ef33b5186afaa3fc03f3ea30a25a9adb2c64a0b4c8091c08ade2834a8e38d8abd8522b1ecb445f16da81152c88526e0548472dd65aeaba0ad6bc591b03ed6619b1c41a9a45bc3a2f0b12405f4f6d04559fa738cfdb856eafc8689ee10b910c2a68f8612db9a04905718eb962e99fc7eca2b51bf3bbd374f39a700d2897bc3a3ba2e7c4198587c7b48468b2e8937570e1f952a5d9740f482c8247d91c299f7cb3274f766a114bd313587387135fb25d42c5d47806b6ab304e23121088519d371e62dd8a1c6802b66862b517a1ef871eabc96ef7535a391ce28872a3afaf54b55f2581b1c440b420511638b72bcbefad3061bc43cd8e947f7e3b8bdc61d23ca151d371c956ee057d9d5c4d9e89ac6bce203a236a43efe96a4b86d91ec74e780e942fab819eace23aea1ef0c341782442cb71b652297d675faea732e61024c07ea6681083ed407435fe66c3eb808eefd6818ac607491438d13e5c9400d24236fe838d55475c500d93417806bfc204947b07bb6f4198ab26ae9861e340871b32fcad11ae0be7282ea895af770f26b93d5c18fcc704aba5973be7320c1c3c519ec848ece50ae46eb8e5acbee20c114d67ed658b5e2eb7fd194395771480e031eeffc3034b869f6a3d33e11f3a008b7982f907b768659f920b985cd5367badad6e750756ba8c3868ee998ba3dba07defdfe2ec76a689f12451218de4abd494dec3eaacc887c9d8e446aecf2132f2564f3da145fa4964484968b62199ddd06d1900c66947d8d369b4a30966181fe27a0cfbf175c36f0954db8476d97148b37fb82d7bbf6f4ee18bfa506b85725a4c0b9fb7d0051d466caa7aca34f101048378af876305f7fa7409a9636ffa1dd20a5b353b54778309523ed1e448606a18cc1fe3a1f7d0bfe9ff83b34c3c9d26dddc052e8fe98c6c2d58ffabd0b466c4059481805895968f953456c1212461c4ec98b91a444bf760694f56f7728f8bac0697917956d15d03745355ffb0510ea4b627af923008350d8fee8fef30b6a43131e7f8ed1e9fd6f174364ed4109711cadf49ad8f4bbda127b5b75d5944a4e7c615262c8d691eda0985bbb572a126609e9eb45b24b9396219749125249bb63c68ae1612fc0348764a4ec9d066e1c3634212cf2a7364e015ab76a2087edc42ed9f07b658516c73432d11e7b65b2092c9e1f633040f8003086ff98b6b64e71dc4084b312f59af907c7418b827d71d7039619b31f8b2a15680118f002244b33e75c423fde2017533f07dde82940a733b9140a24aa649cd02098e61cad5660bd6247059d4ca54123c4c520c3bb58433e43f48b6e8bfb5118238277f886d09eea14af334ce781f643ba8a755c6f74772f16714ac76c4f8123c41c601bb4dac275678fe6a6c93930d1246ca103ce189a2d1f81ffec9e471bf6cf9fe54e501bd87e2e831d68f911e6de127d9c2bc2b2056f6e727466db58e0ba147d9a7f7141a524f27b8c2e8659257eac67ae5b8c1deeb57e8310e72d29c686fbf42190aebe34a97cdcad42b071a6c199736eaf5f692a095f0cb0958c77a92e2803163de65547453d58a7f6e13bba7b82d655184724af2120c8d09f07da3eb0aeac7af9d471f0bd11d5cf1936dc3caf3cc0be787284ff8ce94c05c7c0b8cc88c75dc196b9456648ecb40938f2f0b4cddb451471ed53f2547c76a1e44f2405030312a34aaf660577abc5cb4db566cc3c4884f7ebd71d39e62a22c6736ed906e44d986d8e4426e123fce60c174bf2425398f8f1c2740c590478e060f1f740c85a315be26e8363d4d59c109a40849047f0df445f3d932bab7b2bc13453f64144c5bb05c62fad9757dcad76729edeae954ccf772d00603ae24a7a678216a670d17ce14b32ca089c5c540d9dcfa31087f03115a483cc7701062cff4d225b947b0c872e46836e6b9a49f490a111f87d53590acc83cc957a84e3814a6eccc0bb3b9b970ac79b1d93fcb2984e1a0bf9f9c00ca20dd2fde55af48bfe4e59c3cfe1f5ea1168cd17d9e6f8cac1bf3a699818d64de79401f1b1f6e3f16052b9a8ccb769acab6cd71fbb835f111293602e968de4b15aaabc0c6507789e80dac7ff0b35fc9b6643f8a521f63ee021048f1493d72d545fb36463e61c77cdea53b20b43ab079006cbbc3ea751e0c169cc2bf5c6693545b010e70176d8143fc35fc0b3214eaccf853e0f5e5d3d811178da9077a3f492ddfcae4b88e682b66b2f313b4b12eefe7124c64c875e5e248af9c390f45764044c9e5e4ac088e38e016a088a2820e7bd16bbab1a7ed6d06b309e5a8de17343167b7ec44aa7f484b32d830337e5b40ab8cc27ad0948d479571fb0c91d0ff06a3c003c8c59166c63a35d1c6e9ab6ef43412d8ea75632d0002a5c4e1aaac52d8bc50026de9f02000261b1890d7a9635205d76bca03011273f93338bb6231e1679aac3e29f2a1ac7dbe9702d50995c2ef2272ff2b962ceab8868bbfc3b32526e339908aa7cf5631fa085ccf2c92ac4f699066dd75608f81b49648af906f728299c4206578cc8af1558be56743f7ff64659a0ed5eaef6d4d0da86bdea0577b74a72dc799f9baa292c39aab0e377ea2c0f0e59337030b78e0d3ad82317a2ad7a2632a93a5b92aabf0c45af542688569caaf18d2fd504e67736aa98ff57d213dc54c1c608e3b0c4719e4f173f7b87f77723cf09ab62c5b97989c2bdfa52bc316b47085632364201ce033f3fbb48db6791734ca0232d60398c47ad8e0d8858b37df020a178f0b600880075616bbe1258848a73f312857bf5155be1fde76f53e39ffbf48ce72be1bf7934114de5bc50f982d2f48dcf0f11a1078cf38ba0ceff0a0e654d3ae4b352efa60e85f2f14c4404db996c07e6ff5fd4b5b484b01b0fd5e13aa66ebdc4ad1e39ec935884110e9384088e514370fc59f47ecf9e9eb7c477c2507ef304b30f33196875405d1c89e974784623e5a2b8e0898f3950efb13961e31ef63d6b1dd96dcdd8b497186bc69d52500d3cdb50bc9a0ad38c54f410a92aa6445cce1ea7fd32790e7ffa6a44327e145b8bd447195e934089997605941a1c0f42d9b2c275956eac7c6033e3f667908440ae90260f3fff5eb3e4bd3f8107928f17600b7b57e7e56de9d391a87ef137ee2bbb48f0f297313e44a0eb3a4e0352a489102eb19cf2a71fbfaa991dfb7ed8c1c44de2ebc84f2dedd053931a90a72918108774b65e8ca708665238d28714e3f690a2d0f29493e080bf8fee3369c3e6bff3f8fdc6c325a124ba0e885b950f19245b30692acb241a79c2c76dbb28f79c53b42570996d52aa303bdd146673cdda0204b8e4cb5ad1b2bd296ef2f133cc78eaed51478a07cb9b7ae60d14289e30b7c36059d0ffe5ddb9bbc98193bff8321f90e69199ebdc31a3063c171d79a8d389a3fee3df15355b2099213f356ffbe94de7afd327e53a3df3a7a4b62c273a0d8965076ffae9cca6cd5553290b7a676d51d050177072251a26064bcf615865dad213227878890babf694243b265547c03f0115161f14f751de4261fbdf0d609d86705f7d8e5c40c16c390519d4edc16174f3d04b2b3851356f17179e53a5343b114bc1e62083b5b3f5bb9a699fa1a6daf6698bbffec275f07348728c4410b5fa1da50674a8d6711154dcb486c10ccda60b13851105811b1163f5864f0192c802e8b6b314ad1a672200c087b7faa124dc09dde6cf7339f6c24796624ebee0da08111368bbc147e8953868f110694330ed4d29a87205aa766f6a6a5ec4a8a46a7ee07e384d24c2e6e2a729d833ceb8a569556074669b378bd999521892d4221939a386cb18969b2c53a0cad065c56c57712bd09893a7a95177e4740a62f3ef1ebf1402bd0d7c174e89a59d08a039a460fc257b5ff8aeaa1c3525196ebc6f21a846f1acbe857a290b71a95fe7f4029e5cad1d1a79bad9cba2b7ede8845662c8ef1f962cc135aa89438fa862b875b2fc61be3666911e56ae2d67eef833f8bae87b6591c919e06fc78ea2db0994cb131e1346d8c1d346ff651164df67fc705da872a8b6029b9ce3cc67a9f23e4c1fc5d2b4f6d76afc393de3c72f34636302cd38de54a0490a5ccf59557129fdcaf80dfcfa26047e3595fa37c2df1c572792491579edfa0bdf5d1727d548c1e2c0d541396c659cdcf2294ece3b80382c97fefb427cff10826d8e08d6f713e4da133e4a7bec547ca2047353d8b45f07f80828bbc9f6074fa5304e4df578622419091db6d2b4e2852ec3f47e421dc8a545a91dad43ba48d6503060ba453989e1e3745f88ea44d1440e6e2465a795f21fc5769884149e9c8fbec937896d7d4bc838af33945a1a8c333fa8d2646bf746de4b73629be60c1f606cfaf83b755d1be618668e1e9089f354a3811e101a90eae8af20eed0f8c52f76ff5b7d2b77cfdd8f4092d191426042c8c98ca22fdd57ff8b521c82b5bddd8efd92b40fb579a569a8f1dc3b4d63e2a4b7b4bb7dd2594ca2ac1c90af314cd8ca29c1f851cd1d0c90ffd21d4e25db5e1cc75f232ac28b587c3f53dbbed685532825cafc18586a074203e8331d867ebc8e495eeade0688a7275d0b64d11656904214709a7c4941f328485005d3a9c54885d05df20c9b55789f7d8241cd553763b0232fc75bfbafd0c98fd5ebea5c3d7808361275f4c1f328f59de3567d15a49916cbc7a3959511be0b84ad0b170bcedc041756baa5b0cba5dcb30871bcce99b4b564c3039558bc3db25615bc822e0738299d0d0709d13a732a1c02124290b26cef6bbbcab4b45843b9bca2e0f2d624d8f2b5bbb1cc710b43430235cc0ea2b2ea915794a07e43710fbb9f7b52c0d0b403382539ccd8a086a4cf89d433bdfc75328f0525a933934b5cf0c4aabbd1f475b62b9543fbadc9527ca6b71379824f8891324a2c46dadaaac7445081f68ec3d350422d38f5986a04db4b0c542025b3b845e8aa0b80175af860d21ddcbb00e57c6476eee4f8ff8880a0bcdbf3611c04c65cc895063b4f9659801de1a84233e40f68eaba98aa80f9bee83560b30032f9fb0e09dbbe8ed6793f0d01a16adb8e9d36dec7d826a8489252696cbc5254876e8fc8181d81ecdf4d6bad740f12d2400f62abf9bd32ba3ba638fa8ddde5c249efb84eadf4279df5c0882dfd62c382be0c4901e0707727a8b34e02492352ec1120fd8c4ccbd746e9642dc0331a58e4b0c90a62f5154be817b7a727d8cc60970e77e0b6d956b0d105dd4d2ab1ed6d56f3122d942fd92078316d42211fc49604dacace1148833b3cb8bb25126f7bde7edbecf02e7a2cd6a034a8d3fb57ab3360f4d8bb7c61504479af62d8836acecdd3898d505408b981205dcf3a07677986ac2c7ae59ca0a9c473035c0e11f7b00ae9fba1dfc4f189dbcbb47893c89b510d71f2e8f3a710af18f3f783377a4534d6f267392411e007c016d3443ec763709eff3dd067b09ddc39bc9be059d8c56ce19893f3c30cc11114a1ecf7c20514a88b88fee5340d38a0b9d63f09c8f8356c28fb3ef8627fba79446afa195335a89f43e3226be2cfeceb1c3cd90a91356ec0312555a5aa123cb5e98f8f4d001824ea5ad0c142400e0bba4a884efedad961bbad10414612b5c201e28a63b077cf2c1d24ff14c3511aa88ca7b0dd115530e62d8dbc3fc484115d3e22d02b627f487d0c5925b9554c4618a164877888735deadb5ab35d910aab83c151a9d29f9f97ee5193de085a3c26d0a70d8e99524128dc80e25ad15390a828d12d81402b144b48137172e2ec99a188862d06b0b35980bbb653d6dd129f8384ec019db0bc838c75fdb21252b3bde17f1bdf9bac8675a162f657f0196566b03b1912b9c503f4ed6176b4289721690efef5c688701e523808ea8ce7d93019bd877cc668e3acd6c7aafe2698c389d02dbe8b4d9ceec1a285a389223ead38cc80699e62abcb44a49e0f8b68bd7c7efcd1dfa598b736c7fbfdba7ab4043cf0636cd6be873d9bdab4baefd95180dfc3c6d34433f1cc3e6fd94fdd39c469eafaf5f877fee7bffc8bbf207f4520d518d785a9b1c91ad1afa76e27111822143530b71dc2cfb4c2b2ac894318be366cc65e8d5cfc28553b68c45a421b65361833e05719b34cf93e87c0c33f9c9e19305b87bbda03ac43b7dfd6447260ce460374924a0ead048a4e507fd42ed618f3f2ae0ec1d3b8ebb695589ff0752dc768244f81a149b05a1c09665be1732445a9502fd77eedacb8491c41cdfaa2578848cb1231d26629d8443682ff88c0414d5010677d900abe0ee2ce53d93eae3f72a5b6564c91f079ea4c0820dc8fbe00550241fd35b0175a23d9034821e028733fead64744e459370f25013ae062dde9bfea843256b92b565fdda8aa9c7c2e5484c20d464959cffd9f52b6612046035e9b6a6417f2bf2a60c66a944f64a758da8763f3c87ae1feda26b9a75a9821def6dcfabab4c86e3e1dd55f9182c5a58f7da93fa33089a9d47bcd610f347981184ed33abd3f6e050abb4dfc1dd0acbed7e40aac315513e7fad017326db3e9595c4a680b7433c8d7bab67d472b09ae6d33e183f51973f4a86d43606d4b0013b748af5fcf43a74f6ad9574c90d78a2ba73d5daf0ad85530fd0f8a46c56c373b2d24a0746eccb47a62fd7c606e8435bf66404d2b7de1d53e5f9021dd61d35b5bde5fb70d2482acf020f585cb5bab3d23f529e8005d0b5973ddc442b5886043435e08857b2fdfd8367c22482ba52e6259b3b323f21a45bf486355f83548ad0aa7281efa1390346feafbf2ea4966a39543bf4b71e24267373461be8b4aca54c4a139a93afc8926a0dfe8f74a9b30f232949e1581ec8942622706f83bb882643895e944502fdbeea5669dbdb7381571baaa697ae75e4a0416ed2e6ae609be30ba589b3896fd1745b1b8d90398bcb52fe5c9607994bc1b3a2203720f2f8c400619a66000eb889592afedc8918bff076fd23ae5925b27a501387c997c26844060564410da3c39a667e0a8c29f749eb44b13102d4fc3c26f865fc508245631f2cbd2a5e17137c56ae8f8da00edc4d9c5ccfceb5633170cc0af5d2acd434c8c320fe586e836b289e04e3cab98ca89984da94ba46c427722470bb3ca521d3aa6c88e618b6da0bc58afd2abfc02d1106541cbeb186b9df9982aab185b200ffadfef448f28522c9a6496f38ef2f4aa28bc46159f98e33f48e69f5ed0daf30429dd8f21b08ef5ac14abb43984168bd4389e8b14d234be0a80a5622c51c9a02a9ccbc732560fdf8b878ca37a11cdc3db8e38c6ea5bec40d1fef0276570d31c7a333b7dc90ab7b1d9b52b220e3e25ac7a2fc1121f5e9f5ebc84eadbac71d79ef546cebb66eeac1d786f57b3ec5943978aeaa70ed8e2ac0d7a2df85cd61a6815d0464a34950f626355007eb38e42d4c3b58c581f3b83a04adbc1a332b570b05d3196e92266b23e85779b3ddb4f326a1fa8621f828859640ebcf3bbeffcfe7b5021e7af4740216c4cf76c40446e366b59c54adccdea0727ab354bd36d88d236ff60fd2a2b3dacd326ca3ea21d697946781ea4ac1d56463ec7163e3eae45e922ca017dc3331178cefd5b9a1e0301a5980e938fd85b59d4a39548f8ebd4f103182cec20a59ddcc604d5482e3e0f1a791a1dca430c5a0b1600cb3135077da0434800dd448d0447018b65369c81be34ca70829d5653efb555c6eb59583d490d1a65522e6e1b30430b9ce720a5ea2277870b4d674cbb26859db17f8632d1f34fe96e447918d5ade99ff3895150b529f3209c33ab43f60c13c927ccb3e259faa61690094f82d43812b3a8090380919701aa7b291837d04d185046b1b526cd1598f913bbe242536fc8c6590892493b1fa9013bbbcade8753e95f9ae54e8716c6b44a4e2f5a8c747b8f4d05b15ed2a2efe80b9b74f441cabdf263cd8d9971032572a07b72327f5686800bc506663d279ea87409da666c60482c57b1444eda46f39454c3e77580c679bc065a740d9d7b815f136a3c921a620377402d5a3fd00d82eaa23cbfe0640c2959644b00fca23fab7ad222c14f275060345ba89b202a5e16eb57a9feace8b4850693e8f25da2efcf7d8cb8b00fc66cf17346d39dcd1f738e3c5e1d1f16b1d268a21c513bb3ffbcc4921a6c948f8fe6125d6d66dd623bd38ed96057a0fe0e97140eb5edc3d5914959a34d6638a76197104c8bdd672aee68c4c97decf23e9cea495d77f3adad1d4e7a7e7a765148779298430511a4d530cea82b2fe247275dfa3b55d48752babd402fd9485e22bf79edd8743af11776093fed5a14758bf3380c343b108cdc4ecea1ae8f7883390ed4cccf3b4609ebdfd47bd547a4acb73bc0a409356b822ed2cd36fb16390600facedf001da0cb2deace4423a8298c844947d06ae9ff6166b43481068fa7f1455ca6b07af183d40a491ed09a26923e5566bb713126a6401fdb20a8c9030c74dbd73afd046935db39766b504cf1216c0232ccd863a086ba0bcb27bd9fad7136595ca7fedcf3597d8bc6533b1f8ff622df401b289d7b0b03b0f30351387f1868ec20e17c0bcfbf2b68f095f517cbec28dd431fed757546ad37f647f1d08b40cc447b4f9d54c4fda9cde661b66040dfe47ba983d98c2eee7ffd4832c93f5df8d2a172f871ba70bc318e2203db7beecded5a4eb544215244eee14c2c4c766a3009e1aafa8be7f235531a5ccb96bfc14043e7c47d10b2099049f95d186f89a17a66f043260de3a1636d99c72f0962e9b8aaffa564aa576a16825c72c99ce717005dece6eecc61dfccbef63d3bb1d949b3cacf98f695b94c288d5b29127c359b4fddeba7d037b8608742cdee3179316b454aeb915d769041eac6d1b98f53f8ed989f5d263b34c4e7a593849137fbff55d32420d7495e671ca61e4a375f34ffcf53399877f51f233943bbabe4696dfb9b9aa21f1c532a756002a7157c439fb674589ec0acd4e6307df73d791f1a590e726ac819915433ea5815300e60925d077fa22f1eb1143374a8bc64256472e8d3e29a2bced074e6ae82c57e1cf06895a0adff535251bdc4ec3de952900ee69516f833cc73f623f18279b6461060e24ae16bbe672fd223ebb94145de6f8d502993024e5a56750d3165d7a5dc2b123749918e38d0a469c8a0f08ad7c47073772445eae3429c4a884cb26982c0fcbd4b73ea5a2d65af38f5a0aaf75618750d94873caeed9a49d1807f4f1cdfcf69041bc019ab305eca5e3b0ff7fd203383b10c3fdf3ef5610fa1a44f8e4f38316bb0cdea16a90cb94dd4e36551f5b79632d7c9f0cb78fd21b7456cdea395e0e071b9f3ca74f125968cff4d8af723ef9afde67a58ba10cd46379c6d33866b8583fcaeba055ed0152dcb3e157d5bed1ef8d78cdc09548105825c6053c74641696459d694a5df6c22a11d8ef51ca096251e17e9bdbd6f09f03aac7a6bb1728580105164230d071d23267ccadc8fbf872044e314f61308bd6e8b70bf80c2635fedce30608bc6016851609bea9a0e24110c932ac0f3a66bb1c0b190d75b6badc73ee9edfacc505e8bfe62a226e717a8e874304247445a962f9c1d12de5e10ede5491c1183a69c7151a18d179d56e7c09070ffdfe8c4630c11048f17c0505fa98500e405605ef2408ae64dabcf441f0d264a234881e5f5233ce5e6699af3830ca861ed265cfaadefb808a630d80559b6669529e7295cda3ca1ac5bf24e2643c39f15197f284315622927b2bf7d73cb2a451bb19f56c32b02114bc57a699041dc57775306cb44321ffb3c4c089a64ec346699856b49f2380fa4ea42ceb6a0caa86925578b1fd4fbc376bae72e254f69a5283f29b5a00078ba58f66355f8cb3a9744f94c6fd7abc906a38bc58106b8df6205e4793a80cd9d52618e8c6dad6ae797416205060455adac9fecd6dc9e339f8601c156c8785d66f16107f72d365e7ebb5ece284d8b2d3c61ff5a36b347e72e7c60f219a6d408d596235418ffab052bb8a4bde32fb8d22775a85b9988324ebac10261cea6236c5d5cb15eacc567d1ca0249bf49976b16236a1d8eb48c5388b25026499a493dee889291bec2229632636d24c5c06ef8a45cdc70d4395c8160e2e6980c4d6dc23138389ce26eed83302daf9e80fe06aea426d771ca7f5152fca3894d6e1213983d24f3bc0b63c206f21615106d71b38b9b69d1215a6582ca8710a8e1a235cab6bae7b62d777495a65c52b32f50d94b1cd60c515a804e6afaeaf206ce1901ab6852d74d22e98633bf0440da1bc8333fcbbf58d26e19854b84b0784666171c4561b7817b93b162c3c36677fcff33fee1932b4eca4244b594e2996ef11ac2f9eaa300b757d12b6d2011b780d90d3ea9ff9ecb487b126238e7b04fe683840edabc0168fb4adcc7fa99decd9d112e763b852a5233f9b1ca91d00fbc87219f8ffb0e130097bcd8d3d8b017c8f2e1c122ddef94ad93a1d4a41416527c4c92d6a99986dc77642c8dbb1a5ba6b418d730ad49ff1380a72d6285dab0bd1de60b02d1ad8efda673a792523c0d9e423254e4afd519e53acb8474af3512d8b37be12fa1ce882a714db8b135d455ff2362cf15374ff45d6187a8143014093d17dabe2a24f7757a66a798ada64007a5db4a8948046896518b502d61e92087ecacbd4982cf8d413686397295114097429681cd2b94a6e72ab5c2d3c9383f964c8aa09590e925113a977342ef1458908a8947b0b119b05491b97fd90b6619fb064a2fd0ae5c0f47e47eca3e8bcae5ecb20c045d087dda42c911038db3eeac70159c7130f56b01869adf6941b6f4d1ba68b31d32ab45b2621741ee9d0813192a21793d6a8255ab2c6e19aacec9d23ba23cafd7a3568fb862d4b92a4e3e2df3b94f5574ef617ad60b920fa8c9223bcb0648fd7061e5f5d851a095e2eda6d16eef0b54b3e97e9d1d96825184bd84bc7e91fe4282ec5e4c366736e3950eef2708e4308cc10480dd64ef574328bc488ac0675d310c96ec42af28b1309530f662e9404527d8128d0df6e691d0c2dc608be4bc68fb21973eb8b983c1059436bfc5497099937f423a4809301b4d74672f221f064e736885f45cd0ef373062c465a107c9264ef0085e04b58112f214327d8969c992094554de5deaf0f6dc8fb5aaa6b4f65d09e9859c19785c58627227003ef710a0e5ee46d6fcb2d0aceaa8abed18e8068e4b3c74615d6c7e9d95f40ae2da37a293f49614efbf711e349fbf9db717ccef7bd312a48e11576a69d6d0efa4c8e270cc6f46f234b93c2d671a13694e154f13678ebfe38bc99eb5149d73438859e796c2a42d7ad3e401da8ad92ee275894ad5ee595945fcf2c24ba800531d7e363065e044759d65a94e16065595688ec98140a0fd7e3582e356583f18d47732f065d8c4c13899206b001e345b8ed5a32ea0181fff656890bfc7b302e4f3d660fa8087dfb640cb3c66ba2687a97b8d93c2f9bf5892fdb0940da6aefaf7916089b97e7a215e80fb49c5a335382d95990f56dd7419e506fa95372051f01968a920b1d01f96b6f683298a1de0da8ec855e68dd8dfb2967311e2f968e7e3363871f70eed2f6e47bc1a07ccb7f02b6c634986283c295488ab594d162f3f19e2fa14669caaf343fbef581c05606966b61da1100a7dd8c43b957ae4e32d2c60aea31c9f8d04a1460786c1c158472e2557dc90141263ad168d6d54bf31572a34273100eaa11982aee9b2ca366632dfb64a55c9bf0635c266bd5deb433baba08019bdffd980515bff3b3ada9dd6ea92ba8aab2d55e9ff3ff73df645a134c22cf27f2bb908fa2546f5f8b82b9d60bdbf88d3c02a4ea0fb2da8737a13329adefbe288652a5920fa72611880d7a7f630428eb7938602016c67e15dd3190e4c1b1d928a0001c477da0c2b7d5ae19c37294ec84072c5ec519d8f07664845c1033e53cecb44b32b358274d4da147c44fa37259c6bd3b771189c951585883c68ce933c0ad1bae1b45bb56627fe1e1774a64300ee16665401d2145a6f73b0334872c687f48350d34d050992cbd578e9846a39b7bf3b5988f7534060e9551456f29b1a0b52ff43563f861ce2e69f58cd981570941834c19fc66e35622bb57c4a7cd0553d66bd31a715808f4cee0bba54e0f5a4274829a33c9d041dcf3b2f7d072999783d286566bd1b4e1e550a013b6160c18ce88376133bef0cba0a33d202a80029ba7f024f9c50b3914c5ff661461c0962715ce00fba26fcc102b41cfee18c8fba246902dfeb1b770f273d28eba809c7263e923a96e34770c2d3ff94289ad0b396e5d71a8b79a1a24641b53be70e2e7203c01cfe463a0c37acb0a3f72aaaed6d72c3bfd94b3236ed1e2ae235fdec5b560605f956db9f6415686c758014c1b0d75621b33d47660a6ba0e79a2b0b62150e27670facfee15ea9ee97d794b2c7b2135a925e6da7c2df9f2680f42eab304003bda547f192f06287b1bbc28f5f9276c3d421e151d825199d43da413c28454e9f33bd4761b74918c3081aa34dfa573ee66dd9687b5fdac7c9c80913171a2a5d60a99d8b4bab9a941adbd2134d3db6c2124b5a8d5a398305eb68f0345959af20abbed14a17a4bc1ce02bdd22caf2693704e1976a08a805de132829a20ad7caa790506412b5cb58339e52062446e997634593930c3f56f4065a94792f6d40ecf661d31173e041575f788929fbb4671602930afacde175dbf1e9cbbe5b4fa705034105c34d6fd18bfd7d6e50df89d957371b51c082c4a91d4ce1916bb210a17fef96d477bebb077e6ef3b02b402464945bd08354386210f5b02b46f7b530129ab10505c8c534fa9ebd97372e4ebde118da94cdf9d41819e5309889fb23c5361dc5bce3387185ced699508027d44eb8eedebdf9c61888b3fa5f7a11bdbea61401f9b820b80a92fb2033c2db9db082543e71e55bd0d27788c396a1ee6173fb5cd1895668c7edd413d485b0ce8ad67a828ee20ed3d8c7e282eb394edc3f26e4157c2efd26d00dec1af85ea031c335bcbcdaabce6683c10a97a9283f894778944d3a0410ea4a0333a2fc5e57227649c68f0aab81c1fac850fc574c7442d4e98589498b431cb871b6c8b4799d20ab13b72ea1a53cfcc7c35a2ba98d35b1b8190dda91b5ce58a799128544c415fd5c990e033e0ba11a4d78b70f3174590f671293a24f31b591f7e66461dac51c28df0b0c909ef2e6afcbfdcefb90bcaa1298bb354b7028916a33dd8499422d9c0d12927aaa67b335cedb459892632f427433733a52f032c102f0107df22d60ecb5767befc707522929a6c117e17248cf8da88fdcda1a37d9b7f57ab0c2419940407f40cc0a690940cd8d11a12ae70d00a1870a2cd9688d1a6216c8b56f631fe961726f052a45116a193281d83a5615187b97610ba235f27cdf2bdd32860ada516cfa5e51396eb4493b56f760c8891b4ce86d7f7919f7ba22dc7ffd07c1048b5058a74913b95798f5d6f47f12191f7ac61905b8faca8dc57ba188fe747bbfe620d01cb5a023795582faad28799afe55836babd39865038cc5d4fa265b122b3bd4a59677bbb96011a5f346185322d915cd28d3340cd3b5a551ab3053252b79bd3e0993e5fe3cf188ff177e1b0ae47cc06769c5f9880cc3037ca3badedc18466ec423d274bf96145b16ba13f769bfb60310da65bf924e771e023b127aef0523d4a708123af072e0193be5ead1a25a5f749789c07e8f45d030a3e3738db3c1a14f8a76b585e56a94d0ab8e829f03a38c111062e746216cfc0b5dc389208025f9e181dce4839ba906092f466e4e571fbe6aa74251a160524f3c66e41d8d65273b1a96c09c8934f517ece5234267a1c11544b168a7a1f51d82d2410b4881e0098bcbad2eeb8112923b9a0b3e1150cb94955250c0cc0f5e0254e2004c06d89a50f56f31608ad22b91bd8ecbe981391337221b4c0ea7e85c0a69178ad8b94c8f43761e7be67ecfed231aa8fa1e924d5140d9c776aafe8a3a6b1ac3141cc1142af91fb48dff8d734aa478bfc1490a81ad012a708c106544263311becbfb32a434e4d6bea6e5b73e43c4026e305671eb4ab81ac4fd24e5914499db8882397761f5ffceb2b7ff886bb42532ac4acc88d08826da4605c60fa600183536304b2b0f69d7dd881301a35c20cb39dd8f4d99ab6a6ba42b41b18a0a22327abbfa7e909c8daef653c251cf051deea38079b16d5fcf0d78d96919048ee1ef5c2afe74e819d13546acfe1a98d3bf1b15a8867fc2bd087fbbfa633c07f057e7a6630115e9481d1ea70d5003e4ead2022aefd70a1d45e3cd9156e75f2733bd3da820039aa66d42aa1c0528928bec1014e717e19382c7d8303dbac427144b49386b997e50d3fbd69eb29033724f62a5c80c6913bd38c12db82b0bcb56b1252144a26769a266377410deefdac694f01d0832c9cc5f634adf995a082a6bdbc628cc9b5b26b191cf1e3b44d6fba995feb32e438b65ee2954edd8581972a5937b02023ad09127075b6248fc8e638327f674e2d4b37877fe90dc6f7ea98b3081ec8f14d8994b165bbc9e81f5c19cfc7890433609173fdc23889fcdd40de1b5a02428b1b1477e69e66137ef4ad8def8293c2f3582eb3d91ec93854e8b6feca0c9dd3958694414a004e20c3181c083a9883afdd357717ec354840211df2e2d8b14fa72b161d96bfc071022d2705210888ec6450c52e9ac9f7961a9b0654212850db6029d38532a363572d98ea82bb188ecb523a8947859b791512a089d33295f47efa4cd94736c4b1e11b6b2546391994f94314aeaf434a063929918ac3c4cbf3a1738f1bb2129c8a0d32772b024e963a73b8e69de1b638c269701612cf788916afc878361b845bfbef588ed4530d7004765498608627f7d1fb7b2e6f7b91c006828007a2188e1be866cfe49c1125b0961164d5991cd3659cf89245f7772bc433b5059064052ed7ad082aecc1f3dfd63878253b9d11940ec3567233eefe07b9687f2099495e7e8b36f13effe5cf6109d6315096bb9b1d41d842e79a7ca6d161ea7c63043519883a8628c2a61240fa9ca0aaceb046050267a0884ea0389b5885c818780357f729a90eb288e977af39b80c8e930564d9a6db70ac149817a483463317496d704f84b84f3821e5425e981c7a9f285d043a384224904e963f3596d0a3ab6da8abe65a3c5f3295666745e172bb8044b248fece20557020db6ddd201d738041a6b829f6b74187e597c7a09f9a27f1888de719d577b4ebd0bf15739622954e6ebc1219305988b4a4b806f1e03807021e11915aa94e411fd3c87049876a335ad740e42c0234f3f01e7cd4ab0a8a852b480afd913d3317c334d3246452e6718cdf4c9701fd850cd622457fb5db16a816b8fda068a63e8ef9e101ebe42f18570b2bce6a5441bc8c603f14900c4ffa8485d2f4684122a00146855cca98fa84e53a48b8a18863a5c5fe536686381b9206da4a47d870aa50f2c2f3d015d2befb9ef15d4636bebca6b5a47607bd32497e1ba21e325a23b9575bba19f91c6fc6a3385f88f0ae2437c7d5d2c60c1751eccb3f21a1cad57b0b8fe29d53c26867f80796fcd58441b740dbba2a9a0aba888caea5829f31c788c4bedb7e7204c9b2e625b7a1ea587061cf45888a9e6e6caf76c522bba93e997531947890748aee631f2cbaf041abb415e5ccf40de0da90448c8b965a1c9520739f016077c4f210e88b02ebdcc5011c2f8677bd5801c55ea2aaf122c8aec5ad6b235c20563fd3700adbf1648fc4affe2908fffdb8776099828055b4c105ce05a38951c1885d094589ed5167508be68d00779535b58ad36040e7dbb11583a539f62a5a2caf789fb1133d1e791ad4bdd64e95269ada628457afbfc2fac5232329e20a7da3c7a7c976d0ba846bc38e506f3d0061fe0a4cc4713bcc3ece79575fb165010812380d0bf61dd534459c646c2013c82aa24988d38f0e1cfd40854dc4218475ff004a57f47069c528675e0d83a62ceec4aa636cbfbe2c97806c1ea17ccc7aa267a0e92574da0b655b56e1dd747d91ae13b9f03c0545eb3f489e2106f906e70c6debee75864c49da19f62a7c3b7e69100535f5ed5bbe580513af870d800a3cae5f9cf952c001f6e06413451c196b77510a8dc0fa0e805fc72660f3524c112b0e1cb479a4a85fc39e154c159630b628e529c88f12cd432feb3a0fb9c35976b43d70bcbc02f94516f93f9e2c1f2fb8077adb293f16795813daff2992a00e747e72ca8f8c85063ccf5e4361f38cd46c142cf96a7bb340a1ee521f11f7c9d7220fdce9ed0060a4a58db57095b616fcf4409dcbd22fd8707b0ccabce4193b7aba9e5666b3c8b42819c4fcaef1feb086ceb6f1233a76493cf2a414df79753087835491998d74f6a002b7026a78fd00b79e291b32ceabaab21f4547651a3196cd43fa5f8df92aabc1443114ecce46f242549439bf9e212f90588cabd4f36206a8f1f2005ca398ea9d43789e693752fa5e877de998cd968a21644a6d3e8b59f9dd6339d0127c2ac09a0fc1c8a2bd505cafa18a8552345a7d1c24598db513e96c785453c5cb389bc5934b8eeb5c74542ac92484fcc4db38b70a9856e0433c51a2896873d14ec474e3470620222b2839a7d73a685c023cc10f3487dc0c7bd1f12e623c2b03bfbd96a885412660d3bec3dd1667e946beb9084797d6d07165a66673b56ad40e2a7bd1fe218957b3f11287a3ddc93e992d81ea86f56ea69248699872b1acf46c44a65c716bc8eb2d803b48aca9670ebdc276670055453a44b0ef344cd308b4bb136e3eb0d7712f32a8d70be906013237d85366bf60a3617ffc277c04ae99d5757eb815e5bc01ba7f7b17d25c6cab43c7c66a1b0a0442faa14fe3a906874d8d50be1a25ba3fb53cd54c45c51d793e4ba242c9a449601f7f0632ce875cfd4cf188258555c023ed1e83b0b168c4954e81f6caa293602882e3e4a4c44eabec412f5252a46c8019ee15a89fa805822384e2b07d0f915234a2705a1b291439c8ea94e225bf89c388e707f39d6e255e26ddb110a5d1f11513e60883a200d1fdd88bea1aea020c2dbf089e3d6d9f3efe4527d80b6a99bd126b8e0fcefe26f1ae8b23dd50b96dfa80acd09854df085a69e169cba6838b2bd72d84b9b340d698d37a2fd6fbbe9e6c48d9ba63d510ea985a302eab8cb42b602a139a074aa34ec380243acdbec4ca101b5ed440065f62b92acce9ec871a43edae16890d1c28f115f2ecb424a8c03c4e6baa5c480d97f670a04c8ca6d3d03cc610d312d29c391e4d21eca7c91836521b89fd11462ba819712ed1196f469f2e6e65da7e14583656dc5142d29ffaa8a13e21d0a01e07fb28b053be0bfcb524bca104eed95c5c0ff91f9850c4f2f2d852fe87852208ec961cd71a6602ad115ad988aaeda050a863345cc14635dac9c1f7f87ec5811735128ff96ec856e8a426e1d55fbe44c20baccaf26caf4989cd5bda3b911d96c1f299fbbd9df9c0fff70dfb2bd04cca4f4966b2370e6eae62b31d974e8054e0245c3ac0f470461da5872206331bfb765c2eae675a6630cd1a64648995207e2dea1e09e82d01b326d3e28aecf3e990ac68562a4f002df59ed347d322827b66c477497fe5a7068e71dbe90ad601ef11fb6d250087d4054dcd15b69657f9f10b31df8cbc3b17194ad6e1cb6e5004b6b2da076359bc8d6b6838ba63fc9f7dfc7f9907484d96a671f8e97df4894738328745169a01b52cb248419c0c47e6e78e1c59e242296e6c4c8e7ce70861dc0f0322de4a98c9f692404b61d02aa6ecf61206ce9a4008de0bf7ccb5507c974866178ff9de125a17653469e2f42be5ff833453181809579bbb837d65995adc3ebd3bf293b0e90ad44a92a7e2bfeb8ff853b510594c2c5896e58cdeb396536750806ecb49bd729f3ee8db708383932e2a0a3f41c7fd49558873fc01bc7bebc7b0b7b99ee4191f9cd12c47eca954941c49db9eeb8d69ac7f95497477daeefca441913e00ecf5c94874dfd44d17f544e7f6ea7e0d4d23bbc28daf58354469c21314b25138f51cf4cabd38c8fd6c3d0f4cfa663f74967927cfb3e0eb0dc924976c9c1c61fa084b9e58c71afd31264952105f2ce81256f51ad5b2aca19fb4764c0248d8117eaad366935162d586abc96880c758458afd2f3b7c4f745ac50829eb8b6224357a9d3aa1d2407e522d01976094f56147538cca5aecd54f94aa7a5ed43692ea2e00b249cb156cded5abe4463ce69c9467175e29766d313ee8b1637672be331be34ca819f8ce74d8d21c8c28f2adfe959d31936822c5743d5e8410775813a1e53203fa015e6c64029c1f32d0d5340ca230eeabc2ef6f9a26d619b7c672744f1fbb066dfa71c2819865c3c4c73d1c9c8ef4b6844a2168eeb1c1727455e9903abf358242aa870d4cf823ee2ac83cb301001fd380d5f4eb34bff66443526e2b424c3766b6026a8d66e366ebd1b92246a424b997f5b07725758d7a75504baf871ecd1a237cbda8c9a8adc261354ab8b7e0722cba88a6c812c32e8ccc7f872b84c3d8e2735bdd38a396c2c5ab8146e7f5d783629ee3fe9e1ecb9b6f0523b5b7055d677c0d2c305be88633c7121218ea6dda1b11ed5d9a75ac5bd4c7a6ef4f4c98b52fd4c255e5d1e455f94ee0e12b31508220715182f89aac61ba75f8cbf6317c8e4e435c3a57fdc1fdee094c61d58adb51f2f5896e0e46579298236b8e4c6f97f7f38a5c8fe8ea30754bb4a1dd5c2b27a49b92120ec8f8068145e41b70972e8a719ac6496e641990dd0ba9c9adc06cad1911304fd59a40bc60918ae0942f314c770136e30b1f695ed43031e50074bd681e51d8f454ec885876ecf4635ddfa8a6a777132d6e204f5068fce9d5fd3145468cb3ca8426cb932ff61e58be5097c2af2e7c5104941c55d9c2af109141402589317646f19707965fbec0a82c1ceff9964e2424e8046b0834f6baae288b288d3bad19ffe32e5f44b8d81b7df2bc1fe3964e1c4da81b1e4424cba1644b62f40a59a682184cc21b926018bd4afbd43689187885afc236c02943ac0c4def67cb094357e2bb490807d9ee5a23eef3594b8d32bac81ce59c2a4541bb00815758e52ed67953b38c971fab0d20f544b92a169e88e0423a0ef3349340bb11cd0353c528798622990f358be4b169ac22935c96e26b99bb007bb6369f873312f1a0dfcd9b137406395d7f180f6da780d7633adfcf7651e5af13b1878e362743bb64a721c7514f6ce56bfac17e05232939421bae781b6832a5bb431fc9c70c93f3fd3839f12c49c0f35ac846a43508595843d1c35269ac080a6bb233c520c039ae20dcd41de3bb88d793b9e07764bbf8e81de0a47a68c8772f6357136333f7a8e311288ebb2e7b85aed49cb3f333c81b3d15e222b5a5bf636920e8bc99e7ad7e9b71e33c5aa409dc84fb1c7637b3758a2006128e8a1f713adee44da3737140bb931d32263d5a6a71ef7d7753b5e3aeb68f1b6d0316f699f69da482aa4a5a1226d32bdc28a30ac64bac2ad1cc02be2caa8ae86398a83c3080e6c99e016d0c5118ab37840a756defdd906ea9e3eb8c4041aadd26f25e0a816174e958014536db4f2910be60feacb69506af53525cf37d326935e8e6c6e432997452535c90e8be614feb0b9a25517fd46cb0526aaf8c696ffab383c528310c881a095a84d72da098ca411272498259aa6cbb25892ba069381adb88fdadf52cc167c8a9fe183d5c1921f2459cd1e13474d1fd3c4a722eb0bab80ce6d490590b3fd791716dfb868235b5f736b25a32dbe1770eb7d439746a045d91afaec02b174543262a59228ee16705b966a760e0772987c09718eb8ccd32acec78741c6dec23463d474c8db136194cf324662dfb72447001290c8d6e8b542586b48018d6256b1dac889ea69cf95d98948305cfbb1163193f2667a8824c1474df28fc8d2ee6877744de2b0e6ebf06bf652fa8b16980a77eed5f9eb857e91146ae264ae9c7dfbfabd5a652bd2a585eb70485d177371d926757d2144698132f628d1f7657ba7c800b8292519447b93035da282899994b529551d0bd3e9a89322fc1c58a03fe2edf50c6496dc09bc38df6f4439ccaef572ceb58e7e61b5bcd28ab9c27f2a29361799ac04d9a824197824cc88a0cec0892115688f95a66a9e96356a6c711ab98c42633c8e3640adb081ee12f24ee2d71995588e3985ca68a80d3e65f49ce27903dca0655a8489369c9e26fbe616a76c1988dad3555dec884f4635aef265203b4b8ab9f9cb9711c8569601c6a034018f74eabc543df0ec3509987ce6d00e1fb69b48113fe08e649245cb6246e74fb9c78c76bbc0821a56895bf2da60972a248a4367210571c350a22ea48e0a4a309a9f169ba71286a67f36d5b66eca0d483a41bbfe83db8b55bda4d9e5ba8e3e4fb7e93fca8bcfee0bc3ac454a6ba416adb194cabcda8dc65c2e75d6adef359e4109119149bb1e5a37b7eb8263a73466073b0713d951639548da018e1f683b50a202c9a93b548b17de1c44144aefbb02898532851286c2b66449295ad8fe9cf4ca621aa98c27478bc4de3476f6f2c74b0e3f039eec5a9139a50c58dc96f68dd14ca3e7329dc8383d50056891d5dc025144e7eeacbea12c6d27868c87ef9d7e270c3ecc02e3717bcd81bb07c29d373626613cb06fc9c16ad9cbc7e8fe423363c3446c33d31ab23e6d8311c417bf40dd08dacff9248076ee631ad0adaecb02b7d629f9bf886325692c6598a19ac1d7b5f82a5434b4f398233558ca1ff9e6d47c21daaa430f8b9e9d985cf80fc1e9217054aedb9104094d43a59a5239f12146f0258bdbfc9450086e74d65359187959a52a3f1fbb4c8dba550c14d929d3314f29c27dc50b8a5e645ffedc130a7c865d9bce406621e08e85ba6a244290f60bccdb12822108078eae83bca7512b8eac695ef2ee9cd26b669f2fb9129a595298c8fe0f9bac3686d1dc6075166c2310c8beb9ba9f496a961852ad739c8f039670e054b11301e7d7f6a93aa88160a79b035855e57b35666345112ec251967a8556d343549156d871b5ee2615a3bfaf0049afefd9d793f1f201302b807407e759fd982ee4bbfb1296b49b48a7b75dee0d72a0c76765f1f6cb349348a0142d58da8448fe1a9c91564ac33183c6c4c40d648402060d94fd12aae00dcd5c58f3f5a649025c8640d3c08c14db05a86046ba3cfc6856a784d59cd1fed5feb13385cdc2717ebc81458276c09612589dd089e2cd0ceefa06d856402e9679c0cb85b2d99da7d14b7e7234293a216d910f5680badcce13154468d76e982cb7235562fa57ad6098b1274c7668ae3a6eaf9c87da4112b64057b52c5f8f5d0b3eea0dcc7f12091358fa8662b8eb2d1c49e71d979f4ec1d79222fb6f01d26282a093c281f6d4af8ba713601c4827c47988d1de2a1ceb04717b4066b74b963d6d8a1e3cea82f1b3e113b2c27af7db09d2ff109e03a4920cd6c13342ffa656ea9aad27152f232e588c0b1a5dbfc75ad9105f410e9f62e57efb2beffb50aaeb1c3e4f647ef39aca5df2f264723f7d10d2a329036d3615edbd9489a1f6da589f765f886ad6b8e47a6b39879b6713b98eb5c0562f4c16abc8d13ca3f8d2297254263fed3672148bfa59322a39ba0bf7e7190eb052517c05f8bd0bab632212083472daed8ef448e6738c1f70b820e237205094e8b19fd92ac28ead429bd13dcf8a2b1406d14dbad772062581c87b456eed2bb035f6e18e91a952420d9c76491545646f6b9100babadf1e8306fb6402906d2980d9db0de0c8948871a339433ffe1b21c35562771c6d363cf7194006514d6b80a8134beb8fba828c0471ed191c1e099953dba77beb62ae8fe947c5815801061ca5570cfb5987c381bf11a549cec080e0ebee9040dcea7ad59734519a7ed8f1016f6ec870320d9bc11f9bfaf77e5b4e881d5935ef30493b240057549a0a6694315bd3b5f153f7186601fdb115addcf38f056164d7b5c24b3f41bbdbd7a89814157d443ddb720c3eb13b33367203c931ef17fb6d0595185e126b43572d695f6a180e0a604b3c8e7f28afda505e09c69e976afd3316a4021756cd7f5b704ef7abdad41d12a215dd6fbb9d37f395f8a97e2935b86c8fe79c67d9b5df9f1cf511be80e0c6fae6b6ac01566143d3bf9360c7feecedafa336befdf8cab56c2f8a90dc95489899522492222ba9863042dd269421c94e217421416ac321d494ef85695e02e106d83000adeef695a942e3086c000fe959c5db250541572924d6221c58080f25ff9d71318afd2691ac0bdc43112887ca0d79928b5aab7711f753cb211822f5033a9508a54b37addfc0406c054b609ddd0e45e14e37fafee58fe647fae67de249527390b8b645239dccb762b3f2324ae556f03d2bedec5a602f78a843e297d4013b64007e31a71c308772360960349d614774eb29cd6f87d2e19a681b3ce015fddcd3004dd0e30715eda04316258c188f1559722e8a2a46483d3c17702e97f4aa17bec10c185116b7e0573855392064aec31739a6a59b542d5d77715440aad5af4b9781e3d8e8defeee3c1b48e66cc0f2181dcc00699bae4ce1b382cd0fb874cf1b090765e3d2ed4c04e5d2a53c98a4b0579a539619d8d3cfbaa418699d36ddb3ac4d77151f26cd36dd07799b2e8ab8498473d32507322ec3b7a24a365e5aeb76919206ba2af5b1b33a9a0026ab6f01a8325287d984195ceb69c36bc501658a7b34811882c4683c9809c924e1e41f5cc04ca98a7476ff1e01684613c80e8620d7fd208d6367b004f965f62e8d11e0ccf7c5cf84f83a62829ec0144178272f45dfa980a12d751a8a3c08194d209bbd9377f70387b2d71c4d20c7a4bb65bdc4c82b20c69db6025d7519d81beaf2d6fa7cabbfad571547095009385fe97b9834d270b29732a03957e968025f3009884c71652c51d0e126c0b734c5efcb4c80ba892747017a6602d5a983286dcc4f00cc0478963070c546b361e0f123c359816065306e2ad7f9e7b99da574062275a4de6502024f7044bc3506ef706f31e2cb000d057f7b1f11932e13187dc2e303facfba82e0554f8f128cca3b7dbe8765a32e62c104ceee0984326900b6d97ab3bb84469900426fc868c0e15e6c8eb0fd528406a4f20f77bea483a654a8c79c3481758b092525d341655c131ba98124cace60861efae24cb285b9224f4c40149a2f35b70bf6f46f9d0f218cb2744a75138985b6929542da91aa5322e41aa085bc9835dc2037a51d38343c065b8930d0e0c3d908c286bb7e112b400efa123342f4fbcc4c6583bdb1e1f6863482509e8ab2a99de735ffe3084eed9d800e86db2e6fc36547085ca1786b0f71ed2904ae547ec3155008b577a5c361ae807d5cb4627713dab12715a4e069944b134423f8dab6db6301d00e3709096140630d4ca789377ea0ec4a35a1aa29970c71694a2cf88b1eb5ca06dfebb2bfba67f1863b6ad5ed602a6e45e33befb4663ebf06f6515872e4f7d7f20fce00eafe5be2b6f43a57241c2cac22ec8bd625b5f1a211f6cfaa4cf5ae5d1224e8e63f79a077ffff8fda597a1fffe1220f1abde35ce081a45ed0ae9dadad12d971c147827d82367c964f22e13f6400d6243fc95943d45fa0bb9a0115f8b438a3bfb3802ba3472ae2ef233fabc576a87a03b1031ead2fa415c08c4b5bfd703cd9be9119e05a5d773beb616567c0e9ea0cd892221821f221cc8c7c235c1dc40ce89ffa6db29a0371f5f36ad25a55f51e5051b5ea115341024fc1ac3ef32e4fe8d7b88a2790966cb8c75535ec910ab162a9e053ae612f3dcfe81ef5923cf652642e8d0ba42af09bc6ff38ced3c666fc03ba96ec2d75419999560a226eaeb2b7cab0abd832c049a8b929f329dafd6230568d6c8e60297a0d7338d04afeeef74c4f9ce09f7bf12d5615774d48e55b6b34c16e4d6653724bf2956f9dc1f22d443403ff83003b7e19e94e392b0b5ebead079de9536e03a42ffb9715d6ecaa27f425d6240aa45eb2034177fd2955529bd0a9303e010762f12e283bb04e6ca6f250294c5d52a79a1694892bf7f2edfbdab7f10728b852ff4b3f563d0c68d8f29f26785fdd721cd22ee1b451272797d858f45bb052b13e747b0475d580a2ae8d6c3d3627c7ad6fe1e85919cb1e8b3c89e737d27c03406d5504d41f402909839161d434b2e5361c47999689522ce99d4616210755a4533300607011997289634a486b28066fb374461072f8fa588b07297168e5d7c8d4e504ad3486b028d9267f65c53e564634634f3299b5a1bcf908945f1ac3226700ca4384b304b40e901e21a1054fb547a3029a8d194907a1b56621cf160e9fbab52774e0e4699d32161eeedc9129e1c8698a90c459aa9c99cd7ff56f889ac1fd093bdc00945cddc6a42138449549358582af19222ffa212062dfbfd02fb3af04f34af0e43bef5c9bcb9bcd359051f827980393de6c547337199230f16cf7528896310d32246c0e50a8787443d4dc82a92759a718133486e4bdeb705645cf9fe50c2e9d59933a4ead8ac2d966ec24c855753bec660648e3a71b42c8adb62b0b7da7848de7683a8f795fa7acc78726c6b4e6e083a71752ac32b9efebdb9f3e332ff50fee782805a89f4843eacc89d14b847b3265cc4490d214d9db9c6ad422cb942ad1f6b7c946e8166252d78680a6e4767371e69b7ae76d943e3580c526044bb087bf70ca78f0118d0709af5b234bc7509b83d27244fcd7b6776fd496f452016b2a92ebc440f888ca5c7cedb8912dcb904883124d3af4936f86907742605e86842826ae5a157f126fda150e620d3d3df225737057e7153b484f24f5154a7de47cc7609550342663142fc04741a63fc50a8492cb60d12d3d3acf2c90b279931e781d2e194bc2bfdb893c3d4712328d32e8d223fb95f07115ec31092e7126700826c45435c684946f878824546e7fc52e64034d8949c6cc5629a600f4b006a9329921580b8a2b48933620f41f9161bc7e6d42700658e330523575855258b4b18ce660a5a9af0d4eb19e4d15fea633d688b358af9b10add5201c9b92de5a291c2472169c74467e38a882a701909dac15531fe6189f0a8990846e2731fd29451414239374665063762f42e053b53f86eac4f18600202e33053f4cd2b7a7fa6a588420cbcd1dc48425842e7b0617eef218a21e9220e6d50d9b817c98221b4ac74e0beb4f09071e8fb1fb134afd94a43899f421d5743058177d91e138f88b133a00d9dc8fdcb5b33fe32c3e4de70cf3c60ce5577c4448cb1d328d944ce0c004ead25e76d39e056162755301080e8fd91e69442b1a135b905b171f2df304def35c6571f9be6a55aa2a6bf86353f4f96229dcbbe46460cd44d0c58dedade959a79b98efdbc40c49b602c304323c1b333070e374389b79267c3bdab1f2e08bb2e363896b04964d2b732c599b33c0cda3a022d7e70e752eef904255f07363138648c6a2d547aed206841fa9021d32ba7502f4d0e165a0ac5565c86baa2fdae841898e6ac70eeac197ed3dd605aa980272d83ded432744a57b0d5eb768725ebfda3f8f765a99f44a29cdd8c7b51e82b02ed590013847adc0419eafdb6e18cbc93403c96d387dc4d5348f000333e181f3e215b0c7bf9bde728b3a4c47e71beae4371f5d2f2a0042bac9e39ff5794c4ebfee4fad5def48fe5e6d28f16eecf2bc450e14a143289ac2af658d8823bb3eca3aacf13b699bfc17c73fba4193b58b54dc78ea668567fd28e63d6a8760828a7bda3931eddad181da356062b926f9becead9f9153e4222acdef9af5bf8dc3772a7966d9785375dd1e1aa0e2313635f9a00aa70cf73b09ddf4ce1e3024034635f7449fe0b11d187c44f3970e5f9eb771ef7ea4bcf55b40bb9b055a891879ae851aa579bd1fce004d80e208e4815841fe58bf15e2cf862d08de1ff540a82d5481e202418cc6bc026f8a8f5080a1b8c72a0bbb270bb865e32c6ec5170fcb3227ccd661dc23f86fee09541197a7c57fdff978ca4167ca85e6b74e1e1457501f062a78a643e74c827fa82798704a7f1b873a263e6264c0710d3e30b4783604e1fd513cf48442489482864774d2e0541d8a09b7a39de5724923c83e54f8f148320340d86d4da3d6c23120dbdc3ffe74f7835c6a616e8c5d8380f1d3892349a09dd4629a481a54cb450f1493bd28dda18460780f77302a7b2fa46be3eb4aee7ea3cb7902f0333b5c45b3984afe375072579407883d08ba7d7f0154c321ee0b3a04d61552d474bbf41c63d8f20f52fa3d27f77196f29caf01f4610dbbd8084ca901d084902ff0e4d711fac7265d1d7963504667712385eaf39354ff313862a5276ae32236ae4656e210a4ba5cabc6a6e747ee28ec11ed9fe17c6c001ae02e5ba8cdac570689ca5eb02abbf59826a0f61fc62193ea10b8bbffbe67b45b5406f85510547dbd6d5b45554f0eeedd8722b4ab0fcdfc00802b14837405d70c480235b6e17760984fae7c03ab1014d84cdafe063dee40b2d16b067c096b273fd848df36384ee2ea036da3e0f06cbbee843797be6abb3d05336d385dcce7e768d8a7938363faf0e561631718e99f963b75631f6aac554b1aaacb4def7e4faf2fea22ce0701cd97b0ef0fdf73634bcfa904dc28dcd3f9996f383dc89b1f2824d2b97b23aeb372604e8da4fea495533cc73266d8ab8d5b7c803ed2e99499c94dce02c15d17d76134ba57e665d0b6e51c7e4c2d9e530223fa8d9f33d1cf437737698deb89f1ddeeb95ce8c22ee26e8f169faaf532645b09b25dd3f0d065c8501c457bb16e8ca9df6197123cc3909c7a8da4344bd4489df2e68efe958fd429381046a917d69afaf2a72e04321903c3a898e56fe240f51776802b15a57a01154a866de2138adef29e952adbf0a31fe5f4eee6ddb539caa09cf6c7568a7d77c9e8453eebfd942c4f74e9dbc35757c1919ebd61a131f45c9430d860ff70be7219691884dc1047ac6660669056eb94379167a36cdfe0df090cc132ae8932428249b3ad0cc180ad95efc13623c46f4697b8d3fe48d503a72d973df3ed341d026760a05f599b4dacda569fd7315a01c78db8764c21eb298ebc659c1926d43af1a6847bf0b2e2fcc465125bbd18db860c238a1d7403815ec4aeca59aa5e5a70e81fd3e18a0a9763b5a374e1f7c148d57b0be546800a0a8293d0284f7ef4e46502c40f58201aefb3d1834a843072c33e45a68cbb38a6145b04848c54d2d35482b9d6f6cf6b522ced5ebbe8218d57756f171f34ffadb9e8599400d511ed27641e5b4d7089d219fd6c7f2c236d73cbd0232483d2d8f7e0678370501c6a290021934171d48ef163a2890a984558a99b5353d02daedd8e68893f376e2a5c9dad5058710b01717911b471b9b22ba290f4fe4e5414f083ab8035e65394407702c47f0981b0c92df86aee840643ea4e293c7ce9a7639ab648bfbb46998f16543bca02f429042af5a7cc592092b292743500e37489de96e11130e3387356fe3a5e72a77ee977ec36ce47e21c6f018470bdeb0ff5cf1da3204e5c2904540022c4bac03fed7ab7f6ef28e7d1c4c95d5d641b9b2193b2941b1023698d904dc82664efbdf70e8b0c930d2f0c32c29ec3eb23875f0f9a03c6e6ba2c9e10cc84b3e464cc94f3bf0586b35bc74dd3272787b2739e1fe69ce9413383302ca99daf73aca3a3131659691f9f1e0ab695c8387ce41c1a691f1986778c3cf941534776ce61eb223cf354e8f15076ebd653a1c75b0fa239acd64578ebd113f28c2406d93ddee37a4a64f7c8acd6759ef30966309c038643ede32d9035240807285184d8318a20c2b34e0e65681f0f9a2d30b60860383b1f6b5d3644462d758c22e4474fe819a4323f00107fe101f11388c79807c1104001649c65eed8ef80780b889da6cb3e0020ee325df6200fbe9ee9b2ff315df621660231d3dcb1b7398fd375f3d04746e2e3f5485acf20668a9e35f291f356ce9f737270d3f469e5301f37e5873aa70f5bef71dc027113ce325d36bff51033a99033129d5b27ad63267b447562d0f401c66e81b17b80b231136eca606c10b446a075325df639a03d92537cb201706f8ce9f345072960a64f7cdb7b50d6c8de1e852e1c10061618eab801c3bbda01865507931a366068538399c2cf7c5b149b4efdbc43af49eb505b0ab558db735b948d0c0c52d3a260a01d6a516d0f01d08952e86a2be435a5a01f003a510a3153db29da6908a621962c1149ed39794dd327c68888d2f6de16ef09536f887c038e8e51042a8db87ca1d764d4f6f2876f768c0df1a5bda6ca3232ef80089b3f42c1dc80873860527ede9ee6a90153ce60c50d4d3730e1b0d4614f8de150856524d21dfbd8425d8f3ddd891d39754ca363ec0630364a1869fa0a863d4454bd8a3cf2374e5fd8d3ab8e307917e84fa659ed3cbc1d7cf5f51ed881abefdb0d1f4b3b4eb3b4fc55ec86a78fc8bc8d175ff64ae957dee57ba253920f7af00324ca402aa3c84889246c0005962bb80803a3d7c0b0c7fb0b3d9d79a0b60d0d290979eff250772f47ba13a90c5149465a7ba43b4154c950cfa5ae19185b050f8cb06ebed0d3330a4fcdc9633740693c55311bcac8d3634a845659f327e794443c7df1b863cc86a419b4ec5a4a29efa2afd8d413a49d347da53127b1a6ef6235f8d0f438b7a747e36b0051b0a02983e664a265af6e4fc7ce87226ed7f7d06c311636d7f9337cf4d4d2d38517922ca9807c155529638725ba68e225892e60744ad154898ca63721be7ebc71030c5c00c506993160347f20a8e00b5b2d9b4c61f59cf3258daec0f49b2e5a0427f6856f6ab34d6bfad00805c215f5c69af4d0e1576133d6044ac768f8d23146031403748cd120a5bfe913af83112de9fc6afef3aea9467c2c81ce644359468d08f1d0f42cb4d044531a436ad234c64a20a52995934e2c4d69144d7fdf805d30c69d4bc14c179d82e88b5ce2c062412a3428c9732030f1bde93ffa15fde93930c69d2f7a4364941e11d05edebe60d71af8234a496daaeb0b7ead81e10f971c322f7ba618d266d6da696bad35cb660cb5a77c686da869f6b56ab7afda91d83ab96bdbb539b539e79c73626de26b1a0c1a9e785e9b73c6e6b69bcdaabd562db3a016b5564da395529ad54ca30f65d390d6d0fe86f4b59ed352abadb6565b6badd65a6b2dadb5d66bafd9da146f961d869eceb21255c74b5927c8a4ae0f63193154cc6df9280db95fee61f69a71479251bb9dc3e03da79db3a7f6d49e5a7b82aca0e5dec472c716061abae25a3197802ec10c5dcfd51ac658098cbac2203bec6098ad8130d0a6355b227b4e2b3bbb02dfe91343d64822c689afc79d102b69855f8cf14621b94aa42fc6b648eaf98e6db1d43690b88d2812be80a20966c1089bc79124cce3448a438f0395a3a3174a2035cde1d75d429ca69122c82a6b952dca0d2a6ada00d3636464147303091d3ee8a1e55310aa74b6600345cbbb40f344cbdb4816ac609a606c1a49427fddca386166cbc949234b03be318b9805925863adb5ca3b7de4bddfb75acddba604c418632caad222d987b2b5cc43a1080b2dbafe22b1cfecc64929a59452e658e98bb47048b0f46616ad05164d1fb5682a3b34404fdb87040877acb53166d1554bcc8266da4555522d706a4eaf8b1173316e774e6dceccc65863acf35fe489a71dc618638c31c618638c31a54a7141e0d82ad3b12d529ae6253302e5702153a52317324c1dbde8c8858c53e389bbe690769d24c4fe68cb965f6c8b0d2d2f67cc8504166260291788316ab204122cfe7219a28c2f43f7044424c164885a78a981128c7e48330326830d13309aef1c413e7e0b17671c8d41430b9cc0f8c10cbe48a424886882452cb0f88f0565ba5481c55ffac2c101b6cd993f39ab09f08d0e0a505958409694efd8e293cf9973ce7900d85a6b3dadd3156feb9c334fd78d72dc9c23554d3d81371670a92da4eac68a4f626ebbda560506c3396763da514a69d0f4d1527ce10d4012456dbd213f5a0902fa82606ff92c08c6158004980133959491db583e224f7ceea8c5182c9d8c3566d11883e925b3595be4011b638e1ed309cac61e4e4d19533195a56eb27ce1e5b6aba5baae951469b09681638c40b6b5327610a5652723d0264fe765042212e3900c0e13a4c14663ad93d50bc1cbd7c9081482974f4620ea80c806145f705083274f682103588c3b3202792178f9e431ee6404f242f0f2c9e38dd62d6e72bbdb36336db3aa5438d4f36b7c597cb22317a6281de769ec8b5e7c55055f288dbef8c2ebf485efe20b25d2edf275b962b020dee302e4e20b6f532ebe1a690bf0dde29b587620185fb8eab9cae1c9174aa3e6e1d37c20e59b5123ca174aa4f6e10b6354cbd3b84088ef8ab1c3e771a183297ace00f1d11cca2722171d2cf51453330494f9d9737e34c320bbebdad28b9fdd0a88cf06f79cddd304ebc0c9375dac2feaa9e55388329e45e7d7f29b2e16cd4366d3f81470e62be749fec77cf180c907d1d2f23f60c0e483d49869b906989617a2337e4a7de3659d5156a8bac64d998f4799af8280c527df832728840acd9fecb819f5742c50e2490d239c403103041b64d08221c2a451860698fc8de39347d3152f9d4c573c0078f0e5e4f0e1b08789ef1df6e440f9a409e24e3c1046747cf859e9f8d0d5327e3d487600430836cc2803464b05d6b841153492686206338049bac3838d4ff66643fc7be47fe483e2aba80452625bbee43005184e60f245e22b0130704a4307a51364f105263fc1d8b267472e6b98a057447ca17ca2e39cd60b2d87ec8c263e1c3e9c64d5f836266c189fa645cc37c325fbc15763903df9686890fd10c6dee0882abef0e0eb72c041259319d51c683ca82073a288ce0724f9149b9cd474e472451137347531d36c3aada7b3c1d13a7261e34a872d9a038ead705691204c7972723935fdf4e0c001f5e5875e4abfd027ead474a911730730635cf955972d2da5943d160731503dabf0663e6849df777beefd61496239a273226d3c48a316e69c64666d1b333e104ef07d71226afa84f31e359d512edd91a7f3de1f496b5e40adb5b5d64a29a54fbef9706b2feeccccd65a29a534bee20a563ca67c453a5b925a6b33ab65d6da5a6b8df425e3d692ceb48c9147766ccd21c08ebf99d93a5ec6685e9c4facb5daec95524ae79c7332a9e25b344b5a2d9d5d7a76613e69a5f4c197be71bb778bb27d6cd18bdeae80ed3702dddefe2349d0be1d482240c22250fd97e6be2f4b12e8bd1b7a5eee22509d9284cdebed38871e18ae624b1979a48c35c5dd1c7a3da5081d98a508f22bfaf278e4e869822356c5168e51c6b04a9cae12478a301f65a4daa346636e4d978c3cf3a1aa6904b2245429c27cfc9be2d4cfe3f8b2893b1d634fedb4af165ff82385a2ce32adebf4f9d4a24f8fe89a9fc7f36af1e155e499e91b79b48751a6108122d0cdb40ddbaecb3acf2b92ea34af01dbdd52d983449e790dec711120fac4f82302dd1c06b9b9769147be7a2ddf63fed3c78b2ef92b6f2c665db7fa3a9b30344dfb2694372a97207e40007cc5a6754197cdd7ad6e05154f307d0ce5abacd355f39dae9983cb17c3db928469d473522d9f6cd9548279fa5edbc51d7e1f0edd6246989ee9b8c50c16b4eae9b379a175834c97fcb13c7ca966faba1cb47c9c0f6f7c3829f3c1b73151c77c9a1627df0c17dbe4ab1db9dc20061605dfedc8e5063cc88e3e0f4aa6836f6bdbc5a76aad872f6bd78fb943654bb5822f8c4d45b8a48144e38e5cd87862c178d4d3ef5dfd3841dd7b314f5daffd9219752ad5f1768b93edf214a6e9ed189669bea811dd99b6a95f3469a9e92d520f368a9572c60b9ade26cd970d8cde3a99af1945a3a85523ac65c0841133831da8315f374ff335c384a1af4d34ac4e4d5fab4cfaba347da2144d5f99e62b078c3acd495fa1ccd71c638cdac3189a32d5088a054d5f9dcc974acc7ccd2a55a2beccd76462ea499b664e4f9d68172ba8687afa345f18464fb1ccd73c3acaf29a51e8291424da4396294d67602f29460c3d8a9a2f49860c992f2aa83042bc7474992fe924bfcc2d4d533e4b4634ed602f59651ed1cb28af4c114d3f8d6498f9924734bfd7b2d0f69987e6b7ed1764698fb0bb64baece96abaecf6e41bca4c569fbc119d96092ec070318ab12750745a217b4e9cc2cd121c6dec1833c68b580e59620c87a6e6c1adb5ca7735ea8b13599aa7e3972b4badc59406dba963ac08a67e0e0c4b6e3be0af0948e0f6199c65a6cb9e060039940d80ff982e6b7f7ee698e9b24454ad44c631c9cc310fb8bdd765be641198d5849573161ee98b9593591388c08ffcc83c0b99487efe48265212929965e4c8594233b3721e6111c8ac9cac4476844598fda6c367ef39d97b4ff6de17fbe8197172e4f22d50d55fe8ebc865db098016cadcb19700687b983bf60e0063b8ddcaaaa61281e395119fd71481809c2250a42f166eef7da1af79cc4477eccd63f4bcb300da234a653e684600b451c02360a43b203c7a2b4cd8ccd688eedc1cf1852b1edb169f1ad365c530511d39f946cc16c56bdaa2d09750114ec2eb357d31bea613ddb16fbd083146f4350fc422b5c0d99a4ecfe1aa53d7c9e12af59c734eb6c75e530b9c3f41264c9f20b72f327d46b89d4d9fa52f08dcde42992f09b3b746448cd1f6d6096e39918f03d602653301a37c2166fa3e02b855992efb20e0360508b8256d51681058082c050f8189c045e0246c043e022381a7e024b012980aae82ade0253013b809ac84af6027f0127e024381a3c0580a3c054e010e2202ad707b2c440432727b2c2502a9707b3c44046ac0ed3111118801b7c74544a0146e8f9322100ab7c74644a005dc1e1f11814eb83d46220215b93d9e128188dc1e27118186dc1e2b118184dc1e53894026dc1e5789400ab83db6128160b7c74b44a0be3d66220205dd1e37118112707bac148110707b7c25021de0f6d8890854c2edf1520422e1f6f8890804747b0c450432c0ed7114114884db632c112800b7c75244a0116e8fa78840416e8f53108180dc75db3b0f9a5b14fad2a27e7a5ccf0f57395b94d61665fb84e3e33ed9f8b20022a977c01b1579ec570037a4c8636f04dc4a1079ec5500b71d228f7d03c04d87c863cf0070831279ec5300b72791c71e0570cb21f2d82f00dc70883cf62780db51e4b12f026e37441e7b22e06643e4b11f026e35441e7b21e0e624f2d89b006e4d228fbd02c08d86c8630f03b719228f7d839b1178e3883cf60900ef0f228f3d02c0eb83c8637f00f096893cf62580178ec8634f0278df883cf640e0ed41e4b1370078c9441e7b11c0cb83c8631f00f0ba1179ec47006f1b91c73e0878c7441e7b20e06523f2d8bbc0bb83c87397e28efdcf73f8d3e323873d3db216a593c3f778cee1cac77372d4dfca383f7cf6abd54c9c396d8a40addb08dc8657fec8c3d55dae1e6d89be22908f649967aea1a9a1a979b86a1adc02656b48f475976818607cd1c58b2e54e014e3c2c5962db4c8a2490b165764b1a20a2a985230c59522025d2c378a0874a1b84f44a01608c41752a3106cf8725a390754921379c2d663833f7c3207945dc794993ee10b6007e0ae5bd7edce2766ca327d746e3f7d803cc8cc33b77adce6b805ae1e04fc3910f0751f30e73dc025b9637feff7f54aee84ab5efd80af4f4fc8ce25186120080a40000278f48408e0415300211c0c21272704f0d11312c28326fe917398f3aca365b6d219ca1fb17540253c3960ec0c2ad19ae7d113c2f3eb1589cd73dcca5a662b9dad7000ff3180635cd47a106d813f94683d801f8f9e9001044d3c02f8f320e0eb40401f189e5dcea72744a7f3275861156fd196b428a24f4e6b2907c459227dc5a82df1b875b58e872e1d0f3fc2c35590871f90b7ee0d8f2fddbcbbf43053e4b10fa1868f95f3013c362b87e73f2ebbf5508be23c1572b732061375f3f062a67055f3f0fd273e49c26f4f6990d406f992b7a73bc8d7ecf170a5f3f06b56cec3dbac47f9d290e88e3d2b3fe22a409c054f103b21491146c8e1aa75bc470e574172f8b58eebe4f00392c3db3a9e93319314e14e7c3e9e7b3ca705623197a9f587ad5f2c44eed2659a3ead8739bf58a6cb328577a9752439f9dea53fe73807bc6f81b3b528ed2d90b6a6833f07ccde026b6b3ae876a045fdf65ad47d7cdc9e4992e0e33e1e3da4560e654e8c403d1e0eb5ce74e5ebe430e73aef012ea1d153a147ac09a3eef1dce3f93a20cef1ec7454e89171971edd634888c5e4801549eb3999e5e30749adf39c30d327e7ade7e48375bac225b47354d0794e0f103b75c9624bd7eea1937de41c1087c9206e12b3397dad29bdbc3146b6be5c49ea1f687cb982447fa0f1038d480694317a09550241ce182b8002421898cc4133e6e470a8c6e9ca0197cc30b280062d23a3b007956e9d7a425a39094eb7be397d618e417b00a776e9fccde983211b75ce1ea85d72c6782ad33cc0e8d6184f6a747ecea7a7424ea672d4039bcf1949eb3cc0e8e8a1c0038c6e5199598c30607a09ddd2f4e9005302414e4e3e411a6135228fc562a64f2bb386e4dce53d7278bbc77d80e16d1f4ee45bc72d30bc9d730e9974eb3a398f5e2b3fbc393e46e8f1092ae930e91ed7c931f2f4f001c67eeb39ef0186b773c6f85a27e438616a51d327d496da763ec0cb94c1db02efd2746d11c117635b1875ed160ea65d4e2be32e44744eabce7354ceb473de0261c85f92b5ce193a1954928096537a0b28e2c981ca18cc74d9d631137d450c66fae4db63a8e9d3e3f638ccc46a4420b92502394d9f2e11688c08f465e932b5ea10adeb803f42da9a7e74c8448828294643f8d0ad90c9104f43443121c2888c235e70c4194c8e688333ba41eba102318b984ed0283824ce6075c804093810d021132d4f0580e26679f2f2e406d2d20aba58411a374e72a660c1448c2f635c99c23671c1840c199091061332d820a307dd7a0c9978b1620b265ec460e2a50c265e5e10eb9049194b90d121932f464cc070018323bc70418216484182283004d02109a27a4082a838260ff587290455e2ca1446580c1941f194800b420b8f0e8766382306340c1705c7d00c71dc900392142396681435055f3409a349d49013249f0e879ce4201caa61e9061d0e1d29a951c5bcc26908072f38c46008071c0ce56014d3e870e809d2960e879e7879f282a12737d8a1c3a11dca98d221511523a2a51d9a3a2c0aa229883002d06151106e704639492a2700d06191105e84802a926224250d293930a3c3a221c2a83850512282063714a143114e5e3a2c3ac2880928ddeab0688a302574589482a42a7cb082072b5660ada85ecc2f56507485972ba08aae40e30a37ae80a3088b282cdce08c6cc8a05051a4e58b222d60828c829ae4b0030f5e87414948042d1145154158046511d4c5081db6514e876d04934e870dd56274740833ea960b3a8441754b4a872618f9e8d0041ae07428e409215bbaf550c893903130f024035334b0012a5c9882035220a1f28214dd7a0882272030a35b31f840440c4ac4a0654a08c6202d31998289971d302123822b469034822a23784a75480217b43a1c3aea563814c4d011371d0e65e9d6e3d00aba451485a643a226b0681d125dd1ad9028460406d1976e11e560a6431966b8a1044024d90e65a0e244b73a94818a6e853234754b862ddd9250d0a44a44d6e4441b63f474dd689da706e26523d33a345f3a488d0e30375d8000c6a709014f1d249349c05303699ac2a875b23490a7a86e690105d5ad20b600a389d6d932660b99d6316a25318e38dee8d651eb34c1055403f95226ca0da8324f5e620cc07c21250c32ad33bd8069206e34b5ce180da44c1a3b04f1833044d038a08eb85299a8c20a11ad6384a5818019d340b29218471c65ba15e6a97572eb587a4aeed251163a391401946e1ddfd0ad63ea29a199217a28e0d6c96107cae816112032dd3aae1df5884c2f36e896102537aac1005ae43003ce3acd1ba2cd00a95bd7bc219a135bdc7baf7635ed5220153241028ce68415cd091cbaf535ae84e1c4d11529aea0000eed0a189ad20b34a52cbaf525b86856ace8d69b342b4740c154ad60d1ad5ba942e90dcd092d8428b99a87c24cebe4900466d460dbb66ddb280e52e1901327d5ca15d40d2c362f150ee13003214a6c8c6aa81e0a34ad93c3a12751ddba1b52261851619e366e1aa5c2a224a3e9450c85038e4ef3884418b0d1ad5f6f48844111ddba0bd620030c0c8818038a0ad228a2a20c325e70b7bb6d77bbf7deed02a9b0c88a32dd3a972a5b7c71256e8143b78e372e01a9b0e88a1fc42d8eb63489595439617618b405b76d1cc771dcb67132a4c2222d6b649e1025397a89ce65671e0ab57572d85430e638cc711c46402a3ce18d0464d16286eb1101cb74eb9b37e44a701bc76d5c08522106aee0bacd230200282044d1ad73de109c28582eb8695a39e140b1a3071d4edd3af686d898d1ade3aec31e919a33bad579351522f9c20606ab1800b4d0baea31a0a67572084353b78e71c779442e15dd3a8e36158640a95b1dc6b8c31d980a99dc806de896c7001e50dd7af416a091a931c3a7866e2d209e1147b7eee93c7a0cd0c94a641cfdcc1ad27a0cb7751e5b278b41e54b2f9961942284510c20a6f412d9548e0e93410b02a604029dfc02cda1062894e8d65f10810e60c00615dd7aeb0f9a3a606c2c3d14621cdd3acec9b96d01a140fee77c49d69f9df31608c3bf246b208f9e0a2d740b08a824a75b3f98732cbb1c30942914752bc7f823e7413307ccd7097d3c7f87a88e311db0bc3ac674d8a2c553c758115f78748c6981a5ef12b577c752db29cd258e1ebac75bc75c3702188007015d0702ee5c824d92b4c01c0f02f61c084880e78005f8f51c507b8039f67f783bc7d7397a3c5c758ef3d091750a40801e1077f186c8ce377c8f3b2dfa47eae391f678f41c508d72932454028dd3318c329e9a7c190931dc18680fc95a898ca3a3148cadf8b289f347cf3b63824fce0c21af0dcefcc2079d17549ad880f1858f29014737b32431a6e5ab0e56a0602046194138c558136eb8e185951958c90226e7152d9548d25afe27a807422cb4a044162d9f0117e493c833993e52d6e9436fd0f26b597474050e787014c60f4a51d057910f2f18e3e4640c236af0064c4e2b5a5e2ed94ba984186ded57f7deead91b0495154b891ae8052189327a5ed61b50abb9a60bfc01d279ee114667664de0be663f52cf65a2fbfaec669691ecded7cc9a5b66cd08a32db8908409cd92504a29a5943bada79442b9e80e7dfdeacf1c81fe8241a0115bf3e94ed2372f5b542b92b3c6113341172de53f2a3fa40b93375244cb0bb1d0820b49963419492732298d96b88a5c924cb2496ee9914f52c658125fb4e45a5e92919f46f2f368fa14a0bf9934a74ca4e9535b4e69a3b7d7edab7aafb7dd28e46e01d3344d8d295456f5006d9110d33605306bad458289b6d6a700fd04a334c9a9a9172388687a1c1a33c28da66fd1bbba344502461fe488359a4c37cd6f9337875813495d4febb1ca66fad4aa699aa6695acff4610db199aea869b9eb8e669b3b8ff4c9474a7348836696b78dbb0d8761ef04ed34874c9a5eab791b213b072ad9477bb5ec1abdcd3292fb815505db35472942eca131dca6549eca3770ec58e9bb08145b1ef338a185a6344bb9832f36d56eb54a65d217635b2035bd7d0452221b04458dad974291967b42ac3ca1d6a61dbd133e70b6a7643bdd7e6ff625595f18eea6fd665a8ef1479643fb21b44850c7f823b4af43e8e9ededac295835c9941052c4e4aebf1705520661a56bbd7689a0948732ac1875bd4db692526b105bbac682d8810a624258d1f506a91fbeb0b65cd3a7ae5ac67ad00256df7d36386fb97e4c9f1f5d51a083ae36989082111f7ed0f5425cc0ea2bd0c295ce81c9eb18430117fdc3688bf601e18807311fdee8fad54b29b11fa06495e9136351b074fd0b964a106340b4a06b7caa4d7d658daf5afa692145899e9f3eb2074ab4d1f5265460fa7c5ddf0212acd6275952f3c50246a94ecfc727ba761807d9259ad74e412dff3ed29d2369643b09d67e643bf723da71e6386d4bc2441ac923ee12c6c95ab7074d1c8594a4e2d7cb23fad27e5d35624d2b32476881bb3f514be2930e8830274eb86fcfde930464228d24d24f9018252433a2537382215004ab97ab96607cc9af2210504bb9438096a1015afe06896fe32e7f5fd9e58bd017bebc11faea8e9b7c241db160f23d535a8ae1051a6ed0782166ca6c8a5ea061d4f2d6c956e92a5ad621aaae1e1a5f6419e1b8b38e6ce0aa29b4557a0da8b776bc5e4252cb07c578406a792333da2af4e5444952d1327a932a2112db85e992a79e0322cc49f6db814e8a1e1061f54153037b2c18846f845570f5e4b34bb689e992f7c07cf1f6e97211d555ce97093bf55832a919274afe992e5693163417e88b25336b02f4f347b2db1f99d7b23562e96766c92cb364fc22940b49981871624fcf84beeceb931ccdec11caa80517923089507555af15b160a43bf366ca17de85e913e2b4e03d2a2ba24b19ce044eb84c61d2818425a884124ad80125e3f381a6417d701895f0936559f6f3f3e2a870c791ce68dbfdd1b64dd38104858fa41b1919b9d1450c7cd0ba8042daaef6e3626a7a9714514dffc36886ceb291e9028bd01dca714e9a06a5554ae924418724e84cc6ea05278b192f2efd940cb5bd5b6a54f5a04ea174061cd418d3459fee13724d46eefad1f3538209455260816be29e3827ee0cee294a3ff2ec50fa428e8963e2b27c9483f26206234dd3340d6be0ec2ed56666a8913ec376ca586b2a461efb17dd5b430b66b80962061c2ab29f1256f1d2e89a3b94933f7abe36bef02d170b5d5f017bda42114a7f4b31ceacccd934d21869a4d3132287d01cb38c8a329f1a9a46430c5d5ff9fc8b99b665c7f7ad0a7099be03637471dd5bd3277fa3294c17cd66f03c5b443c8e96aeb3c1c169b57efc3042ce39e79c73ce39a39c734ef9386966d9cfa694d2d9338b99c999653393b34b0105f10bd287f37dabd5dfd346288b875ae5169971a269507375f3469957a7dd2debc0148a4c173d0e175ff8dbf0850cec92d8bba4bb606572bb2eda2b4b3d25b4500131528a0b49963099af4b27509af497248b4430469c0073b54b055c791f97f485b1292888097fcfbfd48308346fea8c72a61e79ea1f81661cb882746a734e2db606cae89235d2d48a360b62765bc1d855ce2a6595b36a6096a95c7ba7a8530e75d074e1bb354685ccf783f8ab81306908c1830cd458c20658fc2abe3a20c61638beb0f2032e6c008b8f09d01e6557ad83fc0405d117cd2c39334b66d60adde98f78e732d1f4b49f08745bd3b0b6695b66ad80affa9154eaaa54666da9e3ccdab49e9fa022a91ce94ed04f4f77ee59666d8f307c7c7a218f0a61ad40df5d68ded3b4db6f60cf7469e7404db34f5cd8a66d03230cdf70d14e6137b18f48293b11bdf67a177d11cddf5758d52e347fc34bafbd86aafdae08a4755d651ad871d7345693ef9b6b23f29e8ab07a57cf4fdd720fdda9ae5fd3b44c7b9685ee95302c1ac8aa358b65bac5629bb6223a6d0b96fa4d7fe82b3b50d3bb2290aa4f6bb0d75ec3bc7cd06435f9c2134d2225a17979227b2db3ea33177d69f6f24256e621a59a85e6b33c541f6143f336b32a8cfef42efa1efa1fbb548be69c49d48fbee64fd0bc5b35d2f31381b8d7a4afb5b29a7c3df4550463597b2e0f29d93c74cf65961ddadee52258bdddc0eef747b8e34cb49dfbcd44f84417df74f1d5da03e5ebced51b3a76dc51df7717baeff210ce4ad672d90fcbe69e5aebb6655a16ba1f9abfabf7fc041589ad5a677605526b932e01319d168cfd241108a8b5338940b8357a6d5ed364526bda53ddb91fc14f65227a25219a59157ff3f447e6293d11acbb37097d4558eaaa1ff1de65a2eede559948c94577b41379d71e61daaf79b9d3ce64bab424d3a5d14ca4544f443fa510cdacecddb31097bb2cd49d7b977fe88e76eef89a93e9d298d01ded1364d99c64bab4edc99741c98ea64b7be6a4e9e727408f3f336b9b00975937b3ee85e839d69695c82e02334277646f3a7c9af624da99689746dae5912649d03a9e75f30af4f813a0c73952ed1398e7720b74477bd0cc90ae0c7085b16866ad80affd08f72c1365444a42d9b91369c78f30239a9665d9b1f4a8cc00654168bab0f484187182cf7942a89221f512d72869ea570359f42c9b592b685a966527daae3dc2222c0337037bae064658f6820b59d19c75ca475f97b502f77b21ee37b3e4ef8b6042db59320f29c90f75a7975968e2cf17c152b7309c023318ccca14a8c168a6bf3313cd7b367521fa5466c184e66b9efa919aa732919250ea342752bde64768fefdcb44a9d33cc282266619519de58008539d7524f59456614041b60b19982ed95a0a6465ff1e612a50f5991f49fdcb44df539fc9444a42df53279ab9ea1196d17ca99a195584d180113603465884a5b2789b85e6bd2fc118ec09e2ea61188c300e8cb05a292c7a4284e86f66d947d859362ba9b5de55df53df15d5a9a1619f3ac31f7dd5206010dd895f19f1853d9d6960ec2446b2f74420a0cefe1381e68b3e7b11faaacf8e3acbb22d874f1edf74f105d19d9f9ee982f21129d913a5fe5d3eecd1bc7717f2324beb6eb3502a7baf17aa17f22efd8ef4c5b697f703599a76ed16198136aecbac8bb350f7a1ef5d569debeabca1b5e6c0d9de3fa1ee5e1e52e23e54df9dcb42debf3c44efbd3550b6dd325d590af440d67d847520ebe61ed8f6e4b3d93a4d57e681f9e643bba5b357cf88937a3a7dbe1b8460adabd387bba1e3f4994775fadc1b32eda656d3955debad045f3db54f9a16dfb68117fca81738b6c2acdaf8a28f5ec7ecf445730626516214ebda83a6157dddffd09d7aeda1aa9f6cb6d7bec284d1c853ff435f1288b8535f65955675f8d3f5ca4d7e5919f13dd10804d4f592897ba5ae96629280551ad19d4a77aa0b74e7c6888f698995fd3ec26a96592bd06f3f723fbfddad3e830105d9426499e9aa8f3022b2232cdb841871e2c20459d9234c32d19d7a0ab222ac29c2b6275f129b6bd6c4c5b7baab2728eed4c79dda1377ea83e24e7d84dde8aa8f31ba6a92ee3aebacb3ac64a86d8df5cb87d3ddeda3bf3f32bf65a28d4889081657f4c5d2ce3dc2585a66add0ddfb117c2e1371444a42dc71666944f85d6669abbb7a5688302738bbe88e5d41f9e8a7112735dcd3d7b07d1e4b8f658466563d7d112cb36aaeb508a681b171368faa24a1ded02c2374857b7aa17b9a8794b40fd1b806561978881ea8808c0d361ed83cac790ecf53a9681e82618eab6c52a99a9a9a548edfdb609a474e095d423f265fea62d5b9acfa3c6ff5a9feb9707398ba77962aab70bdb3525905fcf97d3539cc9197d0fa5d06c8630edcc090496f350fb9e7f8068648b83cf39bdac0f02db45766e583afb725943bcdb77b15a864a86b50186a24925342dbc6a6262fa18da3eaa68e55395c42b787aae3d52af2b4f0a9529f0bcd7dded4f159aa9ba4b9cf13bcc7c8b33d64b284a69efabe846e4a641cb12d18036d24f19d863b9005821354df9e3a0b0427a8728c3cdc095e8e9127f260bcc4feb0c8608285b89743106edc9cc74d2a85718d8a07c63518abbe6326a5ba398f54eaf2372f749da2015360283be57973f3bcefe8b82d0586de5337e7e1b9bc548ac75967dde40514752af59b148e974ab19e3a8b070e8e8d77162b2fa0a8bd6da3016b7238934a75a91d9f79b7e3ab1d399cbde33adea552341dcd8eeea6deadbe43c70e30f60a0c6fcee32a1e37f985aebdaebb2e5573f32e875d77291d3b76a4763cf51c3b9efa8e54bedde57049d3d43cbe43a2e33436ef72a823873dad2334d239523b5239e471b33a92d4bdaf52f79efae132b2e29143168f9b9b7b37f77ee31da702ddbdcce29159383836ef1ebad0a9d5cd4d0e5fe85899c53a121ebf398bc76fcee326c7e95ae5f0eec85d0e755cf57049a77298e3343ac0d8393a5055f3ee5d8deadb69e2bdd49178ef9eca19ca194b82d021697ec0b1853110ded6c697e3a18eeff0989a5a7ee6d1536186e370a6d9c1711fc7d1bc0b55bfb7f16668c0101c327310c9cce575804b6acfcc78dedc2eb6b1f138cc6d3335b739cbcb0b286acfe639ceaad931f399991c9f39cb66c70e9bdfb372d47898dbeedddb3af0cba16a26c6b41463aae25d7645f8df4c0e67cfdce6180cdf2d74775720883357fdf8fb4c2a47a8e33b4e93230788c4bbfc0e3084313e1d796626c997e33887dfcccccc6b66ba9c2387f13836cd3c869cf67e6a66726853e365968e2399b9771d33f73ee305c991c39e20974d0e733c869cb6d9b1c36bbdf1279e2f2f470ebdc790d3396c326bc70e9b16bafbc435ac22b17364568e23b179cd73d8bc6626d724e98e85c2f799cfe490a8bfc7dede2da9de96f193cb4223090662060b8ed3a75e7bb40f3b9b9dba63c15a2b2d9a533e816363d5a7eb307cedb8033729a6edb7141c353d0b85edda53a75390697a9a635abdec1a186e47e25da3798c3c33dfc01990060cb77f9f9e0a1b883d9acfed952687dab75b4f05fb2d63958671a6cf76c2f619ef33e07655eaf3aad4ed5399959d854277efddbd7b5e6663af1969226147311220dc3e5ff38b8384bb392cea2625e3eae03c65a9d2b14cc7a72ab2506dde793cb5da4d6d0ea15d7ddce0b3cf6ad6350b75c87ae1476773da8c82ed985baffbd44303747c48808e0f773ade34f770eb548e64a2187c2ff77d91d210ecfc0875eddb9da93207e1adca273da88f3e9cae48a5919d954a4c07295aea74c96e4a09c4185240758c4931a5c304c8c699ae8945131d635848e9103ac6a4c0d2aee963a78ff6f920130108383aece61f73670a91517c5a6ee5d085733f1b7cf6610cb24319e2b4bae9ca7535c9c071fa70988b6109d3f517cb98066aee5249bd8b3d3094a1bdae939fb5fb067a99bc772512996390d8761c91e811c1f9722a00359763e4f172884369d4f65238e93a3b798f1f4451a8f75b96a287aebfdef109408d7fb9576f88f484e077b2397c9c43fc25973bf720da81e13dbdf60250e3ec01a08681fb12ee941e831cf7e8ddc8f3fb0b46392f6fcb60567cd75ab3221636748c6171821e004ef2c9471656225bca9959fb54a1b294160d63b9dc12db1546709db536e3b82b9c781d6357f4a069dac5580c47a6ebb66de3baeec94249efeb18cb8245dba47014aa589623be2e954aa9be2f0b94581629335bc7589619683a094639d34d57cc8a36da86c61342435353e32991f156405911d575c15b0d3ef9d86169ad05533abc63c4ace8a1c3aea3156158b1a56d260eb12dc8f40d968e07d331db00b1e9185ba2071544758124a380e23d3ee24c7b468f23d117634f906928aa04f9014552cff79420a403636c0b248c602030f123480926f0d0c1d73d7a47baf3a8c197f2c008c39f0cbe0e8c71076739c2c0d0a6b3ecf6b331777a2dccbe9dfe7213e7303b7d6f60d75d7a862ff40b365d69ed8f8896effd633ec87c09f175636930cd200e34c20002366f427cf12811a3e107323fbc310636b969d388b1276cd031f60454b368beaab72ec0134f2a90f225c7152c4e4b5b00a0641413e304055c82ccb4a29b4b6c5706d44c8506a5fa8d070dbeba45adebcc7e9dd9da93058eadcc66fad45aebd07da1b3af957281ef0e3e293b7af5b1a55e323bb6e60db1e7078baeffc4c2ed506b85d52aa274952bc8a47c351d634bccd0614f46832f836387366c12dfc54156058d4c896f334343c1977d39faee9395ef3a69387c9b96acc997519109f16551a0d18426e5bb53ac159f364486c647d33166e54986839519ec951e68f9b88eb12a6b208186dde1bb1d6355ceb0467c5ac758952f559eaa54d178505d2cb9db36ddfd52e1b5d9de1364ba987a1ee739dcf20bad9eb389252f891aae89a3ee87d45685093fe9ae15230e0c95c64494ed0446385b22e9da6087b5d2a481f16a1350591734b4ca91ed4941cdeceefd9868aa3d34bc47f49c737b902dff2c01457be8eb7e36ab1e7ace993b2d9f102b51559238b0f5afbbf75b85ef9a281c7fb4fbea312224b3ad9b573d7df261cffc7c6baef1d52f2d373ed61553be9926ac0dbe4f4a16c7a7eac885073a0cf1751db9f06006cbe5abe9c8c58d1c64367003aac6e0b3e9c8c58d2e2d9b885089a23bb1356d0371e6ce4ab5828fca949e5492e8f9d6cf8cf7ab1d6354923a5c35458173506a53433333e74729a594524a29a5a90e29a5d4ebe69c78c5cd39b7ab514a29fde67ccad9b473ce4ae9acb3ce5aadadb54e796bad35d31c363534339f4ac70f17e059b338d37793b65e04f63436729c872bb5dd125bd4415cacf8a28eb7e136ec75a94b2f69100d1279702605c1c69fca13c28a1594311bb139d29dd83547683bc874c54965a43635e76c1966119d9b1af8dc4aba22cf36afb531fe1d2303721a497da44b6c3cb714e38b6a191829a594ba7e224f3c8f18a594529b8caeb468eb0c837c5c143c629f7ca4972e4af3c72d71f8aae84725fd545249f5a994a8a594d2cc6e56537d76c39f4ac96e98e32ac7d50d5b8ecb1a677380b7fba936cca9a4b4a776c3dc449aa26953ec449aa22545d1a6588bb96d8a9614459b62af662d87bb0e731aa51d83a646e6ca323a3ced5ed5d75d4ea55205759eeab3b6a6aad53e550a739d4aa9daec5a96799947b7d3ed586e56ab9997655e7601d576fca572f4f2e931e6baa52d587454aec34b5b9a98b66cd9e2edaabe0d732aa52d3bcece65999669d9693db598db3e36322dcbb4943d56ddcc7a33004f9e7a6e1e113969d5362ea5924746578c389c52a95257acb5d6629c75b3ca5c9a5ae02af572b34995ba82ebe56695a6ad091db8bb9c576715fa9a994d1b38996ee6d2369b724a9565b9e57076dedc32b7cc9db9e5fb81d7799e907b4f4b394da4893495985352a0ac97db26d2946cf6904da9536ae5b63b91e694a419654a557d954b714f61d53c0a42e6c7dc013f7e857332138a14616664345946878edc344b919950b479348db40945f5618d53a9541f94183734a831413f3f3f5063c28ce9a0c6448919e36da90b35264acc18d5c7a9e8551e91d9de4d708a4e3f25a85260967a965c5bc0787289daacb67cae1fac15bc19d8394d9f2fba6cba74607220e99bc3bb354b5127fafac07407db5e40758f3f2fc7636ec34b5bb0e8a8985bdad2c4b4e566ee6a57528ff1512eb735a13d5e05a6c02b9f8d5b74d96fa017a34c9f99e8ca214547d8de09393aef04b0ebfc06ce2ed335efdd3cb74cd7fccc0c5b3a1985be66e28ecd3eabd8676fc2024d4f00e99436da949625cd9fbaa9b3031c5b2125c17d516777ebbc5477fada3c2967883c534aa3bb8491449251e4d1514ad5751def4ae242139f9c15d79af2eca94af561170b4f46c0cc749f0403c6045f0ad3355f64baa47c3342e867be08b4758ccf1e42cb5c83c207dafe22a1494d60683c21f434b5a6fb22d0edfa1381e49f7a9a5cf2889e0f7774fc7348796d340668bf5779426ea64eb1a6a6c64673fdf4f47435da6b3c21d96b2e7d714d4d41f195245b1d6b3a7e844882cc122402ddc7e3cc974ca23bf39404c9f47da5654d599a9ab2f47c77939824994f462531e5e8727842ec73d8e6be3d96d06108b289eecc9d48824c7271e0a53b946be293328c849aae29c5c8244982844114619e4ccfdf1c7e5a3e23f2cc67399c1d626f88ed9a2598c833cf830b305f044a753cc749dc61231d6de030ca5023a329a8f4ca96ec433dec9422120800004000a3150030301810084562b128ca034dac3e1480107fb24a664898c9b32009521832061963882140080008008cccccc411007bd08b97947ed2855f7f22d001f61aa652530a12f2bee402b1ae1412d2fde2855a009259d1835d2e99ce6f8b702db4f0d5e55b2eb84554ad026f4bf946c4f98653ff31af76aa303a5867e14f83c65fcc9241481251939194a78a9f5ad6e114ec9a20729a3693deacfff4c12032f1b6947d568aee1941eb33fab6e48742254dfb38c21b04725a892cae7eeab4da761bc4844882176190f991e85603e3bf6bd297d9fe867b540e1d7556949193126fe5163e3d66d4ff1b19b45264d4b7a0a88147f8417a0ed561dec0394780689ecc16d3208e6ff59ae166a9cd74562a22f057d8f2af78e05e9a363a619db7e5d98eaf9e6f307de0f36cd6d59ea393b92d486c57fed5f8aae66c4eca13c72d1e473cf0e23fa10c82674217f8597af4e8dd0d4e90ef5042f85d4c2a206cf56a299ead6b5fc60705e1164ecffe7627c80e3f06272d11e334c4c7c159141cd998d015b2b39688af695b50689b92e19f9a9f91d9b500c23c65644ee5a91f35dfeee0889051f359179fd985c8766da345dae3d423ae96d88c1b430576044e5c7b4acdffc66ee94944975021440f0083fed3bad93aac792ed228c09463b744817d986a83e7e55c8f864fb15b7a43f3bed500640cae7112471c513d780a83303455733b0675df00d9bdac1f12f9dd8059635927a83c8e28091ac8ea7f959842a0dd2c024280c89107048e8804e5608803883ae0999d99bf11e9baf980a7bf15900c216d68032fa6c02f13b4ad0aca93a481c2df43200b174079433b29772751088e86880ae0330c58957a5bd136bd69061354a2012685de7b075b53ebf261db90abbfdf09f877c1ab1ded280a8163c952103f1b0b45baf37a934838e174cf2c6bf06496921f8bb6642628b28ec7b4c079a198a2ed706054228cdfd18f6dae3abe33308368faea7816084b6f9ed50ea1e7c6d448ca56c971dce6ef3e4390cfd58fbeff3a788dfa71dd8bb032feb9e853cfd6b86c0c0376905aa95f359c5f07291bb34dd53ae419da96b5d3417562efad395f570c6b55f65c49a84cf5ab3e6142ff0af0a155336dc5dcf4f11ee5bb5f8c7d33534ca2f2d2fba42d91de1be44da8235ad7ecc9094ac236b1688d184e66579603a607305481f2c1d52925bc26b2867d1a4ff49f4cf6c94348d49bb10bd5e2c9135fd6e280e4d77df32f9e0b70ab0978ef2b4b7943c24c0d18980736972f7d7f32950dbd6d5f76d72874a1a195455eaf1cef295535e12a22142db3959c7e2caf70f15029dec13a61fe6ec216087ea7dedf2ec856317aaa57c59ecd4ba04e473ce3e1c60e25f1a16b5f05740f012d86bed2ab47bba55a0c351110fbd684a43742086997ae614f3f62243566d93ef8f7ae6379e861bcf1abcfe4ab8bbc8f47eb7b8deb19faf025a0f298ec7578bc9946d488bf9384a36330c86309bb0555f95980e495d6161e3ca7ddea03c9513773e40d147df8c76a8593c8aed0904c96e6f746af487e158ec5eb75e408550383a6fbe7166c1fad005fa2888fd2976a090c2da4fbf42827b552bad3e0a2cb865df7e7d93ead5cb8baa182f98691980395093c2b3bdd0b0d06e0a9757deae6b17f88b06e54fe4defb5edc11713f9c89227667fac115ce817f817cdef2c7324929f60049c5b4e80a75326c0cf67f520f9140936e0be8166fc3d543d8a458ac8d85deb6dd7ff103ed62ab2ab501fee50015534d151d22907f3dbe1b8107718bde040ab6f41ac61179b6e29dbe9ffdda5abe787f8d21a5cef7d389752382a863bab82579438f76dae82375fb8f280f7ecbe2b02ee6828052f07e6b182fd254c74d4eeb3b582ff5b47075dd51eff5a327277d35cf8362948dd8f7d0e8e728c62de6a420c330d7a635b23044a6e34a450c7a76e1a432601079f89d3b791f73ca6400042774d9ba433723417b0a888e5740c4d5e5ec91638b1d20b69fc8c3baf3c73b69a76dc64ace877e7a58822207d76dcc9faaa62c5d632cd9273aee1779f7349a9b8cd7321ea1f0905579f4220f2513ae23ff7afb61a0f12da63cd8b9d73ed5d46d377d912d877d4dace4cc93d9bece2218971023a830c78306b2a95e421850b06b2f694a6888289f4cd1a85e5875871c9ecd883eb95152b8404917779717d0a5c556df15121ce3b13c4f25c23ed7dfeb3a6ed33006a7286f683a3989818018f3db0a32f7c6244ee4c9f4022004ef223494c0f97a34b1306e6d3ac0ab38924fcf9bf4effbec194f7eaa580dacd9eb9dc0f03390440a81b7ce1241ff9d4f663e6728af62254e67770c8b3026d38148fb4efe9dd776e2112aa9b4189487e3e119ed23ab92fdaa1029c4ab9892717674fc95cab93d06af871e0fa8a8fcdad2262e9612b4c5f8fe937e3a1856da459356b91884a8c17c3f575e12e57644e9c1c4b33feacd82f54f44084ed16f950f4b209a75468fd700615898ec4fbf008a8f2a85d4cca184e89fc902cc556e76e007796f6436b13f74ea3b362ac768de191dbfc5525e55c10c6258db0ee61c00da7cf8672c58697dd052bade7f5067f5b1c477aa1e810e0d635eb55515609f2b94867fb04bf90c5aa9c43bcf117052451553b382f8d063522c4a5a942f3f230440e20044b8e26c1c8652dfba62e6efe1f9443af2ca303719816e2895b4ecc771bc340c32d773b2503b8bc4d99bfa52a72ebfb4dde5297b5acdeed5e250c5de5aa662d11879a8015047d0af5e989cc875bd642a89401bd962c0780c5755111630070f2b48dba6447e869d5ed54b7f079cbf5ee243b641025944698a46f9d23f2aec41524a8645164211855ac2c2cc1dbe93a24f88d822cdf957939f80ae91db8fce1c250b57ec00ba35f08243bd61db900214b7d87b63f96fb90bb2cd714022131659b5da06d6f335ed966e52ca384265f2e5de6c5b481a3013a45b6593dbb709b6367ee3548a6de9947d74f649b7de9adb187b7732339f07c9e885f47313f73fe26816059529c04528a5e4dd28013a443006ffcb856f4f55b3e463cbb2cce06c1b967c6d00ffe02da30a14299f299a9e977224003bbaa4d1fdc0e8e5b5ab3e181c055418a26bc3b4ccd6e397755858f0f6d61717d1d3af879e7c13924364db930f592f6c653166594611ffefc9d2f6298c9a41083475fe82a61b0211710589dfbe1cf5d08a0bf06afd1d24a33c439cd06cac4e2f5e5c9917132df89514885515f2a56dc4ff8189aaa6f3bfdbe9a21a0fdddad7f104cd6a79f48f6e2aafbec41ef7728146a6ec269dd583bb9cd5edfc1a18dfb64dc50e1e440f4f777c505bc5610bc431845fb77614f0515472ee0f3e423bdb79338b3d975144b97f94ef7c8eced03b1e5ffef2c8367bac7066f1f08ed9fe6c32f9077fa9146cfa7d020e90351e6f83afd58ef4d24f6fd31683421e73604ad79fe26d6bf67dda2cb13f55718b998f84072a6d9356fe36eb887fe52c73140d3f68852130d66df65bddf676e2808752398ef57baa115d1b2eb2605b50c57e8755f9c876806fac40e7e0ed1fb7d7c4b489efa541d58a3d98d4368a35ec916a8872f8ba15775253999c2164668465add38cfe16bd6d66be83b15183635462016da833866818585a92fc1b736da3cd8c672cc9928edc8732abdaf6b2be8ae1ead0783ed9102121e0941b26e6b151258ad68f56f27b1bc182d1dce82b813b0b37c19dd7392a074038cb0e25e103b5e2cdd2c932b938c91a4c610a7ca370359b65465036c4cf8dd0dd48fb116d5ef2bc509493e232bdeecfddd2424f9a086e6b143d0544db12cb22c3e59be58747ba56f408bac537a50391548af5a38d2dc9fc61b4f508a3e27371c5b2175a8d9d3cca51d70285434e4c8aaa6a48b5ad2a4ad1a489f01e70eeeb61fb0850e4c99e1bc0e4c5d73381b7278e3a264c555e0473fc654d43b8339bd7cdfc4506f31e32c6dfd277072f72aa8df2a300cf4c6b5b086fb1d01636b7fb801cead1fc2867d324fc0667698ad911a582c965fa687041fae16f08481ca42edca4b36c6b6a06c799c5d41181317bac020c7d0ff5289b81b859e3f6f69d7a8c95ec050afc27f589ac064545014b41b85538825fc53f0e574c956d044387be2c63c8c1b6bbd0e08ab9ebc60af0a437814a90c340fa796cbcce88b966146f329dc20a03a0e97d42969d699306a6583f0a985c38d2f16f506b45554d01e0245010e1ea01acdaf86c828d8edfeee286b3b08b352ac6d59646d9a18018436308c98f2139fd90fcc8cdd337a14d42cb41fbcb3e1b247d22e435aae1584d5b114770831d3db3fe1c08087100e7c75168fcbf409b72aa7ccf4e64581018ae40dc4bc3450cda8a5ff301cd6b000b7245548ffe52d6c684e163588f4576c5d1f76d6eaf95345e19330bd8c09313a72bf93b60386a47b8175ecdab1bf467d734abaa4ce25882c8542d43ec7fd034d47dffa0856a892b5ea633fed2d256a47433bf7c7b4543ab0a2ca148e909db7f3089ca28072c79970f9988c9cc4739c7be0c89e32ef64ca757b4a1e634499f4284a722ea561e5d35272f2753d75a60e6c0cd084cd410d01494845010f04225229821e7dc59ad8845449c005e168a915e8807892540a72203e2275055d209e22a9170d9cc081ad52e5fc22bc86c0658f51259176658ed6a342bfd75199b40294524aa484491b8e1deecd6322965ffa991813b327473981b1f52b952f34ddda6a8a5779daeb42b8b4c7d103e9ad41c8ed18421b05c296ec5700b27837abc3519c60f53de8bd85a4474ae0c70d054d3776be3a30067882350d04431c498096e6a659460460850b22a98ddd2975085ed8c19a3dfb12e05e9a7995fdcbd2236a381514f322eee4c8cfc7197c79444a8829bc4366d346f914d93b85fdb8c4d81293fca7bd26442aa3503b192bb945d3cd7121d288c18d8a0614010d4b934bf561ab243cb5214e499e7bc2742b97e8a430f99d8733d01c5c5ef32d7ff6a99717ea897ffb915b8b07444815d38370baf1c369e25a41aedeadbc02305a39387fc423dc85145fdce1e46c98e1f1a0f3b3b62ca939fd498852edf4e40a0cdcca950c37a0ed9dfb63bb502b13f1a669df6d7ecfdc4e64ab8fda6efcd1fd8fed9f3772900f25983d37b28688315cd16bcaaa9e0ac7ac9a92e031607544701a9a169097c27a2bc71ed587f6edbfa3972620d65d1d29982277b14b8be318985947fe8fe5efee40503137e0aba9cdf72314a7de5ed50e87fcf209f25b0238acdb58b998e3277ee9b959337274034988502e854879deffc87f158bc08f87e1d11f077a8fe2974470db18f5343d269a915eaa62600008c2b89377da589f136c902578bd99169c2441f5dbf8cf1b18706f91537fb61acd9cda50c91bd5cc2d53ec88861f9455f9216d7e25fe5c320895387a04b55aad20b9f963641f61781572809d2394f11e4748c67d3d214d4724d26c0ea6587a627fd92606dcd8e411fb5c957db18696b6f6ebff3eb3e25141361ad01b3b17812cae4970c7f8eb2c7edc4688733b378973cb1e9b4a5d599b50c4738129c10b7b5be0ff10a36d20c6bf126fa48b2675f9427aecc109579e1539025821ff365ef21ad130e59c59b6af822489e59df3a9ce947f1a407b9984d9d99e6ef8e73f1bb040c0bc32d7e344dd5631eda97a1738dbf6b39003104cfa000c8b684b68145d978f51a47fae2e085b8e72237c9775cbff1104b91ba176b0d03b35dca8095a781f7e1329a4238dadf623287189cd100d39cd45ecaf0ddd851a72352dbadb32cab955db87e66005b2987e026a4c23af408744297ab2e2c4a2e90f8c887a4c24a1ee726de8002ebd92b7f99e1c6641d05220c4860924d81e11c322d65d3f8e8b5402cdda9a630c3cda5e88b32b7538af165926113c99a4f1a5c2b7bf9567739be30784cce14f8d6ba685e1c88fe35d738c4cd1632e7a74dbead55009320a50dfdb83b912c1b6675601adb481d56fac3334dbdf18f2a4592d0adc4e63be21271684f1941dd052bd2937724a01157c8547dd827704eb9ac74b993f98bdb8dde573bd567e1dca156ee7eb59d069500a54f80c1cc10a1f5f7b6b5a2111d5cad600ceb34adecc819cf4e769a226ac48d167e52f6b0c44f420ea917e74573ec73b675e39a708571ab74b92b2e3c4504678d20411a7c38486240021d05032786a8240caa2892c85c64f001e9dc54236c18b235fd00b9dc081f9afd0df166e105bfb4ff53506b623191647d747da8439574d17877ad404c86a718c42b95dbb011785756be6d8b00e0300204575f8504761e3892020c3b155a17a251885dc9fd5a57b74bf26d260d1e7300d2ef718bde5f086b33cef4e14ca359185318721be944ca5a402629116d3e949715e6c8834198e8f5241a94fa594ba95c9a7e1b26ae357a20163896b0e76aa2819f45f437a213fa1f103cbd2c3c1e1269c42908c3f76ef01fde4d3c1c13b61b7818ff3e68b698ae51ca7481c315f7099e86da200c3e24626af511ad08d2d78efad8219457d360003711b383792f4b23d4b17b0ebaf27818273ad40e03801cdb150f07aa3c186ea470403854dde8103c510c812d4f6c2067227e7cfa9d0178d6d1fa5c2a1bde48a4e1b9e7fb717a2ee945429744343e8acec2c640397c83992dc9860d13346618ff78634f1c028c30ebd1de04e711d90112df73b902aa16a5a4b27dd152aaa9c06c6da564c0ddf10a227ddf7e634a9d0051653b1df327a8b02bed1e403ef1b0077a42a3f29d858ff44497c0332f7552f745b7677634cd3492a683834f211d56bd032ee3e389d6fe03d153b4e69bc8f488067e217b54f5f80c07902c9f8080be9b75fd9e0f097657957884d47d1dfd5813e502b9de8c46746eb953a10b8f3644a960a742392c14de6702a2f882cf0aff8f2402ed58214172d18748edb398c3e0545d2c3158e577983a65dd5e8744f9c85f83f6aee5eeaa848ddcb9ef8ac1c5d0c0e89401d5fd504c127f368d25152669dd0de371cc5dff213d709f1375f84562f62fb67941bc5283e2a72d8fc5a90e6d273c13be883fde0b03a93fc202178424bd0c1ebad3326fc6ea2759e99a538e820d3f47c35672ca5b2940b46d4301ab3adb4adf0170222013ca3a4a70001a35b3e443b9eceab6710320c26f33730d82db866945b47fbbaf00cc4a7281a5180d5b44fe05947c5d1d0854686c90ff22a0bf44f36919c7805ac2ee1ed891040272ee24649a2fbfb844149f64befbd9225bb50a025f63cffe88efa94cf900d9772fabd3e7a945e8f3c164e380ab5f960e5991e4caf47bb5caed934f6b15876e88c885b03bb88bb3deca2f691269ee15232a18213d29e265c2d4fbe183a3e740a8a6b1c973e39f6afa2a7f2cfb1fed4f9a2b4da37270032ce92d0aa52836f5b64a3e3f8ada071415b28391e4f4ec0e533e3a9c4c1ada754954f4238179f1afba1a5ef10f3ae7829d918a478dde68b8606a79b28d924928aada4c3392d4d6cc41651f46762f0aed8c75e3cb4ef93b55e4a3553c3a6b1cfac512fe8e6dd2ce00d6a1ef32e63589ad89fe3d0f0bc59a993de2c6f96d7e9a110da07dddf273d286dce525b0d6474cb49d7650340eaad5e8f3bab3b4ccf653c28a978f4c6b30c76164cc13397b9880c86c48d15be220bf99f29a39838230492bee08f13dfeca1e31861b132226c744a9c74900b1352164940eaa75825da4c3ab8b59849f5fea6d39a9c4f2dbc4a890d39bbeb851ac96180b1a63336ac6628aa73ee3b94b06ddbab90583e9894277dead1e240bb01216aefb4434d77ef2cbc3222d0f9953750c203edb946c5edd2c74d28072471befd2772b8b76f0e1c68e6c84da6a4424f101891ada0bdb117ae0a06c92c45f566a3b582a66962eb5d7e4205d9b1173e15aeea049a949676a98a5de503480f1e4c823a9605cd0603f6b7da0ed4dac391d5e8385adf0bd4c0a219a2108744791bdb154a2cbe9645bea4e09fd355d8a3e9e79d64a693bab3bae34297ab781915e253140c4151ba6ffacac3a4b74f2e5cf195c289b8135882e445d2d051e22f21c898e3fbaa2436757b9a5c7acfcd016b98a92ad511dd0abe5f8e15be5ae8691b0a596a88cdb3148d3a8dabd6bafbc16ca140d426ec91478c807f77120726438a70f5711b76162205456855228fb162c32e0285237752c84585326bad75e99310ff096e8fbbb93b6140e1a96dd1e814c79b4c6893ba8cfef05e5ab215b00ef452a5b08ac11546cfe9356ed49ac51cbdd7dc8d8848d76733967b78ee43e0d719cbb3b75872293b9268058e3927515df3a23ff05a88c62448005a4d4d6712101c91b306520525065661c87e621c40dcaa8357e4558138e1993d57d453b2dad6ad1eb5ad1fc49d226ca0e6765641074fc4880068077a008ee610c3929d99bf0e7ae1e809c5ad07e4810faee08dff5d044ce77730fbf71724580ffa30f932d4e056d3f0c135e72175d730ca17b63c032b07caa5124b52dd063f47679f54dcc68c7bedacc119fea98a958c25e532088321896750dbff6b125aef9f0efd25105e6c42cd98088ef881c039fd5286883cacf8a488dcf4401043c4f512c8d34448b4f0bc4cf6b348ad15a5d732bcdd2e0e26809e6d6edc937d9f99c5e228c9126a59799c41ca2b53d34a76002490b564ef2f2bbd1b130a020d480176019fb106261e7d116fecb4639d8959c7636f804dbca088d539ce5a17c2ddbed272be60ce4fce51ba2a1c45a8c290642bee8e6127d22051005e3f80b937835746565f0aaab3bd9a7ced58813d5e5287900ace0e3ddf53aefa05c1cb5e5ccfcaaaff2c8beceaeda565e5374a5c0138bd5318a2cba4caa609e992741185837ae69d01a4308525b1af489bc86197dff81e12886521e9e91f1cc63982ed41c03fa879c1d0ce84cbe4d5c5be10f967d0c8c9318240ab068438c11021a1e503f07d6435fc0463bd4f64d3fcdd6b653c2c679a59f25f6397acc8f3b54836f60bc584b41c3f59d861450a8ecf50870a2c5d410ca21ceff6566331cb997a320e8e05cb0536364774f988f15fa865f4bd70dd49f17a688fd593d879caaf3a612b4521f79fe1697895ef8c81e21a7e90f5b9fab466b1431ad7cdf460a57910303f93fc6ed55ba8bed08cc6d6d265e8cbe347361b62178ff17377dc5d510cde0c0b1d2545c0588619ea65e07d2072ef2f004844bd76481cab337a0e2fcbe5c661b9d2e2f7d18ee96d1bc6ade1672fcecfad20d67e2f0efbdf92d87bf939033f06c9330f43048cb68fd1e4fa4139667b5c34f02b5de80da296bff15649ffeaea8fe1ea703b8e2f019716fddab143c689197f6dac672c2920cb86448616b62438df7c85ab907180a6f9088d18b9dab5501f62264106f132d9a86c6f6c3440477e4ba680b653cbdf0f9118174b471f78cc6f58cbaa6276b7e736b5e3858c466a1379f3b83a1ba272a52187fab6bc18553990d8e3ded1a2057a56033c02a9b7bb9e1a86e12e1f06ff6670bd5a7d96cce1ed191c5355622962d0c26affd4a062fcf42f600ef598287a237ffad9da8d587a92ebc5c7ac7b434d94054ecb03eab26f271f8e164ee4f3099020665d162ab9a9563c648ff53de928281705b5f206cd2393359187c08ec6af49f51495c6c038bf8b0e6032ef38acdfd8651ee0d92bb85d7dd7613bb773cfce9c04e44860f98f877e81a64b0de53174d4dfd93731d535f86dc6e442a03b831c275a83b0cd9a8a3ab0bf815fdf2c5a3e0072f842eb2b4bcef0a975edb3ad7c0db0cc2bcc77da4a43e86dd2f62d21fe91a096e640571fab5f32d5f886204e67a630483ad02fc496675e48c42c0a52850923454c92feeba56d033e9fce0b86c204a7a7b0303d144daee1377009967087e8e6ca74e3e3d0729837aed25dbe3421e22df95f0b08096a5e299ef89fc1c156168fdd262cc35647f701a31d59236630c4c0ec769bdc9e051a26d5b874979f878ba8deac103abcdf9d423a9f019eaa5cece411556d2274757941d2fb928b0d80c0f9c2cbcb42e786c41d750f31a92e0de3549a547d3a2351e488ea7eecde122393cc0973d406d6ed95ef264944fbe8a6bb82f7438d0760b42739d3fe0fc8a44bd23aa3ad864feb5a449abb5d1fc4f87c30dbd3c15f36cc6955884e7098556a1765038553ba6d780e19d3ed91497929ce91bf824d521be8b3d3b1f2e10c33497e6728a4292da3b4ec5af51d3416b7870a98d171a0e7bc927b559452f02f66d70b7d2f38ed241ad839819f2b0035ddf37145a3ece6c7350cf694a96b631b76544c5fb6976dd2e31e8211b5f781836f8665452517257057767e3a4d1c8cb28a8184ef92d5380d5f5ce08d1b1e4ff70b5cfee9eadb1d0cb47c703e2b335cd22eb9a654e4f5e3ac62b37cc0edd4db9d1823e2c0213f9ba637140e59ef86828ac640456ec4d4c8d1a6ccae3311f0a20c21764b717a0e788bc2b0b59b1dbfa2714003620bca600175cb941abe6565ab4d2c4b4fd4a6144a70b7b1025108f9271d9e4e3321090a09d6dfc4e259fd8252609d9697d446422ac495466dbbcb4e2379b58ec63e5b03307922637a994747d55be3c20c84c61354d9247dc0a9b4c255fe0f1684e9318ef726b71153c43390aad3ece7470b203b8700eb98347bfa2843192694f991f07661226add3cd43df3c8d22168192916e1f12ab42e28c6f21c1ab684ef00a397354d76dc32983372c2b6e78c632da43f75917af5b3b2cec0e0d5ff56c7cdb7c16113a088e30ecd31e1a379a992ba20731126e29172c016d0a89b00d1f63cd302ff4eea11f769ac8abaa9c0600f7d92072d550d2676aa745156baf4d49e06d963e48d65160092bde9a2a884106e1ee067880fa9498550bbd2718079069bb9565cfee117c8cc0db3a95a088409c786d3369f11f4baec5cf7db1b5e00decc7f8a41588f6cde3049b670a7df2a2dfa299e5f43b312f7c11e1419c7f55f57a328955a9ab02d39ce3dfbded29cb7a65ff6bbab204fff0bb738fba22e7b7511674fa119144ab3570112b573e10eb3f740ef57b116de9dc7547c7137d7c8391dc301c175807708d5f31a495e92c0c60ca686fa4deed529d193fd481c4b40fc9b1f2d763b23c23a4f10fbb87fa6c713c13d7edb67dea81e97828a221f12d6c2e3eb273e0e59891ceefd8f98dd0509acdee2ace6f5a9ad987cad4227aa8873077feefeb3a9ea2f7a4a33685dc0920caec9e7f5266bd7764d970d8510bf07b056ce763c7d63918b56abbcc0212453850917ebdb6a2087aa5fb737e6d79daebb2778feec128c0d506cb72e1780f9d02364aab99496f528a0fb55bc8e42635b2deaa9a5741cb4e017d023f7d2deb8127a8e9a0665b7fba1c168c14436a29d87598e9f7488ff35b013d4ef3ad954cabd0c29a4c958eee7af53a79b6fac477fed6bef61a999cdc08135ff5460d87e6e55f3b3bb414310cd37b3453568178721eb220ee6903587a03df7113ae6880f7eabf9c5a98ea26d80a75a84ae39b29e78d3ce4b615b604a542cf9fcecd5c6e43ed28caab6e0fdaa2eda841b3fb078c702110ad3a55afa07a2d542112488cec4cf11752f2b4412e14bb223953b71f0bb4115e0689a7fee7b64f1a0463de50e88c989bbde21627ef0000031064c19a6dd896b30320acafa35639975c15389b07be12f0dcf37264ccd2c8367b13dece055b542195c126c61eb88cc9736c2c616dff4e7e73ff178ffca1a28ee597e6b135e7b8fc088bfbcecb2d43881bdf569f6f507b86320680fdb361d0a293cbab489de47775bdf3fb6303456d26f6b5e2843064fd3c1a656291325a350af8b9c5db3dbb7f1f638a0bc0d9471a91ccedb5e848a112dbd0d9a8eeaec93f47270fd364109cb784d3baf7a6b331b8b465e45815b6111e3810fb2c2d55c1dcb61b66aa9d4472d7053ddfc2465fb5687761e2bb93ab47363e801fbe2685b2af0e3ae90659ef195911633711fa68030d05bd15ac1fa2601c3bdb29bc2ce889b9e47cfb32a748eb6ff6e3f8f3a0d2012ba5a81169b0efa93864e4f393031c26a5eb039526c2f4f31486dc88abb24ca0dfe59f5013d14ff3e080ee1d4f2e05b0295667348797a54e32c295500ced59c48186194482e59547a37570be819673b9808dfaea975c906a1c6bbd8f3418d2140ac5a3e61d287701d66ac77eaec03fc0abcba8661cbffdb9bc2ffc90428957cc156c948bbc0d96e6178f582e0e2bafcf9bf917ef168c253290b0b84201c0bc5426fdcb5dcc64baf14b7d47f27024241c120a2a5b39483e7e82448da9c1aa90deba84f348ae46efc2eb080201c3c5212bc33a051b22bd92b6c9ae547be941381461025f399a0efee319c84714df0d6a144c2d732b2718024fa3fed395edac5c4d8f93cbc58f906f2804186659f181d511dc136678316381961f28cf82e594f6242668808f3bc2733192ab3312c338633b3ca66660a67f6c5f2cc2a8c29676690a036b341398170dbddde8bef60f020e122e369584a54806855b68356254606a23ae95dcd2ca97257efd81ab9175e2900e24decc53c0455aafefdda45d40d1f631ccad02d9acc423c7c02d80842fecc8f07d19644b73d6a6489337f6094950662c32e7c0611ab9a145eb194cb1111d2fdd6d3b5af929af02a9f2ff57d8056447a9dfc02e87f8c95453008bd72fb3cc65253261315fb7a69985cff19d1e53de7e9a7e8854448925137cba5309d78548bf02a84b4639a449cd15a7f3a1ae0dda00233686a854c9ed046c86a24726cf3af04f8fa4c95b17675975ceea63e4649132fe407c923148d89fc5eac1ff5eed54767e4071221c7b015102f2b8b181772764df42f05391dc1b3e2c2f9fac43374f3b5d984103b62139ea7ab73d951feb1d2612d68c186f52603ec6a9f531853d9143bf526e342dfc0636ad80d5e54b4b41b98ec79c2e9100f9fd092b8eefb463323f07e68650439703575ccf7029773b3d8eca8cff88b883a98e8ffb48726888eb15e0c82dcf1d16e27956a4ac2771f61e0c1db37633b6cafccf452c440a3e1db6715383d655d4622eceef72d8037c8e28253742236310d4138861992a4a20db94b07d55c281af03a947d1de4f84d480d0cfad1c56c8c5c3b7be97d00e495f0b13a7bc7ede61396c50ada9a7867727a70f0230461a4639d12c2206a2a9273cc41038a0075e0f20e20867bc1a3536ec9f4a63d7bb6584b4d1aa312c937d30d5e6052a11ada6251cbabcf7780b72fc7d0951724eb519b5d46c3f4cd5d528b3edee818346588be9a18a62f6496041dbe6ddd82a11b03eabc51a200bbecdab291b830317b798b6c6c92cab06c2cb053564a1a39f9d1804eed160e8898e7fe61a901727b602d824f9fce82d7e36ea2f9ed3581fc28c8242982a56f70a8917bf562d6a71023b5339eafa9b45af37cfa798e5053c9ea8af8716cdcdad5606bf000fbb2f7c5a5bc52846ebcfe8f5b6921bcea97e0c8aa0992d01f9054ddf57e32fe1259b15476852007e8040064cac56816a41cc5ac0288301e4694c98171a89a50b0d04794b4121451608e0ce46ad52c0d7cb50a441510bfcb54b2a08a6f2a8cf4d0767ef6962d8e1c01086b48670f404a1f04835bf44cc223d608b8f758ab2b015f6ccff4c562d924d37f3ca71f683823656c775c9b3c437fdd1bffc7703d98811a2c1bd18a017ca58efb1f1aca0f8ae7fbf9e3c4c9826dfb1018f5fb03eea7b47db060cf0a1845cc95d25701fb3b0e69888321ab80dca9020a5a1560a898870553604b4b20eea316938b45054606ef01b9cc3b66440b1500bfc60e7b7cfa13a5d201c7c89c356cf754f2a108606ab9bcbec7674aa2f17eca08bd351f63bc0f347eaff296a7a556947b701070ef88bf85c8d603061bd1694de9c46a9c4c92a93df99c6ba3931407e0eed376f96c4d140266c932f3ab3de1c40e1dd6f2669ea01c6dd8eb121063c4aab2366fe98e167015d66d2191f7355c16ea5dcf770bc02aa1869443ffb56c7ee3db48bc2b50857c06d33b8002aa0fea5a1f8a3980004ec225e46dc1b3be7d327b3594ab70a4e039c3ff42663a38fc5c4c7cf120bd067b7e11711cccf5958628c889ade8ef3989392cef144f7f4d01a24ff46127a3f9bf185cbc5fb0492b3c06e162dac1119f4286748459ff5f92d12597189518f64adfd15d8312fb0db30d29260832abe45330a45efe75f8ab957e14685606ea6f12901592f9c33ea892c6a9099eae44388d2fdbfacbb3cf9fb1d868e9f1c3475d36b50f054feaabae969c51035188dd51ebf5f0f300ddc067c0a7c081ee2c7e956ad342c55112c56448a183160fbe68591bfe144f934a4c65685ad0b985a2edcbb57a81ab9819d91ff466532c8d5faad2b16463c76ae0654c127fa404823d48de127455e2eb6a126edb7d4ae56eaa2e14a7dc51223f19413cb5829ed61c75a2b00440bc4abb9d5b4a1bd72b8da5829232261cd447c8aa59146283fd23a7a28ea6c6b89cf7fe99f8354680390fdea7d22341682084994957ed691e4c7dfac5f87797a036034c0cacb78f23e1e4805695ce2a81be884148d7fcb2bf78440109d12c0dd9f1443d3ef9ad510d16931eaf0e342dd0cb478fce7aabf76a7f04953d7f13b85857cfac41eef3ec781b78198c6d03f708379a7b6f99e9263c4e6b38f9e7d2e861d295eb699af74e993404347a493fb635af2f4753c11d91e536e7d5439d017629584aa007aaedb25ddbd663db00bc83998d536359cd443914c3ecf1d64938a3d55fc2920425e7e239727c21193cd060895fd7f2432e4457b520ed190f751b8d5f89afadd054e8cd8770a0f3441d761f6fd0ac91a2d5e3a27b7ded72c52d7a9f895a058aa2744566e4e742691b04f310521d1632f79078958e26333493a619459133d4e9ee89985f0bf9840ada48d9916e33024394c0d3f3e40189c46a9b350365fec8809a0ff84b962f3553ff775311ca3f1fc76b29ee15893b4c3238f783184aa28c19a47a9efd9a500a54c925f42f9b2b3803fc86ea5b95b18759634796ede36901043ee4640890d66a8418577903c5298b08586df1d9353782aa0eb5bf07c239cefad689c6003195524c50be8ea77a003d213cd0b16aee579b17a55b987c0f76a9a041fdaca8cc4cee9c28ee34b1202e55c569eb312b002cfd1ae08af8b4d4c461b588d134e24c742b4858ea81a6d965afb030fc83d15d7cf19469342e77239f833ce72095e0106c9aa4055e66280a0b724d9218a2550d6ea6d5a60c02e8351ca72eaf17b0b8c84572a4dbdebb9da58fef4b1d4ca3a5092a627c48884c8a6d938b30f8b7a4fdf1c110f83972e0308706ff95d42398e274cdca57db6a07beebfb88a283748ac550b571289d4720a20cee95a0b342798096547f199587375fecbb9845f00c61fce9239673b85288d5950e9b30159a85559ff9b291449e22e97d447ac521030637abf6c5f887e2bfcd2aa9ec8f65363030155a2bb310f3f114ef3fcb9c90c7c5d4431b6c9442813bb6ec9fce3574b2a0d96939666e04d0a0cfcc54ea95cf60786efe1ccdc8909cc505437ca9dda846d3eeecc6554727eb9d74d5b92bbda17f4a7f4aa0b8085c2166a2112ca39f51bedb5423e2ac853d55ebc393c588b900d3518bea08916795d55b999c5b45f50e4f243957a647ab4d600f0cb0ccb041cd5c6f87cdb6fdf2a097b8168faf763f4f226f20648c632028dfcd7ec22f55cfff10fc2fdca4d8d5f70c478d4a74cb663f741f93b0553c766a0eb0b0a522618838a0429e38acf24df45f822246db4fa8f56ea3e51e427477e5b6e80cd1f3e88748c13e8bee66ad9976502ece2a4ac52bd36b11a57c3f741056631682e038440f37a704c12478629a7edf40cf04589c1f6091754ba91b52d56156f6b9d283ae2405acc237c69714161c1220f02decfe0a4dac7d5709044d2a3b61f9bd242f4e35a25a2663bed283142d934103c74eb0cccde9522bb42a32ad58f24bab14301112f794646fa94812a388c283901a0aeb6c108898235a2a4a810b3d1bdbc2bea0614b1dcd22196494148746ba219f92fed0e4c64d520a5f65f7ff96f3b90f643841da63d0a423446198092a1c3940d2b9f17f9578d38d8538727126fa58e9d3338d4350afa00a2dae09a16b3aeccfe2912aa5799abcf4e40f52b94c989152f3d4dcc3d05bc70bcb6786caacedc4e56f4a1f485751b121dcdb7a28f5069ba83c7b717bf6adb20e5602aa79aa9cb64f07d38b43eb6e807798907c6ca76b7ed542ba4ea8a931c468f3a4fcfc7b354b4cdef782a5c0038641d9ec97865fd3288e1250315c345e3385cb8852092c954a1a9ac03b1af1811b1b645653996b25b99e60ebfe311ae0cce2837a9066aa4f2e610f01d99f850240240315f9390bb1ec66185234eb86b06c2cd15f1d28d9c356f78ad851f134e8933daacb56908ae18a16f855025f4c8e2b49da229f6824517cb006dde6ad47bae47e173c5c52bcb37477aaacaa423fca2eec22543bf4b1e8e30a1ccdcda0196e373d9bb294580c758db79b57417924254ef29cba27f201d4a34732ac4b27f34c728539bfb66d484dc8cd1078cc04c1b764453a4b086180206a1820e1f09226cbb4448bae823fb1b7f8a231b8a88963ea0d744ad4ec17a8addfe8b84b66062d63bbf5f778ef7b92ae62313146d081dd1243ea42b64f388a0d296776afafff69d4910f48f0a225b4bfd21fe6e2a40d3ccd8768894bde28d5056f54211ba91b7715e3c8a34e2136d0304b2234f47055b2e94772b31c2450ff5ee2d885a0b868909626d4cf4457e5b613a3672fecf6e02a00e0d1e5e7df9a2f2003c41ed0abdb9ce868e9087c23b8ea7b85fc91b59c1477984f63abbe9dd4d7000ba116ec11e938191bf23c83e8d45502b1cfa578668ac4680b0fcc01a1056785f9184d0fff48bef42240554db04b0982ce928201a5c7a909776e20e7d07237c5aff3a2591404a3c8da1d65a06f00a307bc9e5c4ecfe6b669f3cdee17733dddc4950d70c6194d805c5da353042c788ff505378ab498b396e431997dc6a215c35a1e00c5a91d68648fb9a573228cb63079e258a8cbcaa9ca3f066827d81034aede7d2d4287dc2fa4c9f05e17fec3240b1c43f08f8018bc46ca5f8722f80d9e7b49eec980b0841babcf622ade18cb8bf15e6eecb8acb197de38a039de04d97145c3a0c665857e43ee9cfbcc80759830a7280cde6b6f60a1f62cd97313a874cfd9cd37cb556d8ad6a74cb974754c9b583c7e5cd0520088be167c5e14ab3616741527748b53d2f0dd6dc21047e69560a7a1bcd3792bc6ffe3ee810bef97a3b3e4b4fdfa47a2b6bfa6fb37f64cfc6edfce926dca1908af0ebaeca34715b198ff3169f58588548e9f8fe865105d5f13f782e35a4bc1c50ee9ad41bd35ab4f564b3e4672d747f84be39ee016f3d13e68679ff3fccfa17d03a78272a925ba183bbf145ffe6ca05aa8a2a7588ef58f2b03014aff9e242182cd00008e17ea82bfb5a8bbce12bb2af7e7ee3e00902e5641ed63be39ffae4828a93e63980cdcf93bd6373061e57ad64f5eed4825ba433bb124a7e1e6a038f02d1f3bbedbc4d6cc3d9dadcbea6f919878b703c6133b507bac03ca6aa10ec0ac4b206a6c5d680910b4daeacc7a0d4abeade85d663df68a2e86df49488dbc715616fe1309697a4aeb7dbe2721d481432d830bd04e1be675698ac843dfb670cecb9082afb0f32cb280339204de7dee9865ee758c52ca8c5f40a2d502940605e3ac41fe1710025e55f5fd840897b2248d123cf1fc115e87e8fe3541c7e6263dd487ae5511c58c4c6f4de6d83fdb3ac298ff2d13d03a2151b446d6b36f9c7b02311663faf00f10f2ce788062db8eaa122a0f495d1f4e636bb1c01267a37c4be575fc4c9e3f0e994805101165b4af73d187c9a315fbba5472b1ce6957505bad6d3fb287d0134213bbd7398eeb3f302fff46151a76fa65f4c32ca36bb7baba1037f66673bc79aae9c2ae13c79424da73377bdd7ad7b1fbadeb4dd6b0d036dc56d45331bdb5217f6bca30d4e05af1bf005d9804f005be03480295f906b42efe84bf8cf39d147de368fedc119ad2c37920402add375bb8fb3131dddf1baac6353193e29f904e66499773f86ab4978e00cd8ca7212518c4c88de9b76a30c23554fe05f7a8b97d5b950769c2da6c09a10070977a5966b481a2f413f4173032a3d4b3d5c70f53ee0b1f6d33991a7b0ead25d1d14cd9544c1afc8f86f7571eedcad136683dff8b55a2b2c4f1e6453ea2dbc6ab76b61dc914076f8e4a0d31147d7719d93d039a983de1ede8751d5f9b9b86cf199c41bc819c134b7569974783fa76797d592692d65f1beee041b13bdd5b502f1621ff8162cc81bad36cf709157539a98d28ab524a1b55d6a4a436a2ac4a5f62fce31d41bd4bd708317481de73f8ff3d00496506f401c8a406a7c95f93a6bf590d55f68f97124d5ad7f381578e5ecb4c4d4f443a1767c5aae334c168b3c03c3fc0748a5ed0f70765a241a91d2810244a6447c8dbb9a1f4a351c1fb926ec0a1f6981b06e89119bae2f41288f055e57f723c2347b318384dbad95fb606a62c68ac9efafa33b850105654d9ee654aad183b834a12b40ca055812d27c0aaca4416c40e584a6a37bbdb4b56f6e4eaf5baebf6ef01932a4d77b36818878bdb98994193cb18689657c81561e55f7a0ea1612c758999f4dbe619f217828ba9b67b6bda4ebde2a9553e43bc0fef8685566e9bab31d21108f01e8008e2a752d15cc46c12e9abee488296af50663db135ca0c017f0400dfcc74746abb77c95802c1e1f3b8078e0c564932263dc3c516e00733dd1ccf5e99f350c63459e4adad49de402526cee763ef371bbb68c5754c66f333206ff865398daec8e1ac77c8154b517fe70f8c3f1867ec8561104b47f70f9c01e0b44e010180bd08ed032b85702106e345715538d7ded36111152c1acafc5ae1e2091176ff4b6fdf6e235420d8ba31acbafddc93bfc7585888453ddad806a161bb20277e2522944e6381cf4c416068875efaf01b59ad032891fea42b3d50d994ebc3375106c50a3c5b56dc9d2574fd0ba6e74988941e0104e16b5e3f84e9a22756afd8ea6a48303c01bda005b9b34c5664eb3cc9de9bfc1bc699f9d21beb67d98c3f0c840552f25e49fb3e81868ae93093614c7b27af51453c0b0c0fe0da8b75b9ef9bf3c41b61d4e0bd4ae0f703b9fbedd3b0f123f5e0dc443995ab5fceab51c6fa45a45c78d857d19a9354860e593708171cff39e09952736d33c79fb12a6889aeb6a988ec7b00698dc0dd8fa4cb237bc3d62508f2b5a311b59ba44a013257ba1f66281256d63a28b284e4fc2e52250acc088a58c19e6f4cf15e3df019815e1729847a8fea422ff9a82e7367f49faa2ef56bc71c5efac84a034399cc2a4e2b26a6cfe489292e61302ac14fc135acbca54256f4fe77211fb090ddf4769d94b7928724456c91efd4a851c4fbe2cccf1de8ea96770a9f85f3bbcd4ac272a37e5cd1f1dbd96cdf79a9f58bdf1abe94dc4c6dafafbf956ef3c202068cafd72f697298c2010fada7716962b35a2fc06a492fcb8da45f1d3d1f2f61546521afdb92696696675a43d9cb16da40be22c0b174e30960cd820acec46a00380021525ed682abe76869c5c9dd79d7379a22452845d91b9c10bae67c4678526155c70903253185a1702d966928cd8dbc54da5176fe3afab51e052d5a59c2fba96c694e9cb81fc89b82642b756f924c3417cb7afde8290a8cff188ec96f0d51cd47571957c4d54a7de717415883e28bf65e3cd7cbab869f0c707143019e6377fc9edcf75e54896175d46e3c691e24b614914d06715d5fe4dda08b2f13e2e5830bf2c6a8773e4648958bc7978a26d1bf2e9a96df488d24702346054b2add2bd8e59e68144cb1f7a1201b7b1daabede19cbceda8acd977b127626c87fef1785cacf3d2ea8f1cdffbafccaacda056f45b106d812c47d831d6732254c89c17d2598b070a88516fa537cf2f314dd02a383fbe57ca48c2f10ac10820cddd6eecda5ec8ffafbca978478dcfc8e8bdd8f0ea0c2172f4dc62994208f37d01a118ca59ff46e4ab01d1d4ebc27c9d21898e61d618a774328fbe62b64f9c5536e21b71a48d9ebaa6955ffaa789d66736e43b2e400a4cbbd284434cc6499621d79a5fee49aa14f1aef40a53f88ef25017a12fc281d78d3bca19d006e63b6232cac9721c865afed05dd7d3d8153213207a02b706a6653301c4046c2bdad66a087a6be215bcad60de19e9c6dd9cf03c55b7b89897f67f2aa3510040d3233f0855b4887dc57e2f2461bb728b4773da6e5ebc0b925bd32b71731692701f989479bacb608928c6e82319185e6afd2ed563ebb655e2b4576f297d0d4a8daec67ad8a977c83f2ccca4bc2b056928780ce76294735e57a603269bf0b8e4bcd59e96409c8a35d9db698c8bc1a6413e941809576fa962712e6a91b471d3569c7a633f291c92154459367922fe52fe476ddbf84e67232608e0989df8f7adefde80c9bf3b4f48cf569e4148e7349d13f88c425d7347523bc9b6f6d1f8c26b4db36c9719e5d091b323d0e2c57e55057df4a275c07fd44c701141cbbd9a10708fe8d6c54effd07b83d3608a24ab4d6faa68b58842d11a5ff0184e42cf5e1b0067fd769438a98dc500742de18da7cbc6960031ae2342165f990f618f0301337d7d0fbda7359aa2b97b5f5bf3779424bb689ee2a688c2e108d5d8a77709d181d26e5d3504b03acf37b107d8c3049926bbca94012d40d4bc62f7af70686cdfd95599dc3d4c5225b286efb822ad6735956bb3678fe3012951ba706b731970bbafc93308f2fee4eee8efe115a1abbc5a7578d16243bc6954894c9c89760a80c784850deb23c3262b8b6ff98916593cacde2ecea346088878f8b400b70c13b89de9ab0fc236198beaa9a10104c280710f1c91f08d6236336d64f08114702f04dd52f2fb8fa74b5d955e2c740ecc4efba8a0e0fb3e4164d8e99e4dc3090abd91af61627afa812c8f7c2ef13c0aee6ebc49f5fc4103a70aeccb0b4b622007eeaa1abbe73cbaab7d48f7766dd9ebb404d19403c53bcc9188b4ea33c6ecac87f8f46a7a0d7be9c8e493ea5bed10426bcfe0cfd041de78d14a71f263794a56cdb1187aeb2de93dabc27083111e4e06f102a5fc704efcbaac4c50ef2dc1cc212a5c7387e89265df19744ba55261e856c24084cb3ccdf1aa9eaa34baf87d592750e289e0fb5be974b834a58e68800e06d42faddf34e32083c802a4aa551675864ebe656435065afca99b1088d08859fe12c94b34d6dbe99afd965a8c1fed70222110d17b2f5105453ec217c86da4344ab5c0a822995256fc3bdaa9f77e7f47f51086db3bf7575cada207fccb431c4f1f881a3c72cdf002e96acc00a4d5b77c27b48d49e1c0588800a4279a76f3d5c4ea6d4ef573b18c494cd67dcccb4b6f803dc31078e4d967ed2b014e904ea90f6f19931e2271085bc16cde626f7d2c94462e0a8f9d19152271db13d006c2846e4175a75358002c4bdb160062bbffbb540f001114872cfea018a8e6ceaa2836f658c4ae334a3dc562d68962c15a3d8239c58b656dd3ca1c893aaf46d72d6e46d6dc6e40bf29d4c776ec77b3fed8885e21c77628ce73dad64e37c6688980a008fd1e1e0460195335af1440515325a83eb5d8815ca84c60abbbf91185ae85cefd1b7e56bc58ee19c9960652c83cefc64db76408c2b0a9010cdd36c86b46c5b5866e23b5d4060f022edb667c7fef68f883396fe6cc729fcb04f4455816d51de434a4b50af5f9b66389631c546edbc87d01c652d9a571e04a7002f620214ee51c97553bd12e96acec5a4b21e0e08ea424ad79f2bcd9e7e5f3192715d5d5b21a0d2e139f28de48591fa66251ed3ac24934c9bf53178541956d8c596542ce312b43617d505d222ccfbcc1eb25998c56824ef002a8b79759cba5bc949e484d13b0b233b56ca2995de3201257d3a50ec2e1271eb3d8040181b7779bceab015f00e2c4172170d5844d3f11212c46634e0992652928089d7d3a5c3cc6219cd55d8f3284a51f2c1577643419782acc7909300f8726badb4f6e1f9029605ad6c603577f561c3e5a81a20bfa1a92089dadad825ef32edf956c971015f753b2ede84b45b94c09db4531017f98ed330864b249e00f222598b36f11e1a17da1987ca3601f2e8205f7a1181539de8e4906df14ed5303d412a315545b8d9d0fe6efdfbdf873ab8506ca665bbee820e2a95ae27db042220c0111df4142800252111af1535ca53013cf0fa37ecbb762000c07cf3b3713b398c9012f637d0f2e84b2c58d65a473a3eb881a06f3c588007dd002e84c399eeae493672ca4ff3e26658d5f27a785e0a9595d506d4df35b6f67dcf7ad886d8fff679a40ada3e7fe46c4270989b1b9ebc234762d635498305ebfd4e9acdd11f48c2906d32270907c9dc280621b999c97aed0ed8fca95d92859b231388a0027b90240a73866f9d3c30d490dc619955f5fb77841267510887744f054704dda36308493958ab39c94c43a2c49b9b2f8410b4007d328380f48a72a0b68aaad8f2bd6037c2566bbbd8f74e5102c7b5856a704774be6afb3b6650a186543d8e19e64649c40b28edf1846f4fbf6cd8ef49c10e9c986bb4780074cfd43e5f773a5d50d73c78f3f71c897b19af5b5b249cd81e00f4f558237ae08391426452130df1d6bf0dcb1a3073375beee800fd0d3d1ac224f6638c92c6f9bbee8cae0938785f061005e1c0236d5c23493bb2206d4899832f3f76aabc9eccef78946ff996c119d5e0e9adacb31f9122b1ae51efed5d3f54fb58d8dbf9345dc59a770b6b8d36e3a480f306bc023971891dc98812b38298898e0b8ff0228e6eca726b7c4cb26f0861038c2a54d93990d76eee5d4485abec80f6149b4d26901296441c58ff5ed5d41d88797747dbc5ad1f560f34b0d22c3fb6ad113eb3b2e628f9caa4a2cd4d99183ad9e2229b1ec46e4b4afd64c3454b1f14f1aa43e7f1de8c30ce0fb9bc54da5d228caa04901eba744d6beac2f69222f0e3d8230af3c03fbff8e7a4fb2a901c70e0779d4264a23f9757d921518fa2370fef2b193defe1fc45bb250f74def0e7e0887c40940b7e27789dc7ac918808a5c29f53b99dc70c412546c828d19f3b38bc9636ca2fd8c7314692e7d1cd7b85efad8e5fa63ab1fd39f98561440c493f4edb66ad4f5df5fef9d7343a4117e125a77271b8303bd29f85140411a5754af0789a00dac22770a2efd3c817903f442d279b7069093e3e56c23918a54c3323f6e56b6805e0f72abfb0acea2d8bb04b9ec5df801f6ba0a8e02a299175713d70866412bde3bc23831c075a1d5791047ee5848d730fa8564cd9b81ecd7edaf30a5961a28b194eb8128ad6042d20d7c715c9640586318efaf54c0c524f050a8c08815ea4346ff1dc1e4abc3c9fec5d5d7107218ad8bc8715d32942207379641800da02f67d8465d4a8a21365f298ea47aad6d4d4a50aeb2e53d654036db70d2b6d7c361a0bf91aa69e5e310d11934a636ac624d5802a5b4a71ba4c6914d5de392dccae95c4c3acdfcfbe29ac67941740e5043eed93c1022a298719c8c6b3b76fd1d6f6790e8363653c7b9c46cc9a3ef43f6face3d9e35ac5377e65ceb968ae092f2aeb71b0e6cc567267cf7ea50c8eb0254005028e39ea8cb93ba56b2cb7b2fe90583eff135add13277591554e057f0719cfde2336b7285ad74a8f4dc6a043f74f35289ef292dca11b5d121bbaafce1e7ac79317187d18a14213f5ce74d35412a5f6bc001c24d3c623f7e3ac55eba6800d1d4b2ce350fa8b05d0bb1aba9dbf247da0ff5b054c63725dba36e89cde69c04a6e8b38cf7c59f1070791355d13b226791131b562efbd2671d62e2c26d00187711344c258206ba08361d393e5e76720e37d83601bd987814dcfefa7ef82ecd60bff5e0b269187ec32895a92a68ec83bf4c2bcd1427355e8b0e9f99b480b681b3a65d5f4786d3e7a27d71c0285418083d93bdd38a9aca26eecbeb2770ff5d0e4b247e27753879beb333f398e1d220be022c23584639b9a8ef3c11a048e6fa1e64d9d402c37b190e1b491ccceb871a5fe63c0418fed2fe534649d7adb3923c726cc13d012bfa1b17a767190de85f0a5756b8b937a69b7b1ae7605fd83e4e3bd58373e8b2f2650e68b25acd2d20a4c4d205db4b488fca3f6f4db8d3fc753a6f22ebc2f2606e4dada4bec5b6d075acb82eced62eebea63146a82cc7b9571cfdb7b36afa76a57c9cbf6802335964cf05badf0ee848cd6427731ce6d836f58f98478a5dcd018e01ba4f890cc8f36a72e276ea8a8d52d6e92e7401592f3c6f8398325cffc5b55ce6859ea3cfc238773b6863648d9d5caa472c0cb03c7f1894afc60e9030f2a543949968a6dcf7c2b637e153892a95b9ff35e854c4b8bdab22f04b17c21b7280c1173d1a6b00279b18a42c0ea1b0df3e731071d2b1fb7fe513b89d446965f49e6b3b3dc2cbb5a131fed3ed544898072e9c518e213d0013a97a8a36a39a395dc34c17f945abceddca81c997c8d035556608025f85b380018fb1818e1ee8c955f4d030de7c437b015061d614106923372c2350fc45185e0360edf1b3e3d4cb20f4b78452afbc9a75259c72fd7b2f8eaaf4aac747108bdbde5f0cc1911dcd933aab01ab6dc90fc701104457e2d0427a2c0ba4b41080c881816b0f650be83c38ece090c33f185e28ad9e575fdb8158b703f6596d6c1d412c2521c27d461024f022fbc6c367aee23bf7e6e3299fb8dbc9f2090bd906c15bb611a33ffa380f144ba049d0632438ffa61e4661243f2587ca89cb9c8683a2c4c667d1e062b129348fc919a060fa92ae7a73a84daea6a3cc8c914129af7fe7ebecf62a720ecbb322af273f49ef6d3f489c5a760becaa5de0b7ca628472a3f08d7e7857e489d53c5dccadc0bb4cc25f1477ac95d1e4ee2ad81a6f0093932837128665122c4479113d1ace253fc26f4f32f9f7cb7dfd2defa6d24dc0b21f9448b24d1ec312b826b2458003984f65055f6a2e660f4dd210c43f595bb4d9a7a1612bb358fa36a1806b323afd043c11d4348b2d9765e5d122fdf43c046aaffa14c138052cd054bda31d6e00367f052ef770f4f8c3704e6a7aa3c71217d8a6d29476ab14073f987813a8e155344bcaec24a76096e7838adba08989e81f8ac144b36cf381ea4519feeb71c50f45b30ee49ae47061cea9ae6d4e84b2684d52850388895c968880bc3fd02028a3fa1c9b1d2d2959df0affd21c2494d532d20911b0ce1f8ca481c05d14240842c7d2d5e2ffcc8ec00479aca48a955ec1ec48a28fb8c3658e2a9805bc85d3fc36d3a30160ad16f7a6952077452f7897b1e823e2a4fe905e794e8bc20ff0920b1dab3aaf39864e35eba6ec877c6f87a0a93be5f7fefc602aa4eee477364abe8ac3093c16682cc4b427569319dbf4f7d7b3b9b10cb7af938f5cd31b23f420b1aa137c47a332da64b32ee34715af15a71a7c9d2deeab4ef505838168662bed2d3f85acc3e99dd026500654c5e0a5f1b5767cd01ac4e08707cba019dbf5a82719a0182be9279c3fb0505b8195058b8a985de424ba6f5dcb9f3095483a9317ab75b646a547b035db379d756a61843468acbc89e15a28d4089d25107eff783cd34f7916a3b209bac6cfa87b385a7e40d32a035afc50183da0b9b3a6041610b0c718dc247acedc538cb14dd3fdb1990782307b688ac03463064bdf485c51b6cbe4f7063622aef9fa426b30338963229ebcb553508d2e03335fcf5153a3a84f7b6f02481246dac178e67a3cb55f922aa00a524dd4cd8eb9fd7a8d179a3c9a1a02df49b801e5aa1910a1a046c6d34bece620286f0c930e1385019aaa06db33f567296a372c4491181637d9ab5f72b42635f6a67eb4219011585db534753575f0f07958e59d8f96100b5f755b4cae5de1aaccbb5d5167f56bbf304645d1e8b8e68d2cd33d9084170325d9cbdae328acf930628d8a5a88fa4f9922b9f9d61d8a9a8cc923305bd10a78053254bb04f2ed70f49faf80848eb339c57ffc7d0856484c97b6e4d52e315d37b7c3707d73002549725078a91986dcc3cb0e720959926c0fc46cd2a06019378329692dfad654b2e8ecf8cc99bd8c714b9b348b844d45df2dba8bd40aeefd0e3bb45f3385f4ac87598e8d5e26799f304928bb122ee590f55be95203a551db5cc369b3c76a1ae0d62db359448d61901e5a4f2cd2c0aab435dfc2481a696b68934b988ef6d1cbb26c7e86fc6bdac1c687c878ef89b9fb2b6717693005d46b46d4c08653d7bad36679ebc44638ab22c84bfe61779d2c91390608ba9fd1256319cf5d84dd1e3674e84309189d75dab0a5070c3d3063729c93dc10f22090d9bb19b26e90a519f5dafcc42a72059d68a189d0e9a59a1833e17773eb06e7c0a6d89f2962a936597d87ca70cf08da1cb93f42e4d0f494dacaea188154a7add3427a1bf244d9e6c1970e1c8d588683021a900b0e1aa2e02c1ad5b164ef62156ed18a7ab554be604df75c6a937e1ec91d8578caa46d9b32ce44c68ddadaaa70a4aadc77593e6b6f0320ee5852f3d9c20392b2227139b8c080a05069151d0c564a5815cec57835e62668537f7301c8a378e460b2d6df5eac02a86ac4d1abfb41043e8ee5d0b895882f1b1c19e7b6dd67bf0117e209de7ad608b93e0e5dcea040baef86571763d8bed095a4d3352e6975bb0b1715e03209232de8c03d60bd0c2ef7fd07730147e6646d6428817b6165dcda840685ceb141227f8834c65b5415288147e7c1b9470b9c415cb269a24aefab5b0860d45f851c3e386b4c068ef751ab423268aca06a99233d3d66a0aa5651c9b146e8550a2a602ac68048388a419ef71c591ec4e900cb24aa0dd023750ab0a2aa4a107097ba046e81ac84ba585dd83888d00cb9fdd86cda2afb147a13a5859272a0696b0e0570fa970bc459c4f04c399bae709022bb4e0224686dba66f2df9b882289883060a9b08cb7a24046a7a05872f50aabdffe2e095a31d39049ab4dd51d78f44d9ef0d15e418a20770485512e00a685dd9e224c73f9b2b0211309071d1c49cff2db60277f2991a1845cfb9278492f55ee0a2625526b4f08f0b47c78b1d40b4bc1ed9165218f7a9c6344b66e3454bb7a699d76b9bd7775c1505e7fa1c2a6d55a0aec89bcb4a22a448040cb5b0bc1ea1d96b731a07de8955123039b372f94564b5e1a24f4454aaef8df892ecfa3069c6042569e1e741afc1c7a544bedeed16ba89098fd6bd74d9c078cae7a465700fe5280aac08801d9e8cbcec18c1181d6e71629768165bdb7db78f64ef422638be1ec8b61f0c851386b264eb523529e80782987cd0d5bb8ad0e6733b3fd5139adf5a5438d1745a14a77386f9815b9405c45196c5cdc46edfd066a5806589aa3ef6a664ce96d0c885cf8013c89ffdc6d52e8e6cf3a56f3c4157787a31c5ddc3f147e2801b0ede394947cb30dc09d6665a7d4fdf4a5d94119db7e6740d4d2018455bdaf8a8d68c5b68dd10c4d9703a8c031b213146b53f1b45227f591fad289e6be77e27faa2c9f1010b5058e212887f8c09e59f11956e989692118b14ceca65ad8d7910acc97c13403c1278a7fee263ca160277e094ff034e4b4897c741016cb8ffd40a7d5fe1f3f5b5654012bf34e55a9df23602d3471ba947dc66e767645052bb4fd85508985f85e7e00e3c33faa04666c10611cf1a6a4ee245b414b44ddb8fb08c998772f9d0deeb53c381bd2b0b05bfb9e5b48531037299360e79e5060f6602545729efa7412e7c13be9f56cbdfb84571104bfc6b4f9775d4c0482ba8900ace47095cb823cb235161ac0e694a310ce136b543d012608a3fe21e04cb59c96e4c0d7472e20ea8afcb0a21e608ce50d128c04b8f1169b4a4469c6451a8b3c48577de5c8ea6f000c74fbe27b3d4a0af2878b3d16fc9c6f232d8628fa9efb31e12c86b202aa31c906161e9b6403d79840457b82d06d10214c61a6353b3b7031c6b3ce589ce4d5a238eb7738c9a1fff22f3a478e7adc86d9f224b819cb6449683c378b92d7e8dc5d861a01a4814a137559f3b93a347e9e62ace31296d9b4edbb810523ecc474f460621cfa288f7a5a632a3f3c6b2e695c938740dcdb281df628cf98414441471310b4ee2cb2f6d8fb7e7e412b99b3349785be2cb131b179e56fd0a85476dc9209ef39a8b3fa3522c53dd4c11d5b309b60db5d964200afb10120959529909536c6130113572a0944079e4fda2275bfa9a4913966606170fdf5604866505690c0a53c75b69060704afcbc3b3adf03d89e581a87b59adbd7e6411446791e22464ee825800d2eaccdfa3581521589b69c411426c9e95c613d25396e66049382fa08502de3041e2acd783f7dd4e0202d4fb777a47e0d12678c31b70eb917c82fe6768b0e1f705e75bbd54d32adf866dda6e1ccf59b726807ef3d0392add1343995ff20bb263c0f96d4ab98d40f3a6f5ec2662b64750b57346520f430cd8c383c641bce27399c7fe89d28622b3f5697c3640fe37696c70ff1fd113faefd63505b91dd26d8ab7f10d2cc6200e8be34e3dad62a56a71cab600c3cab21c630f2ad7c25f7dccb98e08494b3bbacf1c594fa7f5022307d191112094f94c4ce9d1ff51c704c0c16ca8a843eee22778aedc0c9fb8ca5f990c9482f6ca2f2ff508b895255cf5413f35277819b2a13e94bcaed5ad726c804007ff6d884ec6020bd7f612090ec35a3598bcd6a8b7a387b3222c9bb3fa18ff4535b64bc995777b1841c174ad2d79f6cc661f66df5f76ff5e8abed1eaa7f3d14422a6e8e5ac18e009795c64e16c2e36b61325f5c6c602925967b57965d42230a94a3ace3432641ffe1dda26754d88891712f2012eb8fe65c54b6b8824e4dff494803b2da0b3b0496bb580eaa06584aee8fd01a8017af16f08e281bd5c0489832460dfd8b6e067b56c1b12c2e3152abe1eb8aeead3ed5b0991cdaf57494ec02dd534fbf6752f4ec6b63a4be7d7e18ea320966f10e870d15f40e711052d10bc9cdc912e8c0bdd8d7fb59bdb65164c1b349998ebf4940f8e877454d2f690882015f365858161fa464170438b8b1b8cca30adb5132af722d13f7bac8b5848ea2351b4f35b7a1a673f0bd051429b6376e53ec509a981f3b56e5934f8106677ca6bbf35832afce45fa389dc83bf9966807134991812f7e35756fb32b2240389ca76b6fa34ff2ea96d9882ec288624b2ae47651c0816661afcca5c0e3d5788c20761873b56f66862849514789094f9e8d0bf971055302fa6acc87f8ee58337609a08bb728c69951b9fc94b6bf22c03544ede4f9392c6b603295cc738df600a8997f6e8eee02d86ccd6bdc91bda9c71aa3bc6c6ec19c3e6ca63363020c9ae7e66a18b3b3169926ae2f5e87c7e48267512164a6f45e8785a54561b87f588892235a22d0edb31641f4ad72a5ab1cb172d4be5557805b9cd2b1d98aed4ffa2b12d3b60bbb709464e46a8361beed1b9e3aba1f00610772e86a9442d34825b919cb04bba07c14bbeb3c2fa80788beb56af0e41a6c133a222d4652a78e009120308e3e79d538aea64603d72bc0562c1d2287493112c98f297a5669b180bab05506632b49090843ca1cf133ab2c4a698418ae0ad207e853ca08dceaa3d355bddaa9fce19d73e99456f4d41c20364f576b728c924d3ef623cc25049a365b9c57405ad9341dd9902b9821f68db70ac48a57c1bae1b67837943be26c4ed4259f4b1ce13de8d1ade4f526605580f165bf01cc05f9b3ea3a338b817eab1dde490c38017f9d8f7b086721f8b325d6da7623bbad97b4bdb7dc3bee09b409ab091042f9c426cf7b2af5a9116d90dc49241049f5d9e0126803ab80519a9332a58174100b5ae97d0fb52dc4b375109737ecab6b2045b81d14023a681ba259aa2483a8b7850857328288e6e410cdc92946842cb91d6c20100143a06822ed12ffb9112d0f833c20aacbc30f4027200268bf2852f7b4f0649ddf63970fa25d2ecbbe802eaf434ef2f5b3d5f0e10a4ff6814936a864834b9ab3d960940de64029cdc1833638a55980207931a6783172007f805564182443888006f21289348b7cb959103d841652a23c2c8cd424c99246179564f9870409ac8970a6d39713541c810214d926570b63e5bd9065599665d9c76cad045025bc275421cb033c1629e3c590202edc78e947dc64215eb62e2325cbfb784cae489265c8bafcafd3cbbfb09f166dce6278a43958b1b468733399e268d1e62e6b615864daa475f90c7ee6d2e6ac5b58c70f6ef76e84401144bf8464c0cc8889f2100a2245bac6225bd2b21e6a17ebf02fbab18864800880d9fab55eb66e5db6cb75ebd66dbb50b71ead1a16140269a8bdfca85feee575b4cb745dfe0824ba27e5886b3362d3d19cc4a36681981426514892794ca73446393db5bd7b37d6d63d5bf495f56acde469e3404dae9bcccc158e6488948ef8227bca9e72decc6453c31bb14d3cc883103c48df2fb4c9f4c11174f700a34028dffb8205f7ddcd422e7d1afbb71f7a0172c3e6c190fb983c4148ee4253dee55fcbe82104f7317192051327449838c171d2c492f957cd0d6e15772a906327c7393730a76d561b7c2c92140f4554aed34efbfa08d85a51d516a4fa8d2cfd224b9c3e63884a0b8701327d7df2f57b2f5a178597e8894e4992a248e6f84a6dad01af04bdcc8b214935e469541466daf308b6f674b8292192997adc062685a7ed652530406529a29987c5b8eb88eeb411b0f08b2c8f40bd0f4f78bc2cf20c8d191a4d49dcc1e9750b526fb720f63edcdc24de942c13f323c0cdd36103e2271ca5c461803cbd52b3c6c4726adadd9475511c3f2c51cc3c5e06da6a80642d1b17a67ae2829130d0180143fff0a1a388aae63696d152d55473a8e6904525050eaa1a265aa0a9a40085e165a0aa4ebdea175bd9fa6a7b40404b882cc8b5cd65b4c89d1475fadb2e95b470583836f0287c3195707a9c360d87c46f1fd4965b07e1cb36310f880464f91b0f8829cbbff7625e0cf91db270bb2be3016135e03537e3efe10680365cc9c2fe3a173bc45066662d7e06b669b18361f2b56e611e5a1230637f994a729fe56fc813f15e282714610c567843146aa8020d791defa55283142928c21646c00431d09093a49b75c19d812d2c6ef76c626ea46fd4927117cadd6302055a328ff7e4cc05251e5427a4413601a929a4c34d898ba4ed3d8e873c7c8f0503595a22dac12c5f9ec994a5968e09d2cb4d2240273f252a530bc7274baf15551d566d0088a9f708d0547757f39ab0b52c1bf250923ec554437df1650af9772b0242a6480226f3e0f20c0dead2124dc7dd3cb505a1eec41449c0649998fbef11408231b169c8ad6342e6381501290c1f0b85012af7a7982e37254452341b76f79b57c44b749ea8cbad88064283c2419cb834de2380012211d5a94d48d30842ef04a55161f808302fa798629251eaa8c514919b1bc8528af3f0fdd0973acad7295bce2871d7c03c937bb2d326e2fa71e6f8495e92264aaae67bda60c621ea37a01f3f593666b2b453d71db411b950eb9442391d0892e791e89767d3a3250dc8ed9ee784d99ecbfcaf135c98d8030964c890a2bead1cf559396247bad6a376e92e754b47e2858b09e20a79fe46bf541af344cc17d12f9f37c289c5a4892579be4743e9f70923793eda99295b59355e579385437ac248a62e6d6feba4a65883e734f8953c6d1ac436207e73f340ee61e663e66fcc1331df01c27d4c9260932bfb1ed32e1da456c01ab232c1f521bf285ce126bfcf4993dc08bae2c27714fa805e5ed28dc7c643facb95ec68b65c5bebb39bb893f976a3f09247125296974f026639d12ce55b66684d735a8104225a711790db9ad0deacb9ee5a6c7247e10a4fec63417d937628f4de7b0f46bb3c634923b6799267c03082942c7da5be3ff97e07a1f44b970ed32e533c029490a1b9a9947809893b29039580d75e6e213a35b79359024209ea356b97ce1e5ee241bd2f3191fbd2a57d403c20ac4b7fd12ed6f65e0c0873ffe66a03c095fbd7959fab6d013de47e0f3de4da365b445b370824571b3442a6364da480dc578002727d9acc9d618e69696ac10826682300894560032c4218e0157236a724494558520427affbd17120c748032260b184294a8ad084144b860865a447ee2684dbc9dc1b8c3042d8c41082f43b946384b9391a218463ef2604495fff3dbec6f8ac1761e40733b4dade5478b85524b81d049cdc5fe909c428aa02c2b6a22a79120227cc404807ba8bce755dd841d83d0fc36e5d97b5163be8baae972fcbd3f9eb609887a22a557f3d47cd81619607db40d5f5908ac5302c0bd1db974396e502040259d7a5d9b84e5d745122dc8d3206026d9e635b86bb0f1e6555b3515f3d47bd1e0b6836ecb1dfd76b36ecaf8b2c1675f02fd66c60bf2ec2b0480466988107da288a501508a8c38dc27254186459fbf97c3e9d570f752d761bf790c73d9499f95a3b32ccb7adbb759fdf6b4f5194ccbc1c0c983a537daee2c213936b08a62557f71d772db080537a6ff5b9a80f45c9cc4c3d57a728bdb756af17773bf295997742fb2526a58faa5e7108261c30ec2862cf2003273a97a2acb59f773e07599fcf2f6b3d1ecfe71d6b2de89fed657b519ffb778ba20eff4659a6a8b6aa8bb50f66c04cbedeab0eee32eaa1175ce6e17464ead58b5c8db24a85f2746ca79375b25c75b25c7d28bdb776a36cb3cafa28abe0f56b94650b5320a3ec2bf6e18a4b73ad4d3c19a2516154650084ba820f7cae83b0ebfab52ccbb2ae7f5e5ddbcb55b597b52bd97646e4dad8d659b7f69a6544ae2b75c5b67030602cab49a69458aa9b2123538791a9d18ae7dd0aa57fb56a5dc97525539f95d073558d5859a9afb97befb4b2f2ea04a4815a30316205cf060555902b541e9042d58128c4a06a22478e1c20097a056154068445409e10030b860a48192a0ca82dae779f679e4f865db7ac5bfbb1b0bd959dbab2da58add72cce5155bff54d2279fa343289cc22b36666e4e2cfaa01c295910be0e4da8d260d758fc52e4e595705baae8cfa5834f6d5a9576feed2404eae561d4d9afb49932f86293069ea292c24575b8c329b0064410339309849a816cca10b463239c8ec1f0ccb785418e8ba282a3da70765f7475f06cc64d02b0cda9a02ddc24016742a93ab3748326026ffc8557bb04ccb1fd9a76f8f6c6961e5608108cafe01813e199669d93f4012c37ee4aa2d08a3324b00206320d91c55317ce1ee47f7f4e18a7baef1bbf1b205aedfb20086a95f98c2af03f2c5177e18b982881612eb51318bb5fcca482a242329d5c3732d4a5db37a489b964a469e0819d9ede82123e16b0edb969034888c9483861e44a010072dd4175070a00275c2ac85d12fb659a64f9f6e96795eeb9679b68b552c05e858ad71317c315eb4cbe72ddc3d86798e41ab8684d6b365b9ad1af745d81d13f9757feecbb5b5daee73fbb9b5d8e79e7732639f4bfbb9cf83fdfdf26cb0dbd8310c8391efb157cff63976b74e14975ec34e5d36a7619fd9fac53866b636983dbd830f565cecf59de75762723ab661bf9edfd77b3db56375307c31b0c774942d18c98f891692e496fc9868214322257b5fabc538ec76831bcc35baceab67a3cd4d9d7b3e75eec54219bb07d7ede55759ea62d82becf5beca07a7bc58fd6c30dfede5ee907df1a2f33c74ea79e7dd7dd61cf67a370198e1c20cbb9bc383795c1c6a0efbed5842c0ecf934905cffb90ccdf51ebe1fee41964866cfab0b0bba7761e188f97317966866cf07bf17e362da1c76cb836d73d894b1c28e307aded98361eaf72318d9f36ad57856e79ead9389d973cad16b4100d200bd7a3aaf1fdbd996e8ac44e799753d87ef07cf33ab886703b2999543c2c7790eb270c4dc39c82ae23da9fd60ec0e96223b6813721ad93d561159d734cbf4fab1b65f6e4c3786fb48b584dbd9ae8fc497ecd3b907c4262dcd8371cc8c1d93b5c3e589e262859dad636114c631b3ed26d2dc84434a2e97a7699ade476a1a490fa169289ea4b68efb18e9cf914fcd0749bb50a7cf6e001100395b3f4d9ffec2a5f3e93ceeedabcd90746e6f5996c7e3b9102f7bb0f6390fcfa97fb00f575ccd835f739ecfeb6732ddeed6316124df77366ceb6432f68f67eb68ee608fe9997c378893b16d64f3654fb7ee73245b49e92ba514ad284c27cca393bc48419502c879f672ebacf83e7d64f355e7e1f5308e392d6bc2ad26bf3f7c59d35acbc2da9c9fd656955555d6b2b6aab6d6796be7bc9d939a5b86e43dfba8db6dbe6e149da429a3912a7d5601e44cd91457267799cbfbb44d18c7ac262162bece640a5a3079f204085332f68a610f9ba8f5110cac3d8c03d311c4c9960f57dc69ea0f923ce1eef9c893c5acbd6a92fc5eaf77eb5356037f987e6d6dd578f863a442fb726437b8b697699eb60c4973d3dfd6cde437bdadfe5935ecaf9aeb7b2b533282ca16ae9c71c619e3945054952ddc78959b96d208f5b5ca4d85d87b72842fe46789300b54599f6d18a74d4ab823bfd3ad2f6d33f9e1192dd83a0e34c90d8b50e3a5ac626ad57950ef53fdea6dd1479e5e6dd4b3a63793278904f843cbdce40c85700cb1a539d9386218cdc9485f0cf99a49713b193e581175c81fe0bdc0c7123f2f7f1d74e874323a2a7732726dbc22ea4c1f1011bf18f1044568aaed8604696ee28be4767742b1e96a903c1f336d35657632b294a03416b9e244ab46853271e684d26579c25c714c733388cf67fdf21ecb7d326066b48bbddec1c893f228923b99a696655d8897add600169fa8ca6e3319b6925c6d323353d32b8d04e40951e33d2cb508821587950c5b49b50f7ae03e265008929f259ab6d8628b2db07c7f5ba8b9b8bd6c23b4e270bbcb72f4c0615031276efcad180824f681eba94d58717819c53cf023554673120627bbbbbba190208d73abdb773042bc181944114fb27c50f2266bddaaf44a4e8aa3a5a9956b9121bb0e694e4a1898ee4dc952729185060a4afaf8d11d65d42cb2b23d6a97978da82fd7e56166c404f1ac08a2b96dc606d3dc854393eb8d4775a9c60ea6da3a99deba777de93492214e920423a584795cc3ee9652ca3ed5d607ea7befbd071f33ec51a3804a386287113a7ee04a09577a6d0b4272fb758992aaaaaaaa7a09328534a50f30ff6c481b9482618e196e5b157651e456874b2a5cc585363673ce2851d22ed592ead2ab2455af66b44b77f76b5b4ae621b4099d7b0b07735a3294b285fb9a7034fd2abd5c752f8bdc63aaa8aaa2bae9342151f5ab46a2b989614e0e9279d844c96453859027f4553792ee46d2ddb2fbd2aad14da48b74901c299316560f815a4cd9a0940de60009d9aa92b6e9b46a58d3344d39d2566d7d5a6d579fea992c51974573e20ba53917679924d51b440c312994687c816978439ea7683791e729ed10e4f9894a18e6e474928c497d2b5ddbd4800fe9703bb066a55fb86699a75cc755f1c409dca018d25c90e6e6933ced11abc664d5888745a213274f9c10815042082184f0a6b9f99a50e8de1a58135f60151ecbbc169280214f33d8642bea0e3238725f7e4cae9032051279bf89ccd08ec8323f05678ae4606785c0217352d5654561da130422493b42a189352d09f8621099336693152cc95d48aae26e99b6cdc703f5cddcc7e40a23598ae9cf156b1df27b2772d17291522c85f4b9490b02a7316121a72161d92cb15ac2ed4250b8031e10dd43438e2fb2e6043087dbef6c8e1d41305f258e88219a9ba3239a9b46343775343725499224294f3e9a9b72c8137e204ff8449e3005795ee0b14c99176342225049bb4c2292347d4e47e621122aa6135c8005d4d12ef33ba8579f766404bd442f3c2749e9c0b0081d828876913e5fc48c93444473f3379a9b9048132956e419e4878543acb88122494df294240936e9db92049b3c59026ddaa58afb7948a45de6619123b0065201af794a477cb918069b3ce8abaabab596a2a80bf132857db8e24222f4d22beb973493e965d9aa8244e20b47efbc41e30b77dfc4cdcb80ce5313ee20cfd3396148e4c598ef5c1de136119caa2d38d428aeebbaae2b5eb3716949c02cf362c05f205e177840c00cdf3108f919cd552a9060d2089cae0d0e11125f2014cd222f2908850f57dceb52dc53180e11e2c25208398d7b4863dd885b7686dbbd265447a42fc20824fadaeca09158835d56d2baaeb662ac300c4323cdb5910b1669ae61fa8a970fa2ad088b4071a3891646e41158039128191263d75142fd23bec0dcfeb8eeb9fc8da630abb3154104b60d416d3760e28b071f515f1371e341bdaa2e096732b5753299aaac156732b571a0265b1cc9007fa81e136be8468c4dacc8f059733014b7c966899fde02e3dd28e2b1c05fe0c580b7b18d29a1d6993783054e730f3f00488eaf320f08ebef1780b10f7bf285a25c2c6ed4c422de0b8d2c770b3285f46abed249ad6acea62f5e8c9ef315c2aeaf618cf2d24459c2dd10cdc55b6849b7361e5e8c3eac8994deee8642ff6b0271d70203133f8300815ac02952a234171b0b9ce64064b82033dc50735927999b360fb5895b88976735b9bc7c045ea3fe985c51456e9c9945941c2912f6287d92302c59144fda38d2ec28d402480789529a0dc58ae6226e213fb83839c69c48ef82b9584e9eb48bf43897ccd94be69469a75563f6927679f6f1bd741e3b7aac8fe4786b6b289aa687349c125f3a3874719416c8b4d6d6b02abd102f534cff797b49d8651f132ddbdd42700bc971ca54c12cda853a3ccce91709a3c40b892f42ba10a51e95ac1aef41c96f887eb9d12c32336e881e4b3ce5b8dc851c2f457ce3c538c2ed1bf158e08311888b689365bfef1c7bc41a75eba22aa65116754bab147e58ab58d4d25ca4b4721cb55ab225aaf2ed4a44087a680911e97befd66825e7c0deb1b78cc8d6c33ad8de7a8faa2cdc51a3154bef4aeed4d7f26aae9b5192e3afd3dbad5bc9d6de7a4c537a6f448e8fb873bbd5dff82241d30829541ed3940af69caa8e61b88b2bd9b375118fb046e14f2a4dafa7fea8f7d1752bfe468c15868c192b547de731c61831edba569d3abdf5bb6995766957b44e1faf18a3851f5e59193d294f0b18046bd5afd3f7c3a1280c1933f20dbb62b148b3ae55f655b34e9de6b8a2e47e2874af1555fc6e34f73e6a925f14784f77ae8cbcb7878c9491b2a23d728f2c2349803d4b8837829db5a4ce66998956979ab574ea8a1930932b4a4fe125e07c972da039d2dc69b1ff1eb1489ab42a4431f5ca55582449f919a55bb188a2f5946de9172c9258bafccb3ee85ff6412d16d5eef80946c22e3b87c9a1dc87f1fa24c5851df9e9306fc9dac3227bebf44e4b5e93fe2cc59aa4c9699afe5a60a64f9854e13ec5af5934fa626c1ac5a21723946fbc3994dfa748464c999033b5a51bea55e30b00204b9757927452b1ca3a3ed4707a6f33f9e10b0020530a3360264bf2efcd4706cc642a5f4c0c98c9135f6e8f0437e2ee5612dcbe74410e5bc91c2fdf3176d42a494a5216df3bbeb724a58b86036b22fac65a8efc23db4389a7e912d37044d1240f5ff5d9bdb874fb2e9445d6af679a6c096bd53539251655fcb40a8b28f997a392422fe4ada8c277ba68d2e7edabf7c4a27aabb5f95b9b265d9b9fbe69138b28fc6ca63d6341290a5b861cd56feeb4f8dec9c89c437a4c8f1e4444eaf03bb4fa977be4e93da6e4648173f3dc22236388e8d1dc8bf8325246de9cda722e534a6994e28b4fe2e625b496fcc9bdb7e4167945b5edf2e24fbd1b8fbaf6e0bbd69ffd9e84939079091eb205661eb74e8bb799662de21b2f67db1c14439def1dd2d8f1369457662a18a5580aa790518b15655842560f5c19e9e578615e5e442f69a22ba29a0df97891c451c24f042210014cc20f43108210409c6948a4548810215240000210c0c8cc0e5427aa13d5092d204dfd40fd40fd409020413c506bcd91ca307f6962895f073ad081d717df11fb70c57d6da236519b18f2e4890aa402a9405ec8c80e6051acb6a8b6a8b608404e66439345713b0bffe011239d2c9289e16661b81dcddcca4cc356417d1917ee5b01a2d6d72e1d86d000b58720affffaf58b5818828522516ac8033d80a0870fa86c11e3f3410d3551059cf7625c410d75c0033d3811e1806573354dae48923b4be5fbd403e2c14e7c4d851a02e2d1225f21ca15a0c028de7b5683dbc92c591a5f35d4b75221f4c214382508218490a2688fe9f085fa7b410199cc702d103a49b40437bb17bec8413608640727c01c69844adbe5bd3d0cdb046f69a7edad73cf2c3f67cc55b23dc5abf195201c43fc5fc8680ef6344d536685ea348adbd9dc53a4dec5383d466a9a26ea7465661813d644148f6c9e98cee419f82a60ae583fc3e732e78c35a68603e618d311c216c889ed13c092dbdddc1d637e9bb4d9acbb463b6dd266d7c4a1268c32fcdb2a2fdc37ca329c7394a5a1be152a4122509976b11a090a83129b91647332b1a964454ab22c6abd8ed08a580291922c4b8294be461b77b845b8158976b1ef8f7ac8f8e81e32edd2f731b254dafac2aaaaaab076cfa3fafc7db73e93e5d6d10edeedd163dbe3429e36095418d396b407c19469597ba7a99aaae935b1db6d2e7b2cf02f9ec0a06af55a5555567329cac1bfdebaa794397a805c7065656535175295546d74d2c494fc9c007192bb9785132050a6cb6c5974ba2c9de49451ba349124711731c8487d2f46373dbe4689b29b3192a76bd479d0a6684c8c9fb6c7852c6d12803f4489757e568452a39032a44568c664a7edf394bb2d2198dbc826324f58036be24b03a157a3f73531840341b8a32d18ee5e933f9b10cc9d708e148182a6a59050c41e332685584c71e20bcc1ed3bd04dbdaa6b99507e019ee28bec5db0a0ec00e280ec2c5318849221531492be9256d23a10c85eeb5c16399df411641c8914798226b8cc4000707e208c1c189382fca21d3268550af71eb220dcd44242bd22e9891782442d12ea01841d38465194d9ca6ced9547037935582b053dc269a890677a35075b1c56ce17633f28ce6e6e72f1e4efdbd1711773ce0d71cc4a2b909717af80b0d87f07b893891651ee24c18c4624fdcee3511c01cee0e375ebca3a177a18e8b38f145d64496794a75c01127946f9a659ebec01dbd1aee6e0877218ecbd8dfc33e6dad4456b1a4392a62926845a4c1d1497392c2d149b422cee0e6064a8d4ee2937699a6699aa6884573f3353594de1b6b22ce0c68c0c33b5923a4499eefe1d3650d92245428914baa904dda4587cf4b21f125d24496f9d03baa5dc88b77a1f9e93d6c46386997ae6f62131d362dfe651d5e79d8ba9824cfc72494921e3e1f97449b2a78f87ca4a25dfec9c3250f8f14007a78f71093f0b0bd5c24d2502f228d86230d455158d6bc185dd3e4f9ea087707dc3d2bfaa6a1e044f150542bd161a34dc88024d769ed26bdad98851ed359f6690a6d1d13352650921ce3419b8da7a88daa813fd048dd00fe309dfab481a68d421241a04c65b7db746a03a96cd6259941d967f36c377976b2460998f30569f2c46f2eae6498e93683da909cb29c79d106884175e9ab7634571d4677572ca3391f32cd55a3e62a2462074a69972a469b7e7955c0814da013f804de4028100b98058c0273e014fa6abf1b31c8083b5668d36d8591ea32609ec8d567f40b8846f520a8c8d56ff44b1568543721c8d58b6817992b26564092ab1bd12e30573fa25f208daab64d1b21575ac895ecea5552b955b6703b6853411b6a6fbb407b6ad3a843a8a4b98a8ae62a152c5c29849cc67529aec7c36abadda653706e304973d5af0d226996eaf112d63457d9c0c8557524da05dad8ad7b59e4ea30e01129b993b993b98391abbfea4b6e57d56dbf5cafbef2aafa8b76a1affe76b9ac5a6f5fad55adfa98b635569847db5826a8424d8655c88f09159e64271047ca22a494724e0989e6fa88e69a34d756c827320992254a2211288e1801f2a3b9966f99d7035a38321ddc877dd46b9b837f9d062596734228519c446bd528a2b9eeb6240aa100cc706596793a4422775a2857325d610de21d91a50f73f7986e8877c417db5052d7e0e5a44109b38663fa68ce478dcc0677fac8de68969e20c63147cdf58f68ae77dcf4e53c8661d92cf22d6d48249a6b8977b8e17616e739b9d2cb30a88d6a0fc7ccb2014334f7aee198595e5a983b4d58f2e211357a34074772881b3a8a88325a6266f48b10b76203e63e8487568d995beb47dc698d71ccec634a96195e4e8132bdd276a1af0240c3bd0de99d4c674c71a761d0aa4131ec2bfd2269743af79d0ba36504cdbd4c9bbbae2bb4c19c5d25bb8a91acf24f9229a02027e3fca6800227b95a0b42723f8736f7859c8e49c76cdc5d88afabe0eeb97b37d75dbc9b5ca134e7064aade1bdd49b4bc5214f17ef6ca1d79896d12e19ee60a522a9582af32ab89399397be835b4b5d4e07630328cc7340cc5358be63c5b8d72d92cac1a31ad92af3f4ba4922bcef52ed857e76207f7933398e5d6552c2eeca2c855c98f09166cf2e733dae503933f6fc99f73f9f3fcf9eb50fed07ea172e2e7f3c9892f15a7592635c58373ea55a81c17b86b91eab5552852899226f2c98d84d22e8f091690e47918fd72671696d4cc4a02e477164a3dda9bbced171f5c7cbe5b6179f7220fc0074c3d1900f58405534f42b9a39e78acec2a4f3a78933f37239893afab8470f2e7c3044dfe3031e48a4eb2ca93807952d95e76b1c1214fe20ba46996f9cf27acc9c2084e9e446ef264228be654aaca16b1686ed60ac5850b95cf1ef2f9f490cfe783bb984573f39395e3836314151c737c48c2e5d13230b70f49b83c3e978159e5da351edebd38e855dba8835e68206dd340a07359fb0b90c683f60702813eaff1704dd381071efee23a58ab060f2f70a7695852a1b2452811a74107e9f0cf2b68a3fe199244fb8036ed737aea732e83ae43a77d300e2e83b0b625017332e86dd59054b4cb077733f9f37990760d7415dccd64ed3a5c6593429ad3f06b4e07dc69a024f9d3b1877ca6ece2a157c97ea6c73416e4ca0ccb2554b556033e57b9658954fef95c45e52a2a1f15255cedf397af773da4de3c203e9faf9f0de6f75ea89cc7324fb120574947e5580d5079f66b89a600054dceae7268e5507986351c5cce9e619924db968039c3928ae6e6e783a3141d2c1b71071756dce076f0098f1daab89d1492e7fcecb0c1272eb611ccc9d3435bc7044d9630fc6cf50a2f868bad42b979319270bb1e72f3b904bdc8b28bce66177771d92f8f464c4729fd729ba53f0feaec311d733ae93da45d429f6f9a884594ea62fae731711a71d9c5677b1c113e8c3481394de401d1f9f398f8d9a4bbd89298f2e7d396848ffc913e78c46595c3acb2dd5c5bc5f6067ab6c1acf28e6617372eeee226b2ccbb7885dd11c2cf65fee08e0339a4b2c17cdf4934526668b9b8e97cbeaae08e4eb8e32edcfd536fa61cc2528910eef4cfa99c7651f9acaac8f6f59dac82eb8d8b1d6a7027cc23fbf40feeb27f0edab2cd06ccefc5f8bc429b6d8f7e363944899221795af5a6ab377956544e9eefa4102e27814f9e9564a5191045c58291892305ad2105130f87c614121c83942b5aaca0e14d79539a48134903a52d535aa689918186260d500814d2d2f26ede0d0c4c922431c23917d07946490200a59366caa44103a5305360ac45c39c52e6f8b705c7490973604e1ab20c0d5392e8a8b2a96c684c31c5204d138453facb31369c20f4c201eadb01bebb9a08deb201a92a318f7779596b37eafad3e9dd6c4c9c449d217db1e2aed6adebd7cbedbdc6eaefd776a3949bd4875b5fdaba914c7e234bab8a65c5239b47efd2aad1ef8d79bc4e3aa4e6a413866ddd844732f99d47cc128f627e39fa0ff3e83f7a7a28e56dddba2a4ff1a8fef264b3b5d57632574ec257dbcb93e2914cde7824f143927814736b128bfa2f94bbf7b66a74e5a43efa48c5aaaa286ad4d1533cec5fa61eb7cac5babdc8c2b6b2a238454fbeeec8b23a68a7ba77745fd988222c858bc774c5d7c5e731cb97f4bb75b2fc19651ed025aa026d3ca65196a589524a296633cd46e7f7a2ec9f5bb757b67d302c8a62a4e269a517551a2f7acd6936a8d38b445c73f13332e7b94e3d5615a535abb066e31ebbc8f3ceedebbb1b6bd6ab538fbd1e4fb176450b6b36eceb4516575a55d768b400cc15d66c548f1755388a9e6683be8bb8f719996b0c0a599683d22c1b8db25136cab27dd34b47a33ccab02c5b1f4f7651d4c743ef95e5ba5d6c94659745758cb238a2d1c256a4ee1d65189d41c558638d31de3a23735c8e5538c94d5bb87e79ddb12fa5740900ccc81c7d5c9e41b35f71b0f6fd682dd5346e9ec7d7f9bcfef3c13c9fd7bf6a23a5e48f8cc5cf0f792beea8cee986fd7d3e58b6ad2ca5a6090594a26022c1ede25b02c1b5d67632bd59afded4dfd6c91f99fe4597ea5665655a4e549da2a4ea4561afb6fb6ba3badaceb17a5b3b7793e98c611bcdf504b77b9fa061c6369969d5ec45ddfec5638fd785d14cdd9ec2392e2c698c58f4f8c6511f5fb1665fa3c522fb784d44dd3a253acd56c3611f6fa948adcdd4821407155a42503928164decf493a53490932bedc2228b2dbc61d1ac28dc751e476fe20ebed68af250967a355174daea3d95bd97b55db8eb4c9a4c2ff629d5cec78f3cc56b208bb8751ac8c971d2e4a8819c3c7dc25d7c57b7a28f8ae97bbeda46932687f4f91d329da8db5b138545989deaab4fefae53bf166bf35afd84699346dc69359eced3c718e3ab896994feaa0e4b5219c99416b1c8fe7abd75accd539b351fed56b136a938512c49ae8ce4f72907fd5461ac26bf2bc9ef95918c25c9ef1416d18a487e7f526545354135c1a91ca14a3defe8646665f5d63164614ae90d3ddb4d2b9929610b947daa6aeb76e4ea18a5a15055659f8b7a300c779d67cfd6752ec94c4affb0d8c5e4f8f9187750effa6771472f4c2dc65d2824fdd61d54a462751aff9e3409c1742d31d7e38d97efaf5b8fd26be86e9a542b751a5f55b17a3679f3e18a2b3377bc2c72a4ee4d09dd74ef49c78e1d6328d6e8edafa68fd76661ad5ed324ad26f1bcc40ed9023399525ba7517f38f9d9e4473d9c97cf844babea7d9aab38796ed1573eb6ce47ae178b3cd8c2f4591fb1938990661fd97aa00710204d6c41e363e1987a50cf6bb44eb7cfdf8bf1c11dea9eebd6e6c13477e2adb05f5563315f1714b77b36118a08f3bb369943b7a8f50a6b93662b8b0ae53bd5570b5b4c5f8ca8513136ad1a75ad3e9e8628fae9a17cdf8b115fd117636a895aa1d69a8239abe4b1e7815dbac52e1d93eaa9ad43c54e866ef31e493a95aa7471c7e639b25d8436d7571f3f7263588fced2639a5219e92d6d953a452ffdb0ec7b7addde4cc1eda4f79fb8f5894be1eee1a4e089dbb53c31b252ae4fdc78e9f50949c2233b672e3875e01dbe3db883d9f3d132fa8c3e1e91e3e93f3d3275b3889dda3a076db4596472fc5c31d1732f8bb214b5b5aae076b93aa45e4b702bdc41202ab87d9ae34b706b096a096e09e89d4a38b5afbe1fb75b5a8e4e0fedaa7f9bddba1e56bbb0a883318b59b55ab747c632caeea0d763ba87ad1b464f698f1c4f61294020dcd17b1e7147b1ccf4ce76e12edeecd928ad137da5968ccc934473a56999692ecc94e22ed2bf62ef442b5a9ea5e7a8040d96c5512c15cd480000006314002030140c09c542c1683c1aa8a2da0714800c9ba05066481688b31cc871ca1863884104080000800000c80841030028c40171a3d837ef28b549a66997a0f589029380ee2a8978efd0b40f6a3486f6e1f963887d4a08e6e07d95dc47c8b5e3d1f71cab9c8509e1cf945109441116013e2c015947fb70b4e800fee9fd7d501a984782f0800063023142825a0ab46e2a86f88e0357dc8c52559d12476b9a5fc4566bbe93a95f78f16f7f01b49310dec7efa12adda434af0c90b3a285324a5091935a72b430d43e9b5dc08173ab6d0532d4a62e66c5353bf17cc90979517cc9fc4e6e414bc75c4d156dbe46de9adc265c8b8120c857e6218e3f2f6c9528870b36315d24b935c1c0200607518689f9faf900186924a8eb00daeb4ef28ed9267fb30b98908c71da300aab5ed032bb05d325caa66705687032d24508cda377acf3cfedb865392cc7076d89da07243c7123ff54759042b439a3cc1a4c2f21b5fbcf81bb943b0645ee915531ba774138fd5445bb0957f7291600a59366ec0d4dbecdedbc4a7b4a77fb2dda597c26593303b04a331a1cb6dd472c4c40ddecbd9d393ff5c7c453d1ea64c2038ad8616f204bb55ece1aec9a5c761204a92457509b83a72ed62c787bd4580bcd41f1b76c02958b514e8e51faa7c638ccb40d9e0f8fe9e2d1c1b90a91f984a146dc157fe7d210e77cfcb2a3efb0699b9526907d896acad728fa0cfc0ed468277ddb2a949c636aab9823242f3906c8dc69733e590a6f0c6d8a2e47c2dc185cfe7a89c3be987c3ac91984e4db2fc4b8f941a627712503767a2b9ca2237691552dad4883cc30f47927e4efeeb27105d7a39389c45d188404abd11aa6598b6e4a25b7d9c5b32a622dffd85b4ee1081dafd9126f00d84faa3eaba92991627ef20cfde60e4520203dc29fce0d8db126a822752ed81b94e02509e79d44aa11c9472edad6071bbf2535732e22672fd5b980efcd5b391ded205db88d25d5865fe29f4694fa1f2397599b351ca6e96213358d9be13a06e50b4960f6ae4b57306a5ae91300e6254805de05fccd4b4cd42000816896d394a0d96ba72a89c7950e4f7467ca28850ec7c7602d4c4a931a39bef8a176c99beb714b1b0be1cfc6a2de4ac7dffdbb7a7d6860bba5ff030b20f63591ab8039c1ad15278aba063e6985c5a4899d99f63ff075da43b42f8987ec108b52a79e84b05d7e7040776881eabd900becbbf0abc334202f47594ca54bf5120851ec211a543efe642e35abe0a7f48396b91be2cc427ae9d940120177deaf436dbca26d73ad18494360ef780f203986a33125b23079c8489c51d98e080c2609a8e48a03af510d5d22c0ff875535924f3dcd7333c5b083cb89e73141d949f1422b54170ce7e27c29fd8cdfcfdd5005fe4f90b083713a72bf765b5a4ba4f442e583e200af276c6cb4d0c1e6f6c12540b07d8e39179e7829c06102f1d098ae4651db383d6f1a59220539bf63adca0459349a4235ebed4f80aab44205c504bf40e8771e7473539c4b68cd26ab1dee4b4a11f7409edacb7055f66b275aa6a25c4b6f06966368792f0a6790a99a9715b3592281cb16c553b71f84d06fc030ef8d26fde58b61cdddab9fac1a4c66052c31d42e7255e5ad36155c1b4729f9b12447e94fbdc09c4acb42b8e54234677eb3782a723eaf842a633cf5fa83c24aed01e6e70a824de863bd30e6c1de47c7152544e74bd9a1a61640ec6d0d8d9a0231ed26abe05d7d0e2e8db0d00e644132b78313f3d10f0b35328d42b80cbcc1156c7307b9539a450d8290437391c5b8b2c5076e2a0c6723121145987b44e43bfa991ab5c07727a50d5b44f2d4943c3e1185474c390db225bd23373ef8faa458433155bf62b7c5e52c2974960ad3880d6ef192ac3178c7d9e5212f374efc3d519ff4a7ba2d84923647f02f7fe16a06246a939e0a7f69a343b23ccced9bfd53480efb1e25919501239911073161a939482d3f6120481fd8ad69ebf72db5a8ff41975b898dc61b282b59bbb16de0a63acd527aacc27d8170e97fdcb6d8cdb96e30204d783e1a5ce0c9046fd00d87ddb09d126aec186eb69542dbabb474cf89eda69be8a569f7562b5d3e89fd748375e962426c4d37b2dfdc56f47e9df3fea0be6e1cde821efe1e8366c6597cc40fb0328b66b9d178731de8be4852ee2b1abfdb22fffb70ef69161bc43c590fcdbda4f5772dfa4fdc68f7d25cb6051ab695d14d00cdfcac916f342bc266dd3739962817026e0d2bb76b99d33239c7d74e8d37f7d293fb0d116cb5a56b6e891e1bd3cd8ad24b17fba9ae9bd332ac68c72f2e4eef95c6f744003210611fd3426c6cd656d14e4a5d27862b8ce565825d8bac76e12e12bcb6c7d8f5205211c47f3a279f12fa60a9671a838a5be1d55903bcd9dd80c1947723d6ecb5ccbf247677b1f3d39305d9490a64f5ce39edfdd17c86688769023f8a0ce69aba4ceb7aa2333fa4d8704c2e8613fd526eb6064d352db87af6949c2f569fa554c80af9f0351bd60b5cbe80d95d62e8b3e409c93bb10110181d23758999c2caeb25309b1d8d28184255a3af4c51d0e605e7b66d175da79a7cac1216e17e4a8a6792f2a97379bf2eb623cebd86a3066e237a65574d04c59dd2f4de24460449e211433a192d475fe30b7cd0556fe79ea658b8ddbb83b2d1e5b64fbd8a147b08e1cad10457ad86b8f3c74d7bde36a8abc73d7c55c88b6b7643a4bb444e1b934a2fcb140cc12cd54db44af10088258c9ed8d52bcbdf69e8227cff20774b1fd8f3fb1a3f566760aa152220a858c5aa15295e6167e45f26c90c1f5ca247884fe8c9e60e6672ff833216a047e5bb74183e85cb97182889a1abf43c20b7ac232a8ca95731a1838f413592769c72a030580a9e2b3622f98a20de09fabbf62c77f95e714c863ebf510cc165b7343e7ff38096088e8791d1db16c9c35b805b8f2ea6cff562b1fea2f65d0fba506634fb4cf785b7f3e68c071c3be8fb5016c4ff5d395165bce712d30ab12778d644bc8f32c48c7efdf1fc86f2a530a814771f7bf4ed73417fc207d4e973590da1440f7e57303bade7fa35d059a0162810073988742e10f86589eac0782a46c29d75823dacc6b73bd72b0624745c5a48309e61002efb6a1c550b0587e7381251835ff61b1b60578940586b491b2fbaecb12e7cd6213cdb76ea758dca985dea5acaff309cddbe55a7ed9cc62f111dc1df80082219e0588b04a4a1ef1fc5a165a99f4070c7377e46412cf01a4249d1158d8893058af70c9478b2aba0b0510612563bc42088b6dba2672a2bd28a811e0beb839b88a1909ff2bb832e69c03224075a0e98b7453a5e20aabcdb80161c30de67d092891ba24f6fd066d6767772ea21eee16821acc726612442082b7fd6119683e968d5a3fc4cdab328a5c34c93cbaac7e1e8f16e6810cf98bd51eddd9612608a85ce27e8a8acf92d9ca67ab87f9cb1a3ea0ce277c8d75c94f97345f706615195383fc56fbc30b94161b383c9a929fe7689e171f92e68a79bd9c5fab0c0167c4fcc0882e1666e43511ac80c670bca121ab4548e7b8b16d8e98606ec0b532ab6f31efbd41cfdd22f37f1b233c1adafc9e24f7286aa1269d4b01fa10e031070bee83a168227243f7890c3125c7ac3e19707bc532cac99af93d460d67fbbcd13585d35ed876312140012e0bd31e9641a02091c78e6da8e96fbcbb052e1f2c38f73aee9b6f3ed29f1c9ded6a8c08a96257489076b5ec328b4043965a41e70cbd3a8cebfeb9edc0fd7e847d3b383f1d42ce1a9bbd0081b4f1c35416311bb3f0cf31d3e171425fbc49d667c7bba8d5e3d6e91650d0920fd29390079f99aed95078f589baaa13ffdbccf3f02b7cd5ec3e3012840ced83ed939e5bcef4b1ef3788230545325138d14a2e0dccb93fc39d87a8793203f135216b14c27e39d6ecae028b33a4c1181284961b69be4c35c0ccc5616a08494a6bf6cba102a47ede9869d3d055d2cf310e485c5a7a9c9ee2672f4533d2e3eadde4f656180dcf4bf7b323570d192a6998913dce0710bc5e922384139451471827aa0bb4326b532776cddc6ca6ee6a8f0244ce0ccc8dcb0a0a0967f2cd0f5008fadaa8dabb6dbc5d55c25adad86c9589900648726e6fde48a268d558590552839cfa935371962d66a6fae9061fafc04ecdb09ce031a0243d5083a693bfe1cf9328c36e8d6ef1d8e7b5d67446e2dd58c246e69d5ced21cfbed97a54d8db29b94754bbcbcb49edde25103ee398ef5b2be1458354ac3770ca68a5749ef1ac276171ef145b05982c9b2f80c4dc664a13a440be63f05c0ade156139eee363491fb562c5a31a88c79e2ee46a7a60d2b6d5c88459d446fb60d6408ee9250b88df2e310313d43f6a4721dd2a2bf463facaf30df3215b3069f1a2b5cbc45d262f5f876b866bf89cd60cae1b8712aef5a333411d3469655229612b63624229f17a04eac526dd480f5ac66bc34e90f47d46e5c6b87ab8b50aad1ad8994919d60f66a8299137d868ef3698907cc60fa07e40badaece069df8ec94cf38d557a25939e829db4d7833ae4cd57b6f030553ecaa359f156f630eecbe4c1f5ddef88ca9029c65c0c9464cd53b7658dd2abd8b77e6836ff68388a1342a7d65fb584b4e3ed5510ab5dfa61f5326acad7eb9e22c5185a0fd42726313422f372114fabf60b48edaa7c685b4d911f766f316b88991935297fdb8fc4803c646e8c728a0e56a154bdde44a8eff25eb2df518b7acc457f4d6c6bdba55aa669554f8b0a508c02beb2a1b0ab475d7ebd2f5433b0b33a28a91b7e146dd02ec03e3f7e93e0ac356055d8f8579090687d83ff72dc6762c991cdd024f96b524d677d1eacd7de8db5c1e3e8d7392b02bd40d83b66d8dd1041d06c054562797a6f4a285db1d649c8e50a994bc1ce50f22c9e481db06a0494c0c0fea1213ce1f1b90936189d39353dd43d2d67a9b0ea873c4f29484778d451a9af27b3ca52ffe8d9ef65cc9bdf091a4932440c1692f01768dab0f9fb016fe3836010c5cab68beef98b1f5dd139f4b0bedcdf235dd50cffbea34ffcf52d4918e71175f9705f797e1eb828fad6b7237882d9679229939af42364a796ff68ce2812ece13962db9997ec38e9a66366da20f05a75465959efd2655b20212d23e60e65b76b9cbcbd1541fc592eeb93e31aa326ef64b494a56967b95869d690e57b8ebe2f7b8a42a6c7585eb5ec540cd096711f20a10933d99427998ca62e1c10027fd3d2387fc03d347853ff851a8b9c241d240aff480c18eab00dcc64565860cda7ccc4241b2e4ce11a390f46232e353908997a8973b2d09dbf3ab27d2109459b1512a514aa784bb4669fd28cc151e23e84686985dc4b77fc111bada8aace8282277d859266af9c7c060b1a64dd13cd9427de090deecab02249bffb602aed9085635a469fac277a6d874dbd401e6fd9f7b2479930f50951aa35fa21ff50d7585e670be276b0e1d8f8e663327e7eff6d32c811c183e85ba79211b5a4480e258264723a05616d8bdc8d02a97088f75572416b5831025b5ad18e289fd495a1125eb4b9c18930215d6b8fe315335603d07740174a6e9b1b5a4b2b314ee460b1c0291487ede979ed7195bfdfeed21d961c19297c658f76be49d8675f8a6c47c92d7166b08b35fe5624162062767ca8992fd024e08800380f64a61a56d754996a8bf37e735c35f726831ec5af411cd307c11ee5ebcfde4a6879a420965a97741ea493bdb0a15b10d786ad31e94bbfaa2ee6af4f2a7fdfdac12b406b14b83ea8f275d29174a7540680643c0cd8d59d9e629558d0a9823502d378ca8b553c4138f4d400f6fef2dd9e10642400cff7c4644fc1097344c9efe1f27def3a7280df1f36d6f1e7a88fa6b36564afedf98c6ec3986ad064a515714b65ab7f0deb041bd058f6445cf2f2795c3f57ca722a4a833c975d9c459369b5022974e09e8d183f0560a2a6b68e5e15fc80d03e345ef8576fed1f84fb38f43cad9c04ae187ab89c9efac1ab5b83640fe3b9cf15a54aef4a046c4f5842e6dcd4d1fce6665bd07a72231d14f0e04997e5b2a26ebb3e02f7a16f1cb69972c22792ec405b092207bd3cf93ba84c5f20114d51f5b3a37c2ff7a059e35e96f0d81be284bb1baf58c5cf416494e480b9dcdb08acc62a82e3fb187a7df77499dc384beb2412724ed0a5d960bf41e1bfb68103d0cd859cc2ad015b16627593c9d0eecf0a268dc11061b582ada568b421da6d59995bfbbe3eda9cce7eca466e04d0ddcda3fc82557d0de2057aed75f2f04e9c0ad1da43bce4136e9c570a4e2f3f9104ca1e06c00b10ae0d2753374abb36ed9ff1bcb6dec9051dadd3a550c72379511e0a83c21a4c39b7e78dfdac9b135ed2c4ce5ff889076a155fcc7d9692e7bc753c7516f7d5fc6051e6383797b1fc9edb16979a6241db04dc049421aaf3f6f880795d81a7618f57b6736c51a279ac0b0236a7c38820cb62cbb34ef9c3929f94cdbf507c8f4093d55d41e5d9452540513296801c3d495e325d6355046946bcfa8205ca75c66b820b07cd0f3ede228e82aa3fbe39cf4b51f497ebe5e66536c9374467c56a4dd9ec89c1bee2a0c6bc3b7e2d3cc5a7ef3abb1bc683a3129657ea3e16ab961ff898419e6a54d485ae98801c8376348368c392efc6b949539c9950b8544a5e3047b5e04e80c6b4077d6a2d348eb211a5ecc80cab2c1751affac2dc786a6320f3ee0e04e28b6cdd59419df755981e6e826d6040593d1305718bab37e58e9f9bb69486226bb3ea74fe1e8c199f61c375475ae1bb6fdae92e6bb27406628e987450096ec9c8de47319346503210181bddd2014209ce96249ff7a7c6db1421f19a011d6ca7303b5d4b4ce8c7ba9827acdf8d452e0dbb43f4c291115d5c5146d68c9f3ccb569e932205960a9e6c9f81e305f28ad3c3c443da11205b7ac8a251c4287991fd8fa6fcd442aea55f293e57c081afe2268237587e6e5acd304be2da52918cbff6985f0bce42b0ae55c5a6bb84b4b2cb5d2f1fc57219a3de4f9658f0c0de3235aecf138c2575cc23f3ef8b2d188428fae390ecdc90b00831177160b15ca4a9fb2cab031aa11e73bba852d9c570c41732ea976e4fa6bf6a05e000719d976a29308f9a6650a98f235d09880eaa8df3b6a859b130e3219705e3f173d6502f56c1405a09cabea01d677674bd42fae28ee5d279f9caae0ca2766e2ac829e2b991806d425086ced2d3ba793652913e4dabe607abf919524fbe33b56f30060fb97629d2175661e5777feba0c357ee667e62c875b4db4f9152d0f377fcaf44e35d2e4923ad1ed67824d1165f47f439fed4e6d24992d5b890fccd34df6a2348cb8bc66e978507b86e96fa2eb4bcb01b12ce1ecbf9b317d10ab59e23bbec78b8d4e677d5084ab39013fcfbec689450fc68be2ed3492c2940e8aaea08713a84e72c6a282ed30a3c2dc6f0d286927bd2156fa1270c0f6288613f9d493bf33c9b3e65449b426553ce94933b54b7d858a8ae3c6d21e6495d869cc85860bce7324b5b93d66df49d128d4dcb074078d9b5a7095de68ef242e7fe74a5e4a94eef3946f95838e420d7ecf4f70914ca13fc5cb9971bde896a350abb51463acc2288dab96ed0c406e671c29a50141fad00eb2aa16f788f286b53fc0a4d09ad0d8b73c24a85058be504b897f1c7b5cc0a2880ed1f5b337eedc2bca019af8b81b81aa2647d3357bd143518c4c079f8a5902dc2b2688ba26ecba4eb2d05131949b60949e3aea684ceb4d0cfe3d04dc5e9cd4db219d4fc5c4e76c943e5cc347e47e727c000408e66108cb042fdf04d2c45e4c3c2758c5cc215a174c1db74e8d42adaa110d0425214c4a929608c024acc7af51da118b85731a794e709ec0ea43f0060aa084a818386097e6c655f0de2c976f2c597e7520fc4c10a6abfce311104613b0204227a3e1fa360c44c90386c90723b0cf41d908de4e2d22446fc4da3a94d730dc2f30f453fa2e319131f1d420e6891ea313f276528508550cc8dc2dadd37783e98378300ac615c2002820da81feca4c1e6033bd5f2aeb9c623e98077bf44753a96f564736b38233a48526074559519e8aa1e015629fe40549e6ee55fb67ebe796afca62c2cdda27457740595460f4c30042cc048420f9d98c815801a5991eed86a5240754a4403e0921d07e3902771c5aa7aad236732c2224d86b307e19a85b4103c255d68c603f96d03e4ee1a0c8b753c306031bda60a8874963473a6951c2cc821e23c6c12203714c1eba43ed881d3972a7ac9846327a7fbe8c01009a7db7dc9fcd3c6ca30ca63a93600186ba1924313b763cd10b190cea0f755340beb30b605c306b9f96ef559be0c8b49cdb92e05558304dc03a4bcfffb32c21a0cb7ecf0eed777a9dc5e4a282793f872f85474942c47d56eada1909764f34a0b95d3ed17c9da6766d591ebc7af1b4173bd1132754494bc9ad7625b13862d7fd70903f3b3d50a4d7ff57104bd0ec419fa07dac01f9f81ef02329464edd1ad8359d6a374e6eb7f1f23b5130a9fd36aacccada635598794c3bf4672c1218035e3092d9191776bb62d4a0374d461d6a6e329ca5c3ca025d8e10b8e1184fd9c373cf2f33d5ce0083006450528a880627f59335cf848a211821ff0cc316aa5ed4f6275e50c5f2800487be580ac2d1806a3155ea93477a051293aaf426cfa63ecdad8b6f186532ebf852da15ad5be7347ecc845585e7e66ab2efc008fb491207fa09338fb6adff9f305ab5334d4fc5b3d7420a12942ed37d1134f145e5025ef985c24e00ce7a563b627f487b46f59f80cb2f4a7049906731c6b6ab56a954e1eb3edbae2aff6065407ea62b6d5bad846121f3a317e271a7192959f9f104fbddbd0984c3964e0c559f32efa154f16d08bd74e16e8260f31dc7083995b9a8dcdd828c810ead415fa0d11c39f9fcb94023536c0dc71a45ea1a8811f8a23854ef7cc4308738175f2260167289e75debe60b9a4f319d9195e3d30b3c7f6824c8557a974fe183ee52e804d09991da797a54730826210530022e78fabf563926d9de4791ffca46b1aa308848e2dbad91d210343efa725ee35b51dfafc646868f1d1e5e353a53dc25242becbe4239a1a893567925d8b7a3661066f88bac9a3f819de964cd34b9f0c6f918c78d5cd06e8a10031ced0944ceceef27249d122f2c126af2c36423b2174dcc0c8e26126598e22f1af1a383b703d231444cffc8d87dbda8d2af52520d1a0100a4e7bde4163241d65bb13ea285d0413cc48283a9594701f861e7359e1d029502ba7fbadcd7ab7b81ebb3f0b18328cc03a2fb76f86f5c4e6450d4707da04fc1c75096ff99b2048d6099d550816957daf6e83470dc6ed12208c90d3c1e271b9e07081c8a140bc0f346daeb2b63b9570d235a101c73c7bd5a3620513401af7624752f119b75aad29656d9485dceb171ec6bb23f2f1703f9258e0871605f002a495ed1a82640f13161c2e4eb61a519798fbd230c41e56f885ee258f8e428697bfdcf4ba43f743934f8804ed0e4e2dca7a0d207e5e524360bda300eae6bf11ad8726f4f70ee615d9a8cd24a124bb33f8acd961eba6541b5bdd0fd5c759416513c6234261599cd09d6600fab0cf432814f5d2ba0a9f4dbfd4dcfd40f1c6695ba04065b2f9d1f728e0642afac0ba62b3851a3624bf74ae93946ed7ca3f2357d4eb678058e33f1fdaddbb233ea7b3efc2befb2952311f977df14057c0425ef86487b8f200e3d4d9d19af9e718723c1da5c26d814493c3b1ec83af872df8cfeddbfc7107c8978e7be19a70c63979bb78948cb87a29479dc49fdfe4b41e83eca6a67cc09341346b9c4d05b8b2b6cdf2cc9453bd01819bb864d131a1c878d09cf17c166fb66a2fe332f8c6b0c1e356e3ba87f7f80172f87c7a37860f439b802dc8c897bbf3c9dfced9b59547aaee3ed9bd1c501e7d9f6cd1cf7103cb726642ea7fcaac6ec9bf51fbfcd3c6a643327eb3326837db37ab0a389eb557cebe1d03f766a6f814844ae6ee66926932ae1eb9b15f3f72a939db2127775c5dbd4c64832b65605ebb3e41007d6babed9092e024c95b8b0c340e55162f889bd157389710d62b0d3aefd0cb9046026d7f3f8ba805b3863d0d4615c1de34f0ac8f94578dc28ef99b7f63138c15aee2cbf0889d0be1989ace170abef877f495c09faa628bc4ecf56450032759cd43924362b93ad15c2e2f6881a09bd1e58e152d672b0eba9d9e2b060ca518268bab092ab2dea90f898a88d3d7ea0e2d443bf21a30efee43170ec39aa2c75b83df7b778d8a4d455d8489ff5bfc48c22276f3169fd7c1e0988558575c05031cb0332bb1a13336da4b75012879b578a783e680a78d7fd9201acb7901349882dcb58e9b0ad7a0b9588c221f5964ca6adb05e9a320852dc65a6c1f496b8f5260d2d614ef76b6a97d5e82d76ad99e5718fded2abe38c6bc816144dcff01aee2dd03b0ce573e82d6b808ef511acc66532878769b4d47c4bedbdb18cfca8eabd89fa6f7981a3988f66892bf108f968026f6757e92902d01b9531fe95257b90467a1b68947491afd0e90ee80d39bd207bc4fe40fca3a0a6408a07dc86b6e4bf0e28a1d5e4635c383fc30d7b048827602838c0f2b09ecd3ae546b3278b686592f2f621c38166fed9e473fcf2ef1b254b6a2b8086374cec47d011d5220e3b730a9531063bec960e114e2f28588395e49089e059095737e158dbe4f1c33fba661373005762d3c01d23df42a31b336bc4a3838bc2df32fe1ec265262805d95ee6591ad67065c06a834a6e4e13fa35ff248f21a6c8328a7f2a6625376df2e71f93183ca43bd244094ef1d4a2de08e0edb2c88a9684b4186f31584b84df44363af047f1176518cc821ffae30cc95db92e123deb7800b841088981aa7d1e5cfc237d170287330e465a82a2d3096251504b05d0562a13e9d4f804066d6a1441c2fdccfe28db8c40b3fabb924efedad8aa22b815e984201c81344ed3c8e676b4b1eb97a4dd92925a870c6f994527ff34484253b0b083b39912ae64d3be69f866ab57dc7557ae5b88ccd3eeb0af57270bd7d4a0d73defc2dcce3fc4eab3b07f2ac320fe21c3f88e31e9cd19097bf186ebf0e03049a80bd98f9b0e60dfe0463b1f41ff76f288ae39b125fdd69c0fb2d29ad837829579cc8ea656df06a0f847c19f072a94dcac2c02193fae4dff099d206d7070cdc212d73d33e85b620a80aefa66a9d74a815bc9ea66c566f672c42d7edd81fee620d364abe1df4a413989df9c23261eb1b00a62fda088fb430c0f4834e65b4a1e332db9efb80989d7a0be28c7f031dda2ddb7cbb9de99391c111d71d1d0bd4996f618178d3622174dfd9d7f726684f23c1035c254c3a77b9ca71838817a25ada0eadf9181e6740e95d635516815d8b655a90cff0eb3f26312ee5657ba7fbd834078c14f778da6bca1e60bef090bd13d89953602a629e52047063ef825c77814a9efd42558ac13d5ec52e756faec4a7d3cb9b65c19e7ba4f2bfdb1765c79a0ccb12b073f834c5e57f6eda79a9bcd4d00d31d7cce428c875bcb9bddccd0d4de265aebf89296256e0941d1e1e5c1eaae1f39bc4d169c87de4299a20d3f1db0e8e175e22b1a30447005a3d1c38cc48f28c08025942338c7c60d8b5bb01c29883840bda5a76f594d600e204a89125dd7d11afeeb1852b8509385fd26bd46290eff449fee90d4ffcdc7b1cc0b87185e5138ff56602242131f7909781aee1e2d2b63431fd0e40f5b3d1bb3928fba423a1c308dddd7ab8d0d54068fb477cf998106d887453441a7dae05a74a549b2129e049bde50d995812853af5bdc20729e9f87fc756e608ef486ce0a7315a26a788421f47011f0c679a3a1bf017a3a41d7d3bd80c524c98446589e243754954fb4578eafd5bcd307d1a81ac38a5c201b2df60ad189d81dc0a09bd71da04d7827d2ca2082778008d81272d1a3af7caf0bc067858fe0dce865676a57804535b6c596d124f523fcf055bd0d810c30c00d0ecedfd2089da90cbbb1bb467cb56db781b44e43c48753f50aee830cef0cd22c6ac461b023e57f2a05c31a6826e005e58c53f2c94a4db7e1db58adfe8667a8e8cee1c03ed8f8141c839af5de03f99724550273b543465d426291f18aedfce241c6ce9064ea901920e0e0d775f193a8ed267ca0b132719540ea070821742ef4d9d379fc0668529effbf8c7198a4057affa5b4bff7bc484c08676aab6491099157ade1cf4b4488a97780b85483f5284874225a80c0b3feef971f6c149fbd193bb10911ded89f5031b16b8e7bd52537584797e82f088c122181cbc49089f8b7753493a1f0d2b641f91a7fe4759409da78e16ae717c0afbca19a139aef4f3962f5d402b668d05f0b87b92938160ac3947133f8265a8f514da2ffc430e8d3c24e6d415d2ac7eaa7903cf4f716f67e965d71b3bba5e2691db01966375743b1a600578d11a8e674d164ab3112dd9d60329bd58d26cbb4e48de8ab21d924f2fe804a28b845565ac99fbb164d8e4656e0327fe3406a3db2ee0edd993fa9006cac9dc18d588367a07fd905140f44a2932831fe92657e2a26d2516c3c1413d30bdae62c7cf5d307397489a7f26f942b54cc618131e701a0074289f7f945ce0236479bd96ee0a5dc6a7dd1d0e6ab8d2239561e4000ac7da06ad7cabbaddd8d823773b842228a328079820a6a7588c1683b14394b4a40fae0221e122a5fd445adfadaacc5713eb55e57a8687e7e9dbc4282b74d186ae8365106f2133d42eb0117660e98b871aca6c8f3b8183e4a4db076bdb4b16a81da078946d32595f9f96f973d2d5bd01844b0fd1a8a0d8a4c3a22d34a130999aa5965b842e1ba93785d0cf0b1673fcccf92b429e46595a70627d53bf914ebea5a198191fdd73c1fe7a85e23ad36a2b077d63e06768824f24758321754b1b8aa284a9fb044552ace5d83d2c0c56275448d05d84239d8157389e2430299ecdc5d93222a096e7e31764accef78098a8e1455ee4907608ee6f0f703d3ffc63be32c89f7f848ac69d27441c21da635b15e83a9666742ff3ff9916a2cddc71bedf0a6e746e507fe85a5da41b17d2c63a473572e533b9f950f8e6cb92ba2c47cc98eba18ae665bf2311e352c5d86c5fe41ddcf7fbdb375c2ee21564de5a647ec0b5c007cee141f23c7c41a0cdd133de0a88334049e796094a6ef109558b3cb2aa2d6b60bf6e26072e62290d4d433354301b047e03ec172001283adf0273870853763c2212e8d452416e7d4ffcbbd5533d018b96aed692922961a7ff8e56e43456055482ad094db1576ee3054f3536cfa537051c49a743e7b9da992360c803bdcb81b1224c04ea65348ffc1834393a3d6b14bf55c560b1c5c729ac1c37d80748326de9d1a02f2e49421f83f6d0564e577151415a68861322e0d78bf5465560774d273d616cd18f3995cd4bda883ff2b2349721af5ed0c1649441899b7277fcca6fba5ebef1c700b64f76312e4c6e04c0fcc6a78994eb33de2d55430653cf377785066c9027eb298871af5b84cf7afe67ec1919da54e2193fcee59cc22b85cfc512647aa3fb6e15ff00087b15069d83abdbf3a00476f22687012df35621d0c56d0106dd01d60bb4b476c46e7d7081ccc6f4353cb5ef41c8a2bab5102b0312ba6cfdcb282276d5c2bcd6cca463b8449797b6329b735025e8fe756c7568aa7e9889cdd66a6f108ac5cf2d52ca68e75063e123b5b5c01ab9e243e38b6676d87219631ed0aa5b2b01e068594ff0f0d4eca253717b1fd470e137930575e13ab938058cf622bce344c4ffabb502834e5f59a4e979ba7656c55102d431ddc348eaf002e396a99b84d435c6cdebeacfcc9a455b7000fdb8299da655e91cd09b40a5e0f31303e85c8c79a24d62b185a100486150e2400592e99b574adb5d2e72ced6161cb9d26e969c97c90c288031d463972d1f2f034bc95a1d0a196dbc8504d99ee62938d565873954b9773953b1be57da98bc9684afd25372591fb9a655b74243d4da5465bb325f19e14302d4898aa635fb65a85bc99d5aef41ad7dd0df1733704d4b8d8e5bedb19132899dfda1fff2b7f966be4067524ae81f31e6565ed16f9089911872b4008f80db43f66c417b1eeefc116935b89ce6f32494397f4c13a3a1c5208457c470e9bf53297779d00fe773fbe5561d061849a9b6604dc4dc335d3c163204652219d2b1ce842013dcad1292a9a4c5c07d426ce1613480d7c9533f5987915496904baa63d68c1496ba831f53985ebfe4d9d56a2656ea0bdbc8004141badb2e084a2d847d98e788aff9413fcd0591122db5ef7f3c82f162b615a6f6c6d693fa4af9352a2181e0cce24628f47c24da5ad9afdac7f537b3c66c97d5cecbfaec76314e4bf743c83f8c85956d6d6090b86a14b6fc93c6c634eec2ce60689a4bc93793852176ce9186dd32d4f177dc72b3e38cb6a05874c7d46453b568023aaf94b89f083e10787a3d480e5b825539861dcf87220ff7b52071fdb5479526330e06448fe61302ecf936d9815d52f34d065b8378e9d03636e49709138cde97358e0fa96371326f9d4132c9d1df09ffbc88e468aa3d129f9578cc8219be98380d7d705110d558b94a5fd92e080d566c5a07da301e15c377241207cb9f827039e7480c9d23fa6805d15fda277b521f63b43dac9a207f9342bdd80d2efaefcad44437e7a9346f5f724a73de0996f39d6c461a4ecee96512a06f51db830ca96a57d5aa0638d1af846dcb0b8d66f7ec67366b89ea57a2c04bbaf85a4994b9c62d778a458a80a420f316dcacbf871dd16c3c0fcb497b15b500c915e86cc8d212d2ac94015c53ae37902369c58490eccbb82c97889e5637da10f06cb7e555a352d244dd3dbc1ddb03699b41308a2ca0ead44efa9ed4c344baa12dfa9826b04070aae2b1129490ef9f521bf3b06294ce923c2fda75f5c1f3056c0b0ba6611e058c088622c2327876e5dc8520a4339bb7bd14bdcc94d4ed0b3240653a04390ff6c3e66b4b023de733554ca3b3f65705f85878b568c3b908e4fa5368e3255a61730442a71eac3319f8e5e23ba3c1b2728d474d9c0c18326e972dba3a3ff83c6faa64c7cef0488c28ca32298469e56edd4430e92ccdb60d2ecd26d6d3462bf465d8b34bc23bb2857ed48d6230304425152685cecb7e1d56acf2c63d4291a960bfd4991def29ee38d834b45cd2f841fdd8c34192a7c2a2faf29de2793de1c4ebbe446a5bc2b8a1e41a98027283a91ca37f11493982dd91f25e795243440b2f59fe4b05cdd6488d31faff411df5b52cd1fc213c8881889b48fbb76104e852653beff7d863e44913aa2140632d56eba766483f16c9dedfeffc9bf0c66346afa771f21a09a7b472c9b4968e9194f4f29fc8109c61a919ef4e6834978652c601fdc8c7847d2f6a1fba7e154ad47f8644260efc29d760e214ac03ae9d2d669ed53fd11d16e4532e2055542a39955569e70ce513593a5cec0b3ba48311c99a32067f6ab6c30176fc415aece8b567200636c03bfcb5c0e01ad3dcbb744df8e5336e340c029de7af4bf62a29f45304595341c0bf668033a15db02b6570f3e64decdfbec058a9f22795d2c37aa1693c13b719c713a3c5b815e2615422df9c5fa09d47bb73123e834e5b49966e9b3912e64fdb84de585d7375de484a8142e545c52568c24ed92d8e59743de142831e9fae5bb172d9be8bd007ea38a1b289f4aa7e6627c8283d25f55b0225a9e839830ae25172dfbb5954c8083069418cefd01f01087d2ea2162368ed32dc7d852c2636e7f9a1431d60bb52a4e6739f8b9f005325cd38fe537dc818681b57cf425cb9256ac7855d0336986486fbc63dd72ef1fbd78be9b6bccca310b7c10ebfc49c588c9db9a866e590ffdf6932a94db05216f7b262e65a5d13154859057cdd0adb6c6e81ea517e743c7d68afdc2017db51ec9680366a19b3d9dd9c0d519ac072ad677daf287fb5d4b4e2e64836e2f55367b87f855e53fb015cbae2be66b63b1ff7e1f56de2eb037edeaddf977e35c2a44db012da444b27a032edcd33e7ad22bc533ede42ca403a6539a2108b4d40cb493031f74fc11829453c70fee29428c9d989e31c02a6a7315f45edc8aa213d28995a2fcb7d3620e4a7d36b281f74a9b34a3812483f3069625dcf2ea58e44cc72044352db0a75be11c3c3328c05981e48cec8757ab1e057d12384c41239e2c4105ba5321da10c9bea3353a4b9cdfae880068e9f75cb5f508bcad7b61a9925dcc1bdb2d889e801a9dcad0997991aeddfcd61188e513965578ab4dd9b8080e95a1be077890fad20ed613ca61c630997ec2792cdf5a05c758e6f1e5a0d078f9fea5478f21ff57e0dfcc2d3f66ccb6a894295973d4bb9f30fadcf1831c1c86d100e70fa640d2d8448cbad28c09cffa5372aefcd993cb8387b19b2fa5228e50c3e233ea5f9d6764711b40e0dda7765646457144c68c11e0bacbe086f94fa090b5ec147cf047768f43d2cd8f73f066955391c019ea8dc0b2628174d9d655fbbe203caee0511f511cf359036d1dc8f309d092c302d1d70bcab614f551ff394d5efed8868631ff9598f5e19eb91026114d059b32246217566b5ff61b4604ce069741b80e2fb9d1bc2604c68d93c3883b09679619c0cd41e92a3c2b24348ec37de98c2e60ff026fcca61194eae15f20a6751f620670d9d35fd250bac6984a0c99b34de54129d73b60750504815a99c2e7e5ccd2cdd3a3ac1480100948df50167fbe02fefe1067cb96c72924f186af690caca3ba9c8bbf0be193e8b389cd8067ee491d507270ead6e67c810fa42a6d03816d92e6d4108c30a05d36c0ce317613167644ff313574e5713a5f370faf7230923b41749b83d581f34db327668f50ab37374603b98a32199511e80f2d60f03e130202f5e6d0740abac75b19067aa8974796f13c0b7a1f194b22ec115b6ae15c0771815fbe263a713e8ab0b3125f0f183c160578acd65296a1d825fd64a5b51a07429ac17a9c4badc2b5785073eb41f6edc69021bc27751d11f5908a2ac47a6b93d1ef5948e1d2adefc2b7870173824c98388926ba3f3061971c20012268d29f35fb7afc092f39a799b1ef2263ee4c32551f3c07368f008599fcdbc3f9d3ecd67f51249263cdd895aeb9541b8a2d8b2fcb60a780fbb6376202a1b4074f3e74014eb007fce2c4544fadeb091709c6d788b09802857fe1e2de1a854c3d482351910bca41c423fb6232b54ed7ad1afbc1491b7ae93fe63c319099ee0b308e6a9b88417a69ae1e60cc3b0db376a19da6e267c22c5b4d03db5b3250a86cf6d91d784a9f424b16fd55070143fd80f1f08f49c00a003a37afee5df79f7485fee600e113ef68e31b09a03513ccd641e40357efef6891d46f108b7fddbb03ad0cc3e8804be11ceaff69ec9088012828f6cf36a20faf49cbc5306a90a60f711d9336d17d879f65a6a7f254bf8130ccf9ec3e388c56137555291e7acc77584301730c6b1d442adffd9e4c0d61def3df9787b24bc5b062507ea5e036ce1d86b46e78e8953168baee5990048da08c777f0b1dfd650c2e0a5b8cd923b63147af95393cb67bafb70768943d7aabd42877c238bbcfcda0c85842a053c6b1fb3f6b435e02bac08514eb9372a3e704a5bc0c22b5f672101894aebb7e75efcf20a0966e3856bbd47d148a7c13921082ade6e5219a2fc434245344d202cfe2dee127ca575d1f5c1ad97fa1b4447166c3c56549b12489e423d52494fbfdac246542d99e7ae3ce3936e4016a7f3ffeb7253cff9d86925a1fbc2545f45bbf0ec9480d3dc1036e6316a83598b905587202e618d1a9376a9324d8d4a29ae6889054bdd1fe3c2b6e309a241e15c1b0e30c28df86d311e4eba6b0799d1b0b495d97826b384263d6b86dfe6b96f0ec077aca1290b039cc6847a1d4696b16bbbf889e7d86e064cc611ec9a0de312f6db11bef055c29f62e7f26cf301ef2a6f3cc8f127a0fb8f43ecadb080e7015591309c4e2695969cfc8ff5d92fcc2d8e0c0b8aefcf83897dbd5fd5bc011ce72116926f99c00e71286870a6c3ac502cbffb2d26c194d8a4dc97d5de223b1a33f47d7196461e955e37dd521491110108843771a82c31129558847b03c655610957748590936898bfc3bc1f122db114d3c8594573e51ac8a119c258cdbd1fedd889f6f3a2a0718b43c5fcf9238a00a27a0767f92c5e0c42b6c1b87726f091e504479891bb46563b4c3a70bc57dfb41218c0995b5526558e66b8ed685d2d37242a46a219fd3863387321be89e4368ae5b4f36d2607528a2d135de2ac0807868113a4e736f668f422b9fe4c5ed229d36126c273d5067c064287fd78d1325127abecc4d4716897a395e3b232290f853b0f6446f1cf2d252008b1fafa2ca9fbe240bc862f9be60fe1d5413ad909c6770c7c6af70c9a1dbcfc9f11d116edc970ed9026d05a9948acfe28a5a33920c9de6be9f225ac2f27108d1990f0c6d7f4e804c7ec22de563ca8ef6c68e4427c9cff48129e8f4b7de9c08fa5aeda547cef71ae045b6cace887efb42062b9532629ed4cca36d2e8d6c4bf493b45d4420e8bb4907d745b34ea4357f8b372e360c7181b31c466f8a5b9c71f40505e3a29a1b9abdf6395c72776d0988c3654bd4d85835a8e3c2558a45d1b97e2bb2e6918473d505c8ba3fd1d3063360a263e5a4a8f90fbfe8d9be2c10874722bdda22254f44c1c1facf22b14f603659b2038a31981a9488e332eaf5e29aec8d4217d8d975ad9e5f6351872a1da390a64249fac2a3f096efdb807efd721a542dff22f7e84425b6b3ba8a1d15b5bac78456878a63dbc1e680aaba6ca213045df44f6a42a3a840c31bae6bce6ec6f627f7c223096e7ed5127a6c8ae60023a5fa5af01cf006d4a582a289f536e8b177211d67aa632a3658d45cd20897bba65b8393dc8d3c02db2ab9038b1e05ce2ba40231b6be7dc8e20472c7ed5600fbb3f2d84bc53ae31de840f2252cf06c42dd895c2ac8e666d1fcf263ead839252306734f46ead3cf2611b464f56f5cdaed35bc4c9f3512c35aba5cc3a0339aa0bc3f815a3915ff619ac1928715bdeb5e0501721d1dbd2a98ab8e7651ebed5d06003bdb55993dced404c2ab5bc4ce2095b3bf57fa66535f4419596a530168c8d478bb0c92828c2360793a4b495db6f49bdcfdf80529691f2e9994c731625a7d8bab9e52ba41832654c7734ba51f3855e83d537a6f35f5218ea2c6a979c44752a7b144b2f6b88ba3701cca4701cd74e3355118b0562e75ae52da71b9bd167178dc1e5c5b82baf10c4c3c412d5fe5476a1d3c89d857a5569c068e746e633105bac311689d775b7b510962f956b07410039a669b1858776a18eb82dc01415c8b7c55c22b964784e70298c9f60956d8019e05819f48314759046b0573970bb44d5d9ce9298fae47173220585070d166fc2953b5adf5a262e7385da562844df0e1e26200585795792eef7dc4925c05f66e745715235329571090b4e914c82e64bc01d12135a6f1fc186c078004b43f77116474e81a08cc4cc58be2ed8a01d2495ae153d4d352a567899fa43bf2401cf41c12537d0dbd7177785ae7bb0b6b9313c8e01548e6c5c82e5fc483c5e5b1d41e6d5f2cd96b636589b0fcaeb2c840b66ffea8e7792126f36236c2791650948311d06b59eb80436bf6476e7f21af85988a681310fe601e32183e689c9f16c1a4ae3cf21c0f102871509c97090f306f869c39be532d4fcd29aaef27809b9fa2c863a82c66b60fc4ee60d708a32bc0bc0849693c358fc831b862674c8cf34a95cc930e1cd67d69c05924de15ab4a845c88512a4b1d2d17be34037ad8963b926ddde70f530cbd79781a713798f3debbbe1bd78047885ce6a501ca766256f565c6a990b9b4470900ec310d8a9974a1b9c396669feea116ee4fa851ba8c7ee7a038a3bf0753e360be15e3f0c68645b168472d50cb67450a99e1b40cb739d89a9ccbcfcb3a9a7f83e1ee9b0bc8a1e9b89d91d009aaad652cf1fc41137e64519a0b20e45534eb50e4aa55a4bce7c331dbc4ac878988732abafc4f1f069520c3b8a609f6ccb1bfb02ff2e9d825af9ac56e65e18804751b58513959c40d233e6603cefce33ef52175bdc63db7ed39b83a987a832e343de4046564a04bff69673839d5c17037868a6e694059eba80fa67b8e88892d3b341f67e0c7173501312973370978e82f0806308e94de39d12cc2fad363316ca883c1111613bd66164d0ab69ec5d4044a035ccaf1efe93e3c7af6257a4094f832439a2f8035eb4e221020a48d5d59892ee4784d4f291598183204630a6a5f991911687b272c788591b98ac8d79c550bebef5741cc6e3fd5d653c725bc1b5d2c1df3f45e274bc32e1a39858ce4dd1f8d3fac6d665f1689c805fd7f0aff227d49f03ed668d06e5bca877bd22733f692e2b916c037fbf777dda2609f928b0d00acd706a1cfa0190aa55725f222ff658c709984090f32301bf0a12d61fd3cc20af8bfd061660888b70684c8d5a9444b52c17e5e7814a820b6b6531c084c9066fa4ada1cb5682dabd3fcbe183c6187db2f125ce1280569b5b3bc14acd9b3e81f360ea9432f59483e5e2cbbbb33ae8970bc0752c582dcd331efbd20a8a88166b41a4c9c88c44bb9b7bfcc1306878e9cf068b9d3d6aa8e2a2abaae0103930bb8e15c6613462351e57095d6e7e3a5135f8ce73273910c67c2d628e613b4e61b02149f2636099c055696772c0113a7ed7b110793ee6207b81672f24a8bfb5f61d9cceb05663255d223adc52cf486398f87a0a73082bc573c4d6747db91e201bb035bf3f68202284446ee024ceb923d78c001179806d4762fcf78414aaa625c7cb93479e6f8c8ce9498fe234a3d6750a060923010cd5e1ffe1cf6c49d422d855fff5513d5af35617261def9ebcc80e1aa14bafd8ecaa3739fa1cf93dbbdb1552a941a4482d635218a17d52e4518789c06feed9de58938ebd453d8c4f576464dedd7f07b31dd84b708769a8636fa1da2219604239a8353e608854ccdc3d85b93343595695aec1b53b18f2e589b21a57b640450a895c35ccb6e09736a4b57052723d66bc4e796db03ab728fca24a27c54f77d05f29a60c6f2a97379b8e3aa6a4809cf3d332712a2b62c914d70e4b8b54a447f1330450b294d5539d1dc90d081c66d18c101ab1b7d040db49133213a52f53344550935c19ca588af28d82cf53ab21c2c88b0ae4bb035d191a3d36cde19fccc392a9048e485a7ba70fcea6e88df1a24f87875a65b462873cfe3c0108dd996c6038afbf2761a7128358c1c20473058603e03c291a44a7c8100a0f8219c3f764c3ac4575a5ceb77aca4ee30bb75993020ec571c39305e386008fc60e44e8be871e208752ae30402129a79763aa5c7aa57f1316f84f6d320807423f0380b4d5dad4433c73c9f573fb3a4b02d59151f1b92c4cd45020bec810eb7f3d3c435b2efcb5717093bcbc3757971923e44711508111dee22bb00161db4c2032c3c1e4a7d217d32b97119a5c658b5d6f5396a528acf05044084553c2da778c9910f5e401d51bd94170fa9918910ef7cd996549f39e2d1dbd00548a4be0e2e40743608b76cc27a52e776d2b8cc90ce648c0698c7a8d19c295d3c3b5d0289a2a9b16053a1a422b4225316ef8ad8544902ece6443eeb3306474b446a22fa001a3563a4510193cce1f796d725e06626be1d348290611376a963da54a2052f271b050d5834fef3873a77a7f1a252f4418fd8c6c27de3e709ee78d03a33de3eed1dd3e601cd40978740f60f61d62e8a4cfa7ceed0b3dc7338ab1a02c0e780fcfd13a7650cba929667cce79d91822e49793298e07e43b254f127685d06f133c7f1dc7540dc9a49521324d270559e97a15ed2ad4d18f1cd39319f4780a81af654e8966e13ce786eeb4c5e972b2454db28c456b1f401968b4e27982d658882d6a5ccfd5e492ddefc685327afb7806831c7cfde8c1f484e65c8c70a8d362e491939d3dba495b700d9a393dd02df3196959bc1b759f730cf9dafec21f9824ca596ec3ced4d519d3923910b9fd984dc06e7e234915aa08de82d034a92ae4f385102926e9a127c81db2bfe89b4cd6525ddbfdcfdcd654f46875d4a4fa689c0022d82e0aa565e044ab42ed377de35679b4db44b750302504ae71318f62a140cfab0a76c9e6828ef5419e78cac0fed133f88047ffa0a19e2a68ec222ea9e58596bcf2b5b82091f56b408561baaec36af2b06d9897e424276687fc08c12da1c8c5882b86b4d171f6d6a2ef8695a28f5098803fb44e4c386c53b0037386f075853eb0612a23ff7002223a20264982fb4eb6e996e22f28de1665f11f0e48648e5f6b60d044d6cc8783cdff5602f3114720ee54ce754485544c9d555b873895b65019ce2eb9dc160e67bcc9be5204a547c74ac320d7cf92bb7864c92660da95c27dccbb9881daca2f2bce27c2435ec7c4df47e557c567b836e6a9ab3bc59c96d4030b24a82c927f3e537d68161c9790adfb0d371c40845177440c59d4acb96d3cbbe7cb3d20cd96958838a3ed1cae43dec956da7fa71e45d0a0c2cbcbb92a1a8d8b9238578a8e3466ce21b0a6633bb6b1acd59bf9d1c035a80bfa5d62be32c04ca6025060a46f77898328f8082ce6e1eb9c8bf5148f4a78e67b6c460066d1716d786c8edc5d1f0810c7fa7cb0991ad34a10e4b5d6ac6fb617aa28d94eafe9bcd8b71c8563624285232e5123f5d8bcbb4320f7a89f0f6cdfc2df73a811ec3b9b7d43cd098bd34fb04bc20a936988a6f8f675499d222690d87880af070391a6c99e53b1577708a9b13fcfba1d46d77d862b2178f8fcacc2e6e763aa254da9cd388f552e4942645b216bfc49bbaf3a1aa23a2e8285c6618f4e57b1544bddae8e61e00d7e297b793fcb92737af43bdda169820e2aef8c591085a1019d675ac2f8f034e18b3b21e0808189bbeec24fe7009ce5ddbecd217cdcabcf470a3b2c741218a14b4385e2513f83c2b8ea726644b6b77a3c19fb0283d284f628db534384dfd232b009ca167bc2cf2e67e151e0ab441abb2ef12ed654a6b80e9caaffeefa9f7788ba8d9389fd4769a326918a782cb38da845d49a598f1aa4bb07e65c73556ee56ae22cc2579f6ba5ed81b69efd589db699d621f569db64855b487ed2978d0cfea40295d04642adee689766a198ad055b792aca6d9ee6076bf42c2da5a034a0f0e2d3ef2ddf00092631d5a86b37c39bb4e84733c6fc0617052e85072e5f145d3acd2e78e5eb46a1502d1803918143435f7ab05cb01ab2cefe4141394018e41a6aac43aa0ac04699299ce1a3f5892d13c88ecad4f626740c78219e49714af60a25eb4f8e9abac9e4ce4c2a9e1e3c264cd1da94427393689cf0a48823ee0c31e6592bc3515a7a32be827adfe4e555d900b09f6bc1c7a7e32b759da607be7df3bb27fe55c736750788c3bf04fb34864e2b1930993bd30771413e5f819d0cbd55822c60029adc92109893198cc8b1e26662768f79e4cc9b31590e29a8484bccf18a0f919ad940bbf5db0ecd47a91100d07d070462ae63b6796b74d0d7a2078d16d2f1c9d9f4522031ab503b0e60b170d180c14c889e663b7f09c7501a9288040933caa6e4c29046bb043f3b60dc5980545dd1421288377a36acc64acb9b4c80fdc65a1cdae09eb5e9d0c4e3f8dbee91349af99436f8f26e310fe293a98d3be97b4c17aaae5bd54357eaf05aaaf90d8ca50d0063f99eb06deb902b0796ed49950645bf52395ad1c3d19ecb937029e31237580f0d341399fedf8454266b031e356191d651a27ec0c7c7b56ca30e27f7adf5802ea03f7372b7f33a5b443d8cf2946bf56bdcf0db210c9301bb1292f1bddeb74742c55a452f6e40b07a6a492ac3fe0ad2e4050a8d94296f3af379af0d1d98d0c5d1db9d808bad68670fe854f1a5413f4b87e9832d368f0d84ef625113a77f892e1de961e1318420d9078ac0d7a7ea0d8300031d68bbb65c852b58f8085bdc2783d1fcc15570323fe3bf6aacebc00699408b9a04259224dddf8410eb12d67c18bdac9fd558d7c3caf512730ea73b40e84f6e69c7d1c81c63d5683f0422f54aaf6d3019628a7dfa88255f830118fae90ae82e44ba5aa1ff45aea3e28ab00ce016a11aff6efc3b7afd255e49dfd297bb778812070f3f75a962dbeb15f034e369cd764156bf745f9e8a42f3c08084db3e8599ab6974ab492466eca922eb12638489168255a49f3b6359bb37946619602b420d205f938ca877c9db14137c58e26850aa91601d5f88fa5cd774b4a2a829d558af2e281348720245a86b92c8260580124824991520439a44904605d976914594661d134545e5496cc7a3a2b135d67f0dd07ab7ac9103560fec80f27bcd525c42b74c9ffafd765f0719707ecc31075554cf5ff8d04a34ae5ff35c3c89dfc8ee6f56f06c063d615b5922036ff367aca707dff9dde389a9f14f52149da429cef9a451965f1c9aa392ad19d7a323bedc9a2e5d71ac7b3d9bc3f67ada226cbc78d547900f06d782183c79e56df7555c6f4a19e89ebbd698ff84068ccb17f22145285fd1a10a7bb79b1bbd61f30b0c9d5ecbf82527bea38d3f513e33c4f4e22a60dd751256300fa68ba4a16c1e63b70f020f6e50b29fceaf3726c500d08c1e6b1d24cbc89251a2a27225c7d70bd3e598b1801c23c931e399326e2bff1866a9c0ef425d9c1e30e42e4a4d2d64085ef540f1161c55ce8c426105eec051282b6bcf9b0c41d22639bec39d6939faef376925d7efa3bdfbb4d88eca9f2cd5f9a65281477f9a5b92d86043512525f310f65ef1dc0b41252529b38260b3a52ddcf03c9fd80a5ce29b4506ddc4348637d8cea171abbdc08965b3267840857c5b778ab27acacfea83cc4254515c833647b4ae1dc92e6bea865135e6e420613722000284720e40f621b33430436abb86a2eb50da2fff9d4a614502011777052180fa432b5f2a5f184de745ddd2120254dcd1f36d60b4292527a4097838d97548e0f561b0fffaabd04998f12dc53840a4609b82e11eaebd3fd9a2308cc5d6384fb37bb1095e0cb16ab6ec7140b9a52dff4e8a47dabadb82388a6c0b4f7e7bc34e2a3b8d78397d7af403eaf9a023aef56e81ebd4e05a1db3f46b962ec2eadac6b2b60a5b96195ff3e3b86256046cd60929f8a2ce0595e604924b51642f37183bc2f5bde3a9be3df69125a252d003c8b47550fb24bec993e0001e699e77f1430d2032236fa5ffcfc5154b98f9e5e7a3f6970ac7a987998986bb998fe3a07cb81834bbc54255c849c65a60dad8f4bb892215e8c40df460d6eeccd27ac454cbb647b58a190ae68dcba894a514ab62b32de27ae50c5271918b0c6be4b6514bcc8608652be101cf4b5301a2fce907fe293a48c35c271c47c7922faf7518cf791823d94fb2fd48a5c1e3ae37e03a68161396524b07a0f399bec4c7a4a012dbb66c6b5ba30a97455c3ef0ec58a8472680c6809508dc8280bfc91b712261c4532213e8a8005ec24ba8d037dd2bce82976ee55262f34504a63204f967997d3b942b7d707f7b520e005c356f36365eb8294ff70580ad16a739141f02481c1cc8903f68c5286532c5afd6f2e90a89751a462838efe58479dc2953e78be86230f52ce0c4e4f6f00bf936279b34fb5e376ce38e5f917086b5f0218614177681d06e8e92040ecb25588edbeabd37e33caa038e2c220b68b44de6c20b7b2944073f75b28b89e9afb87b94b40b482c806fad85e943c0923168ae0874d7c700ab652a84312e86a1d3fd7aa71215d936cb907dce7e04e1127e7327655349d52b955fb2c02e0ee05375aeaf3102964f09c39c4131677c61ae82a3aa34483a1122fa9bf76126c1e204892f59d434b243126f3a72854c9de0f4203165149c40a3e4a1f1ec01ae5d24a963d71659c465230241bd950e858d1a521320dd756ba19d5c8722bb97bd6e77e10233595bdf138170c7ac086294d1b50e26d43e941d71071c98445a226280a2aebf3e20159df55f2f1be84361c20b33594174a2c9d0d5b02c72c6f0c85db82f7b098d5b14f94cc2fb21ec08ac5a125beaa4fe3718dd50419f25e086c094f32d960bcda35b4d660b65ee40289c0082d935023cb9e3b54bc5f298fbae11f50c684f6438316fbd61831704b1c73f277f1aae3c4223564c28ab3ebeaf920ca22cc0f25b2eab2e766c38c7a412014ca3f83eaf922319f41da4949d7f64b112bc2c98a3138ac4473123727d5f19cb404e51f37f7f6d0e67318ab57190d6543d8bce8ed58cbd948cbae69a2ac327a5fc7d186e211c4f68861575d2c5494def03a3d40d7ce572528ac358dbcb4a1fcca8a06fae76fc032af58caff811644e9453f3e017fad5afd216afc071a2bf2e017ac999ccabdf8fd746fb07eff4010f2426afec40bd611cc320d6caf4b188eabfaacb541fda84b7fc3cbc160d2e14462b478b88fdf2a3b2b2c03c00edb347700fdacae8995f48256015b0bfaf8714348d49c09f82261a2fa2ae3c928e20c00fdc6e9e36681ed639c0eb2e41774b70f2f848b418d024222396d8ba73f6d7352d9892995e5a5aa02e72ac296f45a2bfebe15da2788fae66a87837e4eaed426f597cad7dd37ec3bd4414aa9c1755f0f979dcbc656b91f1fce2ecf21518283501dd5b9ab7a8f32fb8842c73cda997b966b158a4a2587a2b42c24b504b03a9fd3c61e4cf22f1d104513623420f6580eb990c07c7b8af2e30ca232e495fe54c75679add6305d4faba4a7d0d09d5ce417594ef2597a841f9538d0f6b2cc166379e1e43f9f218b43669ec7192a0a585a3d0ae672cf404dcbb61823d95f1dc4cf5b4a7a9ce18b94399b6ae3e78cbe7999059043e156c477647659a2d32f90636eee1fac7f034932971c8aa1caac514be89da0d742aa82601c639ba8c4f6edaedcb608170d7c61c0ef26785285daef46161081d3847a1f9e6e9795c627b2c4c668f68f18e60b041677372ec5a5dda0146ef009700c3b818b07273eda915996ee85f7fca0ef4d5aa28123d4f0c005e484a0164dde2af3c7ebfab6dd8ddcfe5eea6227153783c460d6b92a834ba3c6d6b27ca691c7872c66646645102c34a50e3a156fc8c4920bab3429b61c3e97b4f04e8b37f40ae0d7ca67b86096a6b901ebfc1c98ad3a9f54c55cd251f8570ad46e4a45ad18af11656b9909408f500650e2a03042e0720535f2a1c2fce4b5a6875e2a199a1b81c96cbb301e0b00f4ccd91b1f6e82e5b4e24a25c41459e229394c0e67f24be7c8096106f215c66452683b30d8bae84a7cc02668df1f0779ac7475db5762f9e727b19bfb8ad3923b8a0af282b7ac7a24df7ca8fe87864c1f2a05367c9036b9f05f56bf054021ed7b1b4b476db8a1cdb9a3a10e1a718c44f5b10afd6828d639fdee38887fde2d593c22ec4e55d95be13eb5e488ec2c70b30e3edf81ca00af387c76bcc6afb941024e6181a5f9ed452b6031f60746de145b10b00414028b1c7db5fda4656420e2f53cb335dcb85e82e7a344e73b706df98deb2dd8f308dcb396eaa6d2496d2bc7fa59895b5aa451072677e0448e26e7f8440e4cc481c90e98d8b1c9383281c389383c993b604cecd864a1529d7005e853f251edeb6f0e570655e04d054d1c4fc0f1c91c328103133a32b143137160128727717c728e4ce0c0c4c0817d72684c39909cda9363853a1fdf7d3e0d116a8fc5d8febfefeb25e296cb1f54293ee0faaf4163a283bf8e4b69f6b0746c3db1cb88deedf0bc045559b2e2bc53ddec5db60c88d0c5b2cdc513ab981872e73f9ea0328fb44e6e11c13c2ca7de60848bdaac4474930bcf643f602457225cb182c1d423c2ea847bd2879845f90007963d0a392cbb7f1d46b2f9630e87de071fc82a3eeb4685ed03518c81de3c243bc2bbb68d3048d4c9c01d20e6a7f4601b255598add12ecbfe68d6a095aa1afbf644718e673d565e42b4ee4938f4b4d4e120eaed875108ca8e5dd5882788e8a63d555d5ad73926df6ed43f67fef3dee782039d862743d175001464cf207a7dd260470e854150e1474a0371e693a9ea78f88c08501b3bcda563d7167e4a78236f5fe15106c744adc98bdfdf89835d6fc6aca0900f675b6a084746cf6fc086bad8f2c258fc2f89d61e11a180d5c1c2f9188952842923bafa39a0e878bd768412571a0dfc01e0a791719ad752b9c0bd05050661ff7e616c123727deced793a49eb45424b3426d49000ab7a2eb0e625bbf1bd87abc23b9cd2976feaf65f2261010f35c199c9560427ce05c1f3ba0f8fbd503f79e62dd428d3f367cdec0f326ecbbfec3d9bc6bc3ee4da1bd43b45274ccbe5a92b528b15a37184738f67b640e8016fc8b883ba61bc3195e2e2a1e0b0c1bd12eecd7a38914343f25a4dbd74711274d04090aaf6f4bc0e71255c66374f1a91e1912db89b3087db9bfbb8bc3035a724566584aa6a66f55f0b74e107d1274bd391ec75a1ce2f4b3997f50fbec0325b9d575f0f3fd879d8355f52944b8970f686f21d9f59cf977b4b754e256574a4aa870f591eab9c23b627f93cb8b1955bda4e0d5011a5aac8ef7206c139f3d436d12be1803126120e02ab4c28e0b28274b74b761a1f96ea39ee0bb074c28a249774b52a45f68468fc49d0cc205400e8e35f5613d2393536cf05fc59ac9b5a664b74e886e0a2fe415b5e3724a94eed7a2c73b055f7681d37564ae511cb2162395cf5c1d22989438a8838890cc433f076f4160c0c4905f3ffa3350fb3b93f06d4e75fb201752baa838b398f16d1374fe2f7a9f4ef3ca3353e8833a3378b33b0afb783a78f0df69b454cdbe0ce1308bf4801070e56cc2d3049b2b4bebf9033f024b41a7e956302a7a8934e02da67dbeaa33fef52b5c28da0a36428a51c4082a5168300b2c1efe7e5646efcb76f0afd8babdd39e8db86ec1aa82cbbe1a541c64a51de61ddf68a0438f38a831dbe26e0480564a3b771f5ec4d868cc4c80db2783287281a45260bf7bd5959b6581d40bab8fc85b845697732c5ef14fd5a04cb4418da2dd63be1185fe1bc3115abfa1113c376092d1b563674805a4143314f00cd8afc9cff18601fd72210825ecf08320426236a2a3e189bbe41460bea0afcaa64fc91277cd7cb0fbe37b1f8dba4ecfe5e2e3ea7e31863cacc916bc0dcae3586ec46e25bac652b30781383a0802e53e0803790881be7ae033e88f5fc9bfbb8a1de575746140968133d90d16f670e240543a3958035397a2739611328ae18a859a7d0cee167878de63ffbd4401635de8efbf3e1d9bba22539afdd5c12b90a2a241a8d52721944b986925f2f8fbf4d746185caf654b96d5986852656b101e775fb568e21566e19277a8a8f2243df6a2d82ddfd90f7e4239dd18b213116f635e1e069d7545d128bf6a5af0b561674f83bd2bf03a3f3375a1890c7642e46e01590c292026b6115b21a2c3865488c5a8832be0cbaf49b01a93d8fb41bde3176564b49ce33eea00424b290c90993bad89764ec473fdfb2f0e7562716c36b69e07cb1c573698abe08fec7526778b02069dc5940d2218f77526196ef0c537ead101b881295e1870724c756663c2224225aa4e3c21c12d1ba566f9106c1b57f9205f80e4c8dadc76b72d44fb5630fc9967f854f9a44f5f541c12431a90e06965c545a9aec1fe9d3dac961662a1656884f57ceed7d5d4aaa103c078fbcda5328a353b76a1ec9c48a6fd630b816bf731ac2834f332f37897565cb2a5e8ad940f7e7aaf44488107515fe7970543aa1debd72c113c98e6a97b2bfbe6f3747f84f490741103cf705ec80c340be10aa3763ac3f0514035780e7073a68b21f54f5c5dfa42a518f03d17a90d2fab3ce138bec8dae19780f961d2018331558dff98512fa13d4528f1722488ab0e95913ed4620b60b3030055962217ecd046d2bd570470b20820936d10702fe2ecc0e3eea3319297c6bc62c3898b1f6dc4a699b0dc4af14974c35eaef53fc9994fb40e9f987c69b96421529697ddfff98c89b54542f57f7ec64828676e1155d009a36a25019f5d3d0c41a45c39d6e7a594299a36a2d705ddd5b07a2569e09a081e98ae12df1a4e87cea7e9edc52513713cfeed35b4880b5fda16fd003ea72b5168b590cf5fc1ea64a2a5fab143377f94b0101b59b8a81871772cf934e790b0101456139da6d5f76c00cd648a8de584f68d36aaf2b5d52d7a88a77bc351f3e8e38981bffccee9568d71548da2a4329cc8f4850b5889bb36ff79854b3d1e2223b846544ac6c7f8169170bb9286ea2d7b350ef7e8caec257bac528ba8ee9f92f595b887859ebe327859bbe48ae33f775cf2d864beac7baf07614bf9f0d6b0e5501526c4c93df256c08ff4f25df63288cd4235f3dd0d9f4f5aef8c61cc7ce3b9514dd9f786a305a4c2d77c9a1145851270b0331c4bf75d444caac87b509b6016ca47241e24580ee2b00685c96330803201d1cc8ab4caae9b41057c8165694953e3fb47d4cc3612dacdeb152344d7b0ed30dd299d697159837f2c23eb1ad6c3f9de9aa07fd9ad6b5eff19b2cf0b3927d422d293fb9ff7e8b896dbcc021f23a3313b29ac9014a00d0af8ff9279df3551b8de82b271634da42e04119cd63c1db2e634e28f1c66053c7f13be2f483120930196d10f4ebd9c08fd9c5d2552ac6d70046e2eb53077f76e2f237babc122e829611ca68a7d7654f010e089ba3435a99f9bc165650c21b69371c338c9d116bb3c6a5d3d781e78083c9c4bff67d065ba86e4ca0d1ce487534bb728971557376fe7df048653e43924eeb205fa39d519844110a8679d27ca6d4ae04b54be023fcb8b0b1af16c3b6d3157a741a0fc34760f6bf6893a424f23e8228d3e125815ca4b02f24bdf6cb2136803c931d675a36aa286b0ba507bd19d332106c2aa2441c3a90d43458c4ad1a4cf7e6975b5778295f5831ef90066e11aa95a5910d7a32d1ff87781fe69155fccb60ffbfd8ab5b6d9e0878cea17ff5c54c3c3dcb77ab5ad89cd9d8687dc5fdb30328d615eeab03bca186f29963acc7aefa2787fabd4a17aaeb037f480c4eeb1739d8f408b47aaa61f5822e7034830f8e29676e9bc9ab6626285cb4c3d378ba18b48c60cde3522c78c2f73c07bd633cb2ed5a0dba48e82c49308a19650dc12896ab219522067a8135b8e10ede4f03da2668e9e104e4d127cd0042452b7842ff576ce27a0b1943c3181a104588b2472aa0661fe6beec6e9c513cbe5208350b2f283219cc80be1019e39f4efaeba959cd2e312d4e252674a0346e9160eda40ba7378fee76e092624b71074eeace31ac8af36106068ca565f3154be18bc8628b5564d195062d459e2d5ad0ac89e8cee45bb8c5df18beae207a33418e67b460e5d24616c4066cb19fdef87b62ca40e241ba80ea470abd5daaf373b9207553734017c847f0d1b052cab2d7bb5f9733b0e838f74b208008c7b61f5280d64605e06ec8c7eb441df97ba44ddb5f685c31e1324cd1c9d035dfbfa4a8188943c3e06e21b0ad01962ef1fb6b9a617684d24bb07c7879f317b9cfa218867c2f43c96e8f5b4b4bd8b3e641b24fa89cabae89bfe9e0f3d502b969812e03827d18666ce5bc0715f7c5ae41d816c6fd07de1ac7fa60b67f4114ebd576eef4ee3959afa8eacc1f72081bbdaa533afc1cf1aef3b6f93f091e7f1b242844ca8b9f807b1d29374847c7919e6eff348bd9f4b48c560b5b2ba2b71c7b39a4f33606dcc3e41a411062ede4429ba0cc95c087aa0b954aa95c9fa3fc3ea483f7949e84dba77abec3e623927b1bb5f32148a2c1d7438d1b4ba4876b14325b07ea282de50a3b2411e05c419cc430e23394c3f0e67de26f6821f9479c97fdad005626a92b6a7ff02fc0f201fb6438a4e3e2c069ea613f2636d3cd0bd41845308330dc6d4badfcb56770cee5147284dc6a16026f7c4e3edac8fb53db4e4040c8a330ec35fc2f77764b02e2923eb4cd02095d31d1cc261c417275e7fc07780cf31e9bb69c80e94111988ac6d7e06c61b06cfeb488daa73263c1974a3850dcb8ea617c7d2d648d5dda4a524428035fe58550102553f3928fcb0bfc708a6d9c31a6b9fa54130883c7e1f51f9ef2997dbbf8604dd8d29788d80e245e7b33b0475839672f4a23bf0b49cb72fc230e2ed1be4d762d166fa8c9e937273e09886e53200ce1de87344658bb9d8a0dc6b106d32efdccec21c849bdf542d208b86d872a77f5bce5881595474593812503c5f04dedb192eeb3f45967ace7cbf5883515c1eb01efa68131a59b7695b87cff3b1618b3fc2d5b38dc7c8387f77a2a2462a7a74a9060d7166bde295b5f5b69afc2f93c0eee891b259dd3bdb4a0dc842ec3383b13059d3f8595d5acb547df942699ff8ef6d3a66696633bd53936075b60d1e07eba4164cb39ec90eb4e01d4730a5aa536308d2a9d8814e037dd190b21d1a9fa48139c28459cae0d88e7c4f486a8825e04399569a72e27ae81acc90bb562a9e6962d6a1d2c00a287e4d9e8dec4fd9aa5f0a02b4faec14d520b14d42a481e972af4eb6d3643bdb972268ee8887f1f69ad26c57c226f8ecd52968e103718b5fe50d48a0f00af6ed66fea0b8c507d05f472c44d5f4f3696cee150ddc0737a56158fb37319cb364dc1867f607dc9c8e35e53813ecd2c5dfd8754ae81bdb254f98c6e66888cef1ce242cc54f3f7eb6dd76446ad6ff240a7a4e88060a7e78d6db92b2c2e086123f47acc9bf1b6afee9c3e66a3c0951e07829f8ec0fc809b843102ac50908ed8f59f09d84788e9a0df36c8a6e4b863b8a9c34a558cb9e8332141a806bf58e28a0b3d57bc269fd79c1b86dd9c12598aa81d024ea7d357669d6140f5e56da6153b2d2d7430bb20d944b62c32ca7f24bfec195bc5194bc7e937c342c29e0ca0a393ad3a2655b1de5f2d68ebcb7eb7e50ea1c50a1911eb499e44935916956073f5d822201a6217836bd8ec0adc0f75b49550083371738cad1cd9f68db9035ad76a606992863ecc2e37beea2ca5290d61e645e20a463630af1326291a800fead801d4ff618c96e25655038d7174b4d976f4f83173bb2e84bef895fff16da24e80a087239b186e6b1225780aead3f82a37840880519438bd3ab630ef7950a778d5fdfe3855e6ab90f897be3cb8a731712e4a18f83c48669c8a77c88e7f90c4df4ae61f4b21178beea74e018c0b5ece0f3cfed5f4b185e41cb00cff773bd6eeef9f20c419e948129cfd701aa6b6dfa85f49a89649243b1024f5332bc0f1e1a84b57cd11ea2b91aafee0c360ea1dc16b61563b6a391fc031a1a4518d3bf4891e1df6b7841abeceeece8a352c645c8e4f6ac2c53bba3863c146b47b14542f8e6b42d01a50553b73effb312c4d7ec851d6e0784f122be5aea4b51fb147dfcad48f5e4a2dc154da5ea05506bae737c7a3b2332a8437ce1540fb2da2076d0f42094e3229007f4fe1e9dd56b7e0c1826e17cc16e4ac01501359e26eac149708976cdb2190cbfbff3cd89e1b60973c5f2d1857ceb2d6202b4343c73729e629616e03c5db017252e7d7809b507772b023e22be02b4b327c58677729875771c08876dde3bf38fbc4f0679a87a7c3d402b4d004bc16a0eebf6be24d919a3b268d832c6424474a1740491a392b2a430a269ffa65cc29146edc57ef86522f18c4fc860e007fcbf7497ccb4813f334de3e7a2879980e14f04486cdc836aef2a58e60058357559f5b2524172ee4f47d832cd455d35da6ca2902bee21a81423992198117fb410fd528b18f5910843d832ffc07563f963796012e158f2e2c0165b3173dfe7eae916840d6cdf055b46a35513e505120fd028f0eb62c54368514db065e01540b5461590bb338c07c20ba888ac432046b5c1512f037c040832a6c70bb27474e007f321120e3cd20038c4988d72120ddd10aef9a99f02f44e037a711e7c5a30561aa503a90a9580a5116159218c30c9668aa02ccdbbff5d7f7f1e1eb91a10b5a34d889b37e5961ef6be729cebf3739f9fce2b7f1d532ffc0e506761df2b4784aeaf7cdece5e388635f65bc9932609d972ef2de59652a694025e07dc07af07393efb58b3caf5bda47f798c33fdc5c154eebb69822659a1c924b520f0f6a340868d5f7164fc1ab953f7cdf045efe56fa8b9dd32c897afe1d2c1e5d0d7e32c67e2b61c1c4dcd0dd76306072764e38870315c04dc03c235384e5f18d3cbbfa1360e505eb2e6a6c7cd8f1e32c73daf57eec9ec71a8b503e29efc15e4fa56186b1d07becbcb7fe13ed2574d7b084b903335d14a9a0bc717d6fa2e96a4d50aa3c653bb1715d4dee49ea4d1b8cd3dc91aec6c6df611ec02491757b67c5283cc16363eb4d2073587d354c9648a60e39762962864e1c718e1c7679a088279cd39e79501c3fad30982abbfecfbe4deb5b9775d177dec334ec60ba6b944c04551941a683ddc28b53a8e35dc93f6d4741fb55fcd8defddb70d9129b2352bd9f08894107a8c314229a5942ea5e46225a594524a29a5942fa594524a29a57c4c286a2ce31a4aa2d7e7ea30081cbdc3918fb838a75fa391cf0829a5304e1883fdfedacdf5ad5dea16023240d6a5bfee4f5f6ada5f5c7b778f4a2ed53518e01d5dd7e81a5da3eb1a8d32381a8de2e821e7d7e81a8da6c6638dbe35ffe93fe98bbf929b75f70eda67ced970bddb90c3bcd6f375ed59cb615eadb3e17abe3cdf0d5d341af1bd62f0ae3f0a52ea2c8b564b8301deebb3d9fdf02f1aaa05e987f0f21b6aa0c67339d548a3d1779b9a8caed1f540d77f2f43c01bbae8c2f787b02d8dc7bb1715ecec613f672ae3c8edeeb80d0cfbd1c4f76afaa7eb21a8172d8c091ad3918c6964aad8fef8c539e79c486410098f0bb91b2d31ba1006e740e6913bfd70284170e14bd845d94d05c3909eb9e8e92857727f16a40450137777771237c451f285e0a001fd7eea5ecf397f4ecb6ad96d75136bb6f5f1a755d2a7091057a6845020253a08f613209228d94e3e2d04a2e48fbebff23486c40337d060d11fbd7c0b54ae02354480062172f603cd59837b72d608b827b3e62695eeeeb6acffe1341431d1da4da885d18b520a530f6031b80c1aac2ec6a7d2ab91432b5adf266907c53d48ad5d118929dbab8fa889600a0747c15f117d9cc513823f1b6721f22885d816d6ffabe9e00f719c56b9173b18f87637712f5a409274ffdc9c88c0d40e8c8adf73238c3fdc8bd30419d3c477874d89b817f9524b765e0ff194dd220b27e1c6ae9e179f7c7744dc8b57770046c58fdff6592fc382625bf410b6898f2d11b5210c258bf4b88542becef1c93dd86deed1c79e69c5aad8f9168cff55192d2c6cd275168460a1532c86b43872499787a830b95c3a65c99284244408253a11313250a8c02c422af1e5f2298be5efd5958196112353458c4c152f2724bc9c90f07369abbe5517f2cf851a0c3157c60acb41622eb38d8c1556757f78abaaf45c9acb4344a872a15cbe7ce3cb27a4ac79603f7a3fc22e631c397802857104d96fbb3ab416a4abb0f08415b21fbddb8576ab9e32127b8af0a75d54c506fa3af48dd64febe3253f07d29d577c195f4a09a5577d69bf0df2758091be65037d1ad6990f1f05d68934625a02fc63e63546ff684dfe7e693cdeec96842c47f1b386d3f296a338130315fae1c9b51e7e1357e7b29415f4dc2c56fec832b295dd26230b52d82f5e69437cd699ef2f59077e0ea41bb904580f5fca0f4a5ceb73e886d22baea758b5a6a648f358dee5e78f05203b330319be37033b19bc2b3bcfbd7eefc6dbb0866dda4ab3fb9423b78aa0ba8ee4f28d5142a8e3fa7ff04618d985d3c7aeabb8d77dbbe86960f6bd0c7fe1bf673938f8b243c8419eecc5975c16a3cc435921843e17428c35584575e7cbfab0e2c40d5e5861027aa0bf5ba3aed768177a4bf3700db2977de5267bd95f5cc65e466254b6257bffec69966935462c62185fa805f99bc99a717d2be73d46dcf3ef22482dc73ed364e8b1320eebb29edc57f7c9ffbe8b7aae7badc940bab16b2beeb5d085cd108e3e10dc990f6849644cf3694057c63c5b968c25d31a4f0cf35b15ba5cbe91e9f81f9ed1eda9c653e39e0c72c3f4d90bfbcb64b33a57ca4c268d4707cc73e97df42f5cdfd128d5a3db4762b8be7d02c681c179f96f43fd6757f88fb2f0f1332add3b1cae31e7fc989898ffe13326a68b46620fdf6bb5caf1f2e5b72dc7af5657137e05452330beddb8565713f412ba9ecc2d530b8effe8c53dbd52f8bf9e5e38ae0bc7cf5c38baafc8c5f1f4495cf4d178705c17d0a5c4f51fe94929fc93ae8b54d2782ed22c9a457ead48a35974411969079089c1bd9b91c1fd228a4666d1e9b313177be01a5e34e271708d53177b60665134523fd378e01aeec93fc59c62604adc060303030303b3fd45b46d5fe2b6ebc9093f8b1ca7f4f2a7952be86ac271605efe25040303c3c52bc395b8ed9debbb6d303030251a120c151450d8ecddf1ec3b7694627ecebccc74cf7dd6953d9511a140245f32a298ce06ff979fdd9751992fa57fe1a87ba5dfb8afded297b8d2bf702afc3c71f1c2358c6425ce3fd378aa0a25eeab77723dfd81608a855fe1adce249f058e1965fa1538d3a338e66be25c3e866f0a28d09c308baefc1c7de46bdb7133cf7d2e9fc10a351e1d3ab89a23acc32c538af9928f382e86fbfac6fc0bf7d5705f4631a58fe18adc172e06d13c4a2fc37d5ee596ac7bf5a32e5c9b38bea3d1a84a95f39d1d6758eb3f9844b28b0b0d465c49c23af3e943258e039fbe6b611d7f5702a7a0188ca27fc5155a68e18517573e6f7229f50e5e611bbaa30cdbff41d5a5df41945abb6d41117a1d22cba0e4f4c8f1d12420a25285c4344388ccc035393437274833d273461de7e55d5efed321ba7ce6f585fb5ebe5d3c964ccd954c36d08f2e6f451c6e2c75ec9e0bf7dddcfe9651ced9c4a5ff16f7f56c259a4777eba079f45f3b740ef35a3f2d28eb5b9cf61606be357e267f76f6935e94c4d9405fce9701fed79ff1e4af880ef1ca991c6060ff7efdd33ffe0de4df419cea81e50569f080871ed060b2e3df429c2ae2c4128c6cf961e3046140d9f1a79ea487e05a3583a3fcdf61de8d10ade1be5db752c5fdb4fbb5763f5e75118cf26fae9bb04d11b45cfec1e5212b546e567db04466609dbefe0ce054ca05508c104415569871c68e7f635dffb8e71f9386fde8756f2bd3bfc8dd810521d8212b2b8b16b92dfbc54951544c85b3602a39d6602af7cae2667f7367a749b11f1771513315d55bf73c0912db541eec77ba4eba4e730326749bd4f1265bdd0bb4cfb5c1fa6b3ebdd6cfc9137f72f4b22643fb7083d4ee86f6b99c65cdd7d163e7ff80f40298d0a58c3d2674abcfbd3efb2fcebfbeb5202fdcd9512cecd748846eede663205add05dae7c6ee064ce8c28e66ab25b78a94294d58a2869233765c0927e82282112d00869224d028821a4c6841240228d7e5892853fa0a5beee888285f55e1f250193fb7d240ca16ab35a5d75c1e3283c9b59787acb0004671775f8107292220c10d58c0060db43c498211b885086210049225ce102aa3abe984ba3c5446943bba3c64c587fbd108c51f641c89b03109cb4255308e64d851e4159a0673744b91e35035d88b1fa3482b77022561ffd2d5fdae1e8ca85de88f8f51c13afc44df055fc036f19b83499a477ca98229d2c71c4d4ad52755a40eaa36fbb0f4fc1faf483f579c2a75974b673b7e6624ec8fd078ee7732ac27c17e12098b84ab07a67807769fedeedbdecbb9dfd5d356ee5f1fc29d40a3eecbd1baef06eb3e0f5eddb76550d573e3bb1a56285e3d37fe0482df04b2fd37371dff08cb1782f1831b3f0281810476fd6cdb4c53163a61a3396defdbc93deac3116a8ca0053fe8a10102a668230a1430c8d2032176fc0c2443130910e8c927754279707db4e37e9a371ba5d9b070dfde63a3cafd6e5457c82cd0a037dbac26777797a207d5f5b9e3eedfc3fd4f8fc575971d77ca8619d73ffa537febbff93f1b585c7f1aef2687abe9147379888d27d808e37e3442d650f754d2a452ca385b88492d19bb27320108d7af3ff5b74fe3f9dfb809aeff0f266071fd8108f127e24fc31013b8c091d7df02fe38388ea7a02705d6bb3cc4841adcd2e5212600713f1a216b054d4f26bbb5bbbba58223d0a0c7ea082f380212cc068923f848253663c3b2228bfcc18e2e0f61f9220558b268030b105a80050a09050b12588478a1b19c6031415cc3d63682a045f2604d45160bb06062eb14510d9bf5e00a7be5808c199466922063054bd87879888c1484800c1e7e8ca106260384857e08714f8b31b2584d2ce9f2d0185e8c314533b5612b111b4c5869587b79680c1cf4300610d609c6f0218b16356cbd92039b5d1e12638b1f3156d6c59022c3e69bac1c428c24ac88a112c2deb83c24860f605c692372614d9787ae9091041725b8620936e6f2d01526b0b0309787aed440a661b5cb43575c0064c80f21574a70fdfaf661a871b3cb435750703fefb665428a4201268a92cca0881e0051e16624000621d881114c1c4186169913d215df43601cf14360d8e07e345b3073c48e5cd73591b44f97e0481f21a3e88b3ab8c4620cc04d00e66422cbed1e18502c6209d7d26c4919a125a5841042087d28426802e16b6e7ae4d4121c3982390eadd875bd76bd0e15c33eece3c41eebbfbeaf5a67b8b09f015c6e60bf7f67a1f8039310d69d35c8365e86fd6c8416c6f93a6810c208e3c338e38c2283c1faf9ec9e47fea847e45add3dc8228c708c08231c23c208c7883104d05dae2093b0a1840dc990b0a1840dc990b0a1840dc99012427b46fc289334dfdcb43b919543c938fdf13f5274cf3baa05c162fbbf18b3eb91a7d5991ce5fd1fe9ba4b66f66b0465802f7f4691318df4778fbfb872722fdafa03fbf96821f1e3fbd8dc8bdfee4da024d912c4944b257e4114a38611c152e102a1cb5424b972732e53e1029fef062e827d291d3da55997c3bc30bb34ed31edebc38b6a3c5a47b5ab52c85d1a86611a4f0e7dc1c0172a7114ccb07c2537467f91cf174197878a92380a2e0f15fddc8c351e192bd67fcbe5a12e54f7eb14dc7e96e2f2501740176a3c3244b0eec2fd3d2e6ad82fdea6f39f26cb481faded4cee596bbbef86ffe111429767175bdd6bd2f6343d727cc818c1f66da0a046428f6430c28e31462432192b5fc87461d93de9efab298ef33994cb507c8a945042d94e9a6892ea298e925f93036b6e7a64373f7ab8276b7280c81835ac76771df588fbba625ac36f4ce3815dbb6364a8d99306c3ea4282fd384baa7bf93b741c3bea8b5906bb697dca9a56eb3707bf6a9cc603617da805a92fbb90d53d094d26d3c33cfcc77a76fcfff0aac30e9855faca35a415fe0eeaf295eb3b6b75a92ef523c72e35c28f5fa716047e8db376736a3c2ead09996f03bdb88ae32d77e3336e7b1227f339b8986faee78f48a40bd334d205b520337f7a6839bed7d78fd125c63b5d2c6663b5d7ccea67f1ad7d18e3d4784edf1afca9f1e8f8a8e18003d6f5eae32c5c8e9f1ce95d8321445893e924d43dda13b6b20ecdbe3ed14dcefd713f0dc4005d971d87db20ca35222c931f305583432e62a1203cae057a60fb3f2ecab971cf99f4c022643ab00d0170d51cd85cbeb931af5973f93966e1f2b783405ab52a61bb2661bb56246c3fd7236c7f05ca50b8fca156ddc33632509875684627f454236c7f7562dba532ebfce51cdbc35170cb4169c7efb81feac2b08ba26efbb86792e2a552cc54c58b298709e6043313536b11325ba530456f3c44614cb65a9bdca8cc3a32b5e260a6d61bd8aefc598e5a6da0a3d69f1db512f1b5d680ab95065dad439c50eb0c6850a8cc3af5b2f71cea3a0a75dd70eabababe7256abd57792ca0485142af51b039442e54c855a9778a84aab7b42a06a55ad50ab102cd42a839a5a636053ab120b001ecee3e6a632ebdcdcac6f505c43bbeee99931c3662d54669d9bcb9fb570c3030036352cac80f2544801059a133aee77e8c8719ac171639389b919b1e5316a6040f1428801718c31c66da354fe5f29e52525fdc227ca872f3bf85272f771607519e8c6af2c904097bf6377c44ab09a1412e007284865d5c8c11fd58fea474523b597527628a9799e35af16d8c6b51bb6f1bf89a74bdb946c5408fbf951fda8e04f77b18dbfdfac351e4a755c2246f963444cf4438fb01f4624861036c515405a04792174fd1d7618d112b6d95dd8c6eda537f0662c8e22f40c83d2181447f96344572c46744d97b3e9eda3158686c4e8252515c2b2629c73cee85984d6cc9a0a21b9c65e6258ec8b524abbfb24605d41d6c3191fce97b26bb6f1d9490883b0ce4e40029251e7a237503e2e486e5c9c923d10056db7949665598e41cbc25a56f76260650f4c613e10e54f690ff4e1813f13a4af8e8bf9cc89f94ccc67623e2748e0af15c6fdb0297c600ab301a3fc8f40c283241783e2baffd482e8b8b4c37ed8c69fc403eb6c23ff87c3ef8f5cbc19f5e61947b16b10d02887f084603fec07fb8129a972d549092b49405813b2ff1db299999963944ce98438cd5ea4b76512b6a375ad23643508db1075b90671fa22b6fc611b7e8f6dd883e058cd82829200c2ae1690a87e905c1d658c9351ae2c801c471225c138b28a2098924c906d045d12891ed18c7259749d88225104511a55c27eb24812b97f12360aa72e99c56f4d3659334a1f2281294672dd6a6b85407a214692325468fc145529b2a47b634597127166d8c4322719768351f2fa8f0457f02a5d79810ba9631970f6e43b072ea418e664c268599605e1378c5c44f914e3df5c32c19eff1765907bf2c712608a242dfcb00482222593b446c408edaece6a44509905a3fc6590e3c8956482716410d893423025c372059dd4ddd5703b86bfddc5955b1ca216835dc51d6e8c81aee27b8c5166c129fa7ed385a71141a335821d43c8edd9e4745c99c4659209dcf8dc8d1dc72eee27cbb8fe1f01aecb2b18e5af85ca8b9feb528c203aeeece4aac8f67f7285adbcfb9abbd317b69fa3e4640fdb30842f849eeb1f25cf03c83081cbdd68c3257b58473ec7362e06faeab87daa629b4e669d1d53b3640f6b3068552e0662951672cf9b7095765db503fb4123385f07419f0a5cf8488cf8932b5b6657d3a92f0f852174672e0f85b1c5d52e0f85b1124266011b19079b8db68cb6dc54126cb19b6984c6688be64425413581bc89f952476f7ca9b310653def989ebe7ca0f4f679076eb98103fb4d34df7b38c5694851e54a0e825a2083239c2ad24406416c100d21c18a1f76664cccc7741f8899018707661ec74b37d300d3cb9b4c6fea3e204bddcc0c325ffa52e781ed65bec80eeff0cefc184e0a41d4fc176e8607fb7596f949ee7c21987af9f99208a6244c411d7ffe8b5dc840f7a0ea0149133b9fafbc5f6721da72e73714c7d9712713f1d082298e93e3ce6f2a57eefc2490049a324875e797ba2510193172e7b716c77118e47593a9fb176edb62e30653a56ea601a57ff997ee03464630db68a38d9d22e81be961db317d0f393b2f5f924960aaf459aef7211c67baca71fcce1d45f37b4bafa1eaf1d4ccce7cf769e2cef7233c850f0aee9c53f8d0e4a67c677ebc88a6f0a1573065a4881e7ea70847620145764affc32590e3309108d6b8f3a512f34b4e44e9b3186ea60131ab6ec61fc63cefdce0661a70e3611ea6fb40a40251f36f7433de29c077603ea6834510351f5e81a8f9bc43546f70bc13c3f1ce8e24d8cf8bd64c671f47c7d717d9b9ba991962fe464c37033b22625ea6a31015bfc88e77d667311ca4e20320ad623898b7380fa660962d77c69e3b1fa6832b889a0f04db2a986a22889affbf6dd6329c26b0d05e0a77380cc468456acdbf381decb52611db4c8bdb91c51269238da4fde5e24272712159cb22619665599645fa2b87be3035e7bb7050897bf32d0e22813ef0887bf3471c040226218229a882a8f944314bf77dd0dd80ee843f77be774477dafbc155abc10398ffc231b7f0751b7796bace025193eb34eefcded23ce6571f6b3d5fa6995891cc636a402deb7b5eccccccf2bbbb999d27f63c99db85ada78a37849762a988e2f2f7129da2371045bf93b412c75145a00e621d1eb0ce7ca65a10ac8b446c43dfb988254ec136f42b57c4028aec442abae318de173f841ba540facd4520f7e86b5c148228fa161783dca31fb9a8847bf425172f2efeb847ff863e7d865175a947f8de51cdbd4a25010d621b98f21d6e2bed427750d53c8cc03ade412637b8f4e14f0b807e6b0bf01da88228fa012a50419440d8df3677e7c1091f3811c5856540225b15a682e252c5271a9393296a4b3495268426032d0656cc39e98561179d5a34251a0cca9873d2eba2d38a275ab4682f9853a5b9404ba2b5400b4263810684b6024d05da0f1a923927bdb076a2a5a03b061a0ab413684734136825d0a2a5bbb5bc2cd13cba65efa83015dc814fb493222ba03c8f4e564c500b0d275425a5941da78cdf137e431aa394314668754e5834ca0bce48b1aa695a96695a96d5aa69d9a8564d6bb6f1ceaeebbaea37f3887d357bf2d60edcebfbaaddd7b716c1ae2ed2e812026b4629a52c82a552a9668e6545a5526d4e4481061a4476a6ca52edac6408a6a8542a1863e00221f438050b081972bb3b3b31250934e21429cdccdc748a142a95cac90f970a5ac618dd63749732c6d952ced9b13dd9133a74cbb2dc925105515a965445158458d068277ce0845a4e4461d1796159b59c5c77832815a682e25215693e73766b3e589665c16ed91db51e341e3423da0834115831299df4c2b08b4e2d5a08b49e39e72c63523ae975d169c59c4fe6d432a79636e65435818d35d448038d2d4c58821226a5935e1876d1a905c2767246770ccc28234b129000001e736ae17133a7969b39b5b4203d660905c0b2e72b4c395a5238423f1ca7617c282693c934002210e54fab356da7a7b9e94104a6dac767e5b3f259f9ac7c563e2b209f68468fcbd0db3603f8201a32a44a048800012140b66ddb3603f8f0de043797fff43491566bda785cf22b8c5fb98c9f4cf723b4772364c284490a342f9c60aa7509f63bd5eb3333acc33b70f76f7284fe69a0f2549eca53792aff3d4c0509fc020b3f79f2e4090bf17f9a9335f1939ba3448992ed2ac101ee0053d3c753ad52a25232c4143b74e4b8fc34acd335aeac359d36eba7cdf33c2843aa90e1870f20ac0363849e673deb05c18b2a6ef7eee699783ad1133d4115c8380e4ce3d0c33a10cbfdbc5403a1e43a10eef977ffb6a9bc042ff754ba6cf50bde4d0e4cd5afe2c3870bad9f0fdf4e3f8008611d1ad9720f515ed43d45ed73e379710ac779018b6de8a3c685174e261dc721c0e58f648c21c6953032015cae898e1380510b462802006a5c5e28d940a9a9a9a9b959d10b739c9acb5f6362c1b4c2e5af415951010cc741e10b2f1ca72bea828b2daa1061088e83e3f24fa9a9a9a9a9b959d5d4d4d4dc709c4d8b182a59d87e1602165378581ea4cbef382f8c6e8f9a9a1ac779e1e5091a7fd8b65d676ffc608f38ce05a59431c236620594d753e466304a1a637c2963941623639afe012405496425bb7794ffb792af61d030601dbe3d0d89c014a5d66edbbf67f7d9c6a7b01d51e0355a7252937b17f529db85071a259b5391f106e6a416764dcb92921b2283fc19c48507b882254b966c399200c5eeeeeefed1dd971321ef00513fecd0759f7d2f76425baeaba26c0182418c52e292254b6284505ca225458ea02b8d1d3952089921436eed00d2df7bd0fcc3a74fa5c425c418a31573249941c29ccff91c29b2c7932c63648e1c3bc2680474294a8071c9922543dc8827ae9f955a56b2f91065b426a5135a10ded835c3174008e36645b86d34343992d8cf4473bf9717d6d1996d751c6157f79e461e36402184d18ad03262be653d9dd3f26a9866f36882b03498122b82ac6fdcc214cc698151dee366d53d35f828eaa9412e894b2c14824bbe1d1279ad52a2b4acee2ba4c53a352d5c0480e2063dc2f6ecbe38b6f17f7a83551420542b6c7f85a28daa1891ac35a735e975d169f5a05661fb2b15a517cbb2ac2b5e4cd69cd6a4745a432618cbea8602136359dd67c4c85856f7193253dcc061594b88ea90edff81144f7c10051455c8f6d7275250c19ad39af4bae8b47aa08217a311d47382851a1da7092696a83cb0fd35e8a605cbea3ea385005856f71901e86ecbea3e4300500001882e7382e6b153b9ed7dc7a5c089d0c80a28af4785bab1656b2d95d1c2941048f44c64718042fd3718052485cb7fe2940520e740ef26803d17c619e29e47c0515e2502bc8607d4e8000dcd9e8772c0c5355f576ae0ba91a38cb20918e22f650c1c84d0218410366723296514acd3dda8d1384e36eac630ecbbadc6b0efb6463deac6b0efae3dfae158ed9a6d1c043dfa2c566df43ad0eb3dd7d2be9947f440d4628817d334ed2decad975a0c3201f18e3ea3d2a125e3280778471a57311a65a494abed330bdcdeabf19410cf78e0438d07bb80f8905d4e8ecb4e0890e92e064cc9e7cb4f798328f8bd822de6e6c25ccb29f8de9db6d3c9c7e9ba0b2eb00ef711bdfa72b8eb1fc7719c0b77f17bfeddb1cde1a21f4288ecd0b923630dfe945abb6dff9de4f33a899015d67f257be86f5e3114d7e507c2a969d100e1ecda88d5b5914e822308b6610d303575c8ba8d683c461ce708eb441861033171b14310829f41ca9c85b03f6ed6b2beadee1eefdf43c8fed3a71f833010eff7edec500334ee39738da73961a9e9abb9431ce57f4343cee98485fd184bcec764d8c03a2c3f7eccc9f99ccfc9c9920506624386971f5eee3e0d5cfebc1af7bc1bf670cf9f3b6f3bbd75b9eec228d7529edb487db88f20aca8c836c7b99a9f5c97ade929208ef29fdb8d2704888fd8e5e4ac3c886b5a10c26e87b0db216c87b0bbdda56b31c81b6f8caf03bd3e33e0b0e37477b7dcdd2d77cb2d17b4657dcf67cf514eb3411493186197c1ddee848d261c9afb58d8cf52c981cfb5a613eb58911b12654cf3ddc448a262f97f406982b38bee59dd660aa016a8c46c59c982d2a9190000000800b315000020100a854302c168384f8445fb14800e749a446e589a0ac4510ea32888829031c810420800001863c00c0d0d7500df8bce59666d3925beec4bdb61a882495d7b3d5b5feb92e6d87a05c7cc9fa58032cedac95aadbd0cfce0590aee1c2c92fddaf236845abb1dad30ebe52b560848c4f6075651dfec7c3a99c252da8f457865956cdb837bac491542dcd95290378d3a9acdf43c97d3a001f03ac91839e47e07586d3ad5ed54b5ad2897562a1123fa1a37a49e6455f386daf0eacf5855fba783739d262f060a595439a234261021296861451e04daefa21c511eab9089b2225ccdbea13dc90a8fae39ab35140946d94a12409e580c14e25678a11750cdec6d4e73353cabe5a084c4d01293c81a5913ae26cbc690e86c2b7bd54716ae8a48f5f0aef77779f2c65d2d6585980cbfd9bebb3cc76bce626865418e15aa337bd1ce7d8193a4e6acf58cd9599c01d82d6183d3c150804e462fe2a6d6bad3d131e64e6440ad05b0e1a5b716b22b33979edca2c724f096adfb59deb41b04e360eb6e56c4980a810fabda1f97bf28a18aa41b38a5e646c75a89e2d58964008374125ba7c42116ee8572585d58f86796e86202411e089cddcb53d30213095bef61320875bfd3ed39ec1eef0eccc3e5b2a1f9d5c4d6aed23b61916c9a8ef836e28c5b8967a782088308d907ce422c519b21e9df8958036f12cba9c59ae7c0c525b572bc8b388e7aae011aca1f32652b177a55b108a2cd0fd93231e273c8a907cc906a132dc6969f5a3e88e487ef58a01e6af1b548c556cf7f37ccbbb1c7d6c951435c4538a23c13debfd833a2b84a23a843fec7528a42e9d194adb81c9fdf3a656a34974342d91ae04ea2f401b9c749ab512cb3d5c110f1d1bbf8f996317c3e1ccedc80f2ff60a9f676a52f74ebcdb315fd4b20df7bcf950cfc56c9ad80e7d9a2bc09bdc6abbe554119c8dd61e823cf319c330abd870f8b0025a32d465c6e82371e308a4ccefeba75c6be1b373dd62a568faf68ee63eae04e30f64b9bd22023dd58ee7099655b527d7a5ac2110e72ae3403e6c27dec612e706c3a6adc250d95b699d9a62d439bffdf15038b81af1af4c66d8b090f1bf4062693081c8d59cc5aa57fa8400c47feadcb619327785bf9ea582df026b0fb10eb73104a29c694835b1509650adde9625cd28ad611f30ef82eaed571730b52cd42b43ec03da250130516cef125dc758f91e6e9859e3cb72fc9fa7234ce9c579d091cf4ef0b5533881d514d3f61a93a8fd82d1be7d45f3cd161d281ba75da5596179e4e26d52f3140eb53955345d5ce8a09b1a6e151751e978299ac060f1f834d885b9a873db9395cda458a2883a9293050e0f1e015883395f1ea273bdddc86fa93b50ed9a12f083ad5cb37939653d4ad454fabbe5a008e42da81df0953dc29bb0579a320c29c44c77885d9a72f791a40ccbb95ad121138b4d97d24ea52305cb160142c4477169c8c918c3fda78eb06e2feac2e1e0090f6255774467ccc4583a5fedb9fb8a80fb48790bc3df94c864b4bdc5e6955ec4775fd2dbbd59aa29b69bb8f58b7819ba2b6ac65d41ab227fe07bd95d94b1b459b2a59ce02b919e44507eac3ec671296025045634e140e501a033048189642402569f19fd854722154191444495ab343328940a561161226080cee6643320901e14240837d096c5ab031201d68e20806282661298014146644e10065b160394c97189e55f12fe3bd3490cbf0436f95b50f28364121574d3e8865a837228b65a3d3cd4a9cd05a229259f458baf656ec5c2d662bf4e58673b79d4e1931318f79bc107f6d210fd1c4504c5ca549b32e075e62e3ceb0a3bdca8b24c19ba77b1471130ed28f7a875b6d3595cbe560fbd4359df1a4418ad0c2d392500efbc2fba72edb511cbab6c20bb6d5760123ca5e9b63eca280894a799d1f098df86605e61cd7ff941fd464de4566f5be4c5e33afc3d1e0b47863960b58f3448635c968b7922d39cbbf861f377fbd8fed9633f405e1d3a02c50bee1624cbbd6f11212b11ac80a1a75d728d8666f72edd9670cc4968e14d023eac1a3cd8ae36d3e5703a5584e863e3cff8460db7b002a1e417ed3fa3dc0b897b642bc834f4955e495fd6ef5459f3963a4341e08b7edeb06f0059bd586c9a1260873bc0652f4111be85c8c348f9763bf57c43892d180a396a2387179dc4bccdf071456915cb1c5caf07daf7ee0d07e43ca47ec325f2d63fcc1dc9a6f794acfdb0ff970224aa5fd87f73bf8bc529c236085c3d620077b64469ef7e88a02690a4e69a68d07a27943f2555bca43e4fb12da5c4ea135de13c961592d61b7225576a59c18fa18fff74e10ca7a1202f330994cbc53637b81cdb425c281be4cd98e15e88042073b9749a44e092999fa85199660c0b781153a2b1b237b5e1f4a4cbf8e53700a140bb3695ff66e1dad75e82a5a4e2eee916d37b0a01e4bdee07ae1246d57bd983e324cb566231bc35f6ed5865784ef6786590ff8b640a03a600cf92ea60185bd4e6351e515b0a324605e198823185d4b740eca76618489c3e5ca03f39daf7e806f541e2915882db52b8c49c51088b79dcf0edc042b71efaeb809f6851e877417e7543840b84e96066aad5009bf15800b4371776132bdd7406f1adbff2cdc112501e1c0336e41e40a00a06a7cbd5f2597e9287c838b1ed571f6c009c69f1d2237e1a5c4b3e0ddbce784d5c2eaf27e85d9a49c5fac2c51fafc707a2eee9ea153888ddf3db71eb702aed4c0af2c345f80a4da68d28d2a93b748b8b0e39657414c34c6355544c8aa9a24f3437d302aa3287d91dfd8b04d3d9091b61ed60894247691626985ba12cd4fb8c30e4e40026c840b8edf0a3d2abd064d74af90dd55b7f036231a228c2be054af556b20acd452e79751b7ad60f15688d9567516ecab901de4c7403e564f71fde157a77917506d65df77fb1efb6f99229e1b8eea8f417af436c9ee31761ccba2a50b56d361716a8753eccc2cfb2f663b76d485ed4d0e53f758021a307ea3aca82523b6aea911e71c992766b3b1a706e808b869299f65485779da779278bffab47bccd252d722a22a3991309fb6173570d9b00353784c97599d7299fe9c843cbb64d3c842762b97af4c7dae709a29da723585e996c85e898f686335d8a660aec4f8052c09fcc72a631c5a896ab1daedb67e2b370c361639c134726ed068226c6c18cde866316e2da664b08cab186f56f253017206a9309d367fde72f336a2cf5fc72884da0373721136e278b328cacb4e4b5120c6e651916c09e8b57189652b0b51abb83a79866a71cc3e560e597ad9ebb9523049719cfb3ae504bd4138de32ab41eb07dd09df2dd938bcddb8d5fb23b94ae3a8e3376dccfcc7328ceae7b70630932235594bb055dc2f9d80210c130bd2f6783ae8e3e1ad50149823a09e242e72b28914fe74f6223775555bb58149fbf37388ac048b10c3c5b8512ca8f14f2f1190ab0d8cd66474620e8c7b0d1dc540a5f2894469a5955256e68d9846fb8317b0cb823cc5023bc8bae204463375b8bad5f65b295f082b415c71b5d5190b0f1c2f72d86000bd19ea73a0a6b685393ffcc2a0591bf6fabf55cb948fc11b6cdea0359a832b019e0d1e5dd51efeb3ecd3a4c4a691ec4575898866a3fb341c2d975fa03bcd46535938d2ec75c7980821f21322f56976e52f3199040a496f32706ed12762ec9403d5d26b0172ae222dbba47c01d46191e560417836524d4070b7e92b841dd33d7eb25fe0797d6fe4724a0e2aaf017e7a19c061d83a10501a70793d69bfb3413fa7f7bc1eacafe68eb7eb582ea548cd914351e206eb2807e0d12b176d14dac2d138661c808d924d69acef0fbb389206ff2a68118b22ce62828d1d996c3b45f0764306990d1736549d896bc602fae33ee986054e581587fd909968ce88efcff7843b28d19f81c001d64b1ad426e1ec835b30b062cc6a004a54481e566b62251d6c5f3f32436862584e83b118b211f7f59126469b57d6855381c0df8b0d1bc001dd538d775eb29f903972e44626336a7af6c25ca52dcb031ca846bbbeb945f40ef5c89886a6b4718c297c517bac8aa46bb490494db4ce03384969f56809b6a09c4e0cf4fd085a24f6ded21fbdda5992456c036980e9f3124a7c936cb58540059f9610585949f314ec0fbb504f962b4d8b04da4c558f9403188f638061a2ccedb1c13693bcb87edb1763e44a9a43a783180cb7478e074a26f31454db232d3333e75374e1922fdb89fec018eb15ef0ab656e74267954a287e0f7af4d8236fbff318f4cf6475ee2b05621c51044affee1c61e36f42518993453c1380546ad4e60c61c478b2629d52ec9f37b612863763a2bd00321c8ce457e9f1db819a72611060c4cc7c6295d00f82042d143d8dc91d7f1384cd92c27e4f0ab2ae4f47097c4d5b5b5782758b11b041ea5f503d92b4b3c62dd232e6abbb0e1f345089a09bf4c1fef180a2523e87329458b2b8e232a5eed931f3b7837d9a0c1f7cddb42838eaf101a4574f0b88c70e85582d30d18f281ac15e2c2d8e85aa7e1cf7bc1911c4b41fd8ec469a75194e73b5f5aa27637347e2ddd851fd06b00bdf7d6d7cb7eca58f2d39014b613493ca7804af003450331cdf602f560422baf552de549db94278eb0331411ed60eff778859463a8e02c509005c39a4f428e4ce8b7c836d3abdb5dc513d3e4831358948d87d1da433c797228edb11fde841d48bb719b2fef0fac87561c20440ab583c7b182ca7af72c75fd16cbdfd9afcb5b5070b325df8b53a546a4663b72d0f34cc368d2fac44b7b3d9c13ff3ddca943c704f85d16ce1ea4eb9d29b81c282835f3451c14e44403b6c30008bcb9f315c0426d00bc39a27f8ba31a6f51b638c422b3c2825bdc00f44ac00c384bbf1afe800f5856853a58871a4619a6534d6c749e71dc2f3c7067f599540f5378e194a11376915baf6637aae982e82c342bec86fda37228dfdf6d2c15257bd5217dbef2204f3eb920abecf12be9bc1bbdae17714fa89978901ddc137187408fafafc6f33f408cf0b26bd0b1d400a280590568082591cb80653350dfa3b98030d57fb498e4f247d0f7a7eca8fbf17f77dde4928ed700bb825e0074e318e735e7b9f05e27bcf5a93a0ba1fcc657e253bd1de95e593f10837cad747fab29d8ef8a78f5e3ac485c7d4752b863c5a1ee23332a50ec9b1d2757a73c5a614afbf7863ddfe3af4266e281fd0bedb96fdd64c49286c7b6caf046341cb4160f7b0decc65f0e5ec7230fa492a4a3c8cab2ed2d481e76cdfc7bc72045906c5d4673025b7be087e73c668104642a02d7ae41c4216dc0f2ebc3d51d4987709533bb0b367f1475be60494781cb772b0458e310723ce63eefc6ebeb91634a2bba8f123980d2c6db0ca4109ffaca531f241ed4d24a2c14a5e7800c32f2e95ef2ed20be3b22fda4b2e070cc01c23cfd3d8d2bcaad6743bf0a52dd1dc5575f00e715966ef08484f8c645104a9149845c5014a2122b3359a9bca65add513a32d059360ccb23a8eb9974b0e288dc3b38b94c155562cc62e09469e322baaae20327195a9aae0fa394b7de4d9cb4b908bd25613a04556352ed71eddbb109a191546219af3bcd89eb8d452142ee8998bca5194e3714c5b2f07e4bb8729872b320edcebe5a20f3f773dde833f083c49cc4a8eef25455b2f013635bfb14e446072285ba570058209af6c2a8505a115079761a076ec5080390fe5796f6b5128aff6683f6e3887556b58cb6f595a40743cf1edc97e6a7d400cd5a95a1aacf5b6f8d1abe2515facaba8340ed96061faa5e10f835e42f58a0e2ea5dadd2b3ec43f495a20239405e5610c391c63a82d0824a676b9a0bf3805c361b33399beeaedebf56016e3d2aa52e3c1c9c25ff45539745590987b2863fbc721f80ebcbc2eb2fe61417e57410068cbce7eedae9d270ac27f94e50fc38c2c7133ae5e20f0ee336a5e08c004849b836cfbe05c0294d97eddac5a5198ac4bd9af1195a7f7f8f5b32315a6bbe05e2f90d93ba571f6dd349cd65eaedd0be7697ca63004eeec984e05ee8e92d02158e3415211b33b58b2d177e6df99f5ed923fe29da4cba43d248b9991f31a02b6532d81fa9bcd2ca6f1e048dd8acf4a8d93dbe207ac41abfeccb0d1b4f806ae1934609c9aca7a2e65101c518d669dbeea815d9867d7ce3d2f8d7b9b1992523c8d9cc99b55697ff11bc7aff5e15171bf99a5cc4bda22950c0fac7d309e226c75340fa6cb27885332bda871c18c063e60c77772d0a48d2656e26925e9a7c96670483bb51d512337d1abf54c5174ecefe326b170fe4ffd52672b7b277b6b4f23ebccbc8a45af8c06dd58efbdd43962956f72a73c71444fc90b8b980e9160b0aee7aa97aef85a1345025b14b954ebce1207b5268093cab7b4599ad9d0d18deebf61e7b985814a980945f0634167ffdcb29b0811ee347c1bd97d1d3dcba2ebfc8ec1d381248394522865ac4f81de7fce2ceae862e0787e56841e34c78d043669571c60966d1a35a6aaba046bd12bf4177a5be44e0fa4937c5cc8f312809e6b2d257f01b3ade17d9b3d84a82bae6b5bb02f222d0d635bee248a51478a088b3358a6b6bdeb243706910eb874fd1a108250b796919f3ed910df6d2f47a3bfed78556b68681da7cf57391e69e6af1a639b35bda20dc0542e0fa0b514da40a59006691bf155112652f166df45c48637e74426de6e7c45280052d2b2e362249e8298279323545e36d0b0e5be62135f3671f538b58b6bcb67a8b9ed839a245a31907e8b8dc3748790f71cac31942c2517968c9d3c205beb67ef90a77c1eebd762feb165b114f032b338731f4b0fd4a8d82a75a1c179a07e2ba0143ebbb17a0cc62db5567f44d491d141f66310656d703e03cd4046b71e211b32a80038a16227d4e1f1397451168112a93f13b4f250e05100a7f8ffd919c76a884cf8458bf580e7f1e11fe6061b7c80ad8089721df7effef5eef89b565fa1ea2e22a5f712a1cc9e1bdb658f1614377341d30db9459b28a1179d3ee5ccd4354110697b47bdba69131bf7c99e1b1baad37b460fe0647542ca68066d0b69940d913a3d41daf86353f0de3386251c74237e5cb5a43d62069cf82c3bdda506ff1e04c5248d47b10b730e7dfa7d082733229f486e2762031689056c6e78511244c415a4e1879d1bd353f090d167a1462efc2d3aa18a5bdae5319392f351110c5898613b46fa56be63f70b892b9c4aa3d84085c496039e55772d7573a42b0c8bfc4be2bd4f53c12223bd4c50b2923c1a64e6f504e42498bc935da72d628494bb0c966969eb236cd2956c6ea975bfa49a75a26018cd2f1ad21000d2666a094491102062d5fdc45026ab0a86ac391e483b12d12fe4a933ccdbaa6ff2c96b2feb738b4c229713feef6209f5fddccf3d06df1bbc970b3bf99b340e9e7d0251c76ba1281d5069a907242302ada53ee5318f01a7aa04eb70da5907afff7c6387c0c1281ee2de6739efd41a0566ebcf81d163eff968b285048518d8db96357b67678c55a1e36b8e3b75efabf00f3efe08cf9c3a7659bd68b9575751e8c2500aee182b0c06c58086f10352462234709c30bfd2a21205216ec0a52f71b87c7482306a476d0b092dc02b348750beeccf13650c16d314cd6a351a346335121e86820ef1f30434a3278a83b7fd296a2c81ad97a44c54c1ecf227ac40386051696b386e07eda59480ef9af929194b1b7cad31170b80f9aef82fbd28cc8d323e98876db3380d19e691289b9fbba8f3b96295d778a8c9289f34881cf426d301ffc9e7fd338c6d8c39dae3a82c43afa3d36735f68ad1aeaf15b023640f90e778146cd1321fee8e0a833cd69a628bd8b7842f09acf202409b6a44e858b5a522cac0b32794df77788c2b89f7ddedc3f6c1cb6561f1d65ed7ca88d5c2e1e42e9d5ab65a0409c1f16e9d40ec98c8cebb03787fb629bdb12c589f0a87ba780600d593ed073ed863c72ae40fd41b7be77d0ff67b5161afbf544eba53882e10434875a6a00842c5cd0db840f3aa85b7b76e7f942f9a05eaee574d3b4bcd32214cb4cac880e3ff748d05bd28f9b8a369e4baf2127677478459200dbb727965d85ae2aa3fec080a3d66315ea8fc368ec8df10a4f28d19c0701369b65ce1f7164968297be17295401a579fcd79a4e99755f10527d1032e2557789f90c0d614d934ffecc4c7e44ea5e7db1ab08145ac352dbc07dadd4a8abbf6c535af5f93b3f194e0b308c3f598a72f502ae35a4dcc286dc913fa3d20b0a5dc66c81ebd65086e6d8b97026dafd2ddcb89095c9fba6de0ec5dd2ec70d17530640505dabb9f8104b2d5a6ac29b85f6b6d686fef2943ceca0adfd5dd9571ce82361de15ab04b106ee5871c636babf52feb26cc87728941ce59f3c8e5afa49279bfb65baeb7b60373527134b588d0ef5092179a3a457c660e2163b1b23219523e0db27a104f0cb218cac50b6a75da84a3ffafb0c2c6b5a6426cf3abf2d632e72ee4db2815b25999081c43bed4c88838851040605215ca8b61da3adee43e9a0997146bdda202641f47972319dbfd97900a2c2fbe7b72eb192f19a13338690750f538236518c483b2b5aa450cb215f4465f26641d53939081414e1c3041e0b24813a8401cf9a6d1ddcd67882de7213abe5cbfba3acd51a823f0411ca92047bde1f1cfd2d5fa665b90f5f9daea1b9f3037dce3d98cce5a3b43ab3d93ec821988e70cead33f5b220cfeca428faa40ed984e7374458e28747b1b851164f7ee0e95cab4735a2e97ec6bdcc34621336871341936213db5c9bf5916dac78e6ff0a3d39193508cebc6ca77160877c6c56de27be33e4d59373d5f90e03185338bc520292168e145e9bed753de9e9581c8328a91430bc51ca9820d39753163b8e7964288edead7e1da3c97f7885d6492e35387a65ac77ed808644b2627d0a6174e04db3633eeff0e66bb55cf17691e0a5ae61cd4dd8f9ab18bd47f6b89e9b493886c4883b20a64cf0142cd7d0dd08f1cf7d45e4b08131d00e9d439dc6ebcb6d12effbec49cfd2ef2559dc27acb03a1966d051aa03641634bbd305d99e9960b91ca84b2d5ae03f469c3823acc9d4d22574ebce18c4d7e75871a1b0a086a01fd1adaa1e898d300180c48d546f3adf4eb427b94de81acb05e6281691a4f28817cff453720140ec47f8f76f9c673620c15e1e3c9bb0881d34e88421bd327f8eb1ea45974684a7563ee98bbea88f8dd9935d9510f4593e8d0640cbf19aaa0d5e2a5c9f0bc6ade5beb871147d68ddf7069249b51259d1f372b9d33464eef08837a6e2b08d0ce9fb86b25c7df4f0e20b843b07d23d80136674a992bcd6bce5750340ab95e900d4a46e676e23225c5fe2206ecba54a7de77b2e45856d92e6058a5908652427138feeb63b304268bf63758ba87fc2d794f6e3aa6a5ab511f91ee49eb1897f5ef474fc2105a9f86ab04ed76ba22ea326f8ea315ccb93099454c23877e16e7832e43b2a6e2427cf7d44cb363e8fa3606d93b1d0c3244f9c6b840d982515a76abd211219fbdfb757c7ed2c7cf5231f30df17b2b1bde3a3d7d1a4266e175e284f5728e00af697f09fa737a0a5a0e40808f82aa9f13c3a70275f91780a4e73b9279a182ad06dc2dfd30a2325b2a3f375add650a143df8dfe299a60109d2454031e0dc4e11f3a66742f0e8149ea812623c2682dfa2caf0131a1c12867b585188501069219b556c49b97f97c6f2468eed0703121e17b8583f0e6339c852b21896894120d356613cd510c9770ec2523d08b52e247f85699ffea76cb00bb0abef821ea776c82b7cec4240c30d0ca39dba74a3419d9ee1076d5263ee07dd827fee1981ae774b5ce94158a06143806079f0c02c2a38a04eb9996b1134d89a222e2da7e8a70734eb9878bb7b9b3f422b62ccc1773d67bfcf3170377103b1d53cc472db12eb1bbaafdeaa92b2e5674b0c21ea69d445df3847122984890671ecbbd37cc17796b4b39f8345bb3ed87a86afb7a59f2221aa0b7a6219ca6ee810f04b44cf44b9c09d3e3bcb80f44388bcf1ab067584a13b4b61ae4413543b2506d0c72fd44c11d7f5fc0e3e9b53aa6a9cd3f04cb88ddf4f2129bf78e8bb44b84a3f340fe6befdd28c672fd5563bd9962190fb65bd682600987931edee66e8ab7213cdf2050915df516ae7acce2aa7f423381f74bd03162379014d89f1174d8b860ac69b1631b018a52c49763764009fdb72797e1981c59b4d698adad646acc7eee991f63bff41fd9eae0ac41b13c283e15cd230164370a5acbcfb78e333188fe7fb6ea3e2a979e186e0adb14a3763358be2e455e1e6caec6abb99208889bcf797a5a74447049fa121112b727af36ca40301f0d79e04440a9cc72a6258c1ce656e331065b0c1265d2218cbd2f8a578e36917741dafb381697ea6967c2449c15f6fe620b716cfa66d562456b8dec13c1538d56d058d8b802206050dc4bac3a80b5c8438572b56f287b4ab43e143b8098f30fb076895ff0d7333e803ec5e75b689beeea451b906eab003b47b80722cde6cbc8ed3eef93fa125596de52e8b6569a80748c516648e3d644b9d6be97c5aae7f71ec3c6b83f5e617d514ef109a1addab48318238e6a94bca315224da4c9e318ed6970f22b508885fd6f360257ba583665335aa724e06eaa282cd41b1a293f42f401265cdd2dcdbfda18955470143989845db6b1f2ee0715a28b29c855221439b5a4327ab9e8e47fc40c62d4c8aadc27d79ef937c589fe0be390df3a46208ca2e90e9b9b96d609b864d8d1422cb147bfbb4b973f37749ddc9e205bd37d54e829e0c88cab7af3ab621013ffd2cfab565b0f869bf475a9f32376787535728f591af8d816815ae9e0d8ebe0859c99c17ae4875f53adb18be5c9e0a1ede77f03ff61410e939cc7bfd424b96916ac9d5c176cbb100257690d8f15abae26acb6af4bb61fd29936a8d3eebdc1945c9b25c6b8709974a4492c8e2492ba1d7f836698683c43a0058d3676b1ca04b4c8505d8f639e36c99cb980111623b66fe696466d6bd4834f700c7784a10e6cea71e2990d33d6643bc74e651a3ab3b0c47a7bec2454d0d797835fd7e567d88eb5bfa4e00179c61967495dced31946e55e29f30caecb1a401ebde76ce564aa104b0e0d532dc6c0151bdb8bdaf0f138aa039f28329b458a6532c2fc1de6b0623927b6968761edc037817fd624e1e0ca4e3fed83f84354ccd0f52854147265a0f00f075b43f50085ec4f080b2b14455f7e676b0a27eab196fb9b437c42ef6b69ebf51bce53e792a1c87084998d5d2906a1556a9ae6eb450084c7712e88720e5269dd97a018402c61740f55a83f0aaa024e0d5840f3fbe92a28c6f1c266463e5b3fe80559ffd3f073f22b9ae89c57996257752ba5227a3884ad2427b4bc0162993643c41fa9b592be1b4107190db1baab7c40dba2cc1b88db98fd97c8f01686e134c5c228a2628e54663e276851930985524aed7df84d262c0ea8139baef5e4d480aa0f4c0dfc58d0295191041b1704239dd95410c5a677e29df5c4f8b79b01805b988bd6230708d8f334851f45c3237a08c836b0df178702ddcde508c282cf37adf81f8fbdc0c54ed6a290a3a770649841621770ee45e234cc08f0878bb3bd04d38889ddd279caea01c777d902ff1516a7b225410806a81b60ca753636611cd0b2158d8304a7cf7ec74a76e66983f250541ab63b4b1525e64506050a2dba6208f65860a60bd9aca31a115ae8303a42f84a4350e05df729236181b39640e3abe0461bcce675e6a2145bb6027d6cbd5c4f042d6fd9e23161ed838453b538f5d1f1612b86be5dab77bebb95e32961458706d19119cabb2149584c59f89f44882e333e619f9eb78ff1d9e9b97c3895c3033e46a036f71bf72de7720beed7bdcb758be7ffa80f3b5356c7b724f46e8c6cb8f7299ad29eb7eead7782af6a66f202ad04183686194e5acac66076afa479582b57ebec2eda64b8d22b81fdb7a4a2dccb0ab344cc37384833b9bccbcd07b76291b022f4bee6fb67ce04453e146c758025866385220b066c6136df9a6945903b0286af3c4d79d88c38420c83c1fd48a4f2f15ca8d2fc014dc35d1146138875ed79233e58216ad784101556a1371f7bc96f7e356311d992503b3b1fcae5879cae885a79c9779c7b5cb9d433db84437af8055503ddec605bf5bff2c23fe140c3130a7ed7488e93f2e1cea3df10dcd9459527e4e504a62ff8feb13b19f37585128b51fb5d35ccb3329d8785b1ffdf38df02b7df77df69c41952ff4876967233bcbf198f465ee31e0ac300661c7d332b6f93570d50e30c5873a2c8611da644cd8116468212b7dc88706f45ef53348fb0deca48cd11573d6c930eb52196c582619ee8547d302ba13e0ea1345aeeb7b9bee1c38bb382697402b6105d59ae02533bf9e8b99c6a7d5c52657fab743c50cccbc1df76b736d52559d6a309c4f2d4af0f71a2648e3e4a21efbfbd7ca90e31535749a32af2376532be75f6c9a2c3917eff3c33a8eb92daad50e923a20f14beb66feb89bb2a68cfd9c43e8d761c296e2a1c77ae45f4a76b3833f47681fb9fb4fcc946b2559e3fa80e2cb07d8b2cbcaadba0b56e6a2c603d5323f20d981b504d44b5445f961697e491ba2dc7b43361313d4d34f0daf092856c4312ab876af1e927d4263d13e138df14dc504fc9236cf0fe4ac5fc91ad215192866fc2fdfb527085b1df5dff0d27d2cc70d994cc4073adc4c4c66f405835c6f1458035470a0d8d785031bf6ca05ddfeb41e9c6b49ad7e4f46834d67e45857527474603aea0f5182583c5c28a2eedecbd8572e2bdcc04867c92c20260d1a92480a75bd8a38ee3984b60c16584a27110a4b50c6db94e2b131c528116818444a74f3ba3fec5b6e0212ed0fbbf9bf4d8314ae8011f738ddabbb068adfe7e02f08f0fbf090dce90b39056656bae2536b57d1487c130244e69cd52fb8fb649338147cd6516983b21f894c48a78daa8cbf0d77f1a2d4f7776ddb04a627c1bfad0d04cb5a78f95c58ada0188fb0307cc4cf2a84c85b835f9f343c0433bf2e3a890d499775372accbb12e5ca3af16844d1f4fdf61ba31edc42961f15a4992364f951cf9029ba12c898ccaf1abc0f80a7b2877e78dcb71b092cebb04f96b1803dc0477a0f413fb214162262d69a2edf8f0b70b39428733e4d8281f2862061fabfe85bc085485969424828c78db2fd1d38babe49322544325cc6fea7582c5abea9dbde1331b968c7fedcadaa69fa8bcd9e5803281c165c24297882ec3b21758d12b0b2dca2b3892207f6f29efad60bd6968998b989a67540d5db4a1ca28dacf3f56bda2b2c1cc0c51bfb9630352c820740a50fc9a0da75a0d536f02cd65a389329919393128268fc2c2c05da503e762e58772cbb777d1e203b06d835aef401df86827b21848b1ff2f28d2c70d7735ceec09d5cdf1d59a05a0c7f014689049d2d94583a1f4e8414e9795f95ead3acb32595e681ca8e718efa8cfa416402389b0b6837a45e42df81bfe57d6b11d696a606254077b25763c738bb9a1e6e554c11c3d76b601e75bc7fd2137e46218f112d6ee780627532797900c55efd42e592bc3c1dc81b456334b7e80ef117e280077f747e1be7be5c92cb3393cdfbe33a3e6f88420555fd36991edf758c5aff3346cdb9c3512bf5a2bacafb15124a184a3aa51f13f79da86b6168a2ba7331c31cebd9e21771859b5104b6ea9a67d2dbca06ddae1d9ba88fe8e866fc52009a0b43e6bf67184d802c1175f78ade910cfcbb8dac64c2ade3791e3bde831d83ac61cb3e64dce5ac3b5126392014129c45ad3375081f240f62cc54f2393ea286a87efe45b4cadf8a93882c0f080f5430db12ba62fb292a89ef1546cd3c24a90b0e13c248f44dc52d44c2088dfa9488a2e06dbb8810a2d42fa47ddb4e736e7775bb7ff4e279ecadfd763dba3010c544daefda8d4b6cc88f96ed69d56c715e090b369ce88cfa37d2d13fcc1f4949fe208b9371c32d82b94290ea556e16ef5fa6ceb36fd9a301bd4acc95e61b196292dc8107728add0c4ed70eae4c82d37e8471b834833dc9ab1732a067a43cbd24425b3f3eb0fe2165e5da40ee0d28245e28bc0981eb787e1b9e1e2ad826b996c0082a4b63bd9ffb98c11240c9abd27c6132e60c3be3e71c5624abcaf700a6131df3fc93d67fca9897308ac34fdf698bc984b11e279f13802f73d6b88ae5e72cb7829a622be482c806392c7bb12a40d8bf759b9ba6db951fc4eac0758816613f41b96ec8aeca7372e53037cb9641513268a6f40a43e6474dd9b53fdb053f92a70340356e00410f42a9d84090a0da62ed987abf44b9e3522b66094b18ef2ffa905cc6c40f2901622c9ed61002a00e193e62b45888cdaab4d03d350ed4ad696c3ec5da60eab6fe7e15b694040c0d71462dd8d6f515156a2d63ba71040fdccb4e41d6c24dc2a177b9230fa295c106c652908c889163ebf234e1bc719b3f9033c60952f14045eb54f2ea4415ecd7602e95b3a7db72d9a65c16e4be6ec2b7d48cae2d67062c7637e3ebba12b7d6d456dde406e806dcf7178b4d9dec2d60fe9781038b67474bfe86412eb52ae22fe52d3df36dd6b7ba994b6de2a5226b5b4f61021f7a57552b52737edad98b6d2c1ac157954f698b46ec148bf5c28a478911eed848ab4679a9adba7cf2a202e83c6915291aa7fff8ce82f6907b8f824f7d7bd27f3af0a69c958e9dcb8c336413ea7c96e549969347cb4979bcd2822b49e85d3c0e8590d0012c6361815e0cb0b0eebb5d2239d8eb9280d846f1209c118751b01e381ad8c03662996d1149d59d275ce559981fd331c9aecc7c9722590d9db8441609428ede4789b79e489d2310ffa1fe5057dee0ee7174b9728e0c5821886430e086b80059cd78c2261cdca1279899c5c2725dd0bc98f51b9a686fb6e026b4374238002eed022c47c2c84c81c968b65ea6320564d2816461e391c76b4bd25e203aaf56aaea88a8d5462f5533fbe7fb4c71902c54eeef8b86cf0ad21519079c42ef186d7b3925e45dfceb71dd211fe1f2a20dac28a0471badd99f3a9190bf2617a06b3b60df2fc1751c7cba35f0b571c5d2f9e16235afd78361e8d4de62616488c3e62130fbed876d26f39dc7a2820bc704c60a95b4802dd5e40cc68fbe98d460e25b8198c8c4aad07b9576bd78c46044f83aaa74e0fa191235edd76e970e06c1272db5cdcd8687a2e9b0f69951145a63af59af7d04a889d1d32472ad49ff56a10341d2c451e683f4d0a42445eb3834543ac68439bb27944f64e2c1353ae906d65e39ac293f118d36b85f6b222b45d81ff084acb1562cb916844345e24679f932033c56fa1aa53a8bc67a1f16aba669a4289f7eebe313bc494d2f0650eb0ca58a5b114044899ef211b24bc12b62f37ac4933c794395194d70803cf285fb3ec6c80dae9b56e6980fd382cd735f14714111649b44955d45cb974ae50d26b40bdf18cfe93b42b2fb7fed64f863098fcad0905eb970ced6cdbb2226c90ff7c09acfed2965fba80d489aa91d0bf6a519a3c9c0e75facf4ebe10d6559c1e00b7f19356faeb3f4fdc29ae08e9d21c4cfbfce2161e596869e78e39712468e9c5f124522aa39a08e7db20f5965c478e1d20a8c062e1f9a94a9add000e89b3e522afcd7ab6ae238dfd6128d65ced1675d6f748ef3907b03825902c94945325872b0878e5452c568c986595b8975ecce930e20a1f32b98ffdc9fb04769d5d8adc42101cd4180a6c2ab28bd2be1e8d794914d3b10ad382ea48f0f8300584fe6a1fe6edfd4488d21574902062d55ee5ee3a2ad467ce1ee95150efd1d733d253fcf4e8b1345542cc96f64a14d5748eab08e332e21e62005fde3b414b71f7775412753b1e04fad74f60e444994808eeb773dd63ac8da170893ba6244cbbf7999c4c5af28cfb1a7897789a8ab4eac0a87830d326056b3d9d40c1e2297d28bf4150879561b1eddb69098d8d39491fd97ad002fd32c490fdfa8df18ebd4aafbc8c2211591a25d4e1f336fc2502d4bdae3ad8295d8819eaebfa3fe1f740c2607597b1f592378944fd54c336a530bae5a0dcc84f90ea24efd3b0cd51f025cf8606d5ec38f4b9dbad4e6b9e376aeda0574274a618a9c3826fbd4a2aef3058ad3cade38bd7b12ba9964ced3aec1aaf3983a00168219df8b27a67bfa5b9a103f54e447fac784ca9d0ccf6cbf9d46f16b09fee0dc8af9bc9345bfcaf60eeed83a4e50d34c350196b6a2025e52c2893f54be3c194452fa6a73dcfc168048c2172bd6e22ceed920dfe1bd51b76cf890e3f9cc029b3f11232b893487add7a3dcfe470921e57f0987a7138978c59f3d5c8bbc89488cbfcd4e914a770679421a2b09c60818feb3a3f7fd3bc34497f9f16c29ea7a397b788a453b0b2828540a327a70b5aa2c688a67799b0d590c5e5dc17b505f255b7e369be5bb9fa24f31804329c0c6b3036e7bd12ad5c2e36d0d8144e4979be3a757c542839e308b6a3b5e59edc310dadf5f2dbbba941dd940ce4d72dd64994f25e72e21857307dd0d686da0c7c6cbc3082dd3067a8c22056fb9cd5e48efac497bc3d0e6f19c5875e358fe39c82c4916c06a441d4b870675200a190712701b5ead2420f65d15f4849024e46512dd739173dac19b125c7f53924c0c931c5bc914df7de1312261af259d67f344d63ee3548661f840ae2e775a082039be8feae024a1f723ebaa1b2462c5063b03d90492e0ea4c06f8d3073e9299be0e800689699ca5d19b71d57640b5a66520a3d6a59f595d88da052086a665428b88d69a33253cc0a80d4ed45fc019ac1a74a9ecedb934a873511194deeeb336afe61236632e388f4b1cda388a17adf0f4113c7092cdf4875280584fc040571e27fa313dce26501fa1553d7ee27ed818a6a753c545cf8ccf298b91599741192f4e9679d6c8bc6ef2538f056958006fa8491edaabf4dac0e59892d16c9acb32194c1df9b1b712b4ca96536323471831ab51626126e2047ea10a407b6e8a40f52c961ce041a9c33345c2550168cc21cb2a5ecf3bf2bfefda61336d2eaa0e9ea29c6914e38f784f5c5d7d3fdf08d039f87426b0f0217bc8dc203a646e1158bb43189f6d2eb3f892c1864b7239a761292b7f1545031d8580f739b0a9b38adfc6a00f615a1e5934817359e5025b145be670d6632428bfc5dd754b4922cbc82f8913e3ab191e4416c569531b394a768089d19372f1bf0724099515a2144015d24d7303ef1e34a1705c7c9e07b9fedfe1d04be138489e079d79d298832aa2266dd883de91afece00aa7705ed235423317371e39225aceb3a6d8fdc7e4c268ab29fe7c9ad5a9e9004fafb44677223bcc7b44843753a9d144f429e63de2f08043edbfe5401ae539b9c892171230573d1839bda7f7eb59477d38bf9bbd54eadb34fb1b7ba4030252558b328b4f613a62972b60b55043552a831af0f5e46e6092e06c11780c342df58c3ea090c7c68faf9f1eb97078e477bb231f2823bd3b9e3394464286a253072bf1e22e5994128f077d4e8ec90d5806388a9d5410a0d71d3aaf3c0eb4751dccf556a95891e8e1808c16ec72d8daa4ad35095380d92ac8978fbb1ab1a1834f6a295a993c43551e57e94afbeda413a6d417905c2572f10e064b483b38668256b73bdafbdb5c1bcf3c0846e076481453722d7cc49eae12b50f83e0ba0d907ee150ec87b959e018d8a4b026618c3827275e77c67d7ca3436c14e5225f079e31fedcaa50cf569bcbad7ece7018ee5f9ae96c4a09e2ee943cc921e6d62c36bc2dcf3c94dba6dc239d3e73e7ca1ad5d205c83638fa708919349625e5dbd1a2933fa58115c087c24fbd4966b11b1f699a3e4e9c9086a2db1b388ff36ee2d12db19b835229eee8cbdd552f25f2a7a3d04345623ef288078643604f93a6b4baeda2aad142c39675279440c64e9d3850c709d60e3f96d6a4324438df866d72f25812d90030e19c16a098b3400b5c178ca5ddc6470b963128eb201f69bb170fe33f008c79eb5c79bf7a58e78366c665878e18e3c0fbe56125e056c1887279b6c8d7696074e0754f60be23bb785ef2fb0711c64de91605452cd04c8bb66f4e11351747a78a94327fa676cbffb5013363cb1eb82284d933cf78cabb167abb251827b0638fc47c667c06dc18b4f55d1a2ead29463e11171cba532cdf6bf81faf29a21fac65ce36d2b71d0583e3d1e7f478589cbbc6404a6b22136ba40aa714855b035ca12bbacbf66b962f66c5c7310cebc7212f1c5e1fed6c85a93742d2c7b87db7e3a7a00fb7d8c32569a7879b174f0145eeabcc154edf5b1125f57e9b758c58f20bb7ae73c490bbddb63a239a5f68aa400713cfc5525f8d5ce08e7460d699ecc4bf09fe4aceea0634f8ef053d8d65d8020df2778146c698ac9006fcbd8015c9111bab854bd15098dd9a97f490fdba6f043c0640b884616867489cc5780335c0307d5fda2584feda67f01e5dcc5f666c174c989223cfdbc5571e904beb3726050e713a88a9c24a35fbe68f0ddfd1e251589006a7c5eff23c07485248b8caa8b1cb6825f52dddbb6b2aed8afa98074c59750c43d6fe30b3cbea19e86ddc974b0d2e2ad33655afdc5cfa5faa31480901b56d21ea3cbe146903950ca1be789805595a7630465b7b85b9ae11ce62f689c382e9c653d421d7fc1ffaba72ea43fbb744675b86933bfc82142ae5de7f5e253cdf5c95cba55f2008c2e2daf7fb75f358ca4cb17ed28ff3fcf463a047cf312409834e2fa7601520be2723a597493fb54a801f4a91705926c357d5e574e073046ab86ab368e79a18e70ef9a75e08a20441c8b859cdd73b650acda10675353e7bf547b1744a0e45598214e9afc638d770a62853bdd50f28d24d7690f68da911cfb4c03555d065ec39b3258c19dc14456a69cc7c7499ca362bda89b3f3e2e67a48b3444879d5c134452ea5601ae9cc7b0432577fdb8a6dd76e844a3b140d1ae066ab2aae0189b1ed0032a36b010f39b392dd44c28eadb81c4f1815ac2f3e08032b006a0e4304e6faed94aaac514dc5b9df944d7eeb94e5074283e2a645fc53261ac9ea515cf8e2bcd81f163aacbd6551d3484307f33d264853cc8c795f60ef6074296038ff154c1a3b06edb04cf9d83dd03c29122e9dfd0264e5d4cb4fc299a4059a1f4d2a71b0e0bf9bd92c517714faab6af7515d923cf11df49a75723f207139ec1a36c6d4632079c00fcfaa1e07057f82f46c4e6be8570a57858f5df9f4cfbb24b6c47a549bb18e24ea52c02bc040556a5c652189980940f463f85620cbdb0714f709e70bea0e35d5c6a15f950ff35b6d130958b36874c364849b1cfdf72645a33146b0e0c084419b4036ea023cc60329745d14c1f6d9c222989d2b326d6443221dc8c443dde7b9c0e04276f460378ac0888aea94b28b25e0e99bddcdb420d59536331069c8905fbe2b89754342c15da910de291237d1a488a037119787b4f6af9dd0e5c443cf73b9c3166495e6e3c4dae7c741fffd2fcdfac9cb2c8d22a805fd8679e8ad38f532b5d286987287d793dac314a48ad07e20fa40a4cc4b04cb1cf0e308d1e83b4c73d134dc2fc6d2356f606b0288cd4f7ea0d853677be884f20584fb44fce4124fd3783d98e08ee3d1411493dff5544708dfda33c9d307c172a3922a1e5287b72d0ae26aa9dc1863912d7e44d70c87cee09f390c352ad7b9421909f35ab0cac4f822e163ff0402f7de9bad7ffd9f08e38c751ac925f8a1405b74ad48e23f1cb24e6b0037d75690fd477d0754fdbefb89008804b9f2b4ffee18214290ff98b27d79e88fd9c86e47b00d5a78ab10fff21c25c38885c633879a0b057e6db4a3ae1a9efe56bdafccd1e8edd892bb64724653109df9298c62fe625839ee5b26bd9ba5ce89deb644027519729178aed6a666c4b19cba24863b197809b2752520293fe78ac88284e105cb13e77e99c421c46629b616bd557703233178218f2ff0f320304c84b7451332ded852c9d97b6138c87ea137e675b0e9e598283b697b27490962b75d6244e674bfc448d47efff39bc346c1f8bcb17a68714070a0f645b1f6a3b1a687097ec800dda69a1b8d7ad4bab03705ec6d42aedd1d03c8352dabcc2ed8946d543f8fc543b8e6979d4da9b8734e9ec0db3a04c03a9ea26d0a9b29716ee53a1af30916837bf7914e3cc355cfc57178dd96e668f427442eeed6ccad4163b6d647919171bf3b9297c623a6c859328ee66991f25637cfad7f948b7f417c2286dee01a5e6f03692f06163f3837b801b48cf27ee2faa2a4153081505129514ee87b2d61232b71f49175114a0dd711b466e1873977db2e4152a2ca1dc1aff1821327f7adc2838f0b66ffaa1874192e45499f634074884c20496bfb743ef57807732c3aaa243d209f1910d5048bcd1af5e651f02ff57a290b9be116d76b162a0f302a83898c74f764486c4e06f211c590041b01d1c2c0c31be489c9042bd8c4f7d57c3fa9b14b745eed04909813fd74aa0e9c71626466d229a9b190207aba6a9990a69b558d80d6986b54e8d48401ca9022396e0db7113836e1a6d49fcb289c513e7ac65b911d1794bae628e52fa6425f47844143d39c133feeaf1c2b808d7e2f40016c8eef23d5cbaa6d450c69fd953527c33c0d6644a2253cb090d23b54492dd0400bbec33b6d08d0a8b0f5dce708e122befb64aaa694408740e890331049bc9cc58eed84e97a66e380bde69db5780998b6ee9512205f3d78d6ee8c1890dd2c0f17cc6dd3ef81ead84a28b392bfadb7c69af11a5a0ac0fead2aac6f79001d43cc0c7fce1ded40a143114ae82e07538091060013b090567e56604509659afaff5130074a44e989a52b237c3da1dcc4c8d30a83873df1ab1b85a68f7172df190673d28860d888d48d0fc7e4575701a775430893d816462647516a22a4f91214cf5fa2e02528297ecf9d9dc95580925448b2af3282f45c3a475742a61941ab1a675c9f4b49d0b0d8adf32a2fd65a55be2b920b1cdbca5cb24c289c8c32c8d227ba5962685d0fcfce6ad38e21981f0e125b304f3b0c7eceec036192e19e80a4a031aeb529e05dddd1f45513a18800f7d15949544e6e8b7c4f7e768582d3cb8cc6d1ed895b280125808326d8e886f704b8acb9e70ec256de5bb192d48166713d28286c0edc05311096b9519cac0e1114e4e7c22f379c2560babe0e231b48e07119d20a7674397c6b398144bde60a11fd1c3e9f53104cc94f6829fef1263a734331619dbc2a7258e7c6c1965d88f7300b3b1df7fe9ba8851bf9c8d9549aefead01b2d253a864010d283657ee09e4f7fe1e2d9983936067e9a24fe6d277bda962b01c48bd5376288b7866e99a4d21bb85357e813bf4558a6c4a474765c67589dc4b8dff67f30414f14d96453f52dae3698a24408ee9dfe190e7d118200d630bde4f040362f65b1911705e65842fc172e18ad8d1af26c485581ab5539aab544d6f3ab62f9d1d93560a887c51c371e3f90aaa9c86d2d35c1a61a038f54f7adb092beaccb6c385c7da61dfa38c64ff1d34a2ab78c8e15762c5cd4c684bab61318b0d32ac3308de167b40fbefb33e57c653daf452a2ae9bdcd67dc701aa1c0283cd0ab690049918c8e0c471a9b353cc11f9ae1b457ab05df76015e08da6871326a9a2b092604ba1aa8604ecf5ee1ed4cd2b3c9fdd0b40f15a2ceafaad6bfb9b0a1885edc7c9d7da3ec78acf423b9d2ba85847951c8c31cb0f7470b513361ccdc83819a4f14531af7cf7c4ac7ed5bab048a040858f3dba3b90f5ea9dc566d20b775c8e6755e40cb89dc397e8b5af9529c0fa752a1621f56cd8de67f88f87c2428bd52968ae844e508bb696883f14d8d1191b5ec52435034cd0720633be498c48d25075d7d0c6c8d4c1adcfe63685bf59dc772d9d613b75c69cef271d25a3efac5d624f3fd4af55c769b05bf8411ce9a0980a418c0142a57638cff8b48d008fcdaa137eba5e9935f4e48c70181e723dc1e8cd78ef5224d6dc42b10c37e9891a3821304abb68715fb602a29e691b401f64d313f25e3ac22be62b4fdf3a20d91563594344a6ee419132b59ff1ffe854fa03edac4f4420a657ed61d7b2349366a4766f0c2371c1060be79254ecd7164585b15182f31db61986fc6e0dff68082e21521dea424cd5e39198bc65e1fe67ad1649d5d39367399aacb9b8f951cddd980d7aa0467fe336954cb9161768498ba627f58699f78e6dbad172166b91ee63621c8bf8dd3ed4768c7fad7da7c659020a838993279eb7765c92252df583fdbf2a54d57e561b2f3e735ec30bc480c283ddb32059584c0d97178f3e6dbd70b7d53857c6cbc4822636e11a89c7d949cd670c4dcdf424e82557b9f3b9f66726273c6bcef84bb98aaa880b4a527a540c77af5bacebc1c4b12d1e921040cc552bec017669a4d3198db52bb91ed53cc031a5c2b7313429e31150dd9ef2a0e5b53f85159018014dde3a1eb174364f4b7ac8cceafc22829687c167ba215379b027ab4e69250a884a072046d81c6510065d2fc47e7bca46b48a5e80f3dbd3ed5b931fd052b80458dcae44c1502d0d31848739fcfc17cc0fed87c5fff14537f252e394276fc47f7dac7dc5008e3579899c84beee0aa98e0a98e6e05a2b9859ce6208138b5f888a11b9d945a3054daa6b87893660eb9f1c3647f18c2318fd2de2c4a80f3ea87ef2e10600e4c081389ba2397a620abc48160491d885df7790f472760e5c9642083247b23aefac829d736d727f40a34d30cd7c6ecf1069e1b865a345de5fd100d8263d47ae7aa617cc4713416a4909f915ccdd015684332f2fde25fc91fc8487ad4537d54c68398e39b035873dd7cd947ef0d796ca19d211ce539e2137912f3cac09997baa6362e026057a6413ce63595efa513209ea8fe55c2a6b896b392982ad8afe0bf2b4cf20b75949777c8740257ca4ccc958279e314988950e651f047587ece42f4cd8972f214801aa7af9417dbdb27efc2ed98832273fb9f141443e5645e162f15998b8f3f6e8de14f386045fe1030a713b97f5cc569f187d4df35d56b80ce3471311010aac428bc834ec4e0ae3d27dcc9159cee97886445637a131470e708000fbc4b216d623ebcac3f088c2e2af8e852c81a31a74c42340905a4902a04850c5dcebe65c31fb52bda5ec7037b0a3c895a2bc6e81990f0d788e78b3c090f28f260b4b5e2f3212fcc2bd048dfc43627986398aeb52a13b84e951ea744f33769e8cf67b97569d64ca613f844d6aa0fd5a330c9569f814f6db520106a02fe05717517ec868261978544f20c62a106ac4efb3535ddb292e95f352e8568f04e5b6ce79d5fe7934668ee09aa19ee12a0b63c4acf36b10266d2db2f661036a5f300f8da96ec7250b42fa51ca0776fce5d63d3cd62aea52c00587eb202f6c447a33e03169b5e01f0c9c4ba0e58f78e4e17a47fa1e698cb96c085f971c6d849d9b359c6dada52f0516135c6d7ebbff3bf235fb8193802dd5d7ed1719b1b52018d2348fb077ee932695ec39c6d0c4e6da989726ea9d74d10ba094bc8822cd1ee19065097ed921a35c631d24309068e92c356e18198085e32101142ec8076ca4f152371063a84c539980826bef0663f4aa949e182598bdb5e2b4a02cdb51f9875acbe273c105711014366ce484b292b5994ffd1ebbfa3b5066060a4a84f2d8d5cd11831f03e5e459895d13da2b05d2ee38b0b13863dba5352b749090c1ece44b0e297f44ee6666fe6ab1e3868b6f43d6610baca9076b628dc5a1d5c4f2fdaba9e8bd60588b24575e703749f880ee658cfce72d6f797b8a10aa2c48d83b9603c2b79eb53d57dfc4d6f76d67763513124985801c909bc98122fe8a219d16f146952989a69242533a91b7358f0de9cf9a1d8e97a5d066d610992824ab17553a01ea5562cb6249fc5704eab1e43c3dc860eda0f20206f331a31e1cd01d4833750f15dc222ca93c92165680e4eb2cd1590a5b4659fd4af584054ef9e276af23550695e98bc1e28da6c855f4c654485abc45ade777c303e5eba24c33afcada7d512762d9dbb211d9428814fdf725f23acbd77c2ebc81a1be38861c05de45c621cc47c9212619da2aa5f15e021046ab7fc2d6f5a1e0868f67753222276146740c6ae72d00a3951e7debc9090a8fd43fe9985e857cd7e5ef00308ec81e45163e5768ef5e36e2a3e081272d7bec935f212edf2225126b12cf3b50fc3efa6461bffb09fdc551ed9e2b70d46460d90115681df9da4525a7bd5128b29b4b6669223af172e3510ef668bef799d1415c1ccceff5f3ea0538e58debe365e3a642714947089b53373d50224104844b5bd3b1d4cf2518e965febc4e9d91ab75edc301ed50ead77529f53854266c8a916acfa88a6bf124511429ae1c99cd03f5f006efb9d8dcc280039bce31f6a90b070da7e40b2054e8b28b343b6d7dc586be20072c097d3a3545160b66e490519fcd9c0d24029c539cf780b7530885d114f12456104008a46487b3ae5a79b4a12755cb03f64a3f6f188cd04a93d986960301922a5eb8b2d5f072bfed7752cc89d2c7015ab60b90e881b8f19e76a76806c528a2d97a75cfc30c0f35596278e482f368c326b80c8901372d7a56976cc22104721a014312cf2ed5153eb925e0039c63c039112ebf52c703dd59cf470d12cdb0b57ff736b01005d4a34c6593d1901aaf5f48a5935e6de4e23cf5033c074ffc5bf60a2051a3adbe4457a5eaf8c519c46fd2332dcbcb3e48da89b245fc873c04de50c6975dcf68e719f0f2c69a7b5f262ce70e1adce2ca11495da146eb460e134bf91a4f4397c1ab5660f8c6f4d20059aadfc7864f747722488fba44f6746ffd4870e994a936eafce0073bae7b85b96e9e48ca20b3e9a341babf1afdac4cca4a8951d9f2be92ba6eefc68721041c04a2562997cb8510e7efd9a264b86448577eb916dc2bf0df83118049563f1ceffda7db8c76bcf7d5e308c5c1d22226e907d8ae159926691a0413633bbdee44c6f715e6b8b92acb54069e348373e4719127b90dc8dfd16356d3b2b71873351320c163eb35ac4ee4087cb8dbd0d47711b8ba0850525d5cb00804840856a770cbcc3f744c0fa19d571bca02264906acf2a195d4091b69292ac2681cd6210d6919799e75739da0f994b3daf96511e8346fd9588bf6a55b33df54337d45d58a5e6221b7d64a9474bbda0817966a831840c6e3211583a9e9d2d049cf80f5e073fc8292d8f6d6e90e30f5a713678571464c2f99032f7483a528acd7a93b21c314d3958701b41b1475a8aad40f9013caecc1e3d2f5f5719580d34a2e7364273c190899924200acea6760f25a14258a10930f08923068594caed656825659e14202682bb834e7adb7fe31792ba6abbd4737a329ec869329e633f0a3b3e2540bfac69219d08a87af69cffe1fbbb2dc22a7a99134d1ff8f48f5857af4be29d5b50060d7d49e33aabde662ea1dccef3703e3724f34b24bc6b389d673d5dc38ceb58ec9c8ae76778fc3cb81da2ef2e27ed6fefe2b27399769babf359e4793d72496aa137811b193dadf94ab8b0c61e1250f56a1246d8d95307039daf773b4a22855b928084ef227172207366ca24412a93c8b8e9268ac187c0e951de70ac6ede0cf23c65053f084b5b4cd6c36ee2ef4d8c4207725d6f14c4d16d92c19205880861051a54ca83c2d00688665c1789728887b4b696d501c3c009ed74885443105482131ab2cdd433da53c19ae90339363bd232743c13b673b2d323a440eafdecb540a048ce8a289c9dda8e02a6c2d541e0aa171137a8eae79ef9ec168cc87e77a65d8e9ce626f65f1c5cc161ec97487983845b38867950e20f18a4560d5cf8da385e9588b2f4deec198d1064899d9a917f98fbd78f94db02b0c6b422f591da51d5c65b4fef8caff005a55428b295dbc0f79cb642cbfff02c3d5a9db381624770acdc5f91be2742267e4756af8f758cf5c78263027e468c2b00c8ad4eb531ab844f712f919546386eb170ed4914a88acc4c11488327b07cd61087e818e6fbf3035a3d2948d5f63fb0023d5a89c964a115980b9ef68abc122020130e043206dc6915fa4382faec64c09a7ef71bc58214b46b1df930e7c03acd5bbf71c6d6aa0b6e684aa0fe09a420b79c2ca1fd5b0e21d35edaae35d3461d32fcbf655557570dcb1b5cde76871db932808ad9f8b83b3a20240877fdffe56c4b8f32aa1a26cb6c0fb9e2e7ed29a640f3cdcc5745e68be907909671bb5a1eeb1d5d27dec8753d2e7b3e3ad262c3767a5daf04093fa2dd4fd134553597ee708d57642e8abe795ff7348f1186a1054974da4a03febaa7378b91cdf50ae83f7e449fc77396b74278d71a4c94120bd3bb85671d1dd3a7529e779877cc0f3940e90f97bd23744193006f8de737f60cedb89cb0b266622c6f6df916636f4db642788b1e21a9a76213a3e4ad9873cc53d39cea3fc7cb965a113f959da0686edfffd679ca35b81113583a89e71530cb084acda4652a99b3664cd02596c40e20bc93bee53d2437b44e6548b7ac1bc3c86c98f7de450de9e23089c888b93e07c10c09d6c147bc7bb683d8ff171062d20da96f059583bce638114f757faf86405a1d0d85d9db207a7dce7e3126c96f2a3e61171e75aa275abe8e614fd694bde9fe85bafa6f7a9ee4c316ea945da4fddbd6d579c256a429ad3918c8b86ba31e09fe9ee9af6f25bf3e38c7256177d64091a4699c88ec8aa798b4d79abd4d65e54ef2777e09ca6040c123ed4058dd11a8442a8df83dc56f68c22816258570008cf32ac5e87bc31ed4f2e93970df0ed97f97b0b27d8458b6f97c7748dd447a2df637deb5c12827b1876e78ad3c2bf5c07b5a1a4adc16558addcf50e4de24b4f63352392aa3f7876685c609c76b8a6a993b4718a9ef6a465783a815ecb54dfc036c1300b919685876bc0b55c571c880254d7d0d36107fb68f1e832b299e656ad6145e5eb669acaf4759e29c5c26b6e288911e869a79b676f164cca377390f5cefde7d470b0d28f49e17c71f2e06425a58cf8464fbba88cf27b1f79017e1f1e76e765f21c394a5473a0334bf031af20a9b59200eb39a0ef5870f79f6db94a2724f7702e4efa17c22182258387c94933e44b9caf2aaf98565798ae8ca80203e03198f1784151f8df691577e0edd3d97a28f845d077a753698f7746fb153763302857423bbaded2da54c29c99e09af094809a11532d296521aa452b238aa11288ecc5bb06b4dc461472e13f6d28d08db4e4e62911dedac38aa11eae378424b2df64d892a2d365012fd44aa97017ba89b822cd0c788919a48bf057dbad6445aa889f0505f4ac391f6702b375561836958bf537f0b7511382415da345090acb142855acc518d303f478564aec0be3552d33a4bc354778a453e77a456c2dcfefea2c3654316a13848213cabcca1ef6394e280707682b44a8b4139399f05dbc788caccdeb2563f32047eafc857e4e3401a0f90b063674415858dc55603f858203bf9fcbc6cc5603ab6fa7e765a857de4d34e1e6ba1165aea980d6d6bf574b58a15e0a3947b695fa70bf0b14066eab2fa26b24f410f90b0144886c06fc146d261d9a78ac27e2a2eb6fe1179e49301dbc93b8ccfdc7f9c4a8b426e0dfb29075b91b89ea1fccb5448d6f0cb1a063beb30cf003a23188084cf2be1db5121f170622c900239cc33e1039b85709f0c81658d4c5318a7300208132687a500727272049085469349ea72eb82d3a58b0058e208400002c0b952542443db52db12dbb20587650c07072766252888c82723e4b11e658aeecd67edcb20a1503248b7df8bb1bc89c56275559fe220457eefe6ab21151dfea1b4fb93a2a948d8e052da101186f48afe903ef2d89c01290e92081629849f821448d6f0af401a44851cc62f03d222a747b2863f0552244a73981461a43b5c7e16e54189cbef2de09be0b4e03b8c014d84dfb3f92688ba42544836f08408091224488d035c0ee3f7947c4182d4d4d400010204842f860fbed50a846f0503cf21637d1f01018125102040ea0a25457ed5e5f740f858a07518d3b09335200f084990b0a38d0aa44732047e144869348b8a840dae8dace1f724f04d6f025f1882b50a79cc76d1fba875830d34d040039a1e1f528bfd3d542334ac09cbe3266bfa3d08b2633bddfeb18fda094cdf3cf54d98be199dd0a3cb7f933c92307165b043476b4666042647620c6065ac958ac9e7a598a03a261c934a2bcdf4d0c319af0f00245bb46951c5a6c5d019322bf0a0a6850540e1d0185ace78430b1b406fac402645a53431598e136adb1649dd32c98d2b6e0c3df589518244e5ca2422b4b8421bfc58a9e5c9cb1df9e727e8b2ac55e99894bd517447fe01fa7943884a4b05c21856fe58bf3b417bbda942a2224185444ab1364bba4add097e9755482400a4b0321cb9917bda7d83dfd1faa6432eea42170f256c8f99ed5785b11d1a69919f0716ebad66d67bd197563051634a9358a863320c2079468c25e327a1cbcf59b6c8f8f98abe915ae050ba2c73f9798b95cbcf377ecafdc071746961aa5c593f8e8b1a1212e2e7226642bb614a1048b8a1b4838ca3f08025881bbc40630635a490f1bb6a0e2bb968c3e98e4eeb58e73441960528f6320db2869f659042f8c72e0e2bfc73a5631c4715ee9fb428c324dd91853a36651cc676f9a8034df6f28face157c96147166a7f6e3e71ea40d3a51d34551e6769718c7217d032e9b06ed0bf05104a8bf2bf2b3dc64048187f11aef19db0cc420c14be2a05768c729b81a8e2b09225e529369dae5863cb1d1b294bdf8c7ee4470d7499c633372e7fd73ad632a9658d2c97bf696bcc2e78a5163596ae1a5b2e07576a49c304b5cbaa2fec93a727548c12242428947d6eab12c03f8dd43db4b0a345ba1d7e5d1c7674d2ba2ee61a248c7f87db0f43348177642a4e4bf05314b3cb8cc565a6226bf86dcd8e8dd437fc4c85a938ff5099215dfe46e2ef2c57f0f796d17aadd2bc5867c3b0a36dd51fa2fd9c4e709c37356bd75951b3c714d851c8f5d69d3ca706680d35e077da70d902a5fbce470560080f41cda92a01154e9083d273cb147e45ab0b3bb67eb4bcdddfd44d57a73d54d8751ebb1ce65c382e99cffde4c0ee5d5ee81c8e2e54375f5dec28bfb8feb504ce89049b4b398e8342bb0b530d8e3ce3a22727ee8198986a4db624ee391147ca6efe06e7770598638e307505bf959b1c09fcfd19b0b9345481bf5f267548d05929d779caa361a2d7a8ddacdcec5214f5fdf079def779dee7a15034ae968ba645b344ab86ffe15c87ba59b1accc35553f67d5ef53b15275a5819eab158dabe5a269d134d1fa2ee8474fa7dccd3e8a32023676e8628a38d650410f4f5d8c9ee8e2ca1618fc10848d230a22203250d014c40c3140038a1d4c587889c1d0103416786088111b9caf45e34f5aec64777707817e50619c8ec5f9a68ec5f9ba0ee88fef3e576bbecb46b45fe7eaaccb7edd4c4d7c1c1bd7fc3a203fbe0ec80ffe3afb75407ebc6b4a59535dad1f345fe7b25ff776eac04307aae44a2de295cfd2ddbddd5dd2d9b2eceedfd76919ad9bcd41c87fb2260810e93e650d08f4830ae344ee9dceca551b0f52a89d23196c61f9690736032f00e049f971a0aaae16f7e3eb8e66485327a5f3a7f410a7453904e4a1c3b7922cbffb88f10dee28a594d267643468cd7434ad97943abe14960c5a2e570652f6e0b1e3e5c2d395effeaa2a2cbff7701dd7fd2525cdc72307cb3fabbbbb27913552da663a0d3e5a39aeca501f1bb8bbcf18fb3eec0f59334350babbfb5c4929a5f41e6234165a455923bffbc34b49d901ca83ee8e524a29fde8883f9f3fba7b13299f3e9e5509c257a4bac2f2fb073fa6bb3b9d14846f0716cb3f3f5933e99cd346d650576b02f95a37cb3f479c1416951596bf7e0a0b27de6e06a9692141d8b3f97a80b1038bd3b79135f285b8bbcdea5582cdf5afd7c391857b899450824e2dbc0be6282811d45a4b6b6e3783a54f432197fe941d4a5a178a5b29cf726bda99f22a87eae4083cd17e5f8bd27d04695b3e79d2d5ab841a8e0eb87270902b7ecdef31d9920bcbdfbef290654dcd952d9a2a9ca5585fbaec3eb83f8478fff77fd737b0dbf58d902bdfabab233cc9ed9356ee4b6a9a39715ae3bcff381efbc7799cfffe61529c1f6237b549299d5f501f9c5ca796547b6bad0c636dcdd66ccdd66ccd5a317efcec3edb72d52e06e701082080e8e00707727cdf17f4b5a44d262de9420e97881e5bc2c42432894ce20fd394302610400031a77ff1b1c19c73d6c985093a468ec830b49872f2f4e992a7374d1419e810a2959b31d877b95a09779fae2aab0c379d3dea93ce784627bb8d280ab91caa2c938241099033e433d2ba0208109828aaa0503da17242455335a15a71b162d95a2bd7a1501d57a5503161f9554bc8cc8031d3aab5725dc7552d2d1d5b74ecf8b223832f2a249512aa24545854472a2454235019a9aea88e5019d18107b556ae43a13aae4ae18138271262111f80604555a4225211a11ac2f2ab866c42f8124200be046046a97281b346ec26298dae9a20023b475c2e97cb550023e24ff91fb3fb6ccbe5ce4cdd99293bad7405b5a98328aa00030c5a393f819215212b4357f8d840c987289494e0c2041d2347a6920f2ca594ac544306614c48e4ad2fe912bd5125aab44495fa86defa8609f0f3328e001c953a5c951d9475bde84441be25481d998373fb77648e9b4182db210bf229ff380c88abb4e00eb35eab75d72665aa4670d59dc2d7fc2832ee3d7ccd30890fcc3f8a4c3a8c670ef3f71ec761fedf63c453bffb1ea31e239ed473df63c4837a2fec111de68fe2e91e15f674610f17f6a442a7b1b3357cd14f71e18b862f08708f7a9efaf569c875e14e8b9ec4618e1ac272e8246cd2a2ca0496dd59c8dbf8a204424d3a36655f90c0c62cd92df1180d5f49ba7f2d40caba7fa1d0c4a5c396806658295b69f101a338b00ccd66b2eeb937327a29807ef73cf4bbb0c7687e0f7d2eece95c0c3b2629a33f7614842fac9449198e93d1184f4001349bc95043580f39549940e98ccf49133ada74916cc3a5d038d6d6e0ac2928e149d2e275b9e5fcfebc35b461c2d2d1a60ca72b35c9596848489c058926635c2424e47c637d7bf529f30f2b54e2abb0eb54351cadfd4254387e2a1c45251eeb6ee2ed469929e9a7054859ca73798c85bcc8c35668fb934d841f05e2388cbf03bb28b56b0c925b342c362cbfaa0ceb02cbeb28ecf8c960c7cfff32ad42aba8a6b0a3bd723a08525a2b57074c6b8665c96e1c240dc73187c275752dca9964f93d832af6eb54665813bad8141ea94529dfbb4b5f47ce29e59c724e393d1f2a3cf9a39b1ea324092ec2ba92638e6b2c929ab8662550d0a60b0876828f640ecef5679acc99d7190cd6e2fa3315d7dfabdf08fc347f3fba343ef21b252dbabc61296fea4bc9451aecdebac7b1f04a71ff4a8524f44d71154734ced2e5fa67a372fd798b1632975abe88719d75fd194cd1f567267f6eea148aebc2d19502e7ce208a064bc34fb5546b9c0d2b5e31b39ee9f3ea39e69969f8e28f72d9cab0563133df2a2f06642b205761cdc8ac54e168478b0ac7efc2d1c585f2697eb6270a3cb6c1995372ad3fadc7faa99dd26172bad0dd6824b1eea457423ec3f2157953a5bc994fff9337dc535aa56f3a593f03f50da7beb3369bcb263e5999d54bc3695da3b8438365d512a51243454c1654f2ce91effb3ed739b2a3b3333b2046806401629ba571bf196c5272b8e30fa62f29094d4aa284f33850094f128f122e89121d9cee8e38fcfd61dcd1c56443fd268e8e111c9f9452a7744e9d234ab61baeab4bfde8c83e5dee7257383275669f4ec3d6374e66b649f1e18ea2ccc205335c18d45a2d1a57ab45f3ff4fe36ab55c342d1a1d2cdb6624b88f63654dc6c89afcae73b9beebdc5357daa410f54f762aaad4a1948656c276183c226bf3c80e65ea3a15ece80cbf59831d6d868cb2b348d7e4aeb4cd8ab896053147a82bb370c1118fc313e7fecf564bc2eaebe094b0e4b2bf3b4ec7e84e0d56da74fa65d29121435457da6656aeccc20b96249feb3e9d4e77ff64e8699165910d4821cd0159d3dfff5d4f8bb3166e7694495d278ea2f701c7241f806f4216613267beab8a9cdb1c80db1d5cfeb103d4f5c425bb811664ce74310e2cc3ed97729b853c29bf936fe5bbe44b02781d7365d759f728a5d461605d99859720344803c9831584804b1b5ec038bde12508d61a324ef2598abce11348251de30623ff89c7646250f5e7b8ac87d2ddf9120e29b602e40d3fb5e8cdac5ec7b75c36b6e3e59f9044e67c2fdf5b31ab2d1d121202eaba8e03d48fd407de37c119d58a656306703990c845d47a1da0d7525a25cd54b3d94ce6702d23d703790bdb74e064a1d1d4b879b979f1924106b12b454563d4946a4a4a3c78dc58090a92a2284b5116cfcbf222723db09d76803e4636e41f1d21101153591cd050b79a018a01a56c66e665863c6f688321536c6433cf6307686fbcf7f1429e55d0a795c14fb191edf81eeff9f021c2ed6674b4400f72a122bfd23047729aacf1e07027a4d8ff21843d2de8005523804266c29016d59575815f13010ac39aeb8144ae7f97cbc788fbd122f73908e47a20d1cc7733a08f919316bb36f96992f9f9b9fdaa1f99c33d017a540dea071f7c0e76c064098b83da410d01bc310d069cf232238ee5025f9435ab958d487d22445e07d8492eb0bb747bf9165313595aaa1dc7d21133b363c59324666607573b1d3541623e4ed8e96a386e831987e9009ba9614b4bb5abe1381c0d666848ab9e099ba961fdbdb4c475ab5ab96ec5ea38a6a5a6b95de46aa11639ae763a58de8a650487c5752bd66b4563d68afbda751c6b95d3e37a2051eb3990c8f51d489472015985626bc6a583c77d0ffcf17fc3e2389e59bafd37370398b92b9048c7b37e82443fa24c4798f231f2ba25afba846e58cce2389e219a7150e6ce803e462caf72336f6758dc1fa1a8981d313b988bb91e4824f32ba799304da499db11fa18cd809ffd991074b45c9cce080640f291a04282ba4480aab84a2872bd037c0ee6508952490da4a843c2d80401dc0af2cd0b93172f5eaea8d56a4a36252525a4a3a3a22c4759b264b91912e20a30e493011af282bc21225f4ccccb0c79ded00d4b2237373775d5ad6662bc99988e057295023010570011022042afb817a1f600291649849f071733d4b4c895c112977f4713975f66c6534000aeb780cf419b9b02a7d83f56606735d05d56e86090eb81dd679b48e5969638ae724b5c5d5ae2b8ca2d7115763d25e2e540221defb97484dd033cf0840809d24500007789ab416c10351f0c4cc3ebd57cadd66a15e46b8152a643c76a2524084b214284d45565e968ad74b45208a2a4c5b6a1473320add1204b3e0733f028f039b8e356e07350c7f5c0155c98dd1a4e0b7c53de8f063bb69393eab2179e81b9ed42c9809df5c0830e963aae0200003f969638ae76cf2d755ce58083706989e32ab7c4d53004979638ae724b5c05c15f5ae2b8ca2d71f51b70800c4ad8b1a303099121220420041b214130d079305d57c689d50c7881c79af2cdccfce6314ef2e622dfe4eccb21383a47b8670fb5d84242b5721ed7a1c2466a180b6ca71fa02a414243aa55cc7b32a08f116f91615b076453017540b7bf039239f45b57d46a3a50484747723485690a1326036f4848e88ca42e495dbaf050550102f282b685b665cbcb83581f07b20fcf58868999077132877a4c46c861324835e5b1d5b78cd06d295bad34b86d90c4c781443131218df9293632d6cf3cdf74a81e54d8020bf53d1fdf93bb055d06742087f557d0835a742b42455758e067014a779b0d29a4bfc89af6a31db2e60a3b764eef6344a1f4cb80a06a84f92c9006394ca8c8c728e5a486dfb59a08d3d072e063c4a4c59ee08b8414eaf2125510934c900cc10377445d7e16f88eaaa0dbaf0af23a78891b7cf0010bec669d4fa7e40602d7fc10e20127798cd6a80d4c8b4e3148e2b6218bf4110b69cf822fca107888ed361122443e15d8494b4c5d6e37a4238ae0b674ccc788e54df398f598cc773d6147a6e8ca119120426247746e703ceca586f50d082826131305ef40bf8752c6a9efc08b07e5df7953161336d523ce0e8ca652a9274a857ce4304aff042ec2383a54a8a35488e3e60647f477e827a1cfe3cd51749f4c1fa3a6f4f9a8c3292f33621abb944b2957b4649be20ddb145b6c53bcc0368517db02a05bbf6b5d06f98671821386a333352a2dd69fed13f3c5b6cfaddfa4852ecd4d2dd677f2044a4fdfcc965aac53c9632fcad1f0a500ffeee977170f0a155ae992dd3bac3e2aec58a9c52a475eba95936e2dd6ff4007db04c7635e439b57b244e6f0adcf62c2f6d8ddbc1620653e490eabff428135c71c73cc21f327f290991c56ffd6ef615b93271e93b21ac406c5133399943116309088c14bd1c849a0cb6368fd579744bb4e8359fd27f5a1d46fa1632f597d9ed5679ffa4ca53e03492d72d4aedfeab2fa1d4d72f9ec561fa3c904e456396e05e2f2587ffdf7987f03a17870bafd12f51e8a4b51cff39e68848a828282828282eabf4c98a30a9d0af3fdc6c2774bdc52cfa9155cf8bc573db9fc76a3992189307d2bb8fd1e0b6e93505050d02de816740bba05dd9a6eb7a71b18cb37a69bc7b80b98262f4cb74e4502cfbc29e34022d4a7c016ba09dd826e41b7a05bd02d28a8a242be355994ac31a2725ccb24ad60cb04eac4b517e4c905b0cc7b1e9779618f0b32efbd8f06cb1ef3be1b4900d5004695911f1b99ea47d6952fff0b7a97f836d27f7e1cd6f35f265415eacbcb646361059ea36ba20477ec2218780ed9f7fcade0828fcf141b99ea59df451e736b6db79fc19044562cc6ed57917181706cfcc7f623bafcc7d6b1edcb07b2cd6149368fb152c3fabbdc78e936edef918545c2b34b3d70ca3a90c8fb8f6d2efb2ef16d449b8dff28a0655ee8030deb5c6d151259bb74ecb91dd75ac6725cfaa9025cead5db858e7ed3d9d393dec9814b6937bb6e32a1faebc23e748edce0a0c1010411096c4042d64331fcf086126994e00359c411447f48892c6b3a2ea2ae33ea9698dd21ddd1a6084fbe95ec8304b65f721199d9fd1f3b7ebaf33d0e7cd10e7cd15a4197c3667d19d7e1c8b33bdfc545982905b266fe989af6ce3a9f99e6cf5fc160679616a7d75a9cbf7ac1f6f320a269ca3befc8f743f9609d36df6bf3dd36df9392e80bf69352da164be99212a709f8447e93277d23437944c2f86538fa3f71d2223771f28465cb26fd441a6991a54e8bdce449767102856517267d23b9c913272df6d0c2caaf434b825945c918c87f808c3549a2846b2087f937f158f72061fe31b80ec4750d741f0d3ea3d9b181bc38a271919954348b90b1790b43d6f88fa93bf65187e5fa74e246c5f534eec87d715a792671911ad2d90c43e670485ff038c981b4c961fef405ea447fb0b823f7e5d62c41d77fde3cc6752161fe625c9fb7135c6fbaceade0fabc5de7bcdc185c77fa82cce1a6c81a7f7f3ae3229c0f0bf1f7e7b6c81aff91f3b9eedf3cc89b1cb85c1f642c050903e2220a9042749037f41d8dcb0fd4425cffcebfd2603b2a93ef49765fd59755dc5182f12209c8a3a4456e19731c8a09d59a23bfab451a0f3b6e761ff9d9d9b97bc2f64b0fbd216f73337a7c395089ace9241697ba9a0688ace14f29c1dd6ac3f6d06269d8e7d29739f375fac61d1c69bf4af01f3fcaf5fc73eacd6f841715df61ecdde512c01edab4c83585fa0da43ee67afe557072aa1787fa56bdb830492ae49135192a74f973e0ab84399bd54befec764f41bf5d2896e025b4ace24a2aae872fff287c29d829b4c849640d3f65497d35c3178fcb50cf9708c537f5847cadc0d7f28bd6f5e218b2933db57be6b75429e1e1776e218749d0ba7e82a28dc3e45710c761b2935129e3a6754d7edba4fc22c9e8cb11364cd9e2852b5484e14411616071e322937f74e5ff3deae45bf92ef9df49dc6ec677c7710589277f8cb51e7d5a9ce6f59de6ce49f6ca6fea246b9ac708ece8b4278fd1aeb3d6e5a2494e5b40d72bb50719abb0a71a24736ad83fb2a67fc645ea110ba179ac65903018648cbf48584dc28675c74a635de9b0cb95767be4a6913e71d393d724ea918f9b9d2ea75db15e6b5509eccb5eb9c5950fdc7eee8f6511fac4d769fd5eeb6f95fbbfd3e88fb40945717290492e5a6428f0c5211ba9a0054f323642a3c926f3b8f6d58bc765a9e74b940a7b5c90755c5ccf45e8130b7943d6f48f292ceee8ddd1bba38bcab8909b1cd6f48dd41db9e9898bb0d30a06dbdd2cac808449e0ebcfab176a9247e4c93b1b62e33ee790108707d18e306e5c6200238d23e6e8a104132080c2ca0c50e820e3efa67ecd60c76e92391d4385a847a93e8aac93425b16769435d9438a05c28308e9a5c0174feabfd44791b944d0609a3cb6d3b4d3546ba7cb556c8a871cd66355bf23911784316c8f3b5fdace0073a50a498fdb4e60da4b8bb79b5a642cf6757692c858142c5d800106152d443db821e35722632df0d0c30a4070c3114e08c9f87914616ddcc9edf7f776aabce1ba752b008e6a37e7a4e0e77de375ec2697cc4dbf5b417b2938dadc0ee3a4757ba7c1aec559d7a81d982ebff79ac1babe5f3c8c025f3ca81eeb3096ab188942ea3d297ba1f0bdf75e5874df552350c9050e432aa84a9879952073fb656eabc0f5737d5598ff224172818317a96ac9050e43d74199dbe01399170aabefbe0b3bf0a5c0170adda3ba9732a952a27a54f8e241798feaf8fb2e7cf174dd47914591adc23e7218bf4ec76461bd0e7cd1e60375761cc61c44edf2d7dad6493226adc861892cb69431c6184832febec958940f7861060e6bd8b006089e9a896b0ad4ef2308830296b5b6ed40e328461e50a28a15657861441a51a8c0108611405439011955c2dcd695b62947dc0fcaf9a3aac72a08745f1b02ef523d8d2e77db372af8cba40a01b2cbfd5eb38b6254c88ddb2f76ec25ebb7118ac9a4d96ce685acdf881af7b6161804ddfe9dbee1e90cc7edcfab7029eb3cd6d3332507a40a851e21aab8600e99cceb4fb60b4ef55120f70c8e0cc4837a2eec692687394ff735ece99bc3bc939e74dc09d3671acace2d17db6f333295e9d4a2bf47bdb4e833a9457fa4a4eb4eeb71573fc7bdc16a54e1d2f0c53344d67dbd44b2daddda1443ca2e2678933f2a69c8cccfffa55e5202a45e4ae667204e3d3333333333732f6ea763ccc569369b49e1e157d2b14fc6bf849f09bf13d6e587e273f95b9871955532e42a3c4106626666666666d904e5453133f30e1f55309efc314a998292a97364e7049beff7f738908a403cf0849d233a3ffc5a975f170d7f865ff73e739f4343cd424ba878136fe24dbc8995875abce2faa92e8f499994b96ab69b2465b34695682dcaebad1a619ae0a4c54e925474e45fb37cf0aa0ab645dbe2952a245e69a596eb184be1519242c77cc8fa997c7f60e6e3f6b7f01493ecd3df093c293019c2fb66ab45125c05f065023b3172bbf7e7420db0bccd3b49fa9528f5b850a48b246a32237ffa7f3b7c79bfab5144d8bf383afd3bfd435720157d4184175a9011c5e80a198cb4cce03444c30e21889c28c20b19332f5470821f35c2f0f2a3a48226640c0961254b18434a0a786a9ab2c50d36a800b51047133529cae8028d3124c00511513c591983690d597fbfabff45c57a14ec6c4b6acc64fd519a98410e38b03825e1c40cb26662420a315c1003154e4421eb97aaee7a88e1ca4c26fb3bdbeff2ae5cda9ffdd9fbe9370761dba1e84a5b1530e195b61d7cee12264dfa86fbee6d55badc06c195b61cb6f062c0b0a9efe1c5ff79dcec28993aa885644c9ee0f60211609238010f5264fc5d24631d40d1840408da5062862564fc4bdc733d936863737b3cd98e5548eaf594fc6dbc859362c0b023dba0b4c84c9ab4f8e4c78e720b4f07e773216779c9ebbd374968afe33284f0c9c2644518131cc9c20a24b048410c1fd041c6cf5e644e0d32a79f9f993ac657fac64b482f0f49e8cb4ab2869f46631ad394644e3bdb90cc74b1a867fdc8573430af0a2c16627938f22ccc1318272f4d5d98966e4a49728bac19c1196213f3de7b406240d9308fe63af71ec8bde7712870443d0bf4c6ef3ac87a8ef516e41e153669915921932528f0e7de5f7aa16db1e583fd62c406979b130f4e2960210c1fc20491c3113fdc207bbd6047235e0c1896fbd70fdf1ac6df75162524afc8c2891e7e20c30b15c0d023450935681f80e1a90c193fea848ec53c7f33614727462e941639156ee1a066e2a445244b5a44e2025cdce8220d2a6c30421c811330f8508315359c21e3679f23cc84554b88f8b0f871924205152cb0b00286a61f1bcd8bcf1832fefafc2d3059528465266e9231266a4cb102a2357cb05092f1b3938c4916a8d145952729ae18a20819a396b07de951134e6bd090431b4d5186f000921c3fa8213487141092b0321b5a228d18bca0052da0e2072178b0a28a09644b9a3c91310b1c71258b28666f886048c6df828cc92dae7849c10a40e0f4b3432d8323aece39e7e42abf7f2763954eaeba7b48df070d59c0b22cb0fe1eb76c276b5ab6d0b0408cb8eef78dbc7248d80a2d7b774f0e687cc8989de18c0181e59122318595bf248495b9d29603edc74e0e472890c6d54dd9b2b3e1a557da7298e18eae09e4757dc32fb8fcb3e3b77cf9458fb50e0e33461834c86c349ce0fad33c96eb03b86ea3a2c6f507e2b61aa8b8fe438ce8e070fd8fec085dff13921c5d7f9e146ce0725dc7751b9a9e5c09e1fab77082ebdfe3cf3eb61bccb8ae74dd06b4041941566c38f0d0bcadf26ee7a9852771e4dbcbd285368eb882863042405102594c9a8004415db0604113361f993bd0752e8c8c88ad64ceec65b6c8ee73c5e7fa1fe9588cac6356e6ef048accf1ee9e9f1be1e878ad2b23ac286bbcfe8b7e0dbbfae2b8aeabf4a7c3f150adb241815dd73d655aad2813d12aa44e9469c761f5bdda8ddce4be52812e06fac057fd2832b739acfb14f8aa61121f58f75164b49902a3994cca8c3ad52b7158f7ffb5f7fda95015f6ec38aceb31e2f93e15f6e084ddbd47135fcaba1f7164a96fd262f74f1cd63d6a88eeddd6bd27cd1cd67d83ddb398b02f1ed4f7c8b68e811cd60939acebdeb7cc20a779ad03ba490eeb9c568138187c34d8c949640dcb7e5573cfd33df7dd21cff7aab047c761fedff74887f5731f45e67d6007dabc6a4f17be6a586bc883f28e07f5dcca084b7f05be3059e32fbdb0ff4bbd78bcd47b3d5c075a5094359e025f1485023b87b1f77c89bad76914d885334c9a3db9f0ba1b084c7ffc4f5f94d65e49b62bdf09f5d97e44a7c52b35487a0d66a852a9b36e68a7a2abe5fdb4ce6fca55ca71740327ab24a3058e2c5ca5f25d361992e4bf1c61facf1fdb95a2e8365cf9437ea763fc537b0d5979b977d1d5aadfe00a2edcbe2bf0a5ab1becd3af341ca35cb0057634728f5cb1f2e51d6d3fb72bbfe5a2f9a03b65d22603d00d5f8980da041c970b5d2d232d2a61b9f0884e8bf25962d81a1af167c91c59435dd66aa4633440477644997c9ea22b6bf297c071e533e91bf14a9b07806e57eaf6abe1ca770db9926fba16bb0497122868ad16a5454961ff0419e36668dae1e90a279e4092c9e791b1d752c60d86274a50b42493462ecf7484c093b248ede6ca42e44b59a47fa4dd1c4a1622df9b53d6eade3fceaf744e9fd31b8c42b9cdf0648f9549385c713dd6904e36acb3327ea9b28c2ab246705afc71085f964552b33bada4314a92506ab15529b01e12bd7828d853bf032fd0afe10b05ee2bd744faa5ac86569584b2757dbf581bc3ebf71a449161f94adb0b602e7fea4adb0b685cf98d24756f6c53d06cb629b0e4c0598e93436c8c88334e5b621ac8fa79966ebf9212c8fa973071bbbf89d2ed77c2b276a6d25c917ee1ca3076e43b72b7bfafb449c1729d9339a012286832d612c6a92bf3f306afef12410a51ea66561478d248adb5d659df55ad8081713a5a630b0a7e5220ab6fa4d1c5144d5d00a531060d527cf8fcfa3f759f92c4a4749da7251a405fb85c090117338880a28b1c53c828c2a18d2d6474864b39d51976944a29f05069e338eeee4c36bc573b117240795eabd254f538aff352ae2e1c3b5b4319a52d3a8fb0e984cce1049252176ebca1860f1c9ce0c2c6535017259041ca0cdd0ffb841d7ffc107f5ca7d7260b4a696c36031748207df961e89da6d060a8c9300409fc278d55d7c62882ca1345598aa42852210a143c518412342ac0700f34d1ae6207138429038b1e6864a0403a7d408d33bc48eaa108872966704401004308862ab610f2e28905a1182c71041c4588c184acc670eb8b4024983c67ad54dcc83b992c5b2bad8822c51050cc410b1303315420c31ce1d48236be7039620c9fa318cb468d654dd664165f90a0f0b101071ca0e8d1c513b31e9a604085175985e1d6226ee56ea5b4b3ae176d248e8ccdd92ee47ad18645604545a76035955d1a0aa594524a4500460e37e48081a6c50864348a103a4ca9a1055bfca0c50d32ea2f5ccac3a5f4d25abfb0c88e5f77e5bc5e43a7b3d9bff0a491aeeb439139f2d6fa292c61b223bfd6fffac655816e7db1be4de572536f9d9e1456ce994379729b31676d7dfd5d83df4cc00c695aa4ab17fceb6e39a5b36707b558decc76afb586feb5d82d28f4ce16095fade18b84197657beaad87e160aeaee9fdbb9cf1e2c3f9f91c3d1396f7d2e9453825d9df5b9efea4f2b6be49c6e1b8e15101bee8257c397901d3fe73e707462e4d2af2daf55eb7fdff8bd7fdf73382d29bd77eebbcda56c5cd5b638ee6bf82a619cb7fe776be8c4c8a561e7c4c89d61ebab6d5ae1c91fa2b5e98e8538aed3866b651f40612ed7c92ce431b70a40bd3f0aa8f7d0bf03dda302a1c9a8244c59e98a182a4434020000007315000020100a074462a150380cf46cd60114000c7da4466e5017ca83591003298842c6180408200000028c21524342a20e7df1d4816174cf8502a6cc9cfae4b45a135176954575400c6129ef8f01525028413febcc46c0133523e42d6554ac954d85262afffceb0da82512c7c189d24de040543bfb97da868d7315e226ee6b0e7f9091645165f3e1b3ebcc0de3dfb7a1f880e96155f8a077086585624801bf6426abf0456f1c052d00659bd8c78c88bc8488259702973c178ecca72b0f9ae16036599c0d5f49969cdcc6cc7586ba79e958f5e42d65b775a5f9fdb6c95351fa157cbd165c28cb23230b608735d66e64195fc8535e835c8e0be3d4dd4f3994c9159f15ce4ef55ec152884294cb235793640fd167dbfbc4577a09d812a1d6f124b32748584d7ba312ba971c26faad3da22b6f89f54d3a32e8171965a03296e3320d40970a71f368b9f2e4dff23aa8ff92df8782a74af6b2511cda2a81d7a90f4cf1ce59186d97cf85588c78414d8c4962f290120f2492030cedb30d7dc1ba28d12eaa95f649673c85a76a022bc8c348a091d615eb1254517ce8fb1667debccf02ddcec17b5a27d919156ca1e1863184e3e442c8d9a5e67b0eafb4f816f72c84ae10c628add059ee6b9b4f1a210198786573b7aadd8dedc7cea6fb75e9367891f9c5c85ed880b15b8520023c61f0bca40528298862218ba9bbd979ba4d46065672d90cc3540d14e5ee27b3014fa1d6876f7f1428e1d472851ccf7643c5426f8f93c9843641b8aabb18c20b6f3b8f70b041727d312b4155cb017a9f683c4b5ed2665d345455ac979771ed37f65f3a5f05014a7fdc8b2bada432b4c4ad7880ccb7b2d3b099b47959730905702c556b6cba646e0a4468bb9ebede6d525803fb0973264f3f9193816942ffc102fb2bffb4aac116193dd648026cfeab615fa251142426b2644e054838de1cafaa1d0c6ab8dfdc32aae4fab9f23b028df75ce84cd3c7f4cb30796ff09af185236cc35ecd6bb4c9ecc48911034890ce4881fe126b65b77f0898050343146459561a542e4ef74d68971cc3df3d54625bc7b4c4abd0f5f0f1decb350f0e0799ee0906badb350857b2a1c8df7e9f0f142536e7b40b02af249a09fb2903d159c9273b94f377500e338c86029649a205d7ab68a34c565eaf56441ceb42bf2682d02d797109b9f7bcca50babc329d273919454a9ea9df91c4d97a92151b1e516140e8ccc8f4372ed0bca9b3edec9410fbf2c988953440574674086d7e691779bcf6f7a0822493f9d19fe32678884a9bf0a66e77c2521e60380637cb821d1b8c937812868eef6693524dfee8b767e096d1537edf8f801f7d0584db9efed186da1e616620b8e5b6fb4dde9a8b5f99da09d06a660deecad32726538b2add71afc5df0499cade3a29cea086cc544c88479f9d926348ca9742dee182e2012e2853049a3f0d10aac51ee20ca18f5f70d2910f556939cd7a030055ab177639f04baaf5486c0985230ab606c3b27001ebd250161ddea6f595d99d532d4defec1a5f8bdc37ddbc655ddcb1226025139881544ae0fdbece8953537ada3d99e77186103a19042b1247233f9ffc1842780d212903b7c9a8e9783f9a61fafb3132ecaf2120630d1740f1bcfb167cffb996886920e69f1d214011db5e5a3b8969eb54c60d06a5acdcb546cad26b6d0acf3eea97556893da7c7ae6e6932add6328040de1c20d1108996c6439a55918b6b6a0462600538aca396062e3d88ea3d31ee42b4b265d7c139c9ed1f3cc34636957ecfe2e495474388a2099cb8a321e8fe670db408ca0a5d0e4c78a4b9fd4b8afb2540dcdf3da624c64e842e90f6cb903a362b293a5a2d8a55754467ec09ed86abe7d45a8146d6166a691ffba27be91a6ba22fad75bc7837a65aab591255f6cd96a50e81601501739426a5685931a9b69cbbff62b603264596ae37608d0627f4db98c19c0491e700616ae7b9b9d1708119d52c40682d327af560e83f2c8d124ff6787e6a4de391447f896e90b97d157b436d7dcb762a6ac4617c16804d89a71904894a1a965513ab09655b5b1b7d10bd94bd86722bf0a48abcab3c9a78041758580e829c1ae67eacdc24da3dccbf11d2e7ba773ad8f43cb4bdc982edb4a252e28d7b4937259039e1456f07192fa5e74a2ef1eaff086dfd177df94117a00ade817115517d7897540e931b8155769391d36d26e52e9e1e73e8154c71a85d10b8d903d2285c3be65e519223e76cf6a0fafe368f7873c17a0ee851f4698c37dc52594aa11f8ec3f62cf64519a5891ab8c8a09375a6c4fb4d8ead8d15e9e591f72f17294ff75488f6fbbaf4f400cc8cc4239b1529c6694f5f0d48e3e4699f33721900a69a0b527848dcff948252b7f77fb8a1ca45aa2da851751033560a5546d068a2208008b5588073f136cf59477300b67869773e4f1fd4c4a21e6e363b03bdc92e73c6c54b42e75a8b476f33dcdbd772c5ff2bffc02d7741f7840e5c2eb198e66b8053a2d4b5207c0e811b4ec8867714ac1a840b30265098cfdaa922f994952440834498b581ebd9897f49f5e44bc26ad36faa373861a089ea8934b39b9662ae0fd0e3f0f4422b4bd55ecd9ea38aea98cdcdb0c03c8d5adbeb0644561b4d07a9365d464ff9bcf26e0981d227e0dd57b70b5f839455809e2bbd53c28cabc80754b3661dffb8daada07639d822f0d5a841906dcd5bed549e5db0973554457362489ad57c1f21902e114285efc649ddc2834de3a0db9f6575875b5abcb79c57ee4021fa38956590f4fc59498112241e24a56c30a7fd70a4819961bc04b65f387200c12eb809b0cdb4980f47c22ae1e969eb2c414c2e5de4c6257dc90a287b798565e2490239ae4ab55309163377274d3b26212ed1737443db9da49c422925158ae32ae297e01138a4bf879b50c8b15d45c307c8c36d1e3ef1048ef7084e0045a6320f9838310c344f162e5a3490f13c42e0f548836757da0bf3f86419cabd0c4b5c5950848272def834f70e102c57a0f0674428280d40f0ef0131fa634b8432f7cdf606db0d2584df29c42a33ef7b5b4c8e973d5e5f91cafe473a3086ae5d42ad525483b5c2f584952f7aab65193ed3318825c6438cad52e16268e5cc83f0397d5b437d4a8f6af11b14e0ce6d7928312e301bfe55f934d184b52777d7cf0c3789695df0349ee4b32089345dcafad8d3d789f12d316055b894e3c68502698b651688ac352b842d73e3affe60f3133a1f3dcc17a84ddfef1edd6d9c2eb54d536bde303e79f61164b81504a056e4dfe5285672f14ecdfce735d2dbf0afbb02d464c84ba6ad323cace19925e589805ee5c528db2a12a9f35eaf7729214117ee77680dbaead419504279b979601c249c8b2e587b722cac9db8742b5b9f3c7b8c57466381146c1ecc710a5c2a2d58a4b403f197bf1c02432132dff9153a6821808616aa9cfec0ce4ed12b0dc752f410d2069422b00b641d1bd04facb0f03b02fdedf4e356966a9ee8d72d777ecb5c04d802a51bb5107da8dbf396b98755f5fa712c12bb0bd2fd2f25bb4fb78979808696aaf5726381376b2387e73ef981d1a21864939c1ad91cd0e74c2c3e32f17b0d65479a7cfd476fe41a6d3a400f073c70766abb0705bbba1ec42f9c550311f64c5b33ef236487272b87b6fb888cff87199a9818b9120a2e2a9a981895043780c0a0dc058d8f355ba42b32992f157ee39ae988f99ee585084f0931b260820653c3c2ec907d47b2263be0440be9a03e8d040fe7dbe081786b0e98dd06fdc8484432c6f92c5ca20a213a145e89e5d2e13335d74864c0aa630787b9d2353222093fdb546e772ed08998073fc0dcf093edd5b2c375276cf670991338c65ab7db3a07308dde6ddf8538840835cb6ab7e737ed34dab3162395e36154d7b20c01b91c49cf0a09b1df9d711b12f94668bf732fa14b91ea53aacfb864505187b6143f6922e78e107c78611aaf05eef3c1ed4f918eaa7e4bb207064286438efba98f233fa461eea1ad727585548e53460de715ba8a08741afb73a67c375408cd37d34257c0489618d724a315b1626605e0e53becc349f7da1e29a10376b7615327c139aaf14e7131372ec17b488021dbc1bf625b1ff1eda15c338c3b3239e1e3343b5315d09e1ca99d6960c0aef556bc65e99812fc25d64d1eacdfce1115b8923bc76aba6d27e7a1990c1e2c6f8cbc373bdee7a9c939795a8dac1d0acc168aadcd3a6c16696c355786414273cd35ab683fe82f4eab3d15564ff35b855cb06ad0bd437d237192a14291619a4cf6db6d15a2607b621fd139225844e145736c589339bd42a74f831aba910e075c1a783d0053bbb98b0bcef19abf4208159cc785d0976ceb11f847c1962357a45239856f3efd351d7e4309c83d1381af900bca5b9f4f36e70d72be6ebe63cea432e633d354f9f035b75492a550dc04389aac462dc0062c1436ef282c391c0fe9480661ad304356650d823e4c647f4079e09581fe90ded9f0d133aae20c5f893f3845f95512bff7ce10543b30f853e07ab01e0f32ddc94c10ffe53aa3a993e5d5f449f1dec4ea5e42973f05a0edf6b869756912dd19aac15f990be202773b586b07f76b07c0052247aee59c254a8148c3132f95c3a1305e25365fb7f145fd3525b44e571ac573e9937003676c125b681aa63d57bbc44a5187792ed17a84674e9b5a522fb0528beffa7941e1dc6a1d6334995d387c4cab24cb5536a3484ed0e9f65a1ee24c8e664efcbf0878d3aa246d57f1d6b0dee40dea22c1a92b012d903ac531c13c35e7af9a95ea90d64dbab7eabb4e11095b287f5499cf6ae6eb573404a2e7d08a6c34c1981efb2ae44de7848a0956312b3217d9014d507bcd90bb7c144443648c4ac990576eb614c2c39089633223cdb2bf572d5e58eddf86579d7afd7530c853c0c328187cddc9a6ae2cb33c0c51c2fe14bc39641dadf621e86a61eb4738b171f12866755c05c835370d879cd4fc6e65777553c294b67581321e89018b6a18f69c8a448dee5cba39fa1549771a85ff76b4ef1dd2a0c95fecb7e953eb0fc600872fb12bcd29b5a210bedc40a91d8f49f7dfd94432b864899bd451902d141067abf470b313fe300a89632974416ff47fd4ca56721662568f491b14ce4907142d7a33b2fddb9d61b0f9ab1710f18f2023694a160628d743408065fcea16f6ce7ad25e58ad5fc1a8fbf8ebdebaf137b34f5876a60283f661ba9213b28001f65009d0e6c438c3707dee47bc0a59e08e997d82bc0fa32c68a2b7cabbb22861c409c9920b7a58b62c2a8b21bf86acb5ec1767d17d45b79a0bc65b43459b80e29d0ca64173c5b1d5df32d5015721fab673fca007f2133aee161991e9cade08d699792970556b5dfaeb35445f28e04a874b741d7a39b92a08c3c82ddc0bae3baf88a6aeace4d8158d89ee503db44abd5f4fdb24e931c2b53eb385d27c8cdc0ed954a7c7aace5126a3d1377d3866e38e29052f3c6279a0411773d142d11252d4811978afeddf6acaa444164ad6c88331635123b7142fb45e126f755e91a04e0e140c9aa67005e33b429531bf195500b2406c0b50c7fb2f401f82c0afbca2856cb12b9e1bb3bfe0299393241a3ec2fe7836638f3d2b6cf6658a230a3555f5d15205ee70855fec42c1bcb8ebf0d5881d17e93f5a6a2d10d60d4532cb872be867d1cd70af9e49c015553a68b34bc27fe71458dc7ff6a1557ea50d5e799a140ff2c67ee840fd2a3e079ea1855fa6926ac6b33cd40524f408ff146aa3785829bb60302a5339163c60779dfe7fca85bdc5536496ff20ee36b72054aa220477da4e6c8e3c862e700bbbb3952f30b15d27be979ff1ec06959e5a090417af4dda1f3803d72f8998bed516eb55f53307a71ca9bcc828e8ee36c9dd00f7c456c4abf091a9867a942bd74010cd887f4beded5c5e612073753702976014a3b77a13f016835933cb7e8efe7a32788289b956982be42862dd73a2b29957d689826c670ed44c0011815e7deb781e180e74171ae2af4ca5cb50ba9c245881a001bf314217226df8281144f35f9330d1918b771b62373eae4e562e94ed8c3e248b8508cc34dba03b1dbd6d832cb1ba95a70eb202d587c8a99d4f8e0071f17a74970245d34bd8e0af026b27908c9dafefd44527d0abad900ebf051b21ced81bd0a393a4e43a36d565ad06784cd511ef357aa2d01f6b0b3c6a7c767e5bcb40e87a3eb7ecbb2e0c5df4df5a05235ea5b7b7aec1416aa10e782718ed5baf1ec195a879d0701a25715de32e957b67b5197d6e26d491b32acc1c66f84effe2f019cb96f01d8dc3d4b6e45c4941d8da6ea2a408bebb3b33ca06fe4f3d384298c45f97a3fef99c3b8842dc3803b05b143548a180a17a9f2e619a588e7623a169de72577174b3e09c39239c331d56c49e8c4a413a40b3823344c3c377bae2db989698ba5a2b28460bf266ec1b60a0c75cdc4528f8b2089c29c76e6296ce93751bb62a5afa986addf9cfa97f6e1041da6ae081a3ef47d5f84c617450eea3b7bd2c8ac8310a405cefa98988106efa24ebef5c09747896151079c7ceb0d0bd9b28700dd2a06cb3f6a6da6ac85d028a106d425858dc5dd224d606452daf3885d7b1d64d315bb1e3c8682d832b5e6958ba47c7461990bdd848a47b485020d74460379dc3632b878b6f0f8bfa24846503ce6973d5dfed0a909826433a14be2f0cb13bb1faf6d0410073b794718a2efd244c25426357f6fbba2d2ef2f85d1f56746645379c536defc1a9f66dd0971911d365ad962eb0f837a6c7aafece1a7d32ea136ada45890aa2a79323055f85aa72ec723e9e66f5271033093d5f52d30f0fce52ff1407556c041a23df84d4a5fbc290c217a24672bae1554d11f77acc835a2a8dc7cc069946dd09931f4818197721ae965e39f0da1c1e68ba1a77df9367a6b5d4f08092328ae6ca6776c0d66ad74697bfd2bfa51a4e52aab2b7c696a9d78b08b4b9fbbd89d5020f67958b09f20315407f0bf2f34d8d24f75229928ce648974d9e23451521903f7f67e842055bd3accfb1d241d2b251a300dfd11c5f8ea7f03f33383af5df3d69c9bceea35a42192634d7b99f1fd8dd868c75bb478439a026e7577284226dfcbf43b4ebaaf490b4aa5559eff1346bf3479e260f04bb0985d4e25c3edcc06256a30c94a2d0084e4d30cbb8f964e51348a37a0dc6db79b560d9d0090673457a5e4dfeedf7aedd6a460bf8e322e0f478c27d9a219c3d502a09f52e85154b4859cc6d126f0f6a8cff628a8721aa964cf897a0432939e0069405a5bfe4b35d330477821ff601a4ff3ddf09d59fe2176de3bbe505c28acf8463c06761557da7e59fd29290825c282acd488be0d0fccd4a6c8131b0a9add176a15f3807ad2ef81a1e562905b9684cb4b067ab6dab2722f5b3c6468fb4d1620557785f8179a6287d69152dab06c1d603ac0565b1f414df242ed1ebfbfba8cec7c01322689ab9dfcfbe40a467d047985b11fa9358df088608c1bafb368306a56242d12174469a3f4e6107795afae3abece207c8d08dfabe38c7efdac68fb04a00ec40099f279e43725302eb4fdc7e569b26b5ef7779c18918de2ea3e48488f6f976b1b4ce9806edd56c1248f3a9409489bc8d70e58af0f41a32d5a80d2c1006dadc832aaff7c32563d902da9f1f41626d8b18fbf615b67480dd958e20da61d669acafd074cbc30bbbcc026cf0a258307cc50f20a920c5cd58ec316b187a07568d012dc003b0f67c66cfcfbd9dbfac18e505e98fdb8ceec53b1a2165d1d7a6c86a0e1315b3212c170f88d1129ed82380232bb9d34418c042f7fa47284d92131756a4fa4b97e2f9b6f3e8433319bf91952b7a91633483ec39c06bec49fd461143833ccaf8c664e0ce4b3251e1ff23392c25a982c2fb7d1d0b8229a118b8a2e45ecff6505f4863a83e12b0a19a805fd19f6207dbf53873a842d60604184c52e641e4eb02081f0324d539a4cca1571a1676f0baec897e534573485e6e6124c9bc5f55e579015222bac70498b15b82c898d45c098fc88ba2222bea851430476eed275347c103bc9f5951dfbe20844e95abd0de14c9117e810ae7ee95ca71cc39da2aa6976d0137ae6c6b41edc76141a2c6bfe6d3423a2cd2adee77fc5ac2c0728321504dd087afb02fb722c936b0256582b61d2e0c0147a22854392c0501987ef32ab60dc7561dd1ec328041a0c11422ae12eaa9d4ed9f7decd5c37c36f51684ab3e85e3d3acd1fe7d60f828c35ebb2ca02659cc9582c6afc132408e225ffaa303c868b1bd29cdac8ed6b97469ae3ca2ec176894e610024808fb419502d846e39bf22e88c6f5ef07271eb93d2fb05d9319eebbc6e533d354b4059604bf6ce6084049dea4023aea9f5cbbd99c3e521b980a573e8b54caf46bb108120689133fd229cd6158d27b0722c4f1e006041a79c17840e13d7977ce21a636b3319db9e68ad02a0aa87833486f4d66878389be7aa26f11939f5d4e744262bdf802d0af017da95105f621d04d87d1a8685116eceb67c7d382fba4dd4cf31c309bd7a52e09fdce706cb34c88e486d5bf999d10147ad80e70cf20860d4ca2e83d45baf16285e37f3cb09cc296fa86c17940617b2d25c4fc580bcb2a35820206208a269df4e1a31c2b2040e52bc85c2d2c1faee908ee1daf3fedbe1ee7abd3d80a991b20bd660cfab9df7e386b84d35bb9b793d4f373f82aafac489313def3a040cf9784ff62c93a6793a4b4ab8854c9e0c597679f435f0bac7124948cc2e18f42691399ce665431ef135af6aa5623ea1d0884b66ef6136d13d10b3677ee1d706e97a5209248ddb5a49f966e30aa7043a8fa5a91d2d88dad7d6ebf254b864ff682f224d39aa042097e1dbc4e4c6600f9bb2e0e0bc8c32cc5a61a37badc31b8f136624851f9eb742c846b150aad7a6da2870fc321f60c32767ad9509a9c7ace9e3a6742a5d687d191b555f3c955023b2fbabe2a70f0c01b93c364170e3b6562dad5c537e89a6e472cd8e2b5252aaaab7463007996973359dadc370ef1c705ff25b605a5f960e6c6b36a3d6117ef1223e19f7095d1e69ff8de4bbb06ca5c7a4cce88f818323d0a66b24092a291b623635768004162878dd234a4ef1447a33a55db454fbc0659b2e2291287cf597c003b0cad02c915464360e7be3aa08958e8cd1e756e1717031dba401cb1ea179fbb3f7ff5625aa146172ea44aae0c131f737dcbbc6d0389e6a4012d5b68d02a2087c8263a6ec401cbdb40b4c0ae8c92813815f6161871c65696276fb94300fc95eab7dc14210c252438bbde0de0de44e62dd6d38244393db2e61d7161a5c3476ecc8ab7d580fb6b7364cd012260d6c3b991ef04904e49900a1e37db989eb815be57e9c2205bbd1973256e8ba28eb0aa4e9477a489a207e81a797507a9686b3b77658dc014ba5d65e1213c630428f934965f25e7ede7a27dd124655c1ef1a1223eacdcc6f565ae08d2f2500d21087b77d74b09cf7d0699b03b0fd83668025beae0df45d3ed80c96fbcf88bca2fccba626ae36129e9b3fb3df35a32a0e8c358f604d65b48db86223a0fd4d3e3c80a82ba45dadc3d8aee6d8491d85c589093dc85346fda92ee98d7dc1b45dec1956c02d0017033e6dc4bc8c9cc2574fab1f41ec3482bc1e2fd6f3c11a8f9530550a9987bcade1ed1ee77db4c008121813cd350d68e8877bd499d17325ffaa93cf4703dfa0f1754265e539c42f048639fa8eb2fce84ecd3f5b26543f3c8cdb062af604e01ee2541a030950c88d39cf77e115c5aab35d3c9de40558f41a954d26c912593f42229a610ce51c58facb417d60480381b9aba7bef5ed55e611d99b12e54367eccea7a8351e5a15556933d98218b7ecd1cdeb8d93df0118a85c17585d31c6c241131211c23bcda35be02c01d6f37b8f26e06a80c9aa5912956110e89ed8f321137702e7ee95c8093bb6db6afb343f64b33dd3f94cc79ebed56cf75cc483934d69b51845e9952d414d93bfe10b72b435327efef2617b7dc0bbaee370ed466d5d022fb69a8c50a33757927e467999ce92f09f883d73b6d939aac990b41b3b84351b25860e609068d61148f4158f74c2458daa021728fec20edaaa70c3c795a8db25ae285b01450891c34673efc09bff859554e12ae7775efd072f0b5bb1505577e516c87eaa26c60b0ec119c7aafe474f63dcf1d948c0444e3e695e32c2c26d7457977e4cb5113c9c0273972b1327c1bb4c0724b1af2c5c6c4c652805738e69285443df404f117b208e5544b0c25406940e900cfd2c7d2d6bb1ac312e93d0179ba39ea911949b9805ea0c623505d58f31d567501f9ec35ab1be3c0b80e1f26687a171aa324e5dfda1280e540e68873c3f1c364cddb4e950edf8cb41515a9e68428cdc1532c36c86dcc7e119bf24eabea947b0344fe663d9e81b81a1e3045973f422196790249be1a5502fa8a637d5c9ed280bb5bc0840dbb1f1b117afcbec4f5fe42dffae0a7d97c1d938ce7eb3647ff01bc20f86ba11189866ce67d1f15fca4ad79eac8f8b8af131fc33a848b581255a00ddec7d14b7f03bf422268c15f71f7be693b9de6cb9a563bf24cb8165c4e2be1eea0db2d413e33892b88a0b90a66451efc917ab842b911c575c5d2b3220b3aa7f0312ef8c1dde1ba215435884267e0105f69c48306a1fd2e23ec472acc65ff54850f4027bc1998dd9269cc03a39a88ebb4086c120ffbcf2465a3a5025cef2d21b860e8c6c718fd36726420a84811088bb26ce8bab0613280c09291a516b0eefe53103d423c34ded746a365b95d1151a54d754046082a725f6ed0784bff332f4f1d108815a969bdedb61138614484430489c596ca4988568098bae14d2572a3d1a40589697316baba8131b8672f300a520383c081a8fa3845a3b84a1c274d992a0f785aa2c985eaaad89f1aa66bfc1a5310d18e49d738dace0657a2e2f1c85c2486d62dd2d6bbefaf4f46d21950093f4b470c16452382a592bc12818de8e9ce06cd209c1eb72e80f9d104a43d83b8752cedeeb5111bbc826199c888509995877373c6c5fe16f923716f144388d48d75a0958379444b585bd9a109bf99445444604d8958eff2d430ec79c174c6591365522e25231ec2094cd764cfdb4221aba0439774a3c84b8f4ad67d3cb46c85ae620146ac01766ec5eed42dc2a052cdbf3dddcd25ca16e28429836ec72a198c69f83e5dbef02a7919a3097ac0279089805cd8ef5125895892c9e80a899808d650fe0f11dcb76e05ed35fabad06ed0941cd02bd37d7142e01eb7d5c0c66d190e6620f1340f34601d7990a2807771996a615a6e7cf87183a2e40c202649597036aa50e68ff460871145fa7f069f6685412e674c86449bffb2294adaefc51792051a915f88783eb3819f114018cc1d94340e187d130430a5a516abbac10406b413a454ffe0243d99a1a71d07ef5897748ce2ae1576ad6e6ef9d2164362ab234e16d5b4dd05a01d0aea59a607342393a468842c16095089f083a1f0616846e20204a0c2f6de8c4e2f52b4704a036014e0704c5a38678955afd9de1162455eca289fa5a11e2cd385815b94074e4a24ec8819d51021f82422daabdb7097a0264910d89c870ccae30677e8fc04d5e59be2322d6970c79f7aeb3a213ee564991e69ed707ee5047ecfb693c5ff78a88020475a6e70d7cb51e32adfffec020f8495d686a9b557cc7ce038902ddfb78635213db1158e08d2771aa989b52328516254538f9341efcba76babf0b9de514821f11c31cf2a764b58e4b39549d4e9e3a65a10e65e8f545239db35bec5940ce6623b6b3999e85400b609e633be0bfd91c514e04e9c79ae45e0958c80657b782b6972bd8160a027466f8331b54678aa7843398b14ca4afaf5b0acd3265fb6702d3df986da91bb40553b3800a7066732b715d17af63babb0d2556568d99b25f257feb98bd252e96a99341e5794753ce0098cfc2f405a7e293bc6ac598530df7ac9c8a90ef47cdd3f814fe75c3a519b452faeae21ff71fe74256d082f4e01729818cb638cafe6ac16588244aa7808bfd85606ad0dd5f083abd67c26b72a1f0bf6e4a40a748da99c1b779dc290b7d1ba0dd36f619405e8af9a2bf5fa00f1594c23dc71202baea240e4ea3c3d39d6829735b0d802502c4bc7f3a450007deb0a2a0a52eb0a35ea7d03f56c3f9881f429cbc27a416090ef2a70c092fe0157434df1f59f1870c6ea785823ec7ad0db4427f648c4bc42c15a071e265e8759a5a44072ab143dcdce4414a53e2a02c0cea746a5121ef54701b44547a41e553aa6333895542c31b4c6fb09161aedb4125fda0fa0c699addb8d7fae86547cd578646460e81278ec8fe54ed347af2f5b2874b836b612c087162fccf6722b86961d60bad3b8f11322c483ca1b81ce23743299f2a6694354e0f3eb426b88189256e9874c5d72ca89106382a8ecca92dbf955492817d9ecdcd4b81c5ea769d26fb18a4f83f765a6e6404e32e3a45fb416e43b905d148e4edb64248a1a0bfa0d968fcddba75b2be6883ef9d69a9a2f42227346e4374ca89ce84b8c7a0c7527ad1dac7327a9535f2515aa25e8423df25ad871752a363c9c19ab9819fd48bc28bd848cc6e3de29ca9c99df76fb7bf52452fc19c405ac8551c3196e779399946ba83618bbf42ffb9483df687a08af1c7acda5bddfd1fda2073f7e6795b6e07f9eb6a4d77f5fee5187b0bd80a54b030149fff992413def9c1e2495fc0af12089a4ca0a8dae03d329771f2f554fbffb432f46b4025d963a63a9d20588e4d49927a36d06768e904be799e4c675da8be4081b19a159e4ea0edcdc81c97b211b2cbecf3365c044b92749bae342d2ca76ea09edaa04f3d0054f1f7a0c3b156a654da58a6b9540e974f568245358c1839712ff254801bb853e400bb5249039448f19670662c73c87b346ab7a2884625c165c3ad9aa8e987e53bf065b9733f11d8274f2e2e6d50e7370168a8ef71fe0663b6a4950a215ec9c7e21f476b09cfb8494a93cbcc48c956ab20c83e0121b3d39c0f97d88e016bd8b853f1184edf0eacd73bf69853a1cadd287886c2a5de0f3763a8e5eb3ee88263daf2e35c8e23744b145f123a8b86a12c469263287af8bb0c2a34fc5172a08d438311f212626ff60527b9722f0642056d581f246760cb7058bcb80a0e06b111b40e0d224e38cbbab952eb137b9f6c5e79152fab14b3d2c881bec7728a21838a4993cf2b7a5cba45092724354b604c47d7f1a5f2778169b79a51cefaa04481af81cf25e84a7fb83bf7e02cd21f39e0c5003e8c15815a2eebcab296fb809c35d669812729a8cd871388f11b064c50063fd1dfabde1f62f65ed2ec4e11b800cb63273ed46e13f834d58c6d25be2d054fdb370063be9db042f92c80684ffa2c03769bacb33f8b77791b28255000c20a534bf62f4ff194ba15b90e646d638c82d97970aa5936e8b6a7f682ea4c06dabd3ab52f74e08a83374bd622149d62440546f22184843a4c27d12cc24d3b27c34c18bb3e91c7761d2f27a940157a7678221709bf4ce871502ce3ec3fdc734c892dfa236fa85e97f4c551e601608740f7c0ba45ee0e6d37fedd93734458d4cd837d5aad863cfb0d824a4efec8d127e9ab6c619d8ec4cbf9a90789d46f2bd912667a505d2881203def93914c0d588a7662228d77b0553fa4bff8ef0558da59fa84780bd1d302867a5621ab600685d5b458acd9d0d012fbbeacd5082d05602b34e1882ec546d7c6b689ee745b6eb3431368f11f34b85f457fcc8ca6a640169f933544246d7e256fe4497f9069b85e34bc6d50e720d16550e7dd719f44ac66a2a922f7f7626b65f223d87fa8502e25b8d9adab8adf8d76f3fe80ce6b73020de22179332d20c77035ddce2472c24c789f3133f806d1ccfeb333868a1fb1f115597719f93c8028fa45310e025a7a6730c10a4fe029a2c0026cb599ccefd628b800118b1dc2c8fb260e62ae8ce8704f12facf747cdb5c445f576386a686fb1a10a31c8ddde9df98cd3aa9998aaef1eab36fc4232fa206dc0c096d3e516e16ea70a37a97ff2b623cd04169cec7ec996454b49a39505bd32c2f87e53007fb45e8410c90e60fef1eba0aec0868759dd1a53d7d0ba2ecf9e3e3c49b4b6c19706326e50a20f6c4fdcb6d8ee7f3bad6acd0c3a394364376ecec416e3ec222c5b4e5353d1b0c0ad56bd29acf0b2d29c9e63de7e9bf50dea1f4e778215476abeb3aae6ee6ebea958f657626e26924b46a8e222fcc033850e829190e69cc994d8d6ea8f0333b45dc54d9efeedf8ed56c83d28001cad0dfae1485d40043758520801662dd0ce50ae4bca904d7b116e2fcfb812d3fb2700ee8a89f8530028d2e49c8058a8613522a45b3182a6af89b72142ecbf905ad1f0d7c16294c1c29708b57d65ee52eefc34af2bbb22489c25f02b28e28e2202bd9ce9de55939aeaec64a40de03e0e7b16d30a3e227860036c4d192d5f8f609e2b6a2e7267c0b17a6ca10605e1c67c1e0ea9d47c8b695209ad77c7b865cb70780a98c9398255b103b9d5c3e91d27dba2011be9a1f65a5896ec7e77e30323d9b5bc9861f4a693c85bd17ad64d5def4ef1d144dc062332543415814ade4eb4542701a88d35d533436b288c5c97f572fb768bb3a9fcd676e3e0cb56a8cdfea15bbc1239490ceb44d8cc9a3085c3bb663864f53931e628fc5c544181ca816cc66fcd875032a404db8b370aec93f6c844e3814b46e9f5cda8de678e05052ecc4cf34882226049050bc579e104e0ca85916ba863313a9ccb2cf8cb28017605adbcc7c0a7ce277aef7eb8069308c539174bdb25f137f83677635af9b04469828c162ba55b8f8808554df2d688b7e5cf4944bf39a5c5f749e0e9f4b4cb1fdd00e06480ff6b2a439a205808dbbad2e0eb475d701286f5d987104139499f2d547fc81cb019b06847b3944af4e1620a4eb981335711e13600afb0c616100d42997a3323b53be0e5071cbbe94b7eea1e03d62befee31c8ecb2e28b6bf534f077c7004a0ba81bb720194b24d965361b0cdcc1b0971f8443eb080c9d07e111dd76de545bd9267f61020af4b7c0a38fd128d55e77716f9c7b05218e785e0126f33d65a15391730daf4f9f49ed9defb7ea0a7a6c66d4d0c97a35fca335e9f528338f493d2fca280c59635c926a488938aa82850daf4f1a5a221a2fd93c5a6665bac4774a2bb165664cd77eb12ab0ea868a8cb29c4d5a5a8a863b860a298215d1eab2cdf0625a8e84f7d1d68b78db2da10d20aaec80f466365f0c23c3e9ac618fc612e52d43912786894d658b7eaf861855b3fbba1d2038e009fbd4e640f0386d50a7bfcd7bee17e21ea7a01852c4dbfd34104142beafe99e0e1300a966bc2620b6601372deae7de5d4b7d76249932cd84d2cc8ca3982a7b1c485a13d773e5ea5044998af10282811c76d1597bdee892afdafc711c42e780b349274e5ef00ab625e07c5e5730901083afcb4e19d27a6416024f1139a61572923178d4f8d220019685a95476492e7f46cefbb248b0a83094e36f344236d1f80195cf5fc8770cec3fabae8e80fbe14954c775bd17d7fe90859a40f1a15067de40acf498b5c1bf65d83df22574e48f6a88c0d3d1ccdcbb66f7438309b3fcf8e765e91409db8e12cbd000147c7d080a82a3189c067f4d53681244a27fb1f0eb66e25df65b96e5e2b13311a876ffee128d2951addf4d1e6d17079fb41283433e687ee2289f5bc376095385fa9b64d0d52688287a0ae56a3f334754a2181f9854a4fa1f98f5357a186bdac5e740eb98a3789902790a0855bbc8f42e2a1877d7033e928a06370638d390d48bdd42e50734b122ca6c13bd1b25821dd21d9d2c703cd5819cd3bc4635ea1cc0f0e80dd244053a7e4fe8688e17f243f2a9fd294af5a118c57d569d424d3fbb819c40e3fb472706b57ebc5f7a9bbe69d77de5d6a64e92ce6c77cb72c7c2d4e18141453be339dc4c2fbf762ccaa2507fb11abd09816e8d840437fcee37b407c014862f10b811aa8e2a87ab0f5492fdc0e2281f25952abd12d096a3a47d2e8119c6644c7cb81dc7298f42c16914dc336e7c80b598ef0a596d1ed9108bf8bf9e428c8ab6426197834987bf040b299850c0a25471e8a0ff4179ea21b75017af530102c6e4c7d2032f9680d11f0722555d68fa15210617b6a1c8eb16ff7665e476858f08100e87ad83e3cde5abd95bd8f67f369cb057ed1093e175eb14f7937fd268684a2777e180be1cadd3906448d6634002f890eb84f57a7d0632c07d6c8fa18577d07db492e2193432e2ae7f16a0b1038cf06a75bd9e4c3ee76d2cd6962c5face4dd510c199e5da60167e02f4c55c56994500ab3b641e037770152b98f388e0bea2382db0b41c1945f714f13661a9976f87b31a444a769103041fefc97132425d6f80bdd320d45041df56d10ea1ad919c42f6522dfd2ce5e0d25c6c0a57284c5986e587cfb7e8df61a5402db3173a970cbd7bf2ccaa1f47f0d1656c8dbb5fbfb98220a35720e67d05c7aeb427a75e9c400653e598ec476ec444050ea025a7a8ba8c23821966a2cc76a1cbad0435c4c1e648f4c847416bb6e5144ea8a3d3065508b5398ef79b2227f89d611a65b439d043525bdb669be64229403d2aebf45698a0f45fb6182251308fe200f2f9f55258626b8958e038f60ce1623fe7065c59e87d2e987027f923461481f41bb0a16d9dcc4c95e03a8d1a4b239db45bd8fffdb0e166672b974162e7ae489dfac8f227b0420a1a61215afd7839ecb1a84c0835d5fec214637b6ae68d230b17ce4345cac38b6bacdb4d8fbd370490fa6c3899c5916531d90dcbb0ca90db659ad244c1e7096568f7b09af6506cc5e00f7880500665ac9d943ab4ffd65159128bca4e50e346218016c7b381b8e2ed872ca4d146e2f1eb041efb21fccf286e5807b335b1408d14ed35782ad3fb4687b6c5996046557c39c81d80cd1d19d97df5e07ccf957a6cd40059b440c05cf4c3cb832432c626e487398ea6b67590bd18794dd880cc0ef6e058f9888fdb792f5fe9f599e896b22b1da986fe6d978a5e09d9422c9154bce5335fdbdea74092eafdc09e2817c13e0bce6a4e7bb09ae169b85dd53cd221f57d74c2039559015b8b5e15416ad7f050bc316a0bec9159d7af94a959b5f05e927077db68f4a38e68fa6dc8feda75c0ebc789fd3ff3d7f31669998cae2cc1cdb071b1a02d9dfe48ff5e8530be6e9b66007e613bbd2242ff7672d581c7a1fd8dbb8c687d044e409c61c6bdfb1ee7686a3b7af09c1149de7f78c8600462b5a7aecb669adee6af82f48aee8334e03539040c018ee7122ae5f67b9d199fba8de9e82d555d180cce93b7083f8265581cb5067df415033f0388625eb044da68c64804a583c308d865c38aa82f055f486f9653936ca5ab26e18da56e9f44ffbeebf64c65ed941ea254f218f7568729861f1c6a94cbf4a4181a37bed46f9435d2fe7f535fe884bf8c8ab2ec42021ccd8a3cadfed8af9f20f625426c3c1fc2340dacdb4f93657f5731289111eb184736d4c1384530f8346eadefdf2908a865273524f53b3a79c06078b3ce2919cb5a9ce7c50c2a825b8a403fdc2884285e8f975ae285e95495124326b6bfe8a6feeddda957a573e5031dc8d6400531a0c7747316c582106cf49c456aa7948c4dacb410c2a47d48e584d4c4de69e2840499e4feb58f24bb5f5b2443754ee388e5bf9f98af3896eca510312f1141919c51424c17333b35cb3cc21908c0fd003f840f011d3943c7d561cde3bb531b935ea62e6e0913d70f463b394396cc4003d242dfe9884fd36904bb333cdb88aa3010550b54c763c2b33e52eb5cc3c8255693ffa9d96876b61cfa4b40e51753374e737c1cc9edfd8f9aa9b8f6153adb2fb21ae132258d20a8bb240f6281608f4ca6e3e43add4bb64ac2c4ef84e3a18cb44b6ed764752a3c5e84f1ed55d80fd148789771a36b6a4e699617b58b58beed73a9ae2157a005c5aeb01b3c6e92af940736502edd2b0ae6186cbc3e34203ec7285d77fd89abb4c770412a3979dc20a0c1fb898e32904250ee3ea1070b1b446b8d17a5685e8cc4c143c257973bfa27aef93c9a89ca3aed188c778aa96c382c2ec3fd5c0be1c8eb2fcd64fa33f05aaca1260d5bbf396e4718e72a73646540eb8b99fee720adb63e26ac97b0f36fd3037fad32da7633d22dc2e7be1615b0f70533f3ae73c3e8f785c3fcd3d9302b6246ab00e8c0cbaa2f4afd0731d38eb9d10e35fb8b48068fc29c424efc7876b5989ea321127fc0ec61ed32d9dc44d728aa24fa4fa06180bd25c4406961891e42593d8aa15ccd65105ad08249f27efd0977fdd1c90c4b530f628f75fa88fcb31d19648e17180c2dda71d59030910703d7268955bd5e8be93ff979448662cc20c026900b674561a0d613b633250bb10544e2294d8685bc6838a1ddb41ca4449d76c2cf68295ba499e977cfee09285898cb2b0cdf25173a0b6da386ed4d7620b3d79374ff41940ee64160418907050d1433c1836935dec9840420b3a02766fbd84cdcf112384f6294784dcb8af4615448ed0c961a8e1c7ee99940eccfe12b243e2743a83d4760849d2e6ebdfc20ef9838b5623c3e3249d50a33d44b1773b164788e5e83ec2fedba78322b049e2f53244898f40694e4a894f145d7399b06c48e28498633f7a08cd89a3861cdad36dc615bd158c4e7f8288df5eab0a67e364d3464c13c7b948db7d21dc424490b5b4f835d9a1dec888652f8d666b758ee17f2c48fc520ad975b26206bd0a3fe9dc9abe3faca91729642383ec2d19dd8146dc26e0e2c7c99197f7b5c4ba847e527119eb4c4838484c75ed83e3610815c5a2cb4314cc5fde47597e43288e4c0485b330999bf3597eb88f87d0e74121ba08fb7e024c2bd07a549f1fd94072111df544c544c5321dbfb0ae1557c13a3df70b7411fbd3a78bed8ab373000a93ef409cbfba42081bf11889d8a4725476aff41adffc82c249ecc4df021242f856148df96fbe22a059320421ad28096f5bcc759b5f6910d0dc532d8f3fba639d2447368020a002246445ce23c10c0185d44b78710001ef0a2f8a53b1408b1e8de4e28c81de1accfe78980598924a006cc66b001dc0a6603fed3a1aaa3fe265f1373176fa30788e4e79609f7c7f67bf7be1a97fbe68f8218188793981f3dd8f2e8e77a823b91f2a96e2b25c6bf0e978ce0a72fc8449ee15bb378c64c5ee07e1fedb8e636db15fbee28c86ac994cc1c02c308670dca29a2cca29095aef870c976f433efdea61dca41b333e73dce1805ba6363dd3758d04ac027f2e0e37f7ff8ff7cde058d79fa33b4c8be5b9d2040e9931509eeae37e8f86c57b9ddb67962a086cdaebdcf4a01361e07d0ff6ab7c5e8ebbabe792d13b4aa5a1ed18aa9edad75c87bf685818b84321fff47ca5b702755f9f19a9ea02130b6e5e8c8246676acc0687c5266549369fac1e10158baa8f87ea554fc31b3f6a5321d7295a4b76c31365052bba9964378ca8e9e856e7cf3d39c90e17446045f3195fe6f41b5ac27fdb49cc2aedc4820856849fd14b96bc47a7c56745b632f0feca2f99d4b5da2ebc1578479598b4e1857af38939ff9052460eeb265bfaec715ef9fd7895abc1ba5cae28c79a4846f1ec217df5c476d3a19cbbf2adde5c3184e487721fb4203093a7269b3dddafa0f3acdb214bf47704a303bb080ddcdc2add59b10245db2ad66e1df00c971a17b3356a525055aa85f51fe9e6fc6c565a176d3cd0cf514976c7a1b7fd1b551dd715a26b3518c856ec67e80784ce7165e26838ea63ae4c88e71ec9422c409d8585aa49cefc3279b442103399f3dc4f82ad79f45fbfc09c84a2cf71939ee792cd7f42c305bb6343df11090a758ef830611d73b07c97d0ac3797f2f74ce0ec1300aecd47a073b2404d35a0e2c1a572283ab95825df44895e79994ded249800a6719d470951701c8e2292f7addb289c6f9b9ee8ae7f05146cda658a2af77da64a2016afbafc24f6d85c7c055179275b5233ea06d5bd335f42f7c58664f2a686df3e529c1789c6ab306e6aa74cd5f6c7bd4b257ba3ee78cd4785399b94a1b92d9c41304add0a0adbb0124d663a860615a229697df67117536ad022cecb992b02df0846c7fad9fdfdbec73ae7a3f8213d2288b80cf41b0ec704614574dd14f998472ce96e66f707ef58e0a467298f916e123956c2478312f2a62cd167e1402e60e80f80af784728fe0cf967d171a2a6c812ea7825804de6d8a4d5df932ac497c256b31abf08adc5fa6107cfc11fd493aab47d2a5f0e84a90b71fa1797cf3ade87813d866e4f26e44eaadf3bbe2c66470a751a913016fdb65059b5f839d98ef4c547567fa348e21c3cef404fd5740b2b2a05aeee0da7ab1ec2c4ad9c0e3ad3a5db59b4a3df4448f22e273e442207f3d2754e61790c5c2fbde5e12ecd02d07009cf237079f99d4777090b80873b5c1e83fba5ef6cff52332705518fcda1a97f7a4072ef2044d3c4e802764eb957894b731b74ca18ea0b4d2e2415e080906084266b3af63c5684c6dc3aa1d15e540c45edd08da78375958423ed78924268fd553b9434264952fbc6773f21ad41356186956ae4fc66b542e5513785eaf8207ef7b89c7cfbdbd99b992a4524388c53f3a40a4fa6015f0a2664a0fa83ee751d72fa1432cbe1a293c6b72b1f157d53981a2e08e833178a750228403b9311e87ea52fb21643a27b2bfc5459c27e218e35c2c61e6f95536860e69891b3091137159a0b6a08add4dd5d762a39a52f5db292b24844eb221c5b446a86228787284a5a23884074fa5a6eacb7fb87689dca4e04140518299aceecf6378b60da5c3aba22985205437076e64cb72b25387a85b9a5c429e05d24f91901900530cb4f4666c1ce2f9c77ad3a75add49b1679ecac04263d8bc92576f7e40f21b9de4263958e7e05bf5664f3f7a05daf0f573ccefa902ea2bcfc75280c4c99e06951e3a3b9a4b0577359be24396228689929ea5284c3b3f9bc4ce82dcc1aa39c0dc4c5c47d57a0590def792b5e045855daea307390716d541b8006fe5aa563ac23b19158d77aa203923a635ddd5a3475109d731d06cd77e321e8300cd84d654c0cd69e6015d42327486fff4c0a89fc3f92b25210659579d256037e352e64fc3a55700b15d49282caf8854f75e600a31e6754b71b605a9a06f300ac6e0370e46f9c7f702a8d9fb482761bd61d3195597d15674ac83c8fef58e422de43444499538cbd63588b9b24a835325446c69633831d3d9593c3f10d88d136b051f309df66c1d38f84a5f8a6075ea68901e4bf79b0e613607f5a1afb1b1d473168625c210726e479f0d72c9be29fab0097304f6bb901c051fddfb15273f29d983eb808ae695e0fb3d27729a943f3619ba0e7af1dae3b5fb45b65ecdc598ec8812101d47c7d924d63998f5c00086add54b647e8cc886fd25615b8fef3484d51a334329d26b8b4884d383f40d392a2e7e7d7b7501c4905aa4f772b9de28737613b4507c2ad4d772747413b058778a9c179d2deda0f3b853316e388601906917cf027c11616fc3c9984209f7868810a54c9401347114b003b34f1a8fb5af7a4a0c50c4c28d25219021873817f5f366f1e85eaad992dbc95f81fb3faa3dc93f40e910249a4d2ce3e63ec6fcf9bb7b5b7e2062a2aaec7af502da5ee929ea92560e022b2d85484a45d0b53531e6f37a171667e1ce7e19c0183f641dfb5f217e04a06f1bc08ec9ef69555e6e1bbfca7926929de44447202a849f4bc3c515c103dfa4cda0c9980d46a4c036e2dcd4fa8229cd565e559ce8435d5d2bb07eac99487435307c3fb9b02c960aba1015907642099b63b760130fed9816a242249a1e7e48e7caecfd822780d9549217db1e48f1b7718cc95fde86db8c8c9dcdeca27e816673c00e91c003f0a4a2b6a286c3d662d41b0974975d3e07240d9f34948bfbbd311c0eb1e7405891cef2eddee8c9a3ced9a92eb7ef85058734166de2a0cb12b7406dc6b13cdad24f7982016d45551223aa55f0a6839b70040e85cc933e71888325d63e07247e6499a1fafecbbbc736b7ec96c1c768e9481d6ddae9e2536928ed7f835d360580e5705ac74af3c9a78b23ae5dac0374a45dcdf4d34e9d38842223fad059fccae288eca37350f9f8680a98ac039b3742a672d3e91b8299200a5724130bf6a7ae1d9b472cb36b5f156047b00a7c55132616ce9dc59081f38e4d6b7279d56b5d9032189e0270bbd7125be2bc543e51b83fdec5c86a0aa49915a12af03dc612fa668883d43a6aa2e2d68a3b24224b9c18c6fd4574a5fc52d705c26960fb3345e5a7d1951212136be1202ab487e80fc8f06230575a11f584091621180b45f6aa046abcb78f04c0dae64fa2e1761fe9a7602b5b735bd7a9dbce821a7a935e615aeccf9e9fa2235a955806bb951404be12a126e742e5dd0722a6bf17dc2d1a1c110ca72a2c7c63fe0b62850a9b25c23fab3af0a62e8678da160a10456d307efdf2b311d573ee08a1dc958a9de3d48c18d34dd272f556eb14572cfc0d91dccc3fc07459237237d28a7159c4709c952e0d4a50307856964c0fb5f66f0d62994eea9159b59ff067a0b20e508aadb1b3e7a4a63009a0ff2e3893674c8e4dcfa4394e814aa3917d7c56213a4e7b105c43b3dce936629302b2bedad1852d50848381737672d7dcc7dd201f10569af9a20f309090ced85a7aad69223cdf1fd98d8662093340b068fb51af6bd6984160e734561b10a18c12d82915202fc9ea0faeb31619a100858ad0ca44a10944e659a09e0a17d2c32c32cbbf05f93641f2a126a4a778ffe9da8edb7893cda07eabefba4876d5af5a51029e1b8d98c76c85d4585b961d350be67d315868df2823cfa6ae2c24e692277a14a299362741d4362b40230c8a6008ce207d9140340d4b43ca0c30337b0beb0492d8e51a5fc31b27c711482b587ee7313bad38060325f32d908f8397063c50582a0066d69a81eff19a0025d96b6b423f570f6c610b09be44867c627b3d8e4c5fe5f0046ae5ab9ed3507155ddfe2916c58f917e0fda770780ec6c83dd2fa1770981f42d7f2f55fba4dadb0029ece6c0003e61112c7df1daccbe8022bbec9abd922d3ffd5be5e9b0be52188aea0ed575fbb458b026d23aca766db1e3968c64ba5255d9d938e9dfc740bb5f5bd8cddc8846c5dc771dc0633ea26c862230ca4c124f980b51b336ff0961163dcc690d91b55633aa19b0a009aba04f3653994052bc4936b422807dd9a8442b604f79b507b5e0186132d8d872f80b132aa64a4dafd5a31489bf1b34bd47166125ba40ee53c8802a0fb1b5d153acb6e73d6007bf2a1e4ad724f95bbd81802946cbb613d824c457871d4266ee4c2c9949fb4014fecab09745cf989f6f413f447abcc5141ee954f39e70a534162b4953d713af880c0ed8884255fdef2e2f49e19a847ddc86425d6afca6f0ea4e81354368d89524836f5fd43d555a56d9d669525ddecdb2a37e4cb3d851cdd9c426bb4378ba8b680dded303048ac43b0cb25d3367a55d28f1e33b26bfd60c53bfd0485da2fceaec1489c5083a891caf92d173f4355b6b5ea561099d2bc257c75a2d21075321a44a01a378ae5da1a074dc0b67233ba3b3aec70e03e984f73504f596b4b085e2739a3aa016fa0b53811dc0319d21a7f6fac1253d2d8e6a3cf0c4d38c340a7c09b1da07e533693fd63d8c19d9456a56c34305cace8e882009954d99d75da0c18ee336a55b7abc5b1b26a640d670a52d15e52e66e283277098cbfccba082284823a08b61c210b6baa969c21d0314d700139c44fc508788ef19664c67cbb248d5d0180bb5724a55d4bf20a63f1ad64c80ea09c40afe437eff455c3d190fa98d0baee56580da3bbbe46848eeb04a6ecf35c2086b54588a040c50dd6b001b820b693074e5c469461d4b0f56b746c984d502781c8bcd615bb05ff4b1813084d793d9290c8ddfe15af790203bb2a81b139b1e1aea655c687b38aa5670be17b5ea251f60743fd8db89687eb2a15a8f4bbc417995ec23cf592b2dccc0325c09ff59291226c94ea06fa6c79721f8798789ed21ae3dd5ada204cd2a7729b67ad88b61f9c6d5ae27998d440cbbb09cfe29e494c1493b73a07c4b5a82bed982425698865237905e69e5e1d72e19351ba2b10072785bb4bae4446b5e5b8b54d393d4f7eb5b8a0bf7a91dea42f610c737fc86f72e0f7222317961ab83c978a89467c8abfebd92eaa279e9b936a702df16c2d27d9a3768365210423c558c24acba5ce48aefeb2081a44bd460201c3a930d952384f23c498ac4312010613926b14ec8c09e172c2d4e163a866f1b01dc1c2671e386ceeec2b6c08fa9c82a242894e6f47e610aff3ec17fde32f2c91d8f6ba1519f1db21619096b3227974ea734409b5a41cddcbc4b31b57f806e50f30797649dbc5e73222d137302f5a9d3ae5684674c3e4ef6c2697492b9081d183db97b17dcf862b35592eef84261e4ba101616e670a83e2b43763444eb89075777ce023ce1a00455923b110a280569a9f9fd0b9b7ade099108ef6a973d8ff2e0ad30e7cd30ac5ddfa168676c7060140a35af93216e7b4cb5b19ce2e7d504630e83499fc4a2c1204c3e2965b9ec4ff93862aad244f7311bfe27aa8a0fe447267061a0ead0c943249a95c48205ff2668d383d6c4ff6b1449215555b5eac6b5e49cd419733cdde7e9dd09f65e536d14cf382aedf8e7aac271fa3c35d87f68d2dc1701f944173f8692ed727015a29d5c33b8809c46f259fd5557e56b028602061d2018916967dba43080c2359cd3334909a304207dfc6fbecaca1e8215e77a47d7bc89ee85eac97001f6af6915065ff18540bd7262db7db9b761f721f3a6920949a388145e138a94a4a6b3c405e6d71ff3f609b88058181e2fd717dffa72c10968f55152c38291fa48670911043f8f4ed0a30cd0f153a6625889483c38dcf47aeff01dda5fc8b01c0e036432224196ddbbae4c1451370b70ef2f67045c46c297918035c03ff2d96554835b4adb35ef7c3944c5d3b4450917d8dd8bd0ef61bd22e35ebaec1814e58e8ea8782a4ebad270b88508be79ce8bd642a30197dc13a05811e08054743466f4037774ad21d16c44ea7e0c4da2a74594932427b82d32c85d09e91527d91503dcd097b9d377490055288e164a9771f1b283b7606c8c4940371e64ba5ebbe01c42dbed147aacbfb4086617d03f6eebde136af89a72987146faa71e54b50f6ae3953c867c29e1660c94de96f7e611ace072a5e661e2630fca3daa317d234b195b33736f1f10d714b0a05a4226cf198111cc2bf0764fc63c021adaa0b886e9a8e8c6a53cc0f20e3a9531a1f24e328ddd88653999b9770c89c77ee52c864a9b31ddf908fe3b635b9cd81c0ea4cfb868cb47a08f0512caac98ac1d0867d10258ca31a48117bfe8667d33d458aaa660e05d815e0d80cc556a36b1c7685dcdc5321a263f2be99ef5d5bb6b262ce1ee80b933913f841af502d1472cbbbcf02f385f3c64825dc65894336cfc7fa8e5221392b8f418da756e87aa560c22ed0c7d01327ccd7a1a55ef923fecdd55007c6c031af8a33810e5754001220509ccb6039e2b028a9243c5d1b52b7d5f657d4920a227598474301106f6b2e52e7f7c2c1d148492e209d900e02941d7c9c1907810720c5c17affcc1ce629cc6bd4e04de13d2d5d9ff5992896d81c00dce9dcc01d7495f539fb26beb36fc76756de398dc279559f25917f4c9c50ea66d94c11f98c5866f171b1dd6cf53320f4162d4a242e2049b949073301648a764035994dbb9db14e234f00aaf761c1157ad76aa80b547e736edc038241424a03411fbc12b70d17832220d25fc281685d2acad5a4a150f5b320f2e4e30248c3e214003d1c092e1a8f58489035a2b7c79adbe058410b158ca59dc058b10135a828be2b95a9e1a350299c6456a2696af35419e378829f518fa22e2dd874dc30ddfd45936a1db3417bd782a6f4aa55c1a9fd80c1067eb0ae2b0c3cb1802e69a871604864b614f93ddb72a543cd6437e45a1118b529223240df0e9af74a6ec5f618471009de71c0d57bf5311cf70cbe39cb541f4df4ebc395383a0fd164abeb369a107b0990a5180d05d4327dc88da734084d7ae634edd3985fe8d8a96f683c1a5edebf5bda8b1c4ca0fd3b1a64de14cfc09f3cd227e39396544bc8f906c7df88539d062c73d02e8c9b89688b1b52ec90097340770518f25bc40a908a8d28b0521883eaac2c9c6f6839021ef0520622775d4785d2c8a91443981eecc18a4d82b8ce2e9cf089bfa9a04fb919a9a3637dfe7128dace9398643f1987297ca7624578d60c04999e6c2a14ac8c7945268d473d50debc28eedaa08e73637ac3a696071d388a87f8fe94bbe742e058225f5b1a0460db24a0fcbacd726806723a23916a0e46403c4246d22739547cbc6859d83ca6efbf9b4a1d2ba64116bab662680ced9cbe88467e761f52112180b601027f036dc9d2bfabb042c4485164df92f2b130dc08fc9448be8dcf21e3098baea87ff6538153cff150c66a2dfb61e2a6341b3a545fbfcb1df27a8564dc1261ea5788cb160479fd5daab2524d63c78ba57b7abb1068b10e73f4a973f69b085f67384528d06ab299bf51f92085df86f472de34dc287d4935e99c48d6168934bb7d259d7eaa70837442e4d288b9a9fa4e92dd2bdf023bac04861ed5345110dd3acd71fec5410034a0a3e39e7dea3b3a2c2a6ddab0f72e75694a4814e26fa94a5ac21ea59b8158e8f7741de076f4cc293470829dce02e9d3acaf146d9d18a787b10374c5ab4621a51bd402a34a5740c1eb08fc6f25a3d77b160a67c93e063a7d18143e61cc075a51fb5c3a8aad25a6d12675beb3741968df01f967f62985b1fddf50e4cd9232ace1e7ef3f8ce092fea6a51bfa22b88f3abb057b5b6de992a0147de37498612f112fe470df69c5962aab869ddb8bea688e2a94b96e02a9d803fd4fe29bad71184a0d43e31326a21698e95df58d37eff6062d8ad7301f6c439d44aab68c14ed4a014458d515022a3b265758becf2adf8ec13d8b5b5896ce17426fceab4e7d48defb163cf4461adf2aa0f1d0a7cf09b2de809234d1baa75db1a98ec6ead030af962faeb74294065fcc96572da9d040ab3a8497f41e2904de0a4f00d90ad177dd83cc54101109fa63a1cdb37e817f7cba71734231eae860d144f73956f41db805457d77e577363bd241ce95bd042e41f38063602bcaf451f790685c8d7bc45be0c89b61fab7af747a5112cba08581aed671c72d2f7be35d30ce8e0ca4db1b77f5aafa73f706707fda9acf8f4b5f70c4a5df3e56ba586f696d65d1e1390af858eee13462a4b7c834e84bc497e98ba74fa1f56784c598d8c742f84c902cb9c3a22fbca9174f89dcf5b5cca1c7efad8d2006a520f4cc80391d32e62558b5346fd4a8ecd6a8561269f58a6d8a46120ee60534ef678a4f544f7e58afcd861240609a88ef2c46ce8e5fafa5a4c9902a8fdcc66a12857d05df52544d595ab3b87ec02a66217522bc7dd6623556b17656cdcaccac9cbe0e4bae97edf954925760bb0a0b185668016e32a0c136491d1892dccbdba844514a2677e4bc4174e846fa784fd543ef66f0eba712bcae783cfeeeaaec81bf759160b9b81841c83340ee21e2a4042cbd99702cb6f5bed09309e7730b8a983b5376b0831c7fb6b1e9c4847aaf9e1b37e3e2cbf1093a4bcf4f85eaa5de66161415876c9c9feaffa6d0f352e4c1e8588eef056abd7a6406e2b4ffbe27e3897bbd2b7cdd489eedbcf51cb7588556552d33b694fa68eb92ee92a2d5976906bf04b194d56b5d513f42741ce8512833918e8b124f7f2528e55252951636ed49a7e590805ffe204a3ae6e6ea68503074b3f1073a1ef7b4ad50409e6e2a6afbe32233682f77548b4a1f7059bdb4eb982fb6eea38ff8596d15081c404116ddbc823c9286fa270af2d0bea6bd9651aa219243c08ea44c0b60ca3737c1c66957c8f7e51abf97f99745826cc4e2f6c178152d1792553fecb614c1eae6762bde881444b577fab251f3191ba58af5b1db0089f2eb43e4621f97f220534dfb18990a89b3e7f83f42e6e3becd44420ead6a8497013899b34582cb9259009e6bc4846c09f509d9f3210a19e741f1259c42cebf9b7a98461ad991a68255eb90d05a7697e5d132003e433f97166295c67a7382feeaa7f766cc5e8ca646ddb83b6b635b61e902cbcc439823a3c77ed075f87dc9b2e3b324e70bca28febb7857901b00f706959c60b3eb6769edf14eec72acec90822ca3b69ec4e1461576fa51a4dae8b64a3e755ceb9652445805b828774ab108057d2beafc1c233159a5adc4a9ec112babaa0119eedd2f298dedb9334086f1518479e9f21740d188d9ffe3cc61644c5715e45aec2923f8c03f96dadfa70c90d167590f52e395b1a01816cc0ee585e2d921e41a3eb1cb260048c1ec38814957f0c52512738d0ff143fdb4713a6b0799a999ce13330ae6d9eb7dd813e5a5b1c567d67941e1251f35dff71811d042c3a0bb409366450bffc3f5a5ea733a9af919693f43989f814673361888459a0431199fe69f02115527a41e7945ace883ce35d534a8cbf9816027fcffa9827d59584bab87852bfab2fa3486dd141eccb95412c0452fd23e7f7134b80333cc9f1a3e0d564b8f170f66a9afc8e71e27a94f3de4cfc5fb5a3b8dedaa31b982136ec4f60f59506a9ec8c42e9d17b4225c7397798a14a9e89de0c1e901f645489b869bb7fc91ddcb0725a14c79eb178364db72eedecd854ec4f702be604923faefb575a9f13408da4ec238f8b3a7396b47d975d89c0a2ea7916b2cdb05437b0700ca268f76b8aeb52e613c3f65b300b2052024e5c673707395cd26e687645f659ee7643370b513d1b55aa1072a8068111b6cd93e08dd14ddbbb81b6b4efe5139a007979a8df5f2befc7d8bc4072bb64af57a4a0ebae1987246e2cdcede9fa5815831a58d36ac7cddc9f8c6a3c5b12831f7e86c97cd23296ec34b162ca04190fc4aee6cbebe68c044bed20696c45b0f6f33e0afe70214bd67964e83425649d731138a0ea869c66239b95e841b7f76d0a862a9ee11da4c948bc55a0c6db9694bc0a24e9fc56f50eaaff2b9be92928e5cc4443bad601ab93eb05af381c4fd445248360ae7f5d4d186549ee9bd1870bfd4f702fa58a99d73b305c29eddbba357e12de3068a60e9b4abd7b51c4d2c63f83b62c3624404a3dc6f519b0cd0129b049a1fc5d4b6bf605eae63b9536c52397b34b7e1c7eeb65cd549134d605f3cb5ab8048049b8f6046042f9af7b4907db0da04eda042fe9913015c9803fa9e2e8c5820caca9a0e3dea21a8e732941ca3a661f277e14596f02f2c1416df9cca29bdefc972c44a6b1128c229c3637cf8bae04528550540112843455686e0aabc457d6478bd49182990d967461c9df879696defb626b79432252903b708ac08dd0879bcf986257b59e26e6a76b2c4dda844d92c783966e8398db019913441217376370e8785a343c533de11dc59e286a8a21a822acbaa2c714264e5ac5c6bc45e562a8e22c4f2f75ebbbbbb7f278c3ee008d5a7675f7f0709cc63c5923a3821ae3250963821a2b2b7f3531c81e4c9e4433824d0fc3a275365924d2497c9a48b180c9ed35a6b31b673eef4cffab1103b507d1c52e01e7f99b3d96a53c9c5895466893349b6daa4f13bdfca410820aab0782923cd18b5eac3086898a325892c6da6a8d5bfca59d9c531962d9204aaef17865f483d0506eb9d4cd2fb0afcf5ccfeed997d9eb7ef210683997abac7effa995befbd6496627ad128efa581278e0d277ba1ffeb3e8c4986851ec3ecf1fa22b735d5b12f7149cf6a4f11fcf4f1d36f853d44b0887b6645ff7ee622f77087271c279a5c692c49e243f34903d524482da9fad3a94a356f5298014a172e48f952ab3c56f8120615345a92c8a1565f222cf4be0c0e4da651828e7fbedff9222fea2f84d1067a61f089f8eb1d87b0d82b1c6379270e1e27d24e374e39b9fa843b37fc33e3d1b4ee6fab2888fd4f830ffcc21e22af9f0ffb97387eef8925f4c34210c3beef837d18c42058412120881d1402beccdf0e0862cfc3588218dcd9095b8fc3fb9f7d3094d9821ac0bebe5e1e4ea9d70b7c7d51efc03c58384ed0f3c219357bb805857ca2f442d8c360324fa6a6a6f9d79fdf7733ccf3c0ff602f414f1ca1cbe04b10e618070bef8361f71ecea69e79ef791e4abd5ea07f358cf27a7be6d19ec59eeaf7cba6b59a9ca4baa9db1569cf5c66c17a022caeb4d5e57dadb586f63d3afbbeccfe444260c9e3cd4d2b6a8fe6ef0f8044cd9da470b79910514f16ec3f714f81c777aa4e0ee4ef7faf93d31558f62cb492aa1395501e4da306c8feb32f5c32e55499b2aa9df021d5f0a4d685be579d7c289440fe405217dcfcc78acbeee443b22675abb8af4e55aadee4905cd303992270b061ce0f516afe1527873ec0c315575c5ac0522aa3e64f6bee8ef1fc7b47097c4324fef58db27da2dc753f32c9dd5823d3b7b767b4093f96fd4c680721a408f1e432a0a748eeb7e1542149cdadd6e30236c25d230922996207dfc3029eb93b4e8a2ae3a4a64c30c2b3d9042d60890ba24e0e624ef617414927f91006fcfd51484a9a49f24a8993f773f72332c8bfc594943495e6921cca8097273850559058a1859aff6492431b2401c6117466f80289889abf043d1ae4948379461ea1934106f9cf28b287ffa4338a9c79fde84c924154ba768e9ee2f44c66996b1e67d228b192a464ff23494cf0ac05e96bf6b5583149038549e69159059687f5b77eabca2c7b728f8b5fcf08d95fbe4ce6433f0dd49fc308fc435464f40a6750444546df0dd7d5ba5f888a8c7eac081115190909111519e5ac0c9efc695d61ff01ebbffef4af175c936a52d3a44c0ebe9e754dca4955a92e5526068c298304c3183357920690254b162e43c00086935a7fe72efdb2feea94c51275cad751ffd2766f292995524a69b978530d9e7fb1e00984080c3c7bae64f7243c5fc169ad532bf5b682c2ecdb40d2c6185ffb6c9f5cc8218fd63578274b5c10629c0862cb551051f004028c1e2a5be255badd30308e2c7140b4c96464d346e72b213528e47aaeb6615c7c795c427c5d0fa10189694706251c10543ea533241832438e8a1c4362c012fa96c2f6772f969293325e7c446cc8143ab81fa47886c88065f483d3c5b21f5cc8e3b7fa25f506cbb2c4457941a9c03c59e2a2ae84a2acb488c2c2828b1a816bd62fe403ea89ecb4678499e9571d50704b617c6554f63f856644b299100ce6def42677cfb172e58c152db27f8c02990e387088d384080a71dc2d659b263272f060e158d9df891cc40820fb87a010c75ac084b4493f28843ed12405902627d95f0728c4bbbba3c87da3d63d013640971bb2bf047336a5a961431b1ff7f90517342f2c0526fbf3d023abc1713964e5eeeefe1c322e74401c4c549cc8fe325088cbba5cdd78a2720606380c91fd6d503a394066072a1b70c0a18629b526a3030b75b0a87ec8c14dad5d29b71629b97b0709ccb305172cb23f757777ef99e12a37bd614beeff7243154fe0a88091e5fed8cf2cd27891051a2b723674c96131c7c90b392eb6380d5cacd8e139c3c354eea7e1d9fd876af89224878a22beb891c2451558bcd0a68b2e4bd4dc67c8be44761b358ff30444ee7f020a86dcffc550eb8fc97cfec782dcbf030a6922976ab2bfc90eabb9fb95ffc0d3875a5739937bcdd20e192fd1b1a04a0db91f2624a3b345992f5165e4eafc8062871abce012c6183d4c61eaa23bd7af19847fcc5fe6efe3fffe3feec319d91f0485f8cc861bd27059e10a1a9e405173263a7c19a30b5c1537362aa46cb1c9269559ef42e86cd3c317a72937d4dac9c98727b9d7e4f6c18a2cf372959ba85bcb17386813a7b9a8999a0e74441d7cc8fead58d3945871c1090a2b30345162ca2156ebf70084c631a2ec5056b27f77af5c862d5b5e5974a9f2e105c90b13d93f6641212eabb57b56e161859d39576c70e20a17396081e1092c585ef6993f6e7f99eb90bd46cd696be922370b353272124c67d8e4de9225b7182d54720b1d11218992069adf6dc60e4b5151a68821a68c5a3ba1c68523e0e456301344ad63c8eda52af707a194470e1effa5647f5ac316d98fc86e8310f927c7ac9de0942d568408630ca52fa2f080a5a68530ba8489b2a2d3c5579713f6c993f60e64300eb965a8f5fb64716a935b0b94dccf038b175f16edcab7cb7b96f01c5d7f5def724d77777dcb738597762ed77744e274b9c67bbb7b3b298eb2ec327fccc593edc996e35f9915cc650efd30c0c4a0571043c511cf2172bf9ce253ee9713038a427675effaae0c7f9debef177a3d23c0433db47ba8d841132707ea9dc7dfc508ec5fff7afdce1b79fdce1b793d169748f1c5b9f4fa9778e79b1eb0c862830a496cb69ad07729c1c501f8ddd7bd085ffec00f1cc7b1f3e04806431a8e3cb28b01347b2378162dce52b5bd7dc19f3bb74ee35cf2217beba82ceed63f5aa7dca345932d1a7ba3b2384a7fe0e8104596932f562dd4da890d93175451a8acb1a2d6df851654610a273d4a505ab2cc383c8282ca010535d534cf9265868547505350371c50b7a6a6f90e59e6577804d5e4247342d334c7926506c3a32734b91bb9394df32b59e62f3c7a9a43c7061da8274d731db2ccaef008ea0954520da824384d732b59e61b1e3dc179c28a3d614535cd97b2cc5e78f41425c52345d534af92656e85474f54381ab83a4df31cf2531d28db0e946daa698e4396b986474f53377cab6a9a53c932dbf0e8a9ca0a66f5c4a6697e43969986474f6c9eae5e4f57504d9ae6366499677804d5040a0984427a8ad334af21cb2cc3a3a7acfc8143663e7aca924132532c94893639f510139bcd66a392479bb3564d933d249b96d54d3dd4ea6a9043554a0c39e4483ec7d2913f5c2fa3c2535d54ee6a86c98a2c0a66e17628e4f64021f65b523e94e33b47281bc85ad964d65ca09029a3f45ba010da171422bbeb51d9ec9e56291f6a4919b5aad48ecf397de92d1d3afc873cc242477a2283fa8d7cc8a148a03772a8b5830c87dc3fc566315a2f2c1915c4a4c036d792f2217b456e37f6094f0cb6e228c2d73d92273995994759143cda9c7d9f3629df458095e75fb0015dbb211d9960c954ec39749e385292e84f7a369386eccde272dbda563da967fd398ea03bb267d386d4e473a4aeaacb75687ca8bb8dd6dea8233d712bf0e848ae4463d2e6be2525e493472ad5fada36f693dcefcd9e494a5226959aebd96cd62d29c7de92ca493929edd2e65c1ce9d7d9288bcc2213f84142bf9b10a13f9148b193c446cabd95e278733f11786c5b92ad69dea46912e9090d499859fe6765797b21c97593f501a0f8a855e441061e7d78b4e382ef8f3fd22a891f759752fa13d54397d29f76bddec67f3f52daceefbc577776ead30fc63332b111f2bc04712c26f6682073ccfd63a2ec59ecfd5fcf24d7705412a33c9549ae34604f61bf53e418061365cf9cdef0133f327e5cd44066fa1bf4d097b9c674dd103529c5b929a53e52f48a8c3581633d248bc52410adf760ad56ebbd96cb652dace5b95cf573cdace4f933c9ad70fcdc02a1bb16933c3bfa361c9b0df5223c05d4ae865d27a5e39e7d334b90493767952781e09e727777779fde3e7dcee93fe79c09f550923a9db6daf36cabe56a75eb8a3d4458e498f6957905627e2ee3823bf08f88f6546e3c73a0212606b39b36b3ed8ebe9c46334ff10bff93dd75f77ddf27f6808fe47bfbe067ef33c91d8edf38472599e69bdbc5244f57f7dd7d91b7e8074b81daa722fda1368afaf7c29ce0f127d39f198fe95d684113f862f124104c95bc2baf27c609cbbd183bc93a4a3219c6b6afeadba7334c0c94bcfe13bac46687605fddc88760a24c02d5af725c92bbb053427f66f72a065f4c32d862935b5fe45f4bfc6655ca7bdf5d9e054d60fadd5f7108fd6bada59f73b1e05de94fdf67dfe9edb5a75c5fdd7d86e3a724f77fdd610f317bd49f35d7fb7d2938c92aab57c51f9d66eff0bed3eb0243f304727d4b29edc25cfd050b26555587699a7232b697b2bb7bfda2564aca52ce2852cfbc49cfdc6d32c8eb1bf15a15979c506b27077206d04c1b4bcf28ae8a14e7403e023c3696ec8da5694cf3afbcc89a734a27a62882b4ea42099ad0c04c9249b9fb160f14789457f6f69dcdc6a3dfbdaca10465e05a5d48eadb6b955ddf75dd773fc1213e72e599028fd2ca25d6a7df0a4910bfce72b1ec6877cfa94490194586910e36904568ba76d7cff50c4b81c76e92e5c7dee0981bbc44a5953c296355708f33aa6617a7138e028b3cc6f87066e9f3f4ca8e8baa5c9d7456793b71f248efcc5527448225ce0c958c33f324cb8f658933d394a728132065a90e31d22cbf00f1c5c9a93b6ecea63487975a2bae08256bed972c5996b8226c368c2b79bcb73961a8849102012f470de0bd372f7705c5f37333bd326cdcb061c3ae01b36ec86edca84dbca690e190c96c0e7fd707534cf1c5342a4800414197cae80ffd9914d31f192d5307fb504c6533ece406278ff74bd29727bee4a89c1c36c89bcc92372f5ce418092e029141fd53cc4006f1d0e171a84a1e949128dfa6dcf2488980c81ff2fb33903f42305a78f8905d2c9b93dbe77f8a8003c51483450c956b73289d693ae76df5551e69a6cae3ccf2b670b82a97109e53ea7e5b32088725b718a43cd2cc268f378b71926f0b1785c3e5406b14356816ee8badca83e34ead9dead074b8a9a61cebd9775d77ef9d92e253b69ca5d391c29da1aa948639bb569c0d97e4eed45a2c3ab5daaec399c999b9baf77e4f28783f3346489c99dbe50227c1f32f190e98edb4daeeb65cde07be60df0e8d9d9d4f0bd80e34e66c1a343c1b78b4488a8194d6582c0c15ad61a3468dcf0df5cab071c3860dbb06ccba21bb71a336f19a42864326b3b93ae67a4ee0c881034719dcadcc989ba327478e304d6e99a63253f8fbc09e9e32546e9ca71983c160580209ee043a2698009625ae8c0b3f656c8fb3c0b0406b139fef0c1daf4307e8844c161828427372ece3e1e189fd4f65c5ae6ad4a861230ca95c35e277e3c60d992852f0e1c08123070514f4f4f4f8fcfcd0d60f3bbe49e34a0500a8a0029e2c7164a090c57aa643878e070000d8dc19d06c46a68ae22c5600fa66e8ca310a28a0e0270001a0167c3b76eca8c0020bc850f1f8665590008282c83091912223850c9617400f010840e806668923e3e412d143a8470fa10b8484ceb86000175c40854545870a8e8c5e0d80000318c0cf1c02f8200001a872b8478f1e423e7c50dd6e9b027c175c70c1000a50803057e468dff4c80c110d0db5bc7c41d0802232001151cb0bcf92017e18c0009f0e1fce124715c39da27af203831f3fe85021651b525055d9ee191800c10083a82fb487581640320002648c943158e818177014197c07c82003508349828b5406c9203173ba2c71639a7c4262c4c4f972535009ef001f06186000e40007b0410402be0c32c8e000084000024021084040488b4021f2a7b06ac8b1fe0d6668517a6f4d724bfe90594e2dbc1c34d43cca6f713c2183445cd9b34b38b34a6f39a513a10530125964da32c8009ce97b5802cd5474fae3d019b9c8272884cccd1e4e0c952c7162a2724c00b7a81bd6ed2a463df3223af27c23fa19d980f81b79551e659921130328453e6575e41297b3ca23ae6f3cf95364f6c8207f1cb2877f2d8243ce3cdba754c42183fc67d72903ab48a9cc27378c09dc3f71255425f5f3bdd35642fdf9f9c994cadb8f0b0cfdb00c48cc66d4cedc7d5a5085a95bff26ed97369c6def4f50014cf2fd6a1720730fe9af6fc3fea2aeb316e6777fb45dd8fa1a4a1bd234b3dc55b1c8acc81b1cd2b41a762f3638c46db53fcb34cb6f8923cd3db45647a27aadd532e022b1628ffdfa9dd8637f96ab387337220b9a29e5ec97b9840bf433c955d2e0c91f97abab933f4bdc1b36d9ebfb75df7afa5e575d21cd13a45df75de7e2e04d5396b829b2b20559e2ded8f29d44cac8738af081aeee7385324fef6ba8c5134ff86a5dfa2b38a49fbe0489d8dc23752d60b12a78fcdc2ed6d0f5157604b64f87f4d4afb9f52d31b606fff4ec2928648acf63e6e2e1c9b90396463851ca6fa6f24e96b83357f98aa3dfd81a1cfbea03882c56650a8523935c3b51a4b9a7cf6039c59e122e3032c9798244fc1d898b3df36b9e5daf38a24e96b823a4f20559e28ec065ead9ef7e7622094a70eefe5a51d21e2d8e5e9eb0289832c94e3c19041944ff460e2791c789e58ffa3cf627c841bfff279547fb22c85cf6963f6e1efbceb7dd0883dd8b14d18488a5eadda5b7a3dd6dbadda461569912a86d58d3366d5dd74445f7f7fad5a2f1cebaedba74f68895c43a22ad9d7d976f6a6fad230774d0b3ae922a48d7dbda800c8376c4019286441ef9100e79a4b3923018b54ebf23941ea1df365310d80dc8a1db7fab38a7a444542e28a5344c7dbf32c827be1106cfaf2ece1e0fe43137c250296590065f76116fb9b2deb57874b30b8484a8534b942d58e4651afe3c95bfb2ca955ba1073dbbddf71bf140fea83fa47523093c7fc4382e286bb5b277058774f7c888c4191db5912b307d6ba95fd927ed947e457c537a963fdd4cdcdaf25c2def56b196d2aeb7082fd72a377465cfe572cd29d4aa4558fbde85ad5cdd87b825791d6d110df96aa59d4fcbbc0cba70888247a1dcaeec0a897a7689e40fa7f40611eeb49567f2470e1ee243e56d51704ad9e0c9250a3c974c90a50555b85ee1f9287894268bdcba1591f8b7dc47cfe8f733e3e17dde2722f1be7ae24c48888b86a3129aeb1bd56f204d7331ac62102250834e1cefcb1d3a787e0d67fe9916e7dbea5aa1196209f6290535b05e6716ba57b80bf6f2f53d4c1401ec3f1178fffd035caeff5c2f825acf7cf099d4bcf0f5b037f27ad8cf87c1fe137be67fcfa4b604fc97f7af37e2fdebe7148dbcdef54bbef76a7431b2f32f71499751cbeb6d2ff10411e0df11851cc81f16f6cc7f070a7ba6488291d7ef5c5903640df63be29225d8819c49ed2f0c8bb80b70fff5b01f85927889b70307727f0bd06059ab81ff7960c8a4f6854c6a3fc3126611cff3bd2f9cb62520882638903f090d90b5111a206baf6f80ac81df8fd3f681df7969262d292d25cd07c39747c329963047e84c1f16ce1b488211d8bfc4254b5eff12274c6c32a51cc8ff05fb71de602f6baf1fa7132ceca7e1fcae89311974bbb73df42558440421d7f5dd222560a542930a66a070f1029b248cb0221387890d9a37287c0003144d7e28438e9c3835a6a812830a54a69e94a13609bcb250cdc0464a1357b2c40033021994e07cc19d210139c51b365e5039e38815aeb0525e52d8a10931c86c3143026aa29c2122a909282b7052925a58028a163550aa40c1cbf8e04611533471a1ce1a26cc5c6046882f92806a12c4ad4e9729667c81e5871b9aa8d8e28684049d2c2d4f563819637ef8828a195daa84a1058e284fa6606db1c510677c0c09481903b3c494972757dac8f0c282c9268595354e925c0c0fe4e399f441055bb4900486ce132b669a927008428aaa851fd8d09180064d6ca480fa828a2aaa60c3840e3e6ce982c29434611041040d920dd50f4c8021c31b2f4f5859c22df1c2182f53607c20a50e27699070f2c60b0f633cc8a18528ca58f3258ad5170eb0f14083162ce870860c150c1146cc0c5764926861ce073e9ca192830b7390d6007139b3e68a16aa20c3e6c50872709832b3020c44803173637c8193c3e58a14bae0c203d79528e678b98204250649c74986335cdc90a14519cf92808cc0ad8c106260b519e20c2b594f3aa4c00507284ec8f9403e9e547cc0844a992659b47c69e1094a564da1f3050835b62d56d8e2831e19d63439b166082f9e30b13d81134306333d1ca185982b362d70a1c20b75c2201a83454e19459cc1e5068fd3edeeee5dadde649c6cf1bf9ec685dc4ffb0b2e0d94c6218185c4551e7fea149a16283957c81943e6cd0556564042cc9498242c3c0bd94f7e5601536382829b26a65c01f3658ba95a9b344b9c31439b3449676af3a5cfc78e459e42f3762fc632d9ff2c0a76211e724645a2bc41cf3a48d35a3fe138d3a095bdb3b9bf5b595e2f863475fa54bc5ee4ce55e1c910d490e61009fdfaf3e2aaa8ca33cf5c059cece2c045c59ff92dcb8127ce78f4ec764fb2bfcc99ee808161c0d1408f1803ce1163b001826558694e0eca12a744956968caa3cdd95c9412120d73b252944f963825a53c29c59d61cad2cc1ba43cbac0e4fe0ab2c419f1943d588e973fa3eb96fb4300e163388423b6faf4708413b29c47a2072218d9aad05a7501fa9f0c1e256e4e77f729652aede04ddcd675d0f40c28d33994ea26a5a4a2b82715c9f675a47a068a348a66a1587ad6be94fb635560cfa9490a3cba541cf9436699b3a4704b385ef637dec6d7f8d8335929e5a06496596699799ec6ef3c7ed8cb7c0405fef7aec79292596699659659e67cf4d4faeeebdba73f5fbecc2db49c5c51ae96532baade5e5f6009ae60ab1ed0e49654d3c62a35d5a26adad8b6b1eb4c35c9fd2e2c3c769d6c1d696220ad7c48d69a26b3ac350d29a9691dd6c535ede65a529aa6247f50e921796b6161eab2bcab736f4da3923f7ac06a9a3b65997184473d60f51087821ee2c0699af790659685475070b044ac384d732f59e61be111549cac302baa69de25cb6c233c828a927a29aaa6795396b94678044585d381a3d234e721cb1c0b8fa0a82c4db084a569ce25cbcc131e4161619280a9aa69be25cb4c233c82aab2f2b192d23467ca32ef844750529402b28af806e682e5e300878059ca2f0714ccca670709269840870e9815aee32cdfff605678fcff300cc330b451231686214f4863270cc330ecf1ea212294ebdb5cc591843c916880f1bcf7da4deb57adedba7b5bad4bade09166a7dae4317d1f08be5e58065d1828842e51914a32487e4a42aa1450039abd1dfa3b94d2f862344021f849f28042280f58a366f5eb5495e2f96858a5720d1ad6a96c031452a56a54dfb8316f5408e4ead43359a3860d1b376ec86ac864b2180f0d996c07cb643298ec05ca649dcc02e0358ae0bacdd6121e864521c25178e4d1c30b0d69e5efd9850991e0ab67b12b57f078715bb08dd80d9fcb0307286486b7e031f61fe682fb250087804b4ce8999c0014f23ee0182c0a7e70482b1765d182c78bb1fc502086bf63c70e1d1348e0d3b363470e1cb21b3b6cd488edd8b18367078d9d1d77c78e1d3b3a5b7b8cf8a8cdb759cb14979c70c2ec1b833767f7ec9eed3ed23cc5264fca3937e8a1d6cba9a525ca1c28d6b41e22a20f954d851aa6e17d7ffb392c5083af38c4c51896d24644134b723a70abba72dd5cb7afbd1b56c49cb3dddd38b93ba5d48d921ba62e6dacda60759b5b9b5ccfdce4aa0de7e62aeb882c4b26070439354ed5a93acd289accd9dd6dea786ea973a2d3c40d09890a50ca090512144a71706dea64898b420aa5928235c7add626e2e491ded913758c968888a69860f49c2fa0c923cd4e79c459b2f97a4d149b1dd82441a1c2136cf248a14081cd1266e382bf67af595c315d999162eaea762525761755391a85941b18e6ec5aafe8b84172a7d65e5d5d65d56abb6e0d952bab3671d6505d2551a9ed96ed84acaaac9934937cce773549928a190396b8aa5b1e3f494339d54c89623e2961c33de59c9f65aa0d0b38a8a9820305281fda64d1c2290cca828423c70c275560653d91410c1eb880a9b304458922e5e2c42a9d7485eec73e64a3690920aeca988325e502479c618597386baa6842478094b38a61e04aa171b97e8bf33092fa73d22220c8353b15c7292299df2d5e24fbb8693d44449ce57f4c7295bed3ddd9dddbddd9b9bc2e0cbff176b8258edd5ff1eb99d38ca41371bd3ee47a7f290249223d45ac942dd3ea94ed8f3c40b01ef0e8a11f4efe40fc83f81b75e06fc4ffc83f046a65feef2fabbca2e31eef1882ec35534abbb0dadacf24cbac26cf9335ed5bec212232c94c724cb97b9a71d759042c02825c33fd31f3944155ceaa88848a3d44fa65957aad1e805b1aa5180ecd931cbd74e8a51b34ad7f38d96c361490723f0f1ffd44fd45fd418cfa8df450d7bad28bd14461eab752362914b2ff7c900351cad9cc54064d111c82c4c59ecb818fec0a0b8fb660df5d09745fde24b07ba90977669ae5777e8553cebc97357bb3dd5fa0783d97ebbdd64bcee8d3d0406e574b045f999220bd5f9f0ca2ee7246ff9b940661adb53f7d645eed688ce6957acfbacded5669857c68018a31838ae102947d9a3479fc89624e3153fc3e89a901a4ca620667e3a44a952c4f7252703fdc10459d32514f37ece024082cc64c88d58a72b7d6666985c9fdf46259b7a458c861ef6a581464c8890632aaa8420c18946a4e831360cca01922cd126c6abe42181c4503002fa898a45a240b1386e7d3b379df5eb1c8c5a4f0726bed00c210d10ae3d6ffba2c14726fcaedee945bfef490bca551ca344b5c1a297914cab56ef0faa5cc60524aa9ac67f353437d9e985394dec99e89f0f58c626565255484e3f2de10bbab0a3cbf793f4a9d765df7f58c525927fb671bfe7c5fd43d4566be3d4566a63f4116b31425c8b84929a5b25ec130ad955a6a6112f4f768add6de4bbbead55aefaedcb7d65eafd6b6a4fd6b5badd6c517d78ebead2f7357bbdad55abd0bef7eb65a5b6bd79241ae1260b7f332fd96ecf12969811cc8ed5d77b495a907eea42e388c4e4c2da8eade8244ead77b2f112a7ed5456546bfd239b7879ab472c82e4e9bce1a8575d7b4b37fab0cb220c80da3dd5da65f658fdb5e5b1ec8ed4d6510fd1a82fa84d78d843ee8d14ba98551ead45606d07c2fbd3ea4dfbf76dd3ded9916d0e5d2c4b684316e5a3f6e25ac7473bddfbcf6c7aa74abd2121626a7a8a91b152e773b3b5d4b4c2ac45cb08245c12454ef168564507d241fba55a92e8972d6fae9599581b867f55d4bf8c537a1c59f51e873959241759ce5da5f93e4b6f57bac38a433cea2c2f5104fadfe982c49b97ead3aa256bfb279922b4fae5fe1344d8ed1d224d7af5835cb4e9f1496fb9be64f5d379a429613c7e40f69aded49bb5a6bad580484a8fa686f246f7ef7090eae0fd93a1accaa02331cebcb2229a594524a29a594938a9f4e5dd6b387b1c1fd63ec93217ee2da60aff027a90c84233d7369c529c59752ca39e79c734e39e794534e995e703081bffb3026f07c49016fce3967f55a7d6aadef220e6355563d66c34f6afc46f090e62ec43da3b46aaba5b706d9572c6a33f0fcfe590de7b7a8c4849eb950929e398f6982094ab2de041f3e7cf830414992ac244a4c486282d08f912b10b242c83a2282074759b2aa2457265429c15a5265c4870f99121e9d9ef49dee719ae9185b116e892d99be510fe1a8e1946083448dbe073929993e084da391292ed724d34fd2435da3efb393c86525aa9ae26002dbafa0065a2e117d2a13e92893b9cf9016913dbbfd9d4fcf889ace686b0a5b318689329d36a97ad53823fb1bd8b003fb463edf01b594524abbadb56ddb5a2ba350b06c0399116badb5d456aa44521e7d64b7b9ee5a6bad5dd775b6b35dd7595b791091853f19080de434842357537c107cfec83c12c2bc9a8d8ffcfcfcfc1c09a14310aefa48370847ba3f48ae83230f5adc802681c70b42ee480856220489f3f3936f961d011555109e2c714b88b9ba227729be150531bac98a62464646416ed7c8c7c7c7c72848d1ad2888519191ec93000ceebfc91c88c42961cb23f6c9b1e0f98ff337e85907534432df88a8bf839eb9b5f64789b35674b76edd7a071b04a11ea8d46c786539e910d50c042000008315002020100c07444291389426ba228d0f14000c7ba04c6642198a635992c328868220c618c38c0200014080214ccdd4460120ba346adc4421a11c1c6edb944712fc5caa9f9911bdc36fcedb969e0ea7ab09aa55f94e98a8f6aed234b33dcb83bc974d39311cdc2563de7c07bedce358d9ed4580b2890d1521c78c9ad82c3b996838c7f8ea45427e8d16d8b37bb6b457734d3b085f76156ca142d0780cd36a080dea6f53842052351f7267e9b8aef5efe01ac7b98f29ccd454cb9504ae6184a83c5691c09f61b51ef280b40acaa0baeb779ddeb39d849312d4d92a503803caad322f92187d921fd2c0aba441cd7f9668f6dc8b562833458467e2f49c316a902f26274e32f482662ac6552772ae687988826c10e44cf325a4f7d269ad61e2a56eca4de8afcddec9b8abdd02194dc6a6777ce4d419cbe7062875ab69b4c93c5a381c83ca8860e73612a42a8c21728f262158901f984868079aee88bf00a3f518331411e234cde610ff2865c074517142623b1ec1dd04220db88fc84cd47015924d464574b5f17a12e9cad080154b8036f9b263db17df3c23a493c19f7a7217f2f461c7dbe868dbccdd4b0cecef5aa6495a027f6e947f1dd3abea99912c78db72d0d9c00278cc7263bea5def16726273e7a93ad3604e5466e11772c2386c9290cf913c9f4a8f880039a793f636fb79347020258ac904e48adcdf0b450423002616f5d2ab2c2399249e92c30aed0d16879106135b4beade02b6733615be750fd4a7e279eac4aefe2513f93e14e6c6864c84fe936f204d727598eb3fc6a6c59c7f040bfb86dc0a3b61a8c7af5aff28d752b07613f15dc15a0042c9a482130d60faf8f54b4749fa95470bab095df2640a0cbe726051fd49fed0306a0b663e584a7248d1456b9cca565b97fe03ee3af6bc5413ec852e861249445566c47982024aa8c16a2bde12c7c60e64d0d2d8ee0e0db0d834adbd8cc8b1e5b5ada60fbf11aac1ed2762269b5ba030fe4bd517d01322f4472479421cdd7a9eb810bc97625f7ce9be62df2009322619f591bd94787fdb311b18d7103a85f3b607c3f82a4888da33526d58fb595e09789caf1c3d6bc7e3ea608b5091352248e5ad7c960cc70ffdf72dc5f5c0b68c2c8b411b3e8dd3efdd1bb52ec6530d3508aefb25a463357bdecd3089a30e2cbe8cdc73fb78fd41fa454550a98328f54a9d09df1b89b827fab392c0891869ef79d7efa0b3fca59ac28bc0905c2436d4d730bcc9a88b66e93c1c296bdc1d11758129ca2c9104bb33d7606d16c76cc6b1c1791846644e49491bce1cb78f0724303e700fdc37193483007c9b932196e258e5647eea6eeb33c8c0e69a822bb07a58345aadfad012a809e194460de593f1dddd7adca1ae201511515db1dd7d79a080e281d0d2e236aea717933d1d1b918623359def9a54280f9727eeca093e95ad48376817d0dc228f26c3e947becf4c479c547f33f263581e9d9b9330eb05904b1fc3cdb6e850e6b0c70843a83b5daeab33073be89eb8d5c3683c32738c737999f6ab079429f5677a63554b378ee4c6c6389647113dc084df0fd0a62c8dcf48a31b88fca1863698c9b9f657ac411315e3c1d037cd820104d7ca14596a4c15fea759f2c634394b82d4655444064820b65e91b28f622da428a4622c281753d6739be210a77e5370510e9f03e69627844c415e2a5ed1d31d15f759e328a65a07f8e5170d27d051f842d5726a6a49bf08bd08c99f6cea10d6e91787d60de0cb3c4db59b0811669af5fd89b012dfb743e6f8845cacb3176f3015ade75702ad418b9227d773cc038900d375a45122f3b697c36da537620b40785bbd12e84e55ba214ed00b8413f5a5f2d0c74b394f69b96e8d6b3eaa21d91f009d12276520797186336ed67a7b8a4686b4d808166889fbb6ca3b30c23ba3aee487a5181df2b5b9b72d9c6dd3514ea8c362e0e3a3efb568cf50689808d7b73acddb7ebe9a0ec0901f7572bcb3985920f675b48a1b940492d70ccbac471ac65d969188b6d814f1f72d35f87ac4097ecc1b2167b22fae62d65f4e82afc7922301dab8100c8fc83f1efd8216635f0ebd96c10c52148e66b6910d431537985632a74a281d56053036c213b2a271a079ccc50172587d95c6987c9d63dce466433ec84150ec4f00f6f01ca71ae2d25b2d26814826a356ae271124e125a9255bcd5a5c1a0128a3844cbb84e8293c02c822315ae03355c4084af357d26a7872a8a0cb53e3bc8e086261c5f897ef309e2ce7915b996eb9ba18e7ad6c300095500b107986cded67207b2ca8dd759d1e45190499b1b131f8420636b1c14f81ab7af78b00900c889e6b8585b8d3bbd1ed827fd08399a740bd7940f48a3ac5ee8c7e09021a3ec795769f3156fe42f5665c655b9e58a79dc748ea373b0d7c38f396e6be3aa96efe335448044ea0acc18b0358d6a1e44fa3788668bd8ed65edd896874c98bc63b0c5f2464284a6caa9796649fe2e00d38dd3ee7f7316640bb67769e3485571e93f2b55cdce97895f230ff8e72b63fdd5577d406f0f56ae5cd90e13a26e5b731867898f413ba55d8840f5555872230bc6d0c96476f3d7994dddca843e136bf0d27c94e0b02cdecf77509bff713e5b730ae089a596e1520894afa6d62a88cc83effde70abf4b1b89b2897477b1666ac683b319317c1d781214961a0514d8c9159be17651ac621369130f1db0ac1fe295b08ae1ebe44c6105f3a2bc3b2c819b1f1dc9be81aacbd387fc6db2cc6e79755620c3181fb8f09ccdcc8295365fa956c342a6359f71c49e1d2643e325ab76d69bc4be89d63ca0b38cd2e90165fb774433c626809e302b90889fbf85e333c26ad7702f73868b090f6e3a9ad96fab6949de822f6c230c91afadef2810db1c9867293040c792dc352f147489f793898fef5c6eb08c38e9d2ad5c0964be18ec9f03b8604a14124352958890e592e8785b12331c57aa0a8781f23930889e99b68d40f9148025aebaf85614e15bc543fa82b6cb9790193f244a94c734a848221225fe265b4db084244af89257f2a938a50793ba98354a01fb36085c7be707ec11471ba556190f80839091ddbb43a7da84f6f46e78378d8eec822c3e6c986cedfd7c248646dd787f2d9c085f63486805169e7e7fee454fb4ef28c6724c5996088b7c9b242b78252d3a622f4570caeb37f86fdf1f590906a9ee13f9204a58ff26e987c178ec9b7578173651f4c7b2e1a58cea3292987208fac8823c990ed904a9fc21913b6f4e08bfa65f104c9c4a1a3d56af30b5176b8531840e07b1b6c57b72b3c8e85184c66902a4ce6ffb3b61489b7ba1c860e438caf7bc32d13816a04adac1e9e95beb6ff41dff63eaacde561ad4b794a0cc8f89b247fd76f901792f4d525b6d3c0ebf06a19cb70b7572bb3da000cc08bc25834567428802f69bf4a8214ff0854df844f67c562152b96c8ce5027454c1272025c212307281775209bcf5a077b1296a65bae8f6afdcee86674266f2452b89cc0926fac8edc34c1036faaa6d4fe34fb7fd4dbc0ff410a24ceab6205a3f268f0e1bf9e0e33bae074f0e4edd35e82bf2fe9837174bb33edadcf4827b74e5db8ed01c8a235624acdf846baa056801197595d6dfb94869e9b08ca879e47791372c943bc85cc73784f7ab1b392b07d4d3578fdf6d8abe0dfb2237b09f85c3922a72750e518c4629a2de0a2b1636ead7c887361575d8254d14d9e171a7c8fc7103be2fc203a6cc759efa113afe1b8202de79219cf2c915380ef7f113d1387ac044ae355eb8416fb2d0572e6d85c24e0871ecbba9287c6b8f240efe14be94c59149d6b2b81645863388ab9e31021a31640b3ed0743ed149cc241d6c8b963b956eae0ebae04642882a1189171cad0eda4c1000283b934383fff80fdcf1318bd4647d3e5109b801cb4c47a03cc7d16b94083d0a11dea14f2c59f1130b188e8d42da8ef62f5819680dc0c1a6ac2aaac0e37d5b85ea8ed94870a774b410157c3adb8f24e0b174d4951887a0516c6d5b473ece5d634f9912a2ce8c15d429faafa152be9f6930e7172b8cbd0a0554633d99a813f91a8b019fe333efa03dd562eeb531fbd7f3bb3389c3b8b1aa7432d6e92a00aa5f7a38b5e9999f466377935635e3c819a694f83209eee756e79fd0af510fa4bb4caa423761fcfa48b1e7dd8c51fd3fe1ab9a7ec027e4046ae5fe3e63785b1024c489097c219d442efa7b59446e32cb1d16000ea326420b7a913014379e90fbc15f68bda3f613f7d84ffa1f59472939583c07c1f42c03bc497056b320f15b180a44ffcecb089080a6d613fd61fbb3de18252f23be0d4746fb76498c426c33405976749fd7c0b9826a503d65da6c895f632fa0d2e6c00f585adc000fa771b7c5b17f59bd5e5a9af71f67554c38dcdf7fe05facc1347348085c692da2310c3e377daca9e01b600c398205b1778069590439933364cc7e62090beeccf04e239ec06526f6b761367087fee1bb6594bb785056410b6120362a49744c5127ede6a63c883e5310b8cf64fb513314d570b027cbc108cb26f9f4c3047bd32812378decaef4deebd2329a5f3c5f46cd82fbfccdfa07056e26e7681da59c6c282214ff2d3335f1540cd3b6319a0c5034e12fb3fa4e5eb71091b5e49ebd90d6f70fcd3d426361aafb33ad97fff405bf10a0e6e6f64d009dcc98648a947cadfe572dcef888d17518a525520446cd01800516a062f8556af715bf49b7f45c5e2ea13c0019fad004ce34e947fcbba9b4628bc4102f47852126676a6a2b86b8d9914ea162bf4bf21815bd86b621a1a22f195add1fb3207cec951a227564d168a126c08234310ce109193d6a81e3d96f6399a836acb40aa1d0fa56c8ca70429181ec065c68e10666a512d0825f38df4568ffb80696ade33754faffae2524fbdc9b67e5cbf7c7d002c4a388174664dac7768bd80cb819c481d192562bd8a3476246fc3734d2aba835e07f5d49c6793f4bdc6094e4cf587a5b716d5ecdf57db47e258e29e55654b8f55fd5ddadb818c1467ba55002b14eca913e670f98e9554c7184452d4ba3f07c009cfb7d2b44a64f27ce3574f870e1b5caf2a500414e2fc7ca2a3d5dff04a8213520270259321ae25a9b42b0c72cc464158a11594b4a6cea180d3d7ae92239a7747c2d41e9636e38e5d1a4477aee83c2e665985c5e5991f27d72981c75a032d8606a3380e98416bd15f2f005f7aca61186c7c2b23434d80cd11c00e7785569092a2cae37387bef08a445bdbc80c39db908c38907e42d315432c20034f6bc7c1a88ba2a06bdad4de40b83b37c2d32326e9b8d833dcd603096b7004f4ce624e4a2d48160a067c0ad340be641559cee70160e84524966df4186f33617837c35c1f8da43979715ba3eb3b34720608e1271f6161a246b8aedb49f043db10986eaab507342de841b7b4dee2d98ae126a5fbde8d5dce3b5bb309e5bf9c8fdf63eb96bc0458afec9e68cdcf595d893dce662a7ab172d621dc0fad5cc30d2f6f0c9112da19fee80a111b7dbf04eb4dce84630db55bad71e79f897d70187ca620b4b91721baec41cf07ef98f19f5d30a0fbd33dc417a0b24495f827eede264cf3ab87eb843ca71b8a6e28441c426b1a3735d1623532262f35c937be13e6529fc871c8d1d42eae7fca89cca635047e8d25c68d015e243e7aa91cca1ccd23f2e26714cf3132b2577ffda85a94c0dd6c01204d4cfae9dcb02491d202455b210ae5eb984acfbe3504933b74e1271e30744c6c97f0757379e744a307b80166f2a1535162e5c739cc057f4f4540b40a26b4047b24c86c2f79aea27c3abe611a98d1b6d12226229cfc92def2ed1979bd9ca166d879ab4c87c9d9deb7c2064703173cd27bb780c19965cac43b9102e513762104b773a8626084a7235bebaa4737c1a69cdac858ecb1c15689bbad9f334f29ec4a18f22eacc4bac89169e7788eaa42ba36a405a5bd41552a955479b2632f222dda2d70f1360b43a26460c12ca5f9c3d808621d6d6db6a1d74d67e883c466f80250d8d875f0bd9586d05aa5bc4d61a0d8fb14d842129a8882eb7f859d01b8ddb054be38da0442adcc7908c9e89dde10c82018039eda36aa3e103ad60b6447270e3e84da3c1ff82361accaa00a4c6b84e3541052bc22df16eef709a648a43d01776c4153b36172de4b61919420108dab2a2ad3d517f75592d9fba840678b2d8323813e013c7833889baf64b5eb7c55bef493049cd4b0825101e10da2d85836d0bfa07f12b053cceeadf34b9c78107b2322963bdf48ca5649cebe23818df512b23ff9f57ef89ddb91500cfe9ca2c831640d931bb45226a0588d590fc7c3fd5fce2e9e592a34d14fc319facac2169d007f3cc3b9dae692fea73017851ba3b2c00a298b77314a2209e78557f607ab7def3c67fea5635d64b4fb14e46734f6b6797f3399696093e5c7df8e2dda49bc67e0fbe281c2078a66fc56d7d579e75678f20c438824967e00d84925f6e24eacc15fc936dc2295e8dd0ad4bf1d664dc80ec0b4933468587877ed95daabb65a017a8eb8a26797e748739c9c3f89d71723f3315f696a34d94ef9208c7d5eb66fa97d57ab19b54c247a74311632c2dbb5f66ba91818236a6f5084767c495815f818a1fb3c9324bd431429ed1a73231c127a16e76b917cdb050893fd55dccb48965abd59d03a5821dbd71054dbc881de27670fcf68e28f829f46147007d58a708520cc18e2f12cde53d68065f13047a687b23daa8552679d452c0c11fd1d86505329d58a15658786121d933881f35ceedd02ba44db98ae57891cf3fb04a10955f6b9fd264898e09eb1cb02876a35a78294daf5c4037cccd7c46230afef6098f2a3e8bba981853f29acac108bdb594ca244e6221d383538951cd0c642b7b09847cd5dca5b358611b9b825cb865c039a969a4f2907fd1ee15164a6ce6e891217e250ae40bb64441dbd982b191804a837a95018bf09428b5b996546b73ff3c101147352d42ab559a52a6d24cf6b7a31de2908c365a6a4432e697cc11e3fd54f40d8533bd0063983b4859407f241c83b55f6a9c1ce0a13a2dc81174dcf2922c1e4a383f4e6ba40d671ef84721384f5f16de1d7ec88f4c98474237ed90ff925a937c445467e8cf424f39314afba06bcf7b7b48ac528f23a3371cfbb70bb2c8358d502faafc46fd490d28ca8091790ba64bed2e532a280a4771ba1f028135fe2721cdd3593d97d549bb74996a981850f4dc3a46f2b08a4b58f022313d4dfd20cc14a20704e184c2f2e953e0f6b51fb776b8cf968ff3d565aa2c516678ab492fb37511de2b99a42f025aa8b6b930f104dd90f325825f42441e7c3eb41818d808cad851e2d2f04d1825004a5cf8164ade7199a9e44f27f5246b503c8e94f25a92448f995bc719e8fdf3491c33458bd8d4b831daae651510dd4f7ca389d7cb899b98e7311d319808f32f7b99942872871b2abe7a953d742fb88b64289a1810623ffb963f483702b570b3c48a9da76925131604e73c582bad30460556ce64fdf4bf18f99ade54a6b380a65fbc4010c6a436d545e10fd0bc0c724b4ed82ad29e580983b8fd0441900593948059483e131ad38250a4a38e69ab4749e95bcacd799252efd543340c8c678160e8f4996f87e8299757c20d67d4ccfc519e8034c5f5ecea2e0ca8304cb3876b63c40ead1deeeb22552c065052ca60219600d3bd26b09c2061e77224507f7a87dad575b1e6a5496a11d3aefbeab0c1183873e9be2dc782d54296fc7c31d5a7a49c22463198a84602dea84ebdc992be59ded6177b9baa9c3f3a12972e080116db9d0ed3bed9dd9f62d27df2cc0ff8e4c53cf4449fb691b99e2759a3fb388fceeb177ce3dc1b0fdf0a5d9a363d92beba1bff9c234e1b229acf6ced7413cc63841036e878f23a32bbb72c2312a58d8806694c34a8c741d2523d3c1ad036ce06fb4161e015df9289eaf5b5ce689bbfbb332d4250cfd2915d9060117adfe06fe15d031c884cf410709a5f802a72679f088b26a33f783808c33aa51d2ef611274e0eaad89139eddd0a3a85cb661f3e5452549f905a55d9050129ea5a16aadbf57bcc300f3216e32b78be3505cd841177ec01e7e93e96157dda024d6ffd8054deda452922b8d42e3bc6fd2a0febaf16654cb90aa2f7205552f3fca563617ae52102d96e7955f5126f325f183f209021a0953ba3d7bcbf41e5ae8050c1b66cbea520fa4f46655af48712ce0159c7c0a67b91528385c420e614a38c142be06d81da41e9b04bdf34d7f00eede48395fba27c2ca1c0d1ead85f2fdfd325e744fc7b897f91225349e96789401b05546a23790e541d1ce5132e45d30d19ab52512d1035eaca7e1a3a25763fa5c476da5f32768b1d4f2db19dc36f18a1ed52ba39b248b80baca8d6227bbb020af053e57275604a9cb44b05ab9efcf9a50ffbfb1bffa04a0f294abc319b1c5b1431a82e9a4027231e53c3eac5b9c9caf9f8979217e26a54248598feca409d0f70da38f6e4b0682710312f9bd7d7ed0fda9cd359337c7f38aff72d6b28657e0e3054f61999454afe2e3edf6851cf87d678aadc67870424ef8c1437e74c52272516bef1d132a2fd0daf1a4e0c1dcc7468151b7104c5cfe8b332602bc611ec8a26ee8bde23170af6891448e4e159d0ad698dc6deb007a1f93f025743e57d14eaf57f0f13ca3e99b23e9cb9efa8e09a10b3b30852af2b48256608b3146603571873d74005a1e1f41e0f3520be12a12ec52156ed3b1aa42be48b88bca8a0f8113a8b4761571a3b0230d25ac674bb98c5b17dc0a62d9cbfe2d4d2657d4cdfd224b445056e20c0680a94dc5816067c15197abc997fa191ad035af6deae0f688afaa3de65fb996773a2d3f8d548c089f42cb6b870e3717ecf443a1a6bed42a70ed3c3592db32e26d16d667bb1d06fd3b0e897e85dec6235e776df9519cf1be273c6670e752e56721cfcf5ddca0521dc76ba5ac125ef960d3ad2cfd50088e2d68d6aac6895fd17ea2d0a5d07da2c252b9ee432d8dfc4b97d8417f1f7fb1527012e225c545040fe26aa0bbe71658e79bf6513946b931c10ccf8a77b755fefe56f7d5e27b0feb3ac03f27259ad8497b076f1e6ea335e5c0ab44d46908c36d22e84d790750e403bf5c8b1ec2ea68676e98193e10611676493beb88e1507ab650b631a5b1767679a1b771b95f449f4c15839cf2c794c803f3c62288eec8e291acb3b60ac3ff5fca3a73d4f20af18834822e04930a35edeef053499be00986e6ef377048e2cd0a9b2f9bbf055be0d4a0df28abd4e489c1e8a35cac7cbc924d5805b25776a0dcb57c40e0f89ea7c8020eaabca4b4c828ee4e5bc3b34d1d39039e0223e105b93c582bc8d98d6bc96ee1944ade5fe4e97b6cd8e01adbe38664164b35f5612125440eb9dc0a0bcbe7fdc1902ccbf8a3b6788152085647f0160a57b5721f263b978a5dd874ed2e8176b0b1428ee5458f350a81db7b0bb9546a777b76d1ecec45589b53450937d05278ad82c91b00a7c20bd0ba6bf396021e76f844aa43cbc9c2fa8adc8fa865a2fb03dbcb274c8305a140a77f43d432ffdcaca4a686a8ee31833c9b24e795721cc9ab41ff3ce06ab74aadca3eaec3bd89a6b05bd30fbe696bc82fe9cedb65ed603788a25e804460ea744bad643e536e85bf68053077c46cc42cfcb36a2fa9a27a4e51d973d5ab815c5b1d294fcb27c2a3cf90463c44a007a48e22dce5b5188922e6d96648072425c95f1116390758b9860d155bc453d9327f4b34d5fa3549ef4b16fbb5336c6f729b2de08a97feeb0988f08ae57e5f9eb2337f06717ec51db0c792ef23e4d763c2e4258686b1b307ccdde1eb98118fc59e3679e6b1b7de7286f29c86b1b33f0c5485a1c6c1b9c59483d2fccb8a3b2894bb9319b2f02a2a0eaf400b1575bd892e18db259986b63c508365afad5557a9695368fa1d2f576a1fd1fc073219b561acb31a25481f4598f33a3fc8d804145150606972dc575ab3c3d7d5cf423ba1c9381bb8aecc0103b338474392874bfcc3e93ff6caba42e070f745d8e78a74b63307e10a4f808f0f07bbb03e67a4f080319251aa8e427352e660383e3201cebccd8ecf197b9b233fc6a8996b237dcd1aa4d94ee686106d999520dc252670f1a7d671d904814d992c82795991a3d16e5a65f4853b5a77c9c110e72862721e40c6119b537fab9429b5fd072c28a798010525633d718ab69d19df815238270f5153ece464fb82e32c69f224b2d7be266d035a4ca7857d484c3ad36fe131c83ae4173f0973857c47f75d4129dbb614568a71cba4681f78d802a63f90391a26b88e778f166748dca3e535ca51de66493409c91fc2c4cba06b0d3bd98ce1624e8655aff9a64a7891befedf8cb2ce6bee170309dc402430ff0c6b01b048de6a31d94faf8f59801456916217170212c8940584c3b98cb4ea82c64b276485ad1b553a1f9079a9379c5b3d994db9928ce0010c977955285529b2407a5cabf762f2516eaf3a7e5b1b0a21e9309e1b3bde2047b189f9d56cad2f2119686736bceb1b02e4d3e164bd0f611a2b19c23a6a90d202d13a985e0cb248fbd8425825c7b3b0e1250d4de4c48ce8b723db682521149f96fdc14e40620db437766fc5fd9554d6219109d37e3494012316fe4ef5a9ddcb9a2b6c203b100b53956300cef25b473632f5d490549c526ba4b840a1569bd0bd4489f63d3f06438b4eb4e6a58b7fe9eb125fcf886ac3e54d06d740d37c1087b8dcb92ce1a9060cd206c4c5906546c84dbfcb97535bf68d183c6049b315d0c8e1ba8feb071044f0aedbeabde7cda52c526f728f24cc151be2b7c187683819916981c4b698230a0fac116ce10894103b551dc3ffa3955de34fa9c7b3add33a453d9dda3a77496f21c48698238b103241f7264e680529a20c542c9d610110e3c1422aaaf420da710a216bf1d5d93a873a457b73cb85935f4c723b0760a202e0283d96a621e05da607e979ea4c3043b453faeacec05874a0480aaa53ee01fc43babadf3fb0066ec99f89a37b3fff5d63c959da7206cc8427facdad094b9a0551e5414605dc371bf4859dca1c748e790e32f684ea5a67adb21425133fbde96d994c91d661227200a15a63bdd099e4272cf1808370702a2169d654519140e82387c07b4641d824df3c4c45cfb42be7d1a5a122155c8163921e6535a0c89c37da12084b94be294486b4f3e84b7c10bef2918701550b66c1584f0b7330c35ef34fae2526a1adfcc058eeced2dcc97d517181ac8d618492476f13bc1fee62c5be4e7e82b39891fc8c8a4c8f7c9013680a1251c787d6291126d06629439ce58fd36b52048ed85da814dbf6f0850c01a0fbbb80114f0feadab388a91dd47a903caac819a92f9cbd84aa374c2956a02fedfb9bbc2f4d8098fd5d56784a1505af50c6868ce80a109af450943411e6b6039b319f13368fb9c542572c960606e45221602015a15fed7d0cd7f23ad1a076688fefb2fa807f4f8dda0cc88a0a4c04832282a66a582971501c84a06a8a462d19475087a9c445225abd07d02e20d0eaf8ec0210309c2218db40720fdd57f9bb104546b23cac205f681ce94b61873d8520500a4194e88d0afed230e74d4316f2e7b6030a62ab8d6134955d00319ae3852314892edd70e3805244ea49137725eca1a79110fbd8877109c14ea72a79fe02fb718ba192892209c9a56facaada6435d6db30a69469a6ec0ca94d9ed96de86e7862e55b385107e86a6548f694eca4f953a90055b7363b23f7a748bd129836e796311547f040c5006615b5e71200dc20ac0be45d6ff87306d022343f4344450b8ae4bc942cfa0cbcce0e71c84b060e193335938cf5914a27e66894888821167017ebe70ac2628ec8152a66a839bd18cca6b3092a52ea33843955d16bea0174b25a3007a358ac0bc6a6f879360d6a0de26911ca16ef0f4e2333893f29cb7ab1044f0ccb2547aa5d5fed43357c5a980027f019f565c194e880a2fae71f8e9462e69125e9b33c28120f232af0bae2e5bb774d44c6294006a9f8cc509efb5f71af7ca8001928a715b7866193076b9b734349f8730087abb7f77f501a1c067c7c129a7f62c0a49481c78fb200e9daeb3823515ae7433f577fdc379d61ff705cee842e918d6bb7c5b51473fe263efeec6b3369a3f968da084c3a2c3540b81a4bd30c27c42246d1c33097fe8a22963832f5932ec0ddef4c8e0e076f948b740cb24272d095b6a5190fffd978e5203762acd90d06458c5599a890c621614a82484ec3be9316f07e47e591fb7b70e5ed69329254f3c962b1bb14b2ce0b6ff9e05ddf6a9d90561ef1438b0e03420e339dc69eac0f9e01c53255c979d67e377ad1a7581f44bc5e229e7d9950fbdf007da0e4c493f327d50dec3ee72800a5097c44e39676af78f1c234e126883f450f529b9d685883bffb78e7843b9d64e25b60ef9be420ce5dd2b0a829f4c8554cc44597d9752fe33c9153aebfe3f7c713a3bb16349996843dc2c4a52556fb8a0972e3131793494b60fc75a5b0fd1f9d20f2935a9d4a433ad75c9511b7c47ed3dc3d094824d9b60076dc84ab2b2147511d66bcdf00c2e6da9e1bb0ea81bbd274b7c44a009ba82c4bf0d0f11baba6fd41d1ee522d1f234ba413d3490d2c8771f463a0126dc2bbbb73f06f0203115dddd114a7e1f7051f2217078923b14774047a0833148d64e76d210e114b47896a067044aa4a5589fba66253fd0227547ba8f4190181858d0a5d01bcbb6eacd6d516f75eb883801aa3bb6074ff995883eafcf47621afd8103a0f07a4c7a9b1d93c908279506fadfa15a118c20507276ab52553005cf4a77df4b46ada643c44e7a515fd6d3fecf1f186d8641464c7818590a129c121cad9cdd7b49b26cc4882c050adbcf1790a13fee457c2ff1b319b214dca12b7e3062194795f26f9f61bbe8056062ebacbb5b457d4eac6893ef2cb59794672def009c8f4aeb8e17a437d2c965e88b06fc9252d053bfa0e6bda083780391b7850acd5d5b9d239eff56b298884036fdb0506f44a05e4097a3e99769bfda9a60bb018131205ecf77516313e0d62b06f0983d210cfac84102e74dd141d6c94464befb979ecc8845a7806f0e0bcd61e335b47edc3c99c444b93a8a0612d0ca5638e796b9d0cf0c7745c813af08d9bbc1f7820d6beff204be400be48307bd0dd617f493b5497bdfe9ef6289facc7dec451f6e8b8387578674e2f61b67b7cd505fd3e8bf2f59011869b8d26a2d4e89944ff1353365a1d5b3c7c21b01c3fa325cc889b13dd144a5203b70de1112111c618faf67b7ff16233317079e6897164010a22a75272b02d4fa01cc98330a150fd83bb0deebf7527f453eff9c8301f6d44616e07b654c5338a25fd725e074d9460e90af5e087a52dc2531fd805ec0ed75b60377539f93b726b494a130d0244551d63d82a5ab20cbb00158584370badcbceac0b7bf38edb3f2c633fc983cbc90e3aac5eadea5f63454ed4580882195dfe566360bd7e0de1a366ced9e4040d56cc89cac825dfd8c6671e753d0ff02d8ffd9158f2a59cc4dceec3f587aed5bfcf73247630c79cc6b076614534cc038c4567158d6a1db34daa4c9c7716546cf2fce2b55d9be946b82a3895d0a4db4e5fa14107bd3a45efec36502934cd019c7f11d948b8e9715563d14e903690ec194c6abf84a837138916790f39673d316ed69d8c1901c85f17658ce72f2343fad7cc08e37f1fc83bda6ed4c529b9b2d8dc00dae7daf3131258c3d4ea3eb76ed7e81f60b110b55d89af39202a9e05f8ea8fe40a322ab441f811d03c95e397ef3fd6654aa63898a8686085d1b078e945ae4c027aa651b7e26c6c524066374d00ab330a28bdd625e777ac17a75e35b451f70d3d974bf8f49d7aacc7caad764d7883e614e900d7ac5d3baf60c742d49f2045c0d26e86e08168e1ac53b5a0c555a77b3c2885b8a0fc5233bf3e87d4526a436130f603e12db3d8c5afa5a6abe5b92079ce3b2c19921b2da476d0b857c22f53d21359f918fc387c69cb4b4e2d90a16984603c91d689627e220e2e9de8d719e9b19703f25a02822a2c4187a13649bc372a9ae6025893ee5e8dc02bec6d03b6b31040a2dbeb1048e745f2b37fdcc601d764ca25014a5a40990eaf121cb59eb3361587bd7a19b7d31bf429da2714753f60639ef2cc2c7da06585fc87136aaf46fae8d93ac6bb15d72e890cb7b318983b240f1a8d7e7b001b150544e47e248a5ecb9a473abb431d2566f8ed4923064d4cfb17ad4e6e89896fc02d274dc9ae9c1f291d00cf7854a02f3886fa9a47f71b19b71178859a4d54e234099dffa2b265c47d1e53f748145178acbe739ece30a9760d13d825c81bc30677d75780bf1c84ee11bc4ca495c570e40d44b91d9af76f057884e882219c00d7a6f70af202e5e0b9adf988a641bb325dcc66d19b9b10b496e6cc5d11b5bf16c63b59c7d32b4cabc4ef36532f16c6265a3bb58db2837221bdd93c9c6b39e065d60365a37aa8f39daecd3b98807a2ea0bf98ab48df222be51f9a8249efad39315c577b2fe1d0392814b5f054d8cdea1dd69e8c5bd9059a4aaf8e4b9ae5e946e89bf9184becaf2b70cdcfd5b2727b92b5c0532019c7809d1ff20405576028e1e44dbf62eaefcdd81149e5a05109e2e7d07073479b3d68bb6cdad175b00cdac4314357d286c727739de5da9df821d8395e1bce5c7b7451e781bf3d1449e963f6fb96c0062309cb9083c9bc17cfc72a0f7538dfb37addd8de24a693cf3bec5ee922b4b36abfd87c042c7a9ff6b0ca1ea50c924a94a09f18e840e901ff9398ae18238fe783865df69198be4f7a30d8fa0e560d98949fe5006ec3fb5581e0b81712cc2c56cfa9ecc0e8a1ca0cae8e9fce02185b96a1507347eb67a7433d4aef5e8a8f79b6b41fed825417f6c44bd05756ee1b02ea0abd4dd2ad81751a3d188a96ef77db5a85205ab0be34f16e07a33eef572f8d0dd22781478df4a5b3a0ca6188ee26e7dd8320137681b927f1b4acfbb17852ea2d26de2e2bfb93b0b05daa2276c72bae97646e55247e4bf46bcb03f89b68c911d5097539e2bb456193bfa359144dbe6e239c1d515081249bb687d7237595c4a34948afb1a4785953045e14e2b0ea95855837ccf67d0af7160152b594b45bf0342278c02dc90e280796a6c277b40a69e76449f5aaa0d597181b8dcd9a182e6ea33313f3439f7ccdba545d446433fc893c18da89ed923703e2c7d1cbf99e847a19a390004a3ba9438f72c422621c7c85839efdb54ea790aae05f0a2c5ee6bb8f035ff5b692dedb987bf961513d21c58518efc7732d069c488f96039b5b1f4e90e289af64b2e6a989b54da927d35dd4f9a522e69413362d069ea518ff4391bde6c60a0ef9a6f6b2db1fe32b162985c1b174b30292e2db704df87d921212e17f1a2a771d76438a38d07385af5d9b9dc8232c758d1a90b62b588a8f1b2292afe02efbf53fa5d909d92aec6adf93f2754dc5c4af4bafa8ff92957daec4e9796445c0a62ec175ccfd3445da38bd7e986cb53e14d77b5bbc8c8372c824fd69f494532ad7f42a671ffc425f9c320eec40c94ebe850318112f0841d9a0469c731fada623d63158cf2805bcd8f3080a4e29970bc5bfdcd23245be5606e6fcf84027e8b33a627d3658a1108480cc2bb4d7248788c2420d8de33c18a198c11a68236fc4485db3f2059c7f41bbea301e41e5579b87d6bd9934f2c3669e511499d8205e019f3012ef6f40b39b3e8779f0b387e1d26dc4722eca5184eb684ea33942c747d91fb0eea0ea9e67eac591aec296491e6a56f12632e27d006606378bfae1a411ec224802126712125578d6a2584641f78ff9e0247655f8d442edd535eb973df853c138564eb42e5952e75da5ac8e602200600171dc08be4ed90bc0fbde84df52e2e124d354fea79f043e514493ca17ce634b9d2d8350b8e7a8e9574fb49b3abfc159819284ea7a34f93c977c3c050dc8d0ffce9178359b8386407ee62eb36a657cb9896182ecc6897af043d50ce2058c1f907cb35788a3596e963cfd6e400dfa955654cff28c4317426548c25e3a98ca916a67c4462ed3c6865a246742417755bbe9e1f14c9f76a8c5a52d83ed59647f561532d178c71808a741509c887563de8a457db283369544a73d45d936dbd59a0c982bdb253a10a359babf0ca842aa4492e0f445835809e2ce20c2df7c466988a5cb16882e1d2607078869f0494e72381b922231cb50f25a88b2301c109bb5392426e60324c0ec9365c5921171cea87c424d1af685a57bd09d51291a5a125693301b7624b45124f6d335129fbfcda316bde91e6617864c6bad697f989bcc5fa4770de1e721a7002a8c4347653f4018fc1293f03583e4c7ff4b710f428019cb2bdbb152eaadc444a3fac773d4d6f259419d3a7417c200603de16fe7b2fb6b6ccd7f79d8df3656d85cbd8802b449daaec3ad72652624cdfc1e6d278e15f76685baeda4b3ee5f4472504757efff8228dceeb0c1d640f1b7b5bd70a012d1a6701213b6c56678338fa7ae360f0049c03867fc82fbc0c2201f8a416f86494106bc247a5230f5ad76d76ba61fdc8bb87892f91c6dfcc27dbebed7c58c7cdc0d12c91b6162620410c060ba56d9d8ac5d58a4fd77cd3f1fcb81610d9db9e1972f778edf8f8c93e62539d522121602694d450f33b59b97858c4fa71db48a7a354fe15b037264a61a335d299148bb8d651692af1973d72052e4de16e2f9c049228a76276bd1adeef4c98747b1caf175011369a431defb5b28bf840b55d05a0a1c14af4d76dae2d95f0360b64cbba4f82bc263cc206854efd7ee1e1b5443da248adf4d5f0ca40684b2f3332310d28635082240b0f468c8983281091bc059f6f6776b05be51fee12aaa83efe13291aadfa1ac103afbaf5991e4375e108347543c44a890c7fa3c88653ceaefa4baef8ad68739e60545c7ee25077c90c98219b0bbb8677f58effbf40e7041f9d2b0fa31938b9e116fde302cd69c9facbb4fc8071de8e388a02f86e64a25edae2891b4d579b69b4d560086058b04b1ecb5b5adf48f182c159f4b1fb520a75ca1cedf38bc7f489216a3c2a6c74aef6f9710c898896e50f63418cf6553073402f5501b4652c7e314a7369568519762b971688f7dec4e6e3c00c79fef31ce77708e2385c0013777de3e57a3d071075cc9f4c2f7b3d204ad62cd55410699148efedc6d6719f94e0094707772bf35dd00b161bb16e5bf3030d2856bc047bb379bd4fe66f838af22b54fe3067e6a08447b07eda28d847c15f6eee271a813713100c3c72e6a0d1edf6a00ce741b615a7e61c9203b76305fdb30abe22825df258422bd156299c5d78857fc87f5942be4f7e32649cacff805c52b730b340649956665c0f74d089a90344e5f120704a5001891059133a906eeabe88ab02ecfa1f2b298dd3b45bb215f22e6c68be12bf190acba3914bac141a1642ed32650da4e59d076f628eb55c5eb7333e0c17ee63c3707361b085fc2314b8c25ce7722a38b07216721d06cf2e70b62af3c5cf6ac4699891209a7bc695825c337dcc0c8f6c700e9de0e758307824ab99c268fce52c56676556ea2a9c9309687f026981151ee5d8d512574e055acd2bb08d3ed0d312d6b46f26ecf3b02a29e1f2e48b236956aba140e5528f632095fc80272866db888432f2ade94154386e4a77837c5c7ab4fcf26794e37abfd4ae5c642f6db19eb1450277598bd9d699014d0a7923663c971d0257a719c081000631086803fe4e8194ed37f856b48428b19448a409548359ea4fb5c4134671525cf3ff7bcf6d174f1a73b55cb5878cc8c964ad3a478a902d1eaab9c02d315bf2588eaa977690309042b0e922d2cae3214fb53981b9337c3b2eca245be1dc34198bc3ae0d78ba8fd67af930f2187e270ff3a1c048cc695ac8925f56175b741b0ab4292851766fc12e1b0e37a7b9b8f3cbc9e483672abe16244dd0d2500b43140dbbeca158272a4180413fca45282194d49f6c0a9b20691444bb0a3572264af1872e81c24c5c3833817806ae0d368192088be7b9638e8a9a58450e108ef317eb3579a5694b8962d1a69dcb60a1580fc35102c2fcbed90487bc9a05de643357cf217fcbf2143a92fa79811f040a8a97481291ca5dc5f1e5b3b19ae6380cda2aa13d0656a7bb00c771f2ebeec6e1f703e9d2d8a92a769006c02dca892c8ebbe4be21809ffde1a60b286bbb90f11d03da6df16d6bf3c582c38e339acb682f15682093420a97d40061e191622b3b46254fd330e6f4d4194f42a33f743f97afbacb20e8b0de98dc5305095c48f6cd0e92289349323b8f19cb50ebc3a5343e2993c5afd6ec33affb8eb0c766aea390423c4213aa4ae498c046754be21155b1cd4725886ad0d723aaecebfc8f8e2a5a3b0c7305927c3df11e54d8dcc72375864690bacd0bf2b8c576ad619a5f64e484d660eca38000296934c83777e5555a3cc4db7c44f650ee7cf12874720efdaa19611d52c2cbe9fc79f4de9ce831b548cce7e8b343ae8a52e98ca018a2cecac0868f2886785fb250463c99dba84aebd43732062bd53e91cdd86793ad16e2602f80708c49d89dd34b7f98034abc3596a860ba278bf5913598c9359813da624d8d59426a26e9102e8f0b6acdbf73011655bf8f09145584a3c00a1b1e06c6b38bc7b88adee9bb030a74cddb90c127548a77c69626bcc390b6d7425475bcc0e2e6292c9b36daa923a4855d302163760d4a56a1c90d12c209da0468220bd3b8a920e988beda1327288a9d72425bd516cd9427b44e450b787598046e3e9e9398bd5dd19422df216f39867a025b12d2ed9a9b29a0008015db42a1897243ca09a903336bf9b53d41d895c1d937218173942f83d6e2dd4e3b511b01164e2d7dc9b2f265608d0f700315420cb3ff264481ffbe2e5552ae0eb0933283c13a11fa74ca6fbb1986c9d1b774d05abdf4192d17b7a3f2027eafe06c894e983819727ce51416810cd49b4c891983c11611c8b04b36887f5c6b984cbe3dcc1e282336c5ebcb58b1f0e40b76c61fa35d2c11a2b48ac0cf051ff8bf4a95f5c78b437f70fde685c09c6344af951ee3df513a7d84a74feaedac88713fb33b564ac3137997c70b805ebb97e19db0154bbe39cac6451e9947ad0f3e0857badc64a890a7e384c0982ada826c5cefdb2e6376a7ee2cdc86bdf4bf41b5f621f36ae4b300d410f882c89f107cb16b658afe08db679c704a792798e72fb34da9b9fd4d5d32cc13efe7fb1e496bdcdb655edbbebffae151bc0ef0a2c896df96941d805e553a534182e69b901e22e5b7238685e359e5f0c04ed2126f48722188148016366bb038871dcb05f8d4e0e4c1f2719dab65f81b949cbc358594cccb83e0df751376c269d971a74afa3ab25f9493396c9891f8c073555acc30ab09c49c208036998466b2faa501dd345b9bcdbdae54b507936b322be099a24b2051940e0e1f484011cc0fafb6cb36c7fd3f55241f11755c4cd61924c0462cc7816af010f356c95e2c9c21e568ef60a3a6079055e9dc9b1a49791a99f8e1398d83c1754fab4aaf47f8b72c7a5f6d52a52f36ea75ca069d20d161c47fa798f512a467025ac3f615771a0aa935f526077a2006fd48fd9fef3f3e7dbfffc7ff057375bc7a64b0058369805413fefa4df7ba477956b49c32cd911e2b21faf6ea655eaa26524c9eb190f8618c8b1b971832662ae66960f36379f40ba16a452e9006666c9960794b0fd61182863b6d80b16114941e9f7fced129f855056eafa837a9d5144ee395e0b1a4782787365fb38bf947ea91e959a81c1ac285de0f580e56e5c1fdeaece90b33377712e11453c884da191e8b3cb9c3521b2325dac54150262a63daa89290708c094d75aae3f510e8898fe30d82fa9736d03d3f0ddd7bf5a82b2d84fc3fac84047e938933e8d3c47dd13b92e68bb4b0d53cda62fe700ba7bb367b51ffe112d5cddc6bdb8bca4f97526eee465b9d4c5635ffeed65400c5b2e6f91eb4d3aef99c21444b2de8d7e4b1413331933ee858985f13d0ec155448dfe2ec5e19f490177760d6fc0a8e22060b7ba5202582ef3b03d333e9839e7dd31855bd9a50a50faa26b3f405457de3386fe672d5fc33971ba4af3487a5448430a6f97e336e1d1ff4ec1b36c6a2e69fb2f8351d0ffa9a384a354f3d1b3cfbc2aaa6e32be2bc37a0d5b89befe54c03e088b905fab9e110ad0892b94b32243a38cf8cd0261e7791fc2c5eb87f6459c68e7911f885c59e0dcf7ad0d1afadbe162f6df4e3f67e79e9c6069c9da31817a4c8773440cf0e3268b4b42b1f9e47a8f1256960253d0b072a5020badbe200b26acf18cf3e808eb6b64b31833502ab676468101f8c85e4d075280e9cb7cebf12983687d098e917cc84715ec1844d1cd1baa4a676fef33ddd0809f81103029d80f3db873c78f70fb80b38c0ce8a900059829cd690605cdffa5a7a0ae967b4087cff5bcf53207db259b6c087eee3d85265b7de7667dca299e8e9d8f2b5aa7c5fe6e335bdb58c76de15dc22a0bc791a882d7748deaf496ea7adbf4c91977850c8c836cf7b8311d6c8c81d68a895304ce3d6bb01f6b3510ee093373d364e6a58bae524c96c6991d6835b7c4b6ba8841d6544220a36b0215e278edf0abd515cd92607781d0525b9ba426f5c5158efa626557ba4eee2e3247a34987d3c20820407f724ccdb73fbc6b8196a9d310fa98c824af55a6b812ca5e0febf91f015f374177858ffe738892c4389e9d09589368470eb96c28de81502b5aa705331ab5bc5079f3a2817ccd571b4662307b221175abc60826ac5beb10bec75528deaa0bcad5ddebb9bfeda413839c6304b9c42e056bd306b0ac3826edca79e084410504de3e35bd68cd0d54614e1bc0accaceaf5aeca902cb0b8f7fc19af60863630095f6fa57bca3172f8bb804fe61d66a24351c02e86d914a9ed65fe9f33b505bc8e83e3a0a259cf1dd1362b3834fb5bed48f3fe26d8f2453f1268f9c2bf04b9b458ffed97c0b74b7eb3869e6dae395882c7663b80762be146b0d59842c8249969b482b02bf78c2e88c4997eb79199a84c243e4d0f2e9ed44c12fe819fece760b6bf612acbf57f70739c23823d70fc8ffe064a8c6f53d1df38e1e0b68d5bd77e5c82be596e6ddda2f6f332d4cd713bb6dcd6311888ac8beda33f75d84fce8553a80c5f61dd9ffa024ca358e9db46264405fb877b10845c7cd66d6c4d33df3d31809cfbc622c91ea68458225c10fd6241abf3e48d86b21164d9847f2694eec450feae3eadcea0086b7ebcab5ca5d5f3b8e7aebe7148d1e67b9cfca25f66e625f2b0d967c9c2d9579ae69f940c2b1dd96e5e0798cda9054c9c2ff6926db15bdec1bf98c29d05188347ba00ca074d2ec500421d5b6da4218d42ea3cdd77f6bf0839a786016fd11ba3e6384bb931799ddafab9e969bfeb3fede9242ad96ff5abe338ba32857ecc9f3ed3ff743f266defd99ebbfa8929ad8d3f971d56144d7cb62722a00d7090611df699fe3ab28e8dc0db923df0fc91d80f04355b100f7652c8b100a4522391f913857126025787ab5af65197412480ca87f74b53e66ffb58d464f11146db1f51be724851c56ebcde33ba1f27bd0de32ae4effd2cf506882213ff2286baf882bf7ebdd19301898a8817337496e6bcd6078dd720bd6afdb806f1cb79ba8c659b3bee15c139c2a8b92d35e81bcb496153e9eed8f0bede6bc555446c166887acbfeb5cb0fcad08d6f88420bce73e946f4be93618ee8ad38fa876d0d3f20cff65871bf03acb2edb07f42ac0817f951c7bdb1514b308c4dfb80c7d336399fb8a4e740c7e3d5ced6f737aed66c88309fe86d75dabf9664aafa0e01f5390ab6db2bec102fe00429f9692c226fe2a653a7c401daccb564905ae75fdbf183d9ceec6df27bc1775fee21ef8fc1bff4e40235c05b244606679acda94204ef481de09b229be7b2578cfa1c6e0aef46967b169adef5a1edb4d4bfc0a213ccd527cbec4629bf229f3098d20316bceeda2e5bf7ff4021531b085b674ef29acfd4adfa0054768e41aa644cda315271fd8ddebc9c1aa0d8cecae1b8fabb30d5fe592b1503b8d5fccb62885444040481e1744f4823b421510f758d51cb36baa443d87f9d8b26ffee3216b57a8da0a626ee67dfb2793ae50e1eb3170ee37cc793ce49b9fdc1b5d86716e566c433a5e91976d77144df57ad54f92afdb91d786ef0978621affd89bae121bdcfd181ed2bd87c4f0b2e7e776f84656803e2041aa044568907b7345ee8a03624a17c605b9d4f44bf67de338f73b12905e169f005ce41ca00dc7564487a2ad085dfa9dc33381112bf69600dc4f361b8ac0c5cb3ba284ccee85c31117066f5cc7896415b1672d38fcc2c0e00563456e071850846eb22332bbe23517717f0007778264fc2024c753e7f59dfc23fd001dbe533d8c13b211ffe5bda9f623c929eabf12ccee11facae5697c4815021e0eb088f79de3928daaca379662830f66e420b7e2dbeed073075bce49f9e02fe68cda3bb2f9460cd46b36ad22029505ad74a8d22bccfb2874c45e375cf5d8b3e7001c286cdd7a61c20d8c49f5cda74a7ec5c086c914fff37b7ece4b45e9274ec10812cefad59486b733a7a76d7fcac77e79faabbcdd508fe9d478a982a63d8deb560846147e1e98ea5397129fe338b111592cde52e393fea07a7c1386a93a0ea5368355bdfee1209812d07d99ab706a2ec22dd19af6f0e14da4048c43ae3ed7dba854a5c9acd8d606880ba4144a02795fee5935b563d2530181dc1c0718164f2117f29a9a047c516c026f4263b2c7f528477864f95fb36841b3c4517b8e6e3c1ae957fe5fc978b6491e96b4340dc5f4184b3db01ccc31ce671617a125e489f25ce3faba2f9119f1a83a0f7b067bfb82450d0009dae48fb0078625e640e7cc18ca10a36b3393628ee56c1039a037f39632cce9e3be883ccd04ed0c56c071e81aa28dd1761de6195bf4d62882e231167d5e7e14c205adf9076be18f9e87e9c37e0bf0f53a18885128f68804506a027c4a468810ee067e54d136f1bdc283688c1dbdf12e1c07de3d810555d9766cc20bf472116aa6ce198afdcc53f8855e06bfc60fc2a8309f6c78268f7a00b91f1efe3ec028a30944b1e797538677cc21a80f647da2827dd48328cabf7a25a6cbfe9d69e001f634117c92a895d8408b259102bcc850adb53ad11ae0c10c2d7e4181d200870e57e066de10802b2c8dbd3ba80ddc0e4be3452d06a4f6007cbda41e68b50e743c397b72c3a9ebb755b5691cc9de06d62279bd83a5d12fb193e68cf8fdda04942d4612e8dfd8183dac769070a7908f9142159f5015e38044ff5b8cced609f03979a94ca76353004ba3d25a4ce308db1498c43513f3e231cad561480083c5ef382dcb6b388d3041189252149bcb47420d9ee8a670fbb61eac48a057ba69791b028ef05e0d0062487453fd25d18c1027efb8546772845114792367797aff9d07b065a183fbef22f2a123548c89fd59a7d835404d07cc8c037370166c1b50171769da440d4375aa5fad2aaf73974ca7a4700b6d141b65fecf95b2e935e720ecd4dc332b8ea8662344dc9ea89674c8d051a47b327a131cf7379fe8b8431228c3007c07d87d5c986beeb4d5fb6405fe5577db92c70f1f825fb4330b40c8f80380f2ae6f942a66650055a03030b563b87b7dd0b80cdbfb8196a5118a6d3ce30c2f00652652cf7e95d35ab84c288146ac4844fa53d9039864c5b5e7ab7f491c40ac8a897ff9bfda58d99facead75856bf10f1af3cf803d067a7cf776f030c9710406ab266ffee4c08d0fb54b586487077d378ee159f15c70f26aa69844fc2336448f7e87053d95934a0c06d436dc3bfc506a56f92e04b9ebdae1e42f95ee72aa126069c441241d533b19747bfca44df2932da2057c6a4ca49cf81ca9a6bffbda35f7b5da00e43157cc2411bcfcc61070064f32a821000627d9ef99995fc7ec67e4ec5c12753210ea9ddfeac2ecf33bb84ac37c96d51be104d2a2b4e06f20b08196155efe0a54192d71a50a83202b3a96f1c59f86556e8fd5397da09e9691b27667ef0d8b2c0ac5b542c20607074e398f5102b92ff2c2978c5456ad00ca95bbd27998383e97f7226af089af3e76eea660f14abc1e85ce5f57566a3496d22abb1e3d5c3d959af18443de5d29b98bb5738907ce004b4ac37fa38239b42085eca602aab73cf5af640e93e9d3aa0e2053680a95829194875c43e739cc79cf0c26905bbad3d10c7ca65427b3c0ec2293844391995f28e885f827d57746b1a28a84da0049f8e70c31dde828858753419f37b007a13c54081f2d722f8c81937038eab5ba4e6174d00972090130e7532ad1d741bf41980edaafd9546cdac6fb82b4026794122b1d6d8ba416c0130cf59f0ae5c377359d057675cf734695d791221411a845960724201028bda2fb30c52a83bd8e53b4a5f688a835d800b0c81d42b75c593d5c9298a15f01ccf1bc5ddd45cbe40c3f4f9685aac7e4603c307a18b2b07b2cb6a594c680bd33f0600937da4a1e8502631aac748edf9ce3e44aa05c759c82fa1ffdcb93bd286607810387a4c4aa434303b079fe1c4d11336673b6d0ec0777368f09702972c46c3440062940324b7b13dae555fe0da5fc48675ec29edef28593dc8bd108034dde06e4a5360c8fe5012752e419a8addadae48986951af6153212cb4c5fdeaec91ecf11ee8f14a69addd6e222847449cd8a1b41fa8a7d9a37fddc2278c67e37c5719834f8fa03a0a5432f9b057f01e36600a9c42e04b850c9b3e5ae0beddcddc57883c1c82434184f44d4468b9a74bb8b8a3f30599f62e43811fbdadc31ce392bc1bb0382db2d510c56bd88cd6dfb014b52f489a83ee51948f5a09fc56989cf922cebe49f89f756d807e4ecf1a017e86a10b0c7fba7fc7e1b761f004ccfd183d49be667b83da3085930b26a9f9d439807e6564d926788a76c567a6ee302a46c7851ebd04bdf86ca6cf4dc42fe098b61901759e24aab4a448b0b3634892b92bf51842f3556ace70102f0135c361659de28da9baad1a7148a183353b791a36ced301f6faafe4e3359f5c3d02fd316d7af3c9e9581506a90e504284674472843d9e212ae1ac2066d4f9548784ceae36f0c3782dcd39dc2e22231a8158d3a60494d1d794fcec0db157b4aeef741e319f917547bf604b2960639ad55cf9bc08e6cd0afa232b62f551b0de05caa21561b52f8ed7581d6f58e31cf4fc0ebf7edaa11e291bb121028463430885e1b0123e290e816e36f4c9d5bc8a74172f84dd1312c6797db494b976387202a29197aeb04b2061c5d9567b41b367cd88f649a8a17705d6d31f35405a119261546fed414b5845ecf977cf693dfc085671802646f111dd97dd77a941894dcbdd64841285c64237a7eeefff41431d7f19ed80433eb68561f72900c01ed430b01d84dc39434ad8fd1b4cb0f8df1c9d5b296234b6ade052dbe396346b53f8a580fd64237eef5adcdd1fa636bfa781a08b47665d6ab2c2a15ac59d0df16bd68bf4e36e83136f91a899e0fbedd8e17779d2f9c4ab3a6b8dd74c542ca8fed8dd6dc026820b1d8069680c4a9a6295935b2f8e951f8ba7e73c207627b07847acbc3ed2145b5080a5af256ed40de0cfff7de0fa2686c950b096fb631c21f47c90f99d9a26393e87f46cdcbc7df939078d2040a2e15f91c73fc8c7d8aca1a876b5b7cf57a88026b2d63601200b60806481f9934c2edaf72f0657c22d53195ba78c9283ae8a36d62796fe1c50b4d698f1d1ace919cb50ad9e1744aeb6a88fd289e094bf0ac97634541e86db65fb24ecffedee4ea5f8fed3e3b58d947d38fc705403bbf12dc52dd801e7b8fc735e65ddba2d999ea99a5c7c0b276e3d8ece9c8a921f00a3ce4787e914ef714cc777236fc225bb600e91b9670d50487fb03e743d6e1568f8b4b1d4634d4b532b06a9de231ab921a6f7ca80ec6f8095cd5bea0b6b9eb342d7fbb045d2ab5418e0d96dcfe227f002a456679ebcd89b70c031255e53a12c0a30da1b3b95fb5b564e5af1ba2704446bee130b18d8aa2e08e633c4443985a1c25601ae458f03dedf1a8c403fee814c05a22e913abed082329c4ca55aaa2529997d47c14220e402883c82485f688da056aa389b50691525ec134aa443492e1a138f5d964c2230a9bf9c15fa4f14dc25d99fb5d0ec282394492521b5ae1654fde4cb9f7c06b6f175d43180c4094939d2173c791d958229f043458136d07a1969db3d0b6b343e520cf18b794175fc4b6348f157f7dc333148cb712fb95b81fd46071cd674291c85ba02a039cbacc9868f3f0aed30d5033c337912891f5f126946fcb3d5035a1ad730d4a45338dce110b254b9683a071a3dd434810736ceb0e8f850da3ec3f40305d7b22308bdb4ee8e7be88a71174ffc650d493d90faa4521eaab93d079c0402c79c163b20ed2dc5fba8e109c3f8720f38d64de12a6cf781d1f38221347f601c1874f5124c9f8eb8605511a249e238e0ef26fed210946b4f5fa07ddc5ea37233c1c5d4ae7416c81b81b0c04b577e7cfa80b892bb16a408f329938ae042c781dc9d28166292323158b7c63740e43d5781fac2c2457fb02920ae5ec87c420e07a160662f2b2c0432a00ee051c33a87383f43591f3b2bd4a9ec8ac6055ef3fe75d90aa0e1e8d68fecbdac23b2ba930062849410f097878e58a20367a48978ef99639a932d9bba8aac45d616e23184e305ad42da3cb65e05d91b11fb848b6e2e30c9e6ad0f891caeaa0f96e69def4b2a5a73ea10fb33814c1e3fd3a517e4b331bf8c2b23cf3d6feaf7fa496a9012816f6eb4d171be8283749f083569d13e86d87f46b8f83345226fac8e5d3fe56ae3d66769e3ff0530cf7ccc9367f7caa3edba7289523d378be4d1ba7bdac347ed43b8abb467285b7ba10f4f350884fd04edd5e935d6cb2088fcfc2c5e7baa981df7b46a0fd64efc9b95a321a0b48d162f3168d40a6228830cea98623d66b159abde0890ed954967bff0704aae9ce60c01dbb0ecb5c8f35016955d6d2b31fe098c0768b2e207b11bf8a99b26cd602e81fa015a2c46a52ac16fc2019897d11531b9ef08fac6910aace8d50860fce961503698aa7b11fc8fac90d9dbc84182331340d372ce0228bb4611a090546ae560ff18c01e35116ed6f2cba2cd59c822ff357329b38da011a1e8ba70e80b7ec387908ceba47a07f6c4837c86eaf4ef1aadb570632bbb8c109ba1fd3d7df042a8609fffeef9c178fb64ff2c5bc962409cc5c300fa8031a3fe2e22dda073bc6083f09ca761346d1ea207bda4a22181d859f3a6a190aa64ad26038940d4862ce3bf1da6c0148432f0bc103b105eba839b8a81938a67b7713131427196f6e53c079e16beaec9c7ce64d9b9861550fe05f871c03c7237c2e232d7811e8cfc4fb202f2d2d9f416ecc69329396e811bf1ae63108884f61d77e4566d0c1b17c7ba05f4c3dba6400f3c6024814a24160895ccf81050752e6ad971603cde0b77ae32d2207040d594e334b35c17538df710dc7e7361e117e2c3b8a367725a341a7046c9f2a785c9b68cebf48fdbbce6c0a2cc1d2199236907ac0934183d268f7883b46fe0777b1d43d27586c92096a3b50c76b7de3be424c831e243e8cd8a865de64e3e3f28c80a6a4edbf0bc7c32a603a2da8c13c903b9b99e15f7639b857dd9930299d2bd2dead42bffc575cb945fb21c524adf95a9bd53f5e5634219a4dcf1c289cfc4f893d6e13cb4436ac65b64b67730a88080f5db8669f10a8c59d4109743cb419443171ce1abf0a091b1d39015091ac5bd8764bf0e2d99a67f168edb1d98ea26d663f1ad3d5434c2e2929a050736b6f22537f5627025d5d637c55e5b54ba2b7e27e48fcd36b5fe0d566b9d4a90dfba5f3f81c6ce1d7e9c1fcc6e70914a1ff20f1dbe0ac1d8d376e4ee54bab04ed1b13b489f5b3593579a2d30d5108fae2339959e1f6d232c6544f4eac239c2a4e88077b4a80efaa4517aa1229dac8aeb8a5166a0e4ff7a50e9b1f61b69375f8182ab976a0b9ea6c9b5d13f8a24e940e8da8d02ba6b0097d28b902f09500c0a08fc1c25a509c35fa19e161b824eeebde9bc0b1298c427ac085c1bc134c3746b55bb80224fba4196d1e8d782065386000ec0ba41bc25b4c547253f83d9733bb756088cced4459b9c47ab33a76464d1e9df010087e92662d14b062188998c826ef502bcfb81d5b2e3c913338e3de5fa1cbf9af5b2b90d8bfc1876933ccd33cf799d8fec3a4ee4b3ac85ab358920cb2e4fe59971f2669aa88bfdd899accd34085e005ee642197895c36466db0167f0f47c381e5ff3bd883f418fb51a73453ff541dc41474db18a38c880d5b61e19e53aedd72b832374b54ab0ab46ed9d39ee64c942be7faf18e167a1edd5a6b1f0769546138bba063d18f845a7899d7a01fc100ebc363acd962f64b219549a15345cbd72376e46dc86d98708b53e4f8a7399f6868974a4767956f5a9f10203f150e245eed83f190fc6a35f17fc92d4b06aff57dea49ed5bb6ce8927b8eb61d60eb75680b69334b562552e563d753a11b1dfccbcea72bd09baab04aec68f0b51d28efc1b8c0743c3edfb82904844c8d95eee31d54824e8cb80738cfb0036cacf76bd471bea64a3f73c6aab92fc201d7f9d3c287bde18cd76d84aa5f98a82e793439c703b4994004cdbdd1ad81c1d2ca0a1741a03c0c163f97dcc0102228c35e0b4d4d69b11b167512a9e1b37fb74c0ea94a58f41e7a85e2db1229966470a7bd223e10dd3c47bd15964e611ae839705aa30cad1a859732b2947d52b874672a5f5cb088c446e1f366c71953ce1ea32de4cef4ee217418a84a3ba631b735c99a073c3f79373c3e38727a9061a1787876b4077f1f7a1998dee4390d5e45894fa40e9e4e2b641e03baf305625b40141ea5032279eab1e8658ff9fc13d55ad6971305b83ad97b954101e874a09bbd71944098a69939b8ff9bc9e2bbdfde6000ec0ad93760ee4860c222ee9b3c3352bc93f05fc01f5bd84bdb9e709dd61249c8967b6f29a54c322519e2050b06ca05a4da322ac4e18098e190198e99e1a0198efe77e3f7b1603dd6be22f477c3cda8d3e518b7aedb629756afa5623b7af971d56cb499b655ecf5dd4cbdafb90bebfc27bb7bc91e288661bee30bf31dbcb5d66cc4a48cbaf5fdf661341a7aecc5be56abf4d863252e71b5d6924824d2e8b1c7461acb6c347a37597d0f46c7d7b23ea7313ab2361b117e74f762326d3f4c3a4b607aea00f393e93a8d4fd268eca8be7f9669f5bd565b37137dffcbdfe989c27e69df6e3fb8514328b08791e2fcceaf7fd7666df4dd70bf77841ca117089f801042e8d33c43bf49c8f23b7ca64fb71f3c446709fc01f650926a5dead6cee6f2e3fa3bb7d993de6e3256c0fec4f50a4f7a90fecc703820562aab35eb95e17897378c4e6a8deac635171ff56ee25f9a4d6683bec38fd26992d1f623a5b3046e346681623504050d88601fdf23fc77610e38bbdb3bde081d3a81317d0f0914506ecda070724d2b2888644145d553a7d41c500912e2293da80cb13ddef383ca5365f8f99e0884213b547e38eec20f0286a309dbdf8fbb1f13f136266cc73e5daa1d04e53cdde1ad93dcf51d88c3f4fa8c7fa885174bcde6768cc4590a1296d232a8585b67626d478e50f37c3d3b539dd3e98d23baa65f157f567f674e60bb37c458769a880b469a926d0966e7e29d14cc3654b29bdc4894e234cd6060be542a6dde5c96d31d347a1b44da461f3bc88891fe41e1a73ca1700291892886686424c32e7a5d975ff182d7e9bafaad7eda3f79069c13b73ff2e0f64336f26efa2d2b6cf786fa7720a52fa865f4971a0342280a2089ed38c8b4753c3ce4461e72e9e51be10dfe97d38ea47f4656b192e6907090a42f0590c4420047870add86800c1dbac1558c14d6812e03112df9e9cc96be3bddf82fa2e4b534fb84acefeaed9fb9f156daecd63d47da3a0e35da3a548a25a517fdd8515a4aaf78889f44b9fdfc646e4f78ebec7d62c48811231d3f7c18869db089a12e96da79ce6a603ff7d437bc9a861c91db26b86de343ede7ddb0504664bbd30916e6846d8bd9dcc736e603764307532e8e1c2fb79f860e1ececc9afd2e756be56efdbff5746bfd57e3b4a4518659d47deb7878ee75020df6fc8c69f5d269c2e6d5310f7f29b578b90b7807b83537be76e38b1bbbd28d16ce93a927b92b3149b7cede9e5bc72c74e5b484acc0d7ccd13e2b3ce0f3a52d6323b1058b5ca7d11c7495a5c139fa380be4815ba8c1b0c86dcd4f274a4fd7df887fbdcf6dd63a1b98fddbfd1b4e11c17bdcd94c27b69f1dca20819de66e95a584990b673141b19d89027556a34aee7b0b096e819b5a4a2e9f62c0e7ef876f837353b8acb2085979c22a292b50891dcf237aef05cd09db3190914ba93d157111638367810b5c97ef6d9dfc29a794f6d1c973ba0f6e1d6a3e7d38f4e7863d4b7a580321cff7febdf73ec2f7f0b512187cd7bada31478e3cf57ab5268e1c1d76f320ca289fe9c558e39352ca175f7c727bf027cad8735dbe7d9a49fe7b9b9cf2ffbdfab280cf6d11f6df5f2a538c34f8edf1ebdc03cbc4b9614dc528f43326cb51b7d4695dc10a50d42badd651d49d86bad350a7d5644fa6d38ca5ee3427ea9556eb33266b67a8d36aa9d3eaceb9c328d25d0c6635fe7aed7a6556c3336f2e66de9ccc66a604cd94702daa6ead5786d52ccb5c8b466ea9e4dacc8571cd7463b21ad6d652e6a628a5941edd84c20929a4703af129263365dedc09d98b135ebc78618a8179f1a2645fbc78417a31ca5ebc783147f0ac3559ebce71d0a39c294b08c348443212911189644bd5c2c0c4c4a4c029bc1450400105145248e1747af1a2098dc99e4ca7190b8013916a670210000108a0c90c1112114bc48dc0346ddb880c60004468dc9fbf21d312ab3251c18f35377c107614fa73c8815b6d4312bc09e4c086bac6007b0fb349589345d970281bee6d4aecc9649b53818d815a626d82b09c55626992b0dd6d91e8eeeeeec6dc56da0d3d32fc08dbb6669bb3210c231121422292eab8eb00221120e20266832c64ea2f38371c42ddb88221491aaa17361a9188b0a4a118311cf36250a918a9193030267b329d666c4ccc8c29ab719a79ea9556cbd1a0d0993a7bba015f9fb4f95cacd68f5fa9561f23699dccbb32f32f2204b918adf4c6bb3c78fa33d01f237d998497a4bd7b5dab661afc4beb4bb5fa9cd9781bc5fed2e0cd341a7abce8f2651a10dd772f1e577ccf6a5cd90c7ce77d7db1d732bc6fa6f197fbe3864b9f7f2ead41fdab46e9634106fbbeefb236035feb2fcd7a37d9bb398d5836019b33c618e79b34de5086c1bf6720ddf8357b374e277317188649f9d2bd06bfefddd0d033ffbd9b1ae2bf7723b719e6a553e690893233b053189c6bcd25c31c6c6c6c6c6cba1983158697e44d23a4c0206ffffbc562d6947a8cb73f8965c1cc06fc8efe6420849c04ac736e7c1fe84f83cfcf8defc3c47d19bf9bc7236e32391870fd19000570fb69f8fbb606f8e8f6d360efdb54b8efbdf7fab626f3befb7143d464de96a37f3a9f6b03f2782e30e0f6d3f084eedbde978b797d7152516a7925ca0b0cd0858a7e6aabad34279ac7825fc749c598d1ffb62e7e2a460c3bad6f2a374ac3758dad1da47930fc7bf3f9ce35e736347d673fd53a1823350367ce3921e5810a4cb0745021a5efc67366b496a2c0bbc1088e387c211cd6794f4031e5fabf909a31f3333f737a2b9b542a7519b1f0bbd4ed4d12c9196031c61863843146287cb0f0e17d5298f42089a49452ca7eabb22ada848d2c278cd135fea8e63ce5e3da308a8142e5748d3f8dd70da0be94cfb5f65a80539b31b7aac9cf341d3b6a90321b693b1d2f0eb9958a58ccc78d21e6caa7613acd94e05562bb193366ad75625bf79525bcf2f9b580e3c1f0971bf618f64273ae8386a4d7d2928c9eca4f4108218470b44108e1ac48462a6bb2263be3facf782186530e0d1c3a76ec98ac0d8c1550315237af851a9bc702bc516232a7e319efcd3c91ca74329d4c26fb6efc519f0018d753330ef05ab879301cae4005bee6efbdf79ef6844d6d31506c7a1a29a50442852140ccdfc31aa900f84eb007af07413dbc7162f4bd666acd441b427ed90d6b3ad9d834675b01f0b96fcc25b0f7efbdf7dee36e9bebef513470b48cde68fb9bb136a8196b9a62057b570ff684fb56435e90b0f3298410422b2afc8c400a142bde7befbd479fc65f4b817dad00d805ebeeeeee867e3b7faf2de3757fafcec795365c79bb9e16fec1d8c095aec4dd2dcb92dc0dec8e124518c6bbf07320d7dbb2fbddd84ff6f895b3db270f587ce8d11d88ed52d7aaa4745a4d5a6c67ad079b2d6b72332b3c166ab035af857e7feeb160836a9cf92eb51c1a5d43d3d07068f1be5473fe339a2b09b130957a333f250af6be1fcfdcb79a82ca9db9fd49e66b34cd599573f4774d5aacabc0d6fb1dfd145a60e1777f1b676ede524a2994c46a8a28d7fbd120f39eaf4c0ed27d4fba493ad0dfe337c90fdcba7f74f3131884add3248c94ed982fb71f321150e18bce7cd601aa3af3815c27887c1da8ce7b07e87c87ebcc4d0720241df9ad0363668374808802ecb58ccd058eb3f199cc2f90b2a5c3dea14b972e3f3f3fdd9dc3b79ebefd388fcd2acc698400802a3872841eb972e54a962c59a698624e11441034881e7aa03d000104105a6831b5e0828bc9c50e3bd01d8a8a8a882611114450227082cc08e39208e38444430c3144952ab3ca0f3fd01f72c82187201ad4ddcfb22147489a5fa48cd1210c02c8d6d0cfa3af501d42221344772c5e887cb89d63e1723b2bc4352c44d734a5c462e576aedd87050858a4b87b9c5c96483929c522045b976561f9c17204cb900bbb2e2bb7af30a1a357b85cd3ab1876e5882b3ea0d60a856158adf58a104c1a924275e7cbad93115a54587f1ef29da35837698ebeed3c3719ad00a972052d42952a3da8e284655996755d571525ac5529c1355d2fe5f480f75eff0ea8d33f478c34c70d6798bb2124e21e6d5897e634ebb59e5e17915ab31a4359679688ac5966c3ba34d688cad19c4a0e4ba552a9f9a130ea7c4ea41b377e3eea3c2093a3deb87538ae6f9408d87b15c0385b1fffdc875d5dd8b8796ca6e91d087d38f78e1baf2eac3fdc71756123f768da80777e8e1a9b3bb2e1cecd06bd3aeefbae67de0e757b732ab0bd39ecf19cae4d8d5752c2b3f2c997039f10d81077ec84db09bb922318886d88a177e8e850178541928fcd7def753f7b73e0d320cbe4e81f57b3d7b31af1f28bc20f0019d88edf5015ec61019d4c0ccdb50c8ee6fa85e6fa7798eecb6cf4773452dcba27a172eb6468645235f8e54163e6cca0916a2ebaf49f5b0d7edfc6c31dc69cdeba8610421835df9ac6d4023b84f48475970fbf42779f7ea565ee0fd0e7cf24a5a5efa8ed4e174ae7ae6fc79f7dc7572607fdc997bfb475d45e277993264d9a7093264d9ab4aa49932650a552a95ca552a9a24aa5924c542ad564c2840913ca840913265645a2c4c9559908c1ac64e18245add8653d46aad8958d3a9fdbf1c71f5dfe8b6928148f51bd99c603febbf076a4db2c315b6bc8f8fbedf8cab870a5e4417f742f6b8312450a156e7204891227eda5499026429a148156b270c1c2a144914225aa8e2051e2447a5105510951159956b270c182428922858ac5e40812254e2e2f4c823011c2a40866250b172c2a942852a86495b5cee650c19157f390a494bc9a77bb9743054e5ecd6b1c3b1a8de23f1746976edddc7cb30c03845ad9cad34515d135a0b3b9d1e9c76813a36b845045d8da009b0b9d0802fa010202ea9f0eb24551511116cc5498cac3a22746c8b215a6c254749828b5f674b2a94b63119f1ecdf5cbf4345753b77b5324a5d69e4eff9c444908df16736e3f5232be75347ceeebb7d39c0e2f166e1dcde51d1dd6cd210db10c84b7044a082184b0b264c9b5a5942c61ad554aec0629822da52c285bccd335ed3c2dc32dece5c5d8c64a20cdbdb421a70e8542a14e8fd2ff4ba9a4924a593f49dd7ed0e82c81f2fdfa5c59af28ec961d88e3fdb4c888240b24b30a4aaf879af5717962cf5b0799f2a4349eee552d53ecd435585b6123a5943efa0e8462f564fdf59976c9ccf7b9f3e9d3bf51ab01e185f1baea155d68c0972f5feebc74bedfb9c9cdf2abb0e45b25f21ef01356f11356b1133e228883784aed5071833afc77b01dc92a15ab588531b52af6fd5cb1ade3277ebad7d0c3e25141a15028d4b4f3dd0961c642b0b0a74b4a40a0214258ac8218497347f04f17b663d5ed6615457259b5041b6435c1ded2ba7eb7eaac4fb24fd3c5a8536abdb70ccba9e5e3f2190899baeb71e14c59f1e78472db9a338696e18df58435390f0acd97817ffde8b1d17ccee6c6dcbd34eb75a7d3c932a55fad94ce68ac2fb357acc3ef99a4b4fd38e92cf14dc605bff03dce879a0c3ddd470c3234cee969697bc59e208e777c19f856be3d86e6baa68b392206c98d5b5762829516ba6f002fc01e0d576bad7ac1adeb61c2daeb976d580c52da97df2f640823d723280f4b49a57cf7e8719a5470461819beebd33dd6b8f2a3e60f35eceb5bbef47a0c7a8f5feb356f6abd5f8c5f5f4e802ae03b74874e35a74597908b62a93bdf39c59d53dea87cf8ddb575a97bfd4df65d0c164827c07c17801b3b02dcf8f69ae2d65d8fbd497bcd0f1380cb5f3ae1f2cde51ffd7b312e7f67fa97617e2f9a81d47da4f6228c76717b57f6ae9dae77ad15586cb35b6deeb3286c17dfd278f4f3a4536edc52a06a355dec4d5dcff5674db536d74174789d25f42df5b7d429a596523aa2cf94bef560d0fa9e598fa39f69e0d6f7cc7a37f4baf4bd865bdf297d37d4bab4beffa319bdfe6c3dd568ba063ec98a935c02fdeb63a49447afc3eb641646bfa3376873bd843fd396384b17b06700d4ca527ef38d5956cac1a97457eb9a2f4af6dd8f66344eaa3e7c18edc11aabc19a910699be29f53b97957fbcdc58c440990dff2936fc7b08c66fece546f9623d64afb5f5142aabcbef174ae95e946ec6954fa9b5a7d33fc7a1a0508c299e166a19f1f91feb1b7ee7f3bc292d14a539fe2ec29a5e8172875fafafedbe759763d2a5a5615dd9726971b76a3cfc215f6aaa38f6e9107bd5cdb2737b560c77fee3acc7387341854bfff9b5e89c8eb20189d2cb06d1e17548d8d77afdf285b4b95ee2b48e98d6fa58ad55e33baa19bb0db73ead1ce5fab466d9f750ca9e65bcd1f7e62e0f18da7a6f9cd15bd6483bbdc7c20dba996cc4ffda12061857bfd0bbef112e4287b4146d31a3750061f29f8d9d18f8be28949e9e9b01e1635e31e6e70ba18e96c157c70e59a5c364eafb5cd263ff48dafc1bf2cb1dfd4863924c0e528e8573712d7e856bf1222f822204054a4389c274444c501496ca3a82065948d0204b093be127438aec208461ec30e40de92143554b256aa03a4503d52cd28bc44216492d6491dc426ec1e56224b72ceb7514ee27ac7287d0dda13f95500b75f71645935113de1085384196c89f10c3a2c65d03dc025c2cd6a811e04a2d893f748de662b246ed842bb524f05b03d263a3568dda48b32ec51a630cc3b08771a3b8e9f8c01fb0b90924ace39cd3a7b76bb1df6382e07337ec86d5e7dd884ca28a98827ebb040e3d7403914d10f0e35230901ddc3089e81000f98091c8430b218bd8e25bfa2d0f72089f1310b14451113f6c0134041538cc1b7a0890d8c5911bb6582f383ce9b7dc03101dfa2d638942804f0a59d46f998b21fa6d8360220102876e0c9c608a192491042557a6d0c180972a4a30610417e420053a2b6822249b30894c1c68501474bb27148b14918006d67e49c2ce2de4ca92a89041aeacba505975913283e8c4c9fc61d5c588a865d50588188355171e9c8b55971cbc08ab2bb4585d31845882d5154f34117f9e20912a1364b96204525c810391b5966084951541b0c207b6097bddb7b2c209265238c2ca0a27520a4bba6f6545112b2b8c64a6298d5821241a61b32f11096bbb88c0a6301443900359831597279e8415172551acb80ce159acb814597101c1aa0a25acaac89203b9034b9b9051ac89091288884bacaaf0c1bb586df94282d5962dbe84d51629565b76b0dac2c4961edc8e9b6297c0974c8c3ead195bacdfb7a2628818384e050a6ebf6b12b23999ec8c3dd2bda2a204b7e32210778792df118840b0a509597ce00b169d5682831d2872830e523871220947747ab3557217a1c207990f04e1a50b123f5fa2d04981688b131d649043155974bac9ed1515428cf820b1ef8eba1d4f7d026509276f89276e84222fd677efe7459fc5cf0ad5fe498d8550fa9ece77edfdd4188861f8f3f79f3e3c3e0b7931ce08a30cae7852c241c9073b2c848730d00e0b29c294530c53b53b0fe7aad653b6e65f9a774da43cb56eb1dde9e4a40b0fa60cc5a089dca3f65a2e062b3f7f1a2cc2fca091dbf97b704856e36d4dc403c360580416e177edb916221c581c3a76d0bcaa511a8cf2633418b5893183a6566dfe5f3331dcf8d8f53c343436b09de961a995da246cf7ef830ea494b640bd17e59bac7cf0bd2ddea3de1b04aaa61cd8ce34e3def3b67909e627fcc462cc6ef1c99e7ad81dd8ae760db85da2813d9570507242364b67c852ca0f50fa723e953f4b22c057b00007d6cfb781beb5fd1881842474fed4e4104d02c11a9641608fa69341979b50a2e5be269250723b29c4e52694005d29c463016ef16e8a600d7f4e7b11cbbc820f947045f5a3c3453d7c401c164e808323847e74b885749a0b28437e7e7e7e6ed069d5163f0d047160a6fc9065881688d32b2e22ea2188d35a600d7f6b51c9c038204e0b3a504248875fc74e0ae2c0661d5ea9563a4fc7765439b30cea029b21cbf57f990fdd9cb6a7e7d8bfb1275bb6bce60c7ca1d6a309dba37d5c357434e7d7c55238ca2b8ab273a9ba46e67a9f7b597fbdb5c9e4a06f516b6323fe3ae69357d483526b4fa77f8e43a1523775bdc57c63e81a7fcb2d69499904bb646472f0e5716d33b654731baa3987b54773fe392d7df4286941011209ec0b38cf711ee7e534568249042c2efd02dc6079f4d3ef9adf2a02926b3d0e1f3f3f3f38b0c3de3abf7dfd607ba6bceba48ff98ec7d403b3f15bef317de32a81ed9e90e949ab2238b98f838872ed779120b7f4303fab8e96617ffe8e9d9691fdbc99f637e63b6b3dfdb875d4c68c9e357a35f347a3b71a67a3d1ac3ae65b7be9a675d75b7d6bccd6f1dc98b7b48e4d37603e83c1768cc6836e3ca67b3df6d7cf1c486d94be7fce39e75c69306fd278f4c33c49ebfa4958bd7eb0b06be6979ab0f2e3b39dd433174a5d4d2417da5f7683af7d184d2607ccd387b16ec43ce96f4c4cc974ed5f5ffa9ca6305a69b34fab9ad53260ba1dcfc5361ed3656f194fffce49279d590d3abfd2195a86170088dd28ffccaab8334f4821dc3a6766264426307fe4cde1124e2d83f9698591096b499a4c8efafc3c1ffbfa3ef5a7e6fc3403278c34dffb727623bb416a92e6d7d99ffd23fb4767863c92590dcbb2b26c6659f634ab3103ad9cd9d8ba53dfd1a5d139df3637ff5dcf6c603fdfb3fa2fabdf5c9457268767e07479c0f7b9f09b6398c137c9f89f68ba46e9b0888e383bc1100ac87081e6c82fe0608ffe333064211ca4a30942d353548b7a049e46a894ae3665b1643310000024c314000020100a878322a150309ceab2681f14000b898a426a48170b845110a430086220c8106488018620400801c828434456008da10c2e8b5186d0f2a52156fcae6846a4b7360e8f38f372003d435d292ae013be2d96f21b4eeb169459f9c605c5b7854e83a977e09c059f833b5052183444ab30307a8703cc2b489762e7c32beade515a6071a68b68212a11bd2fe805eb6c658bc54cd669b4c27003c32775b079a4e285a22e0db1e277453322bdd150975c0af393b3c2aec60b78c5a29ee68e616d4e944c547803a561d6e6b8d0379d5eeb97827f1bf7b3e1db5d4a7a6fb25491db74d76e4fe430fd85402340eccb4d9c4af04d8ebee59a4d1a70659545084b80ee91e93bf89c82cfc12dd052183426fa4a0e362f89bc57d44d1aba58fb97a019d179b7660ce60f1b4e42736939c1cf81feae530cf0908961082cbbf086c8b2d2108bb42eb421a2bf335e8fb8c3777cabca48da8afc6b2e4b738431407be243245826e8b4e695c020e294c16ac4fc98b87141075f71154bdcf8d860e3401c2011959c85f9144c50c95e9193508d10b88d5903cf265db7e1b4569168ff632d15df5208b3891b7a2453a8e1cd5ebdc843a2a1dd2f27f0bd1cbad4f997757e2faf11d446b3f00051781670085f07765ec6e1862e7e1a5af71a82800651c780bb780787bbb337cec489ffb1af2102ab8ffb5fffe1bca3180ac96710d39b1a36a4dc1c5fc49c68ec8cf52269af0c51b0597e6082a3f6a11c668b45a398cf0cc39cfd4b215764cd14011c952b06fb084f3e5544976f9f533868b68fadcf1e54303c33e6ec5169037885052f21abfbec518f136c960a981b0d6ef6e8f30535df464a52eb21c1d76b387bd4367e169732608148e1a382127cc3309db1a88506bdedd2b54142b361dbb5f69487d1d618a04f546eb1f8c4d6c8029addd4a18f71c74d058f5e41f4fde4c3c04c0aecf4653bc4fdf8c1e9fcec9d41c719c94614a43b2289e1e2dc978008d3b3522088d31fbb80dd3851976b020f754dd0a4427a0b0e5597ec6d80bebbda40a952837befdc0610d93f047e21cba24d0bfa46b7a090170e5802469cdab6543fba8217291209c24ec7126e21b9edcbad6fd3073a8bf545563353fa5714c42da8330785e4cc4be72b6830d6bde80bba4b30f92ef456e853d53bc07d283c97f61b8b8adb82ec9e8ede6ff0e0e8305a0595b705fa5aea72dd1aa04a85f4141caa672ee9c828dbc796757a443780c83b292a23b91eb2b9acb76e05869e0eec0d12cdff2af3d8b4966b8fdc0a0ed59e22ec196484bd934a2cf71eb92b405487a5f4f73ab18936977d702b58483bde833b7f3370c787c0a8ba35d06f90a464606a4a15bd0587b6ae6dae76bec4d5cfd05585370587649f51552e3aa1caf9ede91d3a73fa5c51004bf4c83739ce30a9bfe059d12d966ee66eaf1ed62b1d28ffa1dde7a37bd1de5edd9a8e873ebf367df59015845eda0d3fc414bcf752f403eb659e400918c59c99dde08c1f48f3b77d09c838bc6d53e070bcfd528c1c417a4dec60c2854221f6b05d8caf15af1d099e8c2555af8390b2aa256857b0ec66c3494203405bc60903ec52538085aa0430169a2040ed3520853d3413af56b4652ce19ad60f2a4fa0e30032ea0546b4d8de640e567da16606caa9b1458c91b5530b24676ba383acea56e4a4bea667d3bc3d20a82bbc11a9fc2835721cc7806d195b862955cde894400d7e7129b67d6638010008bec425fb212bf9db32de3ad22818ec38da4911775834380e53cf9de437faab853e0e675a98176c73b055c4cac52d11fd537fdbb0b85b4412d2e3d871a6c3c3f56d4ea149aebe668034f2384d43b67e5db24f69cb4ad7fad21a4739c842c4bf31e68ac3bcedda9b71b6030011c401585133e677f2d3398a408d192ebbeb16f9ea46df82908bb62bdf830f7bd4506a6b81dbc9d559b4df2a6e7b4ad950e9ec791b37cd9367e1ac031f9233255fb249ee0de2d629a60b031365be58ad71f002088c219c4dc58aa763ec117200264c097aa0204346f4016da18954278d292984961d6a5c385a8bed6e60975bfc47056b850b5aafa1e3f3d593d18dc545858c2c86ad164b5e93ade25dd37b360f0d800ccd6229b486709ba84835558d984cf0caad61dc8a1ce3b851ecff77d09b1185e0b63006cc886796d2c5d24732ba64a1ab169093e8a84f800ebbb15827adfa09918db558a52fd92e1882de904a848965fec0ff6fc3671cde7011fdc43b93277bf8cebe139d1cb59458acd4dc88c7ea446161eb7c4c8eb330cbf094181053edfee48b3921b6882c859ec6ccdead5ee0563b100487273f061764823443274d3f24834e6af6f11309198019e81c0092639ce152c392dacc5bbf48ac1db790d855a19814a32f88caa6082b346e2f080a04865936fcc1d0ad422c8448d71067c7ec61c65ccc07fd18da86683ff965ce701b66c691206102d11be4678c83cfb66fa7cc2c328eebc602c06e8e34e2ac6ca87229b814ff750cdc645dc3c20e5303c07be134ac052e2764580ac7df88007c0ca9ae5db61865f01e7e5fe36f17c8a857a6e1764b5f719f0f803b6379810c2ef52f6a052216d781c4e2e794af759d40e9d5b6f1a0214508a222a7776a7f5443dcd577f1203182a3f66a54416fe0b7802c0d8d505283287a88d35ad71f5c1c7ab255e653a028252cacbe4aeb1317dbfec6bdb52e8dd39a6ce948951a1a7d958ce0b6c35e47331c622f0af5c2d1c66dd5e76da813bdff6c960614cb36022e653b07a60c6ab5d342e7f5cf5f78c16002505b0a12c33b284b407f05c9de968940421a7fea4e0bfaf86787de75561a4f0a8ff953c7a8b33e224f3e8dbd163a71c7b5f47b496dbb31429b8902f0b7a1aa4cb9ab7bb47b6f9842a120aa1c4eb9ab5c049863b83cfafc3cc8aca1fa84293a8d8620a628fbc2e9063b528a12f9a0116c12d08bfac6e00da79003b1da701ef4ad29cb9ccb24d0447c194c4189c22849303207acfff8f6d34f2ed83c4588bbc21cad3ef5be9fb0982e0b0e78d046525cb1da021b99782968bf254517b40e10c4be81ee6e2fd9676cf3e04d410b378613d22da6b5006c72128608c870d0f01b08992846ea47159cb05f3393cab48a6a2d2dfa5c3814fb02944a42395df45ffc6448ee486b40af16a41bd19ce18009c1a58bff99f9549284aaf804bd459b5d9eecf128c4d022c994983e0b974695a8382904996ae7efe9316426ceb015f77f11c23213995db4ef9f6aa990bc7f406e4010c2f44e6e9b62c60c0c29775dd5a5999ee7f1e59a3373cf00298b0564d7d9932c0d9cd67ef933e6b96b19abeddfa1e8fe8b2016e0664bf1c4b24841912981ecc610be8eb0339dc265089f486320783b01aab52344a1b56201318f59162b14226ae4b0dc214c3c1e089c16b540ea1341c13889b681e114f206d983e0865e9c5b2b9d3cf6206d3e783ff642f3ed8f48605d093caa267fc62949d15d4830008d0d0163c9a0b666b0e0293d8a586f2054048dbff45d90171d5f4bb00870969bb119293123933913c7b93b76e96a0c2688e2082620a6bbe061dd1151c0f7f8fc9ea6813870d087360bda09b8a4d849bd1442b61b2e00c520cd70d5b02605f642ee9f711e3c55242397d7d3a619944632682d14a69431f4188300b7c3d877d739648cbe6c4ee456cafb0b1e4b662600aa77d48a93c2efb7798c0ac26486410840720faf17f47beb79626fbb36284b837416bf21548a664696a2c4f1159f686db8245909fb7b884c3810e55691ad8346ac846ef82b108a26e404e375e1a3da3b5ff9836a9bc5972344a801a5a2c7e0a9c6e48f7642f555ac473b8fad668900af9c51cbd69339444505d07105e50cdd1dd26c63853dad561b5cf3f5b05addc1c97b43db52500b16acd04b1c2486bfb08eea3e7d08bf644bb69910aff199949e49e5c5b45a58315584623e540a9493bbbffe16296610d55a728a68ae1cc063badd7ce62b3942787930629b955057c50aeb45866338010256d08f2ff91c05db524e97b847333bb3bf82a1035ae885e622815e2e780082ac8048feb560ff90b3dde2e1d83beb8a8ecd5ccf7070dfb2e4f433bda7e8edb60e570a0a43dafee762df488f6f144d9677a9fe3705c419ecfba6f21f1695ac8802c63dc98b8c66b1326c426e162fcec42104d1e953c7e298d68842dcd6621d44b689a016ecdc4889231ec19de476705a3322f51820748d895259ab03a182a0c39f06a9c7f5f9796979dc7168900d48b91858df857415c99093f0d76f1b736da112e89d93e371b5738763afe404a02cfa75cf53abdf74f10cd03bf8bda5711f0d6004b1f94aeebbf4a818dd3bcc67c3d3bd0bbb382f3e91790f9806bc480a194241bd9276b022720b2d1ce0f543261cf7180af744a80233f2ffebaaa9b8556222064a240fa91d806e4c9acb582e25001c343f735dfeb6d0b73d5b81a4148d8362f61c359e322b432800f23ea1c04e8bee4fb6a31774ad106779625a22300370426cda621c8691f0ec8987197a878ce9e8a402e53e0b6d1ea35031218bf376dde1ff71afd3849f05b0e76299df9ebe870641efa82b99654a9650874e413d01441d2a443a40a6361863e91b403e26310ed99e42124589c030584898b1aae9d88a07485b66dc80261aaa02515bb2f3694b4f446eafb17882c25dd04fb5f897725776e9f75c66841934cf8b82dd7357529b1ae6a7aca74c20a4bb38b585d389598a3b767ece97dd623009843b1d59daf99cce53239d9c7adb52cf1c48588126131f605617099a9ec602f0ffd65cb500b9c58bc5d2b603407f4590752e8b78cdf250f612bf5a97c9338a28bf76f5751be786d3a450e759acf1a443dc7e90b6216c5147e0546c4ad4d8c8e17a5f01075e9ba6a9ec46a01e09c5a6ecd7100f13b6b2f7e821857767277775090cc85b4130611b7f3872b811057ce6d5297a04505abf9b5e389f36302a0ae466758d5a6bdc54d313eeb1ca18210ce368811d8b48aa6789a37941858e4bb2f196c41ae208b96e1edaf174e4db6ffacd6fe69b5283ec6038dd0a15203275a49fcf96966292a886ea922120c2242ee39edcb38f594f98f84ff9ac65313a70440c4a452049fb30e1f93e9cbfd1c6e14989aba6f4d4fcf603aa6db7abdf02cfd19fb4ca0912ceb0745a69fd31ed502040f39e9c3c1a468f23c02e135d58d772182630a4a0c8b89928a6697aea8724ea4086d2225ebf5933808cc1d0bcbc4fd01d81085fc2dca07d1b8da976da83dac0badfc68982e60a89547daa5b8026f4c6a1510c01193b228080394bd2aeb9074f8183bad4fb62509dd80284711c1525a72ad6b21981745ad686f30a493d9b9c08b6c6a6684f6bf4ed58af169aeecd78afbfc893bab8c8f166e7bb34ce64cf0c38858bfd674e90aede69e1dba168cc2766fb61a628c4f193308aee9eec1793334643d157a74e9439bdb47f23e7d0fb80e8fc51befbff548463a171416cce6894c4601c4711a5265f3cd8959dea20989156e4cfa3cbba2f282331cf07a44ed042097e6073ba6b39598e0745bf7d55082e31e159b91b2bf94967ca6cf19b76a9a6cb81cce913878a4ca6262b9331ea623960a3000c26658c5a2b25a4e88750bcb3999c8abe88a799cab4e33599f27fe915a662799a49793f82de0d2012f62eb82355d2ce3e9f6922b13f9d5c00e9eb2187ec108ad135e411c0807c97f87c22dd1b1498dc624e0b44ce6a8b55d7e5334cc22a31611661432cedb2e45d9181807801a301c49cb3bcb3fbed1ab30f7c5f23bef8f84ccaee196be253336b9c210e40015f0b864b24a65c2ef8200a9d1edba08b0919d34e2d91a2fd08158199cf099f7fd861c0d0b5135906ab8102b9de2e2ffd04b3092478bc8b8da32e4459bb7fbb8ba47e3f638b876aa60ea156105b8da2f136385a2c6a91980b0ef153e887aa38fb24da81bff1fb67a724c2d613fdac1716ce729158c203887a85aa9b4a40ed041e39c1c1356b76bb54fc15c7f61f6a7fc703855a606b82bc54b287bb3aabc8e8ad6352282140192e50986b106d6b8b1531f48949fe7f59cdafe09bc90278608f77e95ef8424c93e7cb562353c0d9f4c8b8faf09bbb6440b2408ad7403b0168d0c92b85d188c4d79e9106db05147ba5b79b4ef407f175749199d0c1e25e15e6bcff487d037f248939190c483558028494ec13a64b55bf6ceac926bc3836cbf3ed6afda02ae694571b0e58a7fc7d151b04bdc92f0b74c1f4efb0c6be5eeed0604cc986834ce8fb24bb747af86fad50c76edf024849b68a1064f50b57b3f4e08c05d98e1da13d4d01932a8baaf6f6787e35a7435d22c7624e0aa9c425b807fabbccd3737b02970f2b6dc5013ae0784d382f937f83a3dd42b6ed95f624174c1984a424207bbc77d58f571af4d3b0e1a536901c2724e33d4a8ec7c8fdc3aa2fa396690c9227b8538a43efbc2b501cb2c27cdde577c6f2258a9362025b2ea5a076ffb0d7c9682504f61c21851c7b299d652eeeae988e3855e18d1636fe037bb7c9dd1502409333b02de68dbe345c0def4cc56eb08d86c13faaa0d201bf7108409e2ccd517cb540f6c15f900f66b00850b740785820e5cfda0cf7c5e2f8095e4a15925d48799d8f185206fb3bf78b6a2a0efd4bf3aa62587a2f0544a27a282114c5530921289f540049ed5cd1454c280a658ad42258284d1513fc5c494a2db357b62a5e3a53b678d305de0ba51edf8f513bb695d606d2ddc055160e3c7ab64c93c0be508bfe660c80f4b73f7c50bfad2a6ac5d8dfa4c41a52608a0da81c495548c8caec90e2d8516663bca2c2c893006aa703d599a7b103c26de696893523367d1f6dbea57ea42a21ddcbc095c5686ed1cd53e603d2d466adb5d47d8043093712fe5310080f7f4958c44a746ec155185b4adf3bf1710d31d27a4b0b37e1d6bb9c0a23f652a2115af1d0f26aa533ab0ee85e2a5168060bcca461d132d52034264583eb19900e51d9a3339292883436e929460fdf29a8ae1b3b4b7948d60a08ce0b4970a373422ff70e3e23f08bfb5fdab95a159aa59e3b0993a8024c6fc70f7afc5032752414acc68abd1693580900bf2296937cf960abb50a9f4282356440fd5fb4711add63000809c83f633cfd209259c5d5884a3981f1ae891c8b143e3189685dbb3248c6d580799bc9c7179ddf706eefcaeba13380d97aa8dbda2189b4cf44ec242baca537b87c866c13aa35c0c0804ac2c859bdd3c97146805fee91d03cb6857e5c06a9e437da871b273c229fdb5f13327a6120acc0d22d35c48afed917446fe9cdb65240672972d2af4c56ba07d12f0e00bda250b7b7c95da05b257ae2618158f9bc650060b98823e3a9259c196f316ad13a82ad69e1a6d73d67754a381d64cbfb47cbcdf5d88db4596b202ccbfcb932f8d94e1ee013927ebf10fbd2dd4bacf17f3dff3c2add79ded4f52250ea138d5a552a8acd91e5948253fce01476edc9e6768ed1d4eb3c59cf2443c7a701ebf976f6dd67d39745790b2e230152cd1548cec15d72282a23c121fc7f55b1986f1f57adf78a2df4026e6489f304086d6b3e2c490aaaa10625fe15ca7cc59f22bff574c4ef557be6318d2d89cf6db64c5511d2b8630cc4a7e72a4cc2e09125bd840528ac7262d6f051d35fefaa3f327bfcab9a4a614750730d002d4263e6159f0bfed0b1f497e89f7ceeee574bbabc3f66116b2c2d4340c898e346883a2157c4bfa9006f79a3168a12a54340fd2630daf78f2a1abfe53702c0dd4e373c9a7c0c1e33d89347f076252dfd2c31ec894e88f7bc0b3e19f5a680e9d3f6f4550c1ecd4cbc9a5dae4686656fbd49cacebad988db15c358cc5abe0d1caa2b04232ddf15ef9c89bda984c8d4f2ca35f1ddf3c4102fc788054a716b3d17e2978a7f7e1857ace7ae87978bf4d72fd4a95cb2251c8cd89c1065c477db1a0811ccd1e2bb2045a2627c569858dbb1ddc01f68665c8a9abd9c0e9b4b2779bff7ff29896e3c092cf3715915a61c6599272ea92efaf771ff180b72832332b052ecaca4473a19f29304749c03c27f5584c39a9bf5a7f128817e6c7920572ddaa442de7bed9efba629e6b4d1856cbfb0a1ea5c745864e6b323a23dbcb944e797594ccb689c668d2c507f7257a00b059e53b3c7da7f26db93f061713edbf161ffead3d83540ab91a2efeb1ee568f665bdf7509963c72f9ebb665168f4b388b1cbb6ce02d24b8d9010d7c6fdc47744cfe4d1be56173ca74669d23fde1814d8b8ba74eafd796ead40abd102969747c9a2a1b53b947caf18e08156ef939607a5524dca88cd460dbed9df80243b07fc6c92f776ff156d9465647560acccc5444400a094e24e4809b861dfe11199e9ccfb28fdf876581a24ddedd800c0ce0722a188289977b7a0535ae19d96e0c27a47107478c49913237e8275cd3900b0b0f465198609e59a3c81d0a8d75bbffaf6edc5bb8106a225593f76f315f5a5b9df38845f25398f548d8bc9a99714f2b08d7bc253064b2663f36b7bd76b1cd9dce45ed807cd3467e94c4578f2b141e29bc1cfc720f6ccc3805b42525cae28062882a125fe6811fba84724f30cd1f9bb68841b269f85f646d4ff9bb8909392cf6ff749f11d6ea0f07ffa892d6cbae5ad66c81923d51bb790e9ef80f240683941a14bc73871a17373b3a1e65b8b39cba40a6ac44bdce78c749cd00b2dd1164fa542890472c6206079a124f4910a0f9f4db3de5aa310ba1b176b4e5a73de9e48b9ab7ef82d26089469b6012e39485eca2cf996027db1b092286c9ec296b11d9cb53fd38425dd407ed763f458f9b6437efd36db69c1d981075d9ebed0f1275c5d102c16192ffe27263fa812cede38eb9e72bcecdabfc6ceb29cd0205c7b8748900f2cc85b2342f3f8857e69740921e891afba20fe617c06aa06cd60cdc52ddea56f95cbeb8a727ecbf664cce5a564421cbfa13fc32263898c7381921109d6a893a5d7d34f9532f753d4b68db8a32e57a25f2c06e5e294ec5afde93145e119e51b8212822ed566967f140545a0508f268326b51a145302761d844df8b083034af19849cf5b6c69b9c7d767a10bac2135896ae5dd028d9241972db46f95ba3dacccb333687dee422a7621fef9fc6c933921ac08e8acebecc47c554755ee6e75722033524061c296538ed7fe4d21cb661a63ed4d0dff259b6c92fc112f082538010bd85626bc518b00f0e4c893cd66f46fdbd97860b20a9f43d9bdd9c8a3638e6d72120f8d7543c884168d8eaf9de3e047c075ad9e783032c2400fa63c88b5513b8359dfcbc7e32798f082974964fa02525019c2c8f66ea1f8a382947d5fa8b18dd906f39fe7cafc84b737999f6c507d73d79c0559a126acd0d04cfc61307845054488c957f4346342b04d85ff1f431f9bd4c1dd120078ac87d07d0c26a63b68da0f02a745e597c8baea971a7314c4d77c1152d315511f9dc785d5d116de57a467bd9be1256f54b4569582a91ce40e421a0408a4e89b892b305d87b811744b02dee0dee18a5206fe2788a0157d7cd786a368c1ab768767c50c260f0b358fffadeeb6c32775ede54c76fa3b201516ff81c29d32b6735f1efd7af90197e8bd6d6340f2643621fc0e8aad78ae5fc11c46f2197cc13f59a7c3a44d9f9ee28e5af3f0660b8ea7511caecc54e452cbb549b77136545e4720ebcdc00b2a6b88f628a70ee3825ae6d4d3bdb63669ff58b3630e4b8d3ad73fc1229014df258accd480ddadcefaff8fa4ba854bbf56c6b5f704c0132f52ceeb44d43a2405089ac361c0c8afd66afeb037c6ad704c0e64c33fbcaa914e4b5ff1be8b22d95c399d09ef74b6bc385fb8c850d50c1c5151a7311a7863be6449ccdda022e55b8c0074e363f07e84344d938cd75f23c281afe8fb4c21855fae5b7764e98f20309a1bf34ec0181259859d522211cc40c9b8ff852f36428d730917ace803abe520946480d2ff0d10f4d05a302b1d9ddb83d0097a1199e09ea46fb85b964d6a6899cfa541c12caf240c1ec950b5c3c6562fa98fb8898377f8241433f8ff9d4c803bf14b08adb1843fbbf7c93024695ede503e565bef155171ec7f50ea848540b925367a1173f28e2a6a9b6aae700a4ace122a52b6377f145b2f0064cc6e4a629cdc2008302ce8cc7ea3e280838fcad738ec2c4ed848088cf6efb8f39c5d95f2898c54e4c5d95eb72c9a260ad6b1c71d30ecc786f2b6f4244536b984b6c2439f9b7cf36a149d301159b02c2880652c1324ccc0abb9203deb333094a638bf52739b8e3ff44b4c2c1b055f2ea63a6c014f194e12188965b1696cb0995a1d3390d5cdb17ce02d7f78045316fdaa6fba640a47071be7df73fe9b61564af00f995768e746fcf6949239b801a93db2dad8e803dc426876fd737e70c7dfe6cbb22e91e419f3d2823d0e04ce5bb52845e0bc4a2fe16e641e3aec703961a72a6c14f358e02e160211cfdaf37b1d337b9b95630e0b0d6c4f22307882f136a0812da72667753f67ca6483cf4fdb06d6a84c48c0d36b3a58947ece14f33f295ab8458b1a06fa318735379ccc080b86fdca99b1df15e12faa35ca99996f51f3ec87d3d34a66ca4d9775963ed56797579c6daf967aadf008bbce6fc155c952ed3dd06f46cfc5f91eb8c2e9cfcda04eeb200e3210b0008767ef53b53201030f00924112356cceb1195420d4e5c4c7e774dff3d9107f3535cf90b9dc919c21275423b6394ab0c7b952ece9139672ccd2e6d2c2b814fc7c433a95307136aa43269f0faf371069e37ac7c22537bac26fa6a4ab806fbdbe10b3c8d3f8d091d78ad557d0c10169bdaedddbab176f28f59efe49ed821fc7d2083315b9fdd2554fc192e0f8bd8cfff214257f8c17fa0fb5a9c14eba86411affe2dd7178ef154d75d749ac400f7037cafeefa3dd3e21428f6768d9faa193922cc2121d13d4c295b241ca63d07439e98aad329da63a2ee83bab032bc2a9f3932f4635a691b5ce36336c1033ff858981035e4a26cefca80fb550df87a53ca207843739f268b9ca8e6c239d0ac2236a590f03b3e906f1bb125274b36cb50201670cf18bf4d270c91aacd1e51fd29afab450f40656ada6ccf24d454d351af597504dd8285a0e02e67aa3377d68a91ab641d299805fca9d094e8ecf7d8b402ac6fbef797cd9887c1ac9a456ec58b4c67b8cf73eeab67b5511718e1eb88b31103272c28494859ca84a501f02fbcd2d3134ca675becae0074d95ed8c58be2201ffab9d3b9379b1531d3144ec3e68c5839d68903986e5617b347c24ee8eca6e8948cf6680d2d140decf240cbf5571a0ded58f0f31841d838689e866619f3b21c2f0079a3da0369e8f25827e4194a9180baa15f2f607d8bc8015b9643279d9dfbd9064801b504349984ff1b229f6edfb5149162aff74e8943c1b97787902a9c73b5ef4ce202ea02d5b11d0eea5ca0b8fc5212d93849bc3923ac033199a828918caa42373596269099b78358ee9d03c681ae90b72627bd69c3a58092077b201e6f24438967ce14fbc5ac984cada0506e42f6dfb30ad0466418ed4777268f05739584fc98f0da330b97b5d8093b4db8c173119566dd511a6906e54b3c050515baa2d7984a740f81315ae962a3a900a759e75d83d52cd0dce5ee14ce4b3f6d5b1573c9e1c3dd88eb57ca789266551516e1867379f0fbb84a26fbd9859f7e583c9043a4b28d031bfa30fc601f32f2ac005f9eeb21d83f8093aa38bba6cde40a3b38c6322050c57ab5f4a448c3448aed9f5f45058eaf88ac0f7d8c9bbdf0ecadbe0030356d97343ce3cf60f51d05106ab010bcb90b1c498305c5e1ecc06689efda9035817d9af3a6350170117ed21b33120f4323ac9c5eb0780d1e4a0640d2004c831ce7cac1b1df0e08ecea7e1eb14d9404cb8ea7786aa678de638eec08ad82ea63edae144d10b3037ce711f72c25acf2a65555e5842867eb63e9a72426b58168d4c86eef7ccd070f7e32becb8ff584fa6755b7fc6868d045ead3960b8c71b6e92aa91a1a64ce4adcfaea026ca1dc3e2ddb48423981ef2a887edfffb4a654ad06e4b228405fd17939880fc491377a78598852b5af54124c8794ef021ac41c6cde43ae0a9708c3e1d436cfeafdcd978977be098938158ab13553a7b1dc968921d9db95af20f252f2092708944b16ef8dd06b6708216959d6eceed16c6af7a9b20f22bf5eb16682e648cd8186b74294734dd801f49ad7571eb19d242926864280b3a80c207546c600bf3727bd5715373c7934e7c20905680bd79613deabe1b9d3852887fb443fac81edc86af814e5b175de702ae942e3e79d02908adf4f784a6cc93ca323c6f062b73f3b21ce398239d9ab802555129cd7dcff6b575aad1d93f0fe6d8389a4237574e77ed1202a5f41c6bddea76c3b89748f474b737b0d81e21999f329db930dde0b778f90e836fee805db606a992a3901d38267ebd3b50e4d31b385466c0ad7a2257ce470593c6b11a1a140405bbce54a97de4c2b98675fc048d28c3f40d04adb8c0cb4b4c9592f1cab089e513a76483aea61d2e2a48f884ab4ccda4d7eb511759971ca9a002e4d743f16790c5bae99cd096955cdaca20b694395f0f516cbc179029aa22542f93aa8d34392e138d34d75f24d72565dacff05c4c20576e178acca0f82777f1d14d842e63b2e28de2a3efcefae6b761f1c8a87460b979cea11eaf4fffac0b21e51b02a321b90b390029a3479994394ec1006d37ed37a0d7a4b9b856508120f6f5cc1d71890e88c25aab61feaf3a53b270b2e2243a3980faefdeba0a27c311cc38edf2b37f5315383f9534d0512159d63d8082badabe730a483b382cd685fe0019585b751362b70e58916ab208e400065336d9975ec3ca854a6bb0bce2b084a538086bbc91fb6ad660ce6708e804ff6fa6ba35abc2abf1817cae2dfbf812d6fe220b32036e3700bd1e08677d0efdc7b3a8c85c857bd1ec2ac3ab6188f4a0b5e3b89aa325bc2a1c01a122e37c204166705833421677adc2879ab00d2190fb67a5349a3435c158465ae7c0c11575b295c1efe4e034e462907fd9c51f57999b590cdc09a4409cd0b8e639739eb41fac1b0cac578120c121a29a2af2cb2d532c229d8b38656774efc4793fedf23f22031ca5d1c27cac08e87e89f25f588c6e7a344c9b54a4b90d273c24b1c869f00b78ab730b61ed7490789003f3e688f39bccf91d6aba788a7c80f5c20941736879d834ba2ab1ebf0e2f0a78f6da759064a788707c3898a8f898d0cbfe18b2ea5460a744d0aff139b8cad30e1ee1fe8ae0313b91f0b501034274a80b18fc24aad0a1621ce2e0c921ba61801eb28fb990e25d2e06f4895e0a775c7a7b587f3a3e60706e3c00d037ececd102eae1530c541d8eef9242184ea40362a1f201b8ea5c986dd840f79d8487df696cfbf13aa3e00593ff1bf2ba2076f3aae353ccb83de9901b56cfaa6e051f48c3bdf2804b700421384e19e5172c0ed3e9e08d56bfcb190633502c436625446e15228db066d5aa8a82fb88dfa3c80e691e71882e461ffc6344cbad0bf586b6c78fb8c4095e7066599110add863cffbb310b8a5109dd9879bdc115892e5b698f58521c55feacb8dbbf4203304d49036e465f8a1fd868ed7d970f0c04037ff94d5b3ed478fbf2e0ab9fea9ebc24f2603f908b3fc7effb31bb5070dd21e28c510904eb62110209ffb997bd4309e15f743a20f151416ab4afbf1fe4e04844206cb2927c38ad6020856248ca829c2db3286adeeaa009867005c3c30766e8f3e5eb9d6649904adba27c0e91b29fe490525ee8d28ad98e087e28e3ca1e20e80f210b068b3560db5604f77208bdd1228f01be56404a1784e844e9822e87dee3a77d33506531fe2eddaa1dbeff02cd424bb8e8fc491dbbba409aaabed3dc57fc72e5db94424d6699b6ea2324b0c498909b5808e2d852a226cfcc82077556cb0ff03bf47c2b20e6792c1327470fe054cfec554a79e64977489c38888470908ed9f9788b54b0e94494373a8d39c554ba7b36709f164e8dfe472d4fff061f02eedc6028ada59cd49c7044ec9c60753f2928d2b019f2a7b65bbfd32ade7a054e2b8372c835fd28eb26410435fd5541a93a6f0e53ba0eaba83833e2b05282374804b4eb22029bb0977c8291f770b4f09213aecfe64b5251bdfb5062ef505a97436468deec1cacfe2675470fee135dd6b2b2ad8895be70f8e0500158b811dea677ee0166fa58a6f953f559eaba66fbc13d949c74a7a4f35eb7358615dfe1f7717cf002b21ebee10a7a8f090604331a5d1ec818139047428b7037e6823a39bcd2164187f10509049c10c7d4ce76da72f8f45f8a5d63256fac3552a1d7f153e89d1ddbf021bfea234de0ef292cbbf8b520b9f95ccd8eecb3e4bc6a204d0957725afb235d66969187a43ab94f2c76146be1e1c322e5d6a0917da17ebf8a34f1e86c7cd87da8799f306616702e7e4abe4810fa903b7843f00620ab10a05ff4d3d8a69879aa08e7046aee99b219e3e922f10521b7ddb2aa972618844a5f978a2f33fede03c4069ea7df84692390acaba028a6f28c165b5aa6ed7f6ce2bdbebc68c2bb6c4428dd10dff7b6f56b21fea590e370eb7cd10286f08468962cf165ae9fe523312da40895a184ff2b3c1f604014a50b9ef2d3705a12fc1727e26090529dac7e6fcd2774618c7e22b6f481da0e1f9378926f148f84c48b5858d11aaa2a869eba0a4a116440d5a09690df80eb2a12666f33b5180a8f9d7a0092b6260eb06628690572864707037e89145748952c2f3c58d9a2cf7c8b68c392482c6b299ae264bce25e763e18ee4a346e0d71477383edd7aa0b3d5f855944e3392537c438926abdf8c94fa8366f8c71b7ded86314aa19ecdcc97670c96690d95c28c17184745b0169b45447f94826bf9c6d585fcea216eb9feda5e09a6bd1e9ae4147d4becde4ff962bb5e421ebdfec777b3ad5dc2abe11a0d0108888a8b6a432ff52be326a41aa133cde185914edda27dd8f58ff56390d6324fffa79612862604bfc5b439709add1dfda34d30869e16a95dda9a94ff20bbd63bdabed4d2d20b4c0f58038282d479b3f0b08961f56900146b25791ef477f208fad1ee2559f10cd71dd0811fd0b355085a9215f421e14d334860d2804626b98b8bc96d360302660ac5b233f9d032846af9a9ed64cc77d87639368459f3051e7996c8206eaa776c410fdaf57e56d00fca0d6c464efc6b765a15187289ca3ee5967b7050646c84f32151a630ffe2a3d812b2aeee85705ef71c2da89bbca06efe8531b946e5f2c8f3bca0a810cca9d270c082487bf9b4d116e879ee4ce0e9befb74c1aea80f64b2d5311b030017e771c83ccb7725cfb2c9e94f7bcf7eed058d03051a0479b9336d8fe05d068724edfe57356e430c29a60a79ba3d329a285ff9d8ff9f17394d821e61ef43f212cab3e7715cbd28efa9c29a368501a2c6689320f83218e6a41d85fa2074642506647f8a5f432ff987502070a87b08620b7a83089da6586da35a6367d3c85dc066b9d96eedfb43bb112888e69c7299a44a5e0530b8dfe0b7e03ce6e8bf002c01ad1e9f53069d407d029b7bfceb57ffc0170ed3cc6439caa434134623d3ac680d02647d1036cbea87958081981f52c77bfeda3d38cbdc06d4a9e3f8ae8cafbbe5eef352e149c052f3fbf16c440ad83afed035936c006724405019e6664052f7322899f9ce488a2dfebe98be0e29cafd61adb3f1fe5116a35ff5892aabaefa7eeaf89dd372897a7acfb687b98a00cdea582a3141936b08feaf9459839408b35ee68d55521fd1331669ea2bf3d08d6429ddc9e6bcc2657fabf63f050f6d481f3a4423fd2e83121809bef86e5c3f1ae51afedc59dbeaa22c4fb50645b506af983fc7de221c94f7206ecc1b507b12500dc1a40c67a54672557419213c0ec4e254b6e6c27207319480cf15a7fd3d993140698dbb0c6186240423c80522442a024b0e91bde7a4eaaa098142eaa336b05358f94f86bb60e9966125810c99cf7f6a26fb437701ac192aec38f443c6962a2d32ae953f3c824d08da3c8e5ac861ea192a4197a7327e16226316e324618d1151468e37267d52567e34766d92a0d7c26d4005ea50f0686ee8e53ca84bfcd2e10993aa4e45f65d28a3f148a1e0c2c9d3fdb578adbd8fca17e7742f34f8b083f505577fa48699fa2a88dd3e6a4813284036570fa49fbc9917dc483eb4b5a97bd10fb1ad158444319571fdff4b0a59dc26d1d60459622512dfa78ce768f6b8f956bb241dfcad4dc202a2ad797e1d180ccf284ce28f2979147b4ca5354af7694ad4ff8f08d4c40671a083a579266ff06814a78f3b61da5c8b3e83453a3f8372c80a5396a91f66d24393d2ef947836a35c27a4c13fe164e69c082faed916c98cad577c7cf021672788ddef565b4420064c4bafa1fefec016d31d0ad056c3adfe54fcc40080fe0999489c12f310a5146176be5c49ad35e7d77144f22632b415e801d14b653d753cc27718fa43f99e30350901fe096958b70a8816d0e6dafddf5647a6c15de61c1491c18a1601a554d648c67ec8bd0feb62e4e1a8858a3a26414b4911aa97da4e6b791c0bd1aa4165b0ce708a2615519b46223b3bc1683c33bd649e1270a6e85c81b5a13d8a9cf764204970803a8c2579be73741b4f745af4e096bbdc050f3c584d3fb31f244964d8995c7882336b28c86966a22f3a9b01dad54b89a766088452841d3ed68e533250dc5066925c971253ddf324fda761024b01bd6f82575943e97b373254f85b9de751ac32eefdb12478a2fbce73b0d9314f96d1361284408e10a92e102ef57c7945b62071bcd35595b05cd9dd0b5ebdd521e193c6cef318e5dc056a8fceeae5d3581fb4053ee3ed22d67edd7f9ab8c9c468c118033098ca8f16c4e6aae89d1bc02dae77fcd029588bf57238628c94b6a8f1100fb0c7be22185b130b0749ad51b32866c3ae496dad6cd7b32f644320138cb2a41ec9b5d6365974de78c453a176832fd4b32024264626290d768efa471d36d21ab28aeda31d1e48107f91bd114cce91b8acc0210b8c0ec4ebc28342ba43edff87bc745bbe31ca5323316ac53124ce842bd10c2aa1f7f47844e5a968963b29b16090c52f9f3ff7c50e049899b6d6844d0a9e354f4438d6425bff2c52bed60342c6c5d52b5f897e211edc5d0bf8ddb900629c889e787613214e03547e9b9e7b9cbb1e5eb2935d143bfbe19cc8800e673b2fce32f192e0c038394301dd5fe9643932ef5587df13f6469d9d27cb0f56631ca469a6bfae04a18df8a55fd452495399d5eaac964ba5792dd525857564f441f673600efa514c2ad91119c387af0408abe26736f32fdcec577196608eb5ad4c2e352e1834a13a6085a783afc0d6c9d03de9f218d66d3669ca2afebde3f0c99750c3518db6b88090c2c8e4dbdea43ab6bf07d40d930f8a809e1f5fedde9a9c96074a478d3f0609931e36013609f05f10a843c42037c12b3f09ce2d0b88e81066cf27b17efb1b401cfbde8ba14294b5b647ad1362e955ac10eb093909946b7ee1b71cd3d74d01c326b5c8f7699263b54f3f5a02a3d414f95a80d316a9ca0b9f70012502136a096c4e79e1d29ff25eff439fa767fd327b6de5f0e16996e2cc80044910acca3289f11874ba05d2f403fae7106782b15b9f2387168245351ff55c4ac59f7982f1e129f1324c60dfe73ba9fcf6187be8c4f8657d1efbae2bf19471741488eec79bca7feef38a71b432d6e0a3fe4ae831332be151ed6bafe4873a09c7d03eed96f23377e03e7cbc479fd826bf0f2cd8a7fef39d68fe03cafdf62a964008d6723aef3075fcd226a3edaf0ee14040ba8e9d803680a402b220c611feeba1a1d28bcb262b6def020fbd35f40596368fc0bccf6f4afacf0ff7da13432c29d87c44a4be98e1e3f4f1ade4bd1ae84326706e4167f55cf2237d6a205e262f76f3d106397694e615ea0a450e43430b8f4ac352684250afff69ebb0724e888f45718992a8b1523686ce09ce0c4628bb00ba5a5438b779997650a43ba60935d902e29c9fe1e46135e89ce1338f6788440837d5ea4808af09c3ed0a80811558cf2ec6655d9e052233fccec572551a5e3b3d208a9307944250fc02804154ea37dc940ee72d040f22fddb6df8cd424f236b03965f24b30a0466b208e61f0b355442de1170629c36b1e169deb58aa0c59f075c88773570156a818c5a5f3906e7aefbeb410414181710424e47330f50113d579e221b0261118404e82d249749fc957e59b312cf22540d412a8255c916e7444f158e127db3142b1f180616a999f8634c4f00d04064b0ba0e423052372b1f765247f1dd6a19f22e3c9c1a29732b47b8993dbc2bc720a2bb0e9085d6af45af7bd77112028f77b30e6b788baf79f58907e0d99094727a3c71eb040c2a20e3e9978735018a13b54de8be1b36814c0e910d0bd02251a85ff5b30b461c8b613c89e93a006109e29b8fe105d3144a82ba15f16a0a6962e8e7ba5240f8f51b03186d5eca61163d5f1bd43d4b57910ca849060f4f3eb1a246642f5e427ccc8ebe7f8c9293668cf45dd8c95c8c8a0bc64c96a16b100322b04081bf5b6c2858d05212f1134f1102c6c4288c540e5109c636a0f4ba3cafc6e1d09cecca6fe308a2a8fd32b7fe5a20848e128638097b8a68905196840b3235680bd070784f766ad6874aa7ec7509dcec0c043540dba6570cfa41df09af517135bb99290bce4db54026f6839e1028e66637be289d97b0f57ea86042187224478c7081177e1b6347877da869ab85d163aab8aaaa8eaeef54f8fb1ccd6427b039fb6227a1209139acb2a55a0eec38991ac5dd5a64a628470caf60d17c8152655a5938df1811d8bbed073eeee2e3b885be7679e7f835dba65e902a8370f12cd7a320f4586bbc46e92532fdced81bbbf1f82d3579f24d3a2fe4e04816798c47ff0923f541e44989f20b1cf4cb1bdfb9345e4d88b86f869e16ec9a35808ca095404bf332415969e429418fa37480f7ad2a2f656f0e2207e983236562275bd5e5384dedda348e4e3e1d9aa39d41a6a6fef83ad235eca68531068643bffc8e4ea5c675bb634f3a55c4e3488c022908c39db739032a9e467e1561b33689b5650c3acf3d4071ad5a1590d1f99c19272ce60534be039b0d56d5c7c8fa42ee9e58a5ba411aa769022ba9a090d876673962faba660a9a247dd9a423149c2b51c15c05457b05b360b1dc5fa1e56a937493884e686f1413ab06e6e0840adafd690f7f0da7a6f0efa9a258a41e4223fed00387d2a4f545148c2b4f89700037921c0079b5ba04b30f7f033b172417f582a69358f947452a9fa396f15a66c68ef9df467340473227558284de695f1ed38d4d1971a9fbb7b665ec9efce1d017784ed2f289f9a3edd421c014708b05e5d3ba4e67ce15b71211411bc350352a82246eb14761887586b9ce40c6a51ef73f33263b8fdb37a8a9b12197f980b4ea3e7e6710d4dbc7b54103ae2e2cd5dfc2b495b4bee1b5768611a8e76de4a909a507983af61473229dcbabc5f152e84305210abe68d9bd9e0794ac52b8572ccf5cb112bd9ffdfab204aa8848d7ff168f550214f0ab351b568c3e4e5b645658771d1c1913204a62c5600d1487d7c4ccca0d4b06e13295c7281fe4262a71c68df2d4ca0cb3f844f911437c09a25944d55ad79e152c7ba7614c87818787e51bcb812577c125b78c2228f203fbcf394cfe0b262c4f3ce59ea60cb915e0bf6c1c180a51162bbd3ae31637b6c5bb13dc4784a4127cfeaee095df4cd4a75aa5a8f00277971fe989252ab7a8427a7e560eff408ecae6089b435caa1c1ea00311475c7056bd214a26340a79337da7df3b9065b8091e42fd814ff7ea30c0fa69f679ef75e835e160ab70a29f527bbf8d79db3ce9d94d48bd29933c389c410e5c9a411e3ccc38e499f88998428eb11bc4719bdd0650c86f2f009caa9d0cc9b0290702a77994027dd4e3ac01b3a247a3e4546d29e752a02a97ac9e73b2e3e1cdc037fb692121d47dc256b9e0e28aebb8aadb0c1eb72f4c8d2066cd5c63735522abd9102a3ce376624c02a38751b4c869cf595750b38e82ae518d9b2a21e3426031e119e2c501f6c59e41ea698919700a8b4c928d5d85eb8077d490ae4579c9949a2c53316c6a1d6aa6bd437f6308c6764bcb692f6989ff60a034f3fa0c9ad7b544f2e637163ec44fb29e9e595395f205976c88fc819f466cb82c1eb8625823724f07e375bbaa1e51bfe209712bc169bd68c7bc6acc136c8afbcda85e26be0feb387391cc7d3eeb70c1ae03342f2ffbad0f507079824169518835444de6cd96ac102b6b0ea14ea17a5e5db55ede8f1a71369fd2e41e7d600456f7361facaeab02f634793c5dd2e8509775756663e00ad275c3c0e0162a4541a41d66414446072a71980fff25e258a4610a1aaba9f251fa363a4179dfe1d6251336ce7a22b547ef02a3819993804ec249c26edb666dc18fa18032e66e0b85de61cb3cc6f32d5bf14d467586ff0257db038d664c05f2f60cb3814d543402a1fb0aa0ccc71a6907f0e0c7fce960b1259e8bcf4a766386276a8ea6d1d5ab94a46447f462f7ba70c9e5c4205ca3934847ab17db82850520858ff8edcf45d023f2d24f4b8840ead00aeddc6537177dc936fd97f092378b9c074728cf89cea0f73cd9dc060ef1f165b3247d542df94ac873682981442d2781ec63d6a584408e1951f571e2235ffa401b42055c8256025208a025d3f04ae01fbd96028dc78a4ca5006539ce53906dd570ad8f4e9882d46187311e600d4be3de4668924241bc77fecda5f57f8ba0eabf0cedee2728f3c8e13e81320c30f0276d84971be934dd622536018269b5705c30dd4f679ae5bacfd2f2c0c70c18a3f024797cc5488f3b14d07aa41ba16e538d9390b3cb3b2102c43cfa28b718123a834709b923dfee880e9029c99f3021a3dc448aa76daeeb59b244f15eab47e7818a90391d595e0251bfed2e4bf97d8e802e3e912a9f02c384b2d630e32c349495068e2c5bc6bc747976ceca605cf369b71dbf26f59eae2313cc04b8976eda0d26348ebf412857c2c8de8e4bbf7608673faed7d792af5fc18bc87fb2634304f80c85ef4e50a86a79325a28a2fd01a2ce751d04356aa195777dd51b8ec773c9da19199d738954a54842695b69f86842e7c69d23e1e7963c302cffb9d84651353cb93666bc8471e53cf3573a7ec3af10a4cdbf60c8d272c29a7f84a49e6b2c2d3a6de919f06915275152f2bb39dab34cd970f4763476f00d150ab07c7aa799d072060ff3c1e6b47d995e2a64f247395ffa7ad515663fbb085915f8abaa4c91201a48e26988223152e00c9be018bbfa5059a1376d864daac66313ca5a3752c888c985bad7ebd026cf45eee8e0ce966287a42233893da59f228255d20239bfe87821633053d69fb7022c27d02fcb93981bc7885f64736ebc7a1098afc3e3f362d04752f3172fba474762fd4c06b5513b9595712c0a826a44e027d2ffaf99a0ccc4eff355104d72988392a2837f7966aa2d8d2f9ba2e2b8abe1cc54a8c6b19f396a988e735d8ca2d0b5b0460a9d6fbf2ccd2fb60fb431a3a52d027e66475f44812f27fcd39e288e41f0fd1e54e3de73ee1476592fa4c1935de7ccff038d4582660ccf5bebc5e3ce871f47868d50c42e53a8e153c1ea0191c44972043aae8bc7bec0e65ce5f1aec8d112ec61720d8ea48035bf7d256874a8ed20158415cb2dc7f6b26e2cee4fb95ba2876c8c2fed5d1f79106bbdd49602818381eaa35f5731d55be152b27479ce4d99c5597a92f0dac34b05d4701357085da4ab4496f97e62f61caa341e7dadb8966189263d6c22e45eac3d17b8e24a86183938e2a53eec4450a63aaf4afa7715e7de247a020d6e84c0e4820d9a4415732c88e555cb98fa019357280647a5859dcf4edc4280c00b805ba472451e6d8c1c74aa94571d0517e51e40808fed35fcdcf40419b8d54a411aa179b69187f565d4dd7f5451a1adb472b0c9282973eaad9af80bf9ab69727861e221a8487b78e90c7132ef893e0b66b28684b894b573427ae734b322a5874da8bb7591caf2f71e4df107f63739591daf845447eadf487eb38a5fa99276f4d72720f2e9a667623a6d368746a53b3f214bc06061399b449e7e4777167d3c0eed1d9e9224a4f27c98c4132e211ece204016fb579fcb378f3d1f9874bc79d5f2c17e4b3fc1be39ef1c7f4a8a7cd5f601bf80205f5c3bac027846db96a461d7e403c1926e6ce5ddd774801aa33ce107c0f35ed91b5698c691b7cdcbcf4896c30897af6283d47e42386471ef28d2c74293688f39108b8fba9021b3eadcb91c086c0cc633cc7beba76bbf18208b9adefb3e4a8a401fdce2ed7f987c4af432d64f9f135c805059fe67973fc0fa1f99e4b304f032eac3d43fc3e5a3a87f18d6dbb38d97269e8ad73cf0c0fadfc5fe1fb6463a16cc4c3c3092fa09ce27ce81fbe1f6871431508638f4cad101f080211d69aaa2125424d7b1aafae9b77d448404471b0a0877963f84ab0067d8d947841920dce93672d8ccb0a0234247eddf1e45079a643b3a76f50f4c0392cad1b0faf566e6c24b9b02137f01ae803d02a590b787ffca26547043d1abd658764193903cc260046128c915c22d86c4a728a8d290662c386eb2d73f31832bd5ed99cbef804bdb960f4bdd1c2381d6f97671763d3dc05d1b76c11ea70ea15a5f1752371e4a359d4bc76368eecdd9c35de2ff3b77670288a26f64f36b4d92618d422c8cb3408c37f41a8a6a84b83dc394e55d1b6d8804ef93c3d9ca5cd43c8aa4b086dd9464607d72b4915000b60b665a90808ac085331993471be17be7302d9b8a68a14f6262658bd6d20c5ec07bd342c806e3fb8a20e166bda49585b532613b9d21b7cd349b32510f6b140ecd3718eed28645c82c80273cc54ee580615f1ecdcd0dd43ba0db1765718c50ea1933f942ef7d73c80ec4347dacfe8217c456e087f5dfa304a8ac039b8f05fbd373be5d0dc0ee604c9961ccb570686108485822e1ba4f2de5b77017c011304a1c5fe4334b9044f94f0a47fc14dd30bf77c8f2e037a3692fb53be6152a178350301af4c493c14828aacc2af535192530e3246eee52cbcafef6c26ec3f6d04c2de577ba1a6547a0afc2e941f8ad1890c4dc406cd7747f3f3450757c194a517f72cf2dc4f361c0528dc476d64a6e73b52c6c6ae763e48da724f7829efac12d57ae361c26b1acb0203e414a342bc42c44a5939483824980ffee97098d416661bc9a6a5625e69231bfe0dc710b0cd7f734b0d64172ad23366db07385289ababd33f806700294a39e2b00cb071e8cfa3fdeb9ef8e23b1bdeed00e39c55b560be712e935d56bfeb403f26e068af9b5e44f7bfbfec8fa6b4a6368846e59f4f984198aa14b5abc22ea321e195aa83c18afe9d2be695b049a5d0e2bc46994b2b8c29712fdf82a88a0102f606058b39e3b413970bcea94afffa6e94226b3c777c54f538be5a177c59eb92ad69bc9b247b015b24a76b3b97edcf5015796e76ea214a9305b6c43d5919321bb694e4f3fd2233cb5acce2aff700d935055ccada507680d81d6038137be4eca5e648601c746cc335c6383fad1caa1e17ec334c452a27dda29542196c1fe2a3c01d196121104929b8811a54926e3ef1761d4d732b8af5f587f825d78f22e14f6d084a62252cc6cb7e2855dbd6040905e17839f1584c1e7743e5355186fcd75758b4267d1587fd8b4a4606d736d7f85ab0479b2c939166a4ea76933c409b266803c43cbfaa01e946986606a3d40eefa144329d8605a7c4f4668a985e8483697fd44d0e012beb42a245eb302677b90fcf0f594efe94e015248aa06d66c3f1d40d9c520e482d9e637bc677980536acf9136096e047572d46a4ad851d3711e3ca20d2d7e0334f56fe8bf286d7b34b4b39c2692f1f19f16dc0685d3d1e19fc9b1cef3a2793bebbb5dc23b78f5769c9118f524d4bd43bbed3d32429464bc642ec1f3c3808fb03be5167f1701ecd4a8bc38bf9637a34ffbc9029ad49d344198c78130b074c51d13e1dcca481d0d0ec650d1eeba934c4ac2846bd5b460c673d8791f598cfabeed29191ab0ba247f7934c039dd91e33a7b1241b7248a72798070c541104083c47a761383d25938aabff15d903ae623a788d1c4cc7001b8e188ce55382aa9834ad05fbdc93b54881960127260f8d9b7ff9094e3a1b2c6d9fd9f47920657dc3f0f1cc06aaffc8c905d65ae363123984655ded204c5461400ef1480972d72df5006d4330954cde33cc4d31d9b78e815eac7106d461338dbdf4da29b341ecf30153538a9a47e9a838d05f6079dc28ad452fff763df1d7664046f9af1cc71f1a04ae4db76e604d261b2b822f2a48fc5c3dd354a3201b1fa718caae67d3e7ee9df45869b4098f12997d01709b8e963adf1bd634e2f1d73f48bbe8e6fcd19759d62189bf8a2e0d9a5ed0867bef30a2baf63a121dc5b464ac8e60240230126a57e7f8e4b08f0f3ad7cc2a1e3e335b4b45edcc3f7bd2ac7c9d34940f03fbb66ddeb87812fa6e172433b91d982f36fbab67835898efee4618bd9fc8faaa4e12dc0b605340453703f9497c34cd50d52e1a4c350b4ed8da2244f8788e31f8fac8cdcda6a90024d5e4e51c3f7f20c50c5b3730d0e40deceec3727c929e2547f8360168fa99b74ccd0b31507f81ac98aef437627238c3589c613bc0414ffefd4301029316b7fe649390751bfaeda7eaa5b9cbbe063e0bd0f9790bcf6d5d5b73485a75392f39fa588d835cb7c4e1a32c414086ba80ea222e2dd4cf2d00568dc1a54faec4a5b83c99c3d3e1b1805e1a3c2d0c46a76aa290f58c0184573a2b492a4b71377cb1b03ebbd928e1382047056ccc630c388704568dfe03455974936af4e90f41bb49348c0fc6f7d646c88decb869b9ac56e70793981c3a6b10a9b185cf2cb4efc12db09b880d4fdd2aa1450fea5505b08a6061b247952589433fc3c944534331ccfd460b1a38967ede63f72bfe159ce85728d958309da42cea3faa6795ee218d5c91c81126d32ab30b788548557a21eec45e7ae76a619481fd3e58bb444d2b59b5983734b64d578d9c2f24343bdb31f0d6555eaaeccccf0caef7130bf980e610661ff398a11417b8488e3190377fb5a98954356822e1c06eba0a88976fbd9df8b75d7eea17e89586679103056c223a572111b872471d75355c34a46f9ede3675d7649af6c8b8241580881286f218a428d9a78332c86487030541837a76aea1c6520b7e224254c0a9b0dc27860503d4069878c96b7ee1e308ce1340b17e2ca14f12d26269df47223d395ce95ec1554fdae37e58b59f0ac1745551f299243993308683b1cb0e85ffe42692225f33df648ea55a24b6ce80f587ad671d5c0171701ae97eb7312c68c3d92fca84d58c86556ae7277cb252b8693dbddf30a5aa0769424f28e0c5eb4b4ee6684d80f3247155aba5d3ccd667d7c78d65a92a429a6008a585c83d68ddc3f839b0efee64fb4659499e581dbf007d9b0e95c958b4f80ff7e447963f203b9cdab70677015999d12d9ceecb2430b686a4c59066a95779591595ca7ee86430bcf8bf7c78a4578c6b77884e03b174f04c0af9eb691ccd4988f8f3ad41228d8ad161c68b643512c72420cc988198e62587282a937969c34e80a11070d4d8dc90931524b01f006124d0b3434352627c446b01641b5361f0e5c55d26c104998b8eb608342935b36b0215c208c61624dcb7bb8f88ccbadf331a4cb1649ce927ce70e43a409b5ce36bd0b1384fb777a51b5b714e846e06a1841d3998721662e04f386802ce8b5b6cd8c033c9131f37cbf0c0148d39c21ae210358d502f768ce10db48ab9f4bfdd2ca9802a99a83f7d047a8e36433434f6e903772b46eb5cd75f3c41ad2cd520ad859ef3981056b0e7933348a4f3bd0a7ea55d24d37a4b5f8a367e23cd302fc6ce3d4f22fc838cadef7e2704320cb7a2741c9f379f3da9f955db6d3de6c2021b58b48e7ae23d6d64cf9125ae3c52063c583462b7cb9617cc9b8477e61fbfc731d68d0ec1b7dddfcad0c6a89f8fc78852e9ed7812bc1e33172bea25a0439e37b96b155d57fdccf86a3dd813fadf1e044682fb83260be0a92c6e020c3bd8ec0195004e202a5bccb4a24d38234fbb2a5ef2ce79374124a4c84210df0c875e44e3c1d88d95c42668e2f36db0f632c0ec4abee50cdf5440f66223ad8744b95283a7dae7b73b20eb158740de1f0e2a4a3050c48cd406e4ed847036b4ad12d28448ee327604a5821aef10837d2337e6b539486af1da8845a94fa93dc1858cd00ab931f1bebb326459d2cdea40c78b35facdce98b7c1001079b03310e5f4fb7874dbfb40c6f077836702061d0e525e3a7e910b88c848ae71e07d243bfda9a02b5daabd7687256c6774135d16705c489fdeb38d57f4fec5ac6aba23c8b8c0f9ec933a577c4f3eda66a8f25465b6f2416900fe75879f01d10dcb8bc12b5676ee714841c6e5499a63959a93da794794c790a405f117a0cead901531f95d404c195a60821c2bef01c98fe4d1a92c7402f13b1ca042760b31edfb194d503ee2b9e23701db3e3f2d21ef391e9fd7d557ac718dbd96a6dd4fcb3ccbed7376bae3e10f6295eec74a5624f256c321f7e440579d42661a55e0fd2973eb570f2e73ed3dbe4987508a1e9873432b130bed0ea907882c15b492a4ebbe7a11aed3136b171213514537d27113fc068318cc37c7e6b1dae531c542b45086283b101abaf9757e8799ad0fd665175352c7b2dd1a891e8ba1fe41eb51b452085ba453fd1d4241d10a689b4e93e7bcd4abee8a188d0ced15d13aa92dd98b369515d74e7cc18f2de6a4221afbc3b850ebb51d2a6e82c7d79492729c3d02736f1936632bb513c71a0b1fa33a855fa8f37442b918a6064313c88d37812c7a017a45525a40b4a8dad04ec691f87094b9bebd94257447152663b6312a6fb6f1c37d4ae612e7e3b9692132d1279a179d938ac71e29b4e4e765fc24d37437b35c684297caa58cb1f7d9903c135c34e8f6f4a683a27fa8963f51cd52ca602177b7ab2d53c856cc4c89345974cf5c31b1aa5a73119c5acf321cf672d4dc535d64d4ed930dd0ef82e0dd3c6730b09f53422440019c121643cd2ff620048bde19b192ebd5fb3b1319c10528a2db97abc2990332405712c113e2e054462f2d30257f8780b7f6b77234f8c96d26a82bdce01c4439120922a0cc4bd013a00513460500eba9236e533ba503b8f850eb9a8c0e85092817fe30d267e43b009e67dd939f26b927714a42aa23a7883f34300a2a74728c47f85020062d86100a24b25cd3a56c27b9e0d2dbc4f59e1688335320671f4a1d134494dcdda264422bb376dda010f0338032103426eee16838bbbc1f0e26e3ebcbbf9c0b85b0f8e2143c6de27d7de3c2eec10e6ec0f6a6dcf90110386b7dfc5c268736163214ba265419b0adaa68296012540fabbdeb9402e258f5faf750e7177a7faa57eea54ff4b4aada5544e199fff0e1052279deeee320698310e6fe89c47f49cee8ec2819a43e67477f714f43ccd40fbe47bcb47f882ca083b4af59b4c25134cf7dde91d81cb9572aaf8ac781d877380d8451a2c960d78a4690af0bdfe2666e35727041c20e240d85568044492f9a6016422ad5811971381ab4cc6ab380e55bc4a0b5e052b7940bc0867cc59ad0b26a5945886651996816c6af7c8eb51c5c060281ca85b8252f0f4e8f9817d0eccf52fa1f7e38b49393e85efb5e7883a88a7478f1ffd70170f76bde32e974f2b5dad44b556922d11bef096394daf4d2ee5a4a59b4d69257bad7fca51f141edb158311ccc090301aeac8e5626871222f0000ce28bd0e8ba3457e6c25c5d0e78a36373c1bfb22dab21082c1800b8c2501f2693033ef9e29763eb8159e05a47728e38236a54c926c13b3049457418b3162949905b7671898139f346a662318717ee3accc126ce74f22c66c1150b08bba90566c5357202e2214665714b496a77c1187d2c16eb8bae5f0100aaa21e3222e508a34ffba40c0bde44bde960695fe9ba7c1a0b97d44db96898ad19a5a59b9d98260b42526ecfd361b1e47c68133bfb39376b15cd69fcf9494ae93fa5ff5252fa534a4a678437ffd75fca3967b516bb16c3b010b0d26b4dbb71de48e5bc917eb2542add38e79b283e5d7c3a9d280de1a709021910a5ef39704281593ae5676e4bf766a51bdf07164d8bf046caa83dc36c35c1b7a5a9b5ecfabbd63cc217b22480f999206127ef2d9970afffcb78cc208e9c262d6bf92c8e450be1573a2795f521b41062762535b6aff2ec424d06adda8b65da2d59fb536a31e1d3966576aaa6dba9aaaa7e5c1240d5af4d251214f04d9b51d7d402512d25bcc435e79cf5e79cf377e4686e2bbd10e6e47ca6dd0ec20aa953a85d4a2985536b81f0664ed903bacb3993f090464077fcc45d3aaa34028632f24629b10bbbe650b17be23dfe87c4bb63d610425ad582b8f374a7315723e2bc8d872e75f42378843178a482aec5c39f06e674673f0c6f525788e8665a50eb197b318a4b71d002fa7fc2429f92523a2391546b05a7715a2f2dd46db103efa4f402a456d182f0218bc562592ab3c34d564c8128269978e0af502d1a425888d32f7405070ebf414f88ab1c5aea87f2e5f360c99bfdeb83c21af439b5b04de919eb028c3dc5693ab885c2333ca8f8ac704c2d785732a66caa646a92fa210bc99f9f9f189d682da8edd5186b416daff78039157a2bc338f99446a7f17962945c6dc199163cf00eea7d2e6d416d318a4bd5259268d55363d82cfa7eea4f11fd792b3f23d5e4a94ca13586d65de779ac1388b60d60f75a509b8a7ef5a205b596b968b1b0c779bfba69493932daa2e0bb41397dd08248d0833729277ee5410b6a2da33ad88ab0ebed89cbcb85bf9269792f5c0cc61ca75944dcaf740bea6c1b8259b1c10a0d5a509f84b0b8f0572d5a50a8850697450b6aea04fe0aa6b535c1ae7f80bf72693179f9d0030f9b06b0eb6d079a9616ebf57b36b62535b7253d08f8abdb824a6c2b890e4131ee0624e36e48f60c390307fe0aa7155bd1f384c05fe1b4f6ff0ae714018d535605d41c5c514d656cb4cd17b58d8d9c13cace1dc2b21482fca7bbc298348543a584128ea0d11775d423c01c78e3b4434656943ebd5f951023152ab42442e92b8109a4121dbe9cfff8a224b452a7c4172b1cb9b1b3da1f4218527bab521d93d8db16112bfdb4786bccfce46767d77596561a033f5b353be5476b6dad0eb5967a65efbde31234aa16489c86c628c3b2ec6344da7bfb6c1f3697d2d9a6a16d62b2b3d0de7befedb3b7cff6210bf964a1bd774b113e5a9a9864a1bdbdbd37855f877dac117f6b4e1979f0d93b0bed22945cf161fbec0fb0a0342a3fc1af858e3c02dc881269bcf1dee3e738ef3b81084f9da483cb483df1ed0876bde5807d4fe8c150a954aa9307ad188174744b251e2447f2bccf48ec4c431b0e745753946a3786697bc3c076c366642b825d6f369836cea9a4996dbb0076bdd580da2a546c179a8d88cb7ed986e00d350703b3fdb0d8a9219b0bbb8630e7e5db846c4136209b05b0ebad023377a3a183bb51c083bbcdf0c1dd7e745bb5c9a0da34f8a509a6a9b9db046cf6cd7f52ca1265a566a078ef710f8d4a767389bd79e8bdf7de1c0f9dbd4d4df6de7b6f081f3e34e1bd378fae9350ba7cffffa8d3e9743a4d749e05d2d6aa594c9bb14520474b18d78f5352873106315299b2547e7d392746abed40f094ba37c944f2105a9d52af16cb342de338adbbce3342947fecc6b06c6baa18adb32b0bc94132906c81d3e6c49651b4565a2d86d94a97e40a60d7990697174a2915e285a3b5d26a6da5441c0ca5ee43302b287517b28205a5ee423205388cf30cf94796214f20c79061c83eb24feec912a0d935b4565a2d86d94a6df20b2ef60b985dc811c810c80fc82dec19940a998143a9101c4add656471c49cf325a5d09473e22824f4f9a2f445ebcb3660fef74a68562d9665daa94318b3622eebfafa4734aa6ebb0bbd2a7d514aab8b524a299d74be94734af95389bdf7de41ff441af4bd5d2e17678b88523adb24b44dafbdf7dedb676f9f5db4f76ed1235f43388410bae9b577a494521fd4b36a5d167f2b429968438b9e57d193cdda3f1de6d0222279030a7eec73b9a0b88ed4ea1e941d9059f05add629976af9661b60a651e745713946a3786695be615f28eac42d69179b0546babc5b20cb335690632a8b5d627aab5d56298ad31a8d57d8a5add7f6a75ff8141adae17b8408a285ac0822c50ace089adba42ac247f617107e244135754c044adee3fb5baffb87badee3f33b220728f52470d8a931f1ff0ff553ec771f752090286c59c4d0d0d4ff429876a1228d8a8c1711cc781a0d3e999ce5e8ce25243860c59a143c723d11e12684cfe4acc81230150f2f60f1fc6d7ff4749c4fdfd6194299bb2291f175fec92563ba47271f620a58c28893a92b152edf127ad6f97f88c27295042ce181e4ba3a07a3a8ad6dc094c5002128cc084b54ed2f8b47560450428159dd64bb40a974e6bddb9bce8176e03180d42c0610c820f2481c4114678a00822aa74aa4e6bad597eadedc04b388410484100114346a7b54bcbd89dd62ebdadb59d8649188b08d8b75b3f93b249d5d4a066f42549a839258ecda494d182ba86e6b446757175e306bc8214a36d01639665091055f103f18739ffa3224c0e155fca4fa251781d8c56ac4ea3775d8761b0a9a1a1f40330763b9ecd4c1767708b079a8310caa8a2b1b932e2cee624f00ec63b508acf351733fa55a8f90215550e2ff45ee5ac57d18831a6a65f110da0a0a6e38033920929bf4e4969cf005e58c10f113604e9a961c914342821229214c3103d51825c5682286284039126a41220667062c90a4056f8d971c40413240e65f16b7b35acd6d65a5b83d1642acd7ad6c3af97a16e26c5e1ab2d6b5b8bafe56c8abb4260d7f85aedd94d0675e2c0a2ba196df1cba22ccae26b2dbed67918d003bf6c8ab329ceb31dbef8e2fb9a7e451e9b78c83a9d6a16c745427b19c2319a9c6097fe9ac2e8dac7581534f9ffdaa30dc18e7d19d2f0e647100e1aca5170d410056d460b6f601529a5943213815d4be952a696c0ae5faabed7f15ffe4329a59405f85e26480e42c6e7528088f1b9141c2573a04bc1f8bccf8f607cbcf84c462e3e53167cf3f90dd86d6c0d4693a9b4ee73a32746ac0f3e97f232946ac283969b7aa20353163c8339385924d8f50c920c48ca7c3ec52289f95c6bf9c2c0a03fa7b2810a0d5c5a7caeb5979bfa3c0b660173392059905df16541302c52d79405bfb470f95c8a8acfb5b6c13565c1a80fc68735f2f2e74ef2146e9339713073750fd8731cde18993e9732835bbed2e7536c775f86a4f6b9d654d79405679fc53ed75acdb5b9d7d69b6b91e40dc0bcf0d1cfb5e6e26629d8756a7e2623ecf2f323ec9a03928db0eb871163f8878db0eb6bca82e1364920499229a378f3290d92ee45341eb5817af505cbf3bcea5917dbab487828ec61cccb6e309b699de62457a45b0079aacf56cdf72d79557cb5bd6b694a9e951dacf7c269a4a6782ebe9777e3d9e86cd5f7321d12d55753c31b81068da88a3a0ad18042341e12c541d3b2108e5a8b317efcfff71de932df335343d4a038c963ca297980412de66c6a687ea83409146cd4e0388ee340d0e934d04c672f4671a9154544a921e6cbe572f108e5ed15047a0cfc8a5e3b4439d3751d9512a6904043a7867c0571082174ff970b175fec83568bb92c17499833c622454f8a88a4cb05c50514949de42642f907289a9399497e651f720f99072c4959037987276230c5cf4f5e52ab2b2bc949b20e39280365243903f948ce21e390f4efaf8c017720f9866c2417c936e40bfcfcd45a7f3666e25fce5a4998e99062529462a8044e5d97ae0620000403180000000c0685033994635918e665031400153a8c30646a3e14892391501c875114454114c4300c823008003114a390638c497802758a43b48dd94e5378778aca42820ca2ea0fba367ad68f69e4f86dd3ce84dcdb49ee8f071994eb2aae1f8dc99f4aff66fb79e8fc467d4d35eb5950a074877e6e25ddbf80d46ef53797feeac519e945be5dd790ae5a17b7cb9a4a9c9654b97b6ca16b6c5ee0a1ab2f516f13a4e1c8923c34256c85c801156e6a500a5618765b33a070ff78fcbd09d6af9bd5618d4fb04851ada8eb1867242722690ff74091835d266b6c84b046a8849d0f82a6f5af776ec2c9807443540cfb93b9e4baffe460e10324603871b4c8800528907b099bc506c08e676d32907775334244b778498b0fab56b8e9f5b5dda1bd91ffe58d874d8c0b2a8b793ab6d852fb2c7d9b69affcd033e3bd9bef63c87b944e42f9ebb7a3d4eed6b7e3d0f77126fee465748a08562a92394f6043b34b23dcb9146b5be687a2eea16c2708c0c0c66ca23e2bc471e9d0d0ebdd6e35ae15f7faf488cb5ebc234de1cb8da620131140e9fcdd182576b61e73bc2f503efafccf40e8cff4730bd1195d2f4a42f3798be613f607a783320e2d96e23635d081cdf66ec98cf108c7e01fc2e7415240611ea0da62e3894ff8252d53310252094cc662e4df9d17594a412478899689224a01c0fb9cd923477f5c8096943673015ef623f3cf92ab3136460d17c4b339c1c95517c196129d8bf503ae42d0d5bf1938d90d2c7caff541d418451fe03a83a86a1591d0ad26a9a15a8cea242431afb4b07b5d1005d3690be68834a55c813ca2206f210831a4dafd27262bc558884bc2e4e5b21ece2bf272bdbab64b13aa0856dfcc1b5257219ba97212190d744e64e43582b23a231e730413b71138d99e49c579ba44632091bad3a44769034046148a10e01ff12130742f6b666cdc50f73feadd344e2c8d43ed04aa069b6c0e177db7f1822bc769b51c234c2f463faf1a33f48fb3bd83cc4df4b123e479bb0847f324b7ed89d56f8928bdd1108e8d435f6445678440af5b796a541267edcc802d30de45c71a24d6c65610f3718a1c05c1c8ada3104055595c82c6e20a2008cfdb107503ca417c07685c688cb3d18f78a202be80c88c36a035b3928feac0c9246e732c65e6d1b27236b1e0d16498d8f184473ef181986dba834043e86871f1e822b8b7916e84eb8cf5151eced2b0a961bfd182ac48cde330581d73a34982852a21d156b4877d53043f76a51b09ed7ee3f9b9920c0421d37cf06139c5a6ba2611fbb92bb35bf16a394dcc7433c8276dd6c0f1116f340f695e222d682da35f1327d65bc042f63a2ec051a512a3c50452308cd5724c7cbc5e860fe467ebe373a0d0511bed67f43f74faf1e4ab929574e8b7741fde34637df73ba5263a251118e579b983f5ce9e20a8c62799bf3d85a0ba6e3ca56e2aff99ac2a36df8ddc7c95a106a2e1958c04a96480a9b3e1b5bac25a3c3239c823a1c41b89333d12e5614baa8eb4c98594aaa98e4be20b6e64a7a636a05e8ea434caa58ff6b49f9ada865b01b7b2c76b90880aff1d57fa0e8c3fde2b88446e2d2c405b81007f2741daeccbe72291de8fc4d9768f867e4676de6dbc60222cc906dd8d839db3db50b1c09efa2480bbb4a9660853451e7c34d966b64ac293bdf406e94d7eb7649ad107d0e2515ba75d104cae39bdfaebb80fee582ff86a5b6f9120c906f83e23a896e36743a61a04c08e9015e467e8d7a53161d856d7512464080f7e0213851dd02b6a7b7955e3cb9fc31d7aa415256cbc7e8732cb00992109d45998f6a8cf77ee537fdb040ab1eea08b54f2f29e13eb73a1eaecae0f211d3053870d90c074e7ea5ae3b90703c23f836d0e7b07ab8271229e03ec4592d06d5fb94d3720bbd88a7c23c3d0fdf53f3542782ff63f37e2369b36d0f49c9f2037155303384fd8b3ea2860159d393601a4722b6639d83700763a6af5f338aa9fbadefa78b113bb1fc9dac65d9dede309d026271855409176e8fa4fccf13358cb2aaf8f24c37fd1d4ee839176ce1c00b866040fbda5765d6d9596b868d099d340a2375fb1e7e16b431b1bb6d88dc26d54541108fa84f86356bf37a76663442a0e00c7edf734b18474376e30441f4be2ad7750c4c7bb1395ed7f455692ad1085b300d2083e9020fe1b7cecd558fd7ab162bb1968b36c14b4de6784fd882b80bf3ce3b0930ae3d883893291dcdb7c332d5d02c1f96fb1c129a373044408eb7a0f852f3014e734ad0f2a4e888c69441118c68698b3f0e7b5013b6a0f706b7d3b755a7e24a3ec4ac7cede5874ef0986227bfecc29302c8c182c34d3c5a92ac0509e4388f1128942339718ab984a5b0d29249af712a1a9ac9db771565743f61530e17935443c7b5a23b146c5903fc2cbd9da58bd56702bb72c2030eca71f23fc276b0fdd8ebe2dc28d95026bb422277b85c57754541ad71c963781cdfd0dd3546fec889b6d325e7863ac977389e96346ad1d4e1a33900d029aad3bf23ce721a9a92d744ba960dc3aad3d2b81456933f17e37ab67bf3837b39538f32f2eb81e18ab7f7a9565b35388c52787e640610e6b78fc1713cad853acc6b31551ae61584c069310a7b597537549e63aed6af7951b8188cdc690bfd76ffb8e31fd3c76be4ac6d0cf3c6c05644130cecffa371646b20be091c8e21effda467f12d82e80cb800a5704665f32233f8e83d9c69432e7764e30969804d223e431cc7ee739dce5bb8f1a8164f1d6018b766229336ad3c0d6fba227d73b989f1a98e022d732e145774f85a8fa22776364b2297c157b7f20174f77a2948c907bf5c2bb28a05414402e848d49efbb9343aaf7e01b8062f903f36e1072bf7965177df78d5529bc2e19f88e950db8eaba01f4ef2bf052f90ec3ca4c43f54110fa7f66e4e0ad47502e18ea46426ba9eff89d1346e460381177fd0e0a17dff6ddafd0bfd7ef260f87d2a8dfcb1b4bb0a782713422633f21bc796b56c7ec7b1b599975e3b1e9b1f60368ecbf45f0d96505b4f27ff7ef34f1148f905e4d2542dfcd95ed7c256effb3bbd704bc11a3fb2d0936bba990ce7997d1bc4670ed4ae9be452e661aef5f2678a7d0ea0f2541f649060ad98478e5fd4716ec3f390d06efadeb6b2176bbdddce59da22dc2b78aed64eefe9474573ce2682f38749dd79e9aab8b7d79839bde1181f359d77516849ec01a9c9cf3056f1dbc35ff82565154f98ca9cd8566e71b302bbf88f02a3d3f5eec49e1edd20199abe137eb9b1b480fbfee2d54651b5e9b9a0fc3fb8636cef04bfb8f798a373cb6dd0fb0881d88623a8b03f2bc65423cc984d0f0bfc3a1a9fff92eb4b08e783a1753f7cc4cf18715367ce1653113af773c86ff86ebfee34657d3188b07891cd6e04a0391163a411383b85b90c0dbdae7c2ee866b12712644039fb228eb6a408171c44cd2c28c850aa2df42d9b02847e4de7a48f45844c4a9dad1c3af10bf66a0d4d132182bc524b012b3c0a90cf0a27822d17f8ee622240935097e83b86eccc6846b5d7020412178de28171321b2fbecb636ba61acd360c390501e3c36b5fcdd32bf6512fdb39100e042bdc1737d9b127e107489c7874f0d627f0e411a5486ed8822dc96413c78a62c0ffa39e895ad161ffee0a5bb26c4845b487d01f92608a31fe8c14e59b38108ef7d479ff77bad7bd06360b25e8921c068784fd098d897de9a0085c7e58f629426227c0c5206debabae78bee724f4365bc2708fd0f2fe677a2b8876789dee8c9530138860a06c070c10102d4325c8000dfdb4e04fdd8037283cf67eb81850750074501522dd561ae364ab6ed40e67945f29c61a0563dc0db67a7dcf25729f82ca50639a590f4381cda01420922b1ab2505a0bf31613feac0493f3f87e27de0030e1098e57bca03900aefd06a6d396e5206b264b26f23767d2b2dcc4605afc6f347d40426268cc472cbbaad96b7f01ed3f941400e996c173486334c46d79a7b680ecd68a9f0b9611d9b85fff86b231d20a07f8b66608bbf63b3662b672b233790af42c4e1c3c87d35fecc1ef66c488b9c037803d5f374392169a29dae896cf6255ccbbe90c04826cfbd5ff5f65ce22ec650b563ea6569d3cc78f9b2b2976f2de56c9dc70378e20523441ab89f34a0acfbc9046f209149fcb4e05f64e5ae03bd5a61765ea66bde152c6c20d60068d013fdc51cf48e7dc8928bd25068b5cbcd098b50fdacaf3000762aee9a5982da08f7069528bba0772998f7c39a9420f04517c4856fc9067aaf17c0c334416a92d271cee1fbc586d2e130b81c2805adab0b7a408c38288c6c1155dab278d5bf3567933a06a177623901e130d905435a93b5bf5068f0cad6cc1ba8ea27c8d3039b5b7b9a1a7caf6dcf61e973f2690a9b4afca1321408309788f49f42dd23cf9b6ddc19f66a481e5d3a20f5a9d4b404651ba302845b1e69c23c96327237a7aad92ac0419655aa09f919495370e2282d15eba2820dd275b5c19cc5b19c3d81d95e57899465ba84a2878411864b047a083861b86558858413865acd864f3f375a2026497e6cc7b440d9448e10820a18ab2076a406c94d7cbd9c308ce523a871c1124bcb72d412e8adac494cd23403fbb66049c365e8bc63016abaf7f5d2019a8bfb5b92028f3e9272361cec335910106d5845c223ed839609e052a9049cb3878bc17bebda95b7e11f693d11c2f02e010a1741eac4f4ceeeaddd11ffcc41c21ee2d82056107557940023cb37a7412d816f12c5ff2d32349a4d4b39b805961246dfb4d4d8b87ced5b6dcbbd8174a213718fb11722c818123b07e81a65e15b87ffbca13466150872e2f70e98395f957f75f88ad9e59cf956fa76837012f76ad11b6071525401295fdf0875eb6eb3585117e215ae15f0b55161b624fd217453b8d6040bb94ba91b13d073070ffbedbfaafec569d2dcb1b9d96d12f844b6b1c3da6e9428a0172fb13ef15863b933c963a3f102507bb34e0b2a85b58860bb16fd3b4c944cf8563e2714e6b292a10cd9822131d20a9e2cfc4e4d7e43e591b32c914c429208c95343d2e37f7bc3104e80a4f5fb70a9e666f0f3ac0eb2eb7d74123a43c636814629e51fd703ec65b2f300cc7b6181bec799a227957c286bfa4653f747842c5bfb09f963372bd4bfb462026dad48076bdbac2491e8aef5fe97f0576b2043084e7be49885c2f1d5b5f43993a8519ec87d0350ea05d0d927a8c1261386084ea24e73e57291e5e720a585d23cf656767f597c448f294e70e43b01defe179d8bcccb34411486c6942b4584173a448cd03296b2a43cf2ebf2396ac58491a8562074105f960dced8ddb33d27b27607b17a07a79a4b1398ab8c296bc2b4144904e1f1ad4e71261b2bbb7cb6bbd615d5a1b71d07d6f16753ecd09ef38935370571d000e3eb482b7334843cf562cc9d8c86350920dc2db91a0d563e746766e213c6fdbc75a4087488d47377d7ba069e0a60c9387b5a1ebfe0bf4b8c2c48d216f3b4357beb22166e9e20a2d862ed4f216c9c5500778372eeee6b30746c729fbb18c0bd878553c2ffd8aa9e6496bb844e129f025fc0bbc10381e3e152085eb185d4f758aca9aa972933d5703fcef8c7c762b8cf31f85d930e5ef81bffc2bd58fa8800003ba5ca6b1f8f45eafabdd1f30cd60a0ea65f90820e07128f0c5df242ef8cccd77ff738356c7324721884daa0ce662943e870a3cf0f2d1268ff70afa3b98a1de19c57144b437f4e26591fdac6097a51147a962c58b06429b293870b3e0b42e1151c926cb28c794eb1dec25c59d751d21209ec2895cc4e98e4006b388621db14ce12a695495d8e768f00494c4037603c38702af1bc42011be3c45060a190f30a0d4cd88e5828208ec62df2702b37c97815d836fc74c3c808c4a9e7769fbf52e4fb99264fe04bc793ac644da67b579f122fee1e950fbf79b4f76a1ddabe4ece4299e44796874b5bcccb828a556d8a60a4550b02e218703fdc6884d2a7f5d1fc0f67d9b5647756ba3367f3ae4daf105003a187c90d49e40c85e445b711c0ab799f79729f2fb932362224644be25dd2b6780bd399638fd9678bd86028c000a6c56686ce9c9e2ac069c03346f398d18c1a68c292006e875ce658a1379df972f4c4d3cd6a1a83a65f92369757b6f0d0d948607f5b4f14028a8a88e5637549c6bf5db8f8b6bfc042015c83c53909ae0f51f0efdb6187afe845da9cdb2f5da4b7aceefd71b5582c88f53a4d4218b13337d676a7f9eb493204c03bd0562d2b0abce4808aaccf050ecbddea332d93d5952d2b72d4fa8e06c1696f464b62857d373c1814651385d9e92de4d68e138b5627a8cc6af286ac16754d5b220cca1b9a34db2f4573fd2d282c7033b89e50df2924ab3b05f57eab3251f25446dfd9d12a5be95ac9461f7a4e9f9710dd6545757d2c618e117e97a538ad39e95cdb780a9dc11f3aaee5a2d5eefc770c05da6e151b2ba36edcb6c7759ff73b24b760e1dad3ce030534ab92d1cf35d23d2be5b0646ac2ac8f9c47d69973a186e641b65dcfb032f8ca7db5d5a92d02d660eb139397a8b2c95a421f073cd69410888b7081ad76eefe4c4d79c555caa9869a3e83ee7518d80dd92579c670d8d6f0fa197b85e87607a86a054907c6791ca88f7143670cdfec15514fd1f9a37e31be2e7cb5977bec9be9bd032868f5c2b23b81178e34a724abba7c56600b872d23748216b538a43e4590c1122f8a53053b74059c097dbeff6caade54f212b9cde9c41c9d51bd58b2946e42cc834bf24297cf857732d612cbac258087dbdc04aa88df7cbd7f5818e875e25c4013e1d81d16f77073e30c5dd5d085bc714785af80a753240b77b4d42647afe9d357b110d8cde6434b89e3bf3c811fa804bc4e0753b5f6c8da3b5b2b23043a7199f9c932c3b0cb88d7050b8065948486e65dcf35d8a6f3eb3bec6db45962d3fdcb9fb45970aa7ab68c40e8f8539debef7a03210e8428b8401d69b0758d67f5f5b99ee02667318fe808fc62a1e0fd94fbff0f7f23ccb359cc62aafeced29ef76a04837f96913ec5a3a05686b42b2b4d01d4e8037021bb86a12d68881463c4d37dec4d81bccfd828d89eee3b1ec15756243629a9c500c17b0b1f0adef836fbf92708a0cf669df7027fda7030d3f536f740233101db8148d30a9e8a6e4db3905306d8de8bf2f2aa0a89ed17af38d14f56a33f8e426e0f49618c53e24d0596c3e4ab0423a007f667971a7b93262cb472e9bbd4907224b95a4c64908e083630bfdf282d2b52781b47487b7c41f584332536d04c0ba17eb64727fde9a72cc0384698387680133d9b0ca8b4b0bc2bba48c7eebaf1de7e7ecd820fccc169d7807f4fbfd715b0b113e97c9eb107ae27b74a5e61f7c29fa592625d5c1818ae07d28f0ded1a342baafeaec242595bcd9074b64e3e64e3f4174b9dadaba4f9ae9e2f4b39c091b1f4e157e7dea2c6b6133dd3a06a47254af7f04bc489cb8f28ed6105f97cd591d5c3c568f90f07f5d99201f60adc7abe33f87dedfa6436389557b02ef41d8ac53334308a0d8b079949b9041e541baba0021103626e273417b9375c7c1cb27b621fbabe8019ae2ea947ecbb30bb4a1a1d7c452c08618c303a7cf7682a5e42624a2856fa7de27b8b9aa68474d262b731ee41c7d49a10a259880ed884359486d7e0058940e85ecaf2c46bc0ead66c8dc4b64f374f2b26524ca4b58172fb6dd31d8d14aaf17fa84b23dd3d5dd070e1c7983687dd9196ca175f482fb5850459caf666b19600137bd3c28a8aa1440be1dac515192df93889a66b9da75b07ca9850310494c5bed1779f1f7dd3c70b6f71dd3d40a50fa9e332dba05a0aa27cff975a584c83b49e4ff2bbe6e6ea7d5632e0bca6947f0912a27700dbba80e571cd87adacebafa1e57abd548fd7651d1beec4f19486f2fc83b3c78f4222aa9e7d2a5c146cae8c42ef829a355f8f9745e6279e2832438c19ee9821b6a65f4a405782fe977f4db22e80f540a83ed76faccd585edc7a2376bca38e32a9335952576ac35770e1e63684df61e10fcefc2384f8f67555f6a14b0792106f14846a1b39eb1a55cb3d865ce6baed952cadad8152c3da417e0768449346ac7e573c90c59cced6a7099a912af86ff52c117780c83f4378ed1b31511561a3169edbf674e6e68065020fc0ad3b82f3fe60a89f292df7a94b0d355401d1f33ac884318d7305a183ac6dc030bbde98f4453b60150f4fbd9e9c0276a0054ebc51e72c253df8d16e624d2314329c180f49088e1d0cdcdb8a19ec03425c1911f6b58cbbb79b506da021ffed26c2a133e88dbba9b1c7df0c11eca12a093e55c5fc29224839ab9391c8cb8777b3bcc74b171e71831f4830f754de73453f418ed5d0bcc662c2df9be0c1a6b5728f87ceead855c6bd19c67df0ff43a711f128e2b03232e79463f24331d142c75b2eee38398dc2fb276c8db56a7a6b954b74a5da72cb655c699d7f875d70f567abc06be61885bbab464bb927a1d659b96f4a14dcdd8e396a83832d296e8c0a2cabdb4a63e32ae6908b32a6dabe72cca01bcd5729eef9d44787cef84479bb34c473c7f7ce563ab94c5b4054acc3066eefb4187fb206cdab9d3fdc030483887eff176951cb6c4c618f91d47f66a3d1b46214534ef7a61cf0c25b982cb742c649ea36e972de884ab3d8396477598e0b8fa0128f5fc8b817289f2f4079d1e7bef1c28ad5889638325dad86485b230e8ea777d4f5e78754a12ac39c3a86662897156046e2ba76eb82635fd415f7a64c993202d1ac433eb16c0675574cc39a07c931ecd5f2485230401ef9ac6cab44dc9b6519cf01b27663ce51b0c1b05eb05a0b1878509c838ba97d05d93e078583a2dac44b436da0e836c87856ffe69c9009827633fd7be33c8faae83c4a9b10257622f78ca4cdce751366a2881d25ef1dee6f3c389edad6805e768ee282d2b7235d432279013fa6b8aa536881da59bdcafb84b58f7547dce4616f332dac389bf389e1d5d908d1e9aef02eda3a66689f9c4e981d8259158bd856837ac5d8f5a8ee2541718d4c880c1e59365661dc7855935032cf1edafdb5cecf7657c355ee63a02cfe1d920c768e28e664924ab6b508d486dfe4d1fb98e5c506bc31d5a7ae6de0c31b7022da11e496db6e583d348cfb7ffa2e0752a356f850ec34a69615af3c0384bdde0dbe0f46f4ac02e8a8b4527591e4053917fa027bc3935c1f24ce30189c1144c5d28449cb008addc53f887ced0795021c6868fdbf43ff8fa1c9bd6510f4b03396ec265fd07ab35f0abc7a79e4dac4f34f2b470047ab7f1e3204ac1cbedd1a89f0b099bb66276da468fb2291d94e062e802a3abc0a81ddf0f4d09e6617fe741aa00d9afc2bb6d19c8d0fc47075c27e520ab70e10a4b0508f0fff706de20622bddef6ee23e2360206f31af657d056fc5a977e17c94513c7288c3217af8a002eba571751ea20f6547076fbf6e8677355d9eb8903f8fdd164a585a1007c43fafa5d08a6d501c27353c821c584125df70fd80e979940761215f2ebd106bc67ce27626213258e50e4a71a550318e5eb0d78276e83c74db070c403b1960eb2c7273deddc2663e83272be51498201119b4ce16fa16ac3086b5dc592ab91aee6a2322a84a0c418136699b9dd5ef71bef32da475443c490091c409a941dbca0239ba47c5e472b0371a64652899e8b8d885cbad8ff32eb15af2ee3f2a84fdec64c8c148579b17fa67708338343316c42602f25a1318c00126197b15d14a09d76e95cd2d960d7c44edc414c713db3682eed0158b6de5f8856429f10d09818910ae531dce753283a9b59140d1af865a15b32038998426d95bb15b1a088bbf9ad859455ba89c5be31a06565dff388cb5d234aa91faa0661ee3511d4eaeeee920809abee7b5b9dfb065535d3dc3db341ae52dcae99e114ef9ff62b15f11fffcae6b30c8da2985fe3935efe8eb43c473e7d660b04e8b05e38cb30e274dd656b7221af5402c809fc2654fff9ca713cb1b1210305dc7dd6b96dab3063da2a5178ec869691084b6bc89fff26de38f7f283baf7f39e4e692296de6951793a2fdfd241a162a2b4ef6c5f598344d475818b1525bfa1ea08c1ebfbe5e362a4c5ef38045787844f2e7390acc07ec32612a9a46849960f69c5f18964ab069af630f3d3687c14f341789fe5186a9609a8ec2d7d75faf732c098ec20e3829793e3834bb834954fcac026f0357baa97d0d738920053898a80a8aced9e64fd0c4db817f69c217760a480b154f8ae963a1cf3c86d09fb8332af3a15361a0f40fca69ab404e8336034780d0bca179fd61c11671539dfa110627bb43dc320acdb014b8dfada5361dea98408926114bd1bf05b1fdb53a2a8b1f3b5b68f504bc957c0626e52fdbb65f6cbb286a0911498d9eb337b266b2dfd9582f8b9e0d78cd0bd487d7e3ef956ef2d66f23609c6fe97e303325bb1604e8ad2cd68c2d939e18ae7e40ba0938ccc95fc7ef4f2f6a21f570cad90601ba446b92f11c5e3ff87531fa6df30faf910b157544c24f660b463602ee1dbffa4ab2f90fad2de583b11d9869c55ce0d29435ddc0b964390d23a24649252d60afa91711c36f2d237a7cb675492b9d7310bcf971062896172f8f0099f85b85d5319c45e94de9c8f109dcf5fe53662009b20c972b3e34922c0d69e548b04948888a9736fcfda8b727dd960b16d241f6ef3c0d5866a3211d872d161e9c9eee2666ecdf35d7eb706a7fbcec1e436db0910256a50b727fd197cf1af019ba1df13c51892cc53a61c543cacedfb7ab29ec95e69b855b204804e8b54cfc731acd80e42e1e275f1d419658b2f6e642e251376cb4e51424d2cf191fdf8430cabf4907a648846e8440dcb5db09f676110488bada841cde9972393abba1f3219325f8fe0f35fab76a2a98e26d75ed2392e47067cc6fcbeaf1ad46b82932b3082f121d657b3b4584bfed8c4051a0eb81a71386f0de386d55e132eaa41bd2b958a550a97b6d5e3a8791bc0fd44ec14b1c1584c1cc54d0aa41eecd3b531a84d20961ca1a273a6e0555e501f2dc30f18b2bba7a8e6a4907a05f5c46061329dc85e3c52720b2a6f4254fa72e87bc93b7f59a883d7857f9fa829165d33684c1adc11a83d004a44c71a2d5572c105dfe1519f008a6e0250d459e9ef931c46e38f503d1c83a2e5a5f9699fb1d074efeea63f0c3bd1632ddb124199a4466612751ad5a4ecf36ea717c04bf65ec7ca1227f7638cf1940f41213aec4409f66022e68cbdcfb25bf796432488185d97f12803d1a1cd5d654139f4188ac798135cedbbb79ce85f4fb37eebb1e838b14c767677de9cc3c015b2b4d0fb26221e60aaee38f1302bef2400dc8fd2d35d50ac51eca9ea7f6aad529c3e023daa8f9500a4cf6ba3e47003544a8d4f1a643a0b67a446a1357d2ed2750b6532f5f423d4034e99602bca9208e5a4f2306fab324e13a148245d6b7171e0e39281631cc7bab39543898a00c686ea56272bc2c2693ce5a637311aeb985dcc1b28c956fc07d0eda89c05750156b670dae2ee418837fea673deffbd10699c2227493307c88208aac0d34ab728d29dd9c269a28d41608eaaa7f436840a863bb6cd6104f9a9deb262f2426d83c15947c5a63c70fd0cd0c2e943bd6b4b081bf3988cb8d61ccebeb82c509de8169498c921facb7ab791d2b8a6e7012c9c264ff5a7a4dcca7be4bb29c415b11bb5ba226ce2d6c75ca3932ad52302c0ca2a52328657613d4b3a0afed3c2e9c2ebce9a5d2abd31b809abd8c693b085f51457b562fb37c0b9362ccfc0891a1d09e50f29155abc6d9341e57a9b3027f0b052bc46b0bb12c5bd463cca8d61266e435076fa4a07985413505a8d527071e72e231d4dce57f52ec243104c47fd2af3ee325c1d297bb9982036d0e3bd1e16796a62ebbf7e33c2fb2dac73a928c576c5def354b8beb236ae4466becdcc036769ac9a9f8fb7d10d5e3f418aad642f1b742af3c5881ad6a96c66b43a2f56cc5495f3984a37397245f384dc8c92c9d096d48fff63dce7a3007e05fc748fdcb0671bbb91feb30f3d03e51162a4ab8b641e982d3494a704438a237548049f5b382769bf0f8b2bf27433961858eb60522e57f541264ffcacccdeb26c644f04279e14099c761b59d98d2625108320e8d528259060fc8e85ecfdf22cc790aee16eba2c2b7476d7ce9318d36eea249072c35e3ab413a90f318f7614fd1460d62c5f08276c086f0fd5ce94a0e39eac7c3c5b29e2c780c5f2b64c00dab74c7fb2ac6448da114dd6c5fda581629fb408685ef1205c301d63f0b2778867d5a136d47394892b1b0fa933fe7de26f77bcc856eb83ee5613d6a3906136de7c588a7bf9cdfd4ffade990951058381139cf99f6e43ea3a37be7c6e9bef7cf98264f2a20d1fbe65f44e0d9d108030211a952b76236e30ea07c580130cc0566c18e80b318710b61a8e3669153b111dd9fa75dbed6ac90c924c07fc28c6eaf84002f8afbe5eb0b5b3ee7d2db096e89d5875e526dd8ddeeca0feba127273963539c61e3bd791add992eef59fa70fb2d4e715d807b49c3ea89e181e71d088bce92a591cb09dbb9b7653a233ee364ac429af003284a358bf27199118bf9c0be239f326a05e846f3a109a9f680b1b17512bdee0b51fa45a3aad73fe181f0b386202690482ae6894351198df892301003b64051ca21cae745ecce9841fa461468e0504ab55df123db34ff674c23f672d773cfc3ed74a89e754d761ef7ad4db5f7ea296bd24a97919d8c050e1abb4509430e04dd1c7a9346a64248c23b23b066736b71a496104c0ee39f506c96e435463acb12bf2938f697f618db4b4a33cbb28c79af397eb208cb9d9fce5e73086491768e86f8ea0a3b3fcd2167ed0370d5ca97f3da88a30763d412dae78e2eaefb3baa5198c638e570faed5a113a931dbeaed55fda4201a10f84374f790695fcfa0219a7daf27cb8d93932d74541bfdc70fcc69bae8e523d994b7774a350195aad7465449173d6719d04576ae5fe0bce04fbb678e341b6712f24455d3ecc2ffdb561a0e05ddc84b1c2f6a2ec1f1d83917d16e77139b60e189501c456109d2bb05e31de151d5111ef4853b2c719ce24398d023c20f6fc5cd7385681f44e6b90f76fdb84d63497a506ae82f136d2c272b351aa21efd1acbaff79b9f2ae4729417227d0e989f5f2ceb6de1dd980d0ececc6395dd66d2e308f1e0a22113fd370eb7098d84b3260281dfaa51ab7bc518c6bab073ff91022ebde9d2c0a6a38c10c1b044deb9f3bbcb01c0d17883efd56ea65348437afb435df0f7d2c5500357b1962ca3b8547b20d4df41f0403a5ed96d79fc14192b8099afccb7473484cfc0efe068c6e494894ffeb386b0d57c20921b2eb6ac1f807b2e0dfc9afe6e8b284f93153686fcc588897ef52eaf4f7ac8237c426e11ca2ca9f648bfbf0e3ad0eaaa78081da321a16ad5df2937edaeaa8b06e8ab367d21d98b7dd4bf7ca92ac5d7f08d6767d6300ce93c8c98285eb859981d245350cfc5c9f62c3a57e9957d7e1a17a28f0e06964eb8fb7685d82f511603c08d0517a8bcc815526a20da89fa7eb2b8c791bc1f8054a8784245952ae5fd6a60aa93352e641ed7006ba9025023a9139461413470c9060a28ddc66309ae88d9964c5da6898b60252b76cd6379f58be5bf7fa92ca79ce2bea1a077230200c2272e04c546bfe5dc144394835426e99795fdd51135286373a9dd81f110ca4250ec532f2a59cee8598dae887b2366783183e5da2f0efb973baeb6cbe7e2b0dc4e7a3f07720bd00fb0374b5da3bced4ba89a5ef3a70b1890c81932feea4e4c6d1b3e9e205e22de697d6adb5c77196fa37524684304fa2a9284b6847f3074425c95ee885bf23f56878aea0b04e712a3d2e88d7d371ad4dc7dc1f92891af4192ba577f065e511a8ca01d5b10df57103d154cebe04d443697a91ba14fe2538f382645edab283a9cb7d754be1c79a8683446a170a202a138a9f60859ab4d7b93dcf494b4135fc19c70965c295fbe145ccaf040ebb2106515caccdffe7b0ae41949d87cc6029b49690d4a26d7dee6440492149b5af05f07067923493f5af48589c1b3d0e654a00e708396653a7fc4bf25f1b2677dfe703699f7fd841f3d3b492024e489a7c8d45e3d309c70f7220710af07c3227b74715a05eb811b3b1c2c849470099c521f6258437b18ccd1434cbd4751aa7574f6f41114684458189580c6a2c8e51965abe348b0b77b197e7324d8f115b865ddb71c0094d3295d86c732d45b74b67321460a5d9bc788f16722685e44332c8087668fbeff548d18371933bfc505cdb2335bc6c3884d0830819c87f997675b049adf37000ee4c873d980a3553da27b4150f4f1981dd39315351fd327e2f075b4b3fc36200b6394aabf2773a60985c899436f8f15879d650daabf94c49a201a63f8f1bfc63419f139c729553b164f96b3a241232c88ae26c522989b884865c3082d44f1289099a0d92f4c316e1dc5749d3599ec78992d6aa95b2a48c7026992eb5199d48c9517a27f0fcb850ebd385a8fdea874e81f84699e5d3202d2c275ef8d6ff40572f68003c522829af9cdfb82f9d157e93d3a80be7a19a56c0c461647f6c6257f2161dac2968569c1c2c750245979d7417aef461d9a5d4341e6cb47e71d76221455f21d3f2f94829a97575068fe2f7eab670f4ef3c04d40fb3abd434604e571f4b5f9f66a366b84a47565ea1abe0437359c23797bf6f3efd84722e1eaccc9b65363e662e61713a0b74cc7dbc932d6864528608948c95bc53228fe4bdca2a2a8571f5e860a8a4cc540994422e63a6a721f7714bdeb0f449f6a81aaf4bb5cc62bf6c4481ef5e698c9b0d13191f37e8b40dcdfe4959604a8bb1b5fc175930c1462521e6a6d8edfea51831ed5b3e3e07be9a9134b39590dfbfcce4e27aaa70502e5aa7946b7967df583e40908a90734b0b6485c29758c9985af60efb608c11e1fbe927713e70204df76c4d4ab7c20db53d056f01570aa58d027acf5083dc88d0f7c98c5aff8105c27436fe8f5d70283e0e6b260f10d2ba8d6b4b1c64b9693f88ae0f6dd13dc3236842a228f9fc486cfd27a1eb2de573ed0a111df26a4f3f570e92b1e9765c88692dbc060283b72372cfb0ec33eb53ed8f0b58112c71aba8b0482a4977c9e91d89c483941f2203205a4432e05b297a654a0b0d705ee9c6a3a89adb1816ca55f8e24206ba8c747b602284886cccf9d63633ca734ac113dd5e57855d43d050fd45b2005be86a490b16f9980ee512584a8c204d62f8837e4494d0c3fe676ac6ef09d2c442d611d87e7565b8bfa2ac0b746c3d1a76d354ea7478c068f6f41f29be8b1b21a18e2b27a71c90fda6fa2370991e379283de92e7f0ccb9aec90b9d1600cc9fae35505fc9b035a4dda775a2014ba92361bc41f7133387d4e3a549f37b38fe6e1ae40276cbf5a94fc9e565265a02b57fa1508dc0959193c462f00660001004f81a251c960e89aadd73beeca586bc8fe7540ebb6442dee731b4d8b4db626298908adeccd2d03a207ac0730073207665567c821c3141da529dcc5c9c9d1c981c1884d508e371de91011e9c8ce97bc468988a883398a42494390476cd904b1b00da9cfa4b1b07a18ed4feea349d62c2929edaac5973fd8276b11dec42622a4a323a1a027f857daa1788d13fe5415f7e10fa37bfcc97d3891fbc0a1a494f311eee4cf0a8ae3d4c7d1e00fcd6bd904c99c8983949498f08f044a69d9c46b344bc3723de4c10181d1ee3f9eb3b2112608ce3400b0accc2db460ad55420ac036c48f8e523a6ed9b628cfd9ea57f1263f3af259aa304aac22c8c33fd35ec53da7cca269659ab522c8607ab480533a3a5971729cb8e44ad9a7401efe305a8529314939a608b9bea6b32d7d641319a4e5907bb59340f53fe953256bcab4ce6aff5938ebde796da04c3f81a902bda989051a826304e271477cf890079178b494b4b4b4a413252969c888c8c8c828c7a8a8c84748484808c7c9d0907c92395e0fe6925bb09ed983613d2be84516ccd72e675a109d9d2677ca3ea5fdc569f8f2a6a6d5d43ce08ef8d9a6592f6baa76f5d0f48e10d50a3bfe8521862780fbc01abe6c976b5e578602c438c08d1b2d25ab5519e24ddeb495bae44ffa34e1d81fc7b1404dac929d09d8347c3579d3c6da523a6f2cdb42a20379c4a77ae72259009e18d6989abf70c4bd31492288b982e94ac1a4801e229493ff6cb7a186f8c54ec53cfc6cadc41e8403c14c35b3c160d1ef4ac360552ce68a1c73858625cf1539857958fd64e655b3f545f8333acb9a6c5f1556b95e54c725a5a874f34adb201d1d7d718a728a8a8259e914a010116931a5ca942a55b895ce21141424c5d1d2d1524cd24ad7c0a866dc9bd9bae8e30379f894c1f619c5a512fc217f48d64c23ba9a47ab95538c6d88943c31bc97d54f7a647c8cd762aca4d08643638f7c7baf0c8dbd6ec432747d5dc732347ddd8965e8f9ba15c7d05095c11786b35e5202284839488110144048bca6864944ec70c4ce3407a8304102d35ee99a24050942549c7a72582264041e70e1e5c908259ed7b5386b023865e1840b268eb085d36bea9a94a58813ec4c2be1a2670b16ec9586507811a50989212bb84079a9740b2f38a50a1e2400310220a0e0795d0ccbd0f275352c43c7974af7a85ee67970bdb867fdbd588686af189a07fbeae9e1c1f58279187f6fdcc02b8d836a29a46592ac51925324152ea9b8d7046f862411f066873c0aa2caf69758c84e06c19b2514f04adf50a994e08003c736c4fe3d418b3677564f570ff7dc87a75f54a5fa4f0152684812416982fffcf19942db699a58f7117fa5ff9544fe079df0b559691b3778a56be8d081575ac68b6a0a40e0841d39786c455658699997d54f569f6929e45e907b301a0646a200fe605204042279e20e873fecfb4b21e09dd13a3bf026e2146dff95e65e563f81f9192d7d6056af923deec33f46eb600179246b788c3ca72789ec67640e0c51519643e582c9d1d161818518262a4c301851526201b3b00df941847484615e9aee3c48d6787e7f0f729cf847474b4a4276a010b957046f623c22228ac1227f92e787f67332d91fabd7d44f665ef6b815f79140eec39db6c89f0cd2ac140a92536bc19b98a6fcb953101c93a444fe5cc9a1b8e7442b9d5f567bd2cfccabb4cfbfb21fb937d3b9120eeb147327855c06b5ac27590c6f5a364e4ebe65fb5f201808be1a6eac7a652d85dc897b44ee691d8e2bb9870e17e6d93ff04aa75e563f513dd5663ef366b4f5e00d00f0dd5e5867a0f5d6bd1602b00dd13e26296f43b2982bf2e7474b4af0b5d2d82bd34f549f52fd556592e74a90cc712525b7621f8786f59e046f7a7c688eee8e1675fefaa2d2fb21bb1527f7dc9fb40a5a27599ccc99be714c527ee1982264f93adb3030508a2c579abe342d9d48222d8bdc3372cfffea0cd89dea9ee4eec9aa9331f97d23e2dab693435264d913254fdc3a2b04461b813ce28e8eac790500aff414c00e5e6929046fbcd2fea256f6788d4b1e2b74f6901d447414c1d671660e9e4e514f3b6a46e944494a9a53aa30ed2ab34a8e5151d13c5a4ada4b7309c7c9d0d01c92393f89f634cab269445739f38157d9ee1e5f04d28137f12f0ed70e1d373629e4a859c1c37153dacbd0fe8aa1e14bf2c89c1d96e6017dc487a157d0477c4d6778f32dcf0579c49fb1323e767c2e67c7156060ecf837061408c0394dcb7d1ce950b8b115f16ecdbe05a061009b5934079821c68d1b2d2979a49cd247f61489db9de08d7f8ee273a7ed2f5f0e39712705cca8542dacd2f00503f39247de684578e3c68d9ad2d08b7f6347edc99af8f0c6012def870c837bf18db8175f32005bf7d1006c1dc0e33d5ba2b65b696ac1e75f19fe90b1852c836490f738f94f100fbc899fb50570601120861c154ecac78679b8765c2dd3213dd6809b2b608b0b5bb30693fc71344db8ec361e3794a59414422825c43027654a6ba5b5d24aa95b2e734379021c6744c69c11d9e51e7c496d28f5b8a11c7385a45462ff04eb9478e0256ddccb98cbf86386906187279d734e4a6bad76bbe0cdd3602e0827753abdd62112897b50ca6e06f7a094c1e17379c7bd20eec187989571d642bbd73d970c14acc09a11fee02104de641b9a88b3fd1d54c7cd2a5a6813e10f9b43abb91ec6ac77e9e8eca0b023f65c37766eb59cc67379efd2d93e27536386068c1956e6b064962163b060ccd498a9289cdc611b314aae9da4f75c2eb712a65b9d90df8337f169bc26be2a3554b857b38dc429418021028901ee88b0073bfea7c92fee8c13aa108144186477cac91eb248a4d352bd64cf1b5c42f72dae8cda3d513dcca0ccc042ca9f27e79cefcd0867adb5565a55341f1f6a215e33ab11c7c1387b0a25cb320cf3526f3f1c6fd8f753fa9bbbd6bb64df8c05119b5e4357609bc89f8b0989f41def117ff08911283a0e851fb1f7a7812f1d0001af8111b342c62aaecafede2ccc054d106832d27d4158ac9c3308e3cee0d630477b08bd9833614dc4d08bef5d863551eb01ddc94aec255db25d8bb803fe4c027edcd9a4fc5996a4dd476d8c1fe22a1bbf0330fe09450412378e529f6e8a7dbbf6b3f63fcf65c5304ccadf3ae8def672c9b6d956d31f0e5bfbd46ffa9b1b5f0debfa59a5f4c99db4f02aae853bb99313120893d019a77b344af7923cc001481e406b922443dcbd2aed0b77047784f625523a638c58ad15ab75565a2b85b4c69f49ab8e4fe78414881b93e453a82012ba02e50acf15a02668616a825313a63401290135c41d2184418a1ee3aa052edd55b03ffbcd0da3908822c24695200a88281fa80f9720289992c462e54b0cbe047d51e28b4f14972f445ea2bc6cf1c2e4e58a17a73929867941f2b264bdb4c0cb8f17222f4257d33e1b1585ef8de2b2bfb9a398368c72c2445152f8e0295b1d1b959628f6df5a8ba1b84f64156933d228132915dcaa84dd2492d7e2ec5b97b52ccb59293d4f1617bdcb7a96f32ce7d158cf7296b3195b9bb1ed69a21263c5e72d673997f5acb573da20210a4b1450171978972752e687398304a5b4d68a751902934c40599141fc3c5579628a53000591376bbf70ca2294e5c721e4c20396ea8595cd6129e5c430285e08c1c6e4204bcd407bc1f502092f8650f222e5850faa5454be4d5871448089d1414c0db82d45325b86626262b89999b9590c634b0fab0b2d5a6861d2b2b439f7a2162866cc98414383869619684142cb0f30517a0bad75d7755990984ee86207b10ba42e96e8e2045d8c208b1759b08859a8885996bc141cc2fc2cfc2cec42c55ee17225cb95a72b5f5c59ba82f44484054a1542fbc31b6259da9fc5f2b321161c6041b2e9614908def8a0089fcdc5c83970a42f94a073fa0aa0119408127cf1c3173ef10b9eab69fea58bfdcddde58b12f667b32f55b2a669f7227d19c2c574a0e209688a1b81c8fe5789324d3b1425d2ec71b2da504a8f5176293d413d3e2a2d5474b0e2d1d889a55025a14e4ca3020a89094b164311ef135945da8c34ca444a05b72a7189c03aac408a0e4eb6d9650b293a34518ac29299b0834a8a0e3d968b2e72cc11a430c182af93a551ba8205a5124566c274258bc9714a57843827324c56881918accc0b1824308122db19738a8a94a766831ad3c66f11f452980c3129fa828909119673efc95492c2e407d6175d7d92ad30e1840fb4722b8727263c713239e51ddc98ad8c022b07264f4a0e46d4648162a5490e2b3d6432c03680d19202ce641053c5064bc98105527218c2e6d0644ac9812707a049450a8f95a4295146fce1c3527890f23ca2999c7b4f4a52789290c2f3641eb139f7a4f00049e119828212c5c3fa628b141e1f6f0b50972d79e68b15a28e22c84d48ea614305541037422c548c88492802ba678297c9997b3ada1f4d864a4f44dbbe0cfc11b773ee45ef91f2c332527f8ee3389c278e52e9054539621cb4e3d360913fec354efd25a141cf614f312c6e1be84e42837e0b69b1e8149b90c42ab1ca3b102ceb4e825100b9fa5e6badb5be8cbe7dcd0e6767771cfe1730604029a53096c8f1b5212062fcf9374ec731665d46639cdd8c12a8b6d8a1185d9c4894dd8c1a36dd78b37c09538f96526a337b03a5df711886514a69b59236515a659358257da96bc452524929e40106144ae90e94623aec1d9e483521bf7e955d92209b736206125eabb6f89b5b7e78c986431ea9a5534629adac2992b3b8309ec81f9e71ca2f897cb967dcb10b1964b7eec5e420cf39e79c19bc89d89c54b5efc4707fd3e73b0e1164f933683eba3df736debe15a9d1d92d4c7a8d10abf513b06927f597f3344195177652beb421b38c9575df0d74675f5f7ead5ea576d66ad67ead99077666e16359d5b0ce5a6b06e1d75aeb4398c15a7f6accd6395b9811eeee3153f2972402b170e6266c49a7efb7b52c567c4a23b72be532b7bd1003318cba8739233a3b09648a92525af99ee3c86f390ecd4fe9eeda7dc7dbadedbefa36fbaba7d768d89744d3d7abc81fde53f2b763bf637867255c9dd502bbdaeca3d9d1d61836000416006168cf2478d224ccf9207f1c0beb701cce4862156ed38c252fdc8cc0245bd35a1ca5f429c6fdc0053a98539a986c0a6685a3f4192282527484e4de153157604d99a6d4147345ce569ac590874d614d75918e8ea4385a4a5a5a5a6d50888864306444646414a3120a0a3ac1f4119a4042323d321d7fdcd3bc8a3701c1c37698ec7f58f9246b664fa5db4b49b4e10b06ab0a6b1be24d997ec2c91fef493df711673eb5afa552a914075f2b583718bdc48924285d789288d8e188d706a36368e20110549094a58813bcaa6e61a7523abe2ea7f36d61abe50f50d050353a4a8a92c91e2408e08dbc815b16c6a280c23644a3369e0b854fe91e9c84049235413cfc4bfeb80fc924a94826c7b1d2ca2a470d8c6661ecbe29e4b04901e826a57d8b47f9160a40e0041d29b8746c452293cc3102841b2104108837f9f4007134fd49584b2259e356bc29f55b40b4afdaa7543e7cf8f0e10366aeb48eceadc8fded6fad5757c0bd24d65a0bb39a59253fc89650d8e664e569686fda4e21643c9fe6e4c2f5352cbdefbcf37e26ffde9b44878bc945dc4159f673ad9fdd333ea6bf14b6fcaabfbbe5e4623a4d2ee613f6d9175ec7522615f9b83f6dbb5f7084c5bdfaaa3feeadceb2573d9439334fdfca1c99a757d3dec21f30af7539bb732b423ff5371679139ca6f9192da3afb619d908b04d9caa386378b51981db3b18d341f720bcc11e6bb9ba8f45d9f155f7317cef7dda291b84bc7549eedd696f47f1e3c7f7eb17f73d72f7edbc89b8c348c67385290cae31f76f07b50eba076ffcad8e483b36117714394e1311c8368426f94b18d782706794a00208d7df3abca9f3064a3781aa422825e6d5a9bbbfbbbb6371df06934b553cb8b00595716c561150f904a8dce90d956dec08956b6c1554a6b131548e91555079e6679063a0328c0a2aaf545039abb60a2aa75450196f1a2aa89cd9ad82ca1854ae5b0595e956416587ca510595e1964f699cd3dbb2b3750729a594f4088b61f262ece4564a29a543504a29a594524a29a5b4c29a940d3294524a29a594524aa9c6eace28a594d20d7893035bce499b665e5084cd39273634e79c13ab7556cc665992146c4adf4b6a8c4c19a594da23589105a1ad54db2c20988ed1ed496d9649613339b54cc3d79d1ac746e1466b6b36139a73ce39e79c73cea961ec992db36dd6c96cdf44b6fbe573ce39e79c73ce39a7c6f6d578eaba6f87e79c736a224b36f6537f75cf971856998a90e3d7b061a32666af0356abc681c28dd6be3a5b224ed8ddbe1557adf7ef6b71d536f6cd70d535f6d570d534f6bdb86a9a7d31ae7ac6be1bae5ac6be295c758c7d55b86ad6be19570d63df15ae7a66cbec4ceb2aaca19ffa6c90d95c88c15573fb72b8ea987d6570d530fbcee0aa57fbc2c055e77d59b86ad5be3170d5a97d65e0aab77d67e0aaf1be34b8eabb2f0d5cb5b66f0d5c75b6af8dfbb86a6cdf13707dddee84dbc255cb7d6fe0aa7d5f1470d571df1c355eaa7614ded0af1ba0d4d6d4504ab398356cd8a8b552574194b4860d1b532401993ad95aac6216c8d6a9ded32414a82a7dc8619b5959c336b3589606c36836b3625a1ab69995e34097d61ed6650406197474f534574d0ee9231414049382531396272844441c360426213b46b2c6d270c6363e3971e24342e00f8b4d213e64ad8d4eeb3d2d624d6b796f658dc6c29f79b6874b4763e1cf3cdbc3a5a3b1f0679eede1d2d158f833cff670e9689ad5340d5b4d73b574f4c3604406978bd57a4f460d8e06e7696b39cee3b82716be99a60931b2a3b9743c6b2dced8667bb3634783491ab62dcf693967ff5b9eabf59ecb7233c0b1916371e668b0cd5c0c560b305ef03310f26731b602b0f10ec938c8240c005ff7b70de1966c7de29303bd5ec33673387334d8722ecc97b5d95a7f59ed6bd64159a3043d3af448e57f184b89d3c3e59e7eeb299df9928a9a77927e4c23b2c6bd1617c4e53890ab87c5b26847d6482724913c62a57004492024867e7c7cb22779b64810481fa1a020981aa7262c4f508888b81cf6e10ff93ec5957c08ce9445a4234ce3f77614d073b927556985c6c04edc0950901e4e85906b4f940d3cebdffcf28e1e85472a71078e53221559bbd81094986a529424cdb134f953566454b481c0070f3919ca8f04d04a9523907b4d82e8ecc09b96731e9f649731843f6a5420890cceb47402e240288f1c27e33a0b6f98268c49b50c33b8c7d120f770cd90518386ce9f5b98e613320e3cb5f3c427f71cca6b9c738208de73df1abc45e21eec3eb2e768906d966dce287f5ece91adc8dfdc4f11c7a5a8746dbe6cc32f860e1436eb3d5736238fac11e245178f960a2728c16185f8d4d1e42af297a5de9e8deb060bd8784fae2a7c7033c0a141458e0e0b36b37e006151000241003033339500703b2d0ffe90369e7badf7bc3d5beef9bf042064082633ed3efc5c85560443c77972a087dfca54f29769dc93d7088e9acb34c89cc78237d1051f407c014fcf894f5bb6cf1554e0e17a1b3568ecd0716393428e4e26a950827ba313c06610ab74a6e2ef78f4f2658afd592f5f96be445102eda1cb08baf470f1c2250b172570c1820b5346c4658a2cd3348d0b1297252e47140717c6193d463c239c32e51d4c42d4e26e0f229f5322f7d8ef729cea3ac61d71943f6b30c95f8f2d279473bacfe9eeee564c79a7b4b1c6e59c11d20ed3cc94a9c81fa65c5c992a7064c77591e5865276e0815c70354c1e9e20f60ddb0b3036d67d1ad8951ee176b833e2c33da74b29670791aa3819a1098911aa20a9121fb662b4016ffc3120e4cfc6761b36ce192b76834b2d17c62132c481124db6de1007454f5630c9b9dde77115f7e6c7e99eab6807bc913cfb8b519222927b46b1a88afcedd87207fc211f63cafe438e80ce0259bd8968148bbc8968f483f84394f4f5c0d8a3b1d6871ff9a9f78729cdc3bf92b875cbf82329a55f7fc9b6fac39bc649b07c89e919bf09e70dea160ad42047d9de4504129fea96180308c4c61d6e99f83005983cdb0e9cf6b7644b01c196ed6d28a587a32d05044c5b7ef6db5b87ffd19f53045fdd348727944065e3874fe18ffbb0ab9bfec419984e760d2a21f69526d87792605f1ac4be1587606b5b916edf2b2b2623f52d71b2ef43293f406c4d7f30f55ff69e821ff61bfc2ffbfaa9ad48f6db006238b2751ffcecb36dc8ed9e30bab488751c7ae94f1ab2974f03fdb2ecfde7160391acfbe043971758b225b417ce396fac5966a20c8b06126157493f6e49a5dc8ecc977546c24904ebd3624b8164e484d3cb9499cbb2b6529f0636ed7c501dce39e19c10aa90fa34b09370e13f9c7807fa347eebddd543cbec9065530564cea5b2eac8137bbc463200ffed9424611fc7cd00f095658dfc582fa6e3be5a4912f63da0bdee57fdbd906ddbc1d78ddb91d59e1f311760f62c9282d5ac36e1f5d4ec7adcc378e886737d4cb721954553ab0bd85f15dd54498c7e22c3d738c8fe48648ec6c16be4537d030c8c89409c87c364ee967f6770d5da890c7f685bced8280eee491d7d648dfcba451e78233fbe206bfb8b3c1c97fc41a82d1f2a711cf8e3266ff938a4b62135d31881012a65a151199a864593614506163168e804d1c982260bcd951935e8535ab5a76ddc939f37eb678f6556a6acb111b135cb741adb91fad853892f4e7d0fa89b6f71931bd5a96f490a36d6d508b4428207fe8c98ba7cadca2ff4b923514a29fde31643e6f2258c707a2c6272324c727dae3ed558f745b9a9d75a4407ac9da431ceb7d4ef84f2e7c72d065b5dd0b65389452a82cb75e12aac8f69e8b825344623f764cdbd53d33d346842bb5f17005fb7eb8056bd38c57588c32c88c01b10d1b1b3df522c783205f93c597b22f5e96b5ac97c0f682fedb9ed056a8019b4acde94a63f19b67d9ab9cc4e2be9c76ee52563b97d970c377c79a69a5535cd8dc1da951b119805117803223ab686cdad886bdbee88cb86e0725ef27c1517956bb4946e4046875c5f86a88c19f9ec0627866198a5349b710123f3b11fc05f00033636d6d160ffef27d1b6fd8b6d2f6045a0164b08b10403d462092176707724a66ddb61b8418ff548d6658bb130c37f080c4e092c791202eb8eb09fe79c15d348a4f0c11e4491b48d905882c512961d96a03424047bdf06b064cfc7b608402198c760d78e86fa17a81d066cecf9b309f94a7c89bb14ba1b9cdbdf7beffb36e46ef4beb58fcd70e1befd6bbf641aeecfa84c0306b7ef765fdc57890ef18b5712db7b407bc9ed056a00215ef2e18624c692164b08b1a4c512412ff99c172e2adfc734dc9ff76b6aeb3e1936be9fd160bf668e6bd126f7ca9c3729e3cf8f93d617ec912d392d396e2e685dee38d7965d0c78e3cf8a0fff63492044f863cefa37d839a70d3b3b0375d710936a883618c0129b6f3ece716a8bb1dd5da6625a1a63c547b02ec78e9b8fa1861cd632e945f66be38d5b1199fa10b06987dd8347f25777eb9e0d37d85dddb36167d7606367a0eef855dbb08467d710801de70eb82d39be85596c1b7e831362c7894364d4d667b8009f3eac344a39b723f4e75bfb5ff63bcebd906d19b6ed6a8458111d1b2302b338b2c49df12385b3caa96b9021bcc95eb3af3dc6c588f58c179c481aa8f42e7f1db7627b11a0147feb4ad8feac47410c3c0a7febff710a231c222cc1082dc8018b286ef062bd124027f8c00f4540c4c0084ec0a429a092acf861c2698859c50f27738494344b1eb6ffd4f0e6e18d7c977cef684b860953c64af68f52e9725ca4e22b02b975ba935404928a3be443c71609aea32017e4808818fc00eae50f01c7998f241a21028973c7f3fba6ac2072fc6f09118c9efa962c19dafe338907ed794392179726c6241eb4e54f569396b75dca2d3f1e394ebc34c81fcdf61c300f39f280204ff8dfa473ce39e79c73ce39e79c73ce39e79c73ce2c40d8896116a3d5ad486863b436b35946e33644be0f91d6622cc7b16fada5706233abd33ef655dbf7a3b8c376b1086eafd591dcab181d82d5107f47ce8f9a1097041a1b9697b96ff53451eaaf29ad907ab576134278635363144cc3a29285622621b150c41df12dfc19c53d6867140bb1b4229f94209d9420ad482b558b1a93377147e4204241868204051922885010a115966884c509c82901e10fb2400821841042292184504a08219412baff6cefbe24ee59a2160d29edd1434705970ab1470eeeca8b1c67c097738fe69fd6ce69e7b4ee9a9dd6eae8637fa69d764e2965b769b8f1edb07bf475cc90b4d65a39fd314cba94ee532a7180cf20c3e7da53db57de6bb3dddda76bcdb3f79d759f07ba6fee3da7e5a0b8bb572933293fcba494d25a29add4b5baffd4d5ba47bdbab478e5c50cd48d51d9268a890944a937edef8639834a309b4ca019348346e00321a510166de840fee3f383032d21042e087988dd511d893e58fdc1cc896d9aaf5ed33ed5bdd47c2ba23dfe0ba30f1a8b6655557f5535cbe0b6a96c6ef43dfaf823ed38847ce38f8c3ee02ccbb2c7b22397be96e9647757e2df84d1871cb123aec4f3890e61d8c74c27c7b11203a37ba8f42dd844ad5433020000001000006315400018100a06c482d1582848e34c301f14000d6f8a44665438164923490ee3308a81300629630c318800648ca121a2b100e9ab718d604e2da8dd17c6189b0ae85f59ec21c483294034f9d64aa72a48ee05c0ee4afdb053ab62a322e5f26f56ff67b106cc54f60d6e2193cb2cb56ef4eea7b31099c0836dbe9bea4b3a446f08731097901ca5908de83ff711fc60c5c9160ed6593890dd3238c8b2bb418acc4947ec4c4ac22da511044b90729e1a2d804e15030a8d3a82016c817b283820b7352999879b063c3b76c35c2fbb61d4274cc8ad013f4d88b4facbc22cebb3495183ea80f26840e1b2608a9070c4cd852e29955105f0cf7b6b659d7357669dc250793b39a40f05faa763d8738d1fdaeaba38aa17ead01c876643c2bcc5254f36e0cabb5532cbcecd5365ac446fff9785553929e7c8fac318921a04c9dcf50735457fa11d5dc05c765ae86ac3d64ee381cb04e8e64eb17d62ff48b548a7ac7b5b7bd28f5b909c3ff540d9a348c06e8fa461c724e795d30b7f476b35fe0f7de4cf0b77d0f1c4ed635933691ac388de7fce58cd67ee11e071e3c6a2a8b43c1bb0fc6f454004326379e338e41041c1e8a758daf9167299e98d9a6cf9d105ea8ea9fce4b8191edf38212bb56d68325710ad5af5c4b064f74674f5813a673470abcfadd84032bd41f14c72c0292e32ebb2c6235d19165c5504bae68cdd0006b74fe6eae66f8189e11b2cf99270d56a7a1a07f85bb447e9b706b50687cbde25e873af7e9a1f22cf6d9cb33217231eac2e703cf2c2773184f032a3390c5370d37c2545b1debc788aa717fd312f24f58dc9bdeca8c4932b24243580866c1cab75b3e485d8a1e639c2083fbbc429e2e708d863c1254b5a9c5825e7cce83263d687806c99a8bef562353461485a0e4e37244773ce672207ad603122408b6010adb11c4b052f1addd13dd4d3aa2c341bdaee45b6bc041c966ca926e071a87a45ae31b4e87149b1309ed0888f48032e760ea87bba0d2ddc30e43005053806937a42f6b242e12db82cde0ff3d471542701eadce426a50be867df16c61b370282612842f36fdb4f9e69042f2ebbab3c796de2fbe69b0f5bc6055624db14bd9ea5e99dd66256c164b797a01b4d590e42e860ef103333c3a39b5d187e98c28993fa76eb27206c478ce9e73548e89c5ff954180d6820dff3850128fc15c8e47db1dceda9998720fc72ebd044c976a2e6f518346f3de3f0b41a07b6547f65a92aba21f281b8b7f39a178ce9f587362598edefe0788952e0e9c60830cd374c9d2700988f1a71ee6d895295783b3289b70aae8b52a299bf4087b66e8e7807173e7247c3f2f506c3bbc0e9ef7d18fbdd9379733f329a28c5cf40a7d2513f4f3419a97ff6c80ad6cddfc6eee9f92e190ff73741dac7898820ed33ba46e9ce3eaf9f668404e4aaba2634681a1d830cb6e2a2c09af660dc91e9f223cdc0d1457e10d19331c7e122ee70eb6d50c84965f66fa5f2878bd8f3055344bb311859706028a7667f3887aef004e0e63a8b5616837493d1b1954e1008a3a49ed4f1ddde3725a6204345f12dd672ff6f4f880904bb8d5cf97bcdb09902838b83ece72aaa2cdc197e5fb0ca781d1357a2414b7aee403d4e8f242cbc8dcff114a72d1426bc267f606b35c22ea8409514a9435ded82ef0599f8171b1d06a3c776e51b9799772f00b936c289ece7abb5cbfe0b8dc6635eb6b2ded633f731f92cbb0241325480961825bd00f84e60ededaa252422faa8f66c1877361853f0d27f0ba8daf9c6b4302f07c2545186bdb2b56477b90feae8456017e423b9333c336afb1c1a2b5b9b0e28fae1f0834258592e4866e5a18117051c70db74435a6899bf58bb7cc54c98273309cb272660467228f8edced16a659aa4bb6143108c410299ca3b8fe4ad031478cf5406f51aade5ed291e7b68117688f4c5a5d1ce9944b59f925003704ee533d77edcd801c4a5e16315d8bcb31b981b8a44977a860c3a9c6c62a440eadc0674ef0210c923f42effa2a5fb55ef59c82f79bcdb269288e4da5ea2293896b2bfbd0ebea2f2ba7325ca7e0d2ab93c680b0daf33d747178569eb8ec78e2b9db703170819b95ff92e33b0207df3bb20c7b26c238b4987a41ca18e24344aa045241f280613aa72cfd56b5edc35efa7028d0a467621a24efb18e34cdc24b9a5aab4913c6e877c125bc13ac20156398fa82bb67723833098008b8cd422c229703d44922525042d6c8252979119ee45e4392e8e141231005cc16d876fda18502348d2d49439e03dc5845e8e4707511dc90b6a4edbc7225b0d17d469feacf7a8e2b9e026205d0f07134b44307013b054595b2034a1893aac494a4a33c1580f80fb7fd62205e5309dbae5a946cbf600765829da81de3eae57eeacfab974b409b8695349290e1799709aa77b6db65ac258b49136263862090db701293fc5b1f0cae9a77a5b6049bacc5d2b8dee37ff5aa8e3dd74d53a1e830bf01a38897a9250949ab18701a0b99c33dc3671f85c415d4b2a16e4fe9f477704b55bd4276831ac8874da62f60926cd2445ada1fabebacc1bccc27b0333c06599a6dfde4c6633bd6fe72bac3f66edc3dcea55bc2432684e66e90dae93a7eef3bb1e024c814a43c711f00df62207aa9ce9e7e0226939199c89bb703d8a4656fdbd76b7b80cc61b6c79517942b6bc4c3af1e20c84a0e8729f7cfd9b9a52c58ff2ed477efa1edb8cdbeb1bcd5075c89c3e509f329bf5a99e31fac32b43c188d1a2f14db683ac2335c9e2e646a0108ce7703a34bddb1d44ddc52a51664025f420b2770368aa98dc4143ebb1b32ab74878ce5a1e78f453b347cca8f9f2efc3dd0a8eb1ab4b3f9ac23773abb5b213c4dac9c3f54d423ae0e6f7d50ffa294eeaad18df0efabdf46058ca11dcf0e4e6410601def74dde12b4e439a5b3f3c842c2db371c75110f063a92b5a0d97ffbc045f1c3ec7942681cf4568ad1e778373d62f9e7ec102654394beed81a37d14361668c40a59ed5eb9275661dde49c322aee9731e5bd0608a1805e192796a55066bbcb64d08dc305ec3ac944c76205f88c4294df9932248e151fa56ec573de4e97573cab4aa3abb31bd09f5a9a3e622da8a10a590517deaa9a77980ce0d83436b1991140fda0b54f1721d71af5116129690db827ef82eff0c3d44af37406421cd3cf3993539f5397c562c7601e35c5318e220f23cae0523d0519e030823ed67a1480c257f599c29e82c4b6b40f467ccb7649c1896140bf26d794b658b6d871cd208150cf884a4714c498f0ca14e36e6809d0e02f9fbea198876a2876e9a95bcabaa13c831e5ceaa8ea3c40b9782954ce985c38b48ed4b93ec9fb250b78030b21a0f31b9bd00b51ae31a46f804bb30c927c174ca2858e1099a1cc0f13208e0004d0e86b972e6dabc25f593c237372c4234e1e238bbd430ab68c6c9f495b735d547bcc415005b407c5c6086a9b2f371c0041c25857b26a0e8e79b88f6c52514c4a107cd2360ff33f8244b6fc79aaf62433105fdc8a942c6846f54b717f84d38d38cfbb62f290d5de98de96a080a6990f690da319862742d7ce77487ad73d7d676836944debfe5c4ffe9eb339514c255c39db64c78ea5a9e019b4b98b4802963c39b1b995b92f5c059964dba0b3a83dd74449906a8bdac3c9a2380f29448f58777452938936ea3a5195dfd55ae4ce9cd74c7bec3130afb7a701a531c4ef7b4db2a27ca448536f6797aa20c5073abf1dd15a4e41671d960cbee940d95b0512584f35e2fe27452ca80405884e7ad11bfb3b17569f5583a30525ee7133eac4e14f5a3d604f30e117e7a128506bfb21f27a45a69cb7a6552787390dd4a21231c1eb4f8854eee19aa99543bc21622db6106fac76b62bc10170244fca5a1f56793b262d37a7e84b66f266ed985579bb1465532362c3321528a62b447213cda66160cf43b74c24b1f7289d500a9aeb11ec2618d739d9a67a428ff261d6c236ed98c001dd81cb533b4ba8263b9663d192d8ac1bd628af991473dea34d15cf1d589248013020cad32f3858f18417922c26e31223d150c8e98bf63e5c1739a9531f9fde3d0d06798626c92c87ffd58b81e1c3df04ca6bd488c2099c863b390b2a669112adba541766612df158fc9494550f28e635b5cb9760e9989f08692bd45f074cd5bcaed98c42f9937348bbf9c6acaca76734ec7b9b9e5fbfc5ce06307094873ebd6dc08c6b971d8a520418336f4cf747976f46c5115f89e7eadff00b5d26d30a8fff39b8c3cc39d009881374e1c61ad9f22ee1dd793835258bd3883a03d3aa603bc1311e343bce37d023b746bff12341aadece5b89cef4732da9ee0613fd0a6e083039f1efa08d4053f20a8d2c480bf019012ae339f459973d067cd09858165344652ac0140d629ec756fd8b9f3a2255e706684b9e139428728bdac206fbb58cbb52ff03eef4d706168108c3971f7e25e2da7e719aadd037e03824357044d91921bed378aa32f3a929719282217b8e1ec1f36792064417e6cfd1f0499ba242c64a3b6e8b1a5ea6335d92b73501189c5e6a5d0c334ee11f64d5665a7641d33a580d5244b33c0f9037729274a88f5bb12a10f5c220d1d71c963fb61d62b7cd7a937b2748c0824c46a98bdc0031bf2a969b2853d42f75c64ba987ecc1f07886cb1f320cafa26f9c342b70304c930ee434ed5559ff1e080b807ab1691c2e522d50485e5f6f8bdeb21731ddf4d0dd70ee563d80fbd173636ecd28ada70576db0e3d207377e152abf9c466ae16911e94ec86fab0342ca883888cbb1f22d6ab9b521009769728c275e19c8f656122440f7fda7a53e29e980ecddcbc2b3d54f5f8f606dc5b6fc92d643fb68fc7adef100aa4e52f443fc276df5f3efed4222bf31766325e399e811a7a9ad982619fa978a50798e44ca5dc56bd2c7fc7757edbda59401abcf649be089de3b987a8d9c8ed34887f40bff114da1ae8e8079c95f2a7494292ecd1bde51005e4cc1d284499dc33692c63432a409903a5d08699abdcbc864c575414adbe41de2262aa29b8a42c3b4dc1c399cde213927e54429e5da672c33c07e27e427f9e654079f0098429f346045aa08fc59ffd5b53a21f0aa5b1e368c9cd658fbe435b0a8440da2841332aa9fe08ca79f0ff6cf74a27aabf826acb6c870973c80cd282473c3994a8a2bde04b0c3d022484790201c19d44e5161931288c14e19676a53dd23dda6a112d927fd61e796aff46d66db9cd0dd7b53133f86955a3d4d2d99d51e6e62d5199e729037a39e2acec45a3a4a53f3586309de8d8062ca4bdf8b6a87ccdf3050f3b64ab4a890ea219f9300536f5ff957884eb6cfef2bcaa105447a4f48a68b12cea57af19e5248ed3f1bc2e8c76bc368aa53546ee8818f4d696e2bde1305a59d5fa9e2fad6ccc224ee81c2a97588c2b5dee972d9c59cdb11a5fce0fb61a774c3c91cdcaf10b8dfd09a3d7442cc0f811117aa81d2814bf39465d51bf1242d922d43b94b945ee0dfd3814cc5551dbb018ec2d01429d1aa35bdc7e5416a8ed54ebbf1d7dcf873ac5fb3c2b67c25f5715d256e6b8b67308d7fbba1a48b2b01aa352392193541c21596db78affd788113604bc46fc635aaa66589d449f6c8d60c9a9a34c2dd60276e8f3d74a760c3ee8b86708437e5befecfc18f98f33a6610461d94ae3c103dff6385268b0831d587a5723952a0132b220b4618fbd4f98fc04a71b8cfea2b865ecc469b96067340599b95e92d6c518ecf56853fb89c2ad87bd908815a9ca8ddfd7e120d4aeddd693010d9ce357cf6272071bb2f571711285ea09f146f1477b79552a6f63cdc00e1ac5b906001e7e001e95f0730ccc472985745bfb4a3ed0a11834affd70c3bfc9033d941c7cda2685a8444f6d7d6bd70de8eacd9583ad19d21186c2b5c26dbbc09bd6c31c4470f9d7fafa677f0026eb241e63f3888d68748d94e075e95b282847a64fff2b1fbecf5e204692015716fbd88a2b2b6a0a47690547db03e0eb425f765b51cefaff6da1d0757e0281b9530881be984999ab5882f395e1ce0459ed97863775b10b70b9403c7b8023b0fae4399ab0cf0045c146ace41125f6b355ca7160cbd827a1210901f3a69ba50e12e90b5e56d830e28f9962a73c5f905a57dabc4751be8e0db00e4771bed6102454df8b7e054f9c0251d16584a81d19a26d4341bc7bd6a62266a72d167a5a46b3c76a2d65b729d50df60c67af456bb8fcc31cb8c86fd64025e85a80cb9a0dc851b78ca9df9e459e75b2d6ea364cf52cc6b65d2a8c0f9c3707b16306bfec320b4b5c245d672cf1466159fa98a1da7744253e74ca12934189aea6919819c8861880f8d50e035f71631d4e9272026a6e68cb3651494d6e32675134d9a489081826f816b2ec3ea3344bb7a21cdf5781874be41d6e1b888604ad780556b5b15bc520f3628d8dd1a28bb463e10e55035039c698326dfe15d54c94463ba43273c7c2d7a281751dc232ecf4c3f82b053b878c8dd9a773f8e1f46993d70ab1141d8d25cc5ff8cbb6ba74807e69a7c63315c260c95c38274102b28434a7589ae7f9cdbd7763944f40a28f42bac206eb031f3f0444a9218f3b3ccfb1a4eab13c96faa8a5ef62a647b32a9ffd0f09ac865f06c042dfbbfd754045746f5abb55e238de569c401f15c4a5caf637d61234bd46d4d8ea18a85e153f33e9d1d78abe1cf45dde85ba8e54251e7eb569c42a330a7ebdb9aac415df6c5f1a1f6fd02f9ec0ed14a014ee04ff06834c4cb95d344641832bedcd2a5bf30b6daf07b81615353baa3a7857e84981446d8b42592b63ed1181c2a0040074e8ca283cd1e9173dab62646bfdc69c2ea8c2a946d4deaeaee1482836dfccfd2deea407913296c538e9f04fcc9c5f83822b8dfc2a88da6524e3ed4a0002c32dd3ae18b8cea9ead9c3c5b6f4fc8752811c838f4e94a67f722ee8661f7dc9183acaf559cef53584917a3c24fabb57b116e4715ed2f13f661f2e6215e343b3cdcecde15f689685925c1f1412f1156537436a739a32e11234b5f6253b3f1be3603577d2b288c144d15143fa0a0a7c602f3585d6d157009db7b451b9e6b6970c559f6d274c3129a7ea3040e9292e655fa224c44dae146f2afdbe6556e86e4502fc29941b820422f529cd02446c0f365ed475b9594779660520e52b7f165af80fd28a9c1cc826ef4816de2729b50f2849c3577d22171fa028dd73b3acb17e0824e9fca17826a657fd5245f0a02bf510910195f0af1706c8896ef65c245bd97ee6e3308b58c0992c3b464a2196a1ee812686b820d834b2f4fa1c704680a3e28f88325b7a411d4073d680c0054a442e13a1a37711f094785251ae1c23342ab807ee89039102f8206b50469d0fabe077c91cedb641a79b1e1f0b7ddae806e6b4fe8df7540c25342a569053a02f3c7aea5dac0e691cab24abbc5439325924d341fdfdd6bc0703d1e8cc711eb789ee8364f19d1892735c6e3d77f90bdd672b98fa234c0a315e57a969756dd54f5cd3000a4af0141bb1ac8f785a3db3ff10dac3d3f0b5cf64f4428738ea25aab43503c3ba98b02b31f6ee4de078afb3e0988144463f56f86e6f5619c7b945caea07a9e626284baa7e0d43f40380ef1194cf51ca6deae736137e3f614996b3e52cabe4ab1e57167e05752286e800a673e236a4062c4729a6a1b89ed9c10d7d2df3bf39658f0a8061a9cd9a5d5336ef2366c1da1c715f7dfc794aef711f90e576a5abe29f3417a0933697a6042dfd1a410ef4f89782744a790179854c22e24a2ced9ff898e5e8871f0ed4b8f1ecbf132f63e4311051a65f619182711cd1517485ecf5152a7d30985008e5d06e32f02835c8973acd27fde00b57e9b509cd7db6916bfeeb9e85c8197e9a0060e06a93ca7508262a4e424d1f6ad1920135220a1b79111dfaacbdbd0a0ff457325b0139e98243ca2fb06244d721cc1b2d89e3449e08aab7a641b5c0ded3e8a8bddab474d42f5dbe8eafb50429a2222e3c48a8da02df6adcf6a3df5ea4bb9d58d212bb557fc98512f0e767549d8a99f734cde6f96355ff10cf680a3c39c185ec8d91fc33ad3d6591b5d44286b227b74717e7c91149ee441ff5786c72a0e2518b63ef5a69d121035866d180c74bd916f4c8b99e088cb6ee256337d83a4e4e1ad33a27364a5622ee5342abbd1a56c0654e505f929bb9d3374227af39fa0406a4681823660eeb515c60cde5fa2f8996d6e054501837d7bd94d38d888e056e19e831e4ffa33d2a3ccc2c635b185473e2e52e46840bea0969710a590d6ac43bca4cb2f22ec81824539d596b4c73cba1ff11d72ae88b43f12eddb5670fc8b5b5e1e860ff4538bd44ee9344fc18f8e0506a495441ab24f754509187662682f2af02ca7516684673a31755f02f316f90c06e37f17a460cf25667f44d3c608543515396023da8be051507ad769363b13b53a7ec070ce2d9e3c8260a4f9e387060b0b0e69511af6cd37af7338feb9472c5b6355a44b206d6acc96194b9875666ede49243925c852e5eceef608a9db4c4554ae26b71de4c3126f661c99c845cb8d069248587e12cde9408c42183ac71e65c6a262d0403cfcbda66286086a2a9a96d065cd0cf9cbd58a0eeaa1ed711c20811cadff025a147f5f9e15dbe75aa997c2e422be410c1fab28439b146877ab2920c0ef0b83b408c6ef2823a1f215cd359fe2fac3d796b9ead0495ba439da844d2f31b710ef36f9fe0e5d3dc045b06893ef61c4cafcbce9e41cfcf5356a2c744eb52f8a2f73ecf7429c160dc7520b854713e194eff98702df9854b4688068175493b242f22a63172a65a24ceb6379df5145e491cac1133442a40d1e124bb1dc03f28c24f06fbe33919d99d717a99601fe4b1c693b78a8669ce6fb082554d8ec4244e8dfb06dbea836485167a98580f494d3f3dc5f993534d0aa36d24e0d025686500e1345aebe190b080bdd10a9b9e2397f44e00cf3cb17fad0c7f18b3c7c7a3d13aacd9bd69858a774257427f62fd680ce6dd88a98d88c187235bfce5fcf3afe9526ef788f1b6bc95d856013ae10f0880cc06a816248f558dbeb013f82ec30676a1920268d1c6a64791c63247423c2f51c22ffd2089c8f1ed9f8d070974bf6deaab54805aa5ead4db15ecf15bbc2b2930e7ab1558ed95c454ca23d28d37d98d9409794ae5571ec9f1f083d0a796c89a058826acb6410da7ca29775295a0a4c369f3f4859f77c9f18bc3991091168fb60d31f1f388ba90a4a699e7a525a5602d682792acd7061b5ead891c75d1aecd7d30fb430aba5ed86bef035fb084b4637d86ab66cc250886ef29e7e0ade9695f2053a50a9cff8d233bd9471408b04d78a52ddb07aaa01b3fb4cf1899ea310933411b051a7fda3a4d81fa99718ea11bf16db37a0300a78aa0cafbb3940a56ee676abadc7d15ac2a84ebfb7610e62a2caea2d4d190b4adc3dcfba061b16962ac5fc6ea2c2f61fd60668ff66bccbba8c40805108e1edb06ebdc8130eb8a0fcb4cbad22da96166d064d046dde6409c906eeb0ad62f4d67bb7faeb12a77ff6762b9cd309a12e0c50ea27ecb0c274c19570fa480a7b006d45792680339b81c22c8898fb404640d9c391032890f5523648d252ca432b3281fe4039da26d97608ce4a9fbbf5cd1546b1b5105a27863e76973380cad2a56282da92930f420c67217c815f26600f830b576c8e92f1002a9ad210ad1225f280d941d6890acf4257ae240601e17181c5cc6e7fe97cba32affc0dc5521111142466ea2d0d70aaf53c4f339001229f2fcd8d36df0790cf3e5745143349ed30cc0e65480b952bfdf3ce73abc12340cad11110c08b65e51dd6e78f70e26bff7b8ee1eb6cdddacc71bc02a1a1ecd901f71ef86b69190650b8c810a0bfc05d09fb3fdcfc8ab979bca7d0adaa6d7ace44554953289ab272bb19bc222a0022311956b7bd99c84a1e79213536073dd9c1d8d1b868cad0769122e6223d0a6c399f08931cacabe0de9695f2f95b483710ea9f1808a86f56f41d9acf520567dad084dea59bea4ba2f52de0d784b3ece1d67af509617a3d405bb1f8eb830a13e6a6c8b97c184aff034e76c964ac29d9cac0acde978d14e1731a7b8b8c93da1f1ad10f0923462abc4d9e96814be35d134d23ed85ec6f9219eb62cef64d28c6f46cf20f9ab69aa2198eaf23c3595fbc202eec44d819ea6e9ffa6d53e6ec7f1289d200e0003b099658cb02f0011479ee531657d75cd5ca55cb24b713fa0e9e06f2e7e96007d4459aabb01fb653a9b2ce20c31161607efece304e8661e26e233c87df2800ead95cfd177139b49ba6609425fe02e00e4b65354453388c4cba60d3b4fffd505f52d82e2d291af171ef68a955a693f2e4ff9d86b056422fd731d909e2368953542ea272f5c5784bad2023dfbf1445ea480429bcdac2e951a80789690bea425db24b1fa41a9d662b8330f3595df77b199e16f6143f970e53895d218159ebdbadfc9a0a7e74ec30736490b10c5541fb0df34dc73612248b72533b4c99b93b4cfc543ca406b2e54d4e125c7678a53fcf24a45c300bd8afa9597947d590b3a2463b06b066bc5ac436f8c96a053ce8ff391d56b39e6c7750efa2cc93a8405fe2f27002381716b11c50a485f3b294ad23aa852e105b7deb87dd3b38edb58bb810e67a6a255a0d828795f06446ac8d0386c4e1293830c7ec5358cab14913ddc8d6c10156c89e96230d1144ac8514f39d362d9271dae26779370413e01ee0a78f08596d3f96df8878648fd843d3a981790fc12eb553338d85d80cc68d755b1f36087a0bb1853402c34110c2b287aa707977d26b7e42bcd46ad0e530b27bd21d621d2961ccde5042452667feea61e0ed49a83d130631a9fea963865f827f691477a56f6cb63a0a62e9c0c16f6c0a82af011921de9de29f8d40e24d08c4c2a9b1cdb8106c207612096a70618f92c056aa79dc8cf8994b032d55b86b01712210abc68929a82df1503644a35b40870a6dae630e899716ff7521ace91eaf0c8fd63f554f2e0505a2f8b6c44ea6621b09f8b78b1ae8cacb9e72b649ecc8b1146e5dd7738246439ef10460a2f83ff732c8b6ad20b1e913fcb163e06d2d28879eee2a41b651170e4fa52724272238b4276b912b39da6cb3e8cd5b0edf616e9ccb0a0d79f158f90326ab2bb61d7b22409f57ccc043dff2a9550b0440bd8ef3143a40a212ab8e9b24d073c9570ba3e3a4c195c88895278701cd4792c93e284c539c885dce2e5635060c640a516bf27097dc7d5cc28b3b27920ce048048715eaff8dcd1c399f284c71c0e5d96cea6bb8f262962a5c0961705c20a72fe07e95bff425141ebc181263b044e8842a58e60c166c4e20347ff41c1652c1e6687d79c48534ad82b4858dfdc03656368d9a397cc4db1c8d9ec18b729981e55f91aaf7583d7f319cfb46124b9f9f2ac66303ad1443e57d2590d14b1138077d25b71d440745d0cf5014be594935b0ef19bdfb097300292db51cfc19b0c34e512999179e20c92365e025cff8fa88c2fe1eb0fd2fb4c789435b4d442c84e2c726448d6032f493c373e28ccdfa8c0a557eb83891ad5fea9cc43a90a23b5b85c4575803d70ad9c8a315eed453294700b39c3cba8aafdb32ae124374649184e4f5a43ac7c24354f404b086e435a3b72d4f0a43e122ba9e3616f32d582025af7d4b07615919fa4874ac908994f5c69143ae79fa5544528bae93f20a5fcd73e7ebcff8aa243f263dec9b9a6655a4bf2966e9bc7bed19340a0d0a4c50460f3ccb662465ad90948aaf70a1062df26d052d1d5dafd9f622b6ff2bbbcd923a9f2faff050d94c2b91d12b5a80f69a776d560c572ea71efc2d9bfad6ee69880eae24530311a05e9362e82b767ba16b4f08dcc456dfb7fd183768fa8a1eb409bc8a07c7d0259084329b9339ba9524c711b16bcc27a02ff85870cbda464e11c0722f09ee07ad60c389596d6943949bdb4f3906e17b6b518bbe0e4dfc31c89ec02a510a9d2cae64191bc2fc8a4d4e102994965a99263cbe500d1c396ef8adcbdcfbb6567db6f9907053bf1ea2a2b2504f8ab436c81a9fafd2143ff3f6671751f7cc93a87e2293100834348d58c7e6bd2f897b94fcd17c8757b681394fdfa41947b66b51e0c0212f7c812983dd3ed1db1dd69afd5b54f65f65da2229934d2852b734fa2bd1d070d93e919bbfb33a8dadeef64ced4ce48629ef496aec30cac8efc71a0fcc7d7fa9793d876e3d32699c40ec8fb153b86ca2fefb0f6e8f2844432ecffb622806bafba11c8d5c4c3cd586c1bd9f51ee85285278e0e55ec411635b0ac160228ec782ca7c08f8fb217fbcc695694604500a9ba557c60175640f1e50cabf1d0bcfdf69ae9ab7d609699d5c2ea61929640e0bb91b11057471995e7bc07740f91223f31db8d1445d04727e4cccb28e854143e80b1aaabb50d03ca28afdfb2718803e1ed8cd683dbca11572f73779c76ec07aeba2e766f7330055a3ca0783ea726d4e92bd3ec5580f0b2426151b827a31cbcd34f11a3a1cc4f722c71ac14dc5bf623370cd734c8e93ea752b80a4dce4273e215b5031ebbfb466ac21fc0bb6e74e8e5bd10d1b983addee1384d101d24b15c0b71362eca0ca045e5e553726c1950f173a71f4d18fe1e1d8f27641b8a2941fdfd6dfdca27d6c8c680c0d19acd0afe16ec4bcdeeac8e07315d4bf21097cac32a9819e32464b8c54c08866d5a9c7ac4ad3e8179b008ae2469c76241d08642b4211d966f1d76e24b12ddbb44347a23044332886e567262c44f64e877fbc8b1046bbde9decd17141a230807ca6cbc7d647448b0a9fba7c7554321815d685b401d5045e241676846a342e73157c0e3980edd51448c76e6b29750d72eec852f9dafa5d422e6862deb756514962f1a119063109fcca1a794ff7414e2e3fbfac2dc02e4403ac44cf7501c187881b1594923c6451db3e3ea3a447f2f857d162ea3890630cf18b8dd7e68b3c9480340a10918651ec25610789e6c3445f87579971e4dbcb73f8bc65dbbc1e853aee010f2a991abfeb45beab7c0ff52d9d162f143191e886ed8034a36ed97a73f42bde511cd615a8e24402a0f2c3da40f675ebf021b84872a9a77cdbce15e27cd2a87361e252c98bfc7b61b32cda296e2a3951d1ed540f23da6bbf3edd934443a36f217cd8f14b29ca28774b5cf58036bbc9a3189eddccdf205a3c1227c36dcd1a03c301bc25b51b76fb34ab0e87421d83da059f9fafec4f5f688948d8362540421695dd568cbb4d59b05f7787b7c18dd31ddbe878db920d6e4745017b7dc839fa1399429a526b9c8ae57a6ad8c64b2d1afa60f1ea98027f08292708b42055107a55b801be8b869d715010393f688583beade2bdd78ad6e31042193891a0ea49aa1c787b402a7602e40bc72f21272d34de74781d38d2a630413223175e64ccf8585fabdc68600eed2dae1cbc3559817571563658eacbe4e85b3ab14ecb4aa402929c1080e790e7dc20910e7399237a4154a2efc002b96e28968583d0a12eb6a1782f418e38b792423ec75d4040e4e1afd1dc3abea3b765928e1b3b36493c223b8190d04b8693ce21f22da30cbd4fca269ea5a410a4f07a408c6cd76d45d12dbfb07404dcb3af8e78c40e980da5778e3071ecc5acca1fb6e7a059c93a36028827dbcd53a37f529be0ee64d5ade645af13aad8a900bd9db59d7896ddd373733b3c7a7bb63e63a3321f6af22fd12e10ca55c8c50328f2a7d3e3f040c9780b0bae76f2573f63c63f56bcee966ef09051a2d2c19376dcf34397acd375e3e2750d889337603a00193c4b2034e01cc91dc8ade099c66b7369181c343bbab94678264fd6367deeb4a54d7f835ecfe74160d625928acd3f601e42550608418b77303349ba08cc77e7c6287658c8d998b223307f3543efc275e306d95593803f00638c6ef52373dc6e5dd6715e3db3271c663bd5e0941dac38e0c4a08b81f4cb8e41d65682feecc9bed899ddd881f6a2ce95c149dd9b8062a578aec0f496cb3857171c7428af810ef65c513457924903dcdd4f6350b99e99cd111dab5204c9000a024574391647e473952fd9d0a98ca767868c24a55f99490c538b521fccaf44dbbf15b6609ea5a727ec1797b1069fdd569801a6374894c36d625a0ce82d09c632b8e14b1bab856d8292d73031647b67c4b3d8d06c6c8580c8ddc2e30d4e4548a6cc01bc53b1bad0c124f3849b90501402e32ead06aa8a7ef409d73133639fea2ac32916f943bd4a851742112bf5650ccf381da1ffb2496dd5eaf8844203cd9899452447013254e2275340be6614a7555685c71412fddb8c61e33c0497705b265296d970e5b9339e45ea620f21c36907d33672643fb68700fb8b1029ae1777d59e4a234f7cde78a18c155ae123126136448e7d478304713dc31ab5ddc1aab9433ce4458ded9911b0b19f153ebdfd2a447edff472db941295c49d97930cb5127db5e22aac49a6e344f83034b235ffae0ee0702dff76df3f3a0f3214751d1f0fbed7a751069135e9512160e022b905f4b725b2b0abe3c360145e1eb1d770a49e0b3509a23be8a2a71bb994b2deefa5f23742b5b15d31522bf4b04ce4a517ef4a2f287991c8463984defc86df7f36dd9c432ffad4af6559b710a57cb9b440b68a33d4e6e8427055b41899e3cd477797667a44ecd7ea9ae9a9139add1359ea06f487f34c8f6c12a47b58251911c0aa1145ebbb656150d83af5993cb5ab3540d769c38f8464690a843f917d86f4f603d54faa68bdd34b6a4d124d5ee9e8c9b9565e003abf7523587d0f46515a077762f820e8d5d7170a51e2ef211413bb71be8ef3e843332167a4556d76690c98d5a51bce7af19b4a84141c6fb48305ab2f23eab20a51c8201005bbdd93cb3a1c1d66c9e22f3e45a205d4b0f9d453effc65629f51c0f26e3d5449efe22cdf4900a3612114d07352db7b170b31e6a9a46f1fb4041bc2fb174c2abc48df4c190de40d67fc6e1b238d914de7336166098398dc96596564ae7c39011d5c501ecd25964b5a5a98432abae801cfb08db03bdeb270536084ee96919692c8907e790a29ba7e6f3054750af3c6dd415010355f3ff7ca489b32132b54a8e5837d25c690d2f4047a4b039f103db98de9f2b5470117585e629df3ecc101eb20bf6b2899970f9f4048315aea148aeb62b568ce4c8ba77c1c7506e79359a43b82e5c5fef2f5036b4b537a0ddb28cfe3c22e07a966256ea2f2f28e37ad1d765905db49d6610c676323380b090da9e4a2de95b88a661d8f8e7650d9cf4e7d19083cec1547435eaf7f26909b0bdcdd19565e70432df944740d954fe16d75c5bccfcd8ae0c0552b3b5d7aa461f1021dd05830f5d60a829fb01b538f8535bcb06db1c3ff274811ded5d0fcfc1c30dfc1c253f341bc7a085c6510c961166dffed70b1f7edd247e05d8c195bb8287c5391a52a0f0c62c28c6e1a0ddfda3bc4167d3d50e3d950c35e79bf859463376eac5770a99f5a02c95c122c8f8a5cfddbf2cc7a7d0b30098b06bc4a78189b123aab2863b920c1cb6f5e03a955205079605b23785707a2f8f2cae3189badc9d7991a21335ed16ad88e86ab3fc02fba5557d373e3c667e7ca3c35fb001f574f7f08f51829e9a9606ee9bebe1626aa314e9c69fa7d771f1c232c1d10f1b50bdc600976dd906297ac005e4f0d8532cec6f1cbac96f861c0ed6fe799922f582c4baf396d455907ce1574193c7419bc536b9b741dea02937d9595e4e1d1bd335eea7b22b2e61f0f2c485ecf909f810efd3731472343d2a624c9140a073a62c48b51c09310cb1e9328a507072f4442f917dd8e1b2d51d282f3e21a0279a24d1a4425e82163c8aec177cad63f4b14913e3b67babaff56966e50a4892a24060ca015e2973e00415ff609f7416fd67ebf427a6e9637ceb0c0cb14f60dec1d19484d96f2b2505f9a220bc0d483da0f4cc0673556eb6514f70da1c448c41f800eb1f5a4ae7c20c6c1b96892c8680386b8c33f938164815a0cdaa2a48143608862472de63b4751b33c31168f6a2c5a63fb3d56937e412012bf1e1ca59dcad956123ce3559321e4c683c1ea0c3417a3fe1ac005c33b4329cda777242820ce71de2d84fce0881cd4108588ee29d9ca9b18b990de8e8ceb3124d62866c7f70874d67175ba66b84dbcf48a7fb648e17b60966cad953aacce33eea5b9b191e6225ade7a7cad51440e961f283feb71b9161e2222024d9365f0413059220bf9e0462b29ac49162de368ad307070f643d129829a0ebc0c6eb8973f988bc2e4f46502b42ad6a3b5d5bc8df430b4704302d21577b220d506499c67a350d473da4893c8235b446aa0b3a359ab46b249d02afb0d82b2486b533d481c17b1ee5d4b9513367ebf8a99c73ac708eced757d2f2f66e7968237bbfc7099a31667143aeef884d103802c6f72c9b00a21bf345acff82458e7b77f6198b34bf13cae210c820dbc360459e6bbb027c08a9f76cc968804f747f19ac6bafcead3c7d641b4241d081a47d7a1222f1b0b3824aa31b490cdd5b5021be7075485d9cb51cd66e51336de901ce1af602361e8d708358935d599ac313a3b6b40126b2c0d4d6308253336b898a5a47091c1e41407bcfda61931252f3104462e9cf2a31a9c44148d2b5b1c495823418b01b7b50a72bc62eac1a1079fc94ba40559fdacf5ad50c515573339ad48fdd9a4d4e5366a7da3d6510e5570132ae61b6f8f22623bcf57d54b1dd30cc4c9c242c01a0e223fc7db34145fb93556effed7068f0de880cc4bd6e006e95851a0ebba63cafc2872e86abc7cf79922a8b4e16b47b40da727fa261ad09f85fd6173709dbfda40985265ec82b2bb20cbf6eb52dc382fad744456df046d0783f5f873481f6d4950583bdf970e765956f3b88490641d104a66fa81fe86b76cfa4771aaf67505271f9fdbd923866dfe0d9e65f83d538c6cb3a8335fa39d12d216c0eb0bf8c9b07b3e6bca68201a7774a0385554144bba495045a3c58015fb94ccbd6d7903c35443c8333d69695e5cd525f3b2ea00a9d325819e1324fe2900dc9f89305869643904c591ae9023f5d6393c5076a8d2394b35b342493410881b4ca02e34180c2333b0537ea7c7a9f95f2bcb161b6599fafdcb690c84f8d623fb1991eea022d2a78b2ae8f80882c03a985e4dcf55e51af04035887f9dab221c8849cf631ce3818f81aebd9a54356ee2284bce6a614f8415867d312997337e54fcebe093e1a02ff6662347c1c6e63e1960570eb543cb97855930f37fadca0be24de4fb988b954f403e9aff24249d81d21463aaa86ec48dfcab564243c19e6b36b8722e094bb27a1484aa37efbf9114266d039daf5a98349e18664c4c99fc70337e7fb06220076431e67e4bc6dcaf6cd540468b745adf5ce2d9f96ba5cedcdf8868ab8aaa2eb202111545ad10bdb20855225614adbae80aa22aa4224c3511955370a56243d6d51a38fb7a194290964a582ed902290b255a26ddb2044b125a2865b1a465a42c957a166c89164abc5ab534caba65d5d9551ad910213ff5f1d95a0a8c9c89b1bfe366e6876c21ae201fa8fad2bd2d98224c07b50781080ffe29cbcacc6ff7e4614c72e01890ca7a873ab9aaf0ab89eaebaaf0ebad12dd959176f3f5e0df4dcaa620948b04bcb7c65b41730e83c394cca63ba3a7ac96c5b65107104039517eabc2cbf8c529c9a2cd176e82dc857c3ff4b8ac53141bb1a9fc1427ff4a60d6f0fa573f0867d74d4a75626abf691305248caa8b0790172d7683d8a315e8721357d1e3a03ffac10191f4cf7f99e8207cf46a8b8a0eaf27a48ef7e70388d5f86c0f62fa878fe885198699aa7ec628c20f98852ae669f3fe82ed1e5d93c06c70309fae5710d3826861095a20b5d518181e17b5e43b4bd2914337d3212faf90110539a405a3fab62da204b5cf1229d4b371194c51569029372e08503d15f4fc4a93c0159a4404316eb7a95d145b510137728f453e89d4ca54ff5f45902ff87c6167cde15149babea6cabf950ddc98205a01fe10cbe812edd177e48b34b5703ffe7221c735fcf5c1c136f9c2f6f3bd8dcbcd037bc952beb8dfa87226f852be40147ccc88e56a4a69f22bcf53878d9a75d197f20551f3237d4b8eaa209fd3e26fad57448deee4219049f922cdc8e0a7a560a5b17c71ffcfd2679b1a7f90b7dc6f8541d4f2c39be35ce7e44fb0e2ec3ebce1089d877e5e51fd18aedb0db297d7d74762f736822585c2c08b2960720bf7762248b6749f2ee4f95609ee2bb0c2df4a055d24b050c06c9186b713b4fc0cd802758e0e703feda4ff75d140171adc0f6a387b0f94377f0a4afbee6786deaf83de4443a3ddaa6d03ba1689c9041666b6f2a2320d9d0f1a789f34d8dd2d71fdddbe84eb74bba5bcaecb2ffd5a879b0cbd5eb38b2bf5c5d88dc685da05d6d1c3e2d817fd6a40ea08167122f160ff8946dd9cd27afd0e2c7da6a714bb6b6cd75ad289f1fdb18125d23b7169c650b6b4d21fe865445fc120c27e47e186e68d01a4d5f17f3fa1377b7357bc10314c7ccb927135dc015290d159bf73761c7b0ad28c5eba1975bc6085ddd7b9e2fc758ea1142f3a583c894830c627402f4e39a29759d6bc54d426cabf990dd44b7edd0a28a80ebab84f797904201dc5ac914580c1a09b6f1f11332d81911eefc07258e0ca0c83f784c0d3cd7ab1cc16e858298759bc7837cfa43120227ba7122f09188f65d4b76857624f7022c647a81dfc6d351b403e05b7aca3f7f646719a937bf11f6d985662e51bc22b7da00c5e985fb0291dd6dc39abd3be1adf47aa54f12147549a4c6e3068e1c0090e47a6d8ec41ec17f113bd976a24f2d647c076d09f68815c42e3484f68d2b5ab65a73e4ef6bee198e634176d9b28733c1272d4a740178ed0d232207af4e1d2f93a7ea4a9f12d3803c2fe062d79d83d5211475e28d85cfe3cda11fb4eaafb124e871b319eff69b12d5aaf88c4d9bb6315632ca78a4575f2b48bba79beb6b13e291e63fba482849c50b00544afae023313864e62fc4ea908d9583b7908f163e54bd19e0f4fa7a14cb3e9a2d18b7961c11c01f3a25ff929cfa7212ceb11364e3f0acabc063b58976e7562831e089e30427674fa9ccbc867b7e133d28e2f134424c85ed867ecf2c7f3ff2cf90dabeda65b55b76b07db752b6267e03eecd6462c33c4b8029fbf6215821a7abd4de2204f5a3eaa117a2ad7b1ea0e79831bc25778a5197f7942d5ff2671fca740f95013ceabe50b97f4538ab6cc3bcdd053c3f1f3e9993accb273a54ce6fc170d97b84573035e69cd12e4734a7a52b15675eac1508da21e041a8cd5bd24bed9ee9e15dc94d0817d6491e4fbc6fa5c903845ddfdddc2f011a3e52b15c67cbe464691d6af13bc28f9f8250300666e68098ad8eb15aa7d511750532cde422918b3512e172b019bcc0a43bfb2c9b33c051a3bddc21b09f0e5ea3fc9f4d2de8c9f6902c2b85001d13c48fbefcdb5e1a6b1143c11fe8e122e7a1a4aaa57af09fdb336157c6e2309e8133684df8d12349d6578d3dd2fc52ab190a0a1dac99939ed1134d2249d73993903f64d7310271893b2c226eecee57e3f62549464ed5aa5071089cc924d12dab0d69e85b4adcfc0a49ce2b592de8e15fc878adc01ca3d68687398e4423a1a38386cd6837dcbc019eaa8ce61e600487f5af55186b8c8fa00111500b400d24600a502429912e9f32cb402c35c40e5b5f2c5feea08602a70fce931ec6106cfe334349d62848bc87248016a98fedae2a2b0214c53ac16340a30da41b1caa385aacd499ece836ceb7debe8b00936f89a148edb2c31640e7c63d59098b88dadfc9203614eda59189451e31641016e5871c39b737d0c03b62ac2df2261e6f9e1c798f0e5904126b9b3c4924d54f483bd195c65a2255c5deb4bd741a6b7332fe1c3de73fb8ea8b94080a8d665a2a4b38814df9f1e2f456916adf7b0358463f778c06f3d658b0ddc2bbafe40a681766c0f2a7fbae695f30ef2dd3edcdcb9bc8271865ff5f38bede45aa47998279ca619a5010a09250ffa1b50a30fca8c4c1cb4bb60beb325c68a604839f847387d3b4a0099b129fc7c9b8d87291703cfa0c196c41f6be95cfc9278558d5542e80cded0c9912f236837061faf936ed9a98c7ca772e53a109697e68993bea9df3cab5c834120bff104713cfc40925eacca76d1a08ff0bdcc7e9f0997961a3e07f994252296df7d140db8ec92fdbb0d83e6cbea5c638d2558ffad0e246354c7477f208f72f5406d51f55e90f5a6cc8aa8e46dcb030a93b3036beddd7da38b3f4b95f0ab625a351057bbcaadd20af0e10d5804426cda732971ac7a27cacaef8863f9d45c50ff9c7eb3243677480954a8abb48f2b5754fdb8950276c3f866bb4b014844c389b55165146e34425e822b99fbfe22c7701db0a0b39efce81ef768c404614a2436eee8fe0a5c7e923e1bdfdfbfc058013325ac5ef226a29e90095ee3e5705a7dda75aba1152ecb0668588a848a03d60e83ede1edf660b2b9d5ae2415d5e1c038b76d41dfd670ba8bf82903f0d058894d0f22a7a6a49d090bb2f7e17b42fff0f63fccbd1423f14c454faaf3056a5cd1edc6747525285f8ffd6b79e008bbe0d3cea8d6e49fdd247e3fb62212fca51d34aabe15c3f2591adbe527b4b7c4f09763c5adc4513ae60bc1c81ad62c4945102b3516984356f0d9865713f20a6b40e4b95714d05fbcc8a7ff9c0ebe197503545fd13cb153d722682392d3c6adb898899b27b5b7fb48c486df23768d69f8f916b709b48045e0b667261def336e396e93fa79bd44e6c0360a7f688111d4ed98cc25d639dc68045da7f72e14fb81fbbe73b725e61e9304ee3b1b364f3c88c848ee29bb67cda3f46004cb32f2751d506290301e6495b33e6f2031f2c36625a6635f776304b99327b36c94db1219dd89c0103988582d14acdbb74419a83bc978e9c19e3aa27d734ae54371e3b2f10658a2cfdd85824a24bb45d36e8001faaabf68d3e684dc1d6d2f94f0b5172a6e5e639ebd508cc990f3c789ca848f8718a961479fea8c92dd6602014f76841ad81160180c3430f3430d62611c46a388de627a918c7e34beda7358b924fe8296b9d56c1417642b833ab167a6b64e7782ea0a27af91c5333be03fca0e0173948aa3bce213271388908aaa2f3d4cd75e189a89821f15d80be2c0d9d3cd78404980eea0ee43ea80785f405c71204bf131975a305c247e4edfe23301baadcbb18e032d525d9d6f83756052675d7f84e81facbd2dc09076811d2ba09d9c7b52c89e3076aa98d5e8ee57da1488eded107d2c4c79760875efb7a2bdf57400da9b40f5b04aa29c72f0f5dfe65fdfc9fdc0459b6e96271b0f4a7a9ba81f79ee655266b99205c75c9d5f08ab54128264bb0f82f638b6409095b1d51448f964c566928a350cd4fad14c5753020c567ca22aafc46f3d23934e3bb66a89b35fb83c7d6d0f8b7dd4755a05817560ed248657a6e65a46ed58ff99dbc54e689e5f6cc4a53f2da44973557628210f44c2197fa80ff472e1009573bcd7b117498c5daf3e6fe77fc21921038869d9619841f51cff8fbdd897b541d9824a11425a6b9182624403f5151ab5583821e763c9ed21896aed18e0133bef87ac8b5b81182d5b2ec51e19f0a7cf22283db6d3668e0005d5b62c77ca9a8205cb5be9160a391de6e71d79f94e3ec978522c9139eed23b164c4633980b40bade10479cf8676ff79ade2be3536a9466a6bf56a3a524af4f8a402bfb8dd7a677ecdd84643bdd8723c51de7a916f57ce25c59cddb91a61b36334060b8e513c619a03746801ce3433dbadb045ca64aab542300bcb727e0291c25f3031e80ee79ef74ce0bc1389f7b7bbbe7199e83281979eb2330c11d25fecc71d4c2a3235083a356952f9030f084bbe7c1fb19d19ac3517052c30378bc95a819b8e7d5852e3a7b4e10f02483acfa9dcc531d45f837c43defe8f77aa0b59f87063c87a313a1349389ed9f3f9dd772d1bf36952809a8055170b3597b189201cd1f6908b8067805e8d5d6baa7c02bd77e9721f2366f5e6f0e83b2a4c7fadba5a5f54ec811e7730ff47eac670837aff8a278eac0d3168223d246ef77150624730553665a32f04ab525082ca99b70b66fa7dc785b6864deeb1fbf1e1a6e24201d68748f65cf6f32896a3f38cf008c859e1ab880949804015511f1162128da001c077ceada219beaaf6d0731461bfa95f40759965b4be660eac37cc5c14c8c96cf8fd6ff9fe916561dc1f3615963003a769a99ba4d5a2f3c097d2014ad3a81cfc30299ec4ca20ee99a3468e23c1191d366549992163dc73b19df5ea61492d921352dc6cfd31952242c308d565c0377fc493fced90c81903c6c46a1987f4521243e88f9874e40b61b205630aa4cb6682e994eaa7bb126d0ff4ea57f6bdfff4ef5e804703b8bd895a119cf136c0f5f0da73215ec2c4868ff86c32bbc81c84c70429d5039eec403c08bd106b2bea84e6fa90a349052bfa3c05b7e52d5d0b305be2c601b0d48915c3656b6cccc8044635dfbbe5c2071a362416ba1193562202a8e68786bd5241b7ef1c48855f217b592d98c7d1309d09444c241b25012cd8e237feef71a9164a064544e3f01f964c814cb871ebb73214428b382542382b6f7dfb1747a3d2cd0589a49d8088d026ef4a2a2688ba12d3d1371a6d9ba5e20f27337c018f6c5478007b1993bafe1938d952c4f8fd16bb31fa2521773dcace24913f21947b810950d7f8f30aa7695642907c39ff65d7a57946622e3ca6085aaf4243eff56a6872b1f648793d6ab07f476fe8810473865134dce8f4272d401a524101a6e9bcd8a7633ac1a3cb7ae3cadba2c27555d125e5722f30d592bbd13ddae25f2215c0a726e78d91254489f035659bfe3f465be402645e90d1e1867a719686fb8f1529b93509f3d7f90f650067c6817bb13edd9a6483ac1ce7377d67b70cf6b4c8177f45056cf218caf7b5e0f12aef8c8a163af7c4064f028e6039d1fce910cbe9049a8fca557daac28e4ae974918cb29b2ab5ae8b8f26a2d42abe865126ca220b1dee7f3d12ea3342e413a8cb6153b8e183c3cbb24703aa0b946dd6349a3ad5e90ea1e04c4ae1f83268e2c3df54f902591001b3e77c5fd56e7bb881db68025a46017ceaf9dfa14f67067618b43c4fa0a71926a93cbcd7cbcf0d198837edad214e44fea1c622b512464e75ced8d5ea5f67512a6a7f1713c335522409c9532cd8e7e33134cb8a96430b0e8268e30af871087c40cfc5124f5fdeb89cdc66e0868868a2764e214ccee63a028c65710958527cd6ddeac22bb0c4eda46749a378f75c142964fb68fa158ec051acb4a22d67bbe4ffe8f8a96887cf2e32c17dd42d675ccb61dae399de15c7fb843c6a103e98d3070a69fdaf7f3fc8b5c215e3cded13b76e06b2f5d667fd484d630901d4018c7fdca61f3d77942fe00523023b8ba92c2a9c1343e5570c18abc46cd1edd35db4f06a06604b8987a3200d309bb059442ff86587204a8d07b8e3e2af2af8beae4a5f839550ffdd89a71864f1390d6894825af5d6aa4be52417ea4bf427a201a52b387e128d28119370bbb7f0fbb7b236c9bbb2a91c9961489ce673949ec252f6d05cee65ef4fbfa07e30a75b680896abd435f699365e094d62e910ec9a48eff198ea73f698fe49f1a65d71bcd9c90ccc7439800b3e06d58e1f3a7e0b415f39f050f22787af155dd25c49cb583007d6de8f13543ac99d8f1d71bd7c9a4b898c14b05c0931e932d75faf47ae0944489d162606e93e020a8c11f3709b59c955609af8230af3c6cc21d06e486f1708ecb1c244cc8dec33bdd8bbe25f415f94dd84e99581f0a74b6ab4d6a517960979dcd040f01ff6401f259c2e4931b7312fc2680774b1fb71d35b5e747cbc56e6ff16dcab4a618e74ebf7cbd697c68d2f52a4bf13ac0191258432005f3ba4b4aedd5f6c00bba58ddc386a2e524ceaed726d98d63ca587a68402631615052f16484357a3cb68106cf7758544e11eeb4e0eeca346587a3acada02e7c50e06e0569c2761c9095ac6a10f0e7cef03314082087454256a4b9eee28aafbdce9c730f8b0bd5076c49a45e6e0ec86c302085bd40e1d9e5a955ae9355fb7b72859195b56e98cad4ce2a82b23d432defe13a68191b0982e8a46b9ddb97893814503d8c6fb896be68df3d57fd6585e53e1de0c63ed85d0c48af89575d68fcf4360b617917bd72eadcde755db93f400702bab1cb715fbb90abfa9b51ed9ada586fb4fcef33d727479aaca437fb8a77e5a00c6d5396c817226c7151d25f70a0f6fb7fe98632eb33ec135769ac7a0fb594901fe72cea0ffa8b604812c554d3f0157b0ae4c01e40fe82354702f2cade9865ec6e5f9e8b9a08cfac6967a24931a194e82455781999cde1ff4e41884881c1682b67d117eadc41b155715be6da1800066f30fdb6da4a3bd85ad3b03d7d2c13a32ef19f540c893045fdba5a5bc44b55a1a38a156132bc1dc20751b7a0b2cd5dd94448690bab39d71c56b3a4bb492c8355f5e2a57c1e962b0e133d2ab29ecc0ccf3e9d760e8882ea2ce7981dec8b9d50b7ed0f3cf45699a01978ec18682004bd1b51e11a9ac2f34ec8a9de5a991c10d388bd023885d4259d969011db8a352a2766ea07fd272fdfc2e72e8001eb026eb8dbfc42971925e074e26e6385b7e1ce9dc2864cb7348da204e70da1e2c94b4141bb4a211a12f02b44fc4f0d0fb40e650a9ab38d133d71295a9996c33e03c20ba4c7372b19e8029f4b25f0af54c8b80162118e2db5140b79dee4f859d940d7e849dc5ad8e9bfb40a47faf567c318443ab999a096c879e5f594327f6f5b499300930e9d233f82bda2f89bddf3ea5a5d5203290a8abae3e2fc02bf94a60eccdfa803f8dcad4cf0eac8eca70740e7fe4c509245d22d87591cd23121c84405c6eecfb47455d93af4c02fc7757f86106e489b735124474fdb67beaebb685ec4126685337e9437a9fc99e6562783f067d40af4d6436fc3a9a566e1a997488c20adbbd284fe014f80c8968f732f479c94443ba0e9bc1f4e5cb142c3754a835d5e6ba3dd54c1337d83d88a0f9938c96b64b50d9fa5b7b86081aa8b04a66a166dfdc946ab6ffcdd00dffba5300263b19e6e4133b8428a4472da6ca4150f822e4a157ac79233e4ded599b286f3559234e4d0e22f7efadb09426c78ab8a175afe1afde9884ec6da58cd86d6e9db8ae52a9a131e6df63fbe51351a0f19034a2adaec30fcf2650503c4b4c521970d87198b9ef5a04d0f2cdc637d17d1123c4fad2239dc281cfd3f2a0ccdd94431a810d0f80ccd6dfa3e8555a9917badacb5a020071fbd4598101fc23bd0597ba4fe13fa13f708fe241fc387971207f1ed4d2a0ea88f68a5f452f5518eb124ea08f73a002f0e878e06052cb6d1450442de903c9b5f28480bd5a1893f29344667c2c315bd26a22100cea7b434f3dd779876e2a3fb68d8041afd7d690e2ffad8464e953b01fa0b0250b1fb177c472fb50319dc32cc2f0149727071b17de60c7e0af5d8851c9d879d8de83af0a247e5fcfdf2e00a7e33cfc573d21affa851c2cd7d5291d56c7a1aa91562fdf6dfb750932b7448cd5a777729797cc07670784789569a84cd861d387381cab660774543c2e97d546029142b7c6bc39ed6e8352fd8edeb8cf8bce91582f75fd6729ab5d841b44f029c5cf25ad71038299106942e87bf752d97caa8a194ae89b56b28ec4aa400a5dbe58f5dcbb5326b28a96b62ef1a2a5b6baf511f9da9fc8c20cdbb66c6eb63f0945d776037e5670ff82599bc5c8eaac8533d5eab5ea90fe4ae76ce7c2cbc089eb698adddb6f000065e29784d0c1d71d0a3e68d690f10f2d9f21a9dc6b655bbce8bdf84be6bebd593e4daaf596714ddfb27b030d3f7911f4694379f79b1dda7f6327e9f1e4bd6f3479afd8ba690ab23106e17a282daf556ee1e12dde2934d13146e4e29924e086bf32ef9c88a846d75e1562ab9fb71a9601222e0271b7fd3cd4e73e61c5f4e680493886bf873aee90f0acf2a0c3a6492ea0ddfeccffd0b76c4924b5bbbded6407d37a28f00901482e5d8181d9a128204ccbb2fab41be7168486d798ee6dc46d78039a6c192bf71e21670a6e4ccd3aaa979816245a8f3744f3938cd2bd6e0d7bbe6fd964e1ee737cce11169f46f726b6f1f04b8df62dbd956f464faf4fe5279526fdd6e8347c9f258f22d40677c56b00f9890b75fffb73605237bab824a64e851fd41731f33922d0efffda0b7c95e814df6e88aebe8cc264710b28236dd69c81429dac2846ca993938d69d64cc7f5499726237bcaa9b0d4e41b9e1d0d81139432e1851d046b4aa69699515bce6af2d177eb2fae80c6f0efd74a9205b2603ea0625eec6d653bd20cabb216786bd6bca5c14d85711d773cbfe3699778652b039528a2c59767b13f9f056bf4ef11581ab991d2f15e464587e49c142ea4a0ea569d5ca01789bfe98925cd79600c505f97662708ad5908b2150448f28215dfa299f688aaa0c56c01160b86eb66b7f82113dba8b234bac1c9fb2ba109f223701b139099375e199a6de0cc5e956905ff31498a0966661ba98c6636386b8fd62a2f08c56491b1b9f2fea09ab8f8358a29c2ed72e4bc039ccc323738dbc57502030437e6b7bd85a8d44d44fde3381b21a9720f02f00a0835c2d655e71c06b039fa487ff765eeef8885e8ee767f9a5b0bff2dbfca3ec05469e9adfcc5ece7b480da20ef6143600754a7fc19567c1f1de50d552d0d65497c7d8a6f6c939e0516a827b28c7e8cf21471cd64429355d8c72d2c14fadfd5a57d9bc5f1f4b7b1397f09cae4bb11527f77fb8e28abfede38f515331025659038f3224ca6b43a1c09a5ee9c87979db64866b329dbfedaa9413f3094f8d36a176d4e3028fdc1e23c99e961bfbfa83e1354cab4f2141a4ec230ca6873610132cc37e6a7bdc5cce4e7383a2d5b35412a7923e65f2df613b141f937b515b2a72baffc94e4123f67fa63b7711f3a877d267bd4c1381dc48334cd11247c1a77f4a19e7c30d4981b042d70944c5b0d85eb4da5fe1e761c910e26be1baf4541536b4be1f82b29245ffd776b405598983ece9c5d4b8a115ab53a41222b249c2a070d84ced79eaec9734bfb30c5698c848ebe9b33d7d1c2b21dc5692299a32900cbb8d9d42f2df399f5ce028914c22728338fee36e78d730da9be6b06db5bceecba52735a6d7ed160d00cef1cbeb6249ecae6bc7e59ab5b974d5e8fcbd04404104c20b41f2104121206017e141edc00dbfb855de1c82b9bcf0963e4833e2ce3fb434f4bde7d5b496b38d013d625bacbe94b326e7fd1bfd1528dcd5248ae32ae4979dd2b8c97f04c4738972d6bf046f3dfdb4f006a780e3b5c4e86b7de6ab807a62982616f2cfc8f0f2e4bb16dcb3989406a41c8cbbf39fff13e10812d294f3a936ee31004f1020e3ed0d5f46484295bd04335ac9e011b08ad9401c428bb45b1979d3d18adcb4678e20f561d6a3ba09301610eb0697bc44138dd4c8f9d9e0df91be4e3044e0040bf0a0643523d4524d5662ea894fe9ccc0f9a2a7e4d12cfdbaced5854cae14c47e9a9ab48aade4f3c711baf36e6408e336775f326da8e0002c37c0a3ea5d066c4370e2155797dcdebd5df5d9106deceb16ffbf555d40e9e081c1109b2bd2ed3767330442b3e9e3ab0e473da3b23c555a2839a0482e662f501c277be3b14333e3eb319e2aca36bc6e16cf4db9d894d30950dae4fcd5f06a555a1dedf54ac723595788c2941867c7fd7c05c209dc3b76769f0fbe4ebeb2355307269a5c5274d5071fdf116d8e38191ecba018df863cc127e4b93fc1d27170ea313518449a98ee9d0e239b7926f8921e25f74e2c560507c27db738d38d253d5ab91cef5c8362d351e4cbea6668cd4b0f941927c0e391d1b3139283d0e4a152be7264f7834283734bec585506ea0741df52a9746ba91fbf063059fd3fa75cc17005f94ae67458ebca61e9671fd741c0105ba3109e17a548e204c8178a62e6dea67de1678d892b100f874cfce132e457ca31e2eb95cd41377873d0828bc4f01c9717440aba7ba1d7b84a19648270395ce77aa6b8c3173ec8f15ff10ddd2912763b8691e5e9b3c39ba90f2434c1f8dcf3df4e06767a3eebb983e6619e54777a60b95d7a5cf2d8d1cd41b79d3678237d1f9c07649437b616cdd365fd62c1d1e1104a32feaab490f42ec234a16eb342af04d6b5ffe8d52b5a02922edd55423f79e31f0c136980e079a2dc8425c24c84e24e7f0f3281cb59f4d212a5be7338e7e1dc2b0e422e519c5f49ec46d82a62b22a413fe75abf48baea241a96e0c8890978e586c11bce85ae44db78c6b78a6290667a515a08285c5cc9c922f1b2bd1e4c836071fac897ff4ca6d55ca447f1c453fd9267214bf77f5a7583b9d38f6a3273818a8c2e492717035cd55292dfb70d139fb9f5c83b41cf4900f11d4171dd34a82a379d04d8d355adbd1523a50408b0a0cb580d8be01647ba3f1f64164b6d0a181ea5bbcb57361c3301de96b96397a2c2c30ac1e41109ee2dbcce7c0c03c09f82fcf44b57b44c439ced851acfa9598bfc1fa9abc5e5c74bab82730eb3e8f69c15399c88a8c541639f09c13910e5fba36a1ba8bcf089587066a9d3653e8859c85c9845162d7b3cf6876bd808027369111928dd22de4592e230da4b8ce8d4624eb6d043fa19d2c91da92c442c6f232352e490e423de5b379c2ce7cc22ac5cf93d6991ec9bd995a3900f78766ebd9301acf84296d15b278e41465b4174f79d3e96fc3315353715ae1924105a597c389664750f52e98ca9a62d3d94e0017ce36c233632fcb73a57ecab49176e9684568b0b4139d251676924228db7a4559605e7ad83cff495583c2dd360b7284d84644b0cd81bd1ddd8d9064a9fd70746e782e730d8c86adab04aa5ed6f6085c282f88640bc5b429f21000371fa336fff832112eba4f0d47206009e8ac51c626c6c6f518e137e4650ffea8e2ab29f32503f52f185c0e9887b6b7aedaeb68f0b1113bb5eb22fef30d7cf714d78ec601e94aa82498e2b1a6a0f0e22da6503c70896011e26e446619c05e3946bd4c16d14d57932dd105fe02f98d06c4cc4ae858acbf42350c69ce26229d58e3de0ee9ca69d22cd0a0e54fa6ca3fff1a3fb6484798e2f3458a12b78720fde346748b6e931d76e2320b1c83f5b85b61fd5b3a9bc2c97868f72b9e2945b2862aa95feaba75cf2f51857982e9ef5fbc86699a76583042f93d5d5d7a393eef5f458b06ab418f77760831cf8c9767eb8ce7b0648096e8c2c4eaed8e516714014a3581909be9133053ce0087860f87b2ff88686124002351fa2f4273b76d51ea990a58aceb3ca66f77bab7eab87c7ec85ebf54c561340a3532406fd91327c2854a8ed1048a94636c41c93c154c3a585f92a91ec2d4140bb61eda97a2663632e38547a372a79b8e0888c96e3e425998d9663b4db0d31807844d16c394a9e8a9daf1baa583a862400ff84c24861f41027a39075c6dbb90300523e9e3a1a237eee383db8b263adeea0e2ab0c1fcea39583d86f754c8a0476cf9899ebcb8086ec0c403e5cbc513427c52cfecb146effdb2836205d72893e1d52c0f254f000598a8f33b0a28e80892f80431ee239e2a3d296d55f4076511e838b01eca17e73bda47ea761b8e04d03466c609a5a4b1d23a9b07800aeaf4bb8b0d2c74e828423eb8a7d1a553047e5906eaa99e55e6efe89ec6007e899c711e3dd7a727c354d76225e4dd83abb9c76902cce71a26565874378fbe411300489b0b134b314df7c314885de89f71b9867c497e149f530a6e552d43d11f40acae6baa6cb04131c004ae3cd13c42822df48ad3a28c9e6100af49fc9ae715662eff6e11dc1e183da76bd9ec0190ec5818885ef42cff5dc02459a957541c558e96d4c0507c97a4ba121e7c4f980b41559bbc07a8bd89e7f62e89fce559ae03fab04a6864e3bba422c602cfeb479a90e359765d13c4c37a9e08f306cc128de9300279e589dbda1d0bfc5024db15d70ee399d23191e4dbf12e35e660a4577b009017b4f8a0ef18c883ebf500f4908c49aaf28241f17e79480f40df78a79b0720ac014d8b4b04d403002f38fc3c76d1b84fc7e209305e6e257e7a00d80b76cc3ce6b4ae2ea86510ebffc3171bf3b49556770ae3794b4dd15b7f550ccde5615eb5a588566360e4c81acb1ccb751645e06d30d8cbc35cfd8222001561576f996e442a1a88931584d462cc7ff6c0a2b334e6e221e32232dcc285781aa9cc403d6c89573d5f42d7d8a841ea00f49fb8b40c42e880dcbc0ec981f5d800f047d9a4056f21f8e005f05373e78ad424a8baf09cc2b7cfdc34c5138ea580f5fa0d628aba1e5c009b1a075762d8453b6031050edeab0e6828ec61329ae033b81bba36f208225206f31fc3e100c84668c54649a4c7628ca9f010692f3d6363b1ddd87088899b218072697ad7dbfb8408f058c3478c73b288005b509cbc2143d9dd802bba787e15d6e3567d9251ca25d457cd2f2ef5622fbfbc60764d3fd9271384e8d43646675ac633bed94d0c9fb77090d9b0d429fc905118d4b1e440938b102714905d476cb78cdbd23d8745e746749d4834acf218c16b42cab5129eef3734570d35f73760308c2bfdc5fa7ecd3b187614c57d751b583092ccef0737a5300393fcabd375bf9c6b040bca8f39d07ae260ab9a87394097ea9bfab342069b735f0016b6aa72d3717c934cea3ae03056730b0ffe7441572a599e2c2c0823df53876168539860fced00049e60bbb65128b71e541a8e30fddb06468bf46ef0be1a572ff9c4b4d8b5dc3afed3af4286fe92d2c18fe20605328e0f4fb7337395348ee30f62ce53ea0a33c9a037bef66e65ab80811e2a62119f8ba239cccd615af4799ad9562888b9bc9e942e4a5f187b268be660690e013677746c18049a3e13a35a309a554d07b941e8bd21df8c6377325e617346ddebd0473acf72e4469eabeb344a0bdc3a2ca445c09957b0f538f05100240ce1004c4390c3b0e2c11c86c219cf8a094c74143fdb8ba8bcde8f2e892baded2df7965b4a29934c01440ae809f509403f463cc76b9c26497cb978706e820892030e312f0dd30ff4632467d64c9a242f178fc461b2240848c7880ff11aa224485c0dd3df8a384204a1430e0dd36f237e3eb7fb9bad89d3848950d0111d6923872821ea4152c45bce6a3224b473241289363ef490001bc0963fd900c76fd22177b32165d7dc1b5d4ae076043de6a5472ae720c1197d34c3161eb1a56b74083818a510ae1b9193e53fc96628151e9fe5e4228dd4adc8f2db73d5400656c8a97d6a653fb39f2508cad94fcacd4c9bddd09823c10f511996a39083524788d658a9436f867c456b64ca7960d97ef4a646ae280ebda136d927773e7984c69b486fe4a4377276a1d459a275e3466f5c85e3aaf932ed239bd4ab459815ee290638bbd6b4f5aadb763cbda0bbbbbb4f36c0dd353e2b709d9ad066706a42a30115a24d5a482ad1109d208c098ecb26a93102942d6919cffea72a905edd137c64a024b71072fbc82027dfd30b707cbb040ee3d0500bc7a01c3f9c39ac4cb03c5d7c802b93daa43271150d4d398c4339ac4c8064ca7fa31f905cc5978c42d9bf850cf0eca1ec6fc150440888a0b92fefcb4b048e2fb1ed668f42b3c2bd7cfb2bdce7037cc71edb30ec62d9f760bb7daa3d86611ae51420ffae681fbf7b481f60d65efbc0062266ed7bc1c17e2d5d8a806b09e6b700825d991f7f9b367cc9f1c196a1374a72fc76cd163bc021aa68663ecb5bcf934edb8207f84f57c0e1ccc1c1188410b532676cdc68192031cb2f86c5734b3a3dd085ede3f69109446cf2f6b108eccd7d98e556711902a68f12021c7eae2ba38fef03ccf1fe4beefbd7be6fdbb13898fd7ca97daddf02b6ccfd9a6a1920b128be02e26f7785eb117ffb56eee703ccf7ef075e2062bedf0b0e0e7eb35d8a80e94fac1ef161c111fbf6552df6fb115b4ca2d001cbbb420a9612aaf88144a1dc7d73cfe420f5f77944a3e26fd8628bc29de95ba795da9a5afb0bdbd58d7b7a9bfd6a95544cacb11d723736e7fc2d7a262f08c56aa4af1bff46af87cca20ca110267872ffb5c01432d02403f103f7186374018c4221391992fe5142f6221465dfd15fc0425b8127fb4741892ac660851ff49091ec4ee8287ad04950423b010a5588a17b581fc841a4101f545180281440049462a3b0071196e8244451238aec5fc8fedf1460c800f4428b21a2e8520023060d05eb0339889bb27fe1058266cc28f421081d0a545564bf4ab295c2a5360a33008451a126c183ae60070195886d42f6778e872c32e59c53ca39a59473c6284661963cc88e0092ab874cf6ef85c888c5e0b250261d9ab3010437b8dd12ca56ae7fad033950bd1f516db7e844ab02d060b50d7483dcdfc3c40d25727f4c810e10f81d5c957df7fd3cc8d50c2fbe617cfff7479b96297d7f2c41e3387d7f3c41ab4ceff252034acaa3381e64aaaab8f8fefefe7fbfd7f33e7a9ee7cd78dbdf90ab206e729a0913263739dee679a79aeb9dbcca7b2ffe8567ffda7f138ae562d76ed7dbbe39cd73780edfb66dfbe672b8e566b6f7fe865cc51d21c9835c452299aa376e44212122a2ed4f45e08c6a99307a9ee71b37cff3fcc3f6590a0af6fd70379bcdf33c6a52cc176fd7f3e679be27dbd52e6733b2b1d9b6cea6b499b818bf79318fba185eca3b3783b2f257e5c5b7a71d7159b6eba55cde721b4fd5771751884261dcad9dfa396822f711cdc5d0627cdf1131bc3ec9ed930311e4185e6798ffbcce563b8223030d526e1f1c70216f334a47e09adb0707444062ea3f8e87672fe58313530e8ee4cd6b0ff4623671f73bed9880c40cfeb5db0bef4eedb483795170a0a3a160daa6e2dda0134f0a96b71d3705e56e27de75b94e4fa0badc3e39c041d9eef57c090de3ad18a81800f862005199b97d9af84009c68b3a5c3c1792a9fa2f5e1154c62d20ea80f9db621b6d9c776d64fdde060806d7d36cb0cd9bd7397bef3e8d6f59a1f197b4cdf062669101cb880312f38cbf7893e1c5ecc20577bf1311d8fe06246619f2030d535fd238c86a982d6017fa13200f0a6cdf6472d06b1ccc34cff30c7a4dc3eb3cc3eb2cc3ebdce28538b78e185e68f3e7fd303514cf2b799e814e53e0d06b6a868c36cffbebd97fefb672e42a327149148a49abd66fe9baa18179225e87cbbfb83c11afe3e56f9f743e0a3d90bdf7b47ceac17b59b6271ec0f05ca8b4bdb0f94653fb28047a71c485e72c9e0f79fe6ae17912d3a682e5e67894b0cf81543c0ffa012ac573a29a1be5737864c2caf54d289f9f782720b464fd93e74c8835ea9ba8e7d2275972e542a117a150f64b69941c18cf859c00f55fbc7602849e24d777f17cc85375e68bb29d781ee460fdc8f188b9c80c9e3391a9fa9de74b1cac24cf479e2771c9950779aa7ef5a19e5cffa26cf77a1a12b87d90d0c9ed83835796f9a2b6eb71ef1c0f2f72b0c2009b1cac8fc2840cb08a12036cdf6d1cacefb97233be8486a98f710ed430f54f3ac0a1dbe45adf6d9c882905d532f70b85e4eb9d6870fbd480480ea512b9eee831642ab2f6d8820ed6bfde8b8335cbacdf4fc9f7c3321b65abc501b0c4555312f1944f205729c9fe84ec3f837c157578fb908027fbcf1f57f273420287d226fb9c14932c4cd839ad15b6e89a4b8a42e9923644aea4f1260efa4b96a4d9c9e1ecb1e971d04980dddf8b3a4796acac2ed860c88cdc3e4d0c91df5571092b4b6e6af76ea6abfd46295e7d11388c45f78b7c85996c9b83b188c6a28691119372f8b55a70a28bf42042117de4aa81f0cb9367e5a083ab482fe507c9de564986a8d3322c1df26d90ab963ab6bb6d1f1033dfff414d736be2031309d28acd8aad0ab80a2c5681755af82f57a59727130a0a75c218bc31f7c6fde85fee352ffe9dde8917c60c44cd618ebc7d416a1e8d3e878fbef39af64b4713a347228af973227f4e8c3c91e7db0f65a273ca497aea85416ade9efbe666eee7f0edd35879b284980015f510b95e3d9f4e2a9427f7d423fd26441e8d3c20921484e6d19346dc6c574d1be4f976447532a519e461a4c8365bfc0faa791f0b774b9e10584749fefc1cfe82c34f12c6971f99c855e981f290b4268fa60927e49247d3c47ca17cbd20335fd3fd5866de5a667b3aef634fbfb087987cb5d9afee69d70d940f631a28d30663e677af4aa63f859fa9c92b79148bb95acac403313a9aa89f7590fad8d864faf64319c12cac19a240821b1f2796e4f619d224d7c8ed73c490cc6a1952f32c38070d3b744f187be28f83de6a7991233baeea57c52ffec4d8e3a047240de32fe394919e4480c3f88a929563be733b0dc1617c05754f60cff1389423764f8ef185638c31f125c65eb275e2adce5bd85b3c9dea4cfa4224236ffd70deda5a7fbff0c66b5f1883f2d9ef957bd8a048a73a635ffd7ad8e048a750d9450a7c73fb3881853ce32205e672fb383194e5dfd933ca5198816ca5e738e8ad22dc8cb7ac121cc6577c7964cdcececa12a3e4e6f2c1551d847c9d2ce1f692244e0629653683a0930864a4942d658b9311fef4fb4a795f5e2977224fa6199594daeeb7dd51c77e4b22447294a110e7f17f56b618197238e77497534a293777776f28b894d2871f262b0311e20359e0fe4e22c0f1e54b77f7b7c35919882c03cb9d95a9c8617bb7381981a7bbd7a0094996f41832a461543d86d434d8d93ffa2ea3aa52c1892c7041fa174e841a42c3d447f11c4904eb3b6bf42367853847c9aa4c9adc47796fc9557475aabeb539fcdaadb9ce8bd79abe257332c6468cc1b7035f4af5060dd7243d470d18d62e3ba594d262ae391e2a59fbc805b9763d2cb70890e06cc33c1c72c01e0b1b48e668ed57f24a6ff2623e9d7c7772521a039098453e5dba953c0cbb1a146416b32cc69651f6b2f439e4c9d3fec4b39d371dbca71ea5cfeb7c7a7b3307afc6cd9c3ace7ea70fe0fbb7a4613a40c0c12ad443fb9b6d18d723fb80c4dcfd8ffbeda037048cdfe42a9458e343628dccf65d96c05052529242292508219860dc8eaec2c98ad3174e37b399c783830e56ecb330e6d29fd8932f8c29dc0eed5bf181bdf6d86b6f4b299be6854232f61a2ab4dfc99b5c75ff621593986313ab59b5315a1ba38c910772e90bed87fe03fbced86772ebaaccb9192091c78e2c1c91bdc7411712fcb92bee4021553c9a264227421277228f0ca34df6cdcd38d12afb8ec4c11a9d6830eab88afba48d83b565249186a95fff85aa3639b9b32c4183f54bd0d1f582ab3371267245d3448d3aea3babbed37cdc892a174204eb5787a26b54ef89d2c6ebbf50a85a8d90eb879248f6798d7496d348815d898350348cbb1a46497d57e24575490ea51259f4b6928338ae53f37706fb228e4c47c471bf432f77376310a81716026a21a18e91cdc4865ee980615105ad8a51050df6f45c2d08b98a3911a76550a81b44f3d20805fc9d5947c2997829e12988ee46f808da916818ff98e339a1d7788d86840fa9892d078df09a588406e5d06f806113f621767323bcc66b74b8261de3fbca03467f3f07ee37eee397c368f4dd90a91f72b8cf7d42801f033a4e70266bd7dd3e2c5375fbfbf1d37143d454c0e70ccbbc98f170b9d5568b655eccd7a3e6a3ec318f0707b10fb19fdf03f63c44e0a3f6634e1bbc0cfbca5197ce8386e46904fa8e74808010761c72a03f658caaa684661284c4b408f6db700364dfdf1185125fe419b97f145758a63c3ee6c5530d963123d119f38470d0232b6671c88d1bd8413f5121a7c7810685c414002151c4a90938c6c10d7041348c9b488024875189ec2877494516c241a731d29f588dd8b46d1b0842074c5a46b81e71f8f7cf68230ecf7587ccf24317218aac8dd1930dae1f2de64ffdadbf94d2bf10fb691d94fefdf019fbf9a18d2cbd624f6db598e7b55d33d32f067410e3e0d0868d1b3404e1a254baf3c601c61afe31ee51f982c37ef1c0248806ea61071ca20a0011f4f798087a4cf9fb8311074cd7f01fd44bfb8733647f27e01d22d00e4a9897f0a528e68462f12683b55dadf6cbd85bff96b7265caf4ac6f9502183045f408c082e41f83404f69fae8ad1b1090a1cbffe9c3373f3e89b90e41046e676a864ec23a792b18621c1b766021c76d00b0ec1181b5aa88828e0c91e734bc451df7f46c461dfffae80266beff9ce2de2a8df3f230eecfb6b5c6d7f3f1ce5fe8e28b94317b9654a0ec19c9243bbd51d271b6c3dab913de6c9ae913d2857b453d93b4bce3e3c403ee5ecc31bf20bb38f3fea63af7d3ad45740cc9a6705aedf0f00c8403a8b32641b7e397bec07206ad63e88cd400e90b52f438010afd1068c03811de04be655093e28c8711f14dcf8a0e00814b07c9200834f12496aad984f123c3e49fcb413994f1239d9a8638da22da4ec80524aa594f5db935fabacf24a1f524a29a5dca9b5d65a7790ed5eb8834b291dab95d269857ff7596bcb7e611fb1aeb5f667a5c0f46dbbec8bac354a2a6a6c6d08170acdf190dff56bfb12bf42a1bd3b7ba955ca1a735b8c35f9c08fd7e2640466b9357ba9272870f6db73dce6b508b5ab65da67adbd7bb556f758eb7d2c5eccab632d6759966557d65aeb77b76debc40d6f637f83967ff427a476873e9a0ab97af5a5e7a3c6145064e1812c3ffaf7a3878ec226d7cf021d854dd63a0a9bac65acd65a6bf5b05a299d4ff8d945a31bf8dcece4fa5eb32c609f9b9e2cffddab1e4a0131d78fc5b302c7f74fa25018d70fd77665203c03894da2f55c3dcf3e3fe6eac54c3f209d4516d95b245037562ba5dd326fbabbbbe7f423248131868c06cf9794524a2ba573c625dc16b4fe984f23ffa03c30a17d4c0e1b0b2fc40342d8b7dac7ca3e1a226074645f53d261432119fb9826ca6129e34093bd8df91063a23f9c5fe881fee61cd054d0d13d862c3f763e2530417fac8f1f9232fd4269ca0fe8286c74c44f887e944c99f25b6b336b75902969adfd9892528259dec8d2c672e104056edbdd3d29a5b4523aa7f4a8051c44ea3c7bfbeccc130459b0696ef656af7653fff8f5a391c6cc06bad70027dfdf65a5efdbd762d7cbfe5a778c89eeafdd300cfbe672b8cdb6eb611f39fb1a378359cc467333531c71e7e466a84d4fc66f3d6d44fa288f688e01ada3bb8fdd25b0c8ed8819ebbca803d7bc8e932f793444bc8e93afe675745f8c8354603bfac87d31369488d1b4eb65536099fb270846b2ec72ff046105f9fedd6c6c7e9025c780a8a3fbc81d91effb4f1058f97e8881cc7ddc0ecf31275eeb2885ed6a1d365a87362333acf3689ab895c32650d62f793478aafe492389395181c19800c474de0d2740fd8b9580953b5b1b63c32a814107b7ac480e5b09d7f1108e4d4f9862ff11a6dd38ed47df5bc7fb397c26abb19ef69666d9478efb8be5f0226ef4b2e7b229b0e7fee9c192cc6d315f997133d85b4f3b82ab1b663ded88bb6dd9bbb671f6479d750ec7b97d9060426e92677f73ccdecb23013d8842839d6fb6c5fee901155a8bdc28142273f6defbf75adbe260f6230fd45adedc6fdb666d6a72e7cb65f6b69ca51bd120288735465eb0d85a1e9b595b84eb313131f7b32ccb32ac067b268cd97030cbb26c26cbde7a59e6f95acfc614dc1238fbf0676cf677fb5bafb7725fbafb57ce7e272270f6d76ed6d36cf028b70f09965cfbd7da2318d16494fb08466c21636f4779fb6ec4d8c8b2cf621aa6fe4bb418a59b963de56ec0b2ec031d0c40c3d418f025cb90e4f000edc2426ed607d65570b1c734cded6631ed270a9bacb5d6bee6ad606fbf531153e0ce3383d16b7190be0705c63edc326642d1c7288ac59405ea54833bfb7ec73c54cb681faa613a09fdceb2c730eced63f6ff6ada176a206716abb4fef874557c67c5efb4e399b5acdb2d175bb9f57fb57e9de3616df4c9d91a6caadc0c661db43fb9e666acbd72f35adcb919d93285c77dfcbec505d8625ef615a348b8f2fd7b3dcc084418c9db637f6fde3ef01d6cc9bafe14d2bee68148e46417609483dea372dd68725883cedb0293ad74b35098d65aac5a4abb56138f17eac58602a514e5d4ab7fa5b518157707f4a4839983db04c0ed93c44d96aeaa1ef61043df52399bccef87cbe803253e26189a64a0d5c6e8d3229297b8b973fb3669cf52f5e0c30dd7500e72a6c9f170d02307811d22d0f27235fad1c77ddda910471f82380801073dc61863cc334e07fda404cb8f8fb5ccfc18438186e1c183c00e0ebacb8f86ccad15eeb4d1222de0d1c19f9e9c229366b25e433c3bf24612595214a56f21d9f4e18a7d1b19e7589fde30713bbce37c9072f6d77aa67c676c2d24cf57c63683eb419ac1f918cde06e681aa9e81d2db891bcd1872f1cb7713f49313b49721843227d899b21c56001878e244b19f3d332f8a52741fe09a700d267df65df0ac64c3862085ec94a5c0fd2e36f25fb7c8039fbac3ffb6ef0b84afeb03b37c39f316148939cbdc54fc2a6962bae53f34fd64596915d5e600010d375f8334b2291be7bec7137644fca9e44f23a638f943de973b8052266fcc5a1ac1b715c0ffbc5a0280480ed923c996f0dae072993fec66c91f331caa40fc096dde039ec00c9f37ca57337c89c49f86fcb0178ec99b17723e36656487fa3bb27fdcd3cfa24aff31a7bfcf8c14cfaee5bc19f0f30936c6cef0d33df8508f86d947e9cbc7df9312d637af9016899ec81904a7f32e26eb09fd9cfb21320623ef9fe87fdec4b5e68bffb8df3813ffbcbf5207df6b138487a41516e2be4f679414dbe04e82173e8812c73cc73cb2197b779b56cdba8dbcc4761074e7ee613eba172e64d59e9cc7ee6ec0b3b90ad83a4bf127b6c49471de931e9b3a32f8c4936cd9bd9170ac913b3e1a09b228d18dcf85b6c6b3146a17e8565aa871d1c294e496b3146a170cd1de3df677b4e2e60f93bb75b220d4de9e6e09cf8fb861670c518857a30c67e61cc8d1a1cb4a10acc2272a9bc2e5dba943f657d19855e314914b2710bd10a32e4fe58855ec99c2f62921d7df972551257614f5f12b9dc71fad66399f4a5924c2b46b1afa88e4c75d5a16f2db55827d3a74fb54f0a39485f0ef5c8957c798a7ecfcbbfd86b23caf45b16653a5b7e9473ca1f09e4207d9923575228a6e8a35018cb1e07e9cb0f6da55228e2a0a255f6e9cb28f48a7beaa414ec431839944298271bc45e7a1bf6577ab2d6979302713a091032312d62053ab9456e9f1510c9b31bf539a24e2cc0d373728a6270ea9288937338911cdaba247b9e5f141a6ae170aba9a972d22844342df8a8dc0e6e357988afb8d756e32abad5845b4df6bf75625c9cbee25e42dc4baee25014e288e6cdb822c9019751becf9885c8186b70fd2fc9bda5c5c186997191027f9e7191024b2b797ccc810f4e900f0b887c5810a49541c9690a413a8d24cbfa24ce868e2dbb6a3ffbfad2651877f28e4f0b868628eac87a3183f7e2755ebc78f1e2c53ce2aa172fb67f51b7e9c2037c2b0deba74ecb78de84620be3cf8b4530de36195b2f7efe74a257ce44a6e6ec419e73fae4f91db798d3f28592855d5f6cbdf062912960ee336f99ceb1532d3f5b90e4d9f2e1fc39b2f9d479e1f3c76790cfa13c5f7c2afb172ddd470f77f8f1b6cd68d95ab6967f3175e61129e0fb5a4bcaeb2847292fe6c87295bf44d2b3b2a49d1ea1ee7e7e0441cb84a0552d33a05c5028d4b7742e33685ba749d46f353060d49a1419df526f48dd777fbb9312f8340ce0a9d49752a92e76a9208238383b1d9d233bd5c6c15987c45ab3d2b58ab0b46acd0c3fbf0ef19517792a882e16f1566cc59683f3278d5fcdf0f327cf744d24b367fe4ca019348574748eecf8e0601041825c05aa8436b7f8f6167f7d0bc25561f74138384ba9239d4e91ce8c4f7da12d4d1d4fcd6f9d930af0cb22793ede3ee6186999d639e2aa9dca535daefaef8a8270707e3fba0f12732cd27d2dd35671523f73ea0b3b903bd0731a9e2799c173224fb9f8d099c42231c74123b3f5e2c5cf98adee8b2d9dd8d2a935b7e5a2fca9ded49a141929df526bea4dbda937b5558b340b8be5c88ed6d59bcb62e9d41b9dba44cb6b4bd3b4266ab562abdedcfc80e530b2660eebcdfcd3f4c2396d6445d6cbe4deca1b34bcc4d8b0d6daa2199e2a8ac15cdddddcccf7b73d0437bcd5e4eda77515fe6d8bd95c8270bceda2031c4f424d266a65c0e194abc9f2d46c9d1ea57d8889b80ac66f2a1928f0b56f8b3f7f169939ae72d9018ebd05e93e7adb771e8ff8db8ef8db6f1ffeca25404816823f87f42188e46ce8e83ec41963dfdee2a3bc8b6f49e35dbcd8a9f83378292fd2f04e1f68d5e9e7cf217a1ad1f38856c9f8f9b304ad027ffe4ca255307efe5441af521f4d13b8376c42b17c0b886177c32614cbb780d7f6ecc2c96245b71b36a158be25cb38bb61138ae55bb809fe758f5ce3df66cb001fc6872fe00744cc32be707bfccdedc01fbd7130fe8fedbb8f53892c8aa7c77fa59c9cc72feca1658b11c669fbee65d1cfd7017f393828a50b87603744f7e570f046260384813d1c3a8706b532e0d071ec369aed73b8f7b80ad3f86e9c3c1a1a8c8ff272740d0dc697e1d9d0607cd04b4083f161783834183fe5e5d0a9edbbedcbc1254048debeb70fbf8de90205f651a22887b3a7c747892373b68f1244dd365993153dcacd6c31d2291dffccf80b3d80f2c29851189c343eb8c0e087bf1c0e72d67629df3e2d560ebd479b611701b92ab411e42a1f646a3eca67df32c43450393cc56322f59d1724e653671f2cca175aece20b318d2ff5d9702e7e1dbbbfb163871de4329b4ac4eb4dc57115b7c2a41ffdac3579e6a46027cb8ff2a37c1a704cdc627ce466bec721e2d07e3e035a26fefc06b4eafeb45905cbe00f5159a553dbabfcf56483db6b5e778dedb1b7fd0cdef6296ffbe83dfe8b71dcb0d6c9fff99409ea2ddebeffbfdf4206383ee56c686ec7e7b07bedefc90c4183f37d98454c2562cd4c41644d242608260bfc670112149d3163c68c3a830613a9a7f1391c04b56f6b10c458bb01bff6011133f885f1b7ffb161fa7270d2a14885585e2b5a228ba850eae7d3215fb9cb53f32fb66ddef636689e4f0b7eee0a11d93659726a93a53d8bc76750d37ec6644dd6a4993519af0021e5edfbc71f1031c7dfbe1a1cc48ab88ac6b7784ae42afc5b6c5f79cdf31dd0731e1b6cb82b3fda41f083c43c695c9ec0397cb2643cf8ad6cdbbb7c77b9378f6aa1c1f99325572e1fed42a7e6cfaf889b19b2b0497d58e4f9e1acc9330b0d33bd7150a25863124d4a3487d8b6a7c1dabb3c81c376fdb0c1c1f94162aec1c1f9daf743fb203107f181c55ffe5ce93133f833835fd881ac3d0dcf751c9c3fc3f3230ece22f9c57cec6d5e104214c180f132641196b5cfc50738fef6e1644d96abf05321999a7ffaf653caa3c478cf0b63f6f0478984503f5bbed066d45fa13cbf850c70fc1897fbec29d17c5ae4aa184b4c1f5a5476f1ed2e627893c6c19a6dc39a47245344f3adc5dbf77d93e5e07c4a44fa70b2bc106f207295125715b54ce719bbec4d185e885f78214b76e18598c50b5956bc706be1852815ef070ce58533c50b4d19c50b4df9e4b16cd8307da12d7d21fe3439b7efbed0e26f461247c1cc0b5142429369cece984b86e718c16d1a7054c2ea96f89265d569c12cab2aadb4e172f228c9377215ad921c5a8ca2c95e6f86726879c890436be9e735272ce01e420e72723875b27f9c3aae3ae2aa1d577df69f36b2e5074e9becb202616c6a7cb7ef972dc37dbf672e97ccb2ccf3222e9d3624a0c77788c04bfa10a4fea49145a3b12ee7a5fc167374c995b3582e96cb4341f13413305192eb4b96ab426993eb5795af2f69983409586081051658608105165860818515565861c515575c71c515575c71c515575c71851556586185155630810151c6d841295bf6bf8c899152ca6fc6b8bf0f52f6078ad18510dddd73099ab3a76571771babc8f343ec0758cee0488e1f5974be0cfdf8271ae0f00b8360d93a287facf4b09f23aa6528e2f03a46c3cc0f7dd2ef1ba6a8fe940d62cd32eb24e55a59f2744a37a79fe9bfa4b8dd12925899b2589725537455e3a4dbc172dfd56dc91425d1c67177620d8a71dc7e9a658abeb5f9e3959356cc66daddb81109772725d3092505a5d26285c5c50b18ef7d9b26c3faac1877235332b613ef12fdf4206918fa0e4484ae71795e3af91a21eff06caeba4cd0d8e2d7f06e92fbba2e4fd1673151e3e347001499017e388fccd0b97c27a3ebb4d7ebf5eabcefb4264dba18df692e97cbd57ddf6943435da7b55aad56e7e23b8d87a783f19dc6eabaae7bf19d86d3755df67abd5e9dca77599326ddca7799cbe572752dbecb8686ba2e6bb55aadeef45dc6c3d3a57c97b1baaeeb50becb70baaeb3afd7ebd59d7c679b34e94adf5997cbe5eaec773f146bd0a10e7f675bad56ab8bdf599ecef204f19565b13a56d7599ccee274d977ef83abb8efbe879619bd5eaf0e7b7558930e6be272b93accd5759df61d36d475adaed5613cdd3b36d4d2327285b53a8ca7eb1eabd1b9fc0c5f884a7de04763c687c9f8be1692f76ae2bd5eaf2699be1763f4692e6dc8d35c9de6720d65faff9c8b96c6e3426b755aabc593e9c380b1bdd0581a8e0b8dd5692c8da5e164fa2f58ae4af6ca9aa864af2e7bbd9a64fa2e56b416992b1b52c95c5de6720d65fa2ca8ec94b5329e53d6eab2568b27d35f49b128192bc33965ac2e6365ac0c27d36f61c24eeccb3639b1afcebe5e4d327d9552b5d665874eacabb32eebb243993e0a8301d3164fabd57a22d347f564dae379be230f7bceb22c8e65599665591764fa2918868dea935e4d5eaf5719327d944ae56bae21970b73615564fa27ce088dcebb4437498f83147bd7d530f7e70edda0d30c706801f0f46f6a730fcb7116f115c69a46e611ec67cb55df633f5bd038309ca944c67ee2b44ccb633f59beaa403540d30668de3471558c30348e5a543406262de30df9aaeae824d151a2b344c8552f9ad038eacfcf14412df33bbeaa3636ae6ad303c389c6518d18c941c65eeab48c8bc78a8a244e912c6224632d1eab432412197b39a465588a7c4581809800491690ac51e2aa152c340eaa448916885a46e5c7575447274867c893640c85088d83fefc182163ef485a06f5d87b8eafa8d5c9988def60298fbd2fd138a8112330c8d8e9b1771a5fcd221f42a40827631b191a071d9245939631bd7c35818088808ab092131ac754a2840aa196e9787c35757490e8fce80465ece34ed401fde141c63e1e6919fbd8c71b5f4d9b560e76f2464e90b1692488afa46d4293e7902e64ec2bd038e690f8d8fbd043cbc827c22f1c7c2581648a3ed648c8d8f7681c52890e121d1a5e7c257512e02a924c7dec41578dfe27d30f69640c658361d248a61fca9c65340ef9b3923633360e6924d6a08f3d86cd0f636138180b63612c0c27d337b59062d45af4d50a5494e997bcd10b9d9f5a6b3d790e46ad2f6aad364632fdcec5d6a2a80ea19456cc7257286d412990924c9fa4a2a1e8fcfc4fa63f426529d4861a41a136d486da5023993e77b25bd156848b8ae8904c7f33612520251b1006025292e9dfae723a3f3a3a3af4354b7358979ccc795f28ee9b36731a91397e01cf1cd62559d11c525454344990e96791e3c99447564f3e09480910101017327d2ba5e474bcf9239d1f1d1d9d28327d6c724566e07aa4f2e86738f1b077af66cde35a1e87c3922bcb15f114e554d035e8b38e6023adccb1a061e8c7dd9cbc80a7a471b91ca4df79dc0d87e320d7f2147d6e27d39fd63ff9491a59233dcfdac45a180fd6c25a580b7b22d35791b2058b6ce518d1a951df3dffea71452e1207e9edf1949188e342d135e8d3fbcaf4a58d4da6436818faa1b441a6af713b3cfb775d0d43ffe4053c3f1c1559392a1a15654b5c157237b949ae4c4641aedae28bbbe1707cf5f2f4b9225c8e73465c489e6cacc1f8b72557f7ee441cb7899b93710c781d303ff30b4792301b496a0f007af9e61ad03a5e3c265ebe86c7f178dc8e4baeb81beec6e562031cdaf6281b868e5666e6beb003597e8f1701e045204fd1d73c2660be9ad7f1c2f2caf45f3cec29fa94bee572e4aab91bb9428195bb415de98533cbcf7a33bbf80009765de1b6c2581bf6712cb9e2706ab89b4c7f9258347c024fa82febcbda5ccb60d77ad22b101fa8fc4ac1fac5d8701a4ff9fc94677faf71d0c1260eb25c88e0e10ffa445a067b7f4f424aea492c0138788e1a3ce5394c9733ce512824d3e0a0137d4d437e796b2dc628d20f0e5756ac741ac039df3ae195e9df585d1673ddebdeda19e5534c5f3a413945172c4972fa92c9f4a7fa31be15ca6d84dc3e30b0c95785655341b538fdc98482627a133763427d98f22653ca8ac9f46056f914930a0a25e551296f52417d8aca0d26d3974a5ffa1caee2754e41995250505052de6bb81b503ee503e2db62cbc496f1eac9843253bf30e6939e36bacd0ecf28d3637fc354fa52e9497f7acccd9cbed2973ead5b26e543943ffd2d79da9f3c14171d4c5a3991508ff2a1bc20339b6e344c347d2b40cc7c7a20a47cfa52e94f28ef35dc0da747f98088d9f42eb81da6cf87c0d8aa4baeaacb5617299c4199d2098598e9633faa3f1a7d29c85542ae1ac29c8ff9d83b8785276ffaf9e3aab0f4f7e98fd28f9e62b1fe68f425ac7ee94778e49972e42a12fda5d14432fd9c9c9cd1bb10019342944ff981f2a7a7efad96413d7d5fa2f4298fe2a1bc9849dc0da72f9dbef4d705f376fc7079e2c294fe85dbe13643368e87e9830cb13969a738543ae17a9cbe181485ea562afde47c9cbef4a814cf4f5ec903226694cf711ca4a5d04479fc709c1b07e99b3e972770e8446a88b82a3cfd38bd09e7c4f41dd7e36452cd5c7ac9f18859b808817aeb3e7d2f42ff3bce47ed81fd95bec596a69fd9f4851dc817fb8a7dd6c1d217961e8b3232e62263a78c3dd7ab48f46db796193d1693ef96e93d0951d89b43645a73788dab86f4a46918fa9148aee6109da2df8224e611d45bf4efe72d0729a55f91b80aec71d567faf32557adc3ced76b05fbecb515ecf301661b0e466c23c7bf1886d9585f315ee0d5ab7bf58eb9215315f3ae5dad5cd5507115f02907381492b1a7576828f43048cc3f7e607f271dadf4c86e6d66719098e5675f9d6998ea7dfbd218316eda10f38afd1fd2450abc927d3da40d0ed6c005bcd5c71885fa07c198fad580550d0524d2755224bd6792ccf772a4ccf34c82012b771272fb2c91e391649e73092619e7ecb327e127654f4292ed673838204aa5c58a0bed06c94fdc0e9aa7fcbc65a42ffb1516172f3eec21c60e018731ff884351e843fc2412c63e233d98ede38f643bfc71c6c7deca7cecb32f5c99590a3783e70d9721e01f4162fe81fdf53618de17c3fb5a66a8a052544e4a3d6dec1c7ef2ddf821fb6e18fb76c59ebc899b39f9ecdbd287276fedc98a35fd893595bc2033677f4d7ff2d7b472f2d8974e1ecc286f5a39f97c8019e53b99befd86ab6c7c93e957ec631fa487a8e4ecf595452e951a1a00000000a3140000281410884442c1602cd124a92a1f14800c8aa04c6e4a9b89c328c78190418618640c0102020002000023836d00a999ff8bf522fdbf9b9737be6e5ebcf977ebd2cddfed8b374ebc9171ef197b73d84bb628ef32bd3fb797377ddd5ebcf9efe6e58dafdb176ffeddbc7463f2c60c7b4fd85bdabd19f74ea97ac9e4473b2f397c39fada40c24a0229fcf5eaf6634a577f10a7c41e8aa669557166abcf799c8c09e16665236a4db317bcc4cb2e85051dac4012e4531178bf4e5b5d1fc6ad2e954ccb79eea51275ed83b8b6ee6d9df7f95babc5ad5d111a1c7af51b04b55f82bdaa3e1c7cd7fba8cf3f2e4810fa0d83e1b96381ed326afb07ce71e16dd254bcd1a5574dcc5a01381f0124af3d257efbaa864eb2706a349a7b6016af333a1b45b3318da4c8a7d9b67429b7ad7e87d1bec0f52f447669694ddc28653df798df545f2f86de56e6449aa2fccb331e20b8f53d7506c37fd6b8ef66adb30aca73e2c0d5bf398e0af08317b3fd0fd8e9490755ea0685a7daf261c015377440c19848a86b3e88400fd355c7baa92955340ec214f55b383564f940584b4045853f6a28826ea232768da09f7cb6310107adb42626583d1bf3e3b0bbd52d3aa01f9ed0372458d0f1ed4a3c58e3d72385fcd4f5f5dc9a2159d398b3d6dc8e60b41fe2a40c0f8f0d56b51289477449520e2aaa37a0fc3a3dd7b4a8acef06a9ec83eb508f6b702e56fb988df7bc0ab728c41df9d47f8348b3067c9e6e62faba61ea1045746f392ea2a6531a45c8ed515ab6dda280f3b1f7deb95ce8ee9ea973dacdd74644da5c1a13d548a675dca88156db70f636e755d003a989d9e37b5f03a63647b863a78031dc6f3a151754939e1bb62d722a651d035449fcae2bd1c90a47b82bae384e8316f9584079ddd551a05ef8dbbb6fa9ae354fe5f1e898f48890803cfb87a43df2662685c0f229f181f5919881f611d1c0f595d881f6959881f615d140f491f881fb92a881f715d1c0f4d189c82410d8d4f24ad5309552eeba7d28a58855e926b19f21397c478e108727c1c17d09da7c742aa5f2cd517e74348416b57c3f4efe885ba6ae9a9b4d035bdb9e031c6fee1b8d4454e3fecf4d2dbcc1c4e8db3938b23a515cc97877c098bacde567518810581a4702964a8d599d1af2b6e3ef956232f23963cd0b5fd20de9f6c94f2d7f7b6b1c933ad89d7dfcc80402bf668cdfc0eebf059fbd91f182ffa8eefc23b3f17f44ce7f272ffe46afa19109bb7e1d8fb391f1867f6de1fe6d2dfe39d37923b3edfedad2a749bcde43f44220139223541d88ab86abc3711d50a6951b193cf86d26fe850cfc4bc8f81c19eff247038f3132fbfab7f2e8afd2e22f6b9a3732c1eeb7a9988e8cb7f0cfd6e5cf76e60f4b9c3932dbfc8f08be6afc8763249fc46022de40948670f835d53530044c59ef91c1efdf64a25f6460bf4c83d7c878177f14e2a891d9177f238ffe2a2dff924686cefdfc7d2046656d73c6adcf91a901ecdac2dad35aec69dec3dee846e6706e7f094f2cee961999f41cee11bec3567c56af04194c178d0c6e692db3684d76cf5a18e42f7576ea3282e9528ae72aad73d0528977df3f98f29149f87471fb37ffade4d14057cb59473e4d9fb55a1c19c6e71cbdf2053a47f7dcca38b8afad2383918535ea8202cdc6840bd618cb24227b4ffe532d178387a92cfd2a258ed19fd4f6c4d976706037978a54c1f3e12362fe101ea5f530e614f5287b1c7d5fc5a180ea1b788583ebe072ba01fdca4acf89b763329cff54b9580ed2221b5f0cd1b28e5f6052af39cf07af5bab3c27fd1aca482ec74ac22afa160a073400ec062e4fb9e2de6b64b99de878b4a7df69c299e1d15bd1f3350ca988c1532e3ec6724a72a9a176ac4de1698d40231ffefaeb6326462c7f5f5aab72f8c356526294d313c2257e3c90ec202c162b2d44e09b25de21ab5ee8bbceabdb8b481d9df191133c8101e6d413c54d7c0ecc30c4484732f79f8eaa140dec4d5e78f98da1660b9c896c156ea9aa7af760058eea4208780233274fb38a133e48e350eff5acdd81f9324d09d2ceb137e070b07e714e9a25683b8c56ba0f4a4ec902a8f5d01115a66061a201f01c8d804f7b04776cea6ecb79ed65062b1e2db153b6306dc08135fb891c195b75a271254e6669f6aee58d08b776d2b862de483c99dccffd6f3904f6bf75e68b2905e86af0979bb27e38b57872bd82225aeed71a409fb0c347b9b08a8e2ac019818070b9006cbc9f7db0ba9d52f9206c21e2626cbd2fe7df4c6c320db7de5813e69f4565f03ee183cec5ad5190b442dfde33078d7ab599cf08ccad9f8f586329749ec102b48103f4fffe148ec6b24b0b70143fb40bfd737c93479754baedd7fd820e139bd9c7a4830a8b7200518feb65cce56f9bb0379e8e04d545141ecc332796960c6af6f5b4f85365ff7de21c2055d5b2f748bb9c2006fc863351adf478b651ba9f2bdc26a327c720589854a75db711680cee120617af14254dd52b2840196e60a746cc4c356f1a7403c1011448129aa2b6040bc3b75c621ed89cb96da3dd80d5c1463b375f633951f4a92c1316722e2b41e81339f3598e8c6b92ee9697fde44c06277568ec3bf3394a5c65e0e9be70ecd054d7aa187244d7233c6af307b8fefc2a236050659adb3e5d79b91babe85c3855eb87b2e863b96c552a8ab42bfb23ffa46de0cdea278882a97f10752712f74b87f8559d3cce8517f95bba567a6861e902faf0c744f42d2daeafc52ad280528e00ca4014495d75c41b90c36d2377e712738a8481bc1f9d4a8d07a5417dfdd09c9778d43cbf61229f269105cd6d5fcac4901ce7a827c25a7da556789006e4030cec83157c184e93f05caf8d7a50b3413b1239dbd0984b3a7bf8a7fd6d9f7b332c1aa1893a8b66c36c0c1aa3c167c7e6e343e7e779f5c390c089c57d5c28d55c092225d3f68286701fea79c171e2718d170103b3d0401604125816b1c169e07f30d79f0dc54b4c04ae3835681026b6c37598a812285282dab4d640dca4c8a1a4c8030b9c4d9b9ace29922df44a4df694bf54981a515be6d7c26b19515319e5ff1581506c0e9ce2699bbb1d16b71c0973dc5e6f0db3323b40407b481e0d4eb4fa9513da19eec8d6526d3bf9509364fed3744bd6e6f25692671e04c15825efa6831324b2607f4bf83d31bf48a87c1a00ead7bb42ac24f96fe784153745c9bf6b73d1a27e17d3a658498be76ba358a7aed15b2413e6c69be4a83122fd1a034672b215a00d1a43d3dbde608bf6abbd6ada7d908581a260341f54c681f62d893e9bc9420727e4772e959a7830715e6e02f504bac24ad7cf551d8bc4719f603c67e79592c05a51e639d95a752b6cd66dcd646632848a869a1d7e41bdc7676720d67c513477295be8d249fb86eb066bc85651a7947b2dead818019e106f915ec2c51c68f89b49580aff66688a0ac986fe92d1283dd61ac5a4de8820c2c02189a0bf7870e4c089a4f74ce024753762fbe8730cbfb51b49578e4d636964c061eba5033a5408f0154a9827cf671d4eedeef0d7d5310c66e7ea1c474ffdacb5464b8a47d6be855e532da19dbde0d15f3b68d268b33f1817edf7fa2d65ebf330038f8bbbf3d09566057abe2dbd638444298e69094c41156285872e55ce8e254cda4e9ccf22ab6da26fa24adff73e70d87a4916d63e2a5760c57bb98781af027d9997dce2b050f383c9fde4655177693fff043a293fd94ba273045e315142cb55f5812a18abb04fa6f32c516434344d57d852485e7cbff466cfe20997b7d81f8d619469e5977027cae3e9f528a00446f7772f887c38b2119511a6335b0365b6d1d3171c3ef9973ad75c24f991d81006285816e014795cc2c42ec05e2e163b6224148e1146ae371bc9ae4e72a3fe8ce4e2fae3e878cda735ed6e5754f359cf7fceee49158a6abcfb55dd4e155a5bb762a978012d9a9f32133e38a87a1b6918fe7a5e0e56caed0814025a57493b5b9c91f64cfa51bfe3b14e873b82aed7c98ea323d08bc12235c5c1cdb9b7d328e7e3610b08b5c12c0276687b8115d0df1827e1dc47a3036394e534c731e444cef77a76ebcfb99153ed386693ac79dd8ea706695159ac0c868f6c4a4d12654402c59270cef14856f65e5b60141b59e06b5e96de4a4b3c1f547b27d59b80e00db643d9965f1c987ca2beef5fd9b2e6ca57854a0717a327791774c9b22f7a4e04e94c5c47525f215fdba4cef720383c7b250c4c1d32babd430b1adb5e51a4bac756b72f0f4b907f5bba5cc99e83c008df248ae9b3f2f4b1f7fbd420c86271a2b3265b0c54c395b075866aefd826f779c4a8a11a115105b3f05da07465044a0444f5df89ba17c0013ec5fc8fd2923992a695c62a93c782c4498615eded1b17e692e3c1ed69efeb6b135c18d7f97aaa0503f7058b0c360b34ac8d5176d3ddd6a2c91503317796c67909e738542ce28ef1125314abc398842dddf339882dbaca04fd6ad1f7847594c7a8eda6c368b1ff80d5591303456149b032f33ddcdc0189398130edb891f85b0c77b0c75f57c963983148ec4ed947dc3799f8b5c7203a46b3b5dcfadc2435e627548bf769bf2d4d69e85f28db82bffd53daabb81eb27cee5310c45c32bba71cac412002d4535f37bbea9747c237a70872383936739691a618fdac03c61892ec625638cc594a7c76ae814d0c04dc89ee546485987d73ce13251ef30bb37d9d7f4ef85c9cbc76f9146a8fa321395f6b1724144e2df72d4b10c71d3a82028bcb72bb8b17a97084342ab94e8e2478601927ba1adcfd33ce3b8a40ef69fe070c64b2baf6cd68910c249f3fd219c4d378c092c1a85c2bd7a471ee5ae60f9c42aecd1c9e39c59e66c2abb3dca83ef1cc1b19e33be3e2d8f4078de1877e533c3e6e11963daea28abf4d02a8b042c00dca89f7e6298407e5b5299e6b4c466f2cf040012a1a2bd3d065b63902b9f748bac47dfc9c9f14eafe3255c6e7e8b20837f9c2744fb083f58d249b3497e3f64e7571d6e0539a52f51088ab66e195c8dfce8f27a2f00632e793194f8eea312ca4867c81f69665f370cf5c7c32876bb4f0bedc3ec54db6286167544556c8e75f1c01280f76c495f712173c11d4be4b97794870a8a0c0aab1cfc64ab06c7962f140c8d985aab93c4ad677f09a4bd282b024e47ea2f5ae17926e172541d08aab9b8fac385890a52cba6a65ded0a2cef812530d1308fd1bcea80b0c116f3bdbc8b1446ad759e91efcd78160db465622223b6b398e2e97afe4506461882294828c4f564a380570a9487f1a6247ce51b94bc48164408f96fc2a38f8bd0d7a856098a409aa27b5e228efee66de1ac3f6a5fdf79c9602991b6762f14e9b332df7658114dbc540784f4ace22086f2e098bb9af9b7af253ebe9fd25505afc5ea9069c9fbf187a2959c0899e498d1b16a014563f69946e217ae2419830814f3972238b9be859b1f50b7e7f3c9183c17405bf54b4dc0c632ca58db7fca42254081898427431c3d44ff78c3596f4903b169db4b83defbb7ad234f6cc864151c238166dda01464553a0d1e674f1b75ca993d4bab3f24dd698c1a8f8a5be965aec71cfb9f0a84ac111d454bb00558fada5c6321551d99c2c2fc3262592c1f8d11682b872469198f13133b865fc13701a272771c336d5b4de320d3323beb5cf44c7b485b633a1316a1a1e5919b884462c6b75b50ba21a7b75905d83509a3dbee8ea3a4273a1d719617ddca55395b6b5b1bce658a876b106d3a254c80a1775bdf8dbbf448241c62c158b7760ff4dfc620cb446d7bafd0d5b9bb2d28f4b288e36d3812348bcfc17d1dc7bd510ad874308c0b041c14bc2f4316a4cf0794efb49973bb9635c711295b2957ff527c928fd36c7ad2b3c622eb047159d614d7a377077707407466ef07bcf6d988f0d1bbc9a3399f3a63267c821bcb3041bc125d843d7d4c7e50a4d35210edc6cde4c984ae8e6d7d290c3f6782fa1c5093ebe667923227e553ddc31c14e798ea88a8b07dfe16ff8bf253d58f5fa460cfc9b37a14b3cd3e197abd388ffb2c3caf451873c8ae940ff16ffcb5305ae0e3e02813d20da7779cd1c5536cd11f41cdabf7257b6ed61f46e744ff5faccae7644d977424983244d6bba10372d805e2e98001dc5efe9146d224f0971d8353887062a682ecfbad4014ab8dfaa2b9631353670ab19f9af3deed8f145d2b6aeaac56281e9b7d241c2458240e95685ff7843e30ed6edbbf59ace1ed3219f843ba5db02b13d8ae8f897e0485509f0bb75de22809676e91739bf4d79484730eab98cbbf1fc38623d7246fb19bcbb479edc0a868162c862aa1b121d2f487a4323a2146c8177030de1e13f310c7ce3f9754480942e51601e8aa0d034745ba03e7dad1d2b815b61a27d1ae8416e3a49b9d1a35121e9647c6387985ab68eb52a9a9a604f6a9b101d56093d6f0658c7b7051a0e121f66788d45f79881e508c6113422a2c2dbbe980011b1b78ed9685e91599559209ecadd63238d88cd98c07a3c2f8a1e90f34d65fa54d6ea8352e90be7bd9c022435759eb8dc31de30d5e35344bf1b792bda2037a222bb2f46200a8752639606eef0f426f8ed62b41624f0c33cb7e025548b064f23f0b3888f396a181f98214e5f8e08f2b5e5999c54bedb5c842c1a0d27fa6bf12d2e41fa40326d34a6e9ba45965705cd24ad1bd1d50c17c4245933144a0ab005a09a986b0397ebacc355c68ebe2b4f2bd6724a42860acc077c97d2cae5afa811a6ab1dac79bc494e438360377d353c38ae61ca87fe9701b7ca72711fe498615133367bf4fbf5d779a12644a414d3e9f631fa5aad5b0566dbd2a9ac715bbdd930a83bee6088483b224e659a04761e3e8615b846cbc4182e2053d8f6045d6681d665b10149d41cd566a98b791443695eac26115ddc015da61ad74c2dae38c9082db9c48ce2072c08068d315ca61a710ae59c94b4e40067ee4cd59f52ecbf3d4828e712e16208faaf4506f01a1c0872f2049a38353ee6c35dd62c9057caf52bc0c8ff8eb9ae85cb05785dc09c9be027337ffec8961498568c04c1c1ede96279c220bba95d9b6117a464e784084ed7c1cc1e1cec30a60683636c2419d9012c2a379bc76324a27d347a66fc0bfcb4587d12840124addb2756b00e224a601c03fc0070bf9da85bc4a218693369428525d4f9819227acdf093e38f77c1f19daf6bf74a24015c948830cb262c48a333d242a710955ee6693cac2caf037e659e62af08290be4d5e4194e64a2dbb57557fb513da645ee70985931dc8068ad018d05bcda1f522889d45537214edac8a619d453a9520b665afc96235f2430fd404059a6bfccfa38d646c32af94e5a67077860c05dde1e3c46f34dc98596e5754477e6afe4aa66807a24d40557d8f97a27438a17cdbf7260678e201bbc7e8b1edfb7ae193815d2f021c41bf0ddaacba133c111725a1a4cf4f73cd40fbdb3a59efdfb0c232c65da5b4365c451e6955e27856986ef46d83255ff79c79c88d8895c60a2e7670374e14de86ce1df192697df04027f35ba41aeb5ce1e043d50b1d09eaeb91f1744ec7fb4e098c000a78d5ff8f185a47805b5812053a49c465c3f1cccdc1ccd52af21d0dca8661ef4cce1553ff742005613adae01baffb59321b91b5242eaf9e139d69e8ac899238677549f23c7540c7eab131ab7d3d0ce9edf2d16e74ec0c3d4db12a2f3169d15f81f607875f51a46b22a2a8a4a7f3856979fc62dd1fabb8287a16249eaee8cc8e488d152d709fc1e9a6b4d49c662efd19489d29ed418097ef6f85bb429eb38bf052df43cb5d2f818ce3729d30f7d6b195772c7c017805df566d9435fc5f8166d0138d6235b011a849d7b1ff2383346d178aa2c83cd6f7a109fd9e8a00c807b6798560d6a2d87803e07cf88aac440be5afa7a41e8c4243aa597fb0d43e217b116bb8212f3160b6b51bc25394c02121f7cda2a09f98f331b3134bb4df52f64560bc73a754c7a15137c9a6f5c7d1b14a430ae942e8a99f79d53097416fbfe8a1cee44f42aa18e0bcd7deaa5af8170ea85953995eaf74c260a5ab038dde792e11765a1fe7f9bef3cc4700d024f5b1b4d535d5d1417f9f1c76487f7f81229a05044ca74dfaedfc13da038a4a3ec06c745eb22bc69cfc3d81cf2e51266a9d7ea4c98b3064c627c027e2116bae77dbcd61632de0ec4f8bfa7c0870663450181c18b1bfd2d4e1547189138bf3c930f07a0d344625905dc4d7ae5a4ae6da9332953f3e2d93db6902edfa3a107787d6997b973105a5407d1f4625eaa1fcd73bd21196da573a92e939e2f537a12ac9fdb6536b6bc6f427bf7ef475e2f86e87ffa7e99a58c503868a9bb92c51118e88a6c349fcf2416c6a173c320f1d3d4151d86f333d3fc4937f44828f4d7c12423f6ed43259ed3522df9a207a933f6789d984b55b81d7730bb99a213f2de99237045853577c0b60466507e5aa05c083d78da4f724758b919ce8832c6195985c7ba58545d916562e2c40962ad5a6ca7f758b2cdbc3ba184cf55adb94496c1e957c8d63e01e705f64607ac03ed52c3e0e4d6380169cd9a51cb8adffb5d91fbacdc842dae6424af56ed5c9aa386dbb71946c44d50396ac6b6382b3a676db150bfebc739ee5c7aac764cd4c795cc1147b104c05d3ba7375178e403b22a08905e72f4513bea66f5f073f3ebec22d10edc148356cd020fe4f7af8cefadfa113e5e8d83e8503be634650ad7edd604eb250ed544fad1b5b64c7fbf03703ff4f99118dfc0ec780a53ca5a15c1a38c9a1b4fbb3223bba4db153b6c3afc023f836a56095b59d1b13da6399beaa03bb5a8412fb8ab9708f5eb2e60a0f71658010ada4d7b9428a5512947feab79965c40670935960f48c6731dbd848e35b2e50f005b5ff11d5727b858cdc6031ee7fbcd1de231895f7e789fd809fa818d27e149e3d1c368aef817122fa5185c3456d434d29ce0b3a09a9b13439f63bb0c5d1f173ea3ae151c6ff2eb675c3f20085de82318a96100dfa50fb3bc79ec8e955a3dcd00ad6e464197bbda1079c455389bc1473ddff853bd7c28725abe2be117aa39fb8a115dd66befa8b89d6c306f0f4c26a7efef7127f4dbadd74807cd21211c477ddc60b530cc9bc6c952eff97b1efdde1fab25ecd86abc96edf7ca94a61a80ee623d1e15c02591ccfda79268ae025c46dfc3e39e1513c4036f386df6ce6097548c266de0a25b055bf7187a18fefbb3354a824abb7c5673f78e8a4a7bb325ecdd7ca964a5d0d288e38e893de21586bf37448bed366924f7049346ab276c73a08541612e95f88aea2edb74d7a1ca845a12251011539d3643e13fa263aafbcf71c08555209c73495a003aacebfef08bf73f3264d3269994cd1a6db06a1f2015137ddc776fc38cb92f6226429a9076f3b6bd12596c1c1d8ff4928e865611bfa99fecc815f7ba5aaf7c42452a2789afc9f380af755cacc2f439ecc43281cea7a37ce67002b19011252518526a592ef67509fe25552fd30027f9737ccc11b65c8c2a4f798087b2bb2e81f30f5bfda52540939d48b1afef0a90a322ff6a85e42937169a3be55eb9545f2a617b23e6fb179be6fec695cbda988efb2956a8e12c5c95791c9d1046242c9d5677f24a741838b220bac5adebf3ce05ef9a45c1e3d9a9fe9db1b0bc7f2c248fde581b135b9bde224e3b23ec8a4eb898aafb8997050885e2eb0c2ac27122181c7d34be69dd4bc87a75a31aa0dd813ae5af8d989f2272ba66abc3312904e58a1e76bad810bd0628c30eb64a439a1a5399503b3b03d1364da3e70683091029ac8baeaf0a1835801b2bcb8db2c85209c97a1c700901de3e708484ae40373127c28371825b31f28e99f26e83ee16d576392527c9fd34e444e0fe4306a1d25940a9eb6e00de0d60b7d4db1b95ab79b0aeec6e6cbe29b61f1868deb35d3a9b44283ca3d30aed9a2b01d39e1ebbb399257b438870adba3700d515c2ae007bcb07309c6a2fafb293a6a8538d8d7bc3077e68998c655239d4e82f6c0def13b1cc2fc617e42419544212c207a2905feae7e4a0f176458c714caae01ef9f642122a58af2ec551634e435afec41a4276c08f952954888a11b68fcda6b57fa668d9d03b03e82bee64df753061155659a53a583b98a064db74a606ae514d658601e8129caa7d3723e458c38917e7b00848045cd53e0d83fb0384ed6886350d41187cc02b5d9c7cefdd736ca9d079a3a8e13be1c7fca024b7df9ff5285cc46963f77296505f1fab371ef5f50b37222eef89e4291f181b6ed9fd929dd7765a45e2c5480f7e86fa13d65a77cc9d43c703ea0c738b971406a4072748462fb4a717b0318dd8f5260781f20643c3d8d712438a69b3603be3b13dba2145fec252fe520a85e380e03c520623fe0634fc4be85e0e3761d1e42273f851104af5a7f6e1e7f20ce796e867ffa53dec6755b770a6a6c19b389e541b4687ff087f3f8e4e6a7ff3e101fbcfedfebef99f893699b542e121c05ab2387eaf39c0424c8c0efa1fb194baefea18154e5891dfc2e819d38819bbddf4da42351f3f9c14bb6945b8db93d187a81e23f5ffb1c0ec5d72d7eac5d7e6a34a6c63d6b560c15d05930f141ba25d648f46ffe05c8abfcf3a16c56b906994da29db55ee33ba13c0cade3324da6dd4623fc52290040a7bc98be2fb66d75c2bb55cea2b35c2fdb8d412d31aa357cca97651d2839f22153089490314f0b414912bcfa98c461b9062a542a99f24e217708530ee4504a65e7906a98498aebcdecec91343223fa030aa21661cbac967f13a81d04304710cc44c25a5e2e83a4000488a7b54d7411dcf55f9bcade2ccff6b43405c909fcfad72d9b0e5bfd819255146042c47e80372df6550e929c091b89dbe609d60379339330731227620ee809055986e692ddf479a0a01f50ba54f33dc17c19993cc009b8c66d516d4637e01202b2d5a086125e5d0c909b0744ca4fb5aa88d0bf9798147358257c0b0cddb3daf7338e5d4d61c20784eb29d8cd8091ba32468d3ba45329735036ed9421968904997a2b80831b8040b1c950aea2cdd8b8aa11765ecd5250c983b8ca73ea3e5bb6ca364083f4337d0dbc4dd7cab0019bb9ce06d16614363c4d9a1c31007843083037f35474d10aa08cfb2de63298533b1d76d5d79fb7b97afc85a62fd4710ed0b1653b3c15380dd0aa51312d905cbf2bc3fd1d52b6273daf7733fad26940dd98b81dcb0da2c6a9e8500e92f7b3cb59b49ab0a60d243db20ab5220aa7976cba5a265688edbb5383f94628fd7e5f0802c5c14327d5ab6a516522cb18739a2c19d4cb26b66253994f55f09c06f61ff6abb1f10c4ba64e60c73b324a5a9972ec87fc1b516f127bc744db5ae5e25d73169fac5e59897fa28c2892c82fd9b4097be6daad002be5f49a62076fc2df951d9b850ed8193ec580da9499605ef453a453fcc631f97325393a3d7349519bb1d87c88145d7bf1655aa2dcb012db04c62104caa1e59482644e6a0e2ecd5fad931e6b09dba3c63aaf5cc95e8babdfe8affadd3194f2ba8b20f704bc9d1bb50efd998d00dba40628b13dae419997de81df6d89d7f7e7b51a41977755eb6dcb44556390ce6b13d4d1d841e8b6ec4d5105075065456213fd8c20dddd6028fa68d427d2a44d6a7b4b99d3651ab253590465e3a70209968af27f14cadda3a653af911f7887f04beb2a2af8095ab92b5bf884d266ee4bf74198bd02ff549180fee24e2b4c7461ac4fb8cbe79179d07ea8a6691fe2110ef2457555b3607c00be9ab2d12d20fa024ac338510f91e34bef8f60855a4a86bd7fd69e4818a4bec1c50a349451ebcf6415aa618a9a5a62bca5f2954a5a43238cb586566f12329e8c41cacade1fc9af415528455c10cca1cf1b8272280e10d2b1abf76de7778bfa2b34c4d678fc16b7a420fd92fd5219d1e49dfea81630fcab4ba5e74fcfe7b9a65a0a7480e87aa18f02e2dca6e2ff7df4140b88db56ee2cfaf1584f4ccd425af6264b9fb08969377a3d4d18f5e2bcae3f596c92cd82802ef71929c8fe94c122b8e823633866dd55135047a45e7e312ae1380fc8149aff3bd20d3a7f21915dacf2bf361f4cbefa6fb6de3e2764015f0a3244ddc30b1945fc22ace282183f5c2e71a98cdabf7cef1b8a244b1571c01c416546cbf4e051c99b27959be5324588e671784a1b37f41d39c130f441c05f1babd3e491b8800830d20848ab28453dc824f49c1d3a3011d4b91638b001f1ac147fc109a876d008df12047548971a479abc44195d53e264a555341eb487d7131fbde54ab55e6d9b9a8023c12932fa0998dd8301d4e34dc9d036a849d93b09a05457f45d18f5cf49cb3618a871503a8d4038d3da653156492183e69b427993fad15db5decc2e8a5b317ef391cf73500d4d2c2fc549f84b199b381d7a823400cbd2adc814031be22924e63999fb4b349391664440697a083395078834790b61db22dc1d8e9dca76b4b1a0531e4161172bd42cf4a212f282b4cc9db60d1e14e8aa30f9052aeb08a562cdc9191de9a79016be00e03843a290dd31037fe964efb67de6b97183de4690037dc58a7f52d45967d3d3ec6abbcbc1d8b96c090e6b4bb4f9410dc49afafc88a59d58a3da224e7d9f528ddd3662179043180aa14e395b2c95c3908ed359ad6b3a5ebbe8b62f07b64a94e88a68a34776d522ef3ed7672be284290bce4b205d87fb128d79e514b2ada3a37e50479e08ea1a4d18bb76d5e55c1db24328abba8601a189ad862d63842008aaaf883d6225c52c25423a41345e20d540d7f01528fad5cfc0f4c0f14392814ac0c783fef1d3b4b53c7d9103f50af22661d805408c61cb23329915c036a940131d74c946e0c9fdd1d7f10b29bec56b603edde07fa945d54469ca5b5c987696024f0ae25dec46de754dc20daa70de94a8b54df242cede6242783a2097ba2d4e88a67aaa800c534dc11745900d63a611e2e9e05ba1d360a9d07db3ed8f48f72d857dc42d11832e683a39e3f4d0256693ed256e20e3136f97b70155403ae4d622ce25e40f7b933ca0006a1a61d822d7cc793d48ee4bea378c8e8398465dee5f781a6e2f41479b99df38c33306b0c4a75176d4ae9bd48296606959d80df32cba98ea005515beaee594595fe4e7979c3496a5f1a3e6dfe741c725c9c7b18e7a8492354e7208e0b211879efe630f12c10fa7a03ddf191aadee745349a320a520b06c6acf5c899428288bffb0e4418b9936224a9593aa3eeb247cc32c62e30f7dd74e9ac46e31dc64d41f53aae263b0e208d9184d61fd6f9e5033baa441cea3d58de526355061139c3e705259207ea368c696d2f236747ca00cb52c6e706bb8a98faa39b5464029544071f4402cf155a4cbde7ebcc4dfa86a1f78695b345dfe21f1be74f2a68e06506c94623804fa86394a0e0b44337a3839103bd6934040debc80ba9dbb747f5a3cee0581986d02af8681ad31861700abbb9a9ffa4188e92bf68e8fd02e95aa9829fba53240d57ea4b28f8fc711d9673adee762997fac690a3f8a14048d647980650e73058018494b15e0cfe414e8d2a4820c48d6954e3dfb6a48a9367de86a736d2c1ccf406a085ff0c86284456f507fe05a40071a590270768dee8c325feeacae1ab454313f1cee1200d87772f5b4fe0dd03bf974437cd3da6c7750a043a03ab415cbc393358ab9329b2c5f78e770ed8a949792b3b4ff9bd4f6313fbe25f7e366a8e828da0203509121bb70305ab2ba3d807c626806a6324f8e6d407c27aad3b307980b0035aaa1a78a706961fe4f7fdfea8c206bb07997d3c4c810d5edcc5dc958f903ae8defbe998fb8456a33bf812896e02957328d843e51771b81b868d3fb8b53457bc4fddf3134e9bebb296b37153381f198cfd03ca88131ee1993296b0a8f25bcad8f44747bcef4065b6c91ca29b48004531d4708f05cc14524de3130c562601a135daea6a9a8f85545e72437d9b43197ad78887f9a0c19fcd74613564e6034c72ff15fd335351fb2960183b2a00840c60c277c8f002b9800f3911c28354699572984b42e966c69cdb1de53e97341482bdb54fc17adde30657a7a3261f2ef0367a06451a3cb046fcf04a582fb946060afe5d9caa84451fc5b1677ecc0363f27b4ecee7ce2adc57c910e9e1939e433408171f09b038b70569d3b32444ea5d152cbf26a1babf464c483f9702b7cd7d69954d9b26a3b54cd15924caeb5775cab817a8d2204a6da5d451ec7d649bb756b6b7e0cd472f96f4f854da2c3dac25d8fe8b3221c60cfa9ca03dc482e7c5630e9fc8ed5b52329acfd3d0db92ca0eb22f9cd653d019bf6f4f9cc426e27071b2ef0ca0d2ed0f4e82a69b61eb9ce05006d05108d1b516263f1f712551273cee562af6da0ebdd54ae600d4f5a0fded2505acf91008eca7f28261ba3ea93e13ba3c883f3f3fce5f07c8b78a57e8c9060d1055a583af8dd8ccb2209bfe156c3bf8c8429ec3ec251b005b6ed216711380d912612bd92756970dae1c4e4d94f13bc1984448710360e0ce1041c04369231dee1f3edf24267ed4c7fd1f832c1ab196603d531445943ff1f36c508665281994933eda8e7cd2813cc9c4033ba0ac4bb31a20618e14cee7bca876e56029a1100974ea5176425d6d8d852200e15bec4947777a57aa153a2605c94df500717309719d8f5591eaab2208ed58f1f30232518f2f83ce42302e6819779515eece150f5a26ffa95c8bc52eafb0be222c06bcf025c6e72f84367a7bd57feba1658c95aee46d61672ed0b9cb4852bb57c4718e177fe370efb2bf40db44ac8c570acf02de315b8e67357435662ec99848e6b4c89e13a4edd4381efaaee0d31d5174efe7d7019190fe71bc9c7c366aa8ffe33807cb07894824f10113437cab833c13d74741cb37b9394b8fc8adf59bfba3d4bd36c52e3f40f511ac6f14b82d2d42ca53940139fb1273af1c2418987a7ac737be9f3caad791b386cc655fe1e64e43e225fbb1fdc94966d1b228cf000d76a7fea215631a0893bb0278039f3fc8ea8c1f04497790a09586aada429517bfbf7cdd4d88407a08799c2b0915e3d9c053ed0b6164f17bcbd0ced7a42a0c9befcc7de90ac69bd6511038ad5be73ea6ce5f5be9ba57fb4655db823c88b4f57231e1269769c172c089758e512db065781a62565a6e1daca3450d7436536d6c1c0cbd9e84bfc3619ca2294e41431a9cabe2cdcf5c690d6bac652abfaf07c47b53a567a0e8be5ef98e35c8a76bb52edf1d628aab7321745ccb6bd7943f103fa2d610288cef1f40bda302586d4709155376cd5eb6a8003b88b2c26d3b7258f00c7a76bce4ed54cedb5a6ba53bd090fa6d0d3dffd605c7ee87223f81321bad3013ea89036690e1f95a391ff69fc29fe56176cf10369ff1a87c216c2df5d0bdf2a9b88f6c2087f831d9d635968e56365c7a0dd2621a4ad9ea4a5265d0fba4305e852f272a119355d17789ad09c176bfea77eac75eca5a8d0656436bdd9c2161be4f0b6e70f857769ba35a7259f9033219e2e536f4893668fa3877d21535911deb9bd012f0dd6d2dff8b5a50868f8b5a7f37686284e36201f458da2803d00cda3bce269e42145cabd5445abcad5147b3c55237e004cb09673d9156d9759ee4b89f49d250e47ca1555f14ed056c89610f325906237c926f07ee445e64d8d614264304fe95ee088a7406a63616fd017413d320432996a08ba899c356110c5d17c31df2241efad7ab19fc24bb789c4e6b59565b62d15ec1e5a8a294236785cd59cd926945657c0b7b17ca12151203808725d871a831510fc0da6aded401667d0a84a0fca4b97ced8da07dfdb210fc30eb4d95d936d1bdf1ed7e47164f4e03c314e528dc515c6eadbe5c72e2e4b3b00e0e7c22ee182b8b338d9030eaca18a2427819342bb1ae1861907cd29b4e42fa0a78e0a11ecb330d0fe275544caeb57e4e56d4265c426fad4e240e54de53119f284a892b660fdce0160ec3407798f26980c956f14d793ad2ced8c3d908f5917dc8db717d46279b180165c68f7bb516f357a958e0221ff53331104bcb56ccbdb92329791397c7c2513a679f867688c3b1f73da7918d8050b356ea9687a5c465aefcfd07a5946896756a6337c7728cfc96dfa87461adad2bd9c4cb1ee4db8f2f358d5b59039f9944bd67692435d3fffefee2c124064ded7e09757a8dbbf36c059d869b7467cfc837c72a1ee6e08ea5850cad45da044005ef57e98e4102e756947987323e61e25dee8ac986db33b83b5d672467c308511682094761aeab81b919c8e4881e3690f06a638e40c337b2ec07e35db5bdbff3a4e3b36b23aa4140f88149ff9ea5798c12d5a1a6592902f0a76b377a924946479cbb9262878476985e8aefddfd1ee4c0c5aec8fcff2ec7aa2eb2d28d84f7c807c8812b736d2c01d31cc687f39cfb625b69ac8ddc2b3a02f28baef83335b6b0af64ae6360a6c6d891f86f848a39c8c1c659f0d3b155f129b13900927705228b4b983f448692308edc836fffb0025e0cab41bd24e0870f2f2bb116c2107988a6eb2519a77fed1d506026fc34d520043a24d33379d35a69a2b95e8f03f674aab27b82c53fd41af35fb7b0ed930109136f84cbe22692f9b59bb25bc477b4592ed4102bff9f218508909661022d8e4dcc682be54b631c56c62ef79d3d6f7406d0ebb7c283d0a1ff379f6f474045021a66c2b547aabb0d8a8c8209edfa92fc45bc8fb915ffc4b625c1a7a8c0d26899599c9470aa6cfc262440a0ecd5d016d2b928d914ee71f9e2f6c19868dd6976651b76300e65dd6e9c573767d8de20b95866a8c902da19cb3013bf9490c4008f9431af7a520f202bce4c66525cf1bbdc42c3564758ec39bc9d95bcf147264aaba10535851152e61a684c3c1701384678c07a02a88b3daa3a23d3f8b0f3732380c8b6cc4ef7f9ee5ac7eead59a04422a504528026a8b0ca0441ef45f80bcdc459cc3c0d99a0246d0eb131963152d7c4ce13ccb5085584177e432c0099831d0f54be504e318d80f7fcb07cc9abb45457301480d1f5c4c4ae05b673ffc536b197de4a9971e5553f97f6d44464bb274b9f1ce2e27205514e61f1e9024f92757337bd686ad2088e17915d75079f86fb20fb2730dbb3b5dee87ed593146b1320eec85335a3a0aaeee5ae9096cd00cc80b6704772ce20e38b609d154efbd68d6560332d5ce9789f80d950cba39e2259cfa06ffba7003f11c6ab83ff1e3c73715b59c42bae8d712b521b0de0254d13ad9aec16a169b1feb2c6f56f4a914196fb215341e3e8d3334d5fb6d8d6cff60dbbad7f679d0d5233ae899c3ea97973574a0dbba1d0f83b83556410c13bf58c82822054ab4eb02beca8cab12bbed76d1a5c3e33f9e4dd39ca05da66c6af36a3b579b78091ab7807985d8a67842f4ad36ef689844c32b467fb4158f399b1119d3cb688cdca665b9b9a27356e24eeae61a4f8c4e23cb02f2f7cf9ad487dd017db9263b27fcaa2d3c8f75c6ac0f458ac5c96dfcf637b74bb22c21b79f3f92c96440f70e1f7eb6aa00c530ae079157c8977f8ae26b72325e49c0d93713083a0e3862a10b8bee10415f7a8d8aeebb8526d5214fd9920024f094a0de47b90bcb2aa751299a7615875d292b35759adbeb8ba5f3b54208bc20c0969f3d1f35051d2ab388c13bb8a477831314c8154777f644a1cfd0124a875163bfe57972861787f34b789f0ac09316f7d55d44890b36f7c6ae94ab3a9cdd26eddd1302164f7f2bb61786e44d4986b10b80786420ccd8824fa3324e9c3d74f6147f5e12b252a5f036d79f55549aa953b94e08365d6a8de2cf61b90d77d69ad6523267b0267f7cdbce692fa955dc9df8b6c2377cc42996a62615d8957ed5ab64676a47bdf1adb6406451e56d8612a14b5154844780133d81e18dbd52e471deb29400564c2e7fb6196aa74ed4f200d3a0eb151072d3797055dbc9d302e71f96920a8c834dc8e79a565e765187183987162b77202b406f6d7731b5d159bbd53668d3c197a3c7a4311725b6bfcaff00f49ca171dd1e74ac15373700d21738a437ca2da9ac4cff28a5493c1e1ddd8b27c6be41ebb83587c12ddb5158ed4f5ee787e31010383e3a994aedf3013e13517ba03506bdcb949e27783f72ff682b0595ed1e5ee67d570005a9f519b2e8d775edc8b77ceee207ef83aa61974557d5dcc8b6f9bbfa83d0ad07b2f7b6a01ed728684617842eaeb4fd78f2482bcc69ceeb67718cdeb5beb353a58b1f7360a92b8fc594b40a398d4367b6387ab80d53e6197b01bafc648819c414e4da8240315196c12e4a34d32d1719934d702aa72703eec75a7c647eba77c5cb0768a53686b628565dfdbe2769e9f9f12874809e05805011003c2dd40a8fdeeaa9128e0c0c56f321bd18d9518f8505261088b3c9acd6067236d0516136e30d1b511e0db2a319cb9e3460d145378997e9a6e450fb7d49cb2e0229e36575ad6de72de5505500e409c03f03b8f3457337e545ad867d74b8336d71293f8d9c267d1fbf924a73c60239eb4e822385678e30758a8d6705429d4c14423f2e3b28fe76acbcf2c073d008af375a5752a5ccf4a6a4f6cfb46f8eaf41630665c6a44e75d3e800e900110b6e2279e9e31a11f95dfb714281a12df5db481f7680be413de8ad28fbcb95a3d6180f7173560183820bacb8f0e8e9e6bf3d565f79e1b0ac9174ddaa83d8674987f04fa238eece8dbdff789bf9618b88631adca8e1c3c7fff2f6b7e221ecc56425de222e4a3f7c40fb8395ca4982452d1b3a681411276ec42675aff13a045d0754cb4992487e8f021092d513923db3537fcacfa2315c5a0affa2aa197229f0504065440bf54732c86a3bdb24ff9c84b9a9fa33aa6a2afe7154e633768c41e4a7a267188b3751da031ef821f29fe0052ed1fe2c7d5a6409f4876b904a1acefdfcc5c4fafe6f8a59dd32421c5945815a1a5067ffc5137257227dfbb299c5beebdf9ca502e43f22d704a554ba0192120e6a6f4b877cd23b2830d932260eb32ae5d3647929c9ac2c131451cc4f8f8e9903b12098a8efe27424a38cf9739b4d5b53b0ac4c67b19104c0c75ff070e0bc8ac19ce408b6b840af8ad0cb7bea913d24c7b77e6563853b72f189562dfb5897a29168fd7c98339a4079747b5640793a15a65fe2071f4fd82a9bd0cbc929c478c3ff29d3b8ee21508f474d95b796f4989938d4a79980d47a349fc1aae193a5479267af5ff03b2be3f08ee835cafc0ef15663912bcf9bcf98347b314500ac52abd8e25ba59d75c481092db84c30c6bccb973b314a209d77ac3dc74d1ee2f74a544cb2b015127cfd5839308178415a62a8a191403da26f165656c09930a7ce8484305e97e86e3037f0bf7753872bc63c07ef7803a17ee2fbc18be8d33298d572cf3e5319ac5785bc81a40241ed6daff2e6f796862662d8db1a022beeff70393695649efed5af5e8c5d96473382da8cf8747f986021ccd83ebc16962a0ac389b3fefbd5608d213891b58b4890b6a28be35c493c2fcb962355d5728f86e55a0f8bf7c39a49d288eac25a190920f264cb8067e88ce53c5a231264a0fa7cc311aa45eabafffd11ec36a7e4273c6ea21f83c4402b3aacf4527e6fbbd016864e3834a248a34abe22ade1f689cb08eb70e7e34c41419f2f51292809bc5910e4437a076424872c3c55fddbf32abbc1b99974ae0a1be11c990035ceb50e0ce480219a3a82750fa13c8e00a74b4ac8f18caeb4e99bb67a2f13c298a8fe9873105831b476535095c5843213f32b2ca01d6d362d025516f6540741f0d109b86f5c59034e4b4ea15d0ebeaf398b45c557ca60a094df2b723e5c7539f2d096173973c216e820b2b046e6020e75aa92afa29bc289cd067a17dee3725c191d4f109031c17b7d939c3aa174a339d0fc9ebe49dbeac18bd4c50521beeb208da03d711ea9126de9e611175c84df4840cf7007228f512daec563447fa1816807dc360f7d0735309e601bc0d6d2575efc331bff5f46e4360275b943e7cb69dbc2a04ebf4ab8bcb523922cb2a8c6e089779739faf8a40eca7cfa4cf7e26b1c073166edf713ca06f4f2110cb161bd38d077578382bc68292829fa52b3b2aafac9c5e14a7778cc9b256442d6015275ef4d7bf378d2b244c3d7d0c3e3c05723f87729cea6620f5c56645cdccba6b108cf976fbebc2e1af4d2d6b9d2df59f1e6348ab9565c98c36b346535a25797ccf00b8187b6168eda3a8f0104e812157bf2cedbe740e5ab357b4b7cafb29632bb6274a922266a784d2a5e35a8fb2488568efb669e46397e305454a5224b4772c2329c8242641629c8e249a1f9f0d90f862a3eb0767c8d87dfa0fa6fa06df7787132ec42fd44497eb25f9e14cc633a4b5e33931609ff1018661004bed2a3850a62114de4fd0affd5cfd2b7e4f5173da80b9de4db86e643e81d97af2b15c892daf2a32f8b8a1ac644a4fc2cf51e93fea74d056f4dabcd9dfbc7e5c212c9d1a064c29ba16a4d06fe618624dda9db00f2cdd1a0fd39674b6ae871a9b1fb6efb5cd927665517f8f7a0507a83ee1aae5b15bad43460317c7a8f047588a341a3e2f4803f8da804759f0edbabf1cc8885feaba1d84d57b24a6039ec62755a07092e58df33fa7c9fbc27d53ff3f246ede2712c79640d74de8e843dbc7ee3add868e8b24b436704f386aadae8ebf2e1baed7ab3c6642e9c5f73c261d189a9097c811870cc90e4752dcc69b1e8541e55d68e0794236445dba1e24eb06de6d1e74b453de1d73664887b5fd40e95b6b7f1e2b04e38105bb0afb23877a420bf4e363335f20adaa4eeabd4b65f7e7fe8da717c98b842b9d72cfae4339d1842f3d06edc2260a53dcb769f548d5157ac6c1f5d9709bd4a8805681be8e20cb485c41c2eda510d1ce616fe53c49d6a182119ada3cbdf64efb4cb17226bf95751878cb2e8e019731bf72fe5b28e25e2a8c2f918fc15999e3793936d4c94921d3e8cc04e28250cbc228a18a2a8fa40bf627b895cd31d1a03202aa09efdbe6448c5cbd83b67dc1e522d0672e1097db519c2a0d86f16cf2933c43944c51fdedb350a8ff522e36c1cfc10761e9b431c56656304c3c723da330364b49aba93badb0293adea114af14e343f2804ad637f464c73a5a9d12c04c9d137dd48a702af05cc718933d6b8f4f8ed3fc328b63e711704b0144a20f407b6f3bd60ad4be3d513b04f57f00bb52613fdf8ec11171c7d82ea0345aee7eea6de894b55203615b8134b8a17432bc84448afbf30eb3826ece53d3b74d7c3dd778b2341941fe735b75e2bdd1a0a3d21a1f23858d52e5b733baefa8979be0c2f1215bcbd8542f8983ec51106feb9147ce281368c9caadd0ec8da1e9d95236144d29fd3b5c4351206370fe29759948fcdc1e51ff363c93b5068029e729184f77304f61dcd487bc82ac26ee49e7093dd49b74d326ff743a1e8c1dc410101c53c4f9ee0cf0ae473c2df4e34485502bdcc731cf496ce60ec40cee1282ade8cd376daee40eb9fae1c5242a4c143b6e65dadbff6b9b015642da56f1fe7b33f32787e8f1027e1661de4a7004e22391e9d3c8e9cfcc1359eebecffeb4d604cfc439c6403e9ef79fc7b1e44655c31e691ad67094659c077094a001d716cc06d28358b50611923d50810b14d468611869e05a52a3d63c61c175b6002276db03be7d73eb95e723b4e594a6367be1d01dcf187fa38aa74457e3dab59f64013e5b61459b5569a839b59a65e51468076afe4925b62e16517fc9265c9bbbec80316f42854016778ac6333733943db2029add8deaf8300568fedb0ce15ed71b1fa5da381a2c0c1cd57f82e01c7b563359e90107ba00148a038563c6232a9315b87759d8e4e14095ab677e1fe5ab0b8b512f1a5fdf38744d1c58225c3c8c0300a5aa452851447bd0f6484cefe753cbbf198339326de0617366c65afc134e7e4b53932edfbfb157a4be06e4e1b96af15ef08cd4a9e767f60a1806d77c5794d80e6975263ca5c934d7753fe8c8df5f46078cc19b6c44e5117f6cf5080a4a46ed5642a416516cdd221d6504a563ee8f0aabbdc2a5a5d526d2de508091036d6b0d0f24799c08bf57f309573848f2a1202a6c2e9354b8b8654e42e3b4780d409e99f7d1984d367b14430f8d49075e1fa928095452412166b6baebb8d314060208aaa26202d2655ea2efa521e84fd2afb3034d89eb6b6c9b091cb3f17ab81f0b150157f6e0c3b383ca5bf1b9871b908b528e6db0271c9cddeb41e28f4f4797351eaebdf80d21584a77ebad47922ec3fcf4bfd40900350239ca144c44ccb3ca7105af63a8716a27c244200ab2849b5fec13cb8d385c24b3629cfa54008afcd46406e292ea6d42bdf9452fc6fa8026b38fd2849a07d3f0501a4b1916a9b83866890dbec2bb89dae4618ac2d0c1f7045a6839e12f78d8e5c4ae302d0f1833c3d0ecfa10a686e8cd5a8a7fa53f2c5121991f3c054ee5423b1a4620010e03f2db5ecc1fb9c2be13fb8088160e5333f19fdeaf100f805318740647b8cc1c851af9936160e941822cf71dbe6d0b5784258776bf6d05c381ee07901a1d8eb1597cf7f5802b39dcaf529a2cfe0fb9266e6d41dc405d12667a7c2356043e233f90a081d337de5e2b0072c079c7afd7cf318a3b614e286e49e6d726f330912763511ffac1e24fc5201bc61b2b7e8ce323996442b9f85a01eb0b0128117245d6b75186cbefcca30f2b8ce4461fe607af21fd80a89ba078b3e52fcd55fbe4c50b36d50e732068428638f889d593cce90e227b6655c881aeeb4be25c3b756431b1f91e1a7c13e9ae8284ba87af904fe80e9938bbaa9afa4e32bb6decae2129a6338c30683a9f5608a6c58afd38b136e70d84d98b22c6792a1c66b2b924beb8a2d1f4d32d9c3b4a86cb9903f24f30035b3ba1af3a3d2a2dd282b762049fb515f5dfe34bde9765c138c13959d835ebefc60553918682e6fbd3b99d33d31582da78ee9db65618da9b275ac71696e4927d8d73e977ddd11fbb1ba24a66d68314c34c14c241ca7db38e41e05c11be2a5e99733b9cef477eb97446504043290410480ef53316e6e2ce15049dea57e7ffcd587ec5dfc36da53c6f90fa43e905fe93f64b538667406a79feffea85bcc278de10cf163e98cbef517a63ae0d7441a2fe2959ba4f4a44daed445bc4343f78ad75a295b0ed6d7d6b8c843094d9a8f061155da103c1b605bc4dd35d5a44ac951558e2d56e5e0fbe9bcdaad40a8d4c135dd8f491ea03f2136b9199d7d33dc3ca537c9e303fba774f463a519286c837b85a9835b45fe4c5237fea4e0251245742a4a0a625327407d67ff187f3e3a4c926dcb2315e877474810e6ee7febb129660881924076f928a85a7701781a09b08d64a8213d55f73630148fcb8a7fa9181a3b9933b1f585ea0ad8c8988ac6cc9b61a2da692c1d726f4de4a7f8c01de136255e2c71d464d4c3b340971cd3fdf28a3ab438802ce7a306a82f6aa7f9fe3d3b142f410075326822fc9d3ea8b4f59f101625c734d1fb6b3687ee48c4569c5aedbef01d2b421545dba0a25db066d41469ecc74798315c29653594e0c292b18846529b80decc59600feb9d7aa881e917e9ac26e6ae2cd8c2ee46784e58ad6d4ac141dc4abeec205474469a57f741c9696d55bb3401564929f844524ad1c6bc4ebc47d5f5833f1e208b0b790656776caa3be57cd85a5a51584825971ab3d9ac33b1ec48f976ef9bb60dc5bdce9d4b41fd54592c62c70aa1e3128641b301897481b8c083d2c021c3cac72251c0765ffb2c09a2e8b6d1871ea6173b478559cbc237b30af36aa1c646a7d3c3f0958c261aca1b5d5398e2e0a390e2910db47c5b01cc77b94370e766e10bd469c09e2a48ba435ad33bb12245421a640c81878c452f736ad8a8d5152fa5ea596f0199d39e0cfac2944c8ddd03ee8c52f36c6fd70a9894d99c1f15ce25d45bceeaf0a18f9c9eb7425a4e4a15b4ecfd1597d00f9569952d51d0b6c4038e38f5ea90eac4f8d2d3499a2609a9ffe52379e64f5e431f77e4279ced7dc5a754509739b1f1ab8adb567a232a8c50e2fb253e18309c2848bbc43b8b5b46350e3a6b635b55ffcb037e1cf6231cb449d408aca51a3755af8bfde8d6cfd38837bde47c9c68252f12e4b56fae7d2e80683e0e68d3507677b688139d0e80527088f3dc5d98066611caa8e3b09662994952f0d42408aa0319713acefbd60ffb4e679bfc6978c568070bfced125fbe31535542cc67ecad20d0e225f3664889f6446fa1e44241b085508d16937b528d26a482c8a1071791287fab30a21423429f9cf5e1221e98453d8f363b03cc7c9475f0d9395a043c865b5ce2bf8ffed6b30d9d6cff35856f2dfe83af9541e6a0878b9a90bfa81cb19411494f63cd48ec3958b4c78bea703112e7af15235615f320e245b777b1fc23faf7e8c7d666afbc44d17b93399c636e7a1ff0aa8fe9fb5e01c38cff981df817598a57b4ea88658afe03ff7c305d6417fcbc36ced6feb9da0ba5d39daffdc9da3b732ad78698736b3fa6acd55ee710413b0da6d310d589028ed5afa29b6b7a939740140b68bfe41560b26b731c7251099b73ce50d5f363168d97a9ef0198ba2f2b119a1bcee339cdf81dc18ce988abbede70c3c6cfd825a28831c3c2fa63ee136315de759f25edb76692287448c619a13e01ef1b34a3b32db5eec77fe71ffcc99d11636146a8825fa6175f0a306b0100eaa88c4dd53381d24197f28004246a66efe0e7ca860b39b942b58d030c220300602ce699d4f3076a9261423d0600286165bb7020490090ebc5861d5f82cee24438937f638f13b83851e88dd4d0f6adad22053e28558a0c0bc370930fcb53ea8155c29ac589d0f9b9ebd0f991781f166989ff4df6d20994e22a1ce31efb5705fd27550b7bd73796fd242174c6ce05c4fd1f6349a76f11e9f1d7a353e9b96890a4370517a01804b4c894dda9a450d48bfb66d521b7bb9d0ff552a4f9f0228e22d60f85e2bdcae52e4dbd3b80c52c187daafc064410f34555cf32ce7ff95f8957e414b76b968687d96739aa4febca6e0f986d2c7adcd7bcdab5498b933bcb46c74107842c6345a3d3243942d6e2e20892cb1a3dd85018b36353e6a0d0db818dd2975e63dd7b8609122f90750e24f2d6f409b902804c66b30bdb1e4a8dbdd20bcf65076fe946bb83ec22e3eacb06b42afcd9794420bcee13b50eccfdee018c1575f1efd5f7892fe92ad1aaee3e31ea19733d9eceb47a62ccb77bf9e4e7167db3452d9f04b975ddce83b333cf4ad14c03da0021b000db27babb9767ffa685a79105425a8e49535a75b71d17edcb56d817ef83a6a00f223f21b1e158da1188ec4d3c549c952bb422a95a150d8510f0e747c5da206e49103b5d7fcc8e9262217fd7b941ee07f38e101b3db086dc12f52db7c076cbc5a3c95bd0829983416c21acbeb34bfa53984377da312e29ff9aeaef2f6939e191c86004695fd3d6f721f784e0f48097cbabfbbdc0e0e6e5e28b1f2851b8e9a77a0de3862ec9a7dbe8454e5d8980c478fd72312c0e5b423dc1269098f0bd102299ef7a3b42ecf392dc4b8aa4f074388ec04c9620fbc224fcd2f5a1a68594a220ab0de148f6e16cd2bc9accb64a1867c0608e0033d1d0f234a08106c7b4bd5e4a3f4506d03f1171a8e87f3a7da948b892afb03f8271c5625dd29a5c4932fa916b9f8747136b8928af3ea14e56466a856bec83e0e1e9a282c2871dffd7c06cc9e6876b0fda9146f7bbefc66c8209894b655d41c8c47a8f5254adbfd92bba5066d021551d65c5f2e357799d845acbd4b4b8a1269054a1ad8ef460f945ef4cc0ffc0d210cceb9fd472dc498005dc5f6eb49dab85c7406ebdcab1e3ef233a221f4c8c189f2e5edc103794e0a6c02f6f152770941e939cf09961db0e79472dde9f3f034fbd43378590c8cc763802d4ee5b063c054c82101ab3146c3c0eed846c7f1a8a3f8a523a809e57c52d69f0560ba7054ec32bea88a0272647bcb8f90585551395370c9adc5f105873d7f208ffc9a43e6ee188c7bd988a856407499c080e40795e0b07d9c27ec155302f9c13e894f6c53f059c727fdffbdfe80987068d405fd0b762cfa19f02dea7b718cd9e84495efce6460da18508cedd084b019ec45ddb1a0b00120a28365001916e91b527db63f082d80fec9f7c09f26a8e54a2c98cfc187e7b17cdcf0339375b9257b8d641011b185df25885deeb68fdb3a4e5c018929a88af31f4186cbee7e514eda4e14e5c07556a4fc0b3ee92ca59e5b7d0515cde57d091db5abbdb33c747cd0b50fadb7dfa029339290adbeea85468447c4ab98ca789302ea0032d73e81d719850c166179bacd82a48c4dff8a9d6c783a84c0bc831dc1397fbb1385605a8a014bcb3fddc20fefc051d4fac88daaf03ee6d5aa7d91512f95a0620df84afe89f2187d1baebc56719e91cfb8e231eaf5a03455dc2f8e3803763ee1f2684340407972f2b1a2b037f667852776bc82ecfe7e63fd95a24b170bea4913d2d9c57436adff5abaa92ca01afd104478ba1c70d5d588878490044ba4f7e73b8e507c79c9f293b9f5f5f246aa06c06c2191273493d47e0601f511b62f7bbbe847395886f8e982afaf2979ef189857c334353ef3996f9182274e469787b6bada4d5ee32e21e4ed30d55c39879aec4acb5e05aeb192330ce3747f42302b61477120c0123f24151e8f43e280055a2d1c32bc0acec773c2d819981fcdb9964c051e66e64f332d310238ab2b1c19adc4ce4ba7edf09e80ec28528df251b00dbc716d559e563bed81fed6f53f3bb11ab9f27faec3f82b50f01c1fe967fcd6d8cf82c3c31840eac89f10824df8f546c75c487e388e28bb2f55c7688a9bfbc974be7c08c8c8631274ed4ccf52205667158d48e8daec5df2f8b7320e1b13905cf8fb5d2258c0724acdc1e90c47b5d4570f0cbdda50b2ebb1518042ef522bcb0de3a4ec96a2d1bade345b93650930434d93c83bf0f43fef1bdcb9e1de39e07252c5cc523fe6fa6e46202479f939359f5693beadb30cde7dd1984e1f3ed382de74cd14844d038b7be6423986cdc1525c8b38cc8199b21f2e9615ad39c27b9032f6c8b66565bc7016f44361e8620d0930096b3704bf7b4c9372d0db1cfe6e0c7ee5a85fd3db6f9cb7a82bfb5f5369c88f86ddc7b5f098446898a55bb5aa95e0edc48e3a8e0836be815e7eb189b62662689a369a73f6a7f84ae83434188fc1f12a8276deb187c817a8910a6fdb31fb206f560fc42c61cbe0280d000a9c65ffc315fbc21aebc355533afad958915d41eee5fdc100d20bf69d69f363f2a6cfc5d06ad0bbd3ba54513fec60e3df6740db1a15954d5f00643523758f26b375cb1869ae2dd18b848f9c7e0713d7986abaed628df37806d4e8c3a416af30d3afaa25011d783a2ae59851a44a1c28f37443c0514c7d0c88203d100ee75cc9e0eef85928d09185109b5e46baf75e52b2f0e101867df99fe0096520369a676e98b91c8b5e1c94d1f77282c14b38cd6623c305799d4a0fc9713f83bf0980539967d87254d39bd2be5cb4d15f3ce216700ed1d06a1aee3cb410e2539c4f1bf3ab592f60076e73fd5732a41214ad309b68274a2ab3876a2c5f1e507cc7520e50d9dfdc4f0070d742f0b16a51913f26de880c4ca539c50e19dfc9e89e2bb8ed98802aecec8da1714f00fb42fd7f3b7301bcae10855e3122e5c3539d5bf8906bbddfaf503e8257d3926b004e5e556227ee30e02ad85aaeb78ade49e3591a5229907bd8328c9d96fa6f365d6f32edf965d673b17c5f0257cf43de5609547a490e91fa55c00f33e6d820969d29c080af7207a7f94ed757d5f38a8311ac1728e90b04682d0fc86c490ac3c049797efb1f610f0383c7486397ba94c5c0dd4bac94906f720ad1f3dc5586ddbb73a2c04b1cabecd7d846959d49ab6d8ce60d8c666b44adeba5978700fb56f76bf8fcd071886f59197cc773789bd0a6cf49306711efcd4837a02ffbc140fbf31505dff2d9f1f89903759fb73780ad7f11b4656a1648b06daf18f1d0913094743a2fae057e2fa0200371a9c972757b13745f0b6c84ee0a1d529134346ee221a7820a4b3ab1220cbc02377464e54e2b2d037d6d0264174dfe7b8a598bbeb270897273dca967e39fa40ed8d24b5ced6d729a4a55424f8665f0b19eedaa0b3b54514f05b7080a61e7986f76c07083617bb4dc420baeb5d1c6e24dfef9e4277ba0e4b4c1eb7665334785c3bfe1271a335ccb044045daf47f6a65da994fb27224e35ca9fe0b4a9c4f44ea5a8437867f80ff77ba929fd95e1ce1786e598ce86913a2754f673200ca5d26f9b341cb5800d966255b47942ac36f6af25828b870ffd9e8fdb0c7c313e12636486c0c45276cecf5c3ceeb8007fce1eb316735b4113ca95859f074a222dbc34a3cc8c0e367bc2454b90df4ff2f94733c8aa044ef35f9156ff8c84d6d09ce81be72e86828e3ff241fb7a26cbbcbe75d8446804a07c0298192209d0653371ba97cadf234fba9c0db58ce0611ab328f5a0a50aba16f5e0e799cbb681f3c5144d112a98ec2901c4300d14b13f6fb9f1fc49aba5ab9138e8bcef7a404519b70bb6da20047a417264fd8be11ec2bfc8368a88d8a1cd9ed97fb1756e9ea1ce81bd6a8ea25833072b743afc0ad7964535659a18cd3363ca5a8c92d8f25450d6c21ed99ff6fe62aa298112bcbe48e428aa08d1acc6ca68cf8104a8cd27c340cd0e10522e9a05d109b108f31f432cc814edf6439991d195233d8534ef5d036d09076eb7fcbd01ad39ca704c740c10be012d7548e254ae553e1973443584def1b6d6c564f05d4fdc15317b1525eee1631315338893478d6e60c2d3c985cea73960ae98e0a1b6a35597aa3b673049d5ae8fadb4b42f4437bab9693727aff7d90be42fafc7c0750f1520a94e0d578c854712dec1640256270f3ee5cf201fd74e7e28d08e6d3f4a37d8620b486260f3569a78b36e3867c9e97bede8c730a19e6b94209e9e1cea3045ad1b03851c29e75204129827c73e222c415efbb069a391b1151f6dbf2d909ef5e8a5d435293ddae93d01ff35a15b029048ed62a305ee5b40f855a0553079daaaef813872d651237be3948618149620a3713f1001c355f0e3a52f3bc4ac1ed07345cee71d2fd01f2e477b6c44196b7bd6ac4232a4afaf8ab11cb1e5806281e79ce721ee04ad2567ae6f57330f51845ae0bd43981a2e91b7e1768150fd584e6bc4b130177780a6c0cb3381394b2ffac919ebed4aa67f1c2310d58c09c33419ff518b4018cdb4501abe6d5017119c4fe0f987e6128cbe221fbc37459af10c0122274c4cd9f14b456f3b9205dbe8b7c12e6867c388074dfd02b818c478ae371e94efc2c823c6b3033ca4ac7274aad3c0fabb7c6e189f133d5ded7907d4698347207984ff661ef64644213c8f235ca68e4eddf8af0a3d857a10aa99ea1cdf8cab75ca8bb24c19a7ff9feea8b72d9e6a949c316213889485bbb3aa428f819e98adea40461d4075506e1227e4db2ddc0f901225b28ce871b135c86f21526ef612a0f8593c09a0884245a0cc881fdbc519e9d00f9ffcc0607908a8ddf7f9ceb929158885e5517e6973fcd28931df4587005b0528c626e0193fc76b95a94c65d44404728bdfad67b878dd3f05c76ec5f515257c5f119c4c8980b176ace38061d86e16fb1135422049a0822387518349a988a5dcba32388181a0f75908467b7058686cd1632b7e26e7623b0eab81db27cc374d5e222e2d3f66e0dcb36f4990f08e4c209465100beb5565ef7259dda40101400d4435bb1f6ffb36bded5e1090f1584ea93ce3cc7743014b9272271f412d814bac7d9e4b48d8a05bed2929de66b53342047f5be526e1b01a5200f3582dcf2d64d9fc879fadd1ab8bed6f8c486e58d808084b520d076203543a27c386259408987fe38e867c2976a2359d1462891a3c024894c13163f148e044f9554f1a640e34d0a8c0eeba6694a8cb06834a9fb5e8b2610d928fa4cb86fa1bd481e29bc8e9600f7177347ef98151075c1dca113d45a2a6dc56b24869afd4ca058d64f3bce421eafc6779e25bf742696f136ba0f54a1e0f08ab3ab93c81576a2c3057b232539341193319711cf46033b1831b43426ba624c016793ac57e9c90bda51a0d45ecef5b087ab32947b6fc4001a6ce58299fd219bfb137897191f487febd43df673deeab8326d5aa640338652bd6a1d05f3f099849ce547e8d9d26cb48a0e11f74dc0915359a1e3c68e9c14b39690df85d883a0c7a1ad9728cb8515fc3c677aeba77ef91827410ffc062479926111b62bf210199c03f53f87df98cb17aa84d606a779e8ebfb7f0ad218e172b072f6b565a2de33b262a13de0b9a2d85416135352969a26da75d7eb640a387e4e8ea2decaed0cc9c525a2d3a1e254c68e6a7c30c25831445197fce55441f61b7a85e8950fe9b2695423adaece64f7eccc7993d9cabf457a76c1b420e3111e7d552025362b271a1bd8b8f4521a9c4c018804860dd4d0fa2f796edb970c314a24651270ede7b98c66936b193a145497699f5d895ca9e28255a698027c12b98aee8225e0920a9bdac1d9a77867d6bb31a6fd61483ed4b5563f52a890f3557c39ea2ad795736e56b7fd0a23d3618150e2fb4db338115a231700a28b5dfda939b54967516a108380ff47229cfba6a993cda3540e537bf9516707984731282b42d54c26cf6f31602faf35007b7a8eeb3ae79bcba3732669c58448e53f0e9b54173fdef6542f126219747b2b1860a2a6b8ea01fb1deb8079c4e41962d3c002dabcf22c0014ca2c6f51f29eef2a8139fa21f8fefaf5d0d9e1afa09413de4d538a6fe08ff0c9ce4719728f9b2ce40fe55a2f5c2828611f296c8ceffc0a48d13aa730f7566ec51342a8957d7983346ea38fe59fb9b9ac057e448a87e642ebae0d1fbdc992159ddc69552b30b85f98629797b577808a9adf17e60e1e774f837f44972c62dd00122e0209e651ad3cd22c8bde29d4646210ec98030987186d3f03cab93d9860fdd11f87132f90bb18cc46fa7a513d346230ca0129fc090887cb3e13a7587d6ae1cbd7588f24796861eed3435f0a87264c73826795c62cd911053330503e804e0d345c8f108f6c9cc5a4a6a79d5aaf8575128a1ce89a663d315728a656b189a8518e9838de8536375d3e0ddc06628538ca69d806c601bbd0b6c04e23da7b50af2e0c3eb044bc090dad314f40cb586e6f10e834532a710fe1f6af59004603091f9be08e2b91a3c494795b35e6e768155ec96fad156c93675f264b3a0e0868076df0a703120a20bb4bd2ad14b85ca2213265286f0171f9cd6f6eebd23addcc1dcc031fdad106c49e44c4c47a6dd9d245073ad13a2e17d61a30ccefa9c5ace7bfed7ef937605086e4a54cc6ca3aac8aa15c43a1be754ef1b526d456ad6599f0892602be7e37a827d6c6afd6d1d906bdb7b9ab556a28656aea09c1c03c39cc13a4b676c24147cd7575128b7a8e6aae36594c1bf441add21f72694ae98e7eb0400470656cd23455ed5f7dc7ec57221319f373d145ba80650142f065a22b9b8cbc6e2103e6d72bdf9f52f7a048c2ac74fe503f12973645f23debccd0e77c376b04a50bfdb9f9549847e37b10406c2084482595c36ce11f1726a383d9e9433fd0e9203a171bbd59ae0c56d18a4ec06bc88d5dd182c38e85f4bf502a5e36d0bf81cbb3a0eb96c1ba48bff12d39bbd0214974a8b844701283b13bd6818a8fb22254ceb00e477dec8b9f3e656d7bec82ddb79639948a71006e2e0a0b78177149a3202106f507f59e2b58443b7f4cde8fc900e4b978cdbd1a61e4d1d6e5d22379f1921e3caaa48057345202c672236f5c7c1f06ad27651ee000bb7c032427d30c6db0f4e5968bdcf5c3e8073fbb0ef8907aa6dfd11b6f9fb7007b6da07fc845d41eba528c5575774efb48266ee556caaa4ad5a4c51f9b2acdf88a563be7118eefc0079356d28849cf081ec24355e6845d1fa139352adb8abddbbdef467d946829f702bf4b3a1ce0f8b64406418c176a6b91b40af1dc876207cb757fd5b6536e500f141a57a4a666c0b1a32d49da040c73c34b46d27f4ffd9f10ecc2f08e6dee44190cef2851e690c7627f2bf5b556bc121d91327acfc9cf14d5ff4bd1244dede5402b14a82f7f5227099ebad60698db2353a9bbc0d458260979404b739d5caa31e6442f440e28685483e83420c1474de03c27b1713759d6f23866995bd8eae4ce0a098a2e3657df3140a9ece24c13f20e77a4948550a23994d6ce89154546229798b9d4af8128d50152b240dfa7b0873ca076ce27de551dee95fab33cf846e985a31a64b66a764897ddd76356bd03795cbf05c82a918ef2cefe73ff87517768d3f34a4ab8405da410cfc046ecb54d66a1c11d2e59104a9fb41ff268ff08db382ceb7829e7485ac9b2836ef9ca26cbb962b454e0a8d616c12814d963e6d1787099aaa7411c2ff7c4b5c2a31d6347ed045a452b91b05c21e0b707ea7d76e5b475298051e608625fa09298adbafc815fae12953807afc1811a9cf8dfb8ff3cb4c1d0c4538ff0a9540cd788f69d77ab09720d6c6b1e2c659124db32b0332cea53747288e89672a040d86fad76dfcf3f4ee0d35f3c035757344698341d2530b4430ea4963c24df47d4793bd7df02de104ccb9026a6e46795b4096914d3a19c560db4ff943acf61de9b01f8a011ddb562fd05eb09e4fe45af439b258efb0f88fe9c197ea54d5a29ac0760402884000d0d4efd824d4f7936bc50d09f76fe61a08a327cb7a5b79adc33e41b611228decbdf7de72ef97075e073d07f152999d28e361978f32997af98b3240901c663374c065ada51ae57bc950652992e54f6aa87496fdd30e688a03bff207f9964414811dd5ff2e3189619738e68b6a20daa32a94d2bea53946fc591e72c45f8d1a327685b5cacf2c256b622d9bb8d4899ae85338704078434c3f9e50c91f118df2693ada8b407bf0dc8e16b5d70a5c4027a5a794524ae929a5944e39e7a454523a29a5301ca5a794524aa38a948210048a014cae41c423062f36689c74e748ef7c96f8458ed1271a11a911b30702cd77f74121911670f3307a34882802b6608670152f7d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a463b99e40859224f57e4cec86505f6cc60097af14748160bb8125d1766019563fc1799c8f219bcf3521b9eb471084436209a48941264015d3420ba341228041214342020bd323ef9c3841ae5c358b294e9c94c7c0035c08630a0a046c1ea8c28b86f06dd7b6fc530927befc5f776f7defb7b63dc7bafea5e18d65a9bba1765adb523d6ce60adb5276b5d586bad88b52f6aadd5646d8b5a6b0da955865a6be56a65516bad5bad94525a2b49cb28a594524a29c54a97524aa90ce8a296d23e25a92424b592bc56925a659ce432486aad3a3a4092357756a26bfe8026f140988a0f518f50260213599e444637736aadb5d6eef55d9d99b93992357bdc9fe89a319838d767dadc9ee9e3ee4c286e1535663865e02a7626c19debf1ebcaca9d91acc97271a26b7620e6debc6e8dcba5f1c09d4245fa489fcb2259f24726bae413a0497c9098a1fb0a72c9f23e2181c055ec1c0377ce5036361648b2e4cd5d892ed903d97355762c518e158ae23281aa79bd6c8e644918fb135d12053eac4f0fdb2363775260ab7841e1ce998b1eea213b23594d6471a2abad70b1372cb646c5d2f415760a172df46267c7b24856f35899e8ea2204c5fcbcb2b42e47b04fbcd081abd8d9458f1e1548b29ac6ae4457cb20c7aadc54a29a2a4403cbc40c0b4bcd91ac6ea93fd1d51f90a93e30b5e7a5ee80a056b12243fc893f38d115a950b921ca51a8d2c429d429a2cfcd4dc5a95200e1a92f9deaf283fa840d5cc58681a140921563ea4a744515d454151a4a344385585099c85e1a86613c78e448fa135d1578a13e2db46785ee402fd02a4a3b325b441133926504c5892e0440217a0381680df4a1344aa0535822e02a524a29a5f4524a4f5824ab864c74ada27cf1e092257d6244633481ba65e3375d59c9b2bbf7cce9eebfe7cf4f96dd73a65bb6ea3d71264e960de33d59ba274b969d7a4f99299365b704ea964059f6c84a96fde22d73ba659fdef247fe64d92d67669a47ce64d9226f892371b2ec166fc9d2dda6b794913259763750770365d9216fb92257b26c19de9dd32d9b7bf74fff64d9dd33ddad03e86a9c26bd9b25c6c8d6de2d9365b7cc8e6645a06ed9bd92655f02d0d52ba5775f076c8d80389f9c7e10d0157fa2893cc4e178684943de67ef7bdddd5126cb7e8d3824b0555931ca4413f9ee70d761dc1de30e63927727e930c63b730748b2260f5d89ae598420aaf2430444e8089409926eeac438c63ffe31c6c7c77f8ce3c7c0ff678fe3d92347b226cd4f744d19e4f8cc9b9e59b333695005fe8d8e81bb39130377ee60a87e95ea57fdff5557a9f07f7c954a35595478b2cc19c99a2d38d1353f30656e26ccac992f936682608aff46c37837576648a954a994ea29954a75554a954afdaa5f954aa57e5258fe4c16c9924032d125a98026f12a31442f213985f984ea377a0655277de02a7686813b672f4652a99191d44752a9d45323a99111d55357a54646466e46b0bc01922c89d3252bd125a58026f140328fd49142f2079389d46ff48b54276d50a79191d369e4a79191918f9c464ea7d4479e1a399d4e12e614637ea24baa40d6f8489a1e39b3235950c5c86f346aa4932f14eefca285c8e9242272bac8e974fa49e4242232f2d3474e222222444dd45eec2038d1d55c902f37b245d6c81549e385295a9cba1e82ab6812113199446e121111b98849c4643a5de4271193c9c4638a3d32d1d548108a01f2912e4a7842e437da8548d73b2e70e7162126534888e9212693e9a610534888c84d1731858484d0344d7bb17dc895e8ea1ab48e6c9c6e9bee1b4853d73de02a7221211c17722e2424e4215c08c7991e725308c771ddc2c576f989ae6ec22746be9ca8224b16215db3b0c09d65206d1cb76ddc378ee3366edb42ce3d84dbb60d688b4138d115a97013a46b869aa60a53647912d7c59f92b66d9ab65ddbb6ed9bb6691af7eddca6691a0e4eb34856cc9189ae08049f989ed74e109ed862de62e711a66918a61dd334ed1aa661d876ed9b8661588c890192ac28d3252bd1155b004de26d7c10f5c8f1cdc448eb224c7631ec5eec17c3b08bddab1dbb86dd7b33707106da8b51e527ba2cf0f2893b190c5564f90ceb78c055fc68de3be7fdbc77de39ef9cd38806e044d702866e826a6464c21459d6db15015796ce49e93c9d73d249e99d94d21ad446cb44574c0e4f6479d259d3b4666140b2441ec87472ef0dc6d294c6a69f42ee7ec7cf1b7b9e76a653c4b090e54588b87e04922cad3196e8a2d0247ea492254694a5b421c8d2cb9b76f2b8632c59622cb2448eecb5c1dd9c72be73a3c949b330a02e912e280016c922c08d2e1bd004eea0204b22b864d992da9c81e5398a11a309ace0c2104ad7609e32c85481798999b32751cad92b561a8d5c462c231522200c68fb68343a696403eedb3eb21fb98c460fd972c867f3234c5f9a43301f15ead9c9a1416648c1f53f182474bbaf3feaa49ca32751caa3571f89ddebe3e3e3e3d325f63505def1692404b2a8102cb1a4ec127fa77c4bbf2f5d4caf80ac78234bec7328186e3c70e344b63e2740b1ff2a0bb23d24014247c79e18a47160ab5b687860b22c072d872d88923c8188dc80832171bbc095fd86bb046d8268621f71bff4ab61da4709774da700aeec1b05d0c4fee224669a6666ce4e073781d8ed68efbede7b311f580f4c0683c15ab0967aefada37ab1966c8ff9e0b6947a47f75e5e765f7f7bbc91f7725cbcb9f9e447f6184bc896722f3fed5bb3da4596d8bfb418d34ccdc90c9b1a1906c52cc420d8ba41312806c5a07b4727fd7eb7d3ba2f43826bcf22b1753b6e37011d304847a3a0faa806823269e0e54ef7489806cda4c970d0c4107db467274fb6efc9d39e85b093386812db1cf1a4993e66cddc993cb3a73d3b730057f61307d064da4c1d9c6c6b95af407c787a747670b2bd8d665d1f5d622f658699c6490d79596595554a39baeca08f6c7f81685bcaa89bd9fb19d65a8480235d7b26a990316f39b6774fa340fb6d4bd9ba19f3d65d6a05a457609129709306aeeca95074c16c4f871a85a8515eea6b84bf59a351aeed4146863dc01e600ff014b27a8025f6f037206bd2489be1ec01bacfa9074a38859a388d40568425fd7f642424a44718c2d51233f79328c9df2d47f6ee96d87c18759ca599373367c7fe524c85863005626ea21a79a2979576fd32fb154393b8e64885e8507b44ed591a04a6e76507cb59b9c9f6a351579ed168464f0aee1e084fb6a7c15217d8aad99ebeb4f571eac1c9640a93eda94db3a85097d877f75d1c4e275b6be94f3ffbb73d3becbefa6a972da5bf754bc44cea3e12ede22a836b4c85a91153a22055052bb183a360c8f6b4089ad86f7889bb0497e5b11ac9aa337146b2ea0ae693f39b6c6b6ab01a9ada5283507b432cdfa4b1d97efa4c1fb025b3bdf63d69a289d541b29d1a258a3e4db6873ba71c8e857559e60cc949c589e4fe6613d9fedb729f42d66c8246f5ba3b9d84f4eca42e9579b305de976c0fe184c9766447f6336cc07d7dcefed26c295a2644d3b72c2ad622b1bd4402840e171f3d31480c4e03b5d0f048a2ced83d675fb71cda6fb744ccdb69d87cd84add8e98358947ef8e0ec195fd0853a126b8fad1e50f4864b6eb97f65c5c5ea008b97dbf3a0032dc09572d43e7752740524812ed785a0d9b0fdd2141b2ef9b6fb86d6cb2cd8dbad73a25a6043257dab3b73ded22b56be252a7b74bb6973d9275d2257d1bb96fb89cd3ce7bb27d5643cb172711f36d6b8ff96c29b2d3ba2562be1dd79e7ddf8e6ebe30b45089220c615841187070b27c7f76f70cb88f8344984a9e136888858888818bb9f7761f976937fa9c36fb6c2021ad256cd1cf1ffd4d4369fd4e23a2bbed65a3c797f620ab6f64c994ddf5abbdbe995c8e5dc364f0933da48e9c812b1f702adb3ff94322922d8df2f59c37999efe68408d82c40d1282ad9215a35bbad747f600912aedcd1ea91259dce70c963dbaa46fb69370e7965a07a451b6db5263c512c092f97f642404bbddd741ff3901691ec9bd7f801a85725d94c973f6bca8e190d0be23feccf801f7c9211883848080833f6458328c8e76149a13449232599c204a72078921f6f848a44e7b53cec0d57c71c321d1df21555ef29c48d0b989807274c3724812c9205fe0e6e7e550a3a0bebed13a54cc9141a48edc6914aa5d97c6e9a0939c5226ad5ffa051367bef21127cf4f0b126fa24d0dce6c03e1be696f364eff1cc88987d3c9f3738610b8eed1285f9f467e5ecec0d6fdbc94016cc5244a345ff9081b251f7f51b2a331634d9eb1697481ab19d428584743ce74c9fcbd1c773a7df7e6e8f2773483759f372fb1d769f88b3779c2084c6ee6ee3c0f095410f2f9147b2918ee4be598f2a6ca0c5164302b69ddc1b902854b35e59acd39e79cf4325379528411a95c39f0f62ac5f318fe817ed27f94fe86a4f0060877801008b91e42f85c391053cfe0313c6137db9bdfc581e14c6ab3ab71a3ec0b2fd6c1fae38920d9abf4c4f48a61bf9fb937ec62d75a9a98972c6a3eda8f9072c485088bf8842cff99bcf82703f54f2592e14f6aaca0cb01d044b26ca0a85487d7764077c04108011209ff004fe1e9e91733148203193e5e1e0101d86d243cf10c1e4e7514fc77616ccf6060d53718aac350fd466ff8aa6c4854f771b0fbe0b5bfe8b44ce586436a98874cf157236b9f1b8e1aed69a790e21938dc47af05e52c6a5246095b76df06f2d6cd5c925e8d1aed49fa6feb50107627ff36ec105f3c838643c15f14fc08de835d8ae7e5b963c2256e2ebd371c351a0576347ee548f7dd53f75d179d48f78f4887df48211df626e460493bea258ca21dbc129d6197c40654b2129d93d8804a2ed197b01271c3240ce14a256ff5db804ade7173bd9d0e928c51295caee76047499af73069e1499d1de19c1c50456d0bd9a4d1de84f5da6517217622244be324497e6b3c6f760e9730097f10e883423a301c011d36b27ca68d81fbe04e061a450822242b3da88f917fd42653d89ee91fc551fd131141d57a138b8b5416aa9a42bd18e9be67169d49b2a892be868288492041fa8e9851d76e5f9de88ad0c49e5a9bed7532c7953e7ac669ff0e0d81de69c4468610c34e6aa9542a954aa552a9542a954aa593d682041ccc34d3ab2ceb0ef50d984ce9d04f4ba6742553fb6f95a9fda743a6a4cd87b6b6fb46f98344df1dcaf43c60ab9ed219361c8fa8e202a5dd1af2a519e6435b3c473f797637646631972b2ee5090357a39772c5242252ae78e3d972c51a4d265b2a1e018d72c5180e962bbe1d6383d85c71eda9b962ea83e68ae7a8ea80ab111070357a8f60b6204ab2c4096a8fca00c4a1361cb785083894d3e933d0282d4e5d9c3e7600b6424e3f5f00593247b200a270a79fafe8923fd1849efaf02053d973831c2832a5af4cedb9abb614ee96b39fb79fd6ce1346dd056e81e765b80c42cd6ebe08e14f0655175942311e31c645b2a64b779add776f7eb3a69485e02426800d315f9a2f4d146a76aff6a28ccc1213bb0cb38b1968eff2c8407b14126519d42c059cc63c5f12f06fb620e0df5c21e29f0c92e39f1ccaf4d545b214d0cd9a0490fe1d011d115d579a35d3c608dc376ba0c801ef65254a4f620219fbac91ac1c1d8f2ea1bf9763d17ddce93b91baef5e49e742b89add6765c0dfcc2178c7cca54bcc0385c2eee5eca50eb6f7655d8c91812bfa8bbd6e38e65f40fa91cd4d8cc930ec62cbd102c38644b6947babc4f4a87c61df81c3da0e95e2499c98f6285773244ba3a71447efc9d7cd89eebc3285b9d238a9d15e861bd0f245a94eeee3c4541fba3b812b9afb59a791b2ad98013a36a10522a11829a55185521a7dba8184a65086c22767521329aa91a5b92a69b5b803d0647e7a00aee6a3cac71d217de6ecf9a822292c997185a5429882f0139ada8b34e4d49e8e08b4177fa970c28911444cbba46d54b31b23a5f4bdc551cde8864d3abb0fd30e6146c29da915b0f579d948bbd97502d3b4d1b669244dd3489aa691b29336baa568cf46dbbcda7562344924396a98353c9f69a974394ed3347b374dd3346d9b983bc5f2b1f44bda4635e3301a638eb4f491a66918a6699b76d2865deb6ed237ec924422c553d2b69948a41cd89b84914899c602b6ae6c026c6917cb8cd14a226118866118866118866118a68db40eb6976931c61873fc85ad1863d4300dd33ed2300c2b69dab5ee6e29d8b7edda49dd1231cf574ccf617a4cc32e09c37cb55a2fb17befbd17cb461876efbdf7de7befbd17cb2e76b17bef8804081d2e3e7a6290189c066aa1e1914413e6a40ca569d80e254dc3fabe4aac625a0a56314c1b612791b0cb6e89adfbe22cc5a092b66025ecbe911861a4d2a4b9d8e651cda27677c024065bf5c64b72afddd6ea2dc9d06e16b2e520bd492452b66924a3ae757bc02c95b4e5de7bb1ee380cd36ea47714e9cc23acde5aebad554aad86eb0436d2300cc3b68ff4bb5d92f6fb4c8686c551cd48f7dbf5ae13a49196652312462291301289f411092361188661db46d2b46cd35ec3e683b65d5c6b0ba65d4dc348a312cd1b69d849d8d6c3d2b4f90cd3d33cc23b624e79a6c7e2b17ff25847a9238af818e5a5eca0a90737e18588ae1b4d8ae892f9eb712779ce9e873c797e368c3d49b403ca20c9275397a9cb3b5387cf4e32464a29a594524a29a594524a29a59452ca1f91651302cd8a2f5912146982c4f81723a7bb6871919b58c8f01014aef488b25d7bf67821888837a259f8f14734cac89bf3aaa9c40863a758f58b9fe17a0d67dfb63786f152e92198bb0c38e42c585c049b5ce0163f61171fc1a7bfc02347e1174f6d002711c7903bd670352f1486f1148e19e3951aa8cec40780ffc2d40302b1d86daa35c385b89ae8d3365d628f92f8668eb341d9a0fecfcba8ee8b43a87f6df3eef3f2083f4be19867409d6e395229a9cbd45329a9c35061f9f2ea12fb09811b6487721f5a2562466198ba398571c8a3f00bdc39b875dab33fe1dec1cd83bb073790f6c12d036ea00e6aa1a1201a962a7245b2b4d72231962f5d02d3367dc3c2d33e1a85a66b78c87646217f3b64fbdb4334c4eec52697ed675f4d04dc1779e213ee8d30f2c49e4601025b30e5de2bef9d6412fba259fcc046dbe7ec648bf5648bf9c01958c364678d2eed1c7475c49ebde79cd80d3681344a7ff4e97367f7e920216559b6e2f39e13906ba359164897d8df16bafde3f68fdb3f6effb8a790d53feecd6e76b167c7b27b6feb407b08edb5f77a43d91e0392edef8ab6a564c7ba25622e755fcca4df2d47766d74d24ea579190db1c81ecdb2345d62656678ae73c2e16c2c8d8f6cdf44d2fbbb89ba3bfae8189c066aa1e1914413c606dc977dfbd7dfec6d4fa3c0948f68a6b8be5e5cdaa34218bd825a515be42d4a76dae587d5c89ef65a8480bbb30735f34dd32872d6ccf737a242d9b641b1936dc8f0071432392349205b102539cb5868763b69a6645946da4428ae27e1f90cce0ab77b39cec330d339b54c8bd9bdf7ad6df5f75e8e5e877eb637fdd4debff0021c4c820b4e96226d53851073dc77db34ca28e54ad97d42b2bdd1cbe54e16127da3976c472f37377a0618b861a4ec19d8b24ac49cc250856f7b2d25695e856f4e75468de0930b1c81b4e7137f22500c8a42712812e118a4557a05b74bbfe07ee186e99e1127e69c8093382c327f2533f688f620d0dd76886a6ded99c681b511db72d837ed539862ed6d1759687c8d74d76a6d952ea96e31548211946004a5793a4193365f9041920f8bc9fd2cce80e3c0ac812b0a5b307f810734a1872a272c2edecb5a1b93e9edcc03a0cbd2449a2964fb23608bbbbd03a0cbfaf091a97d0360ab757b064097e5010f9c90ed8d580074591ff88009d9be08d8c26e8f00e8b25248a1846c4fc410d0656f6e8e90ed8580add26d10a0890d0210b0a5dd1e0774d929ec0b90a1cbfeb0bf015bdbed7b802eab630590ed79d801baec113e57b6b7a10374d9247cac6c5fe306e8b24bf872c8f627b085ea31c9f62be8b23ddf8c6c5f025dd609d0845a28c8802e0b056842a9b0c7d065a9a0e1c1966a86db1fb6ae822efb530597ad820874d92b40139a05fb10e8b25948c1168e717b136cbd60b1419715bac21e832e7b85ed823d852edb0568426f8b8aa009cd5ab0e5ba3d84ad03dc5a6badb53ceee5b8d3e9f73ce89aa7af43420e618b1687d0858b43d8758790071e0e610f3d1cc20004e0100a400087f0c68d4398f3211cc0000e21010870080b50001c8710870f87d0871f0ee10f871008208230408a10431cc2200ea1010e61ca2114e2100ef16c845bc7f0e815632f954ec2da374cba096f2358e4283cf214465d85539f01ab7e3cc331fe63607c00ecfa10f8b345995e8814030401c40f3ee028000106906f0820003df0d0b96811729ad6c5d25817eb625d689a045c24ca39b2240626bedc186728fd8c1fd505a5518ad2ba142f6bd73a8a233bf972a1a55a5db2ea426b89525a698eac34e7c4d11cfa92f407f4455fb08452164056bd0942a6348a4c690e32a534c894c280077dd1170aaa44631aa5dabcda932cf992443276384280ad105615a218802d780b40976d8926f4304ee9ab4be82f37d3f475fa475f5548b2ee8e6d89ae2b34853adb526fec8dbdb99dbc19d59bcc9de368753900be7908fcd92e647a21f067afc8f429f8b34299de00f8b359c8f441e0cf5e21d303813f5b854cff03feec4fa6f7017f968a4c8f0317007fd609999e00f8b33d997e00f8b34bc8f4197f360999fe06feec1132bd00f06775327d00f0677f64fa1ef067a7c8f43ce0cf0621d377f8b39f95e2b33ef82c0f32fd097fd6c767697eb8799e042b1165e06f4a91e969c035e06f0a21d37bf89b3f327d09fe661132bd0df89b48c8f433f03797f0cd2664fa15fee613323d00f037a9c8f426f89b54c8f427f89b56c8f437e06f6621d3e380bf6945a6cf017f930b99be06fe66d137c390e951f0473b90e959f8a31fc8f436f0479bc8f43be08f8ae0a325c8f4167f140599f60e9f7907d73f8a02e8b24152f0025b5c09a0ebaaa89c20d3d60a095a606bd404745d1616ea44a6a72caedbd202824c4f5760ab03d0755d3c9069290cd0755f5ec61004b6b422e8baaf171888608bc405e8ba30305e1882adcd0ae8ba31315708c196290bd0756564b490e967106c899c7e5a01baee4c34a13358c8f41308b6464e3fa9005db70715d075699e005dd74713a0ebd64413fa035b281fd84aa9606b86f7a842a699828f28d43821d3cf2540d7b5410274dd9b2240d7c5f9015d37279af0c0d6610bc3568cd3cf1cd87a711b26dc2801e70839671261462104e8ba3ad184e2c0160b177d45133aa580aeea124d286cf500ba78e80c21d35710f20f327d1603777f81639c057ef10cb3f8c5d95df89ec330dec21c09890c1934d050430d9e575262830d3366d0a0b15a0100002626272737dc80430e357440c121871a3aa0b06cecd062753fc69f01ff2a3cc3535875144e7d04a32e82476ec222dfb049c3a497b0f68a4b238cdd85e75b78f4bb2359108025f6d4de9d4c2d05122221092243860da242030d2a2b35d4b0c2e2792c2d25252d2e36d8e0f23263c6cb8b068d17cc6a0513030000c4c89898c8cc9c9cccf4b8e137f4c8f4970687e3f0afaf8f1c6a6ad8e8708372fa8bc37a0e3e6ad4e870941bd6e96f8e8d1d4e4f5fadd35717d7e979d8c8d9a1f5af5d77812efcd16cdfc21f96ed77c036300ba3601d700dfce16c9f03c6017f25d9fe06fcadb2fd09fe6ec8f626f8d321db0300af300dfc412064fb19f8b3c1be047fb008d9dec31f4442b6af017f7009d99e06fcc126647b19f8834fc8f624f88354647bfb8b275cc1953d0bacc195fd0bccc1957d0c6c822bfb0e9fe0ca1ee3145cd91f1faeecca5e853db8b24f611a70658fc22770653f826bc0955dd99b300f370a00045cd997b0107065ed315c8411b80170650f031f0157968333372bd924c31f332e399b1aa4d15af08e4f23374256e7bcb447ab4d7b9304def1698402492c4056130196d0c7888142b160913f0994e5af73f249c359336145d92b31abbdedaacd8c1fdccdc939b05542f991a4ed27201c0fd7f54b96d0dfcb71a7d33d998690a32bf403b0c5e254b2aa4b97d0cb1aee640ac9ea4294a94abdbdfd575d447c28bd94b1002ca1f7bcbf9ba803b7891264fa9c9c0cc015a5b18706748e73b2e1a88c165a70149c44c0c50f64fa8e470b174e062f33439924c31f333ba5cfd2e7909d51c94c9ac81644961d86e2b447e9ebe2e04cb386b315b6b0d34f20c43180011245d7d5e91434091a044479ce39c4fdbcdc27c7cd1486291033f68a51f316c5e2f53486c58bbe1a05a65939ba4965689969a8846a9a0b9b1e55686600000002005316000038140a050422913409c364f3f814800e84ac4454469d0a44710e23292509418000000000001000001080192a1000189a0ecb60416974b175a606993472cd82a9f3868eebf31c60f4cb7df57bb82dbac94ee230b79a85013a096280dba21b036836bcdf65ce3aac53db984359e72e412448c170d17afb209bba08878749bab7f5c1eaf9f4e8a26d6e4edcaef6aa34b85050a06a1be7460cb4d5612eae47d397eae42593aec9c4a3ad36eb03ec9bdc42b85c61a42f5d490649922b510905ea9bedc06eb8658321b131d8e90592bb4280f9eeeeeb984f23d98a0cef0f967fae60c38b26beddfe06591fbe0eae4270b271aef280b0e209f0d03f1bdcba180c2377edc99b4acc29911762c27db9191a0dad91df7d08f641f6223c2d10b6a66f9f006b5426b2bee1de217368eb27ae7050705fcad87d3fe7cd756cacfb72109d2612ba2f0724f42dad4b4a5cad4b8500ff1d82d0d760ac25e64376d9e1ac679f51a574a8a081f7deb1e619f63d82f5aeadfd10687b7963591c86e159188d251d40dc5ce77a0b3dec9744ecafb008e52fafdae893f3b5ffee06d1ecc4119e126ff342dcaecf95ce023fdd6072db01d0b696d3059a28283c80ff5f0d9f733afe6d54642ac216d675168a82e21a5ac16b688ddb439f590ee8f335be266bf7156d92648f059a5be7d08410ffc681b68ed2f0c3630524949024ccd0ed583d071f39e163fc8107ef40e1931483ff4cbc9384bf8c0afee9e13b21bce123f87f0bdfeee00de3c0ff0fe3c1bb8ef0755258e739005bd2c5861ad84d8a5d68b0ef11db3f61a33cc431178d174893423cb2a51af00bb5a22415f4885abf12208c9102e070b860e236667539f7dd10218bf4c1a7dbc7137ce749ea1c010134494c449dcb0340681562160030baf20f6f9014f44d01e129dcacc804ebd583bbef5dfea0605d490933d90fc4d2fdac81af8ae70f92d3853d80df4eef077cfaa121fb1493bcf61301b01f2ff00e69f9bf8778c2d71524bde1cbb7c555ecfd6fea8284bf6f156a4962105ed8000b1eb848ab08873565a4b38482fb00cc0898159d16c0b558f43f4a5c459c34b24eab2b110ce2c82100ac8810e145a1b7aae12efdf7fd5c37fd29a1f54723ec16a1de18f652e54f0eabbaa1ad6099bcbe22e2c29ac164bd3e731044bb23f1bc95d8bff8fe515a25115c9159214c4de35e9ea2e3bb4dd3159cd7e6865e492b5d53f80f8e385b25a867893c7bc1472f3c286b2488d7393a0bcace8f3794fdb68336359c2d88e3255b48cd53b6afd95576f0caaf2c19144fb2a524266547486d5c3cc42387d73f35e81e03d5052ef8db2a6c49b60485f607447a06c602054d3e1fc742dc21022920ad3de0b91468750a383e00500d62ffe4ffb790f3ff75c1a9bccf7877e7bac6d1a45ed62e576edf7aef13174f352fa10e8ac82092ec9ca7e8508876d211b336d325a22eaee437d34a3f309a5ce67ce2f59b44639269d8280bf6f101702902d1fb4070393eec633257536ed46f6078377044c6ea58f2f52844cad20fbe810d85c815f60936eac79cf681d55e30644a89e823598e77b7c780349ed6506270a1c3c3eb03db065e0cc56d8f6e1ba846ea0d30f4dea291becce1e201e3c1e25e0ac290c4543b85b5ea6dfc072602e0f0f4d15271335d2b58192b01ff604f04c1db21663524bb55c402eb5179b1fa40c8a39a2bbf5756a1671214192c04e1297e12f60407950c9277eb04d012204955282c800e8c17caa990b2576439a9318bf6145567562c91faeadef28aba4a766b6246fcd79d38920c3365b5562de91b2376a0cd50ecb08401cf6090a1a8d050b7136470bd2e861d13b9a2b6b05267468499d6fa061872b5d64e5407e611f42da6574ffb44b04eaf7bccf3f41c9afa948331da56b53e5dbd3a866815fc071a1158da10c19605179b08949e7d9900353ab663125c42dbc7c7900d38c71ab031692a735de98c5761730c1dc4008aea682199cb69223262c7ff688649c6e2c28351e87450280d0d4a18476b1066abcc937ab1dd12e28add933476b389d6a5efea2da90e7a04ef659fdda22413e4f4fd590b5bf7ee9734961bb01a5527695e45d95196bc14af29b52622bfb4270887254af54f70deaac48653d1225e2cf339433ca36dee9450fe9946b6799b821185aa34baa6f420c2e9e60bb3a7b87348155da0a6827e65047f621241e90f3f2605344ab07690473355edd1606a653e337dde9e6bf450dfc3adae8349a657a93c950140a86e70ab1b1dd282d6fe300d80317ff5f512b15ff6be18bf324b1e38a96cda1d7474c5d3150a6c93bb0ffe336b576a96d5848f92a472b1f2dbe8a85ace91a00ee47428f3a3c01a0e2b2d48929e0a31e1623eecd3fe2d667cc7f93c55c1c6edfe2202fb69f16c08e1945505a5018f3ae9bdb24e17555058a8832a60c1f9b0086761da6bca262591264946dff7cf1126d439806904c9978ee9a705223e18b9c5513321b7127ae9a8f029ca41ebb417a543be4ee4e6945860015624927be07e43146d3eae7d44aa44363f94528eac49b47026cf4929de88bf89bf08bc17bc137f13bc2f7a117e257a2ff026fc22f25af422cd0da20129c61f6bccf89d4717123ae671aaca971cf14bc0467820984371c551d3db73cb4dbd0a3d9a68daaa740dadbdf04dbabea7cb4b0426c092a2cadf9edef35fd5f76a9589bf7e9e5e368f677f3995d8be11168f6d3215b27e659d607f212c8cbe2e24e97e85dbc39cbc3deb76e005f95e8125b10cfb549e406f1fbcbea20d42b7d25121448cb14fe3f933859e1124ec59b8e1240c01aac77b325b85bec6b1c030941ae59ea44135e00d4a8e4af594838284f45b8b6ab95ab051cd0a0be8b8d1b2fdae408e2db582fdd6e429b2f4e66bbdbbc2549a0942c119633bfd1f6a62e34f697dfbd03877629b64f180731a30f50693f9fb660473e67d5f6f24ffec3d7a178bbd89930b0b592ae36cfc2d12dd02a9d7d5484f054ac8fce99d686007ad433f9be33bd25f85e26239363b2172752748b1e450e37f098513e27bde2ccf85b6c8932fd2b973fcd0392a7a44867a9527bde185b57c6a9099d5adddb4a033a406c14a084bdc0c5f7de1233690f8dd26c57d70370c34e36b0dba161cfd79f941c05c4669568f080e66a115ab4f1d31f4530c36d9c08019969c1011d19ccab18d7f662a20af83d81820e804903f0db0b0ba340801ca9e5569b108df70a5dfae411bacaa7cae42fb714c55b2f65f3289edc26911aa5423a9ebd01fd977f8a12859a6c73b23c08d462dbe3ba2b0d44d5b9215f4aa34560978fb000934955068898be632dd1e8d3235bdfcee2ccc562c9053ae2879064295594e3c9a14233f4939f8f367b5f9037cbb8471f1932c19fc557b4562ac7ca7d1acdec87309235e43e867078e7779d13d2377a8dd1fcb5233f48bda6bb83f0605878d41979e51ddfd8af88ee1fda8d20aa8be4b72814f3229789784bf02b0b89a1042050c21a730bd097bdef660c0ff74f93c2391ece6f7c1ba24be3111c775d3bf9c59b3e717a922b6f8e96f616755d247414b5cc6ec020f1b2b618c3d58aaa6c335a6cd9b49bd35ec3775c48b15538b386cde6a2567141a0ed28872853cd0108aed3327d6da29e1e16edc12613abfbbbb5a123449999b0617896bd6c1879867e48f5b85d8b2de1020aff1170afb6153b1d05e26a7f9e0d7a605e47aa2370cf006946b39b03c175e8295fb1c3e95cba5a78973ac6b0fd9d90c49f72c907a2ea76641221b3652c87a6e38fecb1534c2905f8e7beb4b0bb2dbba2f05898960ecace12be76ccde964224e096e3d921c99b5a6f6f5dc7f96ed2897d63145bdc56007ce1c5a4863e096d751a25e3d0be684ba68d43c1b44bd05bc65e93d3cd56889c1249c84938ba9234222cee5e770eb08584513911121a5d0df5004a128ee812421ec15a34e2e81a788ce85276d4e3e67b16573992e2053e4e509999f4c4c88286e2a26040f24883a3799cd1cd1c7cadf4af33234d60ce6b3de46806f2f9f2de6e3626dfd6d1067b821ac0fba1d33d7be48dadaa5c07fbf2751acbe85d50d09c65b585ecfde58669ca3c3a0f60a9bfaf79a7e069b903863aaf64d3fe0d049f4925f08a096a8059cc97be0b5bc9746ef4870f7e1a09b2af1ae269f0ae4dcae6f423b081607e36cc205657f85736ae619369db76ad1d88321d4c491c118d41f100592329ae1d8022072678d46c003ceab303360cee43f8e1b3d52a91d8ec13bc31b1bcbfabf759a86322959fdd646996c9f1b1f9eb881d036866683d03708fdc6d06be564ae2bac4eb45577253846ead0a04dad210d30937c2a21c00a9771e5c104fc623150c424a44080cf9334afde14575865f21b052f78a01fda0c2f2ccf2b87e109a9d91be91b081fd60543b828880d8dc20b57ddc592e7e791b6c6fd70ce476cbc8bac0ce51ad643dfc512b87ec13325db79692ea3f37a1f1c93fa5b2141818fed4c707103f735e4f16b28119e79c169a07b9ee9c833acee7aa68d9521d7dae41a47994e375bad6188eb91e96a94aba4ea01165e86552c6915708dd6499d664f8fff1825fbfc5853dfb27b225b271d66113351de1f6e07b27aaed6cda3f239287f01dfad4f0ea4d1990c514d20bd02bb2ee9f458e6e70327bcf46e14db3fd3304c84c00453d6be396548abbf683034436a1529c8e2f1e87c32fcf72c1cf504e39132f1f6c34c848c8005ab0688f510b77b32bb98ce24aef975b947addee08701fdc0a5b36ac87865e122c7ad085fb922f212921a2fb15b36200d9ee9e02b1e803adcdcd6c64ca31b11214cfa0dfa783dba3978cea5884638907dae9ff10f5b4f0e41e17f7992667d880747ad73dc22dd875259fb89d0a5027ba0d03c7e5dfb9974be82c07b3abde30fc76350a6024adf04074b40a9b55cbdaba7b57b63971e747aaa8b5a651da753ad86b0c600ad22ee67b57e086877a062025f1e54c92d5517776ad101d5e5e876aa5789998d6093086be4b80b6632e7128661b40c8a84ad6a746909f4171f4b19b129ca5aed6ca96451ab2d1cd8fc2cd0c93a5d6905a9dc734e70f8f36d053d58b06922d21920fead1a3fa8456101887f2aa2a4e543c08ae69a383d09c5afa3a5e7ed7ae602c4d5bf54705206801f24a161893c16c94aa6617f5a2210bc0b5161a2732dc34acf1529f1b60396d94bbb6dfd8f01cd11ce96dd5b84eeef4a8470d122fbfa64d12178e400fbadb0aa75256d143b979946a414151b01e388ba9c3db4f2c5fcfdcfd0ad6efd093374b50ff43e5c5749ae9fa3f096de89b36afde1d9e67fdca7de762a25f475d4aee26d0c933ff089fd32b8d02675d323166226b92975101280b0aafe792cf002dc621861e9aa2ad5efa4aaa20fa4e4998c4e5cfdddc2b417f2d0c122f1ac8ad55f0ec0f9332c499338aa69e3a09826a7e12fbb3d3fa98f24163897107fd691cdaae0318653ece65f0c17f8209c92e82f1f3cf39072c68b782342d62eb4608ec33b01dfd5e332d6b1000deee7fe7fe94e0327b773838517e44202a1c72b3e5b16584c7bcc2fd9f8db0eeeefd84324eda55a07ee8785921ac091f8d194b29d60d4190d461968943a59dc57417efc6b0e6e03399cae76aa49d296ae4b803c9b861491451f6743945305ac82e31641c03fe9585486229347632664f06841dc0d0d9867d8492f77a7b375571064213878a08b2960d13e40de37ea189fcce163e55e6c01fe5f40e43255a7f1dc93543c6f19b2351a120f92dd461241d475ef600e442d8cf4963200ad93453e02914b7b65b6e8f6b949c9f41ff3a39ca8d44301f4bfcd6037518d4649baa0dcb6bd9b16db82312ec0ee93cb1c5bc32c633f850ff2a88cce7df63ceaa04ea8f9212d232a8d94be47b7412ae154b1b8f2482644a9319d03e686ba5e60b770ae97a3544407aa7c223044b1249c51788d1f222061ecdbfde2c5ea6993e345576f38eca1184a801998d0c6f55341276c14da344293a9f0f11246f175cd51b0ce3fc2b8c90a6c65bb332702fdc2ae684ce20e7e27332d6ce8fa161dc8e1d610113c474567999d694baabd54e174b7cc4b6b0b78bc98e2e826a69200139e05f85fc4a784bbdb655b8b017b99b359897d8198adcb4021a95d297030758e888cb9b7465a04c1075a46c2351e7596260d0fd95fa13fc65869b15540a068403ff6242bf57c33db3b1ea0ec4401b6ff2112392f1b9a2cb216bd974455b32b38f11535b41be8950e88af328244b5b2104c77843277848a8979274c37a829c1d30657cf4a3ab9fbd9428a6259efae07fea8afebd1b8ffde5e2d2e6d7dd3d6f18d32cf1e473cd27d2840fff26eb1c0507f77152c1aacc21345274f477e7694098cb247e61b75f576d832af403550468fa43caec028e6e5a74b9f6590cd2d7d55bf9b35e119262e6ec5820b56c9c9461d2f179f03a8a98f7683aa6e8e7f5396f0d85faf9a4c023e9fb6ea8d82c5344d4b2c01ce12524033ed0a6db1fa280461d2884e0a5825c6e2689fa9a5647e783ea52c38bb2c3e15bdbf0f4e328c524065c3c1e93a88c019462e394bd003151a7087bb9d1e9163e6ccd897b168175b461ae053ffde95ebebc152e2c9fac850f58c12a416cb9318e5fc92d37060d8a0003530e333d692d3c27d4c349098ae7234b419b442669abfe70983e6f09ec993cff383a945db93b179ac02e10a50c55b0f8d98cae82f47391c6988043759673fd130b1b08e4d33fa0903b826a9815be5855f2481d9b88af3ba824c339ed8359166017b3f4f26783c060ea49b491bb2004c7d9ef1118d19678503caec7369a98d016abe9d449710b3c201d892e9c905ed66dc587a238160c0538403c43a6adc9bb2e3e9c2811d385508598a0b8c1a0df8bac8337eb1bb5ed7d035c64e58207ce2c345461b292ebd97d85bce50371b138b77358076c9881846f8bdc58597442a03e4f6c79daad995618f3e1945c1e07f7a3fbbd30c0e68e29694ba654eca3d814c73180e032181dada27e28ef98518e9bd48a7bbb5a206260eb7c81e0396f9c3654a1303f8744f4965373b7051cdadf8d4dccec795f7794c172990bf4708f1ff98821ebd47e47f5d408305a496d81078018320d40596c8258db4920ef85fccfc6f8ada8362dc8b8ec53a8b1ae76ee96802ef4765fef39c02e05017106a0aa4dc150cb0ac427b5cb718341f302b8eea1d48c697adabe4dae0099591b92a84ab56bdc8cf1321f36bc1732e9b6ee25f387486f16baa9ff6a8c00f26f2fcf34bdcecec7be3b0d4646206ec0b0cb29b42b93522350bd5a2af30d15bdff17439d2865658e682099083caddb4d3e975330944ca59cefc187250b878ff3387dee70218f94596cfd8efd108f691d8ed5be005e9bae42460a128157940a52752ffc03ecf4bbd79adb5436f1c3190189706c7bad90b70ff337a89ff9b2b5a60356458b27a64ee69822f917c5cfbaa9a214d3b014ee40bb190cc5a18670111da3e66a004243ad5891e3fe3a06df3ddf926a5f375c024aad80e53083157dc70b3fe593fba022ff71bb3d54d40ba88a3f49dbc99c3ee2c7a4e668ab26330c0b229806b7c3072f3c02dc0db06bb36a3cf999774185447017e241eb80e35e889822646d424811399d2affafec9bfa098c02753e49d440e840e98f81f4af6a69915f0e78f3adb9f9c3ef939e4ada7643ae69eb545b68404944e033a0b0a2018c5ea3c61ee05a9b983fda55eb89d8a6350f0932a1cae6725f86f629914dbeb29a8357e6e2f2bea78949fd95be4225924e1c8e835dc94ce652473516949be4fe5f77afa4006df5bdc404f7355fc3e81a0800691f0fd67c6d5ac76e0eba2fc890186e64ca09c2adb59df0ae782979600fd816f0619ca8e8e174442ac5dd3ec6f055dc6ba99fc0d1ed65ee52d2a5c38b6cd3fadc97466fa944930f5456a47215ce09c692005e87c77bc337376a3eddb6e5f0a0c3c4b4e43e48bb736529793ff383c5116b9aa8ab2d3884675b3c7dbbbadc1d452a3d951c14ec0f38f192df7c11aae8ff5d23eaa7512cd627887fa91a115cc5d7cab699329a324ad68fcf3a4845a597eb752da84a2571d86be6893ad7880c9aa1cc2ff5432778cb08521079c97c181944f9e7395a793b65dc280e48d225004e58d7943e4d8c9c0f934d275ee12fb057d739f485b89987b45539b3aa9f89d235f00800471ecb5bc4304d3730bc5110a3da1b4e82332494e545b0accb493750d5017ad688b5b33ccd2408b4fb2118b5435042beedf66cce5e76b3f0eac3c28f93334b2f1f8c6ec4ef0010b97dfc89b5764f3fae4fe40c193428d694ae5a5f06773cc4362f588fd4979e904085caa890afaa2438ade2e4850f868d61db78ff04ea0f15d2d5d1a98f3429ade0efffab6fa1a028ac23c40ea8b1bf57c9d2392c2ae3d2fb88f9f519a15237d1faf41f498fa3b36c2f5ae61ae5349231bd617058e0f4e472567b447d9f716295bc0a8f4bd9b16ac7c7441950906f9e0b49e1b555a3c93c3372a493ec1b22143210f573f1136045b41430e73f56792a59a39073955e44519ef110b62cc0cc1d10358c1ec10d8f62624e92e44171d63b8b27fb14cf474f4c8b52856e69f00d6657eb0accd7513b349f770a65e84a96522a916b7301461258a8fa0f4809ce5b46183a864e79cd253a59f4a8da35f0307558c80a9b63db18a30bb74180276854952b355db819bdd5c7eb15a83b12508a51d93cbd6483d412749418a26511659aa758e63639e1e78c55238438d165a226ad916b08b6defbdc992b4657861df2137f843df3d3d6f5390cc2c64a3a3018ea92000f24b0c844dbdfde58a46086ba7cb5804aec4e9200d614422a434190b380125d6fb8003840e68795a7480ab91c703f7e8dc5666623292ccb7864bd0cce2040d2f538716a64499eda379532f5e4ce0adb625099d0a4c9ad83fbf73c2200a8cd122c7c68dab19939cec0a6a8ca7bb3adc46060ca38d3662020c030a1ade7077ea56880fc81434a62ee1687c22097abc21378b6978cc186abbc5e761b2beb3f5b89e4340922c74da8b9c48f66169abfaa7f545eb274579afec0d95b238eb0816996e5367b26af3b6740ad50c882106b94dc73e1be4deaa1563120416b83fa3656b4ad252182a9a02852ef9d5a7d6c6ba6291b0e415c42a7d0adde6479e6aa4e384ac341f6f2e572cca421737ea7a49de79e4de07f6a821b2498d156acc548728b14009f62244b15e83732025e0da58a1cba964e7b002fa5d4b65666d2283044957ac1976f00e0312a7795eb04c6d6f849aa596660a089e458c5f00de8005f7875e2e780a2a837e48bce15412ec0adef0b2240920981809c64791e03ca8ed0d772d86eb14e00ad09f9e2aefe7caee1e6b7ad8539146bc4d2cfd4e542d35664402928386474880c784ac3b0030b405b97c9442731b9d5e3e613a7c343a91a1dd3b8a85757e44c84836efb0d7b777b9b3132743c53693e42bd6be89e4f2405b646db9f13586739738b9ede1761f0e34d070d53813cd8f5298b61b78b10de64a3cd6a01863a225b99181955bf70908373d4fc1e33504f94648a46177cff48ca4bf1b5846ba4ccc7e10bf501fbe69c34713e38dd86f0a783ac86cb32f6b7e0bd69a7bed4cd6934997c2a3fc3dad274a434076238aad2dd2a88129794699f481ce2a14ce953dbc1af1c30a46eef7821acbf478beb8a00be9f1043249c7559282bf04d05068c38ccbb405ee4c70f3966ab161f42e23396737afb37832e53eee44745ae72620a5f431a1221ee815f746e7a1fdafcfb279f70940858ce9e271a9a0a5ef663d85380bc842b7308ecbd96c8b15b5e3330da2f740a55563da00e711c379478923576cc852a1858a0b12f70034e312d47e6fa0c2e61d6d77d2dea7cd58884179a2aefcd46beb5bda4194a5b5758d00447e98b637bc3956ea2be83f4856de70f2e3166785accb2128e736507621eb4faba67c60f50320300daddacf18b2cf2db9c177dd93a8276d25687ba6b7c44342b8cd995b742d17bbd6a5cceb10ca3a7a0209f9b74beaedcf4168f78a4f90bb603bead01f771ad6c88c6601e487b47964041d98b7881083124e08cd08fae7a24b1286373d60623c05b936479bf9bce147ae59b499aeda2933052b472c496fccb96a08b828dd4ec257522cbf5a60086033046bd3ce079d54a369f52cccca20e0caa47f6b0d4fb25539cfad821b5130b07143d567b240e58bec9cea9925a3019d389d5c6327171405f4339d6af94aafa168184f4a26d87b0d5b4f4ae67e5a322798e3599f7170a2a5132f49e3fd3f0043dc8d92603d1013fc68ac96eb6c35601b809709864ddf9d165ea86d0b380cb0ffbd23ff79e35a1d4855b0f679b2de35abdc139628a120e433be73f0bcd9e16d26b7878db2b4f02b039dce61912d162f6d6516f10b9d572c2d235608d25ce6bc284e618c54166a059afe61704da5eb501b3e0f0a0fcd99a212f5553d3927df3239a419d20123fa56d9cd30af4e96d31271303e51a6d7c6cad9503372f4b37a9c4442bcfadd219787cbebacf0f4a62cc53347ab312a805cc26758e8907724dbc429943bc838c42b43d6d92e1b7257c7e1c5001c93214151d6d803ea994a82d73ce83cb4ac36bc69cb6dcb7d538336816266f931021bcca6766faface43ff3717f711994a6149d2b945fd98db59e63542a745a7b5108dd11426af231df0f1057c7f887dfcc33ce18454da6a94f63246434afb929162136a0f883bf934126a28394d971ef94fc1cd8e8330e2e7c4d35b42d570589ac099ab87782af1ca0fe11dd16492b6efce54dad0c62a320298c11ae39dab1d77aad6e5eddeea6da902836dcba5e62a9bd0d9e859bbcb3533f5bece7100289d9b3b43d17666508443f37ffaacb9fe4aab9e4558d4bee87c757d9996746bdcb9cf65d334ff83dd8749a44451aca5bc96e39f2d6c3926dc7766e6b1d5663a32e4b8e02015c64bb276404f52b13deb4acf9cbba2b46aba2091cdf85fba020f99cbfb20e4d4aad2e65ccb1d5facb4a1d8b053f36d2e661a1672871591f223b8fdb5ef53b29eaf79f7e5744a1869da57f1488fe5104fde44df97980eab8566c776e40fe601552ce2e321f54865c1e8f255e996944b912bccba010b8aeaf3b998cb8a6f6eaa8c9d9da6b6dfbcd356f24f3428f58f1d02c3534cb64a156778c55175c4f98b0acad31c5a42933b82ef1de46169074e0415c58256adb237259579253693c830b0f2c5304000cc856aece42d0208b22b02501092dd8cb475eebde8eb61831fd5c79ec438f5ac8510512436a5c9464b6987353574a4f2e552d464b298725b470f9490ec7b33d4fbbf5b31c7dcf15e49335669c2cd9914664ead4ced91f3edc52621d236ed5da232ec7e927024e709c3cdb031d293782680cef89350c9a412bed672805648832398533e77986bcc6a9cc1059494e52a1ff3538e737eb8fe85a7aa77113cc0e17312b6a8613a03f0179ca12528b5a524063689c32f2cdb62a2af99a62aab8ddceebda1a4732747835a6d2cf25c8a31c7af858aa4293b9b920950ea6b843db64bdec8715fb01907574ab2f3d11bd497a6a6e662eeace165751773a04abd7eb3c9b7008c0c8c14ed5b744d45c02498352409497d2b2c494c95d64301504b0882147da68a95da2f07ce022d72b51d1ab4350d718398d221d69b008bd3465e3c04d7926789a10b08402e2ee9c2cf7d8f80bad8e5204ad0c2b4630f49f5c23aab09466235b5964e3975e942802221f6e0fc3fc691dc5f87d396ce2802d3bffa7141bd7a445be5f821b22452267054da0bae9f9509bca31e8666c188d845d23558cd9650c408997a68162e9cc9b36e37298c0f7e96572d56c90f7cc04986e3eb8fb390cf1df2aadc4e08fa283ed15d9d99747b6252c681b09fcdb2ede096e37724da314d759f1ccb0991e2b4bc88091011cc45808d0174d25a4644be38e19c22486bb5203d6015ab40867a45d02fdce1f1a6d3674362cb6aff0dd897319286a883a3aca759e9a9fc5901fb53d88d12385fc3ee02e994a8d5b7b28893479715c90a63a1343c0268f397066f02ae3108829c95394696b01c9421179cab5212cb8181e5ab0684abe44d089b95088a0211f9bee1e990da3061f4525fbc1674b749491869cfcd5ea50819c6dec4de4a65006fccf490d3db99689982f13141f2717f9070725a6df8ff4c29725bb075ddb13b37899fab0302233a905e009a9d05bfc10e88e619ae64930e524fb27921538bd88f4c0a924c3742a665ff21fae4988f28a7a465cc18d15c3695888ff33b30d2b94227bac16042d7fd90ea0ecd5865d102000836e8dc0bba65429d866476b2615939f10c4d9b8784ffc2097d7f8b51e4e30d021130b93800d0d8bfaf48e050b21d1604befc4ea8e1e6af8a017768d80e735c0a110c4c3385298bab33fe519262215026a7200fd55d0ca29f58f393007ef8cb5ff819510500f7c00da0764b4b350139f9fccec033c83506a96b0846fe85d26806df4d5f1b51537f51197d0051da7e64f15eea487102c61371ba823fd91ea0804f5648ad4735cba68cbe7fca63e8e7874b5785e3a7546cbfbc8143858a77a2ebe1d7e0c444a43e2b374e67e1931ae5dd34632002203648de11e9fa5d4e2ebc175fc63078da918f19629294e289c37185016de53ccf3e3bb26ed8a85676e7b145d7e91ec592d130452d3eb9ab29842b8c8fb9ddb103b2493cc1101e6a1b0c8880503cfebf3ffbd1d77d964d806a696775cdb49cfd5c25a9bd374bb832bb63d4b7fab0bbb1f21842e34ecc7a0bfb164b5a51cab14e54d56d95d61627ee75b9d307cd56e96ad42067c05f925b420eb3bcce48f2e30b03dc8b15e129372213b5f0fa838d685d56aa0ad26a72941018dc822a82ea4035f8cdf7ea9cdcae84d92336d6e8f2eb6700cd38fcf27e2532aba0a17dcb7fa3e21fe40d4901a3f88c57e8dda65a92d6c2a76299c4b1f7628206943e2b0576b87ab0d6cc6e6a5681cce12831364b9387ca3f5cff53f60fcf71d2642928c1f4163bd2434fd68eb9c74ed154edc22e8fddfd4d12b23edbe4dc06f7bc0f040fa90b7f96169e16ce62b35e2cf1eb287588fe353dcb209d9632171c2e32b0b8ecbc008de7f142d8662d680ae3e81191ef9dd33ee857d6f70a7ad9b4c8ddaddbe822aa208b7b98a16f5ba28f36ff64326d4cd53aaea0af088424ebb381471a443a4591e89ca070292f51d74f5568b80723397263f519d21908b722355a30a744d99b1fc20e3138479897106c01d047e0ed696146f8258982653e9b4a16af056a44a13358082b85530c059ba53ff21b45699fbd24a93eef3cdf397bbc51390f48264a1a47498fc48c8ea30a57394a25b62df037d1af3f140a569a5c37f8aae39f4711aa8169aedb420a883de4ce943c189000eee18a9b55aaa54dba182928e54e8437e80ae76378a36aba5d3acb24ae8a0511a5e603a06ccc756b0d7116f7d6e619346d268185fc4cb48b8560a54cda14a1c009a7ccfb9c9d75727d77f239d806dcf4cf7bdddd54aef26bc822df344228bed33fc4185cd95c6fde673cf830bfa0d27bd77ff9c6029a0c144a8c480486717285928fbf124f417616e1af65affaff10e87fbef0afa133c6a9e4aa5ab3e1e099841c3bad5819a0f60360ab05d1bb00948d62d03a9aff6853f58eabfd8562c59069d41ca1cb848cebfd3e06bd4203935d83430209f82f913de592acb0cb217837672047be62369546f4503bdd66f480c73548a05fcc3cec76d6a64331ab4316e51d764aaeb907869359217b22223db508b41b11f562d6510473ccb8f46037af5a9c5e32fb88dbdba92c641e9a71d30eb38cf10b24480c718279b2bf31867f664ef1749ff25e960e8b2b81120e5fe24ba76737f471e3d4aa023ba10d2467ad4237931908c4903fedda6afe4629be543b6ebb48591ec77de89a090fd1a706cad24021319a0b369e194e089c02370a85810e43d2a4b89e111181413fd868663eba0bfbc84b8c19de8dbc9e2e50ced04ba3600f41d1fbc80c6774db2c592d13c370c69aaecc6282872859b7a569636aa565d284b535533a430a7716a595326f945cc223f31c6e3ea6f30206379031999feaa343195d586363b1516089ec274b8dccba3ad5e2ae8f0d0457fe384aac128b45623dc1f2293c2e53f0e4c9f92d0581e6e119aa97780da70664b70ef30af53a2480fab70acd110a64935d1cfa17aabaf957a45cc95dee8273a11174c9094222e519dc2748d0f19b3616e0d64e472807a8bcf60e8250c7ff44e6315ea96335eabfe2c29217bcb3e01d64fa508ec58c1d28c3086bc50a8c713fa13b286177ee5c5d51b256bc795d6b46266d043a96aadcae45a14cb18454816acce306d1ab958221b5104c63ca6c5325a0359f7c55339ab19008d47193f2b428859b57e585d51a8e3d49c41fa181c3b5f1e4eba6ab459b712d19809e1a8a2ea00c7425b98797c50c269a2aa8e7733284104ba26f7b44570d985b7a056726a1b8e9a631529da3e2076a0fec5ccb600044645f933a94d9b0ed2b00c5d9494cfedece09b8eadb73df68036dab0e339da22dfbc2b9b69587475d28399b5ae1d97fc9ce0fa526ce323d2f870822bdd9f5d89bdd08a2c0c942f3328fa56a31a2287ffe39d1233448207665c73ffd5ce505cae9337e0599bc5df638218d3af6c47258ebe103c1f0b5f6dd755376e4e4a68128376763c84d1e778be3b99daa0f5ccf5de0e68329825acbc41b6054cca8a974bbd26cfd73d584c11f9714f8f09dbe44c10dc881dbb3f5e89144ef34fb31d874e081a9030eea26678402f501ce64c27793a27c46e1e8918804b1567ddd49df5d9885daf0ec608bb1e5b630c8fca66e32dc41c3b78badb0c1458d47b2c8bdb77e5930145e8be4102c75d11472a75047e476664f923557e7c1ae41d9bd1532e23f859a9331d01a6c426287f40007d9828100abf64baa37e8cee3234992695736d988a826490f7fc3dbb3b354877b63238f0b01c14ec1235dcc1f712c42b5bb70829222a95f28ed4c2f2b2509baf0bc7ee1352a4d9cb5a44a140af35e597bccbf22368d215607970b7d7b93a4af7fa26c721205211f6c5c821563bdcd518c74aa021f96324177b53c705a01224b09c262792f6f4b6d8059ed391fb81a2d7e16a3b10c923aa8ac3e07d5495174c81b6aa4adf0d472b7d34bbbd65d513125a622264b467971017eab5bf57ad3d071971a75c59007834c0bd2d7b54e73c7936d2128cc401369805b556f4192c5e6187cc60a43497a92a75cc60350b59606e689fb5b5fdec8dd87d50a05e27b177a230ab5c6840357dfdb3f0871b6beaef464868707a8c490e4392bc3371c3b5282f1d3333ffba79695712e9344cc0a42cd737960380d78370aaa9de979485fccab159a44677582bac9e23b1973ee430e1dd29b2ea59fae0dc0ce4cc7baf9bf3414588a4444c23da785d3815023fd61b2d05f938ad6ed3bb0939041045734d39347a9569f07170ba881dc224a285996911296dd0e249001c843b8f31a7e03afbc72496c363cfc8701b9f588ab90355237c3859e0e78ff8dde7cb5d5e9157715809ff766ed040d39a7942cc848f04b0fc5e91c59acb3691d3cdd36cee613310b0132d72b86b8fed069f30c0496058660cd082ddcde651555c4fa27f0122e9992329a11575d5ee0429dd503d51811004eafb2c65965f95f2cc8bdbe198f288239b3918721f1637f968f3a8d20b224166b88b03bd2d5fdf093f9f4c8db5319e14e388a182631d303574d2775bd09962041be8b0412246e8f051bc0553707523dd1e03758cf12912084193cf7158e3608846b830831e29908feef76c66aeb2ae6ebb55d9851debd7c9a893ed3caa34896e44e633099db7096205135e60d53dc22fc3469da578948a992672fadea43467d62d1145a2a48fe3719d5dda4028f5b930fdb458985be80a4dc6787f6852ed07925ae70888117b46cc1367f4c65fa3b7e2c870a583c495f1e2baa4c647748a690e5145a4dbd586b557e050aebb99f073179e4421f7817c8981b47bc5113833ee045d48656013eb010c36234ad195b9243d832d34641de7a6269a432635f281da583800c62a1a799579eb18e00ebd9e5f7d0d6e494e56f9b95f16e5771cce0e2a69ca657b5fc0574b8c19096be87e0419032d2857be18299d14a7a9432ab14265e2f6fc71dbdd99cf54c4c1c067b09afdff233147cbc149b29cd71bdfa2b0fb099fc48ef4b3b54267c84ccfed6835d692dc1998c56e04d600a5307ce03a307c5ea9e293f338ba6a6e971519e7eb1a59c89b3c62623df58abbc7fc13368dd16db3252eb2158dd682b151494a800446ed402ef329501752bad679f0dc6e03a6da0c9c63952940860a9ba91771b47da99214a05ba695da4a369f5650e39b7a03a80d90d30d58e902f6c7096d34d540822d88ed35a25db8a74b370b74d0c672526423603b96249e5a22f1c1067e70e3f8b1ff61d971423af7ae0a6ce2fd859be542c705985010ed1752e18a9df3181aa5caa642904377e338649efa3a00bb931805e4f4dd7851760d9c093acd81be6c90626625a26c05350be8ae805407768d59f1c0aabc1719211ca774f264659629e9c24b07bedad1141b163ab98232a22c7a3b1c8162946349d323c881bf4d3c2eb0401f4a85d1dddf6212549d5f8b33a892dd585872c4400af6dc6636412755ce14f265a1a1008da7fe60187f9d0153645aca847ef6b677bf37d2da25777bb5c5558d9bbbc03e851539932403459e93c10dfe0ab83f3ce7115f8fdfa433fc7b23d67343f9429c6b3a103f77882c77e53e90de5b2e69821e229d24b8ac593d84462a71297153f7e12270a8b5c1cf510dc605099a0d03ef1f062a10034d2706ca3847b89f6788fee053f386bb29c3b25ebc3d643ee014114c6812dfe562464165c846c4c93d8a1060b06b93171adf91bd33c5778888b9c110be03dcdc4c5705be03e71b471380c310a6d40849c880b719233a93bc33e7adf7b7d2666781e034391a9cb1c5ba774ecf699384baa4ea616bacbf32fa463d957b1ae959a9b7516fe53d1af756ee69b4a772afc63d90f622eee52bd935aa5f99ae71af4a7b1af754ee6db467e59ec6bd95f66edc5bb9b7d19ec8bd10f702c7bb7f3577893b4c7d95002638cc6f53dc372d87f8082a46d60ae9f4fc8e784394bead928544cd3c4e16251416390f1c770556ca52302b518ff258b2e6e142780b90a5a503e4ba1ae2feca227c2a0ff552448141c0e502e271e546c857343f7fa3ce55320052517307b21b0c32e3ef3cf12558fec9016df315d26b07afe619087863f0ee05260b41cd1f3c7c86dece8014520a982d34838ba82e632cef43cfc8972f115867230bd1dbd0ce6b142ca038072bd01e408070c0ed2b376d28048ef02b124172e6aaf149c9b1c123200c70ad3733023764cf186e274611824ea2ec99c49945d980182b40eeac3a7505612284c1c810da877c3c885e1571f4e3a34ae108b5162124dd3c47158a3af8f1ab24f0035a1609489c4f11aa450efc7a14d25c01ed6544c8c713915511c73e3e4a298e50cb0262c2c5734445a1831f6f450a7fa4659108c1fd144959e480bf47c7ac5046700f11c20d6167960406a1232cc6a35ec386a71fd34d30c52498790863e63a42f0ec17f2f626dbd1e27e654a3a113a6a27de7a7c30df6ce473a0b7481aa57b509b2d47593f952a9b539056706bf612dc876d0ddd02808f943229b257f22feb11822868b1964a1b0fe0049f3e8f701b9f1f685bf49323fe4f85c980212d99c9dabc3d3c04bb32f54ee923bc84a5806149ef960f43f4febb94eddc6fec05bfdda8a139c52c77f14a45ea0704b38a3d1aced07c6e20825fd4df5e6afd6e2092631936ad285c7c0f3d2abed1fb4f6fbdab27c1099510eec05685fead88308fe02f57d2fb8ce6af82ecdc480ea81032df88886c9b207abf48cb9fe8c34df0412e81298df1d0122c7c512c34df04ca8a8782ff4345eccdea5b35717a152479223494f7ae468279f53edf882f96b6af790d4809cc9ad129ec0d11fc57567aaff5be62a4f75e4a3b56625216d2de936fcf7d5ad5fafe54190c0b409ee9fde0355f63047f7d2e62c09e08c6a918259cae0b2781fbaba6825ff7f6321d0ff0a4df1dfc812c7e09b52987700ccaf48fde574c6ff17826f8f63ef7214b4602bb83efcea5e8a968c3be31996c403a0f0adef7d9f0cb746f29d79c56e43de6ef91ffe34a9d205f20f407b6660d1e2600fcd0af875ccfe0e1067ee2296986f85b493080b5cd4246b988248f920459d5044c4bc612e7211e35d941eab238a2e1536225ab13a07a54ce597d8a1f89bf606fe1a238205fc487895cffc67f2e9f0302ac3e0b8bf9efc13fd76f69ffab2412349cb13cacdfbf91d904152e5a893aab889b8f3cac3fe09f2fb17958df3f38b327621cb40279543999c7c352fa229eea3cecc99f97f31e250eb1362e4d78d86d7f2d3b2d0f1b52aebfbddfdcc2370ed2a63081eb576b2a79f2bf494224386ec07858027f60cb7f32985a46fca6c8d8070f0be7f8174a1e36847fa2b303a109d80ef2ca244d5cff3e480c1ed68087dda9e4614ffc894d8ba870d2cba6f9c8f5f49187f5fbd3f489e461bde6fa95ff5f1e7c80202a2c6690e3fa21f92e5fe73cacc59f35bf7c6c440d54f25087ace06109fdfdd3a71179581fe4b586d27ed4d57e4fab4d01e161d16bcf6e821ffb60be23416a79d8fa54de6cb36710abab2481277d1020a0e161ade7167a611fab576bfc7a79eed3e389a1c5f52b1ff07e29d73f4fdaee3659dccaceda1a272e1b34dc6bb2f80b3451811a12715cffc9d1ca8099805c2f6822e775eb5827916f877b15bed047bf5aec9f90033021c3aa20782f3e9da887b7bafd8f11f10d7a1e16423e41f1b589152e68aead119b0a2e338732aedf36f3b143a3e0e1d74977d912e5a8297fcdf18b33b3277f8f3a9e0d1485870062eb4d9e91dfd39a919ae28ce1fc5e7db973142d4e66d72765db6054e276f51cf1917aac35a601b9f1efcebdad56cee9edcb3bb628c33c777d2b5a9aa392d50ebf15c8abf14a7ec123fe5ef11ae7dc12683250bbb2167542b8d746bedaa6a5257ea75912f9bc079c0214b9e008ac5a5015c522ae331d16428eb1312cae876228b03e5e4f9fdb3d4597a7b1f776a169cc2a29678952e0ef48f387718fcacec9b381ae2f6c47ebcb66f58abe93651904e6b525589d5900052fa4e923aeb6938a3db8b3c8ce89bf2c2fa0f827745453642dcfa4d14c7acf36ae97181fcffaed4cc58fa9ddfaaadc340c951072cbbb139f82f6e787b9c301e443ecefd9f09ade0ade13999677d2f627c9395ab9cfd45461bf15d9ea4cd6b6f0ce4296d3b17e9e4b3739cdc99c039ca20af82ea3b5fd9e50331ba7f4775e1faaa0167b873a11ce6f005f6d89d282e99d284bc6d73bd1b03d67c97d7413e315f04b11ca6aeafab6859b0ee195424de4201908b0de43a9a8485c43f395cfd6ade09dc9364e593d817838fa32b9c1b91fa52214a23e710d1f718ff78b8d7764660e8a47c19921be2fdcf57028776125ea9440b44080cdd1e31a6acb142673a4a5cef6b2c443d935b2fbbae4f683875b4c46ec4fa1db96a6c10eb844db52db0c9eadee4b6a52a4dfa47cf5136b2bf60e532cdc0321e01cf0e454a394a29662f4de2be5630ae76a56a2629b8ffb29c7000e3f4b2eb8d57ea04e44f31bc2d750a2b4607aa729632bca18ec9421af2362b94d07c7201fcda126cedac0d75f3498bea991626431a1ccb20b24b2482183dbe0d599a550f01235ced31f0ca02b839c3a39eeed0d937ed9487c2b23fb545d90226bb624ff83f4c0c78fff7509571b0a5b9339e12ff9e4df25c58222e121e6244121eb3d908a0ac0673fdb6ca909caecf07c3243081068fb47f91d4b49e4986f708747354b563b786d11099c2d7138c82ac8d315e439a2a262c21884d535eb50d02541a0a4cf1822a9a81fd6ebda06bd03d8efa4511b45a6d9bd925e2931d1cff83a7380f5d8c44455dedd572b4dfd00321b63b2bb380bf0a4ad171d300d7d4b012186e50b6f4772d3f326d7aa8a66c213a33b47d2a9b565bcc0a6f980fe9a12a079a6de33123f9aa6c06b8f6e5ced7bbaa319997d5220260ddf26d5c592f8384a9fc723a33f9de467f66d8b9d646540180f1fb81ccebf78a005f1602de91ceb3e452ed810c4800c4e5e8796140e31ec3b93cfe0d8097b97611ef02fde6760315d5fbc971fd334474598478b1ae2a30d844a397a555bcd5ffeb1bf6221c30318d1887cc8ba270a5b587ba66826726845d87d87b95bfc3e92173d61428c0c93b91f364380794ccef9fa05170a64652147c376ca94059d06878d715dedcf0e7dbc4eb1519ad069e432f8a919c25150d8db490a55692d8dedec457605da20178411671611c01fc5c72f47395b7266255dce04558dafaed9e32a7fd1f1cffc41e4562e7d871b4d4927d171c2da41329b9cdd688d89e303c7835f90760e2190ce9d7c5ee327586e7f1a9dd10e5cd7a301adb7d4eeef887d98f4f45503ba605e785a401c554d07c95ac031bc6245a101d61a05ce81d39973fc1de804477b1175806b394a39dbad60e3b70563d987120dd787c6f203c0d839a984bc466db04a0703248f1985eda08bd0d99b7382370e086b56ffdeddb69472cb94920c550778078007dc5b90db5050b089aedc310275456ef0892dd21b6db7f7127d0f4479d10b3eeec76fcffe06caba89e86f4fad8cd832ba2e7cd125fa237816d932c61854f40250a6685ad01d0f607fca16454cf03c198c67db76f4a4e4e58b2428a7f712e5400b8a5cb84e24128944ef2715950e4542f25c09c8315ee2716363cffbcd03452fbd057022a277f92211d10f92b7af620bc1ddfe47ead6b725504801b20cbbb8f7720b87f040981a7cf65bb8975db824a0cc1123df7325a0cc112a52fc8b9f5cba449f725b27d2de0ef2b5edf96a9b96aab9d2bbb1fd0868ff037b84305c7b9d95220ed8010766902579b9aeb3cf79d2f3788a8c42dc1af668917a37fac2f01049590d145226e2b5c040c106951c271279a21a4d02f6681922df75214c8b94470cbe1a2d7a200f8fbd0ac814fad2839129f46bd840c1e92076474e418aee7b153de0248a7da9e2d65a503bb95d1b40f4f2e35aacd4be81601aa26829b81ccbcb75674b64b888d8edcbd58e82138c81525da54512247ac55fa432852a4727a0090d3efff6547cf08da26fa3fe48d2a069f6d3340b925cca55a0dcce97c3121949354df33be70f0d04877c728919a440207c72c704b13bc2b8ade9f8ea73b459d22932fff352df99864f4eeeed039cc2b923a7e0a7fe6ccdfaf3016e341af9b8b5d6963a7bae80c2c7f323f96ca7e283134591e68e5209736a13e5c4769aedfe0445fb47e21b4f4e644a03d17714459f0f856434e79c9372edc168b24ad7d781cc65eda7775e4badef9ef65ce70b51fc1f8dbeafd670e4a172b51773be11e5a268e004573c07348b7de93580596ca8e225297c2a5325e6c5c9f79c33666a4dbb06e148b2a40b5f8b92060d37575656e6ca8ea6d1a2080d9ff730b945f87b45a6cc1da365298bd0e158809b224f3c64693ef33321039a2b6164ca3451c137aef0fc207a6040b480d441641e7206fd3933812490df29ce3971b81a15c10c659516692753e84fda759776a3eea834bdf4605282cfd2f76114cf4ca04f2b3b242075d0c130e8d7a7ff710c1d9452f9844b27b3b5122661d5565b3b39c35363308909c2d0900c865cce56abfaa708059071fb5fa44811f85282866fe4a0cba3b39cc5f4251cbfdbce9225fe0e5f5a9c61c7c286b5381180840a0148ac6c0e3967fa6b74872e932939dfaca3a32ecb97d387aa4d3f6813489b56b307ecd47d7a8abf26b5bd0c74a02ef13babce1acd46d366169ec5c816fb9f51cfc7a3c33fb6f71ff95bc8cccc293a7d94d87cfcf2cea05a1c27cee51c94f8c68993a343650ce584a47639b1161988c90ed422cbe64c8b2c9329fcc37cf6a769d30ffe353672460ce40cf9fc9c94afc94e4a294bccf08d1dbf0437c0570b49d2591d92e4772b27e532fb317b0eab3d7619e584a47f623cb2ce650639a7450ee2723882bfe85ec819f2ba94b23b1f3825f3efb64b9752bee8eb421fc217d14cd6ceed0d8e2e59854c837c9e52cae75c4a29aa747f928ea0b4585936728ae492c6bf206730102898a345fa9ee2548e9ce1cf335459fb7d237e4fb10e3c347f0df319070ff9ba5cf340e05410bfb3dae4392d1d178fbfbcc77de4f5a145b963478bb287d99a44d87e2b184163841146d01861040d0b5850c4bcb91acfc0c8148d19a645ad19d562773b4f7bdbea16bfe5c4c85deeb5dfaa0fec54d43c77a057bada5465b3fe7ad4dfe246afa6c380d2ed1f51af1aa77bb8daf9ad2f99524adfe93b7da7943e47c2a55031e2d5556b58430d225ed9774a652868a52bedad1ebdd5f2e5337a2bd6a246c22cd43af5aabb1b9605fa0e6b538d4905d07729b2df37fa14259395c04890307864cacb860ec74b40e972253bf85678df98449e5b6cb584be9811ea5373858b45c74a408284a1f574898138f6e3e21d0943fb6f3462263894ee07e6e3313cd5256d07bfdd73549bd3856ec8202467d491dabe79162c4646e88f9b4b99422d03ea536afd079d1683f0f97f21c95d3c7a51c55d2f1f8ff15d91190d05f5aa577eaa72865fed4d4cf08ddebaee3bf4ad65e931c03ef5569be4bb8ebb364f0196d2092353b4af1bb077fb4f7b1b9c9cab6d9acf380aa87d601d5a6b180cd64fc814ed47e9c40d984c91dd9233eab5a75e693ceded2d6fb94947af8b121e7c3e42a2071286f61a8d9abd45460f5c1aba8eb754f0b9588877e4e9ebab0059967c3e0b77177df7cf008aeb21f7f6a9c780fa1e6e60e51d8bc4351fee158bde4e433921f97994d189e8c60ff683085d261a92ecd3ffa18264c3fe69516b1c11509330fcabbf08f4ef95b85aad5624ce751c08ec6b62024de3fa07ab367dab6e1c969cf14415a40ef435ae611d6b536d18ccdad035be51eb7bada5fd603f084a1fc53bc83c6d1a0949297ee47fb8da34123a5008c4749d165f6db2e10f92d71e05580109437b1190532d6a3c60c02d5c8d245459b1dfe8bd45b5295913f1c22edc2153b4ffa1e245e00f3a72c616deb06110acbd8a70de88348b0f3889d2eef5bb7e837eb9061d3c796e34ab68a3b6bbb559451bb5ddfe2d1c88f92d9e3b91d7c1be75d24a4117221beab7b0aa8e04dae0a2550da4833a0c72c6eb7c398d73359d2e696fbf6f24ba4ebe8525817cffe43b8f01f6fd394f01d6926c8b1601a21f11895e05f8a265887e636d2d9dcdf5ea142058575595a2a9a94275c8ca5814855d5a836e2e7d1bc3c4ead2b733b6765c9daf6a3bae76b51d07c4aeac8a899a4bdfb2aaed38db7175656b55d50ac4da25625514be045989de6b1589ea4b90d58aa5b52e0542eb71b548491018e98026e425fa232f5934900481141da0295eb2b0d8f9a497bc447f5bc137f3123561e21b674b76552a4ed449af7fc5d4282258483a540ca122f418278285a64fb27a89decc30d3cc9b9b1a7770d6d8b4d83dd3b469d2b448e79c01e78c8a65b644a25697e88b6abc44df32b8b55aa4ef31ab1847f989a4431b62637989be163aca4bf48960a15b8dbb4db5684cb60db430ebd325faee21c9ad8ffff8f071777ff6578b27d757cbc59e6fd6dddbacb7d9e96d2d9f944eca4f2b9e7e09893b387326ce8fdb9c23f8f82c0a91589bf89e268bdc3982cd95d77e2844e4090a1045f45aac872f417c4c2f2439fd2d2439ce9c4618721ffe2f417cb4c8cceeec03c812f467cb4f2bbe629d03c7a97329904b7f45cb04943962b4a94b5f0b2b38fa8daf5a6ab44847607e4af1f43d68c638cbbf2075982d7697f7a8e40c7965fb8d65a13f6b3c66ce94aefdd1c1a0aaf1d8ac5b46ce80f18f8f74f5cbfba74f92454465d0c843978e3d143476cc7359803752bb149e8bbcdb6f1c497d6d28920db5cdd46c2812129faa9291c9e66c0a6d32118c87eeec8d97d8ae56d5488ada5355f59562847dd86ca86d664bb5693cd9642d0b24b3c184c64d1664849f4bbf63802efd2aaa221e0ff3f66f3058d04c68688b41b1c9b4695cf181c5da24fb2c904e9b5ac4d3a6fa1ae9b1346d6aafb169533de1be729f820b5f82d49458b6b9f4bb1b9b921223a86a6a6a2ee775de26c23f5bac4303240cfab409e31c420e9942e977e17c2e54a1029c6048ca00df1e32457ee1d2e9222f416e2acc4fd63680b2589597e837e1abd1227dd5a55f0f3e1551e0170f133e91a16f9c3c3875bbafa914496bb69ac1eebba513551a22ed87d68db3b562095f0f394372b5cbc105df687d2eb5b3dad506d959ad2fa4d822b3f5699085f20f8c5bb3357526cf7c4d9ff93363b2d9336113881355e74455f378684e542727aa5bab4f2a9ebef569d3686737a84da36d5dead278fa24a33d25e598cfd7a74f322378faf6c7b6ac8fd00a18a365f093802a2d835f035fb40cfe09eb936c02b54932e103b24b7fcea6900a507689bb44dfceda347290156ad37862536d1ac5b1b278da346e35a3558df5056bd35863406d1a256cd6a6d1a65ea99f213732d4a5cf413597be0f3b6078f468935ffa735ca931980c68d6a6e6a16f7f7d59206d6abbb23896d52666d34d9f260bfdada64d72c7083197fea6aa3995555b6dd26993e8e957579be40988028a2dd576fdb24ac91e528737fabeac664e245dd261bd1db4fb3284e5bd0cc99129b2083f37bc722789215c0e5f8268239d0121ee48c4b52f436ec097213e5a1ca26a91092010ba0d4a268440e7be0c69b528ef4b90991c7cd227c8cc7d09422353e47d1902a445795de84a5bd14ff3b5a7db8c6b0a748193289c09cec7cf897e8808e0caf742f0bbf9c0cd04802b628284bfb5f61fe5450f02f351bcf420a0bd88cc11a2dfc02947e0c97bc9b68cf6c8f0f58f9f8a17c1ad48c28a24ac4802c74b7c97eb9063a2bb5bd5dd46d4a4aa96aa3141aa39126cb5040e929aeb9108e98d50f0f9b34fabc48d73229da3f05ae609be98cf5dc46b9923f8bcf35a7c84c23c590a38580a9ff9fcb9c57140c2792d73da7cfc2521e732e91c244defbc96e99389159b8887d3db816fc62027b8491ff972f6b9b37b05123efefe9033c2c7bfddbe2c349d672c64837669f376ebb2eb63f0d5a4aa96aa41a55ce6304b1de6b294c3266baeb63a579365c45ca1ae8db996e4bf5d7b6b98aea14645685672fbd468dd369119da20b0805432564bc7f5eaf981c566aa954aca182c69bb6f748222be5059614de9278dc5bafd2cd6b4330db26b177662286d76fb35d5665ffba9a19a8fa6ea139f60a5adda84c3d25a1a8ff6d27a866ebf06db2cadf193c84f5ecb8e0f66467bbd1b7fad4ce9977664d4e2ff40edd7a2add569b4a9dfbd04ad93094bffcf6e3f0ace106e9bdcde414276fb576a54ea9aca4fa2aff547a7a9baa4eafe47f7a3a6baeddd775dc51adaee462b73c4a879610c5704ca1cc13d84abcd6cdb107012a5abd127bef192ff4d0c895bd17bf4e0ebd1a23ffff8cb4fa2f0a54bfe5b6823766380ad47a9f3ea5007ce37cad9e8271292999f5896a8afccb9cd67797a1f09f94692ebfc92257ffbd5d05f2aacf091c825a0b0c4f5c7d1275e79c97f745fc5954b08b9820d475bc315e59577e3c5a83d8f6dfb06bd4bf3ca16672de0a63cf94b18f2e4618ed36d968ca30624bed15ae720ee236197cbb58a627cab042cac340105ca3cbd6d5ecbf61c33cae542b95080bc2361d017019909947bcf3cec72c2b7518e739125fa52ba54d52f0f6a6ef7b57ec82f76b548d955c303475602bb64ab860d3add3b87e11d9942d92553e8cb6078701c109a3bb2176c3743e163c42d677328dbdb069690a03a0adc06d7862d7c2b2a3154c401c814fa6edd3dfb9527478827870b355c5189a10285172e495a3e951776db018e280544a607e4fbff9cd7711cc771288de3388ef302ddcd36dccddccdcdcdccdcdddddd43c5a3eb54dccdae7d6bdc9ad6dcdccccc3dbbbd9b9999b9bbbdbbbb6937a529e66e06010a35846608cdd0502c369badc85277b705e293292ef6f022f66974a31263a5860d1c3974dc5c7f1f767878befafc38288a7d4acab13ddf3ec9f09033f832f38bc09596e132fc2da8d232fc29f8a265d0e7af61234753507e1dbe24e123bd97213923f71e892f49f8b428e54c6b4f4277b7b04bf1dae95181857dfef27e32250d2f7ce8a104166385860d971c26abebbf2386733b856f144d703ed14f3cc892bf13aebf15ae7fe31885263f900d92e6e8bbd1770ed1a6d66e74bc3ce1faf7d0a700b0f8efc0b9fe305160f11d57ebfa07d12693255073f466b8fe769a406bb56a70ebd5af57bffce6e6e6e6c64b6eedf7f911a6cdb4e9396de6cd9c28142a2553e485f938772646f8c68e51a980b40cca729d39b8e0f3f15109c99d22a04c7c755c4ded66abcfcf109ae9d3ad031b4233846608cd101b99226f1164b1d8c8b2d93314930dc58686862eb775d66b99cd66b3d9751f22e3b98f6de21b39463aca51337336833c35a4f3822b8ba03369683836696a623473c66231209922afa33c4584ce799ca7679df3f8ab9bb598430bbefe972466b3cb49e676910e5f92109229f2fa8ddff88ddff8cd1086e085ebafe5b48977602284a9a3c33c53a75d3c3c3c3dcdf2d30c1a32697d63d7748dadd3d699830bbe1eea2196ad622a201367b25633876a1bcb308a633845b5adbbbb3d66862f49f8f4908f8f0fac5f7e9ab3d76cd6af39ebd79c29c12a21c0aea7c071dc670e0ee34c1c160e0e4e0eab56adce561ee2a016070905b55a2d17b7989983200ac1bafe43b4c96ddc278d18dd5ab1cdb475c526c69c2d191b9b246c92f0e1b5bc0c01c23233dc9ca9384e8b99f9899b676db9b335081edf314d13749d4e6df3a904d0a4da46c1939984aae3da43c5a3eb94c851a954ab1afe1ed302c257658aff386773e6273ba4e566b8fe946577c66887a48edd9651eaa9e618671a8d359bb3193487b4180d35c3403c6b4d464bd9eaf1b0b2754e5b270a3d71efe38c693e84da44ca217abe437d9211bdbf26d326520eeff9a244de7b67f94926b4d23264b48c96d1afa5fa247a938a03c193928ff5fafbe8dea61a7fefd5f577d978e2cf34fe7cb3babec9b48951336daa3cf4e5174267b6a66bf2f00dbeaba9425dffc9e29bf6d1a6fafe2728e20c5f924855aa8d3aac358958872f49a46633771249a492a8f94cfd9255cee877ada501d6ce132f20ec3c11c47dd6baf304cdce133e769e8871020c569882134a70c2084ee4ec3811c409d58e1331d871a2043b551083164a7e4c7848484a56aca8026ba70aae510784850c6aa84211a49d2ac49c74412d445a70d19d9c9cb470e162ab820d264c7c491010e62384b1e092b41886e10d37dcb0d3c40c1683d2c4134df434c1c44e1341769ad0c14e134650810c3950018877a8204bdf07388932b66b9ac635a53149f444b0686ffd44d221f2dc734f048bd71e48594837c40bc3a2b1703ab232b07260fc2467b7be5c72700c096a8653ac19e9f2a10c3dd4b77ec3b8bc72f878a97e831cc3280d86478f2084c0b9f5555efc2473441502e4d67f11e32751c82d2e2425c03b1c236082c4378a2a2b34da648fe0afcfc1f0b8cc305ecbf6b6d69f40befaf28ea2f842e5d65f59dd5a1fa67b51f84140148e58ea730ca3646438354be7d67e197949f35e7a3ab81709ada7a37b2f1c42f4ddfba959be1fa2afd1cc1da516e7245b54433d8be839cbadfad6825fcba855148a3d72866fe41ad14bf53b741fe92769fc0ca46974d5d2e939892cd5073d7d92af98989829b0d420ad5b496e7d8eb549eefca03ecffac42cf5356e189f5bab78a2846f1459a64d4d89f04e11d3b415ebb1ddbe91a67c922c7d4717262ca3c8f51fe70c13e0031b29cacb61027c702361b03cd197b2c4e2ca912b59e44b69a24f9480096030f9f3edb66b357afde329a5cf39e7ecc94e04ce850b3e6b65ad4c696b9acf39ddb566172ef8f88eb67a377c13e197df24902d53fa47ee4e96a00d172bf8361739834ff545a9ff013201b23f4596fa515adc51ba46e9fa15b75bb86b946aeed23311f2bd087d7acec3bd1d72b4d8efec01d140f40e09084199d2de8d1799d2ef1e0e97f0a5f08dd2e5d22e57bb70b4a88375788084d17e5d644a47e16b590ddc5e03b7672f87277cfd1efee0fe07ea59b897927993f42be80efe107d83e1945d8b8c92c1666db34b9f93d275034063a545fa346a080951200a4479a88bead016cda12c974e8b264553535155a6a2ea4c8b38df385f970ef5bcaa8ad627fb1a5e616385dd66b940be9bcd8da939d474586bb5485bfafb585ea215c62189495cb97265aeb3a65a323e9c8be806e35cb4c9702ee25c8452372b03da60b25a6b6506abcfab4ba254cbf6f8c8c8c884987320ee38f7b1e270c779338c53353637ecb5700ed717f7bc9868710ed7ca2f4172727458386dd26e5aa4ef5c5997c35153f5cfd2d5542dd26f611d736aafe25584437c2b4cf0f58f5b4da54fbab15dd177387eb4c6e7ab45a116e9a76caa86a46a6952555467157c19d26216d1cfad66b3d97c6caa6db5e16c39ad0dc8c6da743ace6955759c6bb28ef3d9710ea2889eb35bcd56d31b6ae3d96e546c3e808c6cab11398337542d12eee9f1e790447d663db269d3a62714f62838301f3c3436ce755950cf68936dabb4c9f5a54da6da64ad717a685432a0202156ab1a47f43425f28f9ccdf08d0fe769f1e4509df9a97c00c1f1b195a0d32608217af0b076c0f0d8e88c9e5cff13e6410999717733f82264266426448824c6e9458f580059f8a838459161210c46494860fe5f6bc40b28244a0e2ef8461a3c3cfc6a9e16d9cc3cd260173f3193706c86c341356c300c48c86a3cb4d5260d428821acc8ecc33e3cd79d630da46f5ac5427d12bdb70d11098f04629beb23e3ec609d574f8e1e607aae6f967a3c745b1510ad97e0e11184104368a0d862c7b86990ba062f512324c6dd1c8bdd92784b0290c1d79a8bbc0801d23c05cc910058f0b18f0b2006dfc831d2e513fab08f00d2f0f58fa2c8fcd66be111499bfa7bf5c598e07c02e8c237cad9c89091d8837c940ea70d9736758726ed7150e574edbad591644797fc397c1c7280430cbe1e52fb1a92e8cb5bdf0712fd8f52aacd0d06df5f1b50f0511058129202a6d6dd36597b22cd6262623e7073fb4f50fa4595226e7f0c54ce6d5be90e096e7ed05e0b3f143be746899d586a27c6da89adb470b38385d59561107da58af3093eb9041ba12b9700831801ae5c020c823ac64bfdd67edf68f42f8a1da3229ba58c0785e9a694b66b488b59f8815c5ee9ac53265d989999575d82e1e11d4a04a28841849cae4894718456ee4988119a4c2907110a222424068722be8e89a9a9d961bb3818f1f11da54c6803a267625ae46fcea4e77bc964403cab747a9d53ba665c46d92ca18b23078c487b4ea4d5c933244ecdb44c24f04c8f023933a50c047439518743113052ca0ac3a3d65a6badb5c2f418a23249c7101f112c1c248801da1d1a19f2a7d37bd470ae428043e4b4495ed691978368b12b0f6f20e600b46442e6fa7e75ff88e1a6b84c6061e65e967ea7ccb233dc963942c6302e33b71f479b0a70fb454af089defa28597e625937ebab01871a7cfddd6a6f479afa03b2a7888c14fbc7e6e16ec538cc224c2fff4c760cd8a86635e16316f70dc32105dfd8ac91632ed3ab7d7f770ba89df55cc249bf81b4b89229fd1dd83d9030fab946e2f6cb1639c1270abd17f91a8e5ce3e5901109bd3087d2d6e49c5a299d27dd753c71b172745cb0574fec07d6e2f18971228deee0449ae60327d2268d1669cd6a569f507c7fceedef96a7f33d8f487fbf44de7572bb7f44e4f3daa74fb0986c86828a39dc629d8e71bbfb7b94dd34370da49f657416d42651f7bcd8a79b7e0f385c72e878691ebd830499db26faddf7d3a861a3034f341a044645127d017bb1796014c6514a6ba51af812040693c914e9bafcd6c5fafc448280f7222f1276805f5ee2f7426e79891fa5b986c1c34914927f172f5f3c719da6b578c2d737fab7d7c00b70eafed0bfc3f64cdf0528591e942c13e497df6c3b7c28a9f5a507667676e9dda3e7264f394d9ef396151a35b48f11aacc4ed3bc1bdb75a15ded4c70489eb33cacd702a3e24d703e51278aa1e22f9da722228202c5ca37329222460aaf45e5c604e71b798ea433c1f99e3361136942f25c49d7830f3b5af49792121a26262968ac7059e1b5d870c161c25eab113454463a465e4b0e91e78e058be7588028babedf0aa668b1e152431a2638df8ae7489d09ce67b2850fc59f78373c771c2dbc1697156f82f369ef2cc20aa230e2136f8d16dd468bde99e07c2ade06efc676619cf8b4e7fe41300cbd169516bd562362dce0b5a8d4bac2dd3063423b74c39c415328e8861bfc35a7c3dc63404da3d929b6a83d0aca0d28ff72063b8aa6fd0d9a3627d8332dc38af1930d27669142aa669edcb48905a9863f0149204a0da07883d7c282854299321385821234b5f0858562a1346d4e8d85ba9c562a95401004bf54b2c1458b9312a90616a55269545a61522a954a2502b4787a7fb40887f0008b089274fc3f112c2e40920e17dfe25b844338cc4bfe2e9e0816e9f9cb13fa88b8ce4abd70f06e94bc05093ee9e383d91d99f59a3298f89adf42c42857034c2c2d42098efd357c048edf5d019a80252009384ad908f8a1005f40cc6b032873c4c8afeb202873448b0f4199235a84dd4fb074a5a769a19d414f5ff4d726c95735ba1204be0c69d16813f5d7a4ef63dbf408fd38cc650ee441b1990f6d534419689b220db54dd116facb5f7d72f1fec9b469ecd4759f163f367c8b97f94ecd20f0c1182d83be0da04acba0df027cd132688bf777211f8a41b50b5076c97f24763156da346a31d74d23bf460d856364a0eb3e2a51885d7f1a2e3a589dd32d47b97a5e3e3f30d75e8be11c960ebb4c230b5d6f13e9c67645db3c113264356d4a6ba3d0a3d1f045c890f69ca651aa09191232c492d15296881a5a06117c6a1a0e38dfc881fbb5e8b3869be07cfe9e07bee4f092773834649fdbb8ed2dc7322e2f301cf8d2a2e3c8a1a3072eccf12250478b7eb9071f5c5af45fc1854f52f04a0f07253e7ee92940f4a3fb2efcbce46ffdc54f8e5c33707733337737333733373333373337333333773333737733337737333733373333773733737733733373333373773333773733373337333373377377333377373337337337cfeeeeee661cee66eee6e666e6aebbbbbb99bb79767707a066a8144df83539856a0400002000a315000028100a0784c2c15090c579aad90e14000c86a6565e429909b324885114455108196308210610000841608486666a00e45d20c0c96080d524b7b1a431c4adf65d4ea3af19b856ed98efa4f66fdd80a38081edd3a7a9905cd56fd3e103e0f34692b80a5a5d02ca1fcc2acd65c00821ccc0342028c0d0fd47be54c8579f8bfc8273e9cb6db4258c10a956a5d2db982ff05a84ce6cc34a3bd5c29e07347e75e7f15b787bd05c47c59e9d93d62815f9b212139434e5aecbe811e3cc57372b64b4dfc95772fc32b62b7a61a24150181ae325768c17d0d53699ce6121b0f470a1be99e30438411d133dfc47806a5f59dff5cd1c9edf8262c45aa8e3472c4761f0a79adac926b09e6197ffd644eb6410c98f28ffe382a64facc4490675ea66f8327ba9f1809567e0c1688f1bf9e130eb5af30ce1c74b35f1b58f40f12f9bdde8ef4338616bfe49c420977903fd12cdd9756f60c6697ae2581f9950fc38487337c57a571bce91869b8f3d0526e674917e94ec27f9cb9cbceb4b0b1cefd1a072eb82fa6fa1ce4f1f888bb920284a7db0e87fd23037fc6ee6c2bb91ff724cdfa2ae48d33b0c47f8333d32ba52ec61243f56ba6f62830f0dda09a54987d9c0be530d40a09d58739d03c23549431e5d7c90864168c09560f07acc6b588d6ba0e99791f361997ec0801de88f8cc39a3cc8e533f57c8704f6208aeb48e709d011067528fa291ed2a98a963d2da4a9e1d2eb573c54eca234895f1c9b709599253d25a8025b0ceb7ba890d39b1384024ca342f835bb12a81d2cf2986930e3d367860651498fdb95d089264c6958dfbfc94f92cbe494dcf4880bc1477c92ab50234be7990a5282749fc3392d4d4397327c98d15a7069d7d2592184eb52b6b0825c3dbf96ed0c23028844e1d2e436507533a97b41ea911b16fece0c2e3c66944720c72c8d7d2826f2d21470b4f7d9db98d17ad4aa26e6aec720515b2313a43c379e961014e08a84e6beb6ac816ed72faf8790dcc4df0342f126ccb36520fe3b5724d51857963c28c66decc547eb9cbf12836f1299427ce75cf8d6af4977f0b86a9828b3112e447322fa32ee3c57a45cb5b06181ec7a23b8d02d32d05c0bab18926f56d69f6fca4efb72aa8472b7a761aceaed51f0e4fb6e30f19633b4f10a2ab93ec974af88f2ff3c3f6939a4664dbca8e9c633340fa101b28d1e7fa809fc148d563924e4fb0a59b0e7ffca5768e1bba051559ef98b48a0c7b19c26d0c2369abc8045ae394cfc78594d08195148caa2e6d804a5cee3d713c87d2fc6c80eeda87a68a26d266ea9bbd6ceffc2edce5dee3d7fceca71b5bd1a098259f7006d0613cc8bee26615befc8eb51ef7e3b89d8f8337473b0ecbefc7bd1fc403b051b388474a59c150cbf81adfbb8c9619082cf2e78055d9e99bc979ae78a6fa6e387280987bd4de789367fb933be27fab2a5922d698a18dd7aa2ff5bf554c4bc4b347e55bac44ebafc26105b221a968b6b90354f3f50306ca4a59d7dcd3c0d9986ffe63bcf1e3dd8f6bb81490b0e2deae9f5fb586c24128120a12728f303dda07422d055afaf1b6358d825453bdb769d13a5eb786e495daad2e9fa79fa5a5d0ef717d9e15cb519c11a0dc44c38f20dbb8357b8b9739d80d24dffe8b3f9f43167b1222456b96882cecf716dcd12763145495c45b3a81c90477b7c5989723865396905dad03c09f2e97071a63f03a73f3ef9e8d12c1dc7ad1ee28f7bddab3d11c794faa43b4a27587b27e596d483942742bf5eb2bc49ef77a1802c3efdd92acabd1ec5cff9a1aa856cc1b38613198ce0a4001433f080cc9e32d25610e259d0a8371f5892c3eda1f877c6e061ff4baf1cd4a430ad9d6f1e9f4b5551a1f1fe30d4ac146f738cadb1868dc0cc21f96a528410c19b9e9fb67576452d3b3c7ea386575784966ebf7be43a9e04cdc3db989373bc7efbb979039f7760ac0ec671523224eda6b668755ebafe269c2acc56703a4879da70e6f7c0f1b48c1c6fc9f20b62bbe19acb9f94328833042d5a0bff678bb43ffa33d7fea1a5ba10fd9250d9757a24eb1524d1a68c290b36ed55b84f7d07f35bde60bb898cbe866e902b4ad0ba2f4275c7da23ca59227774b4b1f1b1546764ee3ab55199078825f0141030071bd8d9ab3d996c4e4180627a646d96ba5aa5c3ac236c325843b1d014de2f4464f9467b32b09248d602498920df05c59eecbd42dadffd3bb7610c50ec9e24366bd82153061809a1f8d83ab0ce4986cae123bd962261e39b52e90b89d207674345fc9d89fcdf64894a2ef6c705da0ea25ed111865d6c1c2207e12d5a78b68818cdec4188c889ce8268e3dc27ea10fe5884c76eff57cd1c3e16efc6cf8f7929f8669ddcc9a3553ce482ac2b0dbb0509e0362da428397a63e5a058b44175d3b16682db24a899da3f19e183fc131cfb9b0c3cb53f3ff1e16aeb3ec8e8726941d488e9c9c7c0a5c150964d3d0d1c5b038d1bc9a6122f1933fe8a9fe0706890379c2d1bf987bf5fd1b1e0a92376d3b17d93384a951b49bdb998a526874d79c953493de8e67cb450a1385c513112bf4fa6574157689b069681f77110ce804b1d05216904b036c66bf1cacc0a945b8fcb617e81151dda578a06b6eed4d57bc4ab0b2d610ecf317d3e334f6a0e8e66184a44bedd5f5c66a75b835157e7100e34ff90be38195c05eda4b57b7a8d9264aa6741d5e5185a69de8afc035666527989eb8a4e31287354619f7f84040c6e5d21ce825991c07f52c0ab2bca7cbc023a46240fbd631a8d89ce52230aa104cdae8a04c393751d4d192f36a4604661428bcea9852f2a4c862cfcf3694e887332e7368ab55ba7a4f8aa68c21e2335e89bd46e45c0c783b7429993a290bc827f2a0359db3e3cc8da66ae4e265f4299cddb3f7ae2b6c535e30a25b1ed633ad42eb8be60980b9e1e2713d7588a552e24f5330a567e61028f7540f71bb95c4de53a5f84967e10fb8d8b831ae524995b2e842e29d215de6d833d16cee252867cb33c8026f5ec118c6a756a9771ebc6b4601bacdc9638ea737b6acf21b8a1dca9e549bc491bd479a4b164d3c1c8bff70be28df77e1f81b1f2886ad1c4677812a9b2adcce103f53089e3a8f2894026f7b8bcb6e9e684e79773fd91ee4e9c70853ce4aa39e4730a9acdd138fb996bb54ba8bcf39978df5193c03c1cd426b64bf7d5f4c61ef79d6be6696d9231398788eb2e09cf44b672ab7e51ab467afb7329ef456dfa5555d0d56773213869302a532dcf6b25594340efbd87ce67a9d3ce8dabe042bfc07165e848aaedf1d0928880c31f22756450ebe7071489a0b7f7f1db04c26f9026b92beb96b20cc8e5d97d9e9cfa4236fa45bf89976135ce2fb81fcbd0239296c6c4a3cd57dff5cef36d4a9ed40aa1fd24b865c5505bd679634369b972d07e615f78d38cfaa5642b9eea82b2fb1357bea121d78b2713cbd7c82550b89daccaded3ef619d0f631e1f12598c47236110d37f549a3baf9e952412c91d5dba7cb92e7d032c4fc1caf59c8c920d07d18254d45f33891d4cccb8e503b15c985622cc939f4c161791de8644895160ccc153535d9e94c225d97a6963a35edfabdd6c1dedbc4d2e8a5aa4f4049229fbf52aaa462745d9aa876f9f42979d80053688042ccde9b5939d4ce180cd886e44c3e312e53992b863a1ccda9011844456b540b5b3588fa86936184eea7128ebda003d12eb5a8a8b1de1d7f5a4301497d29e75ef515b645b6aba4cdda7d534b12151aa98dc5bdfeb3d54993e886a1e6b8e9e181d1245901c53fc4a417582da0568122358b09190656c6a9fc3e38177dac5459a17a50e498c4db526bc3c2ecdaf414d255047dfcc6a2a663af84aca99aea0901782434e07c3bb393845aec7392f66fb89f98aa41ec3b4c3040673cba96f9cc1c0a26ca55fb4a1204755e9f901e4b1f7f5a1a6511196e15923f9955826f970b8ad228e4e0ea089202b14c267dd8e85471b07fe17e301fc2448999c7301e462785b7f3e87d3a930ce02d0be8784fb44059d2cd0cf613bdaca62cbf0e55c5661b120b45c9907451545493f45f5b29bd0ab61b17e918588f779ab74c5f85152d21fd846cec994f9a963764c1f8de1b475faae0bb295d913e9dceed8b9662bf6adf5bc38c8013c92d4ae49e4edc81941cd9da44768499869efb3e9e4ecf10e295d1475b931aab85c261a19e16846ff6d3307466c1831888ecbd75ad7ee62065c4d6d52870432aa2e6927108e5518f484490f2885d8d2b56dc0e9a2b4a18ea1bdb1e102e4c9fb3ee674ec1a9bfc0388e5b7832b356984d221ae1490a3110347c57249e2858bf04f852c4c1aedaa87c74ea489eed5237d00b8c8cfcaf2894a674975ed142cc8c3a5695f7adcd859018635e30610e38efabb82141c288e676c35f7d6ce30910ddb735594f985c3d0054e93bb5c33c72035b545014dc394d4a1b9be8f1314a33da9b9252554d09052fd7b02dec465548bb2ba10dd0243facb812466ff1213ff05024564d300d0febc051ace36b64e9f5602412bcfdd2754ae0e265db6ca3ac966bbec48a401f48b5eb21a603ac86796ba2e28ebec84adbd9c0e6a819c728d33028d6050ebdb11358512d7196f52bfc37aa452050b95e241749f633b4893d7cdeec61cd9d57fc844c67649ab9e923b3220d64ff3eec093afe62943de7e9907bf82e6f11db16a48dbbdf026ff9ffd4b257dbfe3e16f8ff2a9dbe3d13f6309cb1fa4c63863f214f11ae2269bc60f35d68756bda6f02f8c4298e27768cf045f60ac3ecacf252c9ea118cf0c9a62f641ac64b1f1d08364ba3463b58ae164b79e0d8c413b0d624cb62e969dc9240b02a308985714581aa019a29e8155e21b82ce0efad51b83e01318734da4d19004f3aba94bd9a8449d8801260fcd0934399d9204da31fdc531aefcddd1f66aabb8c0bb00b1e998d9b05ec3c659dbaf06c415d14f91674b1e3fc61028e842fda788273e2b76e204e059f869cf446a31e437efd9404f591c1aa2710d4f69727a1a15baee741f3ebfa03d65cc597c518b61aa5adf87524a4b3ef08b22d304632fba84a771a517dc4c6e1ac9d18bffb176bca6e4ade58883cf22c892089ce382998195ed77a043d4cf36ffcea8ed0e1e31576353bb61fc7fc878068be228006113e05622d7d34a45129eb5ebac79eff5dd3f6ad9e37e86627e9a5141fc7d8efa02859dda5158da39742eb7c9fbda449cc4b8801182fb0a21c0a688a1668c77e36e4d92c64547cc77b1f3e7afae4037a904eee0afbebf4b6f36e0c909cd8c3b460024c8466b7b0dd3eaf62e310aa3cbf3a5fa34955ae249fa941f27e8d1ef56344b2c892d0e1d111b4a7670bef23c65b2284bb3dcbb6ae55fc8ceebaa1c75819107d79a1abe17d0c5098bfdd3e28a2047e3c0987a19ba3af28889c69c675ffe214e69520cf977fd7b62079fae93c464deb82050544b043dd288efb372a6c7b690a3d165596594d61279d3f586d316b7c576fad0e5f1d2644cf07d087305ce4b34afe7f527664d2ae2749e1633479122d104e9a7afe2b8202d89fef3f8a5f0541435c4a61839d33655d0a8c6278844a4827aadb48de3c5e3a0ce1442223becf400d2dca72e95375696ab126a555fb76f0744fa70dee047d10f49dc8ea944e22eeded038fc2f353807fbe549cf82d7a4ac693a3b5a6181ff656b77dbe860b756323f3a918e9b760e38d2c343b3a70f8c35edc8b08b76bfe33590cf83172cc1cbb428ab88ffe0ec1e56cf50e03e98e0aaa5b2e48e116f495f515e34d0234a2faceb709748eeb2bc65994a936fc613a40be18bb78bb5d778ebb78c7db5ca6eb6a7343376c19adb1f7ac2b503be6c08e0e3a7043b04f7746636cacdf7ed29315f245950f0b278378c8ccf03e12acfaade3e24ec061029facd74fec9452b7cc9b05d53561bc94189f632f26b6579e3916190469c61725fe741b84a0be45c933721facb03ad8cae5d2467aecbaeb9b6039b6307f65d226e0afb636cc28272a15090b860d5bef6150ce6b27434ebdc0c06aa3429ec2668695430e27f822bcd71023b0ce222c88881ae6f5bbfc98bf6cdd2f4e6969f93d79a7daec49b7e4474bb36005f809e7fd2edb1ef4e41586707dfa222832efbc841a919f5824e7035c69d69cb27806daa91aa89230022ab4e85a74d5b4a42030ff928e11625ebddf95e90dc88397563d30990edd93ba99dbb00b9d227653c24716e1ef97a64d41d9d6dbe377a9c0a02753fd5532e5d27c8750e56c4ede4e4b50e85376387b1c5d1149fe27973ed56baffcc69780cb6690b2138ca74c1732fc08a0e6681875797e3bc3df191a7ae110a102827d1f9a18e43ad49838607fee2f918a3a9bf659ff9a47e8e89c497c26e51fd93bc61de54197c4be786240caaccc980ec5669d8d45e53d0285420785ba18140a59f9be1b2584312a2e5d33c8c6e7c0203d24429c01cb7558e70b6a211eb63495a725d832304ba88768f202357176136ad3de6fee47757837be2d6923426ca883f7f9ce28368fedd4f8c5889c4d70a656841b5d703dd82dc3ac848168c8380d9f580f9c1755074e6162833abc8baf96b2112136eac4bb7c6685adc7566afc32624e669c28d08ba397d4c9fb7c66041b11b1a3cedec55743ec79b6a0eeb7217066ca09352537a24eefc7a7256c44881d75f03e9f59cdeeb3853abf18819319ced417d05bc00d6e78284866727870436638144aa2b3532032c4b8428021ecf8fb8a4517827a471ddfc7c743de8c10bb75e4dd3e32cbfe635b357ef16fee3cb3e3fbe7edf105cf5e7372dd6bc57f12d4eb1d96b279a654b4628d682a654b8a4bcb02680a89831645097a0148d7382cfa92e5f9d8327a7c16b8b48f441719dfff37726db7352daac0acd40d178551a6f4c6b10fd02b723e81632b024d2b8e2f7a5e8cf74ffbf7c51c7be6d4ba6f45ff23d4cb3b5c4acb8c52cec406a155847c0ace1666992c89f3b6cbc2c84cd89d69a0af787094322b46b4d2b4c27321f3c5eac9444b19f117fa53d6ca710b73a5499ce5cdf27a7f5f433fdca6b05a6e00572b68dd14f827244ea76952a15da9e0edb83236cc12a822bc39ca999577b14de2f88143e615a71ae57bb115448c1682b7c5d9b39a71f2c49b0502494f1e6372374e3615027fd43572d8d25e491cdc90182fa461b37fa47c6000cc819099f5d711ff72f1193b86b7e76c290fd37d26ad708d60c394934c965b9c89afc861445a961ec06aa00bd369f4f984cb4c71778959f3949b16072bc84aacba3cb87e2c3a6853239f36d9ceac6f6268399964d40bc3ad2ff6fcf2dda65f9ea12786dc7d7e59865e98dcc2ec8d416ee21693b771f321d8eafd436b982da1953392d0fa1022d99dbd14eb3cf9c2b611753215c4c0647332d09f9270533733f662881bd3be77f7d3d1e29dc6801a52edbd42fbc2af640075d3b1e438c5eef4871d056bf3749d18670c14082f9586a1bb4e6f93a2bd7e9da2d779c4d9d31de47ba9538cbd2506208463add34bd15aeaa5ba7780d84854a41a9d6a14bfadad9c09ae40c24296f153acbbb62651a856d522a7fab21dea2dd903f9f2b7761081081aeb6b5d7fdcd57d1c1c8d6a77f426ed4a7fffbb2e75dc8c9c9bd3f349c870ea6cf889f0d5159c45d8f311d7a086141fc4c285280ca7698ef2a54a62752955061007c5453f1cb4263921aae5653bb7af4706d53e080645e7cb22da6fd0ac0cca77551560ee5ef5323858e06b6baf593e48f4b37ecb79574c0221ad39f41e9e3efa480d89e1230dccde9087f5a33b647c4c6eb05873bd5a0e06d9118f630a8ba7271ed095be8546028242cc0a321956d00675e2ca1d956eb029db1d551b2b9ab03b3c77b8ef930a7984a96101c2e018c4936b4c87f7d3b851f678a647793040f52def86ec94e43055b7c7abadd40813aaabfaeaf20fd16d19b55b4c45d222105fe0c36767ef88016902fb703ce86d8df880735f81d0a7f476978ad9bbba0f08af82020b5d2c7e334c12edc58d05ded42d43253b5e261d39be30e2b23184a114dd2ac58d122391fc8533a0d0f03ecc004fe4c258b3b11e69cb69d5eb02d6aac9e283d63684ac311182a414e5b21f20d1919dca617f2c09bb365066d8f09d25ceea16d2281dc86b4b09f1b8316b852b2a1da64fa693c5e079f10f9716e3887aa6bb3a49c0d80cc6211e9edf97143083c2805095bc349bd634fed0a57d1a5bfaa2404af8a633bd92d00d336384ad725db67552af8fc048c33840028fa9e72c13bc28859f1d65a867d1b2f7ed38c05e01df0bceb9cddb21437c280f96426ec3d846557565c91bcd9b1578f94b873c4caacbd3868703f6fba3978a1a36c0a7247aa0c4bebb38ded021a45bff8c12e3f1f733e6a84a0a40f2387c91d6db88fd1f2896c4ae72ebf7df0095738e0d681976d67d119ed85bf21f2d69af1e34a3b17d8f3fa011d7a4ccb17a4600477696005dc407b34684167909e6ca15cd8cf91125522c7a06b1f9075669a7a1a56ef6b1898402f009303006f68ec8b62bd30a96098b264563c7709ba1046ff588deac492ab1036ee1e9b9f517d8ad060419ef4445dfbbe2284b0e3d7ff26b7e00d446978cbd93f8a91e3e43048d37241bd0f4f0e2186f298c44e8a530e247b4a33fb12210de0d7ff0373e4ac7dc49d43b5b626ae8a8ecb845fde1191a5d049e205a03204e54c57ff86d09846575a56fc82e769d84bb7f4db6ad8b04a59d544240a3a90b487e1748ff615364e2c01ecfbe02b7116a941c37ffc9cffc00e88d3983e1a455408bf2c0317450cac43edfc324be606dd4287a155c93c7835073681f0250c1ba2468b94edb0065b3d2e710fd84bf75479280ee4901b229fb27c9cc36f727262dcc20ddad60db4108d49d157187d3a4b751741c84f3bd5c742582cf7c6e21afb8cc737a55efba97805ffcf332d20b86fb57632b748528b63d820f44775e48cd26badd760e5de7c86d3d25c44b5967411499ac31b2329892a3f6c222f4d6ed09db961f23be0c25a9bdc1962557418da6e39e9c45cc565b7b8d4c8eaf17245af47915e163af67c343277d1348cda8432968fa144d069550d8034710aff079bd7a72190a7475d18c370cd6065880a047a3b3eba10e7a9df9bc90c341d8028e8145cf4bba1e3641afd8f67a49afe1aafcfd79239c57b75823c2d7548cfee89be79343f3c0199dd8a65945604a3f846aeaf28ba121d1b5e9219617f14c2d0f511694a7684bccf34df326dc01bee2879923425da1892cff9099af52f98d461a233da941cda53099a7266f99dcd858559e336d00051a42d19a6b9c188ab9591f029a6668bebc81a8dfa325757dc70c4e9abe79fa816ee1dcb9e69a244431839c9e2fdc7584d977a0f3abcb58030cbc824b188b1a0b01d75c18446ee640f9b7c1414edb4c350375149455915042e59fd7a048a9c2c388358fa48e9f29f3ae9bdfad3744ef2dbbd3883c324b4dc75a5369a663add5669646734bd2d0f789bb5e567593dddf31dd6468f5ed92d94d3b6a9cbd25dcd62ac07d0cfcddbe0b477235703717550111a7317763783c0d2c1c1855e74ba098c93604026d0b1de64c10d646fb78743d5b97460e0faa3bb2831790f10d333b0809aebad9dc1f3b505a003c87112a6bb279a06e5b7dc828bcb0c97fc2b62e3624f7d5ce7043fc57c8fd214c6a0b6d6f7095102d45adea7778388edb00b53c343693a9ecd88c71321c7be9b3f139d63612f00de068327514247d03b253c1d6d399753921545d24d32f25871c658cfb243bdf5cd7a4a08fd206ba6e05dd806f286934f96f6ecb048eea3302a0db0dc9c230404571fbb443e4f62ba21b5c753840bd82b456f8cb42b6c9324f58465464ce77f050d8be20618b201caf4a9685ac95047f89f6437147022a7a43987663d14cf931f1f721157d31b0c0854813b75154c175f2fbf1ea495b00fbc86a9973ec2d024a8258a5c8efab83a40f041d65bd5a4290460342ff6bc2d9a92ec5f74d0ebe5898644d3aea43a30fe945b576496afefd78e5d3d9be8d750861a68a32fcee2fe9925b75c5c2a693ca3ddbacc20c6219d907a2a781ee1b6ef83ed7efaf3094e3050344d2df9a22de646621a72a9b2bf4be342fbddacac9c699d2139b374b2c9608c13e98e0288f1174e22489ee400dfb81e9140c98d95235d9b01ae34c3e1099b2f77b294e4469237abde611353a8902c9f53015d03f63aade3c21f22900a43b6c509e3c5d91ac1245df0f8e89c43871fa0a27c4fba0a7890e8b587fba10947cf785d60eae1da2490200005e9c91db812e8402d8b2fab5e867c579586fb76b9a01b2e564ddffe3bfb873cf3862ca9d605f866466abce357a1d6badc754c8b38519af3924b3a55aa6318e997bc44b81fcfa02a6e98f69da826fc533035c4dd3e6337a9ee479b026fb83d946f6a96be7c65fd4621abfffcfbeec4a4f6c7e93c668877ca7bf0fa627ba895ec43e7ebed25b466cdd5906f5d43c73ed3a0e7fb7ed8a1090d01dbc86adb7aa6222e957cdbc4ad0b3066c77b6cec078e59cb9224fbfb7ffc0118626dddc315a0ad54b24c77c45263c618f222c1b1dbe701d5ba353c33409209a26ff945f02c673d52bb105d2d0014db83dde8825289b5623063f584fa7d23bf9f58a09393d3706e612588b3ff285f45fc903d3ac3a0c1c7560c38e546cb944a9194d711913e78d6c1e4b1055577b505f8b33c39870dadd337e0391550259b8957b5ec837b06a7d7a067ee2a0ed23debec5025c547fa7bbdefb0e5d3944b0bb6db9717cdbc9302e12d6cab8306c251972bee073e316a177883b723e024f3dc74d2cf9cbf4dc5e60ff55824b7a87ef79ac570fd4d4e537515c75c3c32f59b2d9082ded7008756abcb3ce05c4a1571f9ba2f5009621924cf0b80f7a6138ba81fecfe6e8339fa599021bdd4b4d53fcddd7a7cb6b5208aa310247e05563f9435317e4c6743125691c4092138a9c251e67fe9eb33661135d256fa3eff5e3918be9fca9dc30d48003c93c183f359c85ecdeff7a93cb0e6c9276a19413172d727a169b2e050b55dd817a86053d2f8954f57e35276e8d32660fd6ba8a975191c8aa6f35c7abf5ab005c9f26576c734e8b4b74473c888f138f43ae32aa8b75f1eb3f17a1eb8a9eb5f7857952a4c15ad22836a971f8000bfbdf74047bdcc780fdfcf08884972d46efa0ad1c5d929179a1b76b042f2c2446a6e43d6e90f6c50fc24954daed04d31aa40a5a6783380aba7020ea02f5e6eac21978666df24a5c6175b3f52829b6b489a47ed03a98ce2b272f5a6c262545d246cd56310ddf2ad614c41f8c8dd085b2c4e27692a654087296844dabc3dcbea7db4ca4824cfe3503f6efb65a4e34b4046ec1a009961ec5253591d4ab14d11dfc5b0c5d7822924c76f0459451e9f0977aba9b11e8f1170eadd8cb972b302606bea196b79cd09adb788e816a35f216ced50f01ed5face098584633ee220ca78228e179bf5174df893fcee3753af9250213689c2447a5054db9b44b5a364440cc2c2d6bab1076cb259a9328321d609f6b663468a297ce6d3aeaa85f873226740aedb9b51c0ea5021ffb420802dd7579c124fd15c52008745ab5107f0323ef65c8599cc03236ea8344153342818bdeffcb4c81fa7b9386fbe89a87b9bd3debf6f9acfadf6989d6a91bbc4c5437fc3584ddbd4e89573cfd0a1271a7c7b21663cd965a244c1580f420508aa46cdc5e8605eb1acfebdcc70bfa907ce8b572bab947af5db6356125a96a7e75ec34d8560468841965b4d043fc7ab1657a008ee1a7b3ded6c60d860619baa35d02eab44dcdc33a48687f1ad7ceed7afecdd8e93823cc68a2d2ce464eadce702ab0ad7beeff62f7aa3b0f02a4e5448348807b456249b732b6079191e1dadca6de298d44e57f0c7b01f7f299b12341c823bcabbdb3fab1c3d5a14f57af8ecfd2547478b432eca192a177623ddbf439b887b92485f7163aa89075a155e57c54c891ba112261201c4d743d9ae5b4956ed4082d523861feaef2ed3899dbabb5a9baf2513e72f643730478650a8987ff69d2798efdb917957d188a6ca2409ff1939b77c2d0f28c7f0903cf2e20eeac12e1c609bd306c982852d2fbe12a68789d2e9f6ed0f5163031982746e66ad3eeb89689fd62cbf73994fcba8d02bd2e4d6f729b573919f8bcea224e03d80bdb30787b82910ae6018ec1b81e5e587d2557c9847d555333f95117a3f78fbea5bf4ea27da13eea2d2bae2b5af49e0003eb831d18038b36c26f0d0c4bc688650602b8416e37de8844fca81c2c736e60ae640bb844ac090db2529e0d94bf2cee01a62333c4652507ba8b84b912288925ce0e926fcaf0ab0400a2c91aad2223f08e22b60e6fcef336eaf4e6c1cdb496aeb7413635b5423537b691334039b530d9e1fa26f6eac7ddd21e9171a3f010eeb4c56a1d6640a440560c4412fecdcf08c3fa9c1c84a14b25e6e91884bc81dfa0bac346394e32ad6623a15e8f6bb1c043e1e1008ec55a07a4d9d4e0093deb0a577d942fa4b64113cb69987403a2d663c913bb231cd72c25e94574fafbf570c37148571e9a9cffdd6f93c718fa8430ee3662acc84e4d9c13316598f43d39fb63d246c647075300e5f206d00d0b50fe2073cba67a1b76708074594a615216239db4e47d873870fcbf1a7c3908cbcf669f15e86306c35e0ed9cdb20c3d8f1059c9e643a40e48194f1cf180da8377120e7813f33e8de0fbd1d704372f220ff4fe4bb9ffdeaf55f409622dc151f865da38c4ab4338be2043782a47dfb4979b51da8480bad281a8efb51698205ec5652d800d76a3565309ba3661a2317601721f893cd66825c3eb37e8e34fe12d1f315c692b31853d2f369e04d866e79b2342aa9013de7cde23af466991f612754b86f27319cd32ef9a2611941480780467581d7836f8daa43952b12467de54b88b2be5f8165e0a3a6698a16790be998079fb1e622bdc99bbb8972a0505b760210d5ea89ca1ac972f59d46c3407a94053a33c482351baa92895a12a334210bf4c55603ac87a0c9830f08cf6a53ebb567464a8a30c5f7adf014bef6320689a2e0ea5226a6fa92477f0b4d5da51dfcfa75318036104135b22d6143c11e02603fa2ce7e846e91924fae8a7a6fd72ea1349bde3cef59cce3564ae61ad528c22b881ea800499cc34022bf9c852d870bda5a8ff42b8e00270bfa0d459a220a849cdb549cf5ab7de8bd77af877c224c9171a569f6387b7cd750a1b93c736ff95c2b533821055d50f26b1011465edf24aed7c63afe97854d94fd9a7edef5082f368f19d8deb6da83a3739d9f9f7d00102fb2850b4e90288b211a6a3c83e6080954038a282dc46aa9480b88b8a70a8c28ccd11999f97929045f838f82dc6680299385215b2cdb628d1069826751a8eaf7925456b93a1f016a269458c91fd1865f07ba5440eb787feac823fa5e3b73590f456d961492aa63effc9af49bfcc6796e0d2499e30a5f48b9e47be920e4c3f54ebed8d205d026763452ca9be78df6d5b6ee937c84f4616ddafff159ae442cdd911f473b8a192794b5d370ae30e9333051956cd1b8e18ba0fea662154df7c0b456e91f4a66b07ad647d7ffbcc6361cac1ebfbcfde3e7b69bb2c4205cb2a7ae100a5c2aa9ad37cf3f1eae4d853da523febc8a6698a0997ca4fd7ae9f584ab08fa23b54b8adc1569e3668639e2b5022b163e33386bbd594b81ed5b5b7bed9cf1641adeccdcf3e1a531aa6c3c3fddedf73d7584b2578c94f49b147b979ffd44870fe13724029be0a393be481621a2f5f092ae5e9c8f14b08191a0d265bd857b81d5dd95f56e6814eeeed9698be3194ed7cb5dc1cb9a5029a9dd62c195fb369030d8673fda36041952f79fec821a5ad023e5525cc7a0d805014cfc9fdd0d2a666af47a89c6fe01b3029df99898609afb06ec20607a7f427f1125599a5f5dbb40c0254ca4abc657e4e83db32be24e24c4c1682efba2d0abed7f0bc30f37c1cd8a38994154a82fd8b566c654080dadeb14b4a3d7c39a2dbf9061461640f18149a126a4cbb7c74508f5ea02aec41e9fc4bf036ea294ce06212bee139052175550efde64e449dfda8aff9a93c5a1849a8b13e36f61402bd8b5848d5fb0743bdbdd90c2987694bc779d5ebbede3ef1bea29976a443e138769d6c449067ece4fdfd404417e74ab8b55963f672fbc78a076ca2ae8869944283bb7b21a32effb6596a6991ab248825aa37b32536d67a018a77349c5345622b82aa61eddb0a0b25cedb7b73fea904943cad1fa2ad20926329eaa686df4d20a5eaeabdafc7b6b6c899dbc5e78ea19d87ff73379ae20f67423f987b3834246ba3989dbd1e614a5718aa72b79bdaae609c488011143285bddb0342cafc19c2e1c857d2103e5a01ea0b1e09d803628682238a7e57e9845398de23511b0c5668bde6cdaf374cb83790f8b5f1d42cab7bc133048d5aa22a2c08a50f6a341cd28055774236c46b59eb16512672ada4e0d864ceb9ef805b0a6db3a8fd19fb91492cc11ca549e83bb74e001ad7423ef0f3d3a5cc46dc6bdd87dbca03cb8988f34918b824a6bef9e25dbc2fbde1bddbbbc156b9b123994a8ef60464ab75753eeda740fa2519f3217c746053a1bea66360e275bb3e6e7c507160bff8a10691d0af1c5e6577a9f27aa8211ea37095f9f92debb423befc3fb15f718350daccba0c1267b3fda6b73c5e5b0826e3ac3f585b6d6f62365ea5b80f06ce90a3ff31af69b95b850ae88946f0f819d1e819c570100d76d22daa764b3bbb3fca3ff334a4a0f6e60b05d51621230e85194b11ddf10b494bb2baf494e3e8cbccb9da1e8f621c01dcd4625f4e78e5b08d8191aacb316a06e51c43d6677bce4905f006ea88bc3d4bc9137893d2276955f7050e81ec418dfc4b6a16f8b5d79e041603ab16aaa75ce3a81fc67709e302b9881cbb235bf3f80004e654f586952a5fb468c5a632046880a39dd74e841fbf68ed5ca91bc34f8b701f32a43ef2fd22fff35e5596f9515cb010c6a31fb2a81e3327edd83b3ba6a747a192f02756ff9c64484e1b1614a55dd666c354c8def0a6448f47e70cb3d951ce131d0c52d50d70e53f25073b444ab077934f7b98a88cfa94c624076f34c80dd4bf2c6279aeee5da27f65fa098a1c0d20b07e6a82e43462e4280339751de6ea4621a08521ea9028d1f73868ef1d2f192384d4f8b980971b2864e0d136921e1b0c18147337b917868c17ccad22a6c48bdb43114986b09eacdaa1929f5e1d49805f97d3698ad405a02b82be25e401b209f1eb1a3ff0a91c8f1ed29642dedd8f59ff5db51f50df5803d371a4f23e6e5f37907d4a0d1e178493c3f540d9430cfedb5f44682d89aeccb82b170ceb5d858599da2620ed7dee6426af134b68eaff779c0a1cf9c4cd0b7d5e32d75294fcd2bedfffb006764910ffbfe05073277b34a179c5d9c52504638c35456ea3b2e38ce5c429003f7c34fd0a105ff4e94ff320b5d8dd3b9dad28d706162385372cacceca627108a628c7a39a0df215a403af6224a045fb299b4ad9984048a9fd9159b75e4f654dba56ef5aa94ce751b5af0a500933c49623da225ec3162cd104ba725fde52b15597afa6a5810ad151ad204225930d7f39399d8239a0535925353fa84d399804793a2d71f597090b5fa9ba05961d414e1f83d86396eed54f96aacb9c66882909c2870e5381f98d9cf61286c4f55a47a749297cb4c8ac8a69ba8cea4b293ec884aaff9c50613e8c77df74af467d9d71d489dba0ec5dd7b6ad9aae0d793138f1d548b1dcf40117bdf1e639dd772c411e1fe05817644a1450e89d912e779c8274157773903b4735bd55716a7e2fdd2e1d3eadc0cbefb964bb4336ac1f7d2fdbe5590104e391da3eabf77400b6ec6b6b8bba47c574bebb9d1dca673a61e782e071b763d85b6a1dd14ebd3171b381c9ea6a1538053ef45be8cd14f69c74976e7583549a9a9f0369750a9cdbdbdb6100dadfd3365adda73fe6190f6f401b0c096633d941abdee25142f8ca95d2516c4bb879659b101400eaaceb7cbeabe9f5b9285f994ab5d4e7edc3a7477a8aa7578875af0c01dbf49a62269fe3d7feaec96d161cbe333d8ea04308eee6672fb471bde8fae676cec620b3b35464f77adac6cda4e1f0ea07e13abc0f797fc5c79313e0241ff3f0317f4c16132dde39c78dd943acadb0c797cc0016878016c54242e0e240100d54857a2c0867c197adcc2048d03d41ba11db53f1d2bb17da63a2188f070f5b6a1ae8e95fbfe4e6907d7d863062c1523213b2d4c223352fa72c63ea00cd240853e1593a1e3a39c6bd0655b911badfd502ea416ff427af127ef2550e6c8111f1fea807a8ab3acf30d4f6d391cc539e207ee6091caad4560e66f8bc329aad800d3c8dd48a2797d898f0e90ef8113e9a37520998b0eff84454c2ceef1db58c19a8dd6d471cd7831e01a3bc3c408cd9c6c122334b6dcf79318edd1943ef76a8394518a37a8bdec8d9e62e735a8e44b78eae25d190493585c0684838ee7a03203280675c7c9a32793d17d9ae1ef68936c27ff142d862ff5a3a74c47d1a850ff12ea3ad5a65424024fcb9850c96e3ef58f45a79a0e4c8c2970193541885dee3ec0f7bc5b14ecf20a35607ac714a57e9e1a018069d546dcaaf601874f880df7d8b9810dd3fdb4df901128d99ad80c9b6faddf3723d67a6b43b05a3665018f5d13503f074706465361436a4d799ad49f824cb098f13e74dae95992a5b991d5d2d6c9ed62892170adf77e3e05d747a2fe6d26340b841be4a6dd507b1220108106eb0a225ac48ecf59c8584ad1c8e44ace0bfc650a208e32749e78b88c1ccf3411466ce8bf06d9584288e25c4ab0edc926b3bf618f34a4494a0131b8974d1c24f7cd29226a7e582cc590aeb5d8f8dbd508f979fcac28accec14cd68c3a02d3be5a7eaaf9aeb96a2eb9739f5565008db5cd044a37afb82e3f5e27ea67fb89338ff15949e1e0335cbc85a8f8357d7e23dac70c1944dd9fe963a390acd736291981ffc32b3a7c1032553a06c4103fe137376d376686bbc05fb70a7e7f38afaaa82ebab8d0b8256a5310c17080a06cf0218a61fb0a653b8947d96d822503a4a38272db5518a49e2cc2b05569227d41225d3eda852a1eb4156bf312c865a1713d507a9fa0e191755b6c88b2eb97afb688d4815095e84f944e3d4ee5fe795aeb2e0029433a1a06ac2f68fa92f2180ae85bc33a38304c8bc008889d56f4bc2757323058d4a5d79635f0a9f419f1ce306145254fc3b7564181348be56900792f1c424a00d1a3614a110e892e80426cf54243b9105cc6e30445bb415fcc66c92a06efb059f3f5b3e835753fddf81dd938f034c1ee383615497cd67b4b027e616c1d43c1a1d95af95a57ce521aa740b206d59a7df8d9c9daf47bef6e14bc482e657495a19a2e115fa2055e99c3e8d65b3013d2e1a94ef04e533c26a5a9da71a2f1cace5a2983b45830a833a183376ff0e3004a27ee8a943e0c2cec81c37552d661f786e0fe9208ef5c722961abc106f1643bc4663fb1c2c9fb19ede11cee791423e9e469bbdaa4b7b5ffba2a11d3cd2405890601c9fd600cbb8a7a0debf4460c0bbc7af9d45ef73dd96f605649c1236505db677db1e6f5e293813d3d5bf7fede24e0145673aa88b951f75cc2ade31ff47c2fbd7982dff8518a8c5172015d3b5a7a51c1cc3297b6cbd387340ce65be156b44a9e3f021391eeb95c775323dd23b68985f9d6233513fb06f363909e734e16c30f9813a55c04c98f11032f1e7a4696bdbd98102776953159ab3c14bda2e39716fd2f22e1141fe28d8f1accc3768ead65dc14ba5276afc698b142e9119e02e85945b78a71a11c8d0ab42e0aba41223d77e90172c8aaf0a8dd75d07b659cefdd18778aa2ee8c3b2d757cd917d0e05822701446194b9fe895a04fbab0ce4d5758936a14dcc3953985fa30014469dc3e16d38acca2137f498a16a74078c0013cd3fbddaa1c8c1b4758a05039d5effead6770b81100aa1fdb9586342e3eee177bed011474632998db6b2a4f9581002a86c66b838551fa63069544e98d00e5733a67636d55d0703fa020257c02030e356f574dbf13861faeba7cd6de20522b574ce66a6d974b758aba33ad18e54a5065245f25185980750f289ba91248efde03cfd81d42eaa62b9cbead6dc58e61ad0261bf72302a14df7f238f91e40a98b566398022a3c42d2583f3945094160df1a1b8ca43265d40b69259be3d5d00430b7a3c664f893e67e3d2723fe83dfd3b69008c96890a35744255f295b318a5c23364d70f1b1379c2c54e6188327384c9914ed3661673d0e8593d5b4b123169966233548c03930da74191a9d81aeb494cfd32a115ae2a0bc4b9dc29ca8651396d313eaae3993c50929921715fce0c1f791ef40e7029f98b3b661a5602a7f58408125bc38576997145e99ee0b0c3629957918d96ad2b1114fd54482404c9951cf93cc723ee11cd3a52cbf08e72070d27e4e96aca224a974bb34f4655b610258a736c8d9f9b11e8ec7cc835b743278ae3a0dd8527a0e6a9499ae8320fb04945e450db9234c07f400cdebd90ffb9ec4d4cddc61d2894da22ef359b876fd08d7173b64fae1366451bdf7f286713bad63b1272d4654629aa7c4c6e75f84437e84e2190c4c303d904d3c7070d459f7fc7336613f98e6fa0c68c3cfa7bb41fad7ed3bda6f1aac28d96a643621eaec07867f4e20ad5d404bd9eb3467eb25b63cee6e20a76ef6582daca3efb7e6230cd8485bc0786d063f7da246d502943406fa78d550b601d8babc9319660c5abb0a170ab062aecac5445835cbd942f116130914dd2b24f3e3524c1163ed2fc2052a95685b94c2064de869d3c20b2230ce3704ad4bd3da7d7be42537c63a8409107c6fbdbaf1c7b98cfd1726fd71e1dbcf0170fcacc9d0a91a6ce9138a402a618311687caa06a4bc8fc144ccc69dbca8539519204e8850ac5cdf122e73530dce78a9067765c65f24d5a08af3e4a093283413409325214a2deecac642e909b43bf6aa348772f21fe99c36a0eaf5f8749d67a6eaa89cffdd8cddbee3117dea1b8145eaa8503f18841fb3237dc544498cad3206544db58db75ca853330182d54d031fb86bb259c0eea6184f1f24948215763cad7a431c6df7783aa5869ca25a19c4976d9adf07e0176302f147d344851863cf43daa2e61e40e2379bae3d4042847656298738a88d46952ddc8f6e7ee40d2093be454c367ef4c3b46ef1dd385b35cb239abaf22fc94f3b0875a311d055daf88efb73301f94dc08e6839f108677a8f906804844921a7fd1925561dca694e31dfd9b0387890e0cb3c5f22b0c006a0129941782998053d68e96026b733b00d4bd0c1219ee3b5dc6be9111f3ab629ab0d067fce6915517b5371d55ec5e663fcd2c4104ea0868fc4e921c482e1241132cd3e122d0f6fdf4fcad3ff8a68c6647e00d6eef21f09ad50797523275f3b768a32320fd88efaac8cbecf01e57cd9493464da73f2b7ba410b46d53313b3c7831c4499707490c231a39922f5add911ac4602f4e3d4f95cf6e325160586d5ea25b9800cfaef370aef3008406c8865610005b3a87dcc0b5d12b5b0c810198456834042f36a7043683c38b4d7195c4334c839674c8387408c988433302b02f6b2b7640ed05c506c8eb8bd8d354e37ffeedeb59c29d23b2161b579894777d46fa2ebba5d216f49c80bdfd58cd65123869c2373948be61aa0ff500ad00051f34b8d8c16413a3b86a0bd5aa9319058c9c795019afb79a8c4e23991f99c0087f21649e2e4d8d384a93f1892efaf26b5eb67dda1415f910c680273b0c433a555f9e427be47e68f2aae8b1328eb48e4296711c99ba720e5ccf27da0fa7d06ce044a6dda7d188fd4775e355239d203b38d4adc05f23d1f88ba2e6a51092c5c09ec107e062fc9dcb0136ca684ed15371be1e524fd24f74ca8240f0ea219a3a7119cec767492b77b6d7fd21adc8c69345ede3e4ef50f24d0f1d35d93e8302d084b3f4b78a2d1fb12d96b8ce0e50b899d72e5b25a872fee638c66a371806ece6259692eae0b947272b3654d78db7ba90d844c1fc8b216eea63dc2a1928cd56f12b645b68ebaee0976e2c58dd9f57fca02cff320a9c13d3e50a88e9e95b8620437fc0b9de42175d2c2afe4cb28ee887cd53a68ff926cbd3acd53b1a8b81fe9808d225068b8c169b192a8329457ef545c4a2b29b1c4cd3460bfe2ad553d19806586f0f00a7d8236290cce79220c65623503738b562b93be1fe64403a841787e9cb0fcf59da0245b00091efb01597bfe68cb3c56b39d763e3310f4030696a6c27987d4227ccc4e679f65f307e05f69c5f807b5551795ba9fd2ffcbcc7f40a7483b096322de169dc6754ab4a486df5c434c0be699cf66584d4e8e1475eea500ef3db1bc3e7ad86cf5f8a9ddc306fa68334145a12bf91dcbc3a6eba1ae0e55d44fa608c2164744293df300b10e7cb7711e2d3d1037a008459db5a5dd5d8dce3d90e00eb4bde28acb6dfb1b7b697109f823fad942dc56fa39a1349c1e87cc77e331c71d8827a3ad0b1a5fd4b7f2deed58156ea571870444d184a3bd055e23ed7affd275f30f7aa22ed3c7ae34258749151f4408b2675e3c9af1fe8e67ed21b8078c5c5962d82af6bb4f500f2f58e18d9d858cac09547356312a65399553781e5c1047c44133be27dee663f1e1c451501820df85e1d9b332d96960e51a252a0ea6e8e1ddc77c462cc1ad3345f910389eb0487e78d5018e03edef4af0858e0bbe7aa5e4d63c2a7f84d2485f9c63be794d476eef1fd28a41b16458648555c0fc50dd5728cd73b1c921fb422b58b35b22cd618cdacdb15734efef43e0bf8013b0cd0b04f6d1fe4d4f9fd0f7ca2ba0c57e6e48db67f7acc58c116cb8f1d2ee8d09b64efbfa42ee89b645c032d4d234f8a01a19ce4a4561217160f263ccd06097193fee5f4b7eafaf006ebf5fb14eed95aa28bbcf9e68145e4da37d0a805b55e7d0aaede6f6de32ecf448e28a79ff7fc90456229312c6576f4c50c0b918c7569ac5831243383f43ff4a82173ed05eeb1cc4e5f58c021b8e0fb02855e64e7ccb53d2162b810e8fa142cd09cdbaed827124ce848d673c58ccd2e5f3c680eea36db80c21415fcfb9351f403705e74dee113294f182aae83226b335a1c422b81538eaa6b0899b2c38759f0889b785401df54c4a732266d9a7a2909e59ceebd3b37255b4b576b80ea385ff01815f9ca5a8a7adc74b44f3683708302ace09a0864c7a05a17b161cf1eae7d34e69e1b500396cac0fb6250103f4e4313447479962faba79a9f8d1e9eed2da4191c1b8f4f4fe0cd64fb9454e0152ffbfa0ba3943aa938c27d6adbce6e36f7cf4ea5813b2570bb56910d76f4387eba8646d98e16463ae3a2268e286a0e4901a457e41d8b4d64dac1b9ca20b0f25b90c53433279049ed2b8ac671696246a91f343d4b722036e66bfd80502744737216a43480d860d44307186da01881d134d5d5ce5533d964ad1520172c5327aaca8c0d7b3daf8740f732b8de6237390a72a59ebabdf828cc5ab654a114d5ae93f36c48aba1cd8cae16a57b9f85c1d7df461fb5b35df34821e05acf6499351d30e18266c740e16c1b5b5a2ffe1af720b525ebcf6f405c3b4b6a3429744d1481cff1771509bcab2c6438c16d5bde45b7a8ad15d32fbe5c36a4d30a4aeda9da35246365ce4fa5ffc5d274cc7fcf2bb6c46b5469173ec7a94e6ff26b7922952c48f39b8df55e50fc3ae71b5d88093e860fb445a8a7dd76266d944b98a2b625f7c32811a2ce6a78bbf66dcbc98de35c0006c4f0e811bea8ad73149bcff0b6d9dded8d2d390533c272e672ea5d5e7675c442fc9999965d9c2f9b3dd6b833a3dcf7ffc2cc940ff9c28febbc4d338383504f9b97e02e7b5729cc995eccc8551ea804b333565fadeb82c3e29503f27e2833aa4361e3713162d4148b3921731cd17ac75a276113a90ec819fc94060e9b3534ba652482c0e9fd862ec0036a22a214e97dc1180fb9ac9b379b604e71e5ce03fccf884d4cb43692630ae6a4e646437b7be50d21a977a2b4af3e871d87a53cd23c25df60c878ff62186ccacf88a581e5f62577c83b4e4c934eb963d3a924d2264c9adde41c03d261b9b1632c5fe971be7757ef6d5b352eaa6e0acfc0759149503912b44b0f917c15f94d3fd469ae0746616af556b78efda313bc7ccdcc43cdfa59070afa00a50e582e654258e96e632e25d94471e5a77a04aa65734622f12e60b9c61d04d56e62568a6410e937c4326d1cd8e22570a118cd56bc6a5b766c2eed54db61faedab4a8fcdf07e940bc6c565eb9e32748d5519cf6fbf01c2d5796d24bd61953d9740b542813465a5370f44518c0f09dc76b1abdf366605e0713ebde28d8f58bbe9654a463542dea5c4e2a16a05b224b6e635716ee429fefdf0d044ddfa2971eccba9b9b3df0a860bac73d948a63d98943863eb0d62c621027b35466a64ece9db1329b98615d749696ef57ec554f002aa34dd54420fef1f04f4f0bdc9f9cd6a522c11af141c2bde948b9a75f4c257f7c6f1d6c2ef21aa7ecec857dadcde237601ed486b0b1d63a0685ebd1f72d79330344e7d3b56a8a2d3f202d51eb5b2a0ea6082d4ed514a9b730a88e3c0dfc62795fb24ed5dbc3819516eb29e6b938b42cc6872b3227e1338ace6229de93957ef66d68152078a87cba05be72d662df38ab6e9a014d43316b5f304b1d5010a351c14bfd358f106aa58f9bf71ac2d24fd0329ff575e0ad170af274d8d8f17b02014e23b5c2cbd82c0d90911be4d377dd919bd18d62518f8cfff6b2da1fc6bd7802184f6d74e99c2d72aea52c3316c93f8ffc1774d5ed63b074d0706168bedb17e5efa69e9737ba993fb71821ad8b988910944402b8723487c1547c94b146ed4b50841c937f504a2cb5767b4f0a978b4708a8a7ba524b0ce05da00c3673f103836b62f359876c1b8cdfdafb582439cc476a0e90f82d477751db527dbe7dc1ed2d7854940cbbbe8a2d7adb311f386d8b0384a18078eda09c8a3388913bf701d974577cc7a81e675eb806087b1c55978be076650a1677add5ed29b3575621eac7a1c3d60cec60a269983905643522a6b433b16ef24a9b3a9e48a6dd92747b7fd384a8e24903c811b4b9746e10851a4a6bf0275d31125bdde35900ccf99783d3919955d861be55ca3ea7ca530d81942ccfd265b43b360aef45dfd4de6cc35535830a35687df6e914bc6dbb0b085c2fe8b742b554bb091203b66d853e06d3d16ad2e2ce1d1b1413a709c76866bcb899731b6d69cb004d91dae68c3a1bb80418cafb205072751e1dfbb994a9e598284f32b9aeae184e80bd59543be68dc7bf025c62c80719d9488355d5468ac422d33b99bc6e5d99e22ef086104410c148fb4a151083dfa72b81d504efcc3cf5939972007df983c0a710473aecbf41224338e63d02548bac00a4c7f888a8ea566baa6a769f6f1eb7ba1e54aa2f3168e50c9e9e3a258506303bd619d1024a408f24a1ea27a67b5aec744a488ebf939787efa92ed68ac4f28fc5a5e65bda3332034024e560a6120024e1b1316385e475e073b5be3029360c9cea3964deca25c3c12b540d8522ba229824ca7c606363762bfcee2c881398b4d5a9f6f980d2f04a22efccaae9fa74dc358cc2d0d6ef378d60f1c0cd7ec8fb2a6dc7c19538072a0842fed6d90383ac2870136938773e25d91ebce43676d0faefb0f25d55c692d4a4d7a4b37274bfe0b3087f7b11ac6ec024ba2784bd45709afdda1e4521ba4df9c295d85dedd211b6f4e55ae6a53991de593bcdc410519713cb549f1b1a3108671cd297a202a48d17549b94bb3fa02b51ca21fff321f9984232cb2ae6c3a0f3611ff2645d8e6e6aad47e8cacb2a73424a1438bc0fe10591482c147d39339ba6df8b1731b777c8a6caa32aaa2c7c8792e1cecd597ec3220c18312695e5663ac8dc733d2a57940e5f13212467196607254c2e0341c7d0c7d789882e0a999135c1fa9f1f597dc17101057acf2c716732e1c7ef67f68d9c69edda4e67dcbea77f0d991918f6e960c5207262aa6222015ab67950c41aa2a791478b3ad9f0405bcd03f7d57143673fcd7f4ffdaf0653a1c3e157de8aa151a03165254e30220c5eeaffd41c97e5371b81abbee462b93664d838d57567d0cff5988dbde46f0125b250424e3f3e8a7743fc000f569e071d18aceb9cf07208570870890544ae035af1e4292cbd7aa4f8fa5126c5f9cb95332f5dbb0d8d2fa04ea63742a389d2168a9249232b135fbf915d551dd4fcda49a4bac3496fc47f67394109812396e549c806d7cb46330b76594a2b336a0e3d8cf1e239c2f2c7ccd1bcb31d6618cc105cea82a35a108c88b1dffcceae12aa1a29636c8190c4a92ab40a8c4adb854aa26c90c18f506ab03cc4da731cb837a31e3785e2df14721d5be8c4ee0bd1036d5df8eebc2e14c8d3027774e6b798c797130009e02ed6b4a2970a7aa7aec742374706ae3996ad2b917465dd2e05fd75e98493d1c0b3f3aef7457c27e2b1a7eb2f0619fc134467d8abb86c6c47b7bf6795718d6bd324400900532c1d6881ad99556e58334a3d5fe62af0caa1d612de601007675bf79f753a2774ef75b03fdc5be5f66f69370ff64f432f47c5ad04bf3f4ee212c1b9902580431754aaa6690f83379291150e73c11a90e11e8412d64e2508bc202f067dde6f00059563a4aa9218e54a0355d5904c8b666ae497097efcf59abe46b102b59e92b58a25dbbd21a761463fe657722918fc9aecbee53445e63bc2ef4681ade234683224b58a1cf755ee7e1dbe45cc3dcfcf2ba444431da1b2cbf5118ef9255e86d8ab01fa474312e2e69233f20739e7b15622ffd00789091d3e9f1412854ba0fce6d8b7f8f7e17aae5a6fb0d92cae3b74998b823428568fa73a57929a6ea043c8663237766efa481a3828ad535d7fe75343500629ab03556f1981b227088f2b8057d2e6af39f5859191303677365c9992f7599aa7bd7e2080e2685c17ee2a9031a81bf13ba6a0e1abd279e961a41b49a4d94c007c6d0a76fe76f09bd2b6991ea70f8a516c93be143e2e44a98c00e2021ee449ce37f2f097b61d68bbe9da7b178a9a24edfa8c7e3f1bc8af95b9d58d2096a819c6b94a0b7c851b57c8fb014ac2bf8f0500096b406cc0b5db8ebab82b3c16c4526b36a2d0e15c215a37b24643247bdd2b9c2b151288f31469c1e8e77cca4e2d6eb326381b78017c4ff6f8eb2a761da222f64575e8cebd61e34c0b977538e3ebcd9e4f6580da0969fefc675d22135bf07d9c73168fff3387f40099950204c1ee650548a81a705eca36e68fb812874a38268774e2b87b347bca54b9c40bdb1255cab14811a89b153722db6fad667dc614406b68a24a2309241a077a41fd3cb4590102a4f2552c38863398d05cc7920a1361ce67d6177f70467f8ebd9b2d8029d771578881ba20ca66350cff1545a61b725c8fd03ca495b9b4fc9586924202460949b7d88879e5bf23f8c990efd7637e3a59821e976bcd74c96e85fe6624d45e3251b920d0ab18c8c65002bb8046f954578f12321308a3a4146b11a8a08606c65df9b7c70b83046ca5391fe4868bd89fa23711c7c1b4921b14cb82a07c4a9433fa8e4d15ada2ae2f9700d6e7ac9c17d1c66969a273e7143c0d2bf88563c201638c63ac311832f1b23adaa2886faf44c3cbad9dec156c2ca4399456fe9f10da853d2a70e4a67421be34be3a5cf40a1f1156ec7e99c44873187a4319e156c099261820fe4df3f1ea6a5e778c65d014027a8bc6e95a8a7b9effb4629db97e900b32d452ccb34130693ae2040c7ad3f92c0e0c24bf44dfcac609b2cd90bb5ef6c7e38980ebd427c1ec6c2b92b6f15c78fb0b0e8e7516354fd21ae5be504d97019213138d88be914868f27e087439f9f8e193fd7974a0dfb8ab2be5b36e72482cfa3d6acfc265af817ce8fdc54112b5155a25710f7b7b22cffbba488bbdea3520c2f5699811cc447d5690465641003e63763e39a3814f92c302a70e2de1c3a281bfe38243f4305c2ba0ba93b0b0a52548b7d03005bbda041e4fa27b2825409c4a3e118a5f084c30a8522431d926bd9fd13d60f0594e9931ffc1fa5681eba0328828fc0e660a0caa7077f2525e40958845530a218ca997994fcaeca06365a1a908895619ae3285204a83c16d55425c44c1f52270c75821de1ddbabd541c5dcde9bcfb4a31a9fb6787beddfb66923e109400da2b90d2909c2208651c65cae4cf9fff35850c0710fa3c634842016497387fea1cef76991edb11c789c161dcf114f2c85bdbda81b042b97197783876916d876cd2ff61a218741f798591c39ad5b694c8ad6620d10e67c0ce1a0c86255c0eb02c77c9c2939785da3414bd19780c22b685c88217d5801fee2744cd52c080d600deeab3cd8115211108d68dadf3dde395cb4be44b2181fc9a6436b35c542c1e0de48e30dad06f516e103e88169c5150224cdf668d8b359db890017e230488a5c06b9964864058893494fec90f9a68168cb039fad7319bcb3f2229177b481fd867745d819f9053323eac3d0cfab7a4f9791aa59fd2d7628bf53ad4680ee713b0eb0edfe49212ca42179278eda8af245273ad3c0741fb2a35d0e599289b3ceb27a703cf70b2f2d1df1405c333a565ec754d4b7742246dfc45d418b03d7a62a45c6d1885ffe2cb97d847c28af61d967844be2be34a3e018c3d65467b0485bb1f28b5ace46fa0b09d5ca40a0941b6ded7947a343c62171d009a7beaf3c66cd0a9118155c344ddec9be5ffb44a6689e2b9afe10e5e0daeea9c3ec1e527c54b2454e94c9f2a7f4435bce370fbc6d7eeef5bd96189e688e18f5fab21c17f49b8d92492741a0332e10d0a811001825922589de899a767d7145f1ac5aeb59b352d2aefd989a22ad6e9439ad25ddc364b7f3c177110d788d0070c03a3a5e05cd275498408b8fe7123bc2165e3b54c3a9e83cef298b98f6820d82b529fdfbfd8099ed82f46b56bbc07801d8f0c11d2a0a0460dcdbb706ec28d8c5f92e396605cac29246bd43e5da26cca2461bf9ccc5bbb9d3dd22349f9f6e2f1384daa3c0d3e9e028153952391aacac57155d2647a4eb78d9bd5cb9bfaa4a7b5400c21824c2d4c5aff745edb98799806ec80021d8c2be9b6e286283fead10593f0e980d076414bae733abf7328ed92873fb750fcf8565c5eb1ea5de5d5f8c45331d7a87195d38f41222bf815ef48c7fc8fdeeb8de4f37afd686f257d3f14bbda7ebbbd2dc83bc3bf220ab25cab591a07ed43dd140025912aea03bd2fd284bdd5221684b06ad6a72f6e7417b83f8375079e5054ff1adc126ef40253151705648ab2e6c4de63a0c80b10ec73aaf9f796e8009b74f8802d098fc86607a62b68917258d7f12e68d9780ae517dd9a255f341eb754b71d9854c7f360f09c9dbde5bd83106d386149898beca2fdd925b1d80713a14850f3e00449d095720feb484d367cf8a3213e443157aad8dbf13187563cdcce9b6c85af8af483600f60aa0facf1c5dc08fdac5725169ca30f46350eb74e8aa06b4c9d4b2087ef8828df80c5025e545f49f40f04fe6a3319ec11928c5f3c4722da7fef68314676426598e61d9f9a1c0afc0bd7ceb7b3c8948f088053ebcba6b49b3ac8af5b3dff66cc87f36dc307298f860560624a90018649e27bb85615df06d563d35e6c4c048a2a47a25430e050510709e6a196e1925cf40d383ee289df0383abb925d3a27ef946d3186b0bdf639a1e001faa825d1b003008372cf8e2721d77bc2e7e51be998bd139e3f8bfda9be9852f1533b409215bcabde5de52ca24652a0a060af60973ce49929d265beebf176416102061e0141946c90fa14d4c466e7cf039c43cc92f9ee471ab6dba526d9af221a7b81497da6a984b5194d394df40cb78224b2ddc6a388735d92243aaf8b3f8dff0476bff7753c90715345ae6a7d051a36d04563759d0b5e7ce0e99dd54845aa11645798cc65a9b3e5eb1e2739173dad9a63e67aea35dafc82b3e1710fc5c3a6be78651464f7a12e9492ff2a497428c467ef4a3f00893098c3ee443c21298781884901f3d8a1fbd146204054845601e44c8cfcf21e0cf94890d899827d81ee6d59ebb9be991d6e040f35975b9683e9bb5ea0a5273d51a73d56a351845ddab75a9f42f8a6fd03939a19c108cab1b57b79cf37a5154ada935af182b08a613f241b3a9776d8eb5b6f5663b7ebabe936bcd4eadc9396867678727eb0bcb570b7accaa7b814aa4db841e3d26e61137e81e3dd65aadc787abdb16abb55aa3281a2448e8150bbd64b39eca63bdd04c8845635b90572cc8b60589c5621bd73cf2841e3df654145291b441d3a7b29a6b9681640b2bdf41a2484fbbd106a2353751524899d854355ced11c986e9b905a9e23017451d20549bba20d1b4f72427e86336007d00320784e262312e4639a0d45e718459f75945612a202a93a7fa84e4823c5d2ec871387dc685fa843cb9cc7dbe94c75656f0484d8ff9456114866bc779064209ee6b0fd703bbbfa54438f4bd28f481b8e37a36e57c7064b89e39633e3832dbc3e0c86c325b0883335373736b38afd9d3831c8885a6a40a7d2ec6c5b81d1d809ce322fd007c2ef9e5221577cec9b0957ca327b7bd548c8d1a2eae418f5e0abfc8419cf27dd1d7653989a6f3939cd06edaf32f8c74639b8a5b7e335aecb922075ac6da73362b8d8114464d249ae69ee484bed8ebeecb1632d0723b8b385c2f8c9d1c685335e831ab54af57ce84d5b9d9bad97965645e2a95cc2cd6859839575dbd5cfde15466e5ce059b89f303e707ce0f9c9a8eca90abb5b7371f462f67f825bf7cba8cbe137a9c31a7301741d31eb9821e678c73970bc80bf85cee5b9b5559b5cdcd0bbafbedb7e99a41aa4b6eb9e4a2138149798447ab64f2caeb6e48e5751745cc40f7b38aa2ee8ddf1b55ec35655f8a092eb4421f0e85fec3f20445fc5c5078a189a5df8526f6ba6e088363736f50a0e0c20ac7c63e0c8e8dc5b1b1210c8eebb2286ac662ac4d9f44069dc371caecf963d327ed680f2be8ac550c0509c6801c1bb9a13098aba8897ee966956c71598c55675285521869a40bb265fbda536badd4965ff9c58d5033c84df447e12cbd0dc70be3c58b1850170201c5c209c4053d56a751d4a84651211535c9e42934052972419e422f1765cbf6f43d45caabdca2a6979f720be414e429cb48917e0ead326bd3ac922a9366d6b8986f6c268d4baad0af3d37d3c6c6ab31584cdf92fe92f8626640de366e40967e5ae1803a2ff51a0af9fb4784b7c7126c0fa910b4694ec904f969aa54e0dd34f2c88d5ea552a91508d180cc841a7a360f6f91a3478f8d38bf4ee28fa362668c07e14363b8c9df0b3bfda20d5956527c6ec31b232a78a9221cd0cd04b0e98fa441bfd080cd3a5a37eb66ddcc010ec023372368d063b7dab64aeca21016811c81cf25d4e98868a7e3a798ac5be9d5a6399baea889bec8873c09d539419a5ed286a246617ed1298b8dc4740c1765b8486dc7f2530036fdce47f7c34f21a093e81ebdfc5c8230fa18aecfa0fd6514b63f10dd7e346954d629a3afe2047abc419d8c9fc6d08ed2a6b1a08eea50588a3ce891c2708d1a9fcbf6353e17fb80cf65fb077c2e567e2334bdd50764f09b619adf8819b4fdf09b117e439874b8387fce300420802390476ef43825f0fec54680e8299b4915fa7802263f8dec208c4621ca4819f4eb5eada7386343749bfab848bfc54a8ff9456136328912da25e0537309641296f61f3de94326906977e63f5a60899afc49334a342113a040cd47269bc56a3e14c814f85ce6941886f473f4f3ce4d5aeb30d77171ce189dae99cbc446c8a4cd17099c336aa27df30e314aa9fb5420063e53c26b3c182183f6d86b722c6a298c02b1515c0e9723dbf443a28b2e42e21dd982b63fce1897b3e9b798a19763712c960d3916b64096a49115242a24a4b1306f418261d3c7178049951d3dbb4d7150d3fcdaf5018a39f83223334d1abf245566b76d8aa2f42d699bb22999651c35428dc20c444df443b40f5228a96966d31f1983c603c82362d0b5d08aab1b57374e044209cd855414456d629e65359b7a6fbbcb2ad92dfcd8f4b77def8bf950c4cf8500d4c6e90d0108b08518eb72b95c2e97eb2555e496392abfa8c96327a31f49aa4d698de6d76c168bc16030169695150a8b65d8a6f9b56179b6a987149663a0c71973d4e8e96314df0cd3b62185815487c6a889fe4818f44861a598130f82fe0a66259f3d96b6205b267ddc92e567dad1f759b67f7d9c81dc2209dd02067aa4300aab9c5fd0c459be19a6bd19e0f3709cb1048433d684b6a1cf607cd763a0d824211420c365089190d18c174d8468010ce82e8d0614c16d0eb0b5c6032010011b540213a0004c05dc0217b88181295f8c7edb41188547984088902a0365a00c647310a573db6648356d4855ab8556f66e5cddb6cb5531167354c8d30fa9fc3466a0d90835e221d5484f3f24235b6648858224321a4d0a03e7cb4df4735006f2d3e8b1aca2b01d3f8df945bfd436e3f979f909e7f8a9c274623a310a9bc9f84995577926b3b0d7b966ea2ba7e6ccd86db3ae19d78ccb472816f279061996b026d0ec636bf214d264df27907922512b52cbf4c8cd548d9a6023078f18176d784438532efac43e277efb3053a562d104d1e38a5fceefe5eecbbd79e05c4d550b21e87165db5da3850e60ecc7c026f8e5ee7ab8c8dfcf17ed9c2b60a0835c82b6cbddedaee6ca4a0cfb8205860c6bbb1814357afb303770c896fcf6853c212107204f47acc896efad8aa2ec23214fa1b77fc4ca6a243558a2262a8ea4cd755efebeeffbbeff3c94341c77b0d45a7d03577dee5390e3feefb7edaf08c70eda9db92fc4d1cded94b5eb42f36683dbcea0942ad335022535cd70e451dd41774d01ccdfa6cd04bd1f91c04fddc5c3a14d4819b04461d55a65f52953a94f1a169d35620d856e6ea7d7af61e30445acb826a3d3fa615369b57ee8cb9ef735a7fe84c56aadaa3aaeacd4afb5aae64cadf579f43822a6e2c8a18520bbfe0e1a2f7eeabe7e0d1b30dde5706015c54f734f2dac706094521c180e0c2756aa5904d3bbeae993773097d0a383250a0378cc6dda255bbea6b19366d658ebd6ad6bd73447070888540a02ebee8fee566a03e64677b79b1b47e59f41f0eb7b0c0be9d027c996a945a10f4fd9cc16ebd06456ad1a1b30cc6caf9b323d3a550e1d4c804166d337c27a575c826cb376dbbe40b34b90b95beb32d98e8ba9eb190f58a2a8542a954aa5aa8e927abe4659993b3b2b3b9bbed3e6ceca9ca711655b9121bad0359e9f991a1b999c95cb27483563abdbea7766ab733d543a72eca85eabb9767cd8f8fc0405b171b96a357312a9898e2b75658666d6bc726066326adce8369dcacdd7d6ddd0f8692c6d5dfdd143a523c70e2378d8ea28e244f139a7d7286a6565afccda5603d2242d6b6e85013548a4bf9f0ba96416c225e04cc97d496f49a41791483fbe0ad28357aa905e05585d2495fcecb1498f02850a14289e44228d2620898072a34001ce17312181f34b486f62f21e8944fa923701e5c6380695222492c8c7f0292277268128de04247d09288282cbf762d0e44bf0eba028f0edc3ccd4896cf1e1ede3a0a87ffb189794e42f24d2a390d2c99f944a3e9c94944a253fdf049b987c8a1427a51429dec4a464f231fca464527a1250ee142529c0f924252fbf52c9a700e797a4f812d8a54891e24b4aa0dc29c052a9446262f2a592090909c97fe0dc252520c99b80727fa0fb9ea992ef4ba0f724e0485841b94920f7226048a847ba7538ce166cfb2250dca39ccd90334c3c13134f31059949d273cac8cc48999518352c8cb04a2aad9d3232aa998ac9b99391f151335341b5d63ae3a2cc5cc9e42e77f7888cbdcf39bf7f2e197bb7aeb8687d747d7f8bc49d9e0bb0c4227cbf0bc792c7332c795c73fd5c464eb2a0af0758f6f8b23930bfe42f38beec928fe172c74dd50be7ac8aeeee3c357ecd221695f7538439bcbfd910bf178a8c2e707847c0ba83654e910cf4284a7ab5a6545689a854571d38f41762fe05d894555a0e1911b5ca64321c19ce8e17bce0051f22bc67d7f9a3afc9a5fd687de7953dd76776f0b8767add9cd6eb4e401471e4853fce9f9baa7a99fffa3e03825fdf08d932650f0a0880f796a3fee70e67fd077bb8a9d6fccc181e562d68d27a72764db10d317737a74d905d7fbe528027b31b59ef085a8fd1c80b2c1c1abef7ce79617068b48db99c255dd9531c7fc5142f36821eebaed945931f09c73bb2221c4b2ac2f17d0847f144dca64df28651a728a97f4dc2f18e84a32e5194cd18a4581fc5ec710a90e44bc0d27fa0f7730c2848f5af162995706adce76f46b7a7ee3e86e30e741a17ebdbdcafb78a5c1b6cf2bd7c4578f681661536ff96412e87296658025ea9723f055877b06c29b6edefbd1fc35380a309b637aa3f23efd69e2980fb1e28aa3517efad6f9802b81e28f7a57274c1eae3e21d8d3e8677737b0fbcdf81a31cc21d387d4551e0d75ddf6948be9628eabb6e82739f70db876dab98a0dd2bea7eba412e4fd077f8bd80724f9227c99fc3d27c92097ef6426b47fce58d26d8f94340b9edfc10ebae29001bb2b1df7dce71a809c71e7bd2900cfacbc5ec851fe07648c8cfcf25e44532c4b7fcbef7ed347eea3ad14b14e04837291c7d895d5f041cf50e0147a0065333e4ce1f023fd0249b5cd3f63a0fe470d7bdcbfd0ebcdb03e5beff313c081f9a8045882270e1b8853776e2028043adb6b333f284963200ae982b8649624862566e62748944a202921892148cdc8c3c4172517a5844e282911b4d3720202020a0fad664fa6455ebd3e74613b3b909927ad55be39a39d8ab73067b96da3fb13f6a6c5c41eab66da82f36657367fb0992266b847112ab89412b2f68cb054b8ef11377c40e1d46f0e86103a6c64d0c18325e6870391c9793eb6f5b13403939393a5245eeea62b1582c56176a2c16ab852333c3caf8e32156e87cdfea46450f60a1a6f92cd492f6c8f2b990b0407f437c33ee10b3468c0a4c2ab897fb668052653e2855485650bf1924ef9b3192e2fc9114e58f486cff19da432df23e0868dd79ce53da50fd665ca972e5f4ae17fac0dcc33621c2db1f987ba8f36d281f093b6d6abe26c2717edc3d61dc56371d8e5ba9304d78bdf01327cb7e92cd192dc5337ba60f10cb59abf9e329ecd92d077bd6d660cfd61b3872d429dbf56fe8eb5f55ddf9685f4df7e8af9f650bab562d9a3f8efa823c25e3a113929bead75d4fde456a65868505a356f1850c68d78f41c34f92092fa876fd69e3aad307abf58386d2999a2a6f6584cc67c3d8b881234775fdd4fbb9c882b87e5c3fae1f5790b74252c0b1c1b161830c2660ab94e148024e45dedf0e6d6caf9faa8a8de717f25965e542f3c645fba2ede0741d713f9724688904ed5f0ff97862e9b386ee8f24a7f5a55b692b47392e44ff82a2cdcda4758144bd507900574d01d8692355ec97c4408a2f90220ba46869204df66d8e1f6c6b73b0ad5db1c2c3b154a2e1a875b5339cb53a686bb3e52e14b2934387c85b3b4e1b548ab7f8a5a3481e45024a3f7a11d008176d8ab0879bec8784e34a29946e1a85e36c8923e18b3d4a1e14e15c6d4b124a377da19b70c873431e2edacf01eac02759d0343d2eea25f410f4acd19adbd56ab55aad56d77dd82d34e15aeec3de3b5f36143585b8397418c1e388144db5a347cc2ae36dc391f1666f64bcd58cb70c9ea05ccf7ef7391c651db68364c4c893de7e0f12fb47949ee42dccb27810f749c0171ec4fd1170c583b84f025d7810f7678ca3486f57333e508024fbc35afb76e5950383e9c85cab9c9b6d7fc6766c7697bd41e3a5860d3fe16d4f74c54fdf673b7ba6cfacd5fc098a9ff2db175d7c1973b0cb9970360cab1bc22c01767fe3eee56096005b026c093117790a17dcec00ec8f1d7c80a6a6f99a9ae4cb0f020fb8d434ff52937c17d1eab5d62a7d088d24d8f4e79e0276ba7d89a226cbb2ac8f6d7e2eb654da36d14f25ea02469057ad66ba668ed7cd785da5325e6878ddc67d4f5fd6649bec1205a9538b4239c7515967ee7c995592b5a0172b1fad77d1daf4599aa8e1cda347e83082470f6a03c6515508c94413db0b0dafc309b2e1ccad091b9c2076db2c4e109c2038393e9909188fdcc8c057c07dade148822daffc0e84a1a6ed0c7a9430f6f6f3e5bfdcab75a9f42f8a3062c8a0affaa276af224ddbd70a76e073a88ed32c7bdb6ef8e2e2465134642331cd85fea384a5aa1946ae1a1aada6c655535373e372b95c1308257050948d4961aa8d3969a5384efe6694ed05cb14ad3f0e47e11f4fe68c0e6f47e641b3e74479aa2933a78b6e9a5266639ee6cb8061b3e7c7a0f128f36fcc17575eb0ccad5549dabd0b32ae96535a2b75b55a34d3a69391286348ba571b1b9b4de205ed3134e891c2624ef202ed1ff2a4b77b1496408fb1acc044ea73ce2ee8534c24515f51830f6d25f902894c4bf7112fe8dc611a1b83bde6ebf5a2a1a179d9174ecc2d0d8da521797696b240d8fad899f5f1d9829dd9999d3dc69fcbf67ddff77ddff77df68b51d49cdffc6613f4f8f17cb5afe7fb5a3c9bfee7fa5c9feb6b7dad2fab6c685a5fabd552a954b7d56a612188d3565471aadba9482414d14d7f37d746db6633b6c55c2e17b7c5624ed0e38cfdf8b8aa8bbb2e919e907cb32358d0a2acc34f26ad632337da35890d5e234de80c7391924eee989dd033d0198b887c2edd732452033e30f7b047a0b77ed1a7d01ffaeff1dbef677eeff3fbcd1a24cd28ed6ddc31739182333653e4017c2f974e5044175174ab4d65541254b1f3c69e27f86d4cb10a1a1a9a555dd55575ae3eeefc310db6a1b011bb367dbcd9add2cd372ee43f41d116f7fc66b458f105df1eaf286ac6285e711d5e552aa33e80417b5ecc8bbd288e1c412e8a1e63438ef540081bead881023de21891c638aa07356119d962adca8b5194e779b1910dbf700dd3486678865f2ffcb27846515467f6033dce174551989b2885e197dd429fd933334431dbf743199c2e00e70ba4cafd8d15dbf7b5cdbd5a6b9b949a6c09f7fd141f8af2bf9f723f2588454ab6ccbf8f45be9789223b25c9d5a6c85b09c6397bdf8cfb2c8ea047dcda30ddca3904621a173f5d73ffde1fb5117208b451c3c5fb62121ad3fc90315c2355ee639fd269885b52e5fe6c8154b956b547dcd2e1e2a5e10d308754b95f411c9fcbf44210cc987b4e9554b93f43650761f43a4aa5d14da975373ac5274ce9b9ff9d41fb8f29b57d3f876cf1fefe0d1cd47657aaa0dc90030348753e8029608945413482b40c39cba12123879da51ee83df70e3ff95740a264c0c8162076fd1eb2092d73ceb0ebcf90a89b9a2a189224b730bf22ecc6dd6edb3697e162b53db9cb81f690c60c5f3e3250148a34d5af234a1d514472d0a39c55d2ae2e735a28418f72067303470e23786ca918d516ce907b65e29b06c11692aef5e9f4806b6858c34b43e05e3aa50dd10f819cf70e81ab0de100cfd978b794d20a739460c05ba5a0fcc06fbd69784265334ea460b6250f1ef678378c0e3cb5927f0b463326d4d0843ba5540d4c54353cc1aa01c8a606236cd2467370391f35734ebf570d2a16a5b4fea821c65abbd17c388ebb18ebec745de7e5ec827d19639cbfefc7cdf78542212756be25134eb49c68818b32f40226d2c09386a034fcd0cdbe4cb9bb76ffff79adb4a32bcc91166e76f1daa841e3055aa79cc403ed3490831ea5ceccf64983edef4fa3860d1ac8161b2e4a9dd729e9e898f840878b82b7799cc771dde675c1dbeee083bdbb6dde7d1c1d28eb115bcf814b9178a07127311e7dcbc7937b7b6df56c774b9286afc034cb0a907e0103cf41a3487145bb08b3ed4fec1f03e8e67ea5ebfe5be93eafe0957b635b29c5db1db16d585fb8e8bf72023df3dcd200d24c5124eaba89ae185db8987600b0476ef448fa4680642d5b58f0408fa269676596e1f502e203888f6aad8b5e06d6c637e34e622c6fecdce6d6da5b2403cda908e26e6c365a0352fa63a32d9a8f8f9cdcfcd1993e40e440d3786adde5bcee72dde5683af4242734104a686ed268341f9e1e1f9f5936eb1ea5943ab9abaa767dfaaa2432e8ef43e15867767dd28eff64ecd5cfa59b349e31c86c3a3a3a32fc9743390c76e3d91f58bb52aad6d6ec6a4b4e538d57aad8dff6f639145532d3c6c50a73a9b079430a839e3fa6aabeadb6ce619b7313c955d0dcbd55a56af1053d4e17a29d2a9213ba854c7d6f5114e9abeb255b2efebe1751765a2d69db36d2e8de6ddb7e4e8c84bf462436c6b01890c7788c4fdee6dc99afd70b0663b628aae43e5b3eba813c51cc922db3556b3d19cd9f2eff5ca68b929b64932967e87b11e53975f6394799ce1992eb9c22d9ceb9cd89227373e2bb8dd8418f4e2b9dd43e6ff8665c5b24b08ec0baaa32141908254a37481059abaaa61882445f3f7fe8ab73e6517d8dc4d033fa361f3e7cfc902a7207056d78dbdec55a72b156958a95abcc4ad62dac2b17ebcf946844a1d0470655a6a191d1d0d0d88852dd489e30473d36c975d651e894ca49376aa70422077abafbb4d95a6cede528a579dfb94c4663b2568f8e0305c5667ea23bd67fead3d4e4364c75e6e5368feee8ecfa74aa5674a68a2e13c8cdc42e9b01b991cd9d95057203e406c80d90aaba57eb52e95f54e55d698bb6269d8314b7ed45177ebad869d4244f2ddf6fbf396df91ce489fe408a351492705555408a3f90a71b52ac5f31f594229c56bb71db089cb1ed2f84912af5318bef45ccd394bd45a640e4ea22db4d256fdb1680cc6d5b06e59e33ac32d54755f155951b34f72adc755d288733355552a5fef59c2655e6571545398de6b48d6756d5bd95b55515454d21b61f52275f2c7ac6b0960ef581ddea63ceb889467f1585e4890844113f970fc8ca73687271687259ab39e32e069d15deb60d8401b202b202c2a2831eeb8fe4c9d320c5ea3417ab6cf16e477a1a3c023d0db6d6ee7b994e6b285b91b62b76faec8daa3aaab232d6eeae569f6d275055c9d49991d69aeaa2d547a5a937f575691cdd6276db3c5555392aa47e9df1d1fa993e284822a34ae3a8d1d7af3637358404661595a12b4c5d33ea4375266d519953daae5febb3d4971164d7af51df6935efa90da8db3a8dfe68d1d4d8542a934d9d099bb129dbf6c70728a8a66ee080b9d9f57504a1ae979fba1c3fc1ba0b24c6b33934b1319e2706568cdd360b242646a60514b455f9c9be48489529957e65e3ed7b719c6dce1bf715f131bcdeaa4b5fdaa068639b2d18da78cb16fc36e6b205f3c6bbaafc84777ddc650b7adb8408bcb7e7f6168e24a83112a4b0c422910c3415453925b79a32f4a5e426c7b16a6a282e384a374aefdde6153da53f28a594fb5e747e94d699daf479f4382226c70da04d233f4cc69e9da1cc590cc86cce3981cc80cc80d0be1552a42fba28d150cb3db1dc0f5c71e24f25c5f77b29e20b592e8bbe17b9ad75c1cdaf7f6b0ce76abdb576b57ab5e25a73ad5fada1faf6af54b12f5d9457aa98d8977688ce44ee5a378edb7edb66d00472717a8e42868932c4684c94e10ab276afd6a5d28ba2cf0a8bc45d370a0909bdb56197523acf6c4746f3dc3382a25cc7bfb779a280e2e762a7e71e63428cebcc397b3121c6b97b3926c43021860932adc972717357f6207b72f76a5d2afd8b1cf7d28563d92374d0a3ebdf9ef6c8d37c428a6c90a759cbbf59efb791cfcf278ca0a86d4a91fb0d686f348773c67d2f4570d7862b5c38672e725ed7dd172e6e2b2e8ac0b0b3aed5b2f787edbaae9b05e961446a87f6f23abf409edfee05d6425530c8f6f62e83bc6878f4b0e2e7e2398d2e84c1e979d97e743ddddfaeeb60707a7a36c6db3b15df0e6d3cd2d95b6dfb91bb82b86b34729d1a0deae1b31d6f1d61848cc968b3767d441be233efef7bab36ba4b7a8d1ef6f6d367d660a35c88ed7d66b37768fe12fdf63cb6d06f22f00405145d32c785848061e7e20079dcbd1c0e100e101352335b2d753b2d17e2de41d1c6a47cb7eef19604cd21417fdc6359bd9f317bbbdcb4992e509e78f438c24ffe33531e940303c68b172e5ca0a09c9c6c2f74af794fcbc56ddbb66dfbd1fd66e37b9923d949324d916d49deb8af88db712a807063c7fd71078c8b37a0f0dc73365cdcf0df1c383012dcdf273d418fdc731d889fc3f77a9e87ffc686b1e1e2f631fcc6083ec0ed610f409b07ddf76fea04280348d32665db7b1b3037b8cec68d0e687741d05e38fac6e195281712c76f388a80c51b46177bfb5113b8920c476bfc64c2895da8298b0b4f5ca4f153176e72af688b461b2183dc13afd51c88aa5ae880ae66fc347aabe63dfee38533a407f92946e5fd56eae1d9ddc6711e78b7cd6b5e732d06ad5d3c41194fc2a0eb56731ffaf23c082260b971215cc8763f06bd3d48e0dc242f343fd38e56b1e2edc3cce80d8214ed8f7e3c5e01faf02ac093c7a0c9cf208cdefefca1b5a8645fd4b927a9d697df0c2943a26066b1fbe2449a3e444b22d1b858429a2524d224bddc256f6f499433132ec484e342b8977b2b01358c8e1e72669f34f2a470867784934ae6933ea2dcf7433293e9dbf9763edac7635292c207abf583a685acd5a2a86fe7db69edfb21d96c27e62758ea27c64f63484726b4f2d3188aedfb058554a119bbd19a22c40afd84824429514c09b6856aa19e900f49e8c64fae90cd6bdf0fbd7cb05a3f6846662dbe9d8f36fb765ab460036b369b6dbce5184be83c73f7b4d99e05735eb9785d665ffd313c868c8d1f835995635cbcbef18f39b52ffefc313cabfc84537eca32abea4e6974aba18e27eeb34654d09f8ca3f08d9b3e156e51d3fd5cb1f6b92ff69829563d56b92803e215886740cc02b10f17ef671645793bbeb359fb7e9659f9c99bb1c2be53a26248d37def152051d8c7070bdb66a7724c5621c4c6b3cdd6e873d95a9be4072fb4560bf4d528eabb5fadb6ef67e383d1fb6c8276b0e09a8b17f7b8781fe6a74eb6c88d9242ecec6b79f6b53dfb3e46a1793f3f283534d95050bc0fd1786a197bf8870c84125a8b541415a28954bb7af2059bfdb001c86eb47aa2969f466f67dfcdd2da8da223ecbb595aaf8cfb31fc24997883cfbe5fc34f726f96564b2bf7b9e8d064a36d3c3cb41f3e971fde90b3f12cc1b304cf123d2c7cf48877f6fdd1db89e15aa647cce3b3af85f1eceb01514ce3d9b9a026e540df1530d014c4361ef3ceca9610cff67dacba57975edcb06adff780ae07b4ef7bb5eb1e8f6cd17fdfdbf1682c445ef6eb7d2f609e0e804ceb0fd9a6e48d4587a94fe93dddde88637f19082534fe181415fa71d3fdeb75a1891702c2a19fef23a27ed8c335fc348668fbf2d47288953f077c2ffaecc29fcb270a4d445e4d246addbb733b10051443a1ef63388af4f743b41f1e7e1a43ac17111a227fdfc6c87d18921ff9fb219efb215688b6ef7d92fc23f951e4fc381c25f2f775ecb86f440f474d21ee9340e9a6fc9e08f8c24df7433f7e1a2d2c04e4276edf0f0589607e1a452a1d3f8d9946e6a711e7ccfc347ead3164c3b3f3d9f8f8690cc980fc347e351be4a751d48af1d388552a3f8d5e8db6efdf31bbf6fdfbf9be8dd57edc10dbf7b7941b68fbfe26e3069f7d7f63ddcfb4cc936bb927fb709f03bc1f855ecd4f9b8c6a35c3f2d3e8434222bc1f85262351cb4fb6a7e6f303c400d9f77ddff7bade7f3ba19b904dc8150a127a5defbffb188673b08e9f627e92f937048de8be48e527fdf7452b3fcd8858f7b5e83bd16391270a6196588542a18977ff0b4dbc17f7432137d87839845962e561ec2db15ab144362180c112319588ba444cf6d9dce399fd1e2e7277469284fee6fc76a06f1c34dd320e1ac526d18196cfb5280ac6879ab8cf318a9a60904cc804889efb9c9361b225b6b926a4c8e59ccd89420e065c0d36c7f99866d8dc574ec5c94815ee497ce8ed5d2a4eb5b94ce33df75e73693c469e3214a4c89d721017398ad2cf899ec3b2e53717fa50396eb8c83d8c5b108754e13ed3e6cf9d40a20c051a8a2ae5209ccde6e2a0b72d71e8819a44e686e3f7367c71f165776fc19165ffbe27902dde0a767efc1ec8f50000fb86dcc81df42867996b816007cb9e46f07091a3c1ed19f6705b71ce7af42449e8b1cecf659e7d797ea1cf453eae9524073ad3324faedde8f0d47a7c7c443834c13db8f6f1641d7c8345b8c79f6914754450a66d8edb36f713c86ba97ef8a869d9dcb85c41747262e3e4e154b21d3fcd9e1e8ee6e6c5869a0e6b46b3b9e7dae0dadc7b4ae5322107d80f8526a1afdbee598371329c8a5b71331ccb4fd5251432a0f2f8c862b31daac313c4f5ca6980dfcc7eb468b821a60cabbb73fb5c443e19b4b9140e619688d99c481b54b5397821cc1273ceb9c4124bc84815d9e2312f0279721548917b2ec522886b719e63031dd8213d05872736f73a744e4a28a549e97bff2ea828b64edd08ae06e4013c3505c03df73864cbf4c251a6a1c43d9e370edae338706ec9d1b8e8dc8fd43cc02742c1e66670cfe2087a64c9325ce4b81793d01ccd0f17b91aa9c2591b722da9c2bd733fdcc43dc72d4173d9674b008440b0c4224c92849eb5d68f41eb8d830ed9bf29f8b225082ae2f799d0a3d6b22c5bec538ee3388ee3388ee3388ee3b8ad5a9bcac272fb896fbef9a6e08286b1e1e2f6ffdb977aa06bc81602ec4db674ffedc014c53253a1edb1f7bde0fc85445a6bfd3cdcb43dcbf6dbf6a2d0880cd6b071f2841ef3de7ebb5ff5df7f8aaa7f5f5cf193cabebf7d2ef7ca2acadbd5f77a1d4c68c3c54dc62c6d4b0098602281fd86218bbea0e7db3d561b783e96d8e78c544b2ea4d289961b77d2946a3bbf2268bedf4be77d2ff87bc9dfcbcf9ef942c3c5199a7c604f5b2d9ee970b1befb0e1773b8587f0e39fce45f1fe6467d6cbad1f64d4ad0f667b51bb7815553940c7ffb0d41b769075a873ab4af549932ed5f676806e33963a0c7bc93d063a6d3ce6c39a711f478b75301cb1c5e17498ea0c7baabad2673d35d438bc44662630b82a082a08ebe4dec23b1ad49098dc4ceb752a7db10bf373cb7690a7ab4ab6d575245bec6241c9d84962113348e2e9182e0c480840628da503149129a6500a97da7d33943e74cf5b9922a77dc7c8c9b8f8d2555eee752496aa0bbc712d3cd2bada1a9922a5288d156197da5c38f2976d8f74565d0f9edc65f8f1e5350cc5cbc286828765c4ca9cd03f80964cb8a1f3fcd10aedf8b97371c7a1da3a851185384795f8741cf644bfdfb52b668238c615fc71406f200ba660ae04e1632b2a51a2106fb7a9ee7799ee7799e57e7a9fb5e749e5f11a3ec2199da8dc38fbf8f04069a3efed08b421abaf7be0cf4a86d48623031090db4fc61df4f09a128aba2a88d058bc50d482449e851eecc408f28662839a0c9fc9027fd0834996110b61fbd7d4c0245528470500a814964a0290b4cb305457e03eda3ec943b90c0941635dd2d4c5151d37d0ba6ac44c0149616f4f8032da546dba84b4df7537e64cb7cfb4d60fb90b7df04ec8fc21030c5879aee8ada5707ed3fa46afbfe9072f1ea2d52d3234a6cdf4789a1cc644b18640bfefb2834d7be1fd33efba200ed27b47f4a2d4588fb294014a56dee6adfc760c91a348b1545392a250ad204807d5f86230b5589c509f41db68c421cf6fd149844a5d4a8e9fe8da166fbce941a6ddf2759e951db881e4a8ea3e88c90e4494b94a6a0b48452134a4f28f56182a689577c2f4eeb57044ab63fe48dd32391c8470203fd3d7d5198034507250b2839303f7d285bd8f3a6f8a4f4fc26b9a85dbcf76f4aad04444daa5c30c527e58786293d9a0cda0c2932490c4a3249121a041553af34a5864992d0638a8afae03a5602844cd79d3daea8f9d8f7537a9ad817b358b19871d4e8efa7b0419e506252acc99601ecfb2c621cf5438a9aeedf1f54fbfec84266dfc723fdb800dfcb8b3c83c87eca94255b03e42de74c0b30e78b398398f334276a4e96390d3067cb9cd8a31f090cb4e8bfd72bde8bef25883c4fd95199b2e46a806c5bf276005abdf006f6112885f8214551292a37dd14d5be3fa4f6ad4f22a371b878ff86373ffa2932900758519b29aa149994956c99630a0df67d2c025db828ba78ef7f3f574a682b4a6a2e7a09cf8ada8a36ec0bc3c5fb94a5a484c7c5fb132ce9094b6852e53e6ddf97286652e57ea977a8046d376639ebd40c000000007315002028100c068462f1701a6782dedb0314800e85b25a5a441709a324c76118c68c32c82042660000000046468206001471589726ea9ddac67b5fb72fdcb47f35aac75cd0dc410606982aa139c81f9a76dca1d9712cee78cbf541ea9d3595e98e26ea52e4646a4163857ce3a2c489abd6e6a6d2b8863c344be12735fadedf50f67d47a1e9ebaa4199c2ab11f1138b5468a818edad8a0ddaf9758dd0282351f09fa9dcc3711319083ba8f03a01bc913cdd4d2d381d3b8eee3aa3913f19800fe506fab03d13933f78054e3ef24ed527d1940f99306fe3688de838ce99543adc5f493511caf86cc9597ebfacf2fc3cbdc83c3575358507d52a66b8bfa6814da0e163bbd01bb2ffe89f86a28a45ee8b689f15e728474a836bba2341623c35f543dc1e0420c8a818ec4ca9a2c81402d603fd3372833d7b30f209bebcd957e6dbb4453c1380dcb22b3e41505379f31573543ac30bececfd28c6a568595474927acb897f264342665d01c0d6fa70d1244971014028c5a8e76756ca40a08dc4b7ce09d0255bfb3fd06c054901bc01771f43685ea542e6c47ad8fe852ecd9cf071a6e059c93edfd00b2a29d51bd1dcda67c0f9bf3907f98e878105e0068655e0df0b877daf6a7597008ff2fa382876d84cbbe854173d19c0f2fb116a139910615eab7eae3cf76d42ff1021a77fed157142c3631959c6e2ac53ecdb1f6082f944000a71e35005748f62ab61b2394c71bf1161593d941e833bd077ef59161591a29c1076098e0c9095ce276a3a4996c5c6971b476f65a6b3d4162807a6e446f8b7992de37afc8a672ba7bfd7f704f21b7100c0f97fecda27ce8dda698384caf5b89432e9fb405f580df863ea9e74fcf191f733e0f01025a8eaae2f57466565b2522f3aa2b28fa02c0fb5cd3b7d62be90d6936c57da49bf3e54be28003c2c994362afb4283c4b2c25996c3bf4a1114b28edaec49bc2328d01e399e8b3d5f06f77ee6d4431fc87cef5d9086d91147d3e8d4ca56c4645a0ee42904152ca7e42a2825b9612008bcd6f89dcdc8d91c5fdadb68502289166416c8cbf7288221a287e391fcbb7f79e67e696153bd6f7515313f1c2b8e58067c20c8391ad7924ecab0f8685da069c97130d31cdcec5339eea775b03f557490a775fae5c3f9561c6f019dbf7ffba1a763c6046cb0e4585d7c6f23b557c5e61c5f77418798ebf592ff05e0ecd74aa588f63e55738bdb059bfa17dd619976fc85de74eee6a1618dbfdc8f6cdc6503872d3e8ee802c8dcb2312b70df3959e8acd11ab0216bc58d40a689f732f4b9adf0a6d320365dbd586b22f09a431afc0b96fc0f3be7b661a1383a47873ff7ced08cb4d8c63e47496d053f1c38c9d949866db305e0d315a99d41cb7d436d050e858ac5e01b43b0c77669de8b92966eab4a74756288708021130cba39d393c11fa196ad809f9e6f3981069998ef8dbf0cecc07b9ee6597cb4bdd4baa08fa304f46b6ccff2e77b958252ed1cc4f2ee5836c856c52525f8c3c2f5931455a51f82d9d33b2fcb063dcb4720a8d1c0a345842d934950ae4061c021e4529396e416fe5cf365a85bbec206cc5cba3410fde36113143f8b3bf7183739d7038d18103449f7e3647c97e711efe0e27b17d56de7aeeacca56f2cb4662300d72cb0cda5a02bbc0b08a4ada3ee8b1de2e100625038d2c4ffd6d232dae3212082234812ea0bef7d2a30f6e246558f95368f6b8e4ecee146db2990793eaf4dd8429cbe0203da6960a1361db173dd119bfc1b11cc3a2313c8b8127cac5632bd7707c3160ca0857bd4ebc268b8426c600fe0df4ef6b29e01dd544aa7a630856eaebfdd22cbcdd70169b946793c0346257e82a9bfabac41600586d4f729d47bef2db8d0cc5458e25d53b0ebc518b8efc610cf9df64bf581ce20641b5f20ca6fdf552b8854ff83f46c88f181b5dad33b85ee76a6688c2da608f007520671c3342022beee68b70207ab2636f624291fca3b5bd87b1c0aa11029e3c1880e890fadc9f0414832a2d3cab8c83f5aeb5faf6ba0983fe69db1dfdaa29930d5bf4e1b75c3d00fcdf9af644569f02ed471e6ca47a8e537489eca1c92d8c2375ab1e958b6e50b2527ad38f82591d06c64a7351792da4a91a7abd4eada29c8acfc86aa3b233d4368aaeb994efd0f4effa6ec8b0126426c19c1aed80ee18dac36c7138dd8c2255f5b5a0c4dfbf0f5ac6a7416438cf3a9bd4b35828169f46efb7eb2db59f034a55de23e442f0e6cee395f83d6afed13fa618271c39eda408d7602269e8548fc10f04a2b0c876fa87b156ec5881536670be37003c39c0012fd55c04bee3ba1e02d7a889cd894f7fb5d07208ba4587a562110a5a9e1527df212f193a0e6d73ead87319174ca2ff7833652ab19715982440efafd6d3a0fe8cc6ad9d41f94d743733f960de32d18ac5d426f634eadaef7df7c1855f75dba452f9167c638bf1c835f88a62a1906e3734e76d3a36543230508961e5d5626ae223fc905790fa021aebb24451a9c76eca1dfdb899a17134b6be0658dc22251e2622512b3e4c547aa8dd911fe8429ce7ea2c2dd6615a5846b24cada2a1a24b8d720f61ad9514db349ee91833016d5ae9154751ba76ba1605a9068c46b48f986474a81ad00c183656ec0d1286d6d3db16123b248e0d9dcc642273196a513a7e1be7a7f7c5a301bb414b853dbab6c3d67668d1162a650480cd7b2c1e69ed401a7e832c8798e27597d23701df4f2bc96eddee49d15c7f6a1821668897e055259709f11981a1d895d7cb6e749dedf4b8d7fc24d362f773706c2f07903518d5032e16424f69d168e6e51bdbf11d4f1539c814b25f1ed52c3adc2cc5f7bf0253391226702d16b551004f38d7fc75e525d0b4c2a01d90a7fcf100a9fce941e2248e2a8e8f3e7b63f41676cc363de67aecd50b64307039f87d7b656762141bde97007d98598121a9a71893fdd26e6f3cda21cd808698fa4b8f136a5847a4326238c44209bc0035bc2ef433d43d0ece4002956741fb3f405b7a10cedc9e878ee1e0c0415d3ed1552571d4e87e02469588f2c3e24505469885e400f3ef35d838c54efcb0e8d40e195bf5f680bf6b2653a74862c78fae1a14c33ae6add816b620323cb67bb0cc22b57a34b0abb6de44f58d7724e8a9b9441531750f348c17589f5e1dbc66a9a86845362fa7ac2e0fa247c07f7ee58910c8f121695c31d5c4e62f1d88764b84cd9bc3686e63e3c056f2f26a5ee3c4605de7817c30651d1bbe1a966de0753035769000b261121edf060dce5620c51cb24b28791aae2d04d9a4ddd7c70dd6c3d97b9382fb1d3a24904e5441377b5117a804228ff535dbc213b0ca1d553cd4dd0e6b28ed808d16237f443ce6e018f4a5e05898538f1a882c99f058413320d230dcc27dea60ce9408ff26a76901e07f5385c86ff93919e844334e8b1c7be96a94c0b5343326fd15c8bdc5cf047028c189715c1005ca172b0e46342b545deb040312c242e99dfd7f0ce76c24bcef0ab4439798d1d65763974258c5ef260a0b3e1b8e0d9e2d8e5d142c313de7682aa489a14ca593c884bdc1776e8012ebbc12b16f8a49852dd6ff85b00c02cf148ab0260ddf4ed60c38b4ee53820de0c2342efd7f6d1aaea5c94af3a9454282a0cc3c2d4954bae51a44d9f061b0cc00569317fec88f8bda61850b11f8da078410c241974cd83f280cd8fe4c1a22d97166938f869521d6b554863815ae0c0532a532a4d698cad075c620a690d1e5aaf58cc3da17d8919c288d9772c379db46755212416834424f7d3f3697b5c02963658c102fc518613d5756c6735da7577dac4604703aad460fc6b5e4641575451c5a9de526377688fc23886e4b44e238286a0edfa40266f5f794c5d111aa2c50e97c60a19f0cfd6e037bb6339f2a3a9bacb7a0be9fb6ac3971c8fde57eec50034922812cdee8ba4adf3ae4cb69a20c09e8ac140db3dcab814192e8f92152e452234b7a389e8ab6ae8634b1d9fa269625460a5d890b20a14f8d3304729897824001c9d19aa12c92c184935fe408973b6040a9b12d1e0a1d61a5bcffae7491718cc5311d5071787f608bdfd96cfa68c1a58756c1fe63d68a0b59ad9ed3f5b36b4a7e5599e5c2f0ec43804fec3a44ff9192fc83bfaf0dd70481dd1738ea4d56ef33ce326a2fc74c7b0765672c431b2f1c8dcc0575acf7083fd5a496caa541a97921b7df535991350937c3223ef050569064f9037023c26bed9d45b2ebc3622696049b589fe3eea232ea8f76cbab2fa2e7d474b729c52b5af3c309d57ebbaa52eb71534f86b630a14adc5b39f32aefe356823a14f510a44ad403ed72040533fd1314ea223e8d025ac58ff82a6601d39513ce8756a7b26677d8ada52772179a144cf9a6869c3c119f1659ca114b12833e8595df5795d154db4863b934ce08e121383c779b7c946a9039ce89ffb297cb4a3bcc05275cf7a1cafac9f7df3997506bc3996cef296a034b82ee23561c5957695c4813e07c3019574053c88908a175584d6b3320a776c736e32e24cb8985eac8880ee1adf6088a66bcf8a0408c6a304b45046ec8e630571ac4ac0d2758fcd64871a1ef75f32badf0f018a3ac1a50970f2fe9226a75d67966176d8c883ac8967c9dd475a167e20c112262c118a39c5649e291a2484a17ac7087e082a8b821eb4c304f9490f68722bf1c82e513e8761c1d8a70c5673391fa44f6a82446548daa69e58134ee05078c3b5db1cf131bafb73eec6ac05197d674e2b5ec24e892b1c97889039925279526e6d0134ae9b2c3e9491c46fcc7e2556e58ac1cc10fbcdd427852b36285ffe69dc8d27b65f838a522407fea83c4091a52690ef49b270a410f7320bafc438773e5aa7b7dba38936ee3cf4ccc0b7d310339f00ce7cb4e2fd41b3f5f86b986290c544200943ed6dff5d23e9688655f133a79fb3fe98562fb0c4632a97d07f0b6018e0bc4bbfb13808a9c8727018c93a8eff2624d24a28193e7a20b50018f811d4d8a891bb0eb52fb78d1df0bc02b65cd88d42a8a3fd1a3255b8c630471ffb4cf2c84bfece734e5edd92f0a59f1daa93d06311d43b1fda14c8c3eaff84e05031a9f178a3591a7570468239ea9b927a9f99e6d97414b1236c25041e94805593701e534b704867473e39f1b0b63e157a3c4b257d737bbb776de75fa57aab33e64f4b44415247d9f3323ea62a9f6d470e371ff8e0f834ac14dc037f26b0cf3b47a8d95909bb21f3fc61eba14e6fce006189a808e9ec5f5bfa1f72a85667254aa10352c06a47434c51b78684eb3b5a6fffb2311718a99a5b47444a794c2e2373106398de9bf33fafaef02f3fefb4863720f2f7cab33fdda8fee40b4121fe02921aa9d88254ef02539f53992cf26979e0ad3c0a0a1b78ac90813e00306f8db58196dcffdaee7c9f609f12949dcb4ae2daecc01d914d6584b227b64ee5432b3971229c7249a1ca2442e08d22a1707884a3b002870b6a4e4183779b1697733517e6f2c1cd146031ee707c7be05dc85f4e03644f46606a01082bfb68bdfb83641fda547152f2cc1a82272d32052ef5d714491dd145909d919f7a32bb9f18182afc909dc5485606320419dd6265741d241e6c03e95461ea01d11382829007a865da7fca1d8f7db59687e51a0e4e1b10e12e361cab4a541a92126748a6e09ae44c11a9ac1f0af4bb1c4c532d73d1e32706e2f502423f94cb521e69930c79bef67c70a53cf7b06705a9490600276b64daee04821c0c72a916212a3c3f10ac3b0659426712a728c890b5aa1e8ee4078142a4604ef863af6de0f23bb40062ccdd22b28b8b0cd3c02fd612f01e4a34483d303632f0ccbbcafb286849c0fe7270462e0ed2cc9032a6179c9f1ef9bb6a70f2eb63d6d576f7ba8196700b93de430cd4a5bb9e0636ca202bcd8e6132d6a434448f23008207cea5a0c4ad60b1f054ce17888483e753083f5621331716df849197f231b4be8929856264ca2c00e42e13e9a0677f8f1a2302957ee83d6c5eeefe12a0b27bfa6c25f436ed8958924cdea82806bb483d4140292ba91a0e7a43a42365e629ac0837162c565ccc59f1e35d0459464e9ba41c626b91879d06bc4d8cd0f015cfc85e39e2fbca5b4a941d2b33489cca5146458e5017bec583bfcec957737e2b35346f1d839432c70282d00d25d314afb73da87d65f5cfda1f417273d1994e34b781d41cccd5668cdbc3fe18766cfd1d0fef4313454090e61beb0d757334bbbb4385dd3304be753bdea31a0279847a093341157dcfe04f51f92b2658081f914d4e9cc77fda4854f2ab1fb6d130f57fdaf0305480c58e6ef56f1a878ead24596f164efeef5ea29ac103ba7f0cd4949c1a4d330834244b5adb68c609fe16a4415970281c4d05179bb8a184a5962ec4ff1f45ccf54ee35e64b5b546ce0fd11e1dd7d172189a67db89456104a5aa4486cc5163f53a23f0f0478fd6225ff29a082e24e7b6bf73ba610a643211a67edb1907c3e12a08efdd2a34578c70c61a7f9604ed872737bb8c0cc304b5e84edf2ccf9cddb0ced78939cd00a85ee17217898ea86f16cf8158147f9754254fbf67cbdb4042da3a0ad2c15a4a6ab33cc4f9beeb765941135ef83e6f4e056f7b76761631eb4b6cf2824875a6bb73fb7e9252c2bc3a6f637aabf1014db4d56e1047690adc9626ae9ec8e052da45220bd84515f6b22a2e95dbce283a354da0818857d238551bf86a30e77cdcce9e60b7dfb77542032c166639cf2d7be83f067e1c14b0e9b84d7ca7fc6ba3665327203b8035320475331fa7722523bb957629325ef23f1a7e904b43dd452f95e1edb567ca41028666eb5530b792525b6a8bf3a8736c4266b65f1c9ea5da44bdf33865e9188244cb1dcfa32bbb4c6f792e97c86982af29bf4b0887b16c9a3643829894143fb6765e2a3e178b6c5976a5184643fe011c2cb6bfb8919e04603b4b1bf6b14d60f55a01cb82d52de9311e46a310ce4622106c5711f14d44ee44ea0760cd104b5bbbb2750bb17cb41edf8e0f7f9930e4b337b0d3526d87d8b38f14fe3170ee8e6fa235094f638c1fcafd35081a3c4bcab59bd32ef17145231c6ee70282ccf115a927b3396b9a9bb797960e6b8d90eec91b9eedb27bab180f54c2cb56d0ff41dec6acd512eb405033ec6097242e643e110c8bb427095bf1fd46e9cb6918a4e52d8e212ce8ebb1e39a06a0cf0c77080602161f2524f90e91f4701a36558389bb62f1b9816bbc1e58ef5557979c60e88abd2de578e8c90120f2139bd484ec888a07139217679028ff7e21e39637410d106a1e7711067f196e2d7fa42f59bda9334598a8fd988406c5644152ac710ee79ec36d3ce376704d69390b3ceae72d500663794f3d7a28e20b33abffc0ee65ef7c62cf3e74e06030110ec980d2d854d2f0fb5e90eca8758293be9c84624dd66e0ef7079f81985f2772f01725d4d324ff6046812260ab2af4059aea92772cb83ef8eca8b3e66685ca8daed37dcb1e33a7f4838e5b99a2dbe95ca19ca7d282449546cc86c4432653b6eb4a3f802ded12262dacd40a7875ee4a16f366c2c6c320d5e6239b3c4fad07d75d6f37796bb6e757c258e77d51b208791aa10f085cff332424e1cd9ad502efc17fe75742903fabdacb3ce2e025858ec16cc97bd9e4b0ff313afe32fb85058abcba7f83edbf84d8f506aa6dab1d0eb344cd07f858e5be6c258212586dd861b854e7bc8a43d992636fedfeca20fe8f9bd98446cff35fafc79ffa46c03a84483dbfb3fe8ffd717c21c2a71e0f6ff0bfa5b961d7a62a45bff1f8eb64b9b97130d367409b25bc1ad80255bb24c6bace0072b57600ccca97e0eecf8effe6e6971ef86852a5f6093ce9cc415186cc1df66950e23ad5149c81b9e975c40fa10b3209409f5ab1530ca7b3181d175f063cb3b9b3fb60bbe66815bbb4ca3b1a30018616a59639686f25b1f4d18160b24e30cc59e2d9d0aa84650f443aea7b8daef0d8d775885f02f684371f2e23a4929543061f7fbec3b330cc3c47a5ded18dffac06163942397a98e6bfd75f23874cee8c7816b969e73ba5fe24ad20d49e962f17e7c9c8dd7ca116e8ad92ca7518b5fd805208d469ca4e00a4cf3598a13282da56704ba873cba45fdafcb9ab7a6785b1bae381de7eb992b2fc3fd75e7ced3449d6d6e9a2bd1347db31e734029a7d06e40214d5666f69742bf11d0d446dd854854f30543f43ed04bdc270709e9c33c1ddc554fd0719c4f270affc821337080b9bcef5ba387deaa21a990a369ac8fa94dbb473aa2e706508a994e2350d619d7a695947a8d24bd6eb452d6f65fddec4821887db4fc490e23f2443154c0c9f9ad482de2712d68caa8071a9e49eb3f5f121c986be540549495207b41716ce517730ef7ebbd6f189b8a39895a9a80e8919e71facfce0868e3e564d9d31c0c71575379a4c7563d58fcd8e5fc4ac6ae432765a5ab286c0a218b1a4017161a3fd4ecf7cb45c10c83e2a7c17625f3501f0d12e50982fb2f29c440b9f5b63eaf3cfc092982af4e48d522edb16804eaadd56acc997238468b9b04ca050f9a02699ad484fee68470d611e08ea393da4fc5ac1be9a99ec6b9e1144b01b2a50b13a41434b31511b13647a569dd30c1888b65a1a19fb1ac29237ef89d6b5cac7387dc6c88b975489f87c24cc5ccecef7b2884f37f829add33f0ca788d6b434eabd8e9ec2af58a8e44f1b74d7b00c4edb496ea1fbbadba1f9f5b00991ba511763bd9c405528ca27f67b738de5098ccc73b6bf237ab5238381744b0ab2c1fd58b3f8d12803134fa33ee7d39136630b1743218597877420b0d6c0d8550eb101ded227d33a098c13e66d57b9a4c61600f97ea2d6b28ac3a3861fd1cff60547b92f649bcf0f54f90b3074480120ac46110c5b6ee50edc0be59459ff75c00ce67afcee0648c8b5c29dc9c6917066008c9075a4155b93a39e2407abee77c0054282d6bf40812ab76a0fe44fa2318ba9b06c4c8dbd758ab35492b9b3a17ff3f7cafb6a6ef06fd80133a82cf34a46dfe71e19b1810c62b0a698fd10fb775a230e0a9a89c2048c844864bae0663826c1878639896abcc6b430d3856fa136004abc37cf588db0f997b769e0af49e11ebccffc0f6f456875d4c67ae168016bb5ef7732f272ab303d2235d9e01da84b2f7a70e76a43165a41a11cc58e6842fe7f6bfcecbf1f40f6cb8edc1907001e3199cd33006d301ca116c376751c05ae6b424bda5c04e1de85612a3459724a8f9bc903620bae29c864ee352315bcfc32970de887f4d9cdeef6234c8d1775fe4db191ac8854e574e3336a457246a39d4195df40ec86f839183f661e17d464a179972184d8f567a871f62dff44d04a7761aa5c4556683dc956c8f648cb7226b97576c27123c06104a0c686acca5e21def32c3827b164ba172af9957624b2c5c157cfec5377c155cbe4e16580cee87ada5b1732d9255c5005a8b2e998b1f9a84095979b5d2c2e724cfb35afed2d41108de9c1d8c75f8b1b7f6413f437788a495c71034cb5d84935b8b28055777e96d83c76db9b6585c1a19bb96640ae0464b65d60a3a9ca430ee5bf8f8d76e695ee63c2111674535a28ffa670d9359d831afa7e18bdb746c3a8b74498f8a8a1bfc59f4da9ea7c4e332136adc8228cbb73e8fbbb9b4a06310c67ed00f26a7195a3ec9dc6f8d512ee37c2ca920ff4fc5fb3540438e5d35677648ca8bd286947f2cc4133970851c726f8dd90c767970002c6075a96cad5374217c6d0d5fb4c85bb726d99b60667591661ef4d2ae9537aac5ed8770fb5abb137925be425f8b0d8514002e30c4f8a04fe0d2d5e3a606c9e1e0b819e6261e4e932a8e100594c8ff4a9686c6654529de58cede78a3d726e40d726c4cedfbfebc580a2e0bfdda5ecec253747980ff10e5dbc7c30013ec46beacd5cb9dce5b822efc25751364c8cec46ea4765d966bab0020b6fb3a93b70e0b870748da09fb97c459c02be90c473bd9b681ceb9aad9e97e71a2e15b6ecd3870bf129a2f4135a893c266dd3de9c655a4710e8cb938b839f2e8b976d6a4afcaffc4ae177f5c4bcb918b2ae0e286d40332ee9bd6bfc8915c5553f8018a1afa472e22fdcfc6d7f1e6452e01c01942ba13e10902202b1a82cc1baa98fd7d9710253daf683213f903129fa06aadff7adbd2aaf912a895919b301e86517d0f6f44cfb5a1ee003edf1b0afd8b9edd89d767d5caa006fea1682f96d46e683dcdfbdb5a0b93e13bb45e00968c5c5edec76a040135146e9b9768f68e551cf46ff3bd4c27b8299b132f79dc4c438b60af9a4c717c1f51cec7af1774c4c820f870fb66725848ad3d1c69fd77c7b09ada06154f14d263c6712e63162fdbb52f6eed7a6c70d03b496d29908f788bffe6f867c664e61467d6a44745881a441a231bd6230a42fce6334c0a6872a7123bc5381b70004a7434cbcdb91537391dc3ae84df8e186f67cc21f1b358287a16d92ec2a08b08770d953097b9c332bb6f2321057379f3e356e5671f21ec6ed7d562ad5f0d5d44211c23431ddae6ccfb14f8c82abfcbb0b8c384f2a15f583468d7250326c7f55e19ba66252654a326f6d825483e75552ff0b64d802ec194f1da18c2bb7315c1b696f8fd512af11abf969040052528923e9cc63a328d09de4774b9f28ac983a316bb9c72381edd6a376500eef20e1d559d3da7d162ce70e32c5cf475369f7a97efededb9764eec1eedffca60e24219d9430fe15b1e7797992cafd8cd0d0449eb5d1a779d28142d65511d337c0216e12a354871043f043f6e75023d8f0897c3c07d42e6de7aa74f1b755755615d77a6da173228d69ad09f8a9a4320943d112cde05fe0b0e190038a28c34e2e931abcb3d1505d7a986827e709843ce168c653e9dd2667de9b533e73c9022461da727e542763e3b2263c6e5d7535419d5253a3029e3f9404c24599e3e818e10889d0f399b2c4c303aa584418574cadec7cec0297880d0fc88a9cb65ddd6e8007f65c5f264d1244365f19f6842c6384a2d55a842e0eec50d704270d43d48fa867c8e7669e5bd4bc2482e45e3eedc179c83264e242e9c6e7be8395d0470f29e0ba4da86a6c68afdc951b0bc1ecd46e0e28237d4d28865ead0c4160e72b524772a69cb55c465336c2f01c956a192ef35621be940e00324e7d7a0d87b990b3c43940c71d9ac97d8d48285efb4aebf6176af9aa6cb3aced18148ecda6b655c1398024cc5403c220b4dd55d55ea4f625941c44a88dcb18c63588cd4dda4f85afee603e80623f4a3b099ec2019eeff18bf15eb5691222eecc2dc0af7ff1a77627418a3a02518106a1b23a0d76c87866ebdafc761896b3eee0fb80382d1724a8136772553bd80c35c0a55cb1a22b405cc46be845da34eb7742e4d72b3c4f270a7312d7839e5cdeef1a413dbd98cd4a49de9acc15db363fcbba2cbf002834ba17ed0262389b677ad24f420cf4a3bce49606f86eafab673f5091be09efe6c99d6010d419b5e0eca4dc058d9345cd5f2310ada5316e00503dea3cc047820c65f2959d7a4f07c0062a71a6a964d70784c950c59b864eced104da685be171c096a789ec8c44b1777889140ae53895d06dab295577dcb2a7e0c931712c61ad7da9f1f213cfb974b3c092e7bd24a8fe8fa901edfb57b432a47b0d344f419a9984cf6c0f7e48fdae2c5c9b984e17e05073fcef8b0788524bb7ccf9238a4ce03ccfadf7cf50bb231040536b8c18ae133385bb1f1f0db4dbba4fc5ff52f83a89669870f7740b9c5d6252d44902d93be02cd62cf8e0e928a116d550a3a37126074f586af2058c8ac47b883922499ff9f0f7a532e457f2adc4ed3bd1c93a8de02b3c7275843e6aa1cf327c04e0c97b7dcef994814904797896883ac1244385a8ea3726e9e5c44400829b82dcab078073f945f48de8edf0d2594fd41c94b66a1649466503222d414671efd16df08dfe2e6bbbbbcee2c3c0b6cbee65edcbe059d1d06fbfbf8b158330cc0dbe160b9af1368f8ede470c8d849fdeb282a243c207a43a45e5465c69523af3d1bb840b078d3ec8007a56104d926040d24613e5929470a653a89123236e022c985dcc80540bcdecfa8e85b9182610add30d8a0068b71d1828194163694b936dc75deb63c626d257fbdfbb883f2af3b0c8079ba08b78a22fe8406187f8f4f884b74f8b5de3eeba0effff239c4d0b51d6659bf500874eddf67b1175f1421a30e6cf6a5474af91e51c7cb8383ebdaf0c13516e4ac673150e23ce417144c505310041663c32e25dc33494f0434c5a656fd4e8fa601b8944ce371996d0738c040145df5dbc134a0793b6fc4411bc94332b9cc9d1067351b10f96b569fae77772f27d0099428aff0db6811ad48b39f3f3a9bf0aac6f85f49a0f93dc14371dc500e002869279a21bab036e0e9bedf92eaa68f457b880d2584467db075ca04cacf13fbf4893fc6b9fd2c16e87fbece2000c1d47a2a70a106fb53e5172a945ac8d1a065c695aba069150a5f8d6c5b23f9f94637414619048ff6b55b358dcdcca20ddc62c7ab75f405f941c93a94a715138d04bef8772dc8f30e839a5a6d97d8c74fcb483a11e7a5f138e4b4c0af0f7bcdacc41a9f8a8f1051b3c4405095e2f9b8947ee073d25c171555c5f29acdf5af041e83421049f722603904e5c87c73a7aa22729aa2f8c42428a5d7fc47272fd82844dd9287460bb14af7c353b06f4ece7ac23c5eaf682e77dafa6c005b6f88bfb31fe534e1eb5ef3b7b5a9608f4912117539782e58bfac64f37557bee56ad3a98c828b841f7cc2a68e087c0711eaa24174f62f74126b076a33921550bfb8150b3586c5a111583154618a4afa778477fa409051f7798e310243dfc87f514522feb8fad713bfa201d5e8ee841b0025751f8e6c2f1cccb26806ed8f68f2a62d2c1a1fc6a858f28fd09cb7d1a43ecc4348998eacad704df9443bf1bbe4bbc6c7e3e25f137253dc3ead317e3a657010bb778d504227411abca59b4dfb2f426e18b5fc1c7d05a830fead2b7c9d768d44f6b60460a89c7010085474808234565986e7d305f05d9e1e9ce9fdb27b392c6c712ae38b1991aa71517c5ed29958ac1d28db356270483280bd0e7776e1c5471fa4ef6ded1aa74dc395453d6fd750028214326bd70893c30bccd251962b4b554d459b6eb66b54c5687cc2d7cb812be6b65d03be962a1e654578c34aa00c9230e43392ffca3ecccc7ddf7d6e3032c6e3b0898cd7470cfaad7ee0cbbf730a508cc9dad314ce18b633adc8cfa86905578dacd875a1d7f5e1d48c5a2ab231e2694579500e2a7f165435613f6bb4a13ebd9058907998230552a3d505887e2552a30b75810c678fe3a6e1c4de01905b51ecc7a73edfe2ff313ab56f4f143ac644cdf1430f545ddf412e61845ad6d5552a11e0364342cccdc27ddcb60a43dba05b2fa1e2d0f063147608a6b2075604961b5051f919264621c7abe97dec30d2ca9c1de20c1b9c0be2d47e08aa78d3f0be06faafb7cff6b48370ecc52295700573655d6f24749906acb971cf6d06fb5831bbc9766d8e33e62e83ff4fdbdcd667d4f8663fd1136ba01537f6a5e6fa44b291f7d78a5635f27cfc9eefd1ca1c7600c3c5ae3b5bc6568206d1b124cc0d07431484c1bdca5337e4a7f088d447d1758b690ca27b139a38fce32df8104d86ec6650764773d500a26611f58e3f6343779625d3268b995e82dc09dd070962cb54a1b7da1fba2922e8df2f9f0f9f90b92642584fec3a49ecf14223eb03782d43d0943bee88ac8bce6f33317b202cc679f0287d198be0980c93778fe304d6ae9b2a524e5299f862a557e843ddc64274755d0cf8d5c004c2d68ac6c3f9561050be54d1d62f5ef45ce8c261f28d3ff9e347814ce6df7c6e9f35390e6516b4301bf5b24dbae16d3427f8d984bed3e1267dca9508e61d1c531f050aa7f60c0fcbe09cbb1f9f54fcb492669fc83ae6042b1ae9952f33c4d420ab36126863b557289a3776cf18d51d2fda0cdc112345eebc0b2e1c28fefb1d1de2f8af7c66ac2b2f38122158462b172bb6af79473d2a9e80d243373e54e6985c22904a0386d75cfa42d29cba8f7fa9f741ac6a6b6d3d1949ad003b7689bd0e23d2578673756809d6fd8042af315045cd5271491ee739ffa364fd54786442080ecee765eec679a65bc84b5fbec721574619c33374596f03a081d87812f777f04d73913acc976642008359f5f0eac062d98bf52328fade9303020a6813040c67c9da0d387125200e96416a0b56a12fff2202459b4f0e38bd19457f67a2c1733c05f161def03293aa2f58ba1fc9f13c588caa944099ec47f9aca02eac1d1aa3602d0472d07af0c7ad71c90895b8b8944faa7408301c5879515297db364b98d172119e2444ae4e868a398fc67a40c31861045008d37c85b2d800e23918b9341ffe3b162af69cdf79ef5c1078dc375ee63cda4024bf80ec91758fbc9e8cb5ae4671a93b1f88503265ceffe18446924c0417a8938a7eff0141caf7a543793def68d897e0e7c2ed82fd814a4b2ceb0aaac8e8206dbcac654e1d2b7cf9b4f0757ed0333d7584a9413ef4268bb3987396fbbb8bde57cf298a9554ceb7365e7e98d1115bada0bae08f2b9016fa575734e1c6ed8d624b3e350757027009afa558357e6062daeac4865587c5d017c0df0221066d122053ccc27deed7c091fea0327a2e6f194c04b2e8a1fe3fbb272257e51e34e5fef0121ac6cad4d47fd94122d061875e3d359a8bf2356cce99fe707558ed3a7b47b086626d42f5361faa1d800eed9438ab072bfc7e5ee9c17e3d7e5f38b5d1e004a808f44d7793b67fffa881fddd4094fc4381d5dc9660c1325824c28b505e9f1f067fd8ad3ad67dbd2daa0bede41b447bb038cb48d75ad261c7d7370b58813091a5cf900ddff965f83187ff74795ead8baccc81353563db9cef065668b2b2df6b9a8206c57364556bc12b0b4d6b7408f4e52b93086b33fc4146eebe6cde00ff39aa224dd3c553d7313e085d910f1e726e8e86be6d8eb3032f7ad638b541eb90c38e73730557caa849dfa2b8750a04a0d237322ac02b1104f2d4de8701fbcffdd583012e1a85e3265c3bafd63cac409b8866054bac974f5c91a1113c663198dd4f7f339895e0fa564078240c154fcc0955c47bdae6f244a02f4ea12b38f93673cda8632c7fe2c94343eda619510bba9254ce269281fb47e10f5e91a3bdabaf25b0cf9578bf5ed09de831473a6dc19d0c4a76ef81f2becf20160d2e738da2a6ab48d71b9a4e693126549512a154c3b1b95af5487f1d766b3afa16f2a558c45478051fe82f1172bbd59749733c08d8839a5ab3d48e70623dfdfc74ae1b5d02810ba695e540992ac2d39f7a620f84170bd0c4d33604594d51db80859e6f52cd83e7e37a30265514a4bf8b8ec39ce2dcebc9da22afbe480de74af83eed5abf845c1128821f7cb293a0ccc5f9e27a10c5c5562187ef280594bc88dc2ac2957cd3c0722ec437b517f9dff874980346e261f5f6504e97b9f39913c1986dacdfdbbd2ec30de8c9cefa2f5984eda552a6f8dda79c7000324f5e45f3d75592559251b88a5a381b31885c36417d9ac194df2393d89a2a79c43dc8b37fb3a3051696d15ef175b3d86869f5f9ab692c35b62c0cba268c13b87d190511a7a28e9a3d90ac14f1b2843ff9742cd77c07a5fdd4453c54274cddf174a312bc5d2bbd5eeb2959764be160e3bc8954cd2ab7d3aee105c3625baee8ec7b5a9d2a3575ac9a0ea2d74a40289619b4f4da47c48e81b66e2377c72f035bd9d25761178db93f6d34a40d441f1302eec02378327ac22a5f54c0e209b6e9972b1720fa815bec789140abaf81c18844d8925fc96000c1028491118dcdad8fdb13fdf65520f23b9fbcbb9de5b246e63adac88d0251243ac28a4788e8e1ecd1b0082f206f8b066756e06c2c3a3e9abd7ed31d9fbece4594662e5f7fcc9738aeff16d03422a1d3c040a4f8b04ab3abb92a12867b2b56e9e10e5d5994e83486a0a222e240c021e80a00017a0d089e1473a27b2a56e704c66df43b66b8dedff41a1a33509ba5df9174ee4987cf6623cd279be3c337943edef21133afcf21f6da5b9bb3e6661bc6a3cc32b5b9862975552dc9af5c4cbc3878e895bfad788fc2f302677b00005df16eb033ae0b26c2750de6ace97e947047272d725a66c0f1427681c68c34f4af6cb936872dd3649404268b9cfa228aaaabf325af9facd6ad7f57c66374f5ec534c2f49a4695645e499a3625fe46f87689ed05fee32483db1797ee5a7eb2a083a0bb73e2782f0d60a2c5715ddeb1d33ccf497cd23b9ae0833c74c1b8196c35cebe4b64c8ffe95c569123f82e3c5489569bd0bead5781f7a1e91899ae4211aeba307b2d454515457eecfc8c136fafd6a97c03a9f3675e0b349bab4647127e2c233a66b803e5582ee8e20c8b4e8390f83b53f934c8fd85ca4552c89b6ce15c0c6f28fe9bb09fe9435c7f42dd76ba908e95f5af5d7bf080f0674d99130487f0d173c7ce8511aba42aaa1bfdbda8a5226942415e7199f729bc0612230212c4721ff6e06c5f4c9fa51cea7c78b4848eef9a92123318d15b6b3c9b8be7ab5d32ff167c3e585b67bbe978e50422d81935ebd023b4b363f5454738224791bf79bb9ac3a470295e30b933dffec75cb80ace1331e406c59a9a368fc8df4710fedeef77414a276d335cd878ff638879b7ccf4b7c764e79d64be7cf64375cee064d69dddc22b66fca6bbc79b2221a23a3f6f660df35951c2eb2fe8ffe697e908a9976794da4d043a4e60ae39b74a5165eed3c6e342e9ea9b026879c1c585b8d8ceb630824d025d65802ddd6d8c95bd7d8095d6bfc045a6becd4b735fe9e907b53c9d0a252ea25bf902e9a1758167e8daba1c9fd0cc73a962a40b4b8884389f75e2ec8d98b6b8de51db9b96c26d84f3605aefb124473ab1d0f9dbec6e0cf33648b73d1397e77ca43a3e80d94a4f34abe306023de8e3586e73a76e0be44efdeb2f56a6b87fd2139033af5a236518480e482342e4d5cf9137592813038aa3af8b21bc7ea059a57a9a20b5ebdac03fbbaf255c7884e7c519ae54a62b91112e2766aa3428756cb27e8f9864af67a450c033eb7d4176a4c4ce7bcb62781f761ba4b78146baecdd625a84f6cd7682049ec94d7305828e1339bdfe06de7768b8b8b851dd2d959d865226644ea8eecaa087c6e6243dc821bff05dd35602a3fdc87e7370ca2ea843362952f07e9e7ee4df5c2a5df9470adef17255bfadc35be70894207b22464e472129dea135ad52189577ceea6638f5c923ac67edf75c7a777d5f147f76d7b9bd77c1ee73898b017bd9b63430d7dbe9e88638f70208e618c90ae4b918f9bfb2840ed5e9cb0da78b0582ebe42b0347a12e19e4da41f8347a094c9a6ec1be170c6f9abb12510eb3d407f22ce850dd51bf92bf84b2cb05d7eeb8e029e6c03b7bd331104dfb3fb2f8d59ca0e0f5ba51888be1963580855b4349c840480c8b35ba3c584aa6ef234b6e2a80e77fd2a464520b3cf2c068d5f9dec32a6ae3edd59a6500252e77921f09b52cd8eb21d53833617a20072f2198da6411c47cfc912c58bfdfa83cd030b3368af620db9d6c78c55d239218f7735449e439265d7ddd20405cac61cc670a63db67b84a337e4b9cc9251428b06ffcaa569cf9c337d4c035eea45d365553e135093279619fa51cf76f1ab0b758fc48e896a1a16c9a0f9fcb3c8d0c1936c3e730f216e220ea2cfde2a6c4869730a7f75c5a7fdbddce85bedd7683578e73f7555f52e313e2d2ba1d8e173d3a319c5598b0c5fe09ccf617439d7b32043682e0e29598da33fe79327366060660d71855ab43d50a9fdefc721bf596404d2815391211eea036917bc8b22a6616f1c6b163946931db2f7a0b5a14d2d8baf13cb6f34be8064c258a81b7c6d8f47848c58f3b65e98ed3c3bbb7674bb2c534820e1be7dc1ca6bf85074e6a582e55dea1c9a8b485ba7edbf089000f2f94ef681156545b3fce06438be0224de37e228e1b9c9857582210f1c5797a5a1bd646fbcff35cbb4fbce987f39365acb40f12e988d95ee18ec49536eb69d30700dc2cbebb367d51183dfaf1e699f60d44aa826eb389f90a218bc27294f26dcaacd575fb57d784c5bb2dc1bb12015acda2440f0ebeb369045d9b7cccf198733292fa3649ba03ace165d94b5f3462186d27b21eccd059358a32e1105ca1f6a5cda9886c4752b462b6e38431473265dcbb04327ed6301cc11ca1b718e03fd4491c58749cc140cb3aadda4f956ff9f83dfc4b0ec373bd7d279c6721698038aeb4d6c085662b932aa6ada3b58a1383010421803f3f8b0dd013f4b9ac19faa5d032b6272d07b9618a3f2a2305c03c088fa5977fb35f5fa3a43dafb8a09e3f8d6063009f52d3aff8220a70d08b2d59cdadefab79687008bf45cc09d2d02ac953bc9a4657b576c829f9b5fa47cfef3ccf3e522afe7efeb02fa53302e0d8945d55ac3950f61ac2e836accc36ff1eb3795d645c3dcc86e3dbed370fc2f57f9692ec3da37c8682dc899cf02357e77353d22de75c5d874e3e9cc9ebae6cf895d495d65f8c77b95cf7e0df857bde1be47e3ef66df481777fcf4b8ce3afff3f48ca489f105ea356eac6c142ef473ad9d9741a70d01a3cb8c82ea94426bd31910aa7188cee9ab56d9230638c73fa892555c81bf70a9895ab4bec2eb8585afa729ad9d57f2671662a257c6b5440a72237a4e67483d065f782f32367d2ee4c6ea16b5bb1411d10123d6afd1fd261930406c7f1da6c6c2d76153c500230beb601ae29be60bf7656f7e09d5d37ab24e41ce73d989daef6af6a2160da9ca52a5523f9668f7066863f3bd11dfd5af4b8b672c85645f4f183e5d45e7410beef90734f628304cb2bae75fe9a575d3c54b4b0959fec05b65660cfad7ca5a67f73f017cc40d684741b4e0fa073f23ea8be59317a7e76df75e82d5b80a9c53105c85a6775e1a444a7ffc881d0bb1fa4dbd2e337fac1842b2d522eaabb411bc01aeefa5a73f769916761e2efb6ceb4766ded71bdf3f4a2a90cbaaca4b38919345eed3e32aa49de8f9811c008e0992c46de86b0c142b33837255e44a0065f3d24731168fee17c15217c7f9c48263ee3598b7b67b7a08ee7a7a2d847fa1f0dd4276b001226ca100346d598657345b5b520346058095f0c3dd606d0521ecfe255058692128437b3142cfb43265b40733f5a0804f0cdb2172f654b5ea076f218cf6bc28bdaa93fb56d0b8eeb9bf36518986d8e983c920fb21feb73fe407bac966092574f9b19e197f97f4f1fd3c58ad2753362090aff4d432ea91c93d4ac54cdff447d67439a803cce8374f3c041de6e0d005c8c7ba0efd1f4acfa4dff83498e8b7f0e7ae5c63b73b2880bc858db11562a4e7022e36c6fa601e670e1a1b23a241f6acfdf303de8b42225c415d0f1b502f6d3ccead7cd6a345541d974dde22503eebd0d39f8030b5114ce3db13b97d166c17571c0e0185d1f5d8a83adc12cfa7d23431b5bf1b863db1c8703cabfb2a0b122f408ece00783b195724e41ff673b938ed06fd14ca93e071bc7c183cb420a42fec8602f032fd3f6c98d08a70995d8c07f1af5f38b0e890a3240aba92c08e0a57ca61937d66cfcc0c7091aa801f27c1cd6f3c484fcd67edc7cf709578964183c60b4d72dc615dce2d9392445b49010a088d2755dbdb29736914adc3d44bd3ff9454220c686278836df0e79cbf859275e225c1c14657fb05f417a45bb815499e01e40304d9f062f49dcc467816e806f9081ea0f3eb5aaa3375b6b44297d279dc71a0d32fb39be3a983ce50c2b3c0b7850a149d4bbb972feb2bed0b4cb5c2e84d3ab8e72015271b5bf08f7a14506429d9103f21315f02dd0658af26d23cb8a67da350f1f59d6bb337eef4567ac9bccb42dd701c2a185070138cb2a66219cb3a989ea96241ad885cfc59f512ff50c5492951e77f543db0c913e9187f027cea78175e51dcc074d0c262b20b9b8bdac883cfd616effda86f6e09d0ea2c0abc584a58f6dea82c580cc4b042822b41cf6eea43fd80a5b9466534db79d0dab225bf2392761673b25261db9bf92e512d0aec4607f8baa3a987e9c26d8d964302d4320c413024383837374de3bb16a432cbeac95d54f0dda3a24f9ffe98d6612162f6f82ddaa3564362b0421376c083997e2493968397d4eecc17ba97bacef915952a9812b57a077d1f13cad158cabbedd6080ca39709927ed37742ffac1f392908020b54b6c24c2e01f5d267c2e4a8ca55c062c0a91c9f3fcb18ba1d3e2daa78665874f71b28d2312cc74bbb78006cc650e064a48b04140ee83f96b5201b55a97eb6d78310d75d52e580b64211da74e28a20b2fc87a84b0f84844f934551011daaa23a80aa1b27fa4744cbc7785186530b15b26d4ddf0e825aedbba80b3235fc360f3a1900a0dff887afe9a9aa296fe634145f9c634161533f9c62566b8e7d708abfda0e5876c44672648834200ddf45db784674bc87707b59b0c5e64d6c0318b51bcbbc4cd5ac5ee28b806509c4a51f479c504f97e8ab2dc6a34af800cb9186f77cee5b02014c322516dee678c14934736b2989559745e5b543e74e4fff191a833f3fadfe65d84918f3fd14576d6ce8266cbbc4562a54b10638bb501e8fa66d9d09d3ebcce35ba8f11c486d84667bc54e871a91d6a458e5415364a1017e7a3b301705c42c8765651833d13ad568e877d2a46a920ad2e91d8d224f34217f5bf2f72df551c6f9b03c6e8d32ce1c18b5bd08268564f4ac3c89656f1a39629f37957a793e903c361d0f46f67541bd129f32a4ad85831a23e7830380cca0b7767a493738c8487e91f8ee23a439ba109391a86800d7bd41c7e3451a18e0ea8e1ed0ff3843267d8b99a0e5fa7ded7c272007686f064f02d4212fb3e55f10219344fc19161d62729a1a7ad501b42d6e9008678538847811b838c060b72f696d152e2dfd890ae4eb672b157b4ef250392971c9ca69a0b301200406082eeb86ee9c255654aae7aab63703226812e1615a2a5716d5055bb679b0167208fc00a8312701cb0662c72372de6842e62ed6cba105de297802d09fb505a469b4a9b872e3ab260e97522494f87029ded8a4946ba5fad5dfd24e59ec62ddbc5f8986d9e990cfe95fda617ca00dfdb35f4f74369819d294bbec0e941f37840ec1ef92bb93b858ac51e375b7e196043f05cb213b2dfbbeb66ce5bf9c7a572dba994e8b953a5aa807d0220d428d5e68a4e6e1ed6d8dd24028c5db7654dd8c992870bbd2f8222dd21f8f79d2fdc0b7cb1228a8dabbe97a123ab18ca5d1d4f157c871982974365ddda9d1ab2b3a0429c2cdce2862cee7750ed7dc591aa18f16370533e15a45014b625538ead970cc854df4aff8cf5962226ad472f12ad6878abd9c670a0da7794e2dbb48effc3cd3e7ce7c3bbe27498a8fb016ab74a89fe4d670adc3d5890247f961da75255382e8a3994b1c5899eb2789bdc82e0ac0f46c3d78ebb14d793081cb8e6d389457ceadf80e15e1384f0783c42ae9fbbeb38aae6f1036a2cf595ddfdd0cf58061070d654557e57f2c3c83168abcd18aaed188ec466305af1a0cc244c28f613d3ddd5a308ad7ee3cf77634c58ee8ef08894784919ca3f89f1e8b46931980a2578d1c9a27533d0a67bd679a89362b4e1cad0cfc5e761ef486fdf700bf91863e496b5694793f177c832c10b7a4a1235b89786eeac069d4c403fd1d6794c347f8c70259f82a1b03bb2d2ecb298e473bf460761ae4dc347d9e5af29e5c562adf9f4d6ee8ef596d44a1f8ed9f819a4bc085186264f5792f6be505c6a68fa08aac2423d32ed5b4b40188aaa960d578202b34a149e71815763c4e7ead42c965fa728946b8bb97f4b2aa453d8b5c15cd083ff528b39937d835544521d4290f48035f634de2b27f0a13d1ad9c3c1dfa8d8482b323d1aed93017a92095f03add1bc9da8ec4903f315e98c28e20a81935f9849d950c1c6e1918e6aa55e141bcc884e946ada992043d628ef2559f0595b470b62b0fb8dc6f497a5a513142111dd85ea94c4da1e5c25891a4bf61cc141ce789dd4ec6ef08ad87c9fa308850787c66720ea736939c41d179f1531c86d063c8eb76ed2779f88b1576ee9e8b85bf298665da6f7ed720257e56a6e180884515a2f58d894f5f66d9da10c1d0c16c81682b74d922aab51e8f29438755874080ad839924a12480fd01044dc0c40081155745645c11b54c524c003c7302a86563ae347260a306dadb43c704081e9ff343c19bb15c9e721d01ed2e942842dcc92580bd79d0537a4146db3004ec4c78f570b7bf370dbc47e6432004e083dcb1f4e0f8e5d424be212457eb16e79c1d729210138bd084a0d1809cffa0f0a641384c9503427a3ecf012806c94507a4e22f5f556ac241c7cc3fe45973ec7d2d274eff5b0835f3756a0da2df39c8ffb76fff8d1d1cd5f0a3395ae1b982a2e5ba337643398faf1494de5439f498a9a5e509c001a94212c7b0a0fb5edab5dc55cb9aa1c6cc428c1ad2a771c2515b376ff3678066ebcd12bf6c9fabbb08dcb46a846c36a2774aac6d6cdba4d8e1eb71f083ab68f8fa23b319f6b7dae41a58e625f73324e027d29209493aa243750c3eedffa79177deffcbf69d32bb1850fd697e9d2ae54de1f6e18395ee618febfd476e34b9d5239b5e5ddb174d348991ca426d444382bb29366a78d21ad94944bb950ecbb4f3684aef6aa638e6941469d905a690f67cf85e2fc4209274c5059dbe04ea9b42bb982b9042130b93f66fb35d2a0ccb73f8d2589eb83f5d6597281578daf6c4f0b70c6667407ae788f15dbd903b20d49336887bfd4cf9acc99517170e7fe71c0d528078889335cdb9eb36e7c1b78c445f971ac6537612b9db955e5fa98e86a06bf745db98990c095cece0b87b94ea376c6daea35f8879c0107d2a3245277a5779f16ef081d7b57a9f3e5d374dcbfaf6c1866105a05807cb3c662329d4602f26bda0b17ffb8642cfe15b16fae661565998941a067bbba81e3215f7a19d0f7e51dbeac49319a884563fab56da08883ff41b60181aeda8fd1995bca600328da8ebff683f45e7a34b3872f3f99a28363545a01acc2260af71070210c4ebb0dce2a702703612d9a645e6c6ad238ffec92bf8c520f85b6c374d755e29409e10d1ce8580134dc7071405641839741dd3d9f12a14fea25f44d7dc915d29ca3cb0d86c3109b208b82c3d03a0cbcc794efa9447baa2a095699f8e0006b8875a50a871621f51626601b8e557fb5183f1a1e4c83b1e3ae0ebe3d552051eec2349b88ab3774893b57c01ab0c201368c1141694c5538496bf96d6cb64055e0232704b8fedee6dfdc758e0161d191689a0bcaaa3a97009876617f29cf59369854d17f41c50ddb8a8c939c0f3e23a4fefde230eed8808c482d4f1c128680e9af6ab687ae2dba504972cdd97d6fa185034558e268b118ad1cc0cc73d93340b78b6add3a88e4a659cbbf90bdee6fafac8de83bce92c388b211a0a573a0731bc027d53b2d1be18a8b5d62250ce110976917850da2cf8b9867c33a12d330072bf1a04123a49fba8a012d7c88341e0980ae2402d5d7457816a44435da4231a29894d1de5ab341651051b63e3b11e249b5f76e2a6b073a7bd7df2333fb60e990172d02fe0e49457c0ee80dadb81aec7bc10d24eec72c0e78d61152754141b13c6f27fd88c128434ae69c56cf96618899155655cdde230215334a7143ed49aff93f2555db0a94223194c3d1c4691489e41d23878eea574072d63ee081b0404c414aca9ebb4095d5a98b234d5cd9a2f63d09be10d4a5491574e76e4f637593193f85e88b053c8104e0579a73c5a329d00e1efae9257286218512bea06786e21fc00e5d71e4c1edad92e12e52b54db596f947c4c6604c70eb4a0d2cedbf732feafec957731be7f5358f7bc45ed3c841763cf563d69ba2c641267bebc38763b174e376b9bf6e210c98cda6014795b63ef2189ad4b954428f51505e300beb5bda029b69f9027a4ebb1e6c3bc7ca6c093cd764f69c09814b718aade2ad93b7a42fc3f9b69ef621eb84e6415843a5efa028a6db0ae3de2152860e254b3ccf3f4051d00a64e7f9eb770660e9c64775d3f386d6bb563b8b4ff016a4f70c08e1b4b1fa0bb01fe4b1a02bee0d4283faf04ff864318bafdffbad21d2f07f52e18a15d423abf9540856ffdc9917824f2d2c745e051a97259c4f4f945330a84eedb067ba54e1be6758f9835717c73f85256ffe2d03ddc68a6eef28525519e0a23fca3ef68629345526f2bc2806bc526d9b9e248ba8404e1d497959a01d126e039a0e226ebce518ea18e752dd02731b519d3ff87964fc4415aaa8142e5845d5624d9b5d5e4caf743e1c659b4b3c732a3a27019589188158d817cad95e9cdea0ac3d0b404837385f205a01d78037c768dd2ada60b5a9b01902b05fc22091ce96410f6441ea15ca114b0ec4d50d430d39867962365e14754396eaf4b0cb0a740a3cc8d1b04be76c63f74158105bd39f2279ad7c5445daa371d9aa1108cd37796453ab8a753e2de00be4c435568101a9640009c5c1c1336dbc4567d779664ac7b5a578164f62d788788a97602b6f2acf1bda9b7ef6057c6854f2e475cb702bc897694f20c006ca3d0e847e48ae78b12fc7eac1bca8b611df5a9d78482d24d9a34d9daf3b05fc5541b0fc654372b3c1a8af82b03f661f73a719e5e6f21df169ee8e3a7ba8332c5b45de550ce88a45ce962f82f3852b24256e133da3b29e30b9ac3b5531c665be5b632bb5758bfed22a32c504b6f7af0b19cc904234e8c5511523a1664a03e67408b48b065a51bb50716048031151b6f76e1ffdd7d9cf6166752d3034a4e52c5346d8aed9e740b70cc44144a11f60f45fca192a1c64e118701635f92ccd6c8e45c1aad46d70b0090104188a4bb5b60142edd2ac17d4503712c7b9ef9e85de9136546173a9addd32a69732da09a26dc5a244594fadfe66c452c02199c3b8e2c475d50f3e445c70b2de9576765578ef106381e953e6b4888d2ac4a82374f813df221cd0ee0c16b9fa6ef136446a601bf5236c2cf7ccca1c1ced96f3494b13fe4c00af4c493268f8974987dd9fe8c0b6ce3da3008e04aa228b2670b1a105a397926c02cdf9fed984b58aa529e96b45a2b3a688b5087451b75803c263a72f59ec1645115522cb443258b704c990c107c2040f0607c3644dc3ea9369662725287e622617a01f16c9a4ca3e0ebe55831c50f02d57490a62f0f6e94169c9ed68fa1e7dbd028080213d763a8b99f7ecee8a13f7a5fe16724712d4e2e372248903d39341f24362e4524f2654d9897b5091c51fd2bd3d5a89ae2d5b9b24f39f6a2d89996b36f7101bf90c912ff96510637ddb288c78b49e5a8db12d269e686409373fad7607bb5c92550cafa4f611e679d47357f9463de0dc36d5e2c91f5d289e6920266ad9a253663a3fc9ef1d81cd5e4f74b317e57f05867730ed9663ff1a5a6da9ad6afb36ef6dd07b7acd5284f5d47821607827ab13b115e540419593e298188b2d27ae74c682ac3351a0b611262ef33a6ca4d57d7f97121249b5826c06abeb9b4e15278fc298bc308f52e16f91e927b423bde1dd4e68bac12e55990e84230f2068489cd81c7beb995521a9639bc310cd39a55fcc9840fc119c5cf52113dd61f7b16fd36196fbd3cd330d0f21bcddb57c978a64a31ca5c90956321e494104e7733c287bd3c737281f0773c1a17d5421b82dcba5c6bdfe578b6619b16a747a8234c1f6a6abed6498e160a787d395edc982846b9656c8a96c1936892e63b51e8e3933d57c54bb588a1ddb361c569bd69cffbf321b8bb4a650f96415036593109dfb464975454806eeb622698e77da663a8d9e8a2ad15329e708e870865510a4c9c5c09a4579bbf469cbdf8c0efa00ff9fadd905d75a245511ed4dcb6adea4d01440c740074f0a00ab478ab66addc8f9296407ba47ad450ed26138552c75a88475e11ed55b6bb4d37eb0877da8666c7e70757939da91d1735799dda3f7e2991db35927a10404a90eca191bd35100d942a6cf73712274ecdff061d0136b1d245cb08375ec66439a3de42b5f0fa7a98f10c81fd8bc9ec9c795b682f79a89d87c477a512616ddf84eafa6e8701c54928d09bf6d0a125ccf7a1a1510f82b4b60d7c8778acac85de81698d7f80b0dad12648165fa97983530d6b1f447d0b675869d3067443796d0ab5fda88c75db399d3bac688d25adcec26074ff3fac2b20ab41e0d9ed0e3d59235879d943e7ff95eed48f7f7a2ff23a63c3638c6d59177a7341061aaa7f5e9a9f49a240b622d142d3a24548b3d576fcaf7bccce2eaf49f3e71ac0bc26603fba894bb1b24d0f28a963ddc4a55a51d145490af4bea35846d5033ba3f751fc597e610d63b6b49e0b60a974c48824a043e61a74a0025cdcf551558611bf75d734f995905d946c53ac015c5df223a56108251b7b2dcffb6094fe8c3c67c98a616623ebd34ca5008587b9c672c79ec066085c52e36366ef9d3d5916a11c59dffba6d9b9c85deafe69e6d060e4538521ebf1c8d3628d5b74e653117127dc48d0a260ce8302c8b11c2b201fcac1ff98ba24643fa036a68a4f227efb5382632bb42e57642dc1a7590de3bcec966223dcd6e57a00b804c9de8629eb7f398de6b36950cfdec6fd2a3307dc8cf3398981e71e1e13cec5e5d0ae131ec44da0027e7fb0e9173b445b16bd902ffe8b71cd9f8bbbc233475efb1a97807a4a99d58ed79a2c4514fb04c707a4a1c55fd6f163da1d289206ab68d5a5799c88ff2e36b37e40fe94e12b82da62d9994410f3e2b2406deb24853a33183a12e3b9c58291132b900c5a359b25ca82ef0730e8f946a434759b390b3da7c5caa8cee1d93289dadab54f60c505b2dac39ebe4de97a63c7d730ef0e154fca092872698aebc171c986812aa34c4f486c101745168071c7f302de3a37f8a9fef970e6380af648f810d6cd0cbf042ab62452a6de29e8d9c4130083373876e46361af343dea886dd3efdfbe11d767fe2e3ba23934802b77b438b0cbe336e2fff8e1883f7c528896e99b1c625f5f235fbf349e411e99796ea95d6f53dc0b6abc10a0c94cf59c4106173c5b002b8a91de316eae10d274ef1592db22f4142caa0539e118775708cba6dc6f22e208f3cfb04ab521680de90a8491fd0a47f3cfd9080c7796a0a877bd34bd0b344012e8562a002e01eaca4f2ea5a137a6c1b2ac4d7999994637efbc03ed4dddfcbe9a07e9b622d310ee5581e726c65ee32a7624e01be378b55a6a2f7c1b2fd860ec36e71ae2f802fe12fa9cbd92563da89caee4d43c2f794bea14174c34e554375155d1026013a7b3b47affdceeab715f487e0692ca6c333f5cdd31f419b472f1c0502261c397d9e8e908b03e7d80f8fb892045217e07830206c1a91f0c421eb9d7dcf5d86873052e2d9861691225c1ffede004047c2dfacde3d612362841d5c60436ea03f579aa6819e43322d1693f8e382595a5facde601164bedf698495a8748d35b9fa91c723056acb447f92006212e9eeee6a0365eb300c256df688c52d591a62001bde7e858d55ba9db0a44e58941100e4db66fea9e4340a92ff4416b3230fba319ed02c4c30a2476c2a476364269faa75f1760a0be1aa88bd63907ec75e94b50bcd1e8910d0b1c56936b769d53fb96e19fb587408121fdc733d72e4a246046c1474e5e4337f13f2a7d5eb2e9610bbf5c47a52c7e110af032f46e388e3efe1251a6b97946760c7d7d12e6f366bdb338e989dc70ca9f47f4e32282a9a141f70c490d0d0dcbe521fb088b5a87405d3414ad4509d09ce0548ca94e8d2a5d5ca377e35574bd25a07687ac3a558392892d5b839c290ef956f26a9d62363d419b66e5652f3da6ecd70f38a7a664a9690cbeb12f8fec4f74dc931ae57cab945e9ea6acc7209085e89ca705db8cf1e7cb39be3058ce08219f02b80c74da06a7317e04024fae61280009853655622856dc48df5249d384e16ab28ed40ac9b5293a7020dc852d72daea4c19b7fae9f9236ef173e89a3b6c1f42bb86248a6c1e1bccd57d2dc2b8eced351f58f3de162f62906f77468507d3040273f558b57ace6d2994d385579252387217d8009153361f4bceef5a28fd7c6d007380cdaff0c6de82b239c304a39edde85648f27a8e74a72718878d54ce9890ddde6d03f0776b8502b389076a86063cbf2da3d3ef57c7cb12314c33fa1a0d27136ad8f4abe4e8d5722d36d3d73f1cadcec0502829e1bf4f98ce9af07e42382cd92e2e5c6394f71a15219aaf6747b180c450c87a19e0ef77a1192aa2f920cc95c361ac732ff61cf736efa3d3b7c1e2bf37684727ef1a7e8e2858a889fa2fde6ba233b49a755264d99f8cba2e8b8a7dd2fe6655ec873259b0732ffbbb0f0981e12c40a9cf79bd94795564e2ab3aa7a8cae0b0d87e4584651494d1862ece19de96530d445cb029429af6adf5017ab3a844d284f742b7b3314b2288f8f2f925eaedb3cb22d38b8b7236a00907e0a26aa3778007c27a91e90ca802756401b87ae54144656b41df241a8732f78c60cb047972a619210dc7f5c06e89e9436ab9a04ca8bff0308f5bc5b01c7bda4417ab67e1f12305549661deac2ad65bc4d21df7430cc3c6e8aed6c24892a5f0a9759048f770f106dbc5135826c10d479710eebb7fcd7ecb63e7cacb906c95f52a9540f70945b1a8576c672d8dccfa34d06c73923ccc60363ca539258d38a0cc6c924892201f9062f1454231fea51ec37bf1b90499ef2d5109be01d70f0b4383f7dbc6b51b393fb28505163ad6131dede18eab8e6fd8fc3c5c4042b1d1f4257abad1c9648760647b090c81a24c764ceeb623d70cad6323ed69c1ec810539513716697fa131e3119918cb9d1fe37cbaa7649f0061538243616c67dfd4d7d2ea972bbe59de790287997a9faaae96bb3d7e936e70344b587ea514788f52dade74b03493677f9e4e50d458b1152700ac4048a49be33b3455c7587dc329cab54528b9c941d8bc7be6354f859ca8707c34d9522b512052752080d7ac477d9b4ee065977be7a1d8110d6556e9142e10a50460ac88124b08fb6f382ec3ced8535ad45989241fe513da6134e44c2ce48c4997b398344692e2977a4d2a470bd96f5e53b60c64b53bbe2bd726ad195aa17b7b677b2c373081eecfecb3aa21801d6e44d01290b59d2ba72d816266278155750c5859f7fea6bc2e59fd7aa308811a57509b0f02e4ae280ec0e53140cbf36ebab79ead08b520e6e941792668517479404659bb8bb5f63bf8d79e3f370dbafe496007e719c93e60822d3ef93d598e8c10d8ac0f671085fef838df030dc58b5851b011d99f6329d6aa848c237e4a8c36c39a57341a700f3ee45db1f02fe7f1dfcf3e32c36c3eb2dc17babfb4e89ed2c59302489bc7332d613b6150c75038a6413258d9591f42af30d833600e3b8bbf58eb8bb9afa7322e5d6bad1d792b0cdde8e772b0bfb5d2792900762f69bdaa7bd5ce7350b7424f78357482f1ddaef00045bf95f586cf2cff7a5ada2f28ec83d72adca290ffee4cb74644a792276b7c9eb6d280e49a3b0404049cd215f68fccce835ceddb9b10c76ddd7007ddd86664fb051adff6f7185eff09b6ada2eaa115c2aef53381e57c38905c02ce78d95ffd8c0aa7557e05265eab9fd12fd710c4583e7fa05c7632dc52a4bf056bd6cbaa09ab258e10147eb9f72e8c49429d59f857e0f44fb026f9e18b363772cb74b57345e668ba363250dd97ffe1f6c6b824e633f33eb6c5830fe4867d9ecce2517b3e947b933c9f1a9a33689c54790c499cf071caa48416aa71b141f253e121b66bc535a819ace9e7455c85ff3e81c713cd15f639f9e7bc9f3b21eb8fc0c707b7bd1dadee037969890f84dc77a1b9893589b32299dfaf1c257fc4b8b37c1cdeeb7b0368a558a8dab41b02515fcb1611c095a138aee518eb99aff70ad9ce82da83773a77643b77bf4c522a8f7d4f219787955dbaf372dfa57ffbc3b6ddb0e252158631a4f64a708083e90d53dcb4382c8861b5bb2b0acb89616900edf603de99155cc0f5c774eaf64ba38cd18aa7bddb9791a164f29389bddfe47b5e272a18a1fad6c816f77ba3ac196f2388c7e7645170fba21515567d2446038b4101e8abe4793e7c42d7f8dfea0c3d372aa4db180b8c61d0a8728028908dc4a7a8f27f3f8207ad48c46d797f7ee1c8fd1a8161f8bf83bc9b700146721e0c1428fad2c8a1a06498ca8726809edb0424c6ff074f7a6842eaa11aa11c3932b9b80c394c5dbe4290ed5f149eccbb43b883953ebc9bcc15797147b8c69e38693756fd721a8a54911fc0f2b147ac341eceb0f380b3d142cb0923c27c978ad57780c78ea9315aac5f9284b045b35ed634c6bb71198e927eecff09750f74dcdf9fc79842e4d069884ea2985192ac471edbbc3812afa520a8929dac58d7f2f5441ba20a64791ee15a3444a41f7ac44dc9cb85b2edcaed18c51922c0a2d8f7449dfd04128e731339d316bb5f938b471c773856d2867dcd9254b14d0cb92dfbec4c0f04e0c447934f8fc7c6bbcd369d00a78ff4330a600daf46ce0789619d948d76c187b9f5ca18f2f4421508211ad467f657149cf10208bc42ef0d8d958a3961d15a32db1a81a1bfa8b13c607c5685ec01a022e62fa190dd36b3b59853071771374865c88ed5fe889ff4aeae0667c0426a8c9890b440857d099222cbb89116eb088e7d780307390a2257c1d4b53aaf54ba9df17c73afdf20d1dd4751ff0e6470947254460762604626a6700b166e1746e5eaae611533e8aa8d9c62112d6ebf6f79c2591639cfe812307c39654b666f1ce6857e183d0575689de1e91f31a68920172476a8d8331b49b7a98e8b96838211ce00201c441d7de97bbcd304012d9ac5822133a0d44884545b5a9cfd31d7e01dd87123b0843a343b1aa836458eba3b3f288d33e8c0ef75246d88e5a0e8df56f30a46c29db6414ea263010c3b8622ed8604da2bb8b903fb55c6d602420991491983e5f193ed64a6b14b474057e314b3a2ae6083abc14a3781a3a0660015b1ab740eed952bedc4f3fd7a615b75ceadf27020f6ac947496a8bc0d32885ec978174497e5a46caf8707ca264867fb12d81851ebe36670c9cef223444c19149fb5737f3402760e37fb881867ce0c9032635816910452d772f23d6e8528b76917618a6dfea6a889fc59dc1b55bea886e19e924725e3c0283224a5c413917ea909f12c6c305760c28dae7272e77bca5ff943ac103c1bbd59a2b1d4a49ad1034f10613756aefe0c1ebf7648203e778bb619ea24269b5bb3924b12470cceea1be93992ddb32305d9a27837116a9d5eb911d2deacc1df88ce2e1e890be7dc9888a1b3afecaf738782ab6bbb35c2c65772f8384446a4689f343f3240ddb1db1c00a4c8278e626d96c39e1e955a3f8e8bf36209a105e01ec3f33e98a53f4347e30f1c3ed78ac1f8dbd27fa8d62a264a5947e8416c23222c6a5e5011cb27cd61161da1f0707578e138dc8fd0df5d9d4780f122f5135ff4e6dafecd34ac000c01359a0e5053564e6c16fc0446179d3160b67e69366c0783d40fa9dfa63378316c4ba76bf9924a4a3c123398731d4a8eea0b6ce50309a328121a3d0c6d11748f3227f0b5a580eb140387f240ef82db451d753bf2a7276a1f2e54ce07f6365584980179396094c105ba2c40a451f889f228ba031552c1b67a16f003981557625dcdae002851987a3d73e07fab3a0b1890d242e6b63a6484c7dd20a21932cbfd53101693b8af17a3811d4f80db23dde395a6470c1fec5b021c9db540755476569d6302b9a083c3ae7364c42333bf2de1099c24aa8eddf20334b439af0bac6687e092a5f6447f34b5897acb94bdb45de5b45be16e127c2302cc39fc36720daf721b99acccaeb5cd52f8d204b4164fe8785efcac65f69169bcc4b99bd38194fe216f61a9f35b860522254b05bcdc22c3c794ddc3f2b0b1539ce50643aeac4ec5bc1cf7ae27310ec349595c5eccb1938893489c1b1c9dc5092e84fbe24bd1ebe7550f8b3f247e77aa50d1e72fb7a3986cc1a4fa3dba6bf893e66f2603483a62b30a46f20aabd13f0383309ca6d84cac7259a5cf99cffe0c8785273dcac18a2f7bb91524612aa10cb39cc6e728c8aaf2446ca32630634cf2aa618938e4465333073c0cb649e9716751b93605c07f468060a85610db33553dfd9bb6bd787f9d9b8d3d3ffb6c8fa04fd438437564098d13b875bd0ac5aa280c76b9fbe7d73ac050b8dd758b1c64cb6bdc7ba5684617e97a602e10e4e41956586fb3483a6c08b40d886bc92f77e1762a02f944a213c4024f17a53412f7958618fdd51f8fa9e05ea5bda10d0695583effde3ce4a1f5eee32f4f3680a2d0d527ca95a0997bc1625629e6a1583797b90e703ea8cc9e9b225b43b287b7c886cff8f10f5d5ca1fc041680d0bf16f4db9503fc5b0bc8a65ada55d10496061bd61e15aa4af9108b038b00d1ef14356c81afe63b91bb5dce5b4858c9418640c79d749f0c1fe417a12bab32855711ba8385479920248cc8c5084474ceef049a247e72d7dcac900df396b5a3962faca691e54b61a2e36652f97b0120a12c2c2d8a04827c1c6f78026f79ee961bd30535588b347fb04296f6e58df67307466a4c367b6f723094bf28137ab28ad65e71e27be30483f8017bd80b5f9a6025a92cdcd52f5e16b49a2598147e46f7be6f863dca1574f0e6c6d1dea1da358c158c10e049d56bb7a17faa75e232d388e385c913b9e8e4be06efebcb3da429b700a643c49b84976bdb77d3c6f9bf3cf9da193c3fc33d494535aa0ca1431770cbc7c749ece4ef33806eafe58eff780b261dfe9b19e688df4309045a3df0e48e39e50f2b9420b5e7c7858b83131bdd4684fc14bdcaa2bb74f4ca9bcca425477cb6156dcb5e6b580c0a1db4eb91519a81a722aa0201654450dc430376406e1d8402bbb381fd24ad57b3fddc5c768c1f28ed2885c8360ba6ccbfc1af9a45555b28c32259693c89ec95c5da2cd7689e051f99d5a31b3aa603858437ff7e6feed452158da33c97fc88ce470afcb2292937180e794cb54a78e702175743460fbfb0206ba6a5316e8337e48f8feeec63af503743f61aad110348877c9115ae5bd2da5d079ebbb6f2e090185efd3f7da47cad0469d05234ec531f3e88d74e44ab5c961c9c0f113fc6309975061cbd2d38ab9349ae03e2a2c01e11bac61d52613b380b5b6476dee0c30f64190ce90d4a02fe3cd15353cc33212e5c43c3776f2fffa04bac6df384311f746070b07b442106c7d152a1a4354b44afe18446f97fbfa747569ec7d93051e3e36c85bebf89cd0ab1c0ab57691c4f3814b5d1bed0a1e7797893ce9b9581760704aefa11005af8c47f7d0724b09c7237064d63ee2d6a9aaf6f40d315c39af646d5bc503998c03161b919afdf8aa4fd4d04ba46516fcdbe1703d5ebdc0a7b4741f4781751e749221ba203b6592c1384ab91553011dd5f500d528205c105dd171e7720abf9b54a984720970d46ba132f1d015951b36b9d0440cbebc65d523685958352903b48b0e6ce90e89011694c0e27df69b484b02e9a60c015a7c3b153adac4767925f4d08074ce8dd57bd905481d8f3ebf8fe6dcef4795097c5a01806209f037591eae20b56f6d192ea01f6d43ee33148324279d754d4e5aa942d530728122ff3d6cbf883e1922211eaf8cdc6eb50432824806f5883ecf3524a8a90a9a1aa72927b4901c5da7c252d40343beec58b527309e5c6d9b5b2de93aa8f03ccd1d8629ab9333074b1e38bfe51b05b4546baf8fe52738c2a18c4ff591ddf6b4620c5a58bbc37fc99ca35219703820c8ce3c881b8008bcada26bb1ae9fe15e6daf8230e0698487d13fd5e7e25d0ddc40256071acc81ba4d083dd1572d47f43e2e31dc4d09bc181aa2b3d5a19c1243c69e54100e425dfb52fd9a92f6f9c800dd9aab4827d543d479781d1680a434924dc724a740cc26065eb8de719a399086d3a40aba65adaa49432d40bb4307b34ca2fde9710f2a14f96302f47d7b4bfb872ee6cbda81d5d7ed7556bd189b2b2c785dbb17a71e1ff828854d5941b00d78cda6dcfb9cc85217686b78b1c9981e3ff29cdf9788c0d8a76ff62d2e04d34339c6630b08496f57c447d575a35aa42adc26a580b9f57044be466d73a42c3e7af2267d53cd08a8d064d6d1411096ceacb440f25c7d6aa2e9ea039c5f788cc535472f40c15292c1848af7e033252eebb0427f2479e574aa596f353fd399b56de310a88fd0d7344c637c309e47529ff0b6fe7e21c07b4855c4d2a2de88f78ee0ec0ea103f32aacae67d80263a9010827cc792ca327af69fa6c0edb76bb02556066042e22278942c96fc34e81fdf526338f6ad85c2c1515f44b23f3cf6e06f18c024a712214aaa560ca6e099dfdff0948008d4b83ff48713ff2fc7b2cbaa66800de8efb5c2075478822280928b0142d9bf557c3d7e57f1190ba62a12ad181638b65cc48ec26816f7f78db43b7f10aaac7623d76122b81f9ad4ce7105da3b35c7929b2d7ef32436ad6e46099812a42d06f37fd6f061bb14cd9f83faa55d844d5dcd309148ec79552197a0eb7e38a50706309c42ff0b7aa8e964b567d1d62acd28cc496c4477d1cfc016b17e6543f0e929f67c02394cbb02eb20004ab0c981ccdff616441f105f8ff82a0cfeb1878874645f4c18cf44b93ef93151e21337e280a59ca70574135e9d9541cb7572d1fc4ba7a0ea561a70cf5b7a13709f3797f798fc27c6bf238e3febd70ef1203b6b8c01e2964fb08de57f6fd4f1e7f33f9f66cc27fb2d362422a58dad0bd099cecdc9ddaffbf0c61fd3a344fb0a2dc3794d64bc619e03d7e77ab873e48445e969f450991a8f7c2fc7784007806d822b0baa01b98762086f40b01eae5081f1ce42b9a8a437798dd93b6d335e9b01f8c38b7ccfdd23089ea90b7f14c7a7129ee4292c965c0650ac788e728800b5b6a678175c067e74437e3848e156653016f284280a16f7a89151dcb4269080306c44c498781cc44f1d09277c0e7eeb18203ad107ed0308d1e4ca8d8ee2a023c4a03da783a805b3014964d07968f1d24dd7626f7a9fca705991d2a587f4323c9a04ddacd6bfe82285d458bd2e3d2bcd15e0b10e405c0b83d1a6f0c983e83a0fee1b1940e627bb18ba57baf746e9e1d7b310c739929f15b48db72ef2da59452262903d8073b08130841ba2ec8af10a16357514b15c5847a72a4c355885ada363675e993565baba49f92fbf97e3170b62ab80ab8c818631d108174297d622e295c4876b8da31e6fa91524a8f2db1b4431a73e9c45c385bb5804da7a03de7f6233765751bf413bf06adce341b345b28fb442400ca6b6f7f2c2cd2d8d73eca7011d4fe07e5b339882ced35eb83adbd6691b6f6f30b55b6f6fe5922cf164518ed557c34fef0656b5fb7883417d0558bd8437b8bc45b392bd85efbca345bb667b28c106952b08b107bd897acb348a35ffb9a146950b32ecd387bb6a605d166341e2f313295f2546aa6523495aaa9944da56e2a8553a953ceaffdbbd4944da552a9aeeb6ee2135a65083dadddec8737afd66dbbd6da2f46181e3a364102d1e65486d0f95158dbb8dc9d2e4a3b9dbe08c3a13c1a61ec773db3b59aac977deda6606b29567f914b754150b2ec1090a2a239860c9b556e5e75a8544a9ed9daab0ca1b33d7250eb3a2b73d02239a859a2adbd3d9259246b45ecf1125bd05e3bbdf6b6e8ad110b5bfbd0f640938121821a8ae6506f7fa505b18fb5b7cfe1202ec30018b4d7b4e72a7defbbe18223878ef7be1b2e3872e878efbbe18223870e3abdef860b8e1c3a40efbbe18223870ed0fb6eb8e0c8a10344d1525f0d118615b586d29ed33ea5bbb1753659da63acb5566761ccae8934dc6b9ac6b29cfdba2037b274c98e23cf1c99eac815cc96956f77c21d4a688123db3ef7e1cceebefb3a9b3131e0ffecea6c6bbf7532e02fb48c6e064ec3d7563a374e3b711f8a171377d8df3c4b3b192ccb47d7bfdc0b2b42e6ee7eeeeefbc2227bfb56b8efbef6dd60679ac7f480d287c14601b8a8fdbdf76be69dd3fe29eb2734fdd3a9bbcfa528a54691267f9d484cd72bd27833c92e329b41ab69456ca57cddb1a716bb4ea55d533e67badc5397c95a87dcdd8b7c08e35797b994abcb9cee32873a329221cdbc68c8dd8d50ae75f9d47511746424439ae5a2229da2a2a2cdd97c2bae5a955b74494f5c95308c25d08783387cb9b8040bf9b834d9654ebbbacca1349f2e7327a32e73f2b4692f97f6e3d25e5808070d29e5e026cd872809ae9e245a974f3d2ea375193719695d26924249e831d2badc65aebbb94f0805e12542414e9e08090911e9278e224cdc74b6ae0341b6f4377f5ccadc0f8808bb3eee6ee64b0a651c9c55bf08f952d9e14cf7abb5d6156abb0a129ac9876ab4d8e8827c17c4eb827c5d901b5d10972e880a08f4fcd95446be5f680a6258a48938441ae9440a4d1f3b8c4b4b71c965877189655720b6241422ab7e75244b7c28f1984929739146928929c2e02ff4ca7db95780d87d3f1cb4517ce83ae7b8e2218cf1a9cb4346db6b7868081b1115cd5e3f409a4b7b11752174d485d1cddacb65fc2fd7c91074351d0d89b6b3e9b0030e3c1b77f80966c2f85e4cf404d05017332020a025583205ed7a3fd7894b38cc9ff99aaff99aaf9d5f436da7af18e70e7b9ac665aef32490398ed35eba203059b290bd853c6332dd91ab0bd976080040be17752a3223fe42af1e6b38f1725a0ed6e27ccda0fb9a4bb01397711cf092ccc199f31cc98424cbae54b98b959c55ebfb508ea64374c29b6627ec071bcdec5a57305f48bbbe3739d3a6c98b95562e76226f9cf83cf1baf73ef17ac1ee90becfa578a9d75eca733ae5adb0c21ec2d5ff9af2864c56fd142fc8645526f47c459adf95b567d06ce9af295f90a9bd9ac9aaf817b0eb43a1f5a7bcfe940f57fbf5dab5a90b02939d853c5bc83426d71dd9ba906f969872a153bc099bacfada9b41f69b2f07eb4f973131d5afb7890aa1b7caa40d9e2fa4d96afecccc20233a974ca27994396b9532673367a9afde059caf59430d675798065a82a4e1c85429287a12f9349a4732a5ca4c4c4d1387a97ec54343bb7eadd868d757daf52b0e9223f42831edfa38e8b0c306240e3672993924248d7cccd4fc0852875856ef023ee193b5108a04d9133e1863fc848f4f12cd06146ce3571942fb7334d2d0dfa2e47838249c0e8784dbe1601c8c4b5a9a4cdc9399b7250737270e626aefce3859a7bb892a43681b63b460b6767bedd2ba1736a36ea973b26d1fbb4e69eb94b89e70666f8f2a426f5f334f3067619d3c9b2cfc186bbd5afdc7f0703e1b7f17146926a7699aa671b333da7cb03dfe0d8bd883d3912dc8b80f64b1f1f6e1f6838d7f3bea74e886b1bb365ec92a43e8fa34862042e7406b68a491b179d5c8c15aa4237bc8b0830f6cfc82b6b7ef7f2362c9db8a568d8ac07a1461f0b67d9528c2e0af4491867b4d6badb5d65a6badb5d63acff22ccff22ccf405b5d5a6cbcf7dd70c1d162e3bdef860b0e9a936c9ed93c931dd5a38ddfbe76d5a26ae420fea5a521373170431c541942fb4a54892a5125aa44941e713b9146e77afdde792fbdb7de6befbd95daa8f56bf56afd6abd51ab4bad386acd516b8ddb8f7a5f3e6d0ee58a28172a498c4747493325274b12e53af59c7a502e5412d4ab43aaf911c3901a6c9000059c246dfc4580367e2393865cd3c6b6f2f4e49e9c9495f2cc8b9f8d3f2f25cd949c2c698d93d20b9ca5a5a5cdbde42c229823fef82b0c6dcc2155a24ae4207e1ca2d9ca489c9545c691b94cfe8168e36f41810ef3d0f6781b893230f36c3f67d8fe86f9651e07c1edf39220219799dee6645bda9e38887fdb7603d1f66ce5d70be740bfae472ecded6efa4329db9a48267b934ef6f6dbcb2962ab834d098b34297b7b19146950bfbd4cf256b77d79e7051ae5d5b866cb88b3f06cedc8c25fb7032c764764c5c6cf7d4d601b6f8ed5219d8e4e47ac23591d9165a2b190147ab563cc032f1af380114060b8f469a936210b22e8d0e0065ab5634c870575476704b60a1d63c7988e0f9549774db047ba53b232d02a5608810910826881123a65c758103e4d4120a943d078c758103945e86ec718104fa826d0283bc68028c22542d31d6340687193d0da8e312064401845ac8148c10e57423709ac311542d13062a57d465cb63b153d3380e8004a4506b255115a64c480490507346208c164d8a0a648b114838a8c02854c05db522e90a590204503c1507e2822a362d093fa2188ed34c592fe4246b704868ac999a572c658cf40e91483737870e278c4c4cc082975313937d832c63a0aa2288c740cb61f5428c17eb8c004dd8f1988e0f423082796b3537f00c998563fa4d8e1e2c70b5e42c03f96ccbe07dc1448a6e0d1787bac03449bdbfe6fe4acf803063267c51de21bac3b20b4792eaf338e58afc21772e90047f7b722c42b12a9b3ab4e84894f251357358ea87d439cac5933a3177d7b3918b7245ae8ecf82c5accb9ed4c567cbbf56c6741cd0f078f302144100a8a60023352b271392ada220828847812051baf5080403b820728a3d0ca83b0a92f3432b331fe42b9b134c2875a4511a2908ad92a8c6044358f47ccb3acf04aa8060894efd9fe2eab076938d9618c0db81521f25b1122a5bbfb1fd9be2224be7c19a317a394734e9752ca3fb2e55401c7b2853fa594cad0a7921e69162d28a594fe8e2c5a68f933ee28e50ebd82e3e29c32f739e5e4409da5e72c2b156aa5d20e16417d5049775a330b28add635ebce6c6975e70bb52b66a360b663e2459bcd355ba8d764f963acf5ea76405ad828d88c1cd42be4c09611a6bef340b5cd85f310fe476c9f14f5ba598508accdd73245bde29cd63e87bdc901ecc908435dde2f46184aadb61df5dafe289f9f8dd24fb4d2ba5377228c3f4b10b4fcb0ee4c152c17a1da81961f3f74777719a9bf6f0f43090e8c2db6944c40c210404f3a8004a3261b17028c5962b36cf933f26ba490fb8e5eecf934ce369e01466cfbcbd9ae71179257c79438afc43e96e8ba6393308cc0634993306456a6ef8e4dc2b0426b12860d3817f4eab91d9b8401831d82467408313333586fba39948bcb2f997841c1cd6c54f1400ab14d3f6b290c61d357c56ce8b3bc0bf81205a64d63c0d8ee6f8304bc1597e845b9820940ec1d4c7841ec490f9b3ecb93a14dafd8f4639a90840b9bc26ee80ca54ebc20869652c3804182ed8faaf4573bb1094048f240172f248ef861ce7c20c44f6c0540e8e20929a06a75c2e909b399eddf75378e956872226329e30fb29892238410f401206c200062a7490d624de400f61a42a72461091ed0b1fdb910684eb9c305112260c1911220f0004c0f9844e1451394f801c286d6166c9a1363ce1a44de92384d28dafe5838e1043ddcd8fe5b77e338ee4d45c04c706cfa9aeee10ba24d996cfa186b1fa47c42121f9bfec5f4b5bbe083938d9cad771a1965b149149cd8be032858b175133acc1b90cb046d4b7a364dc2a60913149bbeaa09143eb0e90de82fd971d3b7c15b1b90b3e4533a9ffe6a3e1147700981c809324872d9d08f992d032c71c1e3430f47457cc086fe8ccb54166c4a84c3834daf0dadf5093adc80f6945c6c7fea3231542f4849185102156c71841348285e4d32d6d121d2c84d3f2d031de639bfed4da62085ed79139ac1856d691fa563a16fec18f3610950e8cc854d8146fd80045adfe0eef800bb4a681b3bc67c280289fe1d633d7ca144b7ec18eba107d5073d63c7580f54dc20746ac7580f4eece8bb63ac87268ab4ca8eb11e84d8f26b09346ac7184ed3ae39d04c07c0d13c160f65450ce7b5b7a436283b365132da74c7184e921dae8496b8e812ce806d39e727b34fc97df540a491cf7d75e703b5082037f654bd228dfcfa2a2772f0ad4598fa218a89ba1369e6e720514cecfad36325a143fcfab6b7b9e932ce1d3b2037f68ded534a29650f154cb0e3cfeee6c89e9cf41cb30a111a63cbd1287bb06082fc9cb7f54498fad963f9e895ee0b8b6cee5784cc223bab5ef5721cf7e1baf5ececfadebd7063e7fa5bcf6f48644fe54484a95f3b203736f7a95e11a6be0c2868faea86e4b0a4ea9583e3ad67d7bf4666b6cb1ed9043b7edd893437f68d19300d0b18138ce9eeb8bb4b9fb12655a5eae452c0c12bab4c02deaa49cee2e1645f1eb2ea64cbf80bbd6d1514e88b7373ae4e052a4a6aaa5a134eba459787b5d65aae365d9cbae4f76b93c57199baefdb1cdb74ff5aebb3ef5f6b81f6fd6b83f6fd6b6d68ad52689bb6911dac92cb684e5ca62e3d6172994e069be432614db2d65a5b6d5191b5d6da1a46a124aed70fcc6524101f970979586badf5ee86ab4bf5098c890aa19bf38209c624a59430261813ce4f52558a34d64984394294b14988e07dab94b4ef47abe4e0fdd02aedfb35c44083552262957ec04388c6981d9418aba6d6353756298845020e58562eab6a8355b248f828fb2a7b018b3878df06073d09d4c063c65b36c4dc9d193f709143f9a4b388fd30cee20c0797a91bc879406c81b148a4e1b1bd85edfe2bc4d62a04400ccef2973afe433208f81213e3d196d2062273f52c380b7f828b2edc9c534a39e5872cf187484ae58c6134e79c73ce5982d99e4f24ca39e78c2f83c04517e9b1b61074c8d23284971897cdb9471da42b436a6da508d177018b68e1b0a1cf23c9a63f23b3a1319fa64d636c1a2381934de957e94d6cfa3aba931838db1f6fa7bea2abed9556efb4bb9d77cbe668a4d2e9a4f7341fb569e744a398be4e0b7d5f267bc8edfe12efb0babeba66eba29ea09898d0383ac7351297d13b9ae78bd8aaae885a8a3400d8aea49a20b6f0647955411d7296bfee99adfae32c7f07726dd7afedef55a8ba1c4c525f5de8b0166d7fd412ea098ac965e4761a1a5bde97f288beed822060eb82705d90dc054a2cd9f627ca75280c4561140885d2e17490f80e154a6ae2f94112b2dc8f0c546bc24938399cce9b0e122aa4c3711ce7511805a241da4c9a4d94c7da9f259ed9349366114e8ea669da57431445793be28cb4e6969a388ef394d49ff5396edab8a784bea41f33836262ba17ea8ec1f40748bdf4c7723bf20a23d0db0c9a2d39342497182151a11e1da4d993a4a963776aa532e85cd775a2b4f484c92525429a49bc63d32411278776ec8842888bb3453fdc61db21a7e764d780fa710725f30b71d8e980c4ec3967984f43006c58d8f28b9860da37f2674743006cea4baf6508fabe0edb3ee791fa29bcc0965ffde2648514d83fdf7aa17c6d7f61620743ed3dcea8757e2b42eab65f31176d38ebc927d2a5c44b3c4dd271ac74ed7b847dfd0b8dd8aa237176f070989fecb19f0e09b036f4f3fb2d41d0a1ec41d2838383452e63af953c91c6ed8e9438c258230ecac051c2271ac16187d9aab375024f9575dfc600847d91d8f7579149bee46b3557ab1d2e85f1b892bc54ba192cf7cec3dd689f10eb3a5c92ca286508052767c60e1b8834323205a979c91f09731e7fe2421234446464748434537222e453f4235b923484ce12edb128ae93ea6eba4f884cd2a825414243442724495caf1f5837048e37e1e4e4a219423f8a6a66cc0001525151d1e65af20a23d03fa7abc5fa4c32a7aba5654e99cb5c6973bd09c7ee40611d4f761dcea70d4a4489dc5d4d2e13cad7be46f408a932c9d7937defeb8aa254c95b74e9c97dcae43238272f7a3e7838ebfa4c325ff7c59544e727692a2db97f29cebe1f3a0fed813992cf809008f914fdc8928ab664caf6f3b79229cc6542d0a7c795e4953f18e8b62b9a4371a80e454277b413a5a527791e19f94fbb130341cebe3f7b5c66c90c9a4273c8a7b561b5191e366cc49028d92884ec9c368a28843657afc5f354431447ddd26c4d9bfb9269b6e8ce64dd28883840ffc481fa2822f59ba80f4f96fdd3477ba6ce4cdd5ff1195222f75675f9cb7fa28079ab86cd7d0f92edfbbec4c8e6c6785efb76fbc658088c5ce69312519c268ce49214b2a913c5be4f673dfb56a07de913faf7e70eed8911a18216f6a57a473ae1e22a20b77c1943c14e0c05ae23702e1523942646588a3551a22226c44eec0339d5052e0e063530c2d5841d222cb1450d585c21050e149ed00029941fce774ae94b2a25a594522ae9a7ec139df6e6e05e9859b4f8359ea5a723890ef1dec06c6937b357769fb2f4b48391baca4154d6d20bb7a3ad836f9654762f6fed1e47a5b72224945bdb7245e5607c906e8e66233334567b929ff472d8f6eff8b9e440b78c2c3d1d27d02a2a54c5bf6df3208f4cdfa498d441153965d09ff91863aa684a6541b1b4becb9ca9ab598e80634e5bd40ee68e728faa4285c94a45e76471306bdb7c9608137fd6fa54a334ce981dffcec9e1eda4a51069f936c61823cb8e586b7c531a6f4f68f9f67d075eed185353521146e357e5941bcc39e704276bc6d8e230be78b2685db99691a58c2fff6d506a24ca36a52eefa0a57ac72c290b1256a7156acf2f2cb25d98829b6103280e4eac4aec7c71304eea39adb4ce3fb2679d72e7307398d33b202ddf76a794b2ac329eb5e2ab699ec706acb6593beafe4dcf5d9e6207630e36f49f2f37ddb26b809eac9843ddf202732bc1c07d6dc78e08c5c121229d4814b2b91f9e2cb9a7911c53a2b375f0afc93d8772d71d1a89a18068ebe03bff912da58c99db3afbc9bd92c3b17cc1f205cb17338c780181a0a50d275afeb3741967e7e69c1166a35acd338c78015ddede9badca8a1863d4e89cf4c374cb2c3fd0f257734eea59c5828596afe59c2c322d3fc739e3e9141ed971b2e2eb9310a594524a29a5944e4a299d94523a29a574ce39294551fd4a0d1b20c8020f1778cc08a0471e40cd0d8f17e82c02003d5abe0bddcddda144cb8f19410d2a60ba9b4a5978e96ee80b39c8a9ded497ae06152af410d2a9c002b3c841a98e2c6e280ca08e1a1838971bdfd32c62a0751661a3a5c60a4b0c326808a0341090a9f7e25bd5849b210f917d7eb4f65b6ea83c7a08a58132c1c4aac61434644800a531230b154a575950054c5a831cf4a742d31dd6a0a00f81965f2b902c2a059205550011fa024d53dd0da528591009e9db4f691c3e4d7280c4122d266859a28589162428a594524a29a5b4524a69a594d24a6bad75454f3a860a4b8b0e8dc50200b2532a83638656225c5c5afe0d23b4fc2f8996ef19a102fdba1b3ae3a94ca1e7bf0d4e0041365e68ba1a2c2dd4a061a1f131e50e1fdc0a0d1e2b3e68046000b412b19a594da93200193162a80a50536504a9062cbd359b5259e97619505aa90c9b266c6e6ac040467733096000aaaa896100d5ae3fa6ee6eeaf74e684a0d9087f003e5470fe8e46e8670435f7c78214509454c34d1d2440b095a5c2d4ac826746442cb39a554125dc26dce396bad95deadd65ae79c1e81a93285ae4f29e5acb510b0d2a9c52a34348aea67acd4c8f1b9e478d99137dd1c007600a03543937d14c026efc82a4b34fe1f794583704c7783bf178196df42777359e86eecf727d0f26192d0f25feacb57a1bba973055677337f6495296e729cad934d05bb9bcaea6ab840c70c904e470e1c375c3e2038881c4010eec6e7d998dfb285e4385b9bcd7ca941356847cbb7b6a54665b9a92b420ea0c110e30c18720c39ced6b5b11e41baaffd7888214f1972c691a6bed08001586774373353a1e7eb6aa36dd1353ffaf6392b6607abee661e6006ba528921432543569942d31f92552e3355dd0dfd5e092dbfa6d489a287e448439e35a4d013d5ddccf9311d90df31a7ee66561d1ab8d32694a3286584965aa80531acd0f143bc658f4ce744b25ef8e09e40079c7346b88f020ed6b86350908e1f69e28e1f5bf2776a487ba1cc456c70b0765df71971b052207fa4f12dadb5359c748eeb3eb9e460954a0ed69ece23e2a0f46f888312c791f84e17838a2c2b71abd387baebbe107fb2c9c11aafde30537d9741b576dda7443f11aa3f39733973b022d9408752a9be7c329d784b7bda062597b999c9416e6983b7d140d3fcf3c399ddb92b897ce5e774d65eeafddb6ca07d895da7e3cc449ab8ab3f97ea3847c95cd77dd77d21f7feb98b9e9e9d6bdbcdf9b7cd431dd91cca738ceee6d4458f739e5684ecee0b79d8dd77d67efeee67ec679bbbaeebe8eeba9bce717e7c44b3f6bbb747b63ba5f453f1f09a49b4cac12a1f0718daaf75d78a87731d47123f9524beeb788ee744ad42e1406bbf525f3b48f1fb87bfec20a55f68644a29e46eacfd50a71e1ed9f27aa1f4aff41dbb287d8ed24be9bd975afa0105edf8281c68f9403bbe0472b06e7fff4209dbf188266d10e8e36082e6fef5124df5d3dc3da59f75be397dadb5d6bb7d67535dead36c3e79d2c7c198bd50f6ec882fbe1feddfeb4defc8d638cba1a0607cdff7bdb7d6effe3efd48eb77b5bbf7e2bbd5f0c8df7bef7dbd51f7f5be8f9233fca87bfad8e1231b9fb6b7db775bde3e99a4eaf0bd584aef37e4e9cada7a72ae049c8defc32d8e2d74b8daf637cbbbb80cc6f75b7921eefbad9cfef4ad70859451e29718cb9eb86326125474d9b0d0f86740f0c8b618a3260a7f617efb9eedf48dbf90878ddf3eeede76bf3db6dd6f9db5d8dac7187f8d676cef758c31fe564e7f037ebd4ff8f5c67fb2569e3c6aefdb7bf1b5f50ace7dc8731c89138de009518489bf63c02a07238d94b11ea21d63470ced10b5e547263bc67a7276ec6e861889b38de7fc7bb59f39a7f5e2be30fc55fba9bd640b13bb1c9cf3e7e3393deda76af5bee6cdc79ead80bcd2e785b8637c975981a14a58d0cb27f289ac27c041b9f40de85fe92fccef3fbba8e5e97d9fbe900779c37cbfbbdde9f4d1c1d317d2ddbd91977da29b76372794ea3eea31c6dbf6f4b79f5db71dd9d9a2de51df79210f2ebcfd6ccbcd15d4df70fafba7bf8f0ae36c6fbbfbec853aecfc288f7a973befc8ce5a0a640b38c9b6475cdbfa448b0557b71f1cd9d593d54eb733ba944be060423cb283b361ae1d23481db433d0d56c6da0fb55e7610f80fd4223263b1b77371ae3da4507a390bd298e2ef44ffadb57fb11d9e14a7dfb746f6fe4655bbabdbbb1983e7ecdc3dd8df6d6da7f216efbade4bfc1bedef95be10abd22446ffb3ac67a64fbc8ae5e98779dededa917caec51ee63778f6cee53a540b6909264f3e0da58be1cb4de911dbb58bdb85d1661e2ef99d9dac00a563eee99c98a310ec607676b03d2067cdb51fbf67b7170d6393f74d9f3231107e3e76f88833f6bfd6288350ec677428d83aa1b96693f6c9171dafeb6077e7f8f32b76ecd05da000a10c1f93f658de1039d7d0c6056b1e7c7ce4784993ef67c95b7b49e5d399d5891cfda333ab82283a2684719144f84c8307a40d6a6b287b6e34f28e87853354051745335b800bb4c08830463cf8f02a15376ac8289297c905e3f2271f0ca1c97380ede40dbafaf7d3b4cd69ddd8fe131e343076ff59375eb87ac6dbdad7d38a3b5bd7dbd691e66d1c0824d9c2cfcc9393d1593943b78abc68ed4913bd227268225547a4c9ed135415e5ea4907b3d022668062c100289165e3045271029018923946cb1440de2e3a8c5174a3fb8c0484289255828725085d10e0c063fd8c48f353448a9e7b5f1c4db46cb4d0f67b79faf9e1e643f5bcfc619ac67bb92fd2212461dc78d9c0867ba11936cdbb736c99c4bafe9f2e4bef5a346dfa9ad910a6923b4f4b494a0c5a72589121c718314162f54622ab118a30e547642584b5df7deabdd59ebbd358c42d74ae9811c2ee76ef55a77272a6724b5965626955a97a595c99c73566aa9a595894ea5505050eabca1cfa16c41bee311c64e0e4c5aedc5f71a1109392082dad780352f060467666666348c671c802311d6b41122105bdb3b2c76019bc1b40da5031b9773b77aadbbd329664b226410613c21a2544654f8564b5133b3a53dc89acd6276913881b87d928820b6c730b6e3e87faba573a788ffea255d71e653ce96c47a656172b6f396b008e3afd281961f4a9d4f3a954aa1a0a0681494f51d55137f8ed2bff7a6a8b88d834a13197ab67098ac6de31061fc517ed02a2b1931eecf2be4fefc94bb9ae171fb919146954263e512f90fdcc889600e9bf19ad2c1306f50a91ce6412ee4446ee43fb829bdc2e23a3bdee34ae2632d7a2bad717cc77bdce54a28d52819f7a37cc276b9e4ad6644238f91d12baafea9fe144064f93391359959e1b327008930fe33dbb92e6f3e2d3e4bb98228b6041741b12584105b42c6719e394ec671db0df7c140573a6722b097ed6678d595ce9948ce32996c3669d048a24163c64a45460cd50a058aa8525052daa24eddcd0a2eb2b282b19deeb90d179362443a75994bda8a34e93ecea3fd200115f1fcf0d49b648b2a109d49d279bc27c979a44c4a4a72c2398b2563b190787e7854484a42429a618c55d8ee6b4a2aa82093c966ce79d780faab4f4f96f5d8d1b0c3264e96fde493b95711c6beec5e486d1c61ec47a30d673d8ae3600e9c23745ab4ced62948c226eb255dd207a967cb106cebf98fc31c286640c7589fdba874ccd8cb6a142aa2010000410093160000200c0a074442b13449d244cfb50314000c719c54544c32954623390ea3408ac2200c52c600020821c818c0901aa2aa00cd69e9338a5aa6d79fd4f16dd6b0f552cfa21c49367b0edbf7e5d7a205ed0d8690ce98b1137e686f216a6fed0641da55a363dadb947e674325ea9d26e80e45e8390514c0d5adeb09a43a6e4a121976c196ee59f6043ad2e8085b8281d1e83321399a06932d7c187044e327189f045cf11a9b8cdb1a903ac0748330f42df03514a91be4b781d27eb0f07520ba653fcfc6b0f56408402957da40c8b703f2cac7e55c951cde72bffe37ae996294aeff3a7dd76a80b5f17fb9d29ee9dca6082807c403369fa2d6ab63c8a1850a10cdfdd09c3328acee62a5d97bb95848d89a05776cd5807b52008763e93e522eea0dad6ea81ed89b6d9980509b075f46a864255b6a782dc89217826bff178486da7e853613cbe40ceb75f33cd39ae3537f3f395b2b216b2ee006cdfb7d1822c282dc350f45b9faa140e46b5b18d64170b7983e53d92e35c4196c5712bafd8acb72508d3c6d66312da383b6e1b6ce858efcf3f811ee2677c56754df2926d076a97b2ce50161336af98216b829a04256e7ab1c1d3bb9aff223678297c0948b9db4a7541aa57d8a43204b1b599c4810171ec5179ec8d7f9c55ffea7d99d776e729adfc827728239cfccc8535439eca3bde3c0052419fbcb005ee04452c4e104c43ef7eb7b3d7782076e7035a4424a63ef346d0ea07f3cf99e81730a119c340faf15287623a36c83aa174e313269a4973e0d08b04d32e35943831a560a3a8d6e3d93d0a96f969c7035bab06c81d5929a03e86d4dd5b4003b977962b65abcaac3e3f51310541ef1c8b66c675161c507f50a4094a110a19be312570dfc585a8858961616ce8dfae95e766793650923259eeb8439747531c6a04e9a1a94b55400f8a94f2b7465d8eb9033cb132c3e0417ef7ec5c3eae7105ce8ad39a705d7578fea6559aa1ce598ce60a10be742f59f5c64069b50a982105bb28ec5579b110d3715200724042d3e7e0ca876eed994865d195d006870579d9be61d483fec06d255120eab0c18618ed6592c8b00af1b7da8981b0bf1b05e7141b6a22ce10240ea8b491e48c3694b05c49a7cb79c7964d4c68a1812da6e0a97ada6a082ace20d77b1d620b05a27884918c166abd2e9026975f5c94722045f4ca44067c95b022d977622bc3c62f2b3ff3b50fa3ff893d9dc100d4350c1cf12368ea2af17837ba7546de7161864af7f9aa8ecee5fb16f0e77b1bc86c2b199110252bbe42112e46681d211bd8531fa581d1304d85350d17c9a3c510e7ee14bad9b5781c99fc95ee53438fbccfcb58ac6022bb99954f409bb2209b6da25ab4b36d0db6081d102621f0e468a3e38232d15de398c70e4b169ba3276dfb114e416ade057e9f8b55e8fdb6bae0afde5052b2957d3dd0e726457132a19acdb027686fd8869ddbd8f467b18264431de943df1f38707b25408e0906e31811bd84b0ebdcf648381c9010e68919e9ff819ddca0d34f0fa59eefdfc792f342485369e833099613f82c1309331442f5a34bf73dca4d3b90d8df6f4b16b4330106959b75f7d1492f1bac454081ac4cda21ad2860c294e5b45009d4e660caac8b111d7ad7d0650ae99b5f984b41837147feaa0c288814e5df0f459f70d3d29c4ebb142a804dc751216895019f1002fe9860e0d3bc2bcf7ea092014b8c5d73b5e3951c87a4ee7131fcb70f02a33fb799f84ba6c5149ac300f0ccd358c476e01ba7cfc0ab9115a171b6ea9179c49218180de6c0d7a7a3f04fa426047a60442ad22f403fa8c268f83219f820e239740bc99b92ce8e558e5f1b32c0f155d1f829d40925ee4721335f3bca262d54205dc7c1a3415286807da756a0910c88e60ae1f61d455cf36e58adad33676dcc4220ecd2b71418cae861c1d751650f751849af044abd858d6c52e0df872b022af74941198ee2e0e613460eb4e43574d434cb5ccb2d79cd12e04b5de7e4892fd0c46dbb8380969899a32e497c1c1de610cf33ad68fc369dd424d708f5dec6841ed316a470a1b0c3b532f9211244f1984e081359cffd0ec78c602f241711619eb5ddafecee74eac116e2e764b95cead12547ec3619fa12adabce80e812241d161b8362288867a0f78893b6f0e7158f223001d36585204a77b5a4f12b2d843b423dd96ec3581c5928703e9fb67e20ed7cbcba304a92039cc0bc3043729dfa042fb8192f8ee66152305d26dd43d96cf077c6cc668b38fe96a600b9c7230763698c18ab688002af4e18917adf78b7d8747b940e32fd8e7eb6b3bdce0fefa2dd703ad1b0a9a9b003ca783118f34710656fc3747b07978d46d90a15cab1bf24c3e4fe019da162fbc0f34fe1e5009d2995e0787a65466ca92ed25ad582bb052691aaceb2e03704d50ab04c406e536894209df2a7387e2f705d4acefb9906625d8ae392add8fb9cda6549cd839848393874fd4cf56a829e4124a8307c1381cac580478574179c75830a662117106ca9232fa6e9ed743235062fb40a5245ad7ffdbe12c58befd80a0c130e7818b7e828b731692d0a03c1648fd29eb0c006509808c78a1703455d4ebe4ba3baf393cc2bc9d9eb0e6d5c75e1b6d751c846f7026f2312551869d5bb302a5708c333458335be3b2a77b9129ca2a03b52efdff05c135defa3336a22f1c25049a2cd78c0e87ed2d9bac43c79615abc0d97b493645db7852cfb9501e4f3c2a3e56651d1ca21a8af016c6a4543223d446f4d7b46432681a2f433a4a04b95040c79886c329479f6ca064c4a26c3d5c5885624b56567df0ce1110dc1f5a88ac461f0440f7ea8bd6b80f68668984a0c46dad9fa1cd5828f6c3684dcce1e62fe402230b1a46538b4be53bd44307cdff8c51e3f7aeab088b4dbbb74b0a830b7258a784a680a0768faa1e178b7801d99fcd786b7efad645f4f8f3dba63a9afa978f534e012d3af5f16ab3161ba6883992f8d90ca1ef8a7336a8eaa8ee34e5e1025e11886a34e57cc9808e2678cfb922e27200f9ac981171ef5bb4e0176dcb74677ab6fbb0ed9645cb3d9d1ecaa4915dda345f920f505a621f023bc7b43513cd75ef71eed5ddcc356386e44a85cd24f0eff173ae07b31d07d11664a77abc821c9cf74de711fb43862d6f9147403d6b331cef9620d050b25e2ed8ff4c9a54d77b352c183d2b680835b7e711488c32615763ea45c90c440851a8d96726b51e5f46f8d9829ae5438d63c11969060c328c1f7f8e4da7e7cac67c3d1558ef02e13dc25aa62654a1f06a9a46418b81c5535864d3b40d413fee6028ff39f755e84821ef573a0e8e115d4172097bfb38757291e8567a21e41126b96d64043247db9587864e55535eccce92eb95145774efe018bc303134d1d9458d49838d6c5acb5617d5522566ace2591c5d412e05c538924a83b551722bcfa5dfe87ebfb0e046e7a4f55ad338545afdde3714be82d508ebc889b6033c5e01f886e094153b925ee80197cae6dce8cd0481d5447a5a5ef51f3d90aca88be3c8ccf9a43565c45a217367e8261f63512869dbcf8b20cc664851b714e4117f02209462ae2865e228c42e40c651c4510f63231042494750c04b6b6fa57c262e823063318c1ec0213a2e3a4bfc43f02ddb419041183589b91d15e1a5f63b0aff46d9e1c042bc254055241fc7472b71bde7f57de8ec9f481d5846b2ad2fd71584c4af125a92236b6f3e30108a63c6675df3505ce59c8b2adefc4e19bf67171487cc448d12bde53153f54a1c3f56dae769616cb3b06cb107adf0663a9b885a6b2ad1e8442701b5bac8ad7dea7840cce6b03b62d066cfee2a4087db4cb03f72ab3c553c2f5854e1b3be89358b6ddbdd4f8d972aab73eb6f06c74103e2eadcadad896b438c5c02ed78a38ae21af4aa72d9d82ea82456ea788314fe58709931430c2fda313bb7fca61a00f6d9c7ca1c844657c6231c9f270e70b1a755e600605b7ee6f8610a3ccd5183798b195b7300a799369b0cb4d9bb3ab621186bf6f350d83721dad31767276842ab9a91088f940dca6e0c73c90df758c2681f92e04069e4f6738b36da4180b72cf1a161f7d7b9c04b4d66662f41c5f98bbfe8d51d2edb0fd8f7501b67f6469211c7774acc9542a5830af7a027ee1d2814a6859d744e18cdbe744d2bb3a6ceadf099d1f674ef40155c841db89624d20dd4b5f6c17ff61466c58acc5b31b5a18238de8a345110cd866ab2bed9fbc43255a34d754173e101454d4957ee141e121cd53ddbeea801197ed5437a5b6ecb985c7c775968078ed9a7cabdf0ddfdcce4bcdf76e26b8aa8a74f5bd6544fd3668fca72fd782ecf31e2997301168d22fa3ccf733a268f3d30934bcbc8ae9629942a0b7e90c9241b0cf9801c019864434da3130b8a748fdc14a433c74c8567ebbb646fae312bd4fe46cfab813da5468384fcf0f80ed5fde580041b3335ac3804bef65706a2dbaea756a2bf163505c81814d0eca79829db2c180cf9935d4db4407d8c7817db7d1a3d3637d29de04ec15e8a92bd832ffd2cc407afded31b2e052e19ac442b61628f649d6066e5ad0f050ddea4e825de08b0a2a22721d8e3c7755723cc3f398b7849321536d91b16e70ee12c5464b9917dbed3b9f1bf5b64ef1cabb9f6f528f31034588bab2c108678e513c70df5b021cdb72a248e652eaa8521d19c1607ecc0d7a3c20c456331c08e94d0ff1e42a65a7acadb599612f8f5e89e3166e01d1de20a32f6188c83351c0bc869e54ab03f9acb0ef65982a381895c25bbab5b10bbb0d775ba1c843fe93f6a26234f9d0c76e2f68ed093330610526cada863aa7be9a132a6ef90baa7e2db6954a53419f6028c12a926039cfa2d7ccfd1822d4533e804233eaa7f7a928af16f069ca44f9421eafa2dd8ae10bad0395201f2e1d8e80242a73eb60dc9c761a8a3038e1727ed89e449de7ac3e85bf09f737255aaa20f9562fda9bdf9110d326bec453c1daf45c05164e2d6efaa5b9e7b92da66e2c8e46da240e1472bb0d0c66869f6a2d1688f773191ac40fd1d4dd74f36fc54e1648ce0b2443646ae2e01e0514dc9c46666a9391255f380c2c62cb188c701e721bbca3233b7c06786df15c7552ce2ad0d14399ef63d9dd2d00fb02926333204948ac4dac5f4dff9edadb6dca323951bc55b4554c39fdbf7404d6906f02e16f405ac3e7c0e8f38f06e857946722c3bac4fdd0f292735c7cd7e3478e922bfb5aece292d262da5d364408d4c4b875d8f827dd596f181fce5e1783e24c0dc7658c6be8f0db914cbf87d9230fe1210ca65df3e4e549873a66c8750b73f094a2829793ea7726d40a40bbc02e137837b98e2aab9d1287a53c3bf6845edd3b555a3b3698fb1df797c4cc1d50d7636cb6a04e17b74d38818219fdab9395b106700ac20f281f8eb03c75f8ee7649558ec4e2be50222e66ff4a62a96cb3277f68872cf426da1435324561d137e0d7c2131c2e85af211d0efef46e3fca26110131f82be61543da8ee01f4aac8a4b17b152381d1b3325a61f30c825ddfb0139a27a48240ae3df4be609d497785dd5acc3a78face49006ca6a9b18a10d5ac9bb0fb91bbef1f806617a6224689c2122f358039aae4b48fe8f0aadeff97890e2e72c4c1bc1e5a1e9774aaf6f0aaca61becd5411e3f256aee9c4b25658bb9fd90fb1f1ba3e2d61f9d210d890789b825435c66b44af23f9593a0f6512ef8fc5e01e933ec09789c1e0e5d72bf353ea354323136acbd32d1c630699b0b6231e937552d4c4438e0c644a7b150be128f7e0b9bf6de142d1646d6c1f0a8bee0ac41cd3d66d5e4a089d07b021e46802d4634bc36c6f54905fb00bce023eea933e56ef879c1c51734415af25446bb60920faed93ebb5d2aa2eeeb7bf7dfa36f42f0443b044c86238696996f1e518107f3c73d6988fafa11bd70c6001a4e85af40c90e04cc0f8512414142d670478d7f05f0bbe89e176f91ff6ba82e8f801ef568b14eaead536b7f29b60e9a3ca2231c120dabd0907033c9b5c5c3fbcb1919983b5c113f0c19f45d3cde6965fa86abf89e2f630c03603e7612609ab214888d5eccf9a51623bac8bc59ba13bd6da111e4fae43b3304856dacd554198099f6cb63b9e9dcc993dbc36e273296745a55b564ae47b593ba523dbfb2ca2626fb19bbb29a3c4079bb26fb8ddcab429a9361c9942f8a35520d558fe515a760414bcceed3b28a67e095a1d4a025893a3461f90f6c8632820ad183c9b5ddbb65d4d26a1a41cca55ef0d7384cdaa378625877e89660e4be64609337f8c0aa26e6bb2bae16ee6fda462a7ac0b3b7b396856de1c92b68bc0da87e16071a6778cd07c26271badb86d32a2fd7e52d88243b2bf133e8412c2ee327201df9e65af06ade8b744844f7d7a4f0d9d36238a945284acbd0479bf780653bdb09e9a9777541fd1b8d62b8d6daa81574a5a8b31f1137443cc76b0240fea8fbda8319039a03d900590d14685a908e816d2a418e187bdb901cc940cf9b904b072293c9cfa25d659c7632ef2ba790af144cc25cc814ca52f074c62b64ffd722826d3f23c92dbb66e495d95b589da069656c5491691868df491bddcefe0efae208cb7eabca97bbe24f74ecd4a7d2396800713f73cc263a583c01b3a9b5a83b3b082ea6f9fc11b4540a8c6947868cdbaf7758dadf33e234fc1a3395f4cf68ac2e51ba58828ad9dac00e44860e021ad9f1be3028b5684c9be401926f7bdbbd2b8f09277c62b5feae5777caae6d4077eaa3d0875ac61caa15e41a656e89883600899fc58ae720447fe0caa982e748b422fe3d088ac0e020e1c0539fb0bd0036c9a7c2010dcb21d43eed1a4b49e40d0b5d9852054b0c83772ba5c5be0c739b0f065f0302fc92501f857219324bf58032c10bf7e404b24751178332b236807fef16070ff148275281cf9ffcf601968090fa9f24a57c433a4d93140d5adc0edd39d41c3e5743657990ec29209e5c9175427b5f7536cacfca3e26fd3eb413a009c53899ccc4b88ed3e8833e86cc3f21355ceb36a034989f5bdfb84cffcbb14067d82d443a67ba4bf198a18ef07417bc6d6f77b1838331508affe56d4d688fce1207e0b5e23c68425cf7b154bbda9aad03e54d3165b05c09dca9b44609ee1120e41f961453f55818668666c5797a988f06ebd0ca2452310ef4544e00166d8383e4205cdfb5366b6fc871d39e53947cd03ab69ea508a83609eb7ed1e51eb36baa1e686ed504e540af1daa0bf7107f156104e6e598c035b12755031008121eea2e541696270c501555068e3f03f36494dcacc269cade7a023f2f092e6248280b924048c305e68c427d4539f0b3a210f8f0216098d412b994e4eb7f4a4975d337960b034062594f0e17289c6bcd3f33ac5b80af61307941ac5137ae1cd7ed253e9d6a07c902ae40d866e4d19d42e970776bb05a441ed0879d437e5ffdac3e3566f71d5538b009a0e4a65c32feaf8770c4129585c3a3b90d88b442c8b5b865be4ed2e15263e14d8456c6caceb5b822e03e94567db0091127859887d44257536abac44555f2daa336f7d6aca120715c1fa5234b2e490a92ed73efb122647f0375d436cda0ad23983a6d87271aae12f1d2fa34a358f058f444e42263eecc5c0b3fe6852aecb7bc80ec3e481415dde847e916747f242eebdc7c2c4d6e5ccf03e05a1d3269ac214168044c82590312840a7db7370120c944d0d1056401d46fabac1076bc30e0198a74741a2f286a9d116b394c89767a70d6e23049fa058cbe43433a400cca9ba575b404919d508c7938de5f0fae290d850c441d1a8f623d9d5f0ceaf2ed6e5b493d1f815de28fd699d1425c87771f7ef1e2938275c85d37ee0429647fa78e7b7ed76204ccc20a29454527c81e441e3bc317a5f3fea70c44c639acbb99610181e1335d2beb87f8a5198594315dd9de35eb4a2b6766c60b8ba0988b7986ca178c5a0eee99b61c35aa2c9322ef8951c98249568f644d430c7ce8985e37ae8f9e8a6b0e8fdd3f1584c45fbf7ec8404a2a42eec073d475184a77fa91079cd1cff53eb736ad137453a15c4894e672acea0d4fd922e96a6ff62add64ca6a42be299e1dac2583303cdd713e9d3f521bc2722c505bac721d9e094490211abd9f101af2a681b49d3fbb6a6fb0502956a41173b60f8ee701645008eff501ce0ec3ed5f5b5e86d98513df66bae7ad8101493f32136705a8a78aa82be5c2ba50f3f25d63208e616b81986d8fd22b79be0182cc331796b84a1500f2c343d4843ea709196fe30083a8592212ecc20e768c4ceef4488c63fb80cb6d7677d5f1a3d1a12e50e589e5229c75f1f0624d31e183da7a6877107444f1c3b032f72bb8109f058010583c27f5306c13b5ec2d088eec3c83f5b52601994578a66f59b91eb3782f1325e7d29cc60fc09bfd48a5d9df2eb887c047285f261094844ee5021a732c38c2e45701b77ec9624f98b4053b8c48c57aa7b1e67e9d922c6226f5f149188fe4aebd6a6507405e98b1602457c8d915a205196f15f7240fb6fa983788e60249e014e9254d47f0322f54f9f01decc0b5649e5a544a5f893b643d749659eda44cf264d55ddec094cb49200e27d25d22c5220f093e1d61e95d863542410388a4aaefa4038ebef70e264916018a3f08d445cbc712ed212855e493302ee1e10e50cd65ee14c2e4972d3a07abd9fb7fd7a405c24b8e72a2a32457ccb45b4b792bb6d0f4b0f4358c245daf42cfbba70b563205e46a50049fa5d8abe07e95634cd02bd25616cd6610428181c29781e1e85985ea1984898f1fff0e974101bd2727f4d9715ceb3e950f7138a56d01cad3e7eecddc1eb5e5f89bf3227803bb645b91fd35872f8a510f7584d2229fa858cf4d3ef47ebd06eb267dde3b42db0cbfbde2f96d75728d6d31e7b40647ef23d76522a0bf3fb4e61483bb679b6e7ace0a03b1e807031f5c00c172d0f80fa05e8c4fc013417fa2dcef85cd085507fe0e2fc0caae40662647a18f9ae44c939fbfd7a1cf9e240727b1a715f63087a080ed047d75470ec09c7e2e8fedc92a271c99cf40325e151a167fa73675983ee543cc9064e0fa3025cd51b7430c01c2c6e1200aaea6439e8dacc895a9603cdd3d115f7ec21d4da5348ad83d9e0eaf2e9dc09f8d1a2900a7a72cae0b90464250fbadcf0ff8a5f2925b0df2d3e2a0f3272992bcd010b68f0508100985d6e1f2a782f0c7384e1ab837198ab6dbaa06c33d55e68027d99242b4738c3990a8787b2ec3222c33aac03209c128c1d87cc3fa0f7fd9d59762fc0961d79bd22754b5887b4ff1cc374dce596288d19ffc66cfb78d8815d6cf3a098eeacdaed5a104624ef2e1848851b1593eca8214970895dbdcda8fe64cbd261dc2404f02f098504f242805e4b502cb43c5a9da64f4e9805c1608af039e6300e360e3e784e6917afe6b5250f93f6e487507838e32bc5012e6709d1a26224177678eeb65e3f72b3b0e512ec434d1aee745276460f6cb59a31c52400bae5fa9221b70539cedb6f3486b95ebcd2b4e02015da525334a2b590640f51749fe5dd344bb351342de0109705e350ab9ea63a8d72a6540db74e828de1fbc615d848b6a7bdc5f73720f47d0780d73ace3fafe62c4e1a2e21135c41b424a71e640c8f6627741bcacc24d155cb8fe395ba370be0c2bd2977f89cefb6fbdab2117eb0282a4092f37918cfbc7befb69fdca4107e45ce23e98be721e54a1b82b843aaef0523d3b5111c1a3ed6206551c6a2319c28ec1fe47e80999c1ab4c311009780945a7e26485a410b093b844d3c4c99e9d4bd6c6aca9f5e3a76f1db9c500cb552b0bd06134e245f71d77779edc44710d75fd2e767a87e4122a75a3702bffc98044affd72d2b9c95264806a2c6e1212a45c82e0db1aa6a4b8fae8265e2c0acac7e817b892d3bf6b04e30336037e0c5bb5db1144c1364e561ad21e46a62dda0cfd9cfeac2996adb09782a15dd58331f1a9d94ad3510b2f6e7b08c3ae680a18a0c4491598b0cc96f612748468732a939218545461443a2fe90a0afc9619c740e88bd01a735c9309344eb26435fb66ebe3cc786734c55b98436b0dc57d769ea0bf3b456b2b9692ea5c03b4a13ac97a0fa8b26763eaf0fe90b41db9e600cb62e6e372c91ab2251c5448dfc1412487a1307a585d90b440c03e71e420c29c9b7d2221b3de2f7dcd24e40557d4168a164656fda2154b07847f1812e611b8ee22937759ab224d1600dd4e3920d7422a27f517b62882d1e126b86e95fdd73edb17765406c49d1516f4c41490da54db501889297f803ec4a1ce0a3d42b64e4f9462ea735156f901d368392e38ab65175bf48c7d24a533875196cc44694f5c6f65bb24104f99e72a955fc65079eaa444e2dbcce5a5f4e988524055506d1c9a280ebef687ccf0b5caa168103daada913d234c8b42dd922400663e5c5ab9f58e6a302d204b5a2734c108d0334e78c2737cb5ee1e31caa35d1ddd5718ee6c6b3b81f91a280ac874da092d61fc4d7c3529ab5fefba6e47dcdbff421d5612bc08386b1a2c59271df5988723c89563d274f99241e26f53b65e48bcd32dc98a5591f4770dbb2dc3d2a5c70b47914f8d442ca5595dbc157b4fd7c7531d130e36d809c112ab75f899c83034a2d9c44401a7ec9599e17bcf93cb799370c4763e979a00290c3d85687792e8d61a6eb7d95d10eed9a41c01c3068ae99b352040f2eb6cc905aa645a84f8cf15461b0f25f886fb38a0ba10317478a84405d05dd19eb802361e1991e67a6d579558fbe08a54ae4e8ce8277e5fa867dd7caabb5b9eb97f079bd2892940f417e571279a7d465153b0bc8edc0259c8a99b021dbcced6b844d15e5026ccd561ea065b02949e512f39a4621b420a0a771dfeb83a272741a9a155a32dab9b3c20dfe4a6b7cf902ad296500406f538c0803ac6e8b5aad26a367cf983d402a4cd6576ed5b21f222c525a2cb855a0016e4a5471e84fca686ff2d532a37d34993cf62f2a2a3fe1445649f78ed2b04514abc404a11633653ddf91ef73e1a02815b119b0d962c6ce2ab8a50efbb8be8282a2a5e036556193354071105eb636680db33d0907d8cd0f7839c17fadde5e48fe9067b7782316fa79e70531607b16713b0fd29de6758227b19a32b308080bfe996f8973b4e688231e84a214c4aa61e10125852e65d642e78f9c5505b66d448514520b5dbd9c0f2d55aa947a07ae92e661510455c35d28bcf1f052036602e4f37afe56aa8dc2d29127f664726363ce688d11cb21f1f6f52224b668a95d95a9432dcf667e801af2e936a15b7197596131e5dffd9ca571834f7dbbfbd9732a9f19efb1460c2b20b43d5e14c3eac2dfc1723c1f605a44739477084611b66d509ac3792f6fb14b0579bdce3b5851aad9e4d8fc3b7570adcbe737c30e55560806e8ac2d30ee14507a1e4a269259202828d40597b6879b3a87adff7ac61a95883cecac614f31f2a1521a385db92fe9840cd881c5edb11112b72732231df7820500c2a2619e9e2bd9791588acab390b032e59004d2d578b8802b389ff654b4748f753b80349a6dcebb86d5610d996c3579592d32a2d664318ae0e9c1dbb016b13aaaeb6ed4c044561167788b919028344c1ca6bd690d0cfd9050c168b60e0fdc3640ef66352b91d057f2654a6b656ab752eac400a75b7dd7efc4df88e4727b6f05bd3985005d45b2985f6608edd33df3934e7d163383c0a9122f1ea02026c90ddd35a73485f26a6ea44a95876121473d73e2778a73c5395a61a55bf0482b1eaaf9f0e288ff9090ea9f330f5deeb06299e4c69dab26bee1cd2338ec1dbeea93e733d184d9a6973e04661a2a2f289865b7265709af74625ea50e9838103018719b1ae06694318339ef0fbd1dace029dd7d99f218b7b2126d3d320cd60be2546798f4778c39f76b3086c9096245026e8656727886c91716d851e8c08f0580a42cf5180b3ba1a684614f77608eed3abdcb3d7b5ba56dd38b2448c6fb23769c597f354eea11ec6e772c8f3570af366a021b7e74f80c317b166a8b562ecd9ce055d76059d6bbae159c1b934d1ec4d0ff2b7d9599868b4a75a51dfaecdea0c752107fbdaaaf6b9de2cfe62c7dd5f37365d01f3ba83a0effc2a2878c7fce8980c9d0a42e9c163bc1cc763a878af28b84effd5527de65310461c9a6bc23a9645dc8574b11c4b6c892a7bcb60a92e3372fe347ea5eaf42201025d14837fbaaa6d631f0ac75b3e712e626777a7916360b9a1de7233ed4273ce9c042edc990e62cb64f9226412532448620a7eb3ff5748e15aeaf54a92e1889bed796fe6d696e036939940fdcc6986a86db42cdbea733079e8a1dc8bd575088c413b4250d1845776d94eb523c9947744d99697e915a2cf90de3dce424c82f4a6942fad3addb0d7b31a0f7bafe6547e0e3cf8e8034e569385012c9b0984b05b0eaf995e1d8eb587ec9ed6241d87d0086d6d61602ff892b52f48dbf8b7f51c707ea16e243afb05357b624904b912136d605a597ba783f3748450e15a8528d10913d10cb6cbeb3ceeba477beedec26e941272ae4cf5245abdcd68ffe97cc1a66cbc2f1c4c06b863940a2110e46d50e9e1d0ade8c382cb7f12f4ff90b432ec95e761a3c6179204d3cade8e456131eda208e43d4494a929e1276cd2900d4f844fd7cf4d27ccc4413ee73e8bd8dafc1778ab70d3ca920fbdaa0a9bd31ca91a5fde9a28282d9e1ff9ce05d88fc863364efd66c84969a149878ebeb5401f710d928acdffe4156e87fb7437cfdc3473f3d9df6a8247f0c6e42b7ce49c07f1afd9211f6a666bd839d777d333da646511c6c7644acc6fc2ee9608df2fb79b8d19b50e5830f589fafc83885df07c78fa20af9fa6d077f53e0c3e3991447799371e0275eaa1c9e149dfade3ecfa837d58fa084fd02ff84518e2a195ab53af22dbc0f8bbe9d36d95305eb560ea6b28cf714d369542a33921887642dd61afd4da2d768d3b153084a9d4f3a64c8876ce2b3ca38db0fd42448204af5b7b4f09a1a42ff5dbf1ff477ff181f7db441a2648c76e81533f65a5da971c06c49de182d6407988901d092bbf862d46551ea1050d12a061e381d15fb712d4cf6f04fda31fecc35b9f256c7c8c51b64beda1842bd8bce183148083b2917b5e183a7b20d70787ca5b356911626c4b944034effe5a362a6a67b2e9605672aa43a7141710cbc57a1e40b87d79e0d191fc6529325dac2787e59553db1e762fe7a8fca484f6c9a2ad2e1436ddf985a0084269336d41aa17072d6002daf0755a1ec45de225cc8d11b933ea2373e1a98a5ca854cb3f982f2bd3d1b4772602853079219a0675ffbd56359d9fdc0047218b99e9a614f75756307da837f4ffc9f5b36d64d77a7ca4e360cd43f51e2c47603ae2232ffe0bf3876793d1d5e3109107b3804b748ecd0323a4236f82c6f4e7c60df46af1d07185ed44b17a632b38aca4dde872856fb47e327031af4f5aceedabd23e79652b122940cb9b5f196b5e840ccc06f03b75cfc3ab34604bdc1196beded9159b8cd6b065de9a58a8e6d6d21c011fd812c8e3e356d7f5a59bd31dd37d066e32bc9da16e01cd11fc2d8ea9adade1c2750ca554b7115e08bc047018e7a220afaf7d52b79337e7c79617d33eff1c7388364376ce1dd31bbb97ee88bca47c525e5ed389b92d735b0481b4af2d44c15450307de9407c13616ee071064d824e93e6941e9882e6672c96f41e7487437c0cb7f55429924c63d424254a5ce7c4c1cf242b0dfb80d8390683e0efb830bc2750011c89a1bcc3246897e99d2e5329c9fa65b3ebef7e77c71dfdcb2c37fc8f77701df5bd09ef128c2ada451ab0ad4788d8f8e1392abc0bb114ff8ce216b760ac4f81b13f753bbe45a146e4b389e97259c405fda022e830e2addd972024817e01058f9b1cbfc18643c275e021ae3aa178601df30120048e1042ae4421c3ffbcbf6e824001d9e703b95c8c6c441047023526d12c4911963b1feed84c6e0a7f140fb5a53d04b00ed7cc4c3a51de465b423a04bfe100d37d76ae4b6ccf1af252f35bedd8125dd03f8c006a5c4663583bb1f4b564a06cf310842eaa2f6a9be896e7ab9a11f0d9fa65744786034897f36974e725fff825043af939123be066efedf62f78beb553230b582cf32f988df4e3465551dddff1c7920bafa185638c7c529480758b9d22df3fa26d2369d5c1aedf18109770f6f1d622115a8640cc6cf4befc3b6875772844f80ca1e3fc2eef97a391413eaaa948a1b3e398bfe0960c9279d89ef5b91c0c7c5ae21e9be2be005dc902247ea3f2dc22befb134c5c629d6fefa9fa6be17280288cf88ae3aabd5e0729de336200090d8b7e0b424ae1aca74105d449328bafd598882b377715308cca5937891852d1312d2a111bd2c49c2c100ee599358aefd631a7e14a5357f2f11759eed4bcb8ff5d03070720fa359700804428b7b9a982bfa19d1b04ec343197d93fa5ea9e319556c078a78c73976f708c8d9ad531b8e4d4e9ba19b724a14a4ee1d43a35f8a2763b03f7500a851cbbe47cb1b2808b286d7323558e376db39d9b159e6180f209797642596c4f87da561220d691a373ce1279dfb41df028a2334d42dca6648c951656d9d39d00988d541e42ca470fd3e9ae63d55266d4a22f693811fd3bb89e4b257b9a6a14ab761254157ea34fdfe0856968318ceaaffc6a83b2562fc449b074810268a2e7571ba820b43d3295ad918660ca55420999366071311a2e04a4a6564e90ffdb38420c5b36f8cb2e1402e04ec48b622f51da5ff3805f324d18572ef71276c4d3fff32d4384c5af9d65cf2401da3907540c500ae2127cac1f820376b4880bef42dac7c49c7676cba9e15138a934f4277fbca0794065c3ca8efd8ba1e051607205dbb8fabd9b5f9137a3ff3790bf83c96ffdb0e3843f5c76401001ee5925dcf1b1a40ae50914eef9be2f191c74a49cd16f31be1bc88dc673840dde814c6f7fd2c275abb9c0e584e0a5a28b12a88ff285a87bb12d1d42a50caf125cb5427fcf2144af83bdb4201555f8b7e66292dccfb98496bdcd4eea908a783c520357458a264c71353bc45eb97ec0c0db46f952c825918edcd9722615b0e6f336257921147177b42a76437652c25bc46899e198019302701caa812755ae2d0eeac049352e396efa3b68c777ef3049700bc7bd1a3869d93625689f7442a0f35d0eb294a9d491f217ce3bb99ef9e829862f0d326b4bf005f9e1207f770bf8fe2e17e38cecb6610461e08f5d401c6cb52fcf0707502e08874ecef44c9410f9510a3ac63d4c6a3688d28fb40c79fa16e26cc9fe706d34793cbdce3e970a765b875ec6c1eb4151fbdd4b905e3901e766a4ca451b9ae25134386031746532b60fd195c119c5f70d2883aa2356362a44d64dcdd30f18d73ffc54eec14e7ceebb23e008bbc1d452aa0be0c17a4ad5022d7cdafdec3f199409b6126722515169c5a5904d77cb33a396f923061ab465f118a07767adbc8a2facd7e2ee3d26c23f6f9fc584a137e31409a4a8107bd13c2d088871ade4bd43ebe57739063dc5d6da9c0ee8125110b74534c3e9b41d747350628b60204b838866f5e8c437ca5726ca2be63742a7e9537ea03b2574a883c2e292a9df95fc9711b0e7ea1aeee6e1a7df08dd7693e5e1bb56399bdabfbd8d2cf057754e729728545fb6394265d57c1e28c6eb14894187bc73e3bfe2dcec1c64936a0606fce9569e51a4d26fc4054ce8ad6c6a7addf0d0395d3bb69be5545b2711e4fd4cbe004531529975071230a193e49cfc2650dea2373c78afdb10df78958feddc1cdae41fe0365c1044b509dea3d3bf448ce8e87aa619f40a7e83721590dfb72847fd5618111a150a19e371db2fc7cc2ca38a2023d32a818d42468d1bb9266e78baf9660ee4c463992c3735fcb506387851c8c2327918e06fdf658cd9bec82f0e5c02c679b68e41d392ef2f964ddfd3980f792ab8e2bc2898737ee02d2243df3f312d008cdce2c1f894e4f5ece93ce375be7b7a197849bc21982e62534d8651a94f7057bab00be5b2e4c8e22217b062b8573c18a89a2ce01537ec4fd9619e96ce04089961dc381c294a6e71d700328655ea282ce183d55bda3e54fb2a9a9095fb02d8acae8404e93d3e13d67007ac5379bf4ee96448848831516aed7bc385051dd7b7810af0e451f03e4b5aa079d8bd9a79b3f4d7d728b3a7ff6e2779eafaf20acdbd5fd47afeab1b40501bf8be0818a338f22dc5d07ca44526225564fd53da70341edf3a956c4651986fb67acd7445a9c054b1f1857955b9d424f37f1f7afad66d7bc9926d384bb4b4f905b5175be811467a5dcbb6d622ff78fd40a06c1e64651fcda7eb33b4723a9e097da2ae1acac23cf07409f52644aa4ff73d41f5a5264239de8d7f8b4d9ab94ae901ce181b974c314f4d9c5b628f3907c66398828e102f91e7c1ba34ecf990d03b77a8f2ff845be7296b13858dfc4283e7e297c8d71615c0a52342867d5e2bbb848d918c8d9dcac7a5a044b5a6d88e95d04dc3c7851f4d814e5d7d8b590ff1bf8a667428b972281625e984722f51b46cc599133eed28ebb270d738c4b25aed6a6721dab1d8949bac4872691cb0567b3f24a7577a8aff4652e36645c3324fd18370971b319b5b52e5e438b5416d7d60f3686c6b4681ff0fd046f99ad40d8ebe67e8865df58813aa4f31e921d6f176d2e12ca35ce8274e3987e85bbc47a32d81739e65cc21a8012cd15a60566fd346595502e61d3a5a314328de94a23da99c77555503090ef69983ac22377aa06aae0eb8362ab314d08688354c2717528c65fb7821154596f60334eff25f9ae53f5712a5c532df9eb332b74e793ea8bb5901d9935217a13d985156a1858e482c3500270702a427f24a0e938798a65b71fe42475a20add0ea89582b2ffc774c65347f2b48c61eaf139e9dcad6b2050bfdd3b3575921d39d2ea284e79eaa1fd9fd4ce16b615cb2a89c337270c3789c206ec33be23265a943273c7d29d0d47cfdbe7d68f284478bcd6df7f56d193f703294b7551a2779f97dae46289f03591619abbf89dcba2e9d9dfdf44eef18ea16b177859932168e0561173e5ba0745c84d484eca94bbbf45c35059d26578c24a06996096e20198fa3bb11d0f9807a5534fe9d2e29aad9dcea8f3710f41edf827095ab78330a6da67b91e42290bd39709c2e98d42af58253ace424fbb0859b9477a8a3e553f1eac99dbc4fe85595eb04ebce10b123cfb5ee7180707b19235bd362a3503cb1823fa2909d54f7ef261939b77a1ba1528a3c2b65b9c212b73a396ce8a13d5c25c244a2558836140123bf69512ade38439a77b8690759fab032d78c823ce428a28f0f896e0baaa706dc8f4f88c9e5ea9dc4f7a0732851104129de860100111f46cf2322bd03f11f0e351062c8f9e2ace6fedda79ef682a2c6def336852e8d5b4546a87aa9041896f71ee866ebeb6bf49ad87026d0f1e833ac45ee7f17e5a43539d85c5ad6f0630a21ae7cfa0abd42821f54b35fc890a2ae8fc6cc88b68bf169895aa344a2ab0ed0bff7bd56fb00ba637698449bc7bc91cd047285ab531f25abdf223eb79cdbd6647aa2d087de6654e805df9b1322a3a8d23c3f033250e83f45e1bbffe75b10b89b1286fd41e020ea883a75a2901fec9a70a2adea9c043d3019906877c44a1182c9406ce071cada5961400bc1d12b8db941d723e44de3ba54718d37074016d3403b1f9c344faf8c061790057895602f6a80310a84c9cebf6af548a404ef1fa29f6a2d5175ee0aef45811dc5223edf5c2336efc031ad5d502bc9d027e2745a3d26a1eb38f57d7c9e912a9b327369336d21acdd7920fcc9c5565015f4173caa0ab465a2fc59983e01a5a4336c21255571bb96aaa031b0882bf7d052884a6f8a1f5b8b3bb52b7b8b7475d0ef669beb1f6185ce8fe9ef6188429d1b59dfd7d6162710275d3f90fc37be76c0a454a775a1051e0825d6754f5370caef43889eac33266456db911b71fa58f3451361aa9775e83cbb0cc3ea087199f242a69de57d46ee4af88480930abe1c19efe1751e61df31af850ed582d5ac0efa88ba40969bb5196e5d02cd6746248db2304f64d2f44503d8ac95235da6682f70f2645a48cb30eeb86f2c7c5780cae80d2dd5ee548c921012717b035ea8bf48cf63068523ba8b5bf461045d1950e7166b45b4ff377a75ea60537983996d81aedcb2c14e739a771330e4266bec98268c5a0ad6277bd5841367a85b5dc87980f9d66b0f6d5941bb9cb50e4e53f140e40e715fafc3ebc96b72752c174b8843ffe74dd7ef31d3b5b4475c7ec7caa7ca6c9a703005a9312d9e9e0c7e56485b7deb62c4d5b95ebdc2aa9180377f6e250f6cbf44e14b36e93884e0e656a72244fe62d956150ce40d5bd55733f7b56fa6a7985e82dd772fa35b6eb906854cb7f8a2c0e0bacfa26cb34bc62ce9a7fd30e2d3025e18e91356e44f7bcaeb445b03171451d20fe7b0f5947cefe330e3a7ce5a4e1e1206a8805380a1c70bfa24be270e1eaa1f6d87b0873cb444114e3fc93f4454e9246d8fba564e4fafd7f15df1e11aeac17a48de07d09bfbb37be0faaad1aa04199f7afe6d805d20912d66cdc72d6b3a55d644585fc5e1cf60438d7aed2e375a3c30d71de41bf6b4f0622f14df58e31d7deb9f2304e74f2daa7ffecc268955cb09248e3cf4481e547727883acf60c837e086571db306f400b3801757b70cc6beafe8ccbaf3513f1bb2a47f1cd8fbc70bd544d0b8233e56068a616d01393a30148bd255586b0ac81e8900a0a864a08b2737ff7d9f45e88280ccfb4c4e27c467b003eca5c8b4c8d39979b802e9cc010c547805ab28865491b441ff438061254441aa72fe6c95597f5b2d530641eab5f540a43ec8a69f8f3b69701cba050f9bdd513400311e41a95302910f7a9e3902eebd07d0479225554d4bb553394c4ac6f3c50ed8ea7da2060df87ed5c64afa8d6a52c7bff93a572640a5d81c4b12287b21e9b1f954663f96130901dfab3f489917d23cf56856de2cc0632a0c4a58f3b488042ad981ef071704dcf59c035485e2fac7a9896981ec5c5011f544137362065c2834d381ffc461903876fcfff7e18c029ef82d7fc3296025834e35791f58446d4eca28a3c393b605ff302379ca86fc81985b9ff90aed7fcda03ad8f64dfcdb78062906b6e95cb7774a67d740836816e52a07a84180d4b3507fd520d4dd81037253026b508867e2903fad087aff838af256a18bca2794412ac072a83d8f017dce713452d53d29f354da99ae5732045cf2b92a4834caa3a98f582f9e464389d6beb022ae5f07af6b2cc811685a5eda914b5e88e9c56c4419ddcf2f75467cfaf7002bcd2eca9d1fe40b12be924b570aad3af3c92abb795a42534b1d500c4bdad763d883728b425f22b622dccd03181ef5465af547dd6ed8712a52ae47700f24e028f897727f88a289322b41e608c4e979ef57f6b6eb95eb0f20ba372df785c1127dbe76c072275acb74d2c6bc2fd7fc24c8bb7988c198b6d05111374c6dae0e13ca21376ac272cac7bb0853909b5ca05210ecf69103f4aab791c43a8e5a9e839c81c5c9d120efb8f55b2f481a84c676714e1c0e5483419da10bda0f00ad3c1ca851407e3b2b1b1221196a2c957635ace2e4e2c7a14ba2d1ca2dbc6ebd9414867e081bcac7c293de267885addd91ac7bda382760958d80864059777628943ea376d2013717542932d4c52fc42ed4a94e642209586804adf523e8273d6d1f0868e00f8bfcbda98079cfeae4e32b02bd2b88513db639a9c5c0e3b62ac5f4b4cd6b4388ea2388ce3c823f96e89c1cb733896a0117d5437dfad2dfa671225388820dccf15a3447aca2b5a10990b8796d5dff429dac809a6a7b3db8ca9b9c833855e657b9819628a1bfac0538414af45a31ecdaa637c2e2741e4ef33b2931dc6fc852ab54e2c851cec6d43cb031d5c9d68031725e098120dd2b5f207be1f6570f2c5c55189e7a47be2aa488c65574fc6a4534b587d10c7f76456441b28ab48883da36d13758f1569404dbe2a5133dc292cc7cd27f0aeac16c1e5b72a5b4862ce274a72ef47b474cf4b50a7ac12eafdea3c793e9c54d9ec09b097cc002f38596715b514ebfb38b83eb436bfd046417ce8ca62fc6ac83d47d86922f1515a451b30b73a8ac4bae0165ac6734159ce85dad3156c36d33563d4b1b54ed8f046395cbe68cd50dd57a451ab0a9c77e133919a9571d5177ea6076d13f232290cd4603e08c832bc8925e8f470192bd20b2e0292e5f59a8be8b0e7378b0294f4fd2d03e1741487b6ba9f597051750f5f6623e974f7dd4aaebb6fe4ed5abf99c7a243d526d771ffd8809c6371487e2ddef0aa79fd648ece53c018cc90b92aa3c9941ec55fadf79f244bc63c0da2f0c63a0256cada37fe5b6d6a8d9ee901a998f958c11fa65eac72b60e79d9746bd07f866661221083e58829e125df4316224c831a7c3157c4aa2b79e9785061113b4bb267f303b2570d10c6403f1d7e5601cc9283a3de08cc84d5898fcc43f5360d0f8f92250673ee2f01477f28ad4046301b0abb40c203027b39a92cc2c93a5858c652968bc6c7743d15af6279d8e2801609e87deace0b48b572c219e97ddab140869474e77f0af00cd3ba4b34fe080bf83ecc26f0b34bf40c0e11051c94e30f27c077b0574e826b604380a35f7ab514f4259897752bf08d81e078758bfc33d7fdc3c940338b0bad80e0a3ab4cc01822b54012ce9980f7a899001ba3a30f97fa2f02b447bb60b46aa9213377f1a128b5f8dc194ed37e40638010e00b01d8c84b70483fe369c1e62c2ab0757ae09093fc8e0a90e5f9aaffbcc7895de1440c6ff9eb9cc7844320ee0563a1f55e0e0908b69a1ea233c4c7857c35b9d5ce43b10cf146d9bf46e0b3fa885f7aae425ee50a357720d268331bd133164258279d575293be81a56299117e9418d97a7a0ca0e87eda85edf6fdc61bcf6fa7ef529c06476eb0f622bd6fc25d729f54aa7aadb7339df8f324ee09568fea1bc3f8cef3b2df2af236253a0fc833d5d035a3a1a44f6d8d3bece4d8858691049dd9186765d66c9b970b58527e98911229a15441423300bbe07f73f6fab624185c001e03dff55c760559b607a448034656e13060e4cc25be84d92797fa1674c5e43da9c8cb790d95223a13647e27588cd3c53cae00049bc086d1359ef2ff4cec85bc88d92791332b3323ac4e6e4bc847c1b921de44ef6da5eb5908eeaeee0b7e3dd6e751ae048e5a27bd8f2029c3d2d071181abdb7ac3b800ac1cd0e99ec7f828106b3e429ef1d260c3e1b2c42bbb6186a6d211bfdc369ead797622053cf6babcb79d9c9e7cfa032c0881e0f6824c197008bbd1359170b9038a5668ba1a60957d4b05e3449adf5947a5569f211e84d003250d3a9331d2c4a90792371377f756ff2764398e44a3f9cd05ed9fed55439bf759009670c54395b66f9e6cda2fef7effad037dd1eb0b81a42457f1bf0ef399026a655b15a4a9a221d05a39258034079f76411c52d17f761399567d5df88df577d8faba1da5a1cf19f7d8fc8a3faca8019eb754c05781922bdee0db3f929c8d5bf28e9233de09441d651fd6699f04a74d648411bff43a5efffb5a4a8bc139461150d890e9f8439bc690e25062477c5d0552f320483ba62f54e18c04f734184baf3061fb6644689cc722391dc6f3214bbc30885731aaf6c1286d8c57f0ff0e0c1af9ae9a6dc0a329204a1d554a51ce279b4399834ef4c6b33948aca269967c9cd3d0c4d0e6d5a17722b3f6d6fc4c3b778ee1429d193510e42a722aa9bb77430fa35cbecf1c292f8dd1c714746b80985b912611b17daef08a0cc7f6455cfd8806d0ef14b51ab7876de3d10d75fb8f003b481306e5fccc5819388ab7a140e8b4f57a5d62647e4452ea455bc2829e655257b8130aa2440709b7087a4d8804ae28ebf65c3d8e6f26d735e8131e355650da6a8e62a8f83f4e3c0e6986bfe36eaa0d5e57d2a053b7efd808678f2774feb2a9ee10a51eab9bf8e6a0ee52abfd32a4395161aa419875c580faf24175acf6e65c2f57d50dc1572ba8089d8704ebdbb63fc161d9378de98887fdda991c20c97a49fc39829a01786cc89890d4e4f68c69ef8013fed5bab2296d3ca8dffe56b50bcb9456ac88e0ff5f05f4bb41f38a1695c2b2dfe02a445e2d15355263628b4f9ba4db23556dc895ffb5c8c9a4ef31b5ce939ae528663d9571bb18095738840ad17f171509fcb37d25e9e37b702d3e5902ddc8b6ece33bf031adc01db4c870e45cc0590e30c14a1803795c7327db5f21dd56b240aa9abc495b0dd5dabdfbeaa894358f4d89639c74453c07a2ab048da70c545266bba7adbe985c704d83d4ee837c1754f511eb4152f89daa32f24191876df881f4b8083f1b7dd241a9c510e88a22c23f15142b0589efeb60f911da823b6222afd291b0c5da51549dc14b3d75bfd89a89f93d5fca5cb540d3e443b66bd9b10df5caf20f25f859df323f9f5788ff6a28fdf5c77fb468f80fec5b0104683d48b4386009baa2d874400bf3bb0a68213c469fc0e0a16a2a9d8df2d06143991c71ee9c0a260a45bba57da9cb6116bae577c2d3dcaa5a88bbadea902cd6aa7215b056d54a1c6b5587b4d80f83b80b957074272873e411555fce5a10c16f58e401729f58feadfbcc24d214be42124edc1cdbf653ce78d90dcf26c8c9e08efa7c7b1223408145decb897ddf42c626f911a7ee1f4c73c9d06f5410cf8e47bed32404d611b36f21d1080329af20c8c28d51c7d1cb4bf57feac89ada5b699d1eda308e6e0bf3c05371422115849dc4043b928efd4c4b2410e3efff62f58d3a48826a9d4f6136259066a574e20ee1f34f01e75df845415eae05ddc7c2d26c75a7f043bf6183623e33747f91ce822cea094f97c7d951b885d31ab45275a2eb1115cf4fc5c7f58fd281d24fefa7e050a15bc24a50ddaf26c409ab0c9410d0d9ac5a7b7d74465fdeccd72460ec5203c9ac3ba166645e82aed775eb15e089f455d9cbfcf4ade7bc763b63270afb251e49553e28bd4bf78d689430ed6502eb9284243b0502f70ecfd69861462bfb1cc2ed6ef9c7272fd20e3004505e98164b5755fa90d43611698af1207bb20cceab5802804757a0fc0605dad7c0a33104ba5a14f0be8dc96f9eba448d37ac0524c14e369943eae25bcfefcf688e952817b67f7fcd470290efb2be09212c2fdd801ef01aa08995fb4008af9193e33799e1eb077018261cd2246720f1ef47891888eb210de0b0e01803bca6283e8030cbe8eb84ca069ac75ebdbdc1dee178255e605c6b02d9a945402e3b25c8324e180abeb2c8242d0b242fe22659c54463ce3cc1de06e957e999ec5b8a7549418faf68de82d9ce810c52f95a4d8eda5de1e0dd15a865890c3dcddc3df1a0b87ed0122d80cbeb1f1c6af063d5a0bcf183b35bfee72d752a8c1994f94dd4caab958e50082cd7e8d7c0dd98bd4dc9fd1956f90942676a24a628a02bfc4edfc0d87e11ec73d8c00d03e40845940c3492f991d60e95370d048ca34ad90c5c9653a88be73da3c5624031736cb13acbd19cdee4be963962f1358d74d847e09427b38d0f07dba1f1c51e1fa861778677a6e5810f4733a7dc603f1d7e1e30705de617ae418d9a67d10ebe40d25d7d80c7a17b49ec559a0940c8e8a1a1de19d0502f4d0d7f1da2a91eaf54586221a1f11ca734f287eebc6d847910dad715e05271e8dbd9d003fa7de6b35642334dcdac51e1f70c32f3296077d18cfbf6ab16d309e0f6a249712a3068a726d2fe4f6e7f61c2b9ce503a17ff0811fa0c01c64041815b0c4f4594aa5d4d2f45634c6d4c056ee032410a7f6e70ec57696fdc03eeef23b87026d335563e151728bb4701e0ca28501b53313a63c2d90c7f50a000c1cf2c51052baa9abcbac289fc932a49088cf85ceaa30c56aeadfa18e46871e4ae494915872a00240f78998d3cf11f489069664481b83065a987af4f70610d11f516582a0a05ba0e4ff56481ffd5548b6a2a0ab2a0fd230f3a73e8be518d901e4fe656905f699a4458cac2a3be3a66cdf187fe77ef6b46940d163035df27ab3f2e32cb59e0e0590766f67a084be104eec2b7d8521e9cf0b2d52841b6342e5f9d1433f7f7a602c825a8a151b8cefa1d6f5e5d03e6046a1c1a0490ec5f781b26a47c96405ec8c3552c0e5422c4f5d8275136b6631f57067a6d1b466fe29d0c80c001348d1267c3075c9dbc1a86989a93a0b0f98f59099414eb8ca0cb2ed8731c5b841caa808428b92855489bf79681d3267831d71ba0ec064942430e019808224058152f82609de0ef08401d0ad61d2356033c65dcb5601da3b02128c9c8d415ac0bb82c86a0fd62cc64cf869c947f82e5a0780748eeae33900713238c0c724c22ecc57e635d2a91af697d8f8d89699eed86a7dbdb82319e9fc6605db332d6bcbbb0ce79d18c0e6b38fceb56ffa63b302dd9bfba1610da64b38a906b7595b85197240f134951528eb0f49dec81867fa12aa18db7dd412afbf55b918833eb045c440f179fea187ea99a3230128dd4b2ae2dc91c82730acd0bfcc958eb92fc1077417cf93fbfcbf21553fe1ed602eb0a198fcc7c0ace1f369820ee2e181ad2af7782d7db99460526326baf8ebbc2fdab3d1262aa3b9be38f8db7700765f36999bf467d365cea677f9ea072490a1fe06808a6f7a2f19929cddcd11fe995fb30b83f15390b1645f9845b01ba1dd4f78ae99f9effeb31593d6681117431d27c10504dfcfb124eeca742ea9f80cb9a42c87564d61f5907d1574826b8068aea49c43252abe6b008e87115b035f646ecace671862b7203739c3d0977764b03e3eabcca4bfb01b68b8d19a8f0468e3538b3b6cc025080a8b01c344fdf25788c5c827a8ccaf7f8a11e9eef6f6f8675b0fb89be1e8b3f3bb4a7617d7ea1786cbd8f2a68a5527a2f1e9c193b09fc99d08415f4b329e3c9536600f3475a76b381e0b7a67c0645fdb7383852685b22eb7c05f4009f340ac5d119f265c82bbb2dcc3f65202149bd76c677991504e6d70678db18bca96bbb100bacbc7b85359b77af902f384d63349f17ce699ef52185d988111190e03780e058ae76ad0425a1813fa264fb6300c1711a10733240573da52628ce4f602fb08d1368fde0305333858cda043fa11d8a10af27343383acaa8ff2de7223f7b2a3624c0485c24450e007a77ebcc89060bc1d8ee4a0caf69acaf0f5b90e0a6af392d7dc7e2abb5514cef6e92d41d25745d5381598c3e274be49521804e2080af9467d9e3ce737456c46258d9ea7a539bbcedc8ca2894150251180953f2128b841b9f7b5800110e42a43630dfc5e73cbd5421e695f3d9ffeabdea3dba7f7d3ffa29ec38bcd9e3de83226382401c33e72d039a190bd74b5e052882d421c72962056be729e7b6a7f7fc037811b48780f7513f234d940e45e42be89cc78370db6a8d90326a632ab320b9c20959cd389eec888f957fcdb616ecfb9f792533d39f9c80c272ba563c8d8cee8bda9c2c088568e7b2e9aa3093b9641e88901ae86355417914492af30ebcc65349db9da08c71c05fb04ffdfb86445002907065309084e908c7917f27f9a7f431512d0cf7001c22982f696b265dc06af2da375f6d5631256fe963e0a6a8fe4c42735515e9fea50956616c4402deff87d67c87096c26034a9606c9ebaa9d1eebfffed140672ccc8f94a4e3139f43b53be086e6e8f829c8258090a9599649da0a4bf2509ad37f0ce6663cf35aa6da8522309e48ac1b2a5725958235697239160c5364eac465ceb44cf86353d3c7071ac9806858b09d8301dbbc60a298f28ed208fe390a916edcd3d550489a215ef3511fdd728a3207c473c70cb06895e9aa0155f9b24f09f3b3c88d62dbe8804fc54626c121f3e11612ac1da37d71fcefdcbba4fac410f446e363071a43453e6c126a8d0f796a249d386109c657f1b0eef03e0c19c4f08f1b155129270cc22db4766ff82029e8c84e028c37af184748062c2b3a08d9a2792bb9db9d98210226f9f488cd8f74194e90103da8cbc9272e1ce3ac3e31be5141c9567cdfaedd67b08839f82702bd097b42e129a0400ed83365de83404fa5b5b0df3827823a69a511a50647da3609cd5b189ac5e878f63a788ef0a2828f2d15de8e23c18aa1f2cdeda87eb04ee7a5ba55894083a9f57d75066e4e958625c799a96e1145b706b3843357dbf281424e801ac2b7a3fb702751c470ea1f6b6d3448971d38bb6aec4ac50235a49d066c4ec62e1cb123a87c529a3fb24c3ce7200707419785d4a7772feb43182c9a20cc65c9433427bdb02bc79cde4fedbf5c0e3c376c1214e768aa1a88b8ac6d8ac2b001ed2b3ea9ae87ff5fa8512be34118d271712896620ea5586ecc89f56566ca23ebe17a1771de836fdb3b75b6bf179c2313080afa8ccc4ca544854ca070909f20b2b6a6672332a16787753c27c3297f0838f140c4ca9024ae261645f408eaaa20e122daa8a9bd225dbf65c76f5d92a9f97a93ba02b2f4cd18877fabada3ad465c6676b6436861dd6ea4fe83c6a0e59bb42f325cd098c8b589eb3997b554514cee77b55b983c142cac9522ea8993a39043142f6de7b6f29a54c5206d9051f067106988414aa0da5f1c75f71ec6bc458f4ac3f90ade23050497b81faf8e88e5ed29b0848b0453bd6d1a4c38e28930e930e14938e14930e19261db9aec60cfcd0be67660c8067665224a5d1c0afd0d709b4857f65d71528181be30c04a147f186d9051abf7d1452e071e3382a2dd06f430a7dd29d0d1568fc749bae14284ddd74741357dacbb3e1815930fc15077fd551e56c6cf7cbc2f07f5e9ec138b5f18b2b8c717654182275b98f3def1b534a58778cb1b51497a3bdeffbde8f6e9cb1d78fb2e0822822d16ea23edaa9fba9529a3384053c46fbfc361d72344487c597dbf7c56bab75e5b59db2b269caa6d5e6f4f4c99d6dafa0af6a63b5d8d77eb1ef45a234a7bf6f8ba0afaa03ad3d94a6acbd6abc655f3136270da02f0ea8adfb77c586947d52dca96db84f8a1bdd6b3517b328de10fc64e1836e6474da6b9d141dddb74942f8fbaac4d23c145ca6d6d785d15b10a4ed49277cf2b0e903535853322aa9352535253525b520fa4277cdbe76e88044a02ff76714a1b8fb9ed6e4bf69ba5c3f58e8b3ea6472cdc88d6a6ee4473e386e54fb013a79f8e4e1938771cd6b4846b6d3da04394ee6399d0be519d8132464cbc22867c2014da14f3ddd1f6cc407c707c707c727465fe87619126abb8cbedc5701a24f6b7ba1f0dfd3eae294d7c65bd71679eb7e4b8b8b0b0e1c315567db22ecf097b509edfb2b9b73f3be95c974543783077d56dd28c4eed01c55a8c2dcdb907dbfeaec0b858bb3b518478c8fa61fd48fdaeaa72cf3244772a36a6d68b536379784234b462e73dada762732479a511ad1fbc0501c73cea7ece193a9f2438bd6c6d6f25b99ad599bfdb1403ecb42c8be6e7324209b7d81d8d7ca56326d74df779446f4a4d369d49d401378f2bcfb387764c9f3b2c039b2546bcef5c8d291259f1bfa42c2104678b8ccd5a5c0050a3cdcbc5fdddef1347adeaafeb8792b90ca0b1ae847a8e6d0008509a2349f16f5fb7119201452e051dfab7ffac7260fdcbc1ec69508cab4d2e1e68de980bedc0fcb19170ea3ffa0561d8a185577630c407370e00f4073545d07270236077254bacfbbe948bffbfb82fbbc5688d294d50ab9696d90eed6146c6b6d36fa72f1cafca1ad909bf7fe495a1c7db9d6465fae4b0331f4696d1b638c31c618638c31c6d86485280dcea2e78d9e67f2bc93e7a13c4f7b1e8ae7a5784450efe2266a656d8e57b6bf5f0e0158dc9c4f4f8619d7f17d8fabd303a31d5f14c7f1effede041c7bfc1a0f3f18b1f8a6f7ffc610c49ff17fb47b9f3069c2b64ff799cb50264d00edfb4ef39acdddff9c24515d4fee856caacdf827a9f5fd150e774149a233dd1e8ffb283efafc5082c871f3d6cafa4226d7efa0c683ed4a4a6e633dc885ea4cb45f0e3a7f8d25334b7ef3bef879e54a2b5f72f3b2f8cadeac6c4ea519a93b2e5c690731b20bb0e90d8817b22a04c8be52f0968dbdd456a0efd39a24ffcdaa54dde6399790697b1de9d2e6f7d9b45014dafe5997be2e798e0ba9ba6f758d78383ab2ef7aab9a64e3311ab4abcde92091a585767171196fa7c896c7f5efae5bf49195a4ef0dc86e53bf774729955900902de8f6aad2f61fb9230fb2b5100a5db7a844c9c9b7b3462ccd09100ffaf4a0b33aa96f8d88d7be971e18e3388ea30c1a18d6ae6e6a8e89f5025d5daa97b6c7c8b6abd371a7ded983dcacef41dfb80ae1cb2a445665b35be25a636b929bd5899bd5839c04158923e45c08e73a23775b53b941bca14e87ff813ffa9bde7f749911f5fee068adb5f631057f3cefbe7fbd11e44134892830e38cbfc62feeb1bff0869fbeab33678bdf37c6f7def1f1fbd3d1de8bef7dfc26e0c8e383f6ec213ec618e3d7fb845f6ffca7f1647a6acaa90bfe088a214877cefea7cb76fdf8fab57e04ca5a8a32811edd2d8aeeeef9f4c0ce20f81ef8dfdf12fcef0310fc32088220f8ddff4a0f7bb90c816ebaeb8cf5024df759693709317f2ec3267afc5044319d4413ea846242a1505aeb174f277d2ac1136832a14c2862ddd57bec701cc3d3e9743a892693496b7d3a69144a14ff249a4691ee9089485df0487e642549933f4962fa356ed2fea617fd840f4637e90742683a3b2586e10f9a8f7ddedb10313e7088920ec35014c5db8ed06d4816e2c96b61e9b6430e925291135bce8812598f0e373a37daeea683cd8df64489222ba436bddd800bb20b835042071bcaa6b71a7a6eec36bdc2033778d66d5131d85506ff9a1440abd87645bd0852858d9b42686d566e47bfc8324b513dc36649cfb8a12f2c34961e4a13deec7e3f1a4af4c58990e4ddd63eca826051e5c9d2b3fd04df041cdb583f6a75e2d846fdbd2f629c13e7ec6ca94901198cedfc278eed9ce3260af500eae699c2467db8c2d9a87b9a8063a8f2c43196143cf8d4a400d5c63997f1074b56116b83e5b769e420f2b1c1544260e58258a911ed20840a46826e15900d89c289db911f2380f98b34c2d0e7bf4a49a544695edb5fb5f4478e7a24272a3ff4484118c79c4d13b03f7466e5583a56d1f7b072d534828ca7739993cb7cd9060bb52f96cdb6fcc5177399f25f29430c4b0eb6782a6d9ccad19452b274324a561107fb549e509b65b3af17f296b3726e962ff4b8cf95387618e23ca1cf1752c9ec8b064eccbe6abcbf6a66a36471e1ac3fb2fe2c9b55a1d8366bf74547487fe432dfe7d3e9743aa14e277d3aa19c4e29a7938cd32965d241f7e9f4426efa7fee7145af7ba31a4e84e585deff7394267cfd94e6f8a30ae3af5ffc4a96ce4d1308f7ded0d9178d0f01dc79f52dd9ff6fe03043a7397f8f7db5ac68686d5bdfc3b2fa9efd7d5a53a1517faa9450274a797e5b559e2c272ca50c6e4eb8ac284e709f2fb4dd4807822c33fae258a53272537555486eba2ac94ddfa21d9d3ead717247b3729446c6cbc6fbb38c8e9c382b89b5b32f1aefcf52cac086d2a4b0a2a039f47b062ad03f126d39e351a5ca1eb9cde6507e46ea59ca1a9f52a25e55a65e46c9c13eb251ded49d8dd72507bead7a915e6a9d56ea9df2eb1b49ab1b486eaa704a558e9bfeb654c5dc7494b751d67819258e9dcb13f2ebbfe1c44d5f5942df4872d35fc6ea06920a68fba39ae893953b6f38d9fe2c3315100ae3df52aa68942a1c554aa992d1979793bf0ac8be5ade5f65b32f96f757e55442f645e353f5b8f9449fa9a55385b3fd593a568e558482f22939db4f2da96c54379e338dcf2d9f593ee7accb77e2a67f8df251e523957f0585f14729297d19557e68fb472e432d4be7a63fabc84d96117dd1940615e3b2acdc8d1c7db125911aff47f65563e547db6b107db2cc5a584a965cb2c8dc54dd70b25490010bdb9f9c704196d9a912726670b3dd077daa74a24a49612adda9735ce6fe8c1b97b179350367c6cd4d1effc865fcdfc92355b75468bc4f95a7525298e89942f09db32dab5b715429c92749b284696284cd67baa3153daca815681a7fa276a85d8844a364b1b1ad10c959a0a977b3c57eebae1971d359686efacc4d074d13205f85c6d358f1806962840d4ce57bc044d491b678b37247ac5c0b88c69b9563b171d3554a0a73d308216ce5554af4c57f460f9a65665f2a256ff97f9fd62c3374284d159aee53a554a99fb27d52665bfe646913c2c8d8127daa94769423b8f90118e8a37f9f2a259592ff0c1bff1938f4d53a028484112ab6f80107f39f11a3af0cd88c80071d827c52e0c58d9dca215083485de89b686a53982646d898cafae305c06fcb6ac45b2dfcde09b7561e9d5ff41ded7d6e7a35ee5d4ae3eeeef9845bbdc66ccb052ab3a9d941cda9a12fb8039430ce0e3c4fecc1dfd244d3eafbcaf348a0ba18096ee23feb0cd78a6b9dd911c76256c7ab316b3dcfc567f6c7a5088783de973d0f7488f07da6c7b5e71ab9b602d9c76f562417943ddd2b84cbc1ca1937710b7fd519c16570071628a2b71c6c367e13c610efc01863cff36ab5eb62f1626a3804bc2f0e3baf5673cff35aad56ab013ddea12cb1b9353f7d9d677c46064d1a8066895bcb887daf9765be999a9919135476351ee8d83102054ab0806cdfcf80cd4541ad82e5e805b85f65340315a0323a768c50c205ecebfb5b3dd3fba2200366ae0da4589b74e0fc79a3985def0063d074d34d4f72939406022bf41501daba7f856b8a7dff6ced9b827dc1bdb283bedc4fd1dc97bb24dc5a5970bda94e234602054ab8800928a4c003c7abbeba16cec8b2dad814680733bb19a75e0633e8652ac3a66b66f08b28a4c0a3deb80cddf8f3a718ac9e7f745b708325cdac23fa84bb45075262b33778340e34f946c8a68f755ce6caf08f1936c53915c69fd21a7ba937fbc442643a3935078e81ce405ffc4ffcc3ae706c9485339d0db734cbeccbab1ea9cda7b55acd81787eafb55ead18636b31c6d6628c2dc6d8da9c2b7dc1ee9e6d765f51202d16676c57d6ab526cbb5fecd1647c65db712ce666913ef18d2e090ddfb8cc8959d82cc46e5ee1580ce7548c836ff08db7fc6f70ec06df84d6c8d538a651b4ceb5879771cb8d79917caf1d717931ae388f268d7bec0bf594e2a7d7be4e4f1fcf4e01fc18bb66638b2b5c3b1a4bf06decd5d903e583cfd315d7b0126c0bf2b7261060b65d6120166adbdfc4f3e1e5a2046e3980010707c85e17c69e8b54a2ebd321747d52085d9f06a1eb9340ba8e2cda64464ace683a058004822481fe6d6a176f611b0aa501c0a64f9e2b4f5f20b8c2b6d7f72700ccf0fbc095ede85b518b6dad8d85dc442245860d1870700090324246aa464ad5820a010bf9a3625fdfc7239223896465a4944685f46119c923ba3e256bba3ef9033902d2075d9f3442f640f2e0c21a89cc66455819ac6c0f8fb08dbeb41c65a0c148f698ae96b5396892c88d91dc618391d401c748d25e467288e600c65dfb5ba1343cb2af6f856d2e361b2a04021829a571b94e36328408577cd03f6ed6dcb4bfe283c65f82e90a5bd007f56988a14f6cdb61d2b61f26f5d879c5a281ba297803d54df14513435e7451f34173427a50ea828523230002661fd730b681607de30d8ab43f2dab7bee6d14f0aeef9f41219f4db9a96dd8868570ce3ed6d9dfe58aa1a82f923bbad26cff5a9fe5057d6357bea2b685631310a98b87efa56fadf7d67a18af581480f1dfd597f1c50ca0638cb12fbeaefbfad7480d7b9b4441763e47208901110380c1c20a32ec404b0113b05a89489ae1c7878615709ed0501849a1a3830960c003ab4fe6a07f936fd27881d69ffe34123c4bf414f140830f2460f7ba690a4df7a96110bfcf003b3b3c3c30eab6acb070f6d52df0da1601db5a0a435b96ea8eb6dd81da3b7a401734789e5094c6455fec4b00b4657f65252525dc67b8cfd3065dd074df150c7db12280d9f6779050027d7d4a680882628c254cfc00b37f01fa6a80123e2ce49458228117301ffbed94ddd6fff3d7fee49bae9901fce7912d96861758304600bc1622e03bb8aa29b2a404142a6c81029f2d60467451dca488893103cc9be0a9815ecd8bc44c04715af28389c98b805093264224d940c405b01eb5a52b821411f2240b2d625cdf427e2e22d4e8188a0d71026c7f4abe49804d8760d8ed6fd3211890f6e9f28424c9407ce131331db8593f2f2559c13ea9ed263d714b82bb25090a2207b92531829fb825c12113b92599c1e896c4c7d1ed270c2c82db8f0b6e3f506420b71f2643e05d4d080d3f3108f1f381fc012d82817dd0a0162ab82151e2866428e7dc901401441ee286c48897734322821b9298092edb23c2f38020b9b9546893175c68cd82fb44abe4a6380233b9f9d472d2cd8796a5b8f900b948379f9c9b8f0ab72359dc8e18dd8e1c713b32848e4e6d7a3b42e46a114485232fe417e8199bde6a5ed4509b62632b6a4e6ced2f6a6be192d4d5571e8850a3e3565b7235f9b71a6da336bdd580d8e2a6b7da6d9f664eeb20b248400c1f49e903bfcffa20b2488047c5a206d3c046a16e12c017bf6eeaf289a1dfb5785243104b37d800829d072ee47e98757145154f60fe4f5f0fb0422745113d3a44e400f337e9abc71062d83023028249113730ff10f380b3cd4d6f457478d06d7ae341b65f36bdf1d0b351a8cc028ae454159a831eedb62fa048acc2d07daab6b7a97f8f4d29bd15c9a1d7658f882b1ebefae86bab51bfa9d5ee2b1e1e8079c06b7681888888888888c8075193a1a1a1a1a12122222222222222221c0e87c3e170b85b1b1a1a1a1a1ab225a0e170381c0e872322222222a2e170381c0ee74d44fa4736b6abb34ae9d76a7d542702644706bce363364617b316789ef781e00c0904c3309cd9bc9c381b02e32aa53fb71c6635239f55272b881a8cd53db231b7edeacc9d381aef35410924d8a700451a5b70785f82b752a4792f2ea99b186f4b4d2cf8f14ad3a21d0c50f45fd571ca1134ec36d9f64f706dbbd2006a13b9b645cb0aa4ebd75d4dee5ee466eade72a0dd860481ef1d226448927dde9db3b130726dbc9c7996f6796f3c5ddc78926cb91bcfecc6530b41d0e6c6238427168a61980306e3fc6e3b49a328ee60b1cfbb8136dda16247e71245711cc7996ee70714362a8adb0e44ec30020d85e7ec8d86c44e5d7ceffd402f41921f8adc683c375a4f56705756d09ea82265490c60a0b2848ba1255d0c590283222f3e6f36a40312ac211a174b0c0df131c4a3e4c918bec31509b281eb4132c2e53084c36129c794c2045944090e0858c3c6a4053f1a30a9028726c0606285101e94df1d2e530360536b0f26d83505ab447476b5d9d8d824d1d3c36cd7176104bf5ffd25494776ddb57e10bfb5a4dade7b2fa594d222aee7ed64fba2187bf5d3b5150b8c6777a644a42ee76bfbca198ff4de22287df1802a1df183182d3051c452124ef49061e705171041c50b4464b831e0490f49e4c480451039b868860b39b41064c3131e24305f693345ed0ab5848ee9c03533a65aeca6b7dacf3e5dae100840f02d2b38bd94521ff18a0fc75f8e987242cf64350653e9639c6f037c23b73cf3d61082e397b282ae8f33c0319df2c3e5bf914c596b6d4fd6e367adefef075d51ae9b9fca0100c5da9091522325a325c542294943af8cdf075294b68c42b64a31909b35e8fa630cbafee91a83e09c718f0d9407807efa327e63105d8ed65a6b4f5ab6b1b563106ced4c86632d53e8fa1787beb44cf1d1b75f1f03f475a52f79830dd842dbb6bf0202fa374c1fd0a753e0197db97883b1658afbb18b6be3e704b9d282ae9fbd777b7e1cbc380c07d55a570772b8b6ed8f34e0da485d395840f27d302ffafb7c3e184b546bcc171393bd8c931061aa59bfcfb4afcffdf3ef6bb95dfc7ddfa791f8b09dc95e4ccc8e8989018ac134e78d5e2ff991f6ae3ee3af855c814c690d861987224992e49362cb68f2570b8944b660f267f2b2528d2217e78c6757d7a41515566cc6682972bd3c1a6abae82d78b0ae5a84b11403ef03c359399bd9b0b05bb586d9190a6eb44c296610aa5faef5ffff1350e3328ff86ef6b0b5b5626b6bc5b5e22aaa67ef03431ccec0d937abd58050545801928a84d6d96c46b6e4b45f9c617986296c06f7e1f6e2ecd9e0d159a6334c674328da86167e6cc0d52822b3a1856a4313b3d94c0a1d972bbbdb9cdd3de72bc3c5787667b66e91bd1a45623716c339f5874896e28736a2f4c92486a11495be800f56f06decfada5bdd196a7632dd8cb3d06f165f0461bfdaabe4451730e02204556cf102cff33c2dbceff33e10fc3ca2259e576b8ee7d59ab3f3bc59162e6841d2132cae406281155548e1a456115031c50a8e54e079b5e6785ead39b556cfab3507bb8c2437dc606ff63c9ae990288ca0286180cc1a50cd6a7ded894a72a365de0be27bad4e171a1c5332a7d588d4415f5254d0f5b6a03ff732aed76ff67e180cc52cee843be04ead06e4e58c513e508321675762ad925bc3d8d9d92171c041dfec7db0cf236116df6b7580ecbd367b1f90cf773cdfc9bef3058a0ebfc776a722f8df575e53032a085f8975dc0c692ed3e32face3f9f3ea52203e6ef6f2ad81834ce63503b93fdf67adbd5eccfa4aafbe197ec480b070f1cddef7d11daf24b535fd8edb15aed58cb01ec4f39b3f9c533db3590d1cf489754e3c039e21855778867baeadb4998ef517a679cb7f360b2d129e617bbffc6ff4f86300f672c6a914e92f0f49dba7a3906fe604dbbc500467b6cf883b2139e3810e1176d4acace032774c1b16b1edef230a2e6ed9400981b3cbf34097aec913a413ba3e59643ab576aedc2ee7237742e900204136a1eb934ca4b864e09c0c570ae766bedccecbed726ea763924ba95a3b576e97a32fa92354336a6e97f3919ba15273bb9c8f9c4ace9549ad040b79029248d72771e490ae4fdec82448219209b924030d5a3b576e974322a781d9dab972bb5cb869906b83ef08238a206dba3e49844b0035b7cbf9c809600031b9018ce1cebef20ae7626a6e97f3912380cb5a020c40c7aecb68a2c6e859c2ccfceb2cdbd830312c49ad29ecce5c05375aa60635901e111d6daf964449d1572894c1a62d3e03a46b0f7e02a8a92353e3a68742f6a543484768448564ce108a100a2a24a4e3a3ffff9f801a97191e097da34e912defe21abffb8d576f71bd5d993f1c821fadd580f08fdea2e65638f55befbdf6853f8d2f0f08c822b41a3a34db116dc3403621fbf21e03b1cf9618abb93aec5e5bdb2716634732681862b21918ebd914d7e88bac088f27d3b0881c8aaea1f22763a3d8ef6bf8853d212da485b49056c390b6fd653dbe6a9710a9cb89b26dbfdf77e90bd553c322349ea60999d57003109a03ebc8503df6856532144a891297395143a086908545b63f95c9687a2644a7e6c0406ea8412643d96e0844eaf2940699d0a854ac1a8b52cad08c00000004016316000020100a860342b15896457130d61e14000f6e964a5c502e120763812087411c04410cc3408c318418808c21882954643500d3d9f42ed897290622390ee4e82591532075a0697941c8cb29a97a82158babc86411a26d4663ba3c84862c496301ac395c23dc1c814c11251019111c4cc64b806993ca4de5b39b6022ebe621f19a986de43bca6ebce4f5911d89cfacc4026845ffa0d2743430deb9f1ce00ed094c9c54551ec696f244ba9ffe6331b44012bf9241d5ca9583d2a73b0d4833703dc7541882fa0ea1023a21c5e5fb3431801f9c831a5389220bd88f4d88730cec22171ead89c22460159c1a4fdb69340a6a7e1c836de6217e6490988f557d1fc15386e5da67d330b47b41f1829dda6032932aee482c37d3a53792e069efd73852dfd9382d4cb4b982d463b6f2fff83146d5cf91e329f3788ed53c53321489b55b2df61be21062f6c066e1b66cdb40dca431889bcdd488ec384d2382701907aedb365e83056343823d6555efda6cfd141f4a9ae3524c8ce380ae29c6a9af4adc132a97cd1b9e18423b0b1ce2d5fa1475caaaa8a0270164fdf6013ddadf7200814560084a4b7abf5190ce6eb7013ebd9aa003bfc5ff8b637e851e03fe09946622e504386468d27b48782afcb2cad0f44ecdd6a420d28cfeb76eaefce47312e208af32abd9fea1403067709c4c2cc083d083c240830b0834a6066136f4275036c1201aaa02398819f14d525950ad3df2cd9fe0b153a532e055db9c5906d322106c9652824275d21a50ca4baa9b2d26ddeadf275830d56c3d15254f695a4fbf7d5a48b0df9a18fa898f8aae26a7d9af2aa7681d97eed653b93166553bba36d5f74756db53981ebf66f635fe74fd7f7b303450e46204853318a7383f517e4e5dda3596e64a69933aece66ce2e62d5808d920df24028d7253eae82a5370a9b5fc338bc3c755023d6f2141ac84dcc107ac968ac0fa01e92a9fc9b22fdebfe9b272b7e99ab1ee96d3000827f680931be6eeafccf523807ef79f26e643dc812231115e54e853d5a34349260cfdbe6c1bd9c335049339aad415b33f236b70d734d25836fff2eb610b7d8ada43663a1f021f156891659c63322187c363da757b0d21f597624fcd8c8bfb6098538db827af263213bc01b55b80fd041d43e8b896ee59e2a5aacfc0783a8a1ecf1d8194a56cea4f4d13b56c48d2403bfce003c716c003128384581c1a9dc84d1423cf270910a571ac569fa47169105bbed1a334240149097d49d4628fe3a74e108b4edb2b9a287240fa5ee6c77e9d8002c2532d764b41ec2e6cf22c24925dddb72cd0613096c330d7faff20d8b1fd58ec3835a59014242b3fd51da4f253354e511bf4b675f25d511f34592ee07cc97b865a86691f2183d6f312f07d4ee671db4ff9f122a9f534280675c6204b90449a0ddb14c2eba24efa3ec33f570f24b9e71825f66a150a14b0ecef0643fbd549e47750a66c7892dab3ec9891ec582e11115292ef51e49bf240c7e7658e349804de9af65354a7648e6d24bcba8c2446c3d03c5f56a38e1beec099bb44915720055646f1dbc2356a97fd02d214f01c96391c24526259a6723c4222b21b35d8cae85982f0f495442115bb73e77de21074a540db109e6c83f0553b80496a169c8d0e52666142a0c75988a55d7ad62c73a8c6133a89cb591ab4555c17fbfea7229de668b42d58ea67e9a58449db53a8ce9ad707746e2129f73c25c4c582e7cef9abf571d66a83b45fb47d36f64234c406e3921a8dae1956cbb139a6a1eecc0c54a76ac7efcacd0e135e4cdb5264f51330ce4ed1ccc864682587c8ba2bdf0a55f71b3b7b1edde61d747149ce04c1081444fd1f449f4107b6a36e2f19aac4dbba15f18835383bf4819d75bad0760433668038a37480aa6ea84bb614bc835fee546a2f64be0c37dd9ad2c000a4b8b7c83b1b61dcee4209f10c04c23c4d6c71e64b77adef75302ee9a176641195cfce15616796944e80f9b37888c0a492e0805b11550c20ab03c1b9faa3ff5647da6cd10478c556d50da410aa8012a07d4360beda7b4e4454dab19e28a2b314ee8e11c568871d7354f31d1b871d05579ef481d53bba53fafe735429b002c3b59e4b4fbf5071464ac8f32beedb917772b6d4da3f05956ebde2c70d5345a95781f1cf9fac47d6f423f1c05cd3b177253f8df2cdf540fd8a1cbd6f9051747a83aca3078c4725d4c64b1328be47610e4d3884a4a774442299e8f8fe1a9003500eae6a6fa1360e5b6c8c3d9a37ba107f63a07c6c14dc067beecffb9452a74184f64debe1d92778fad7620cfd65020f3327dd9b3cd842df2536997cb0391016bff6e7c3d63970e0bf161ab4bcc86b545d39273d41b8469d1133357ab5abed65aac93fd8accc65e8cbf46b7dca7a5c8d3b25da6e4abd321fda73e2006c54aea5745eb45e0021fbfdbca3eb1dc18b356b05bc79a3e1f82b296221e83fc9fe481151d56e83a801bd4e7208f1d7fb23538c54eb7b831c444b884ff24a2e017b09c52cf4770381a3246646dbe9c47bc7feaf4382d6d76fccaa05ee502400fc0849c86c0539395cd8f9b96f44e0e242fbc338c6a8c7969a6308b6ce5a87baff5edd9cc717ce4ad30972327756e06babebd2d3deccd6c2e31b925d3310e9806d94b2e501888a7b8ed4131d2d8adcb8d6ba15ee279db3fad124c9a5a6be7dd7aaa6cdc5f2c169084c9767ecd0b19d8821120104f2058bc457d6efac88a6e326c5d7629ae603a094eaa112c5d3e6b6dfca5f8049c3856ee72742e1b422a33f52fc0391523a81c0d69f5e62c979c62c496fa55218042e46ec4acc49e03c9a23499206baa643c6740fae32f0ff4b677a0fb6abbb18fd9c90d5b13f1479cef9d88c5c26193a2db7d8e93e5471eaf244de125856957b720614648b2bdf323c10ac70830bbdc9e8998f9669a86f817048551007b8c9ed466e2979627367379510acc964ba40bdd658a5c9bec7cc8c06e79fedee9f2b65c2e02aa00791b6cfc7175c3432ac321192da4ab39a23892e20718e96f6764ba3b088a06021b49f813c08065d5bc275916561de3f920f2f7b0a11fd272056647dc574220240a34f68a3098ff3e42ae138d73b549d04f4a4befe0fea9b0b1a4ff98688a0543e6d1d935c6ca84d1685e05651b56aa9369677621a8930272890fb26178c266cdc7e09908b138127d3081536791a35200a9f271225b0e2325105ebb8dc2a6b8682a066c4a4f4290d0f8439ad242509000bdd9ef0de97f0d274bd5ffc42d1e06c36343c0397d206f46deb86479413aed85497530f71e08603dd32cc7df44de780420eab432bbe9278243880d6e2e3f496e6ea16b83e8b2e48a773337fbad92811ca82a0f219998684e79565f04b1d89db6023a4222a5a761907579440eaca618a2248b9668083169f18124d120db6a19c1a8ab5e3662cc44c63e5104285a92c1caf4279c51ac76b1430e4549835cfbd5cdd36c9579e5a910d2d5f0a98772568b3ce10aaddfe6cc55e49374d89fa8d23288ebb8ca19ffc85db9db2608a9b5730cf0a936860e84ce4797653876b7c3a42aba9e892a3d4c0d5a60dd246f5e6c9b7b537deca498477191b6dcfe849ebbc02c4a13c897a1633cac3165361c88607289ee9d4e50394ac4ef422ae38abb13bd9be6f8f61aab563fef70daf9571c48074b1742a36b787a9ad3d4d34e2168126a65a143b80982768dc01d1624c6a604db0712241244e53725ce1b1a1c81c7297fd0d4857a2d6264d6092671e1a2cf820ee4a4d461a82d03750b26104a880e8ca0368ff144d3bbe69e7bb3332ab6865942b69949a199b098f2f13ee4edf608a929f81baf5116b1325ada2698f6c0314cf7a706e38096455d425491f19da773af13620161a1fa36da12e02c90c23602bf73c9d4054ff7208d7d90642b736ea7256f836b16054726888d5080965c5a29f8c01ff4b424711c281643e732f480c71f03066580e42743a1fc39eafa693b8426448cd304b018fe282b46f6d7b9313e4e67167d08c21de3edca1491e2cb7cd97af1a97dfe1c0d74a482cc8633ef41613b5de56f2226ee980bc7a760fd4112a8ed300943c08e530c8a02269e14bad24ed054ea3cb35bf72b134c3dd354fdc3fe11b35d27e5bf44f97866037bbd36a4fde5c4424b8115f3504d06cbcaafda437c19bb22e3f8b51ebb902b1ba39e8a9bab46e11b85fff56664d71a1f7288e5e1becf929deeb3add83e81f15f44e2707cd78d557e78f8ac64c3f79d57356cb751e1fe044920406204860ae824d19b2f364be1eb98512f3a52ea7c7b0dbd6640e1184f5781abb15b6e8183e316e51c796d7913e8f169de6adc93d18e83d2fdaa8650ceb1da4791f62321c54804d983c3b0621592e89bf327e55ad9a4b8ad5c53330b98aeb6a2524bcf469e85df8e78f2cb3efccaf5979fc9f76775df03b5420f988c2f0ee08868449363064ff578bcbee40edad5d51f089e74d7fe8144bbbde136cc8aeb6fc2e3bc0130b49c433edb591734773a7b4576a2b0924ceb7c7390282e1cb5406a81f76912b1301bf75f55614a72a8144a794e2f64b3d54e2a7d3313d9a3adfcc966e923a6babd6216982e08cf0e58ab23d207efdd9a62a20a1dbadf6690deb3676cdd01a10a0005d692c4ccf69ccbacbcb1f7543fd22c3bd20f44339293d1d28bde216606fd994b4b1ec54f728f0e9f064ff09aa33a2a9bae5b0b72921b17e68729bf887e0be2ec4ce019bdaef8608ff5fdd99e7e1d0ebed427ec600df399b145949f9fee96346d80b84f2e613b9e1d39a7a69bbf97e8b1c02f29ec1df16edf6b2ae0348f2d8f20d9ea29c26686c5eea79f3f631684c174b1d4fbaed5bce6f238aed18c1f778beb22c3d7fa7a7feeba4bbe183b8f56c76e7cd45b5bf3ff68cd9248ba7dab063dea17622191c343135e66c2826532034ef14c2f522a424722fa27a4a117e3e4fe41eefa27614e213a77078b93a94cec004dfcef3a2aab3cf2035968a9809e25368af49c4d7b1c5a9a85af944630300605f9b86f9535e840497dc5028a9b904d34ca2d582c207910c22b3584a712400486d9e1c3bb6ff7d101b5848a52d3d2b7fffe143b11bb545f3b59be689f56aa0f68130aabecc336df77c4567f486811cb0eb0b9f337738d7b44157b4000a910fdc7c1cbcbe72bdb439946646a4658757db91606b9e727876874e033662f814e112a83075ea861a778c80cf89e36671c27b563c38366d68801ab57c78d177e559f1005167a2e8f29abf65eeb98f9c9c40ae992511cb515888babd16e9f07687af02dfc25f991620c2b47c5647a8f2041083d227cf4a98a11f3575579ba38f369cec771e3698364764ac3969da172a037c93bf401adc576f2634c660003e7fe118623c3e8b1ac6afd92a1680cf58f4905dcba306a374a8c43527af5a3a6b292c0a87562f4844ecbe9202392fde40c94fe9f85bf5782bec097782d250aa78fa6749cc92c486495b9c9cfe41caba45e7e54df030d59b0641a49ca45398e87c6da34d7f6d7e542920a595f9bef46d49f8028c219e551ec5a3d589ddfb91a34a0e30c2f19ebe5ba9c212a479b697d555ab417949782354a7df36b1d89455a5ea7eecc4c5ed104acc354aa357bf25100964aa322b91151b1c2de2c7fe71b6940f54facbbd850864cfaef56c2c0f982e39ecaa965f5d7cfac2998b394f802fac68f556d8c60c9a40dc3a059d34b5b910ac7301ddf569920ba0f64e37b8c5f9ade9cc0b435b5d36c911f42c5d8ebfeee98615a4705264461769ea6e537c2690f4b37c74b136c26be1b21565bdf62dd0098b60a27258efeac1839295b07f6422b1afdb8c677cbd8087ebefc02915d75f19a3c852e9a02bfd8636af8bce433c93fe86e7e032354348b8238aa9ec9c07f8d50180d7032f28d44055f3515edf0624dc1b6019669ea45ca8fcae12b8a00f7e53ab832776850318ce5223db78638f08cde389e37e83a02c7bae9958d89076a7ebc063da26c2cef10829d8224d223292dcb5b80be7a0c2e4714f5a184f7c54ad6d5081061ca9ee3f96a95d10c05b7fca91dbce1d46e89dc9400ca3af41718e57f88a79fe4d6a53f1ffa92b7a41ac14f929b6aa9690442cfea2aab8d0381d421ed275145420353f6f97992716ba33d0968ab63350b34fd7ac4c500ecac93377622ff2e6998d59fc32eab8a61e6c274e9d8ec6a2dfc1891ac4ffd8ca69853d9956e1ab7701ab60c7eb5ed6bfb177049c6e2d0dd67a35783f1db3255305e33fb3f32f107c0ba7a1cbef259dcbb6fb1da55b1c69bf74720285ea29d78c4a6214bc7bea63f7b7dd0bca51123b4c6e42713fb4adb1d65f4019e1698adb49e9da62b3116ad99d0bc16d37d0692cb2841a1c80a4061133cef0dada9e69825cf7af43b63c415b2284f51457230e9031995d0c50af753ed9d316f69608224db1594b11c76705a3b3423ab5f8c537e244ab2761cd67adc84f42a0b16d1f70e7330434054c9ad98642cc302f1f1286a27107c601310c908d7877714078c152372da8565eb98486d41ba239b1a72cf90f05a8495a6c072af27347521196525b71f0a45381ea5b005f27dfc1c3d2e1e212155f78f89150fe73828acb15e7aee238f3036e0bf6bcdba174b463554329fa287322711c63aba32701f766577113913d19d620d5afe7feef1b08fb97db65a8f396600ea6810847202b2aa0dbd1453a7476065a58cc9236a83c80a4df917abd188f30bc86f930073ff83bb259b34ce05dd6c5d28804372eaa9ec58381572f1ae7cd8dbf118a1070d8c5fbdf8d04baa04119f0d865df92584141010d1980da131833fbaef26760bf7624c9ee0d48d8f28b43f58723f3404b064237a7d7854b07296e0b9c5c9d22fd7bf3d5e953e510f430596eab74faba0d6a95d6842787fb84d60c70c0327911606138b755b1b1b995c3f3d8f020f0c38359ba0039779ca011aa6e8cd5509c9e6aa36b4f6838363798604bc7f835df9f7db1e987beee6c3f84ebf847e9182045442a38c25196fe40a1dc8db96e4a1e96e59f1e3fbf29d32c2283bdc8d62a407856502dd8d9e915d0291b48c60ced705747ce25c5637290d5a5ec2c326479d446da7046d8bcac99db458cb747b84c9a0af721cc89ebce33a79a9a207c5f9e052c87a6b20001a1500fc8ce5b6fd059591f383e1d0601552640820e1b2f822d5d0db8ff85bab277c33a869bfc66ee8cb5e807dda6dae39ec0877f258c7f61238ebb9687608bb1409896785b0de16878c2efe189ae834b5d7ff52a8c7fa998d113a8e6b78d991c328cca9b957efc3b2986734fa2dc59333cd5e3d2e3a59945882fd9b51c272fa883a40c48d6582b02fc4dc5928e7f119929ce19db73368fbcde45ac59c21d9f6cb6e251e582ec9157737b1ae916c95fe9cff35e2343a10bc75b9dd13d8504a23928d9b548d173fbcf6931597be9f9d8fb22553ae2154092ec3fb7a21e6d4513c68affeaede992ef16bb36dfa70839291674e1bfe7073d34941cea90a68f01d791d459f1d64d829d083491838ade358c0f14f0804eacd7f6cb5f7d777d917e3498e29559a45b15668883a403cdf09b1819478c713ec8a3332ecf6db9b3a15c76f8265d19152670041b685584a9de3b0b7dbb57a728eb702cfb2b192cde2163b746e19dc36bb20026348434679adade686b73184048da63523fd1b18e5f386f0056f189cbeed8e87f09d2c22a35971cd7765b7644aaeeb7d4ba01d019ae779a37033a0f523ae74d0415989f6fcee1e44919f7efaf2fcc9c924342295bef7aa4e8064d4a2d01b9c2c8ab1def16a4e936a1e985c1420c3380838bcd9eb8dce503154b364c1d887742ead22c7fc65a9d91170fc710f7d4b9c126deffe0694e422626dde5cc73d9b71fdc890d07a6dd10d534ecd780d1145cdee5ee18b67335d150b89d07584c3219589beb7abdf804a4692108033e01406002deb4bfe27f586f48c388378aceb27029b82138d423d28b74ee0966ebb5b005b3eb0699a1bd463fa6e6ff73437507c9232cae02b6e939b3fb55431cba67ae7e72c269052322f27dec2aa3feaba785cc3f4d361ba693f97dad08a70d2673cd5346477bf10fd1231d075b8fd07dd0c8c30ac424836ce08c24fe4dcd15b11f8233c6ad25d4b1f626523981c375cb8c07beefff032993d9046334c723f27c356fe5aadb302777e02927418ab80c9ed031820e0a82f6f1af7f67db0a8aa06affccdbbee2b0d645e59a96d70f5d48cfb4a2b53a2bc07af8be09ac3d095a1ff3501b8aa5c0eb058a5e16fc57eeb14f3f79a505d9cb97857c03b6dca99cc433bd8fca1685c51b46c2544c8b1dd6f17605475035b88c871b9c6fff67ca3073baac5bef0cc2cb118190c5ab4fa2f9c5351a000f2abb66b9b02422869ba85b621f869b580404635f65d2ae5ec7c0bb0defabd00cd74ef3d4deb69951312e6d49da785945439d8deb2d46e9b69c54bcd24b60261569ea56a28eb736fe4e32d07130f65154e62ab67662d292f37bc31a43a6d9379e975d90c742b41961750420c2dd200bb4e5ce28d926b85a6466a1c0b15ae937cc02326215eedb2b17996a6a59368acfe63a676e149e7581305491ce621236eeb9c7cf73b6fc831f53658ced4a8b1da2a4b11151010c94ef663b3083e0c44fd3af38683282f531b139225c0698b69337b8d0267ac40be73c9d2dd0084383ddc828f50283268bf34cebdddbdc916d06c02fe6361ab5f3b7fb5bdf949682f2e550d4b1b8188abec48c6cf2b46ded516dc2fa2d5c2110651963a6ad1417984cb41aa20b89c5febffea75ca0fbb1b3b74805910597cae53497a0b6204eb7169fecddb21cca24f20c5d93d8d44cd8b426c6b0a23a542a3177c3086a28c8974e3b997a860013248d804e4a40a10aff1a2bc7a3651383d29495ad725c49c62c8928faa64cada22ffacd615554c70ea7c1a73859d55625751bf7031f795fd426dea1369827153cb73e67420a405cd0e1feac5a66941a636ba0b4293e03e3cc84c94f829de4d203bedef6db4c868adfe50960915e0946b236cc0137cbdf50f9e7a673142705a1c1b6ca403098e0f3557aacb08ca24a3631e566f87062cacd15570bac926061619dcc9604698a923bc957c7c8c91535416b2541d5db1a435c65134187ace6833b19f14b8c928b54e62cae29f41812d8d3fd89be2458b1ed2f08fb20900f0d1348b72ea0cdb8d80379594684155e8f151616d1744cfbab4157b6b739dc0099c68553e5ae2dea987bcb48352e123ec8d418a92db2dd187ec61d90148d6d5c60beda02fbcaeee62e6cbc5b0f8afcdd9854e115db55b778fd64f75c282bb460eda5199f9ed70556036a9aa56a23370007e82ad805cc7061977e7d92e0909caad1edf6d31113b38edd676736c927aacadb41f9b744f68ba9e3a957a30a606fd28ac8b42b368921ff38a6733a5312583049b1d399885bdd44503a0390fc958c56961a5efb206ba874e57494d0dea84675ac3c42c3dd862fb75f0a9b2fa1ecd86b800536769a7fd9553ec4d383b6ad5e3b0f5058191466c46743ab91242040221a4cee12d08833ae817eacf06514d9550e9885a08ed9e73ebc1571af020ac368fc077cd6c4fbbb16bf89c530e1a99b2541c2e3620286433972a0702b2243e0a8131771f011b6ad1438d9bac627f9a0c60a4ca8bbc4a404e2b2e1b850edba8655bb155163dfdad6499d431770219812b5536c183f5f30781042c0bdf2f037cd84f7d54bf26fa8d0936616f0a507d18fb4a8aa68f22c2ea90d5e085b2aab7fde754f6a3fc55bb3c2281935dacafc888d863b56d870f8b5d954f96bb1642b77591ccf9fc0e396489b43a3d1056bb4327859cbfc2e1f4daab72d7ad982287d634bc86e62b9a2bf9bed134e0fb9bff9a34442366b1733c367bbef2cb6a9338ebf4b205e6103268f947a099c99cc293e61b43e4deb08e5f379d78ce742b2a980a17427078b1b1bc3e0f302eb018b36cad0eb15fecc83cae5e5ecd10156b2c06899a028861c2355c67843e113943ca6de82505bd72a0d473c951d0c0f96db0fdf387b9f58fca226b2e71d27f8ab1fb940084709ddb1b79719cb4d2e0df6806533eee1ef5ec41b5cd81326cef24c4f3b0b6ecde5a2844a6775f3a58f65e693067be503e8c98c654c973e9631011f18c7737774344a61034a15d2b004c09a106fe8f1993ffd58b1eecd1fb4a0579c3896999666586602e0efc0164d69dcbafe769963813a208b0be3eaecddca8e65a6c1fbec719d4484ea4a4b70ee0aa56bd4aacc7a5d1a845e9a2c58b5fed7cb5a510869a7efdcdd45056f839beced8ac73d85c0a3c558d2b3f8118d447106288ca3694b631573407ecd7ec4f0d050dfdc11d73048a700b7a1a81e6a83733f570eee12c595c7484582e530db78207c747ef844281243de323dac0ac47f2a34fced8f93874677e1f959ac8e3ed420a7bbf73b733f8d5ee6dcaf93855c71ecdd7d5518eb14f106f3e483e621e05cfe4bdf1b6d0c02c771e665f9db73c91358868d63abdb25451ab6b4fd7db9f4a735d50bdc3f4069730e71a6228e38326c60bd8d53a401de9ddc7731e9eaa45e4bf3d402fa2a3e9fa2f94ae4c8967d7344673a6dfc150fcfaf70720d86f6a7a110c54c68fd8adbf2c91ae91eb45cbf2fff258ff15f3c737b644faa80e9b11fe1fe24811f58331f603af4528096fcf88b26c90a464cb88e4947f83df7d729164b04153477eba2be067a902a2c6c6894ec1be00f2cb35349ba4bae3b50c2801cd05be0c9802b165052dc34cb604b86cc4b7ebb0487b2a32383fe8a5ee1e418118bf15ce4612548e190bcfcd8c276a38698164816a0e58de5ad77a5319e033514064923ab189589a13755ccea034f1735c9d7175f627c51d5625b502d602e8c96125f677b918fe11e570e83e8a0965abce26992eec2b2ebf686e4309c1acbbd6cf7e7dc62b382af4c28ae2fbc4fdeb5b95e8bad130215c4e2aef0c61962b54c3ac66041688ca789a471a6e9e46fbe6187401f88cc5fe11930c1a982769a0384c056da9933e07704ee006e741e8941c0f292f36401698c2799c80c51ff90fa07cedb18ac777410e93ef80335c7e827c68ce3895d0443a22784734833aa07652e18527a59732a36dc583ab198812ac1c2d8863833ec78f3a3c4154858c59d52fded663294210643b75f38f12663adace65650a1e9deb0820523bf92dae845b59fb0a79a53038a7bd304911d5bcf60330a8638e911050cef979d2c2f7614397392213335ffa7f4649b9a2a842b10e22b1425dc4067b98e949ccb0b4ef2874e62b60c6d90e0854a08f175b9ba0871718110bc23e40203f143343f358125716d24d1ba38e45cc61bc4071d404479d3669d45dadd401d4feff51473e01d44f4646ebb59931fec39edb2263e7073dbc9427ce0e6b69b85fcf09edb2e2bf181ee6c3b4d23e0463fdedac1e6309c0d4fc242f5fa89729401fbe6c514554c2c44815df6c559e0d8543a9f0623e38d9ff090607540d4e6eeedc11c98333476b3e5a22a8f486709ad099f0dbd261bf46e8e13e329f79827823fa456d03d475545d0b3ca3006eaa4ac007714546e1372e83ef84d3a395e9f2305c139c52d3de245f86d1954892a555dc12e134b5f1184442cb34f26b552583679297e09a3407860e714b72c2bf2b6fe8e16455dfc6a28661bad6482b8318ba3ba8affd354f5505bb44aa8665b4fa55037f99c1ff925e9708d0f7e898c010b86c807d50df8392c06fce36a64ba0feaa1c1ce9d8e36cad8fcf90474e1ba3858ce6b36ff9758338efa53d8641af9bb1d3ce964fcc1d922300e6406330736cf6012ab16c4a476c7debc541143c3cc81fc470139d8b85e8c228e7654c841071bfbad99fb72eb277131c3711789c22edfa5719cc848fc3bbd3089ae03ad1d57295f5d8530a6bcf633ef864a35f9bbec7b9dab2483a4ddbbe601e2c18b3e110b25b035ddb77be31a24fd0e6f12f8ea27e79005c27482d40a12203d769a264fe0f306977bbf1bce9b5f700c37a624e258795f540685c2c8cf71a0782c07c86a1c28f952d9696e014e8c723b0887810c859ac198d707f81910d219fcf5a37e239d50c4385970f9bc60df2a822e39518ec9adeb7138b400b1ba35a575ef70a0f187c5d6e099ffda9b4bcaefc419076caeee25969e745a25eb143da3e91b049c09779882770d0ef98131043f0c029d4c5e20e052bc5bbe1cbbe2ca9d3e947e2a454329437d6de7e46864f0378864f588d6551166f112c7cdc0a02f8f24017901fafecb82d8689468102226830071399e880c34e23eeb51e8cab0ef0e2396463176314bbaa9eb34c183e8920828d84325a13a98b10ac7a567004a22f28170398e58c70d03625b27bfb28604f4a58e88ee828bd7269c3a5f676c38e4544334b49f7e91adad368d420ea6a36230ce4be4aa389f1c537743b36f20a5fa91c2f21c687f559294219b57fea01870d1d97cc68279ba19a0921a54a4bdd81a9f46fbadd79471fd67096259c8d12434dee7f863ec6006970696fa70548208e2fab3a77d50aea107ec6562654f94c919259ab39c4ea4387d7f8fb3ee5510555b375c5f1ea6ced63a186f672aebdccbd8453420059f3ef95f6150922630d214e094699c04ba7e956efa6d302a3a6a14fae31eefec1329cd3241489bebcb87443f6ea5ef884ce33d98179c5235b5396260ed973f46e7d22cb17608f9c96a124c6a9da8f33259bd598dd4585c68b95410d3a957a293aaa787bd60731b2924710fafd0675cf1ceed8ce942bbc0093f5c304166565e2b0fe0330676fccf678752e06fd03caac16b0f0354c6859750c4bf8f299b8141ba1f4b531450c6058b10a7990385058c557af41d7e5868f2bf903c66f40eee06b573e112617182fb9fa3fdd14c3c8b190ba05d784f82d8aefa8346ffd57a6fa1d9c83a669f466b98c72d8e0cc9262addba7922fee1f5b61e8503f8a224205749be8422342a3ca96826dc99b615512020da1c8b722d1fce45fda1664a0e204d69aa0e57794e11399c3cdd032be63f73bcff2a44f2042bad0ef88895d8cab5c8ffdd76e8b4df4384fb73b4db52bef351bf52f7474929eaa9eb26f940f5b4ad27190b57bc578d97fbf08bc960ebc541f88a76f298c0101a448f15316fe121b6368942bdad52ba1c5449da6790a8122ad10dc9d414b96bede1bc8e54df3288dc3b3c9bb3fa858e5712c27cfe45c309d97db1f5780df85fb12f403549878e38d7348efd49087f1b7d98131c312e3a99ed2286493edbcbe6ae5e330299eb765240509054b8941a2462a84297a82ec8a7ed497fa57973e6a1ba133e730f181c68ccc94d2e06216395131e54ae9558bc706bb93a804b28ecd82d3483855837b06fe467c435b224d11f4158a81c76ead12d0a82bf0b18566ed9afe61260b5df300b587ad7d558f4ed4aeb0b1d49c47a5d9858f3c977f1dda79e5ba7a0417ccd328905b5be104315775fbc99def7b9e9e68935793a6ff503e296bdd996a3e675ab19e5bbf4a60aa8d27b3f37dd7cb1e674de7f685aa15b2d2edbcb4bfc25a5a07ae9ee866cb084c312905bd23c9d7c7346536e8b390bad894f071f8f37bfbc956ab967d5d9fbb9d6f4d6f0e39a588cb0e124e0ff50bc3e731eb445d8871e74e50af6f6195e8cfa2a5ad8fc2c53941fba61c4b73ea70e73fbe55627ddcf8c09337d200b73f0977d3807931e373f475b7525c4c31b9c0638f0d728e4befd1a0ec6f648391ea30a900f6ce7d0566a5de5178ae0a8091e5dc1a42f359fe0feceb015b412e6d771b1b03cfb5a113ee016850c747ab7476879d60ac2600adab23b1921fb39223c59bd6497180a2fec996d08797fd281199ca4205684b1c76f1be7ca070a960fe71cce74420c06f890b5390f8f0e10c981cf335519aec86fc55786f44bacc1c779c65912f135d96bb54414d817859428dbac0e618e6a45e8139c482c1d6cfe9fc6928b513c5256c59f2603b784994a06c00db5436374e266dd62851fc50ad5669fe30e3109d26bf8538e209ae87a00ed6358e780a224f9f51670f944ca7ea1c92df1e37faa915e5a002d58d44cb4c92bfa90d825b00029211e58093cf6cff5c743bd46e11e34dd451d22ad04b2b4c2d2fb26089bff4bc2674f8b4322d1e01d1971a73f660f1d8fec2b0493cbff906b54b6f2908d791cf873acd918a439a51aa4c00a9bfaacbd69f3984ab6e558aa37ace805cae8c86dc9288d5d6744ddc309ad95cb25a0a22b02e110ccfd50a9b6e78e836bb71c14b002056c6007c22004ef9b1b7c4b3f2cc3976a5bdf352a6e2caac1ee6d5eaeddf8a20339bcc00ddc9a0244a2be711d2ee5b7032b979d0cf68eb17be10bf060162311422683edc465e119670e5fa72b69dcdb6c41202ab829a2e203573098b4f4c486992467af5a0da63667095974b7d6afe860cf9a7b05de0384ef742d1ca4dd691c9edb8a459ba9aef8c0279941430e0d0debdb768406af9a3f3aaa18f2b51b029d49d418f67a807ba4105eace668c323bef5ff6a7882dd668038e865c395b6c2a0f69eb9459d1398bd6347d59bf106588e87cea79cdcb14a32e87acab83287f8a2781c8b1c81cdac044dca5d1f7e92321b9617a2ef6f58f9660f4e150339a26a7a70ad948a83454f16b8ff34529b3c35d0d22f115a90a5a0998f2b179c42e76942c60136edba2e7a99ca36a8c9303296fd188133f1403a1a981587544b915ed523e5474d73635f3d5011121528151f2429c54c491b29398089f9c3ab5f1864f451841dafa7d760d72e9f4209e8a50512cd7aeb4b50521229fbd515ccbdb345983079092ecbd93652b9310001d2f761f04e4f2bf37cea7a60010bf3d26e9fe3202297bb40b8c71863afc6dc32f3d6872d4c7fddcf79916177fcef87a9a41ca3a081bad856f57cdf002dc70637dc3a80dcf702d1458740376d1ac9318180d792c33f637e60544a8a55c85d077654c820ca28a12b2b795b0b06e0fd713ff7a8d7b3f0c57516f83137a43412aeb36633dba8a6a424b7c3c71b57e01d0dc151da88df04efa502daf09f722a44f00548936f34614883845ed176cf2fb79963a55223785f658eaa2a300055adf50a2205d9a22e8a3dac686f5e8b7f00c325527fe692b3679451534836440ec4b70acccd7e3c4a0c7b68509fc4455c62011ff2ccd67c907ccc9baa1069df44a8b40a91782016d6f2ac60df3f1ff21aeeea5e2d2fbb2507d16e3980dd3a2690b94168ef37ba1d4bddd15a3780189add69fb7f011116876fc20a6f61343d5dd464e7450d7de34e315d6705654645aa78e899ad5c1391ede1d92e0989eaac904cb988aa14d3bc0aa2f6a8b714dec1205123ad797f45b0594ad47da36948918a8cc66d7671910b117806847adc1fd1b0452547167d1f60441fa687a6961e6a00a25239b0fb20dd10444f4635b99d14ca3983312b6accc892be753118d2efcbaf211fdb5c11a0bd9576e8062d09e7010b77a185975618a1aefd29be3b4152a6142dcca27f7cbeae83775c3eb23888126c04305e09f55688361620f686b2630b8152ca91d3079cd517fec581e9f886b7807a01ccf87a9ec8d90acd07a900de72a71c71210a87898dde651be1ae6e4fa9da90e89939f6a21c52ac9a7d044509f330ccf9a17d1122a8efc901909a2928ec681b4a04d8d076b40382ccbfae59a8051edfb89057a8144ae07ba00e9584c1a7868937e2e4e5acad50c9aaffa2d071f11ba6d98ce60f8864e8862392631e162dccfe265c9682a3bdda3b72b4d78a7f1cede08dbdbb9823998460bb079fbc332007c01795932c7fe0b7e4317af2053b538671e5e64bd50ab7207d760e273e19951dcf48ca8204d768d970d39b65e953082a33b65c0e8d5ee780ab641ac65e01efddea31a9add5f5df2d9392c315afc4b17de247e7d063db81ebdc2c7b82d2e6e3618636152662a854ebebcfac3d6e043185501260c45b7d1a9deaa3c139650f7e3656e9f42a227328b14c0612ce2c3f405359af9ea510a2179457b6193dd9ce12b3ace1a059e6bd5ce1fcced2386b01b16f81433602394ce685900514b301e60554d94bf67b9758a8b3eefeda7eb589cdb893519a7e7419b7c6a5bb9b0d0a74cad4eeb77059dbe416886a117281f41852e20253d2505f4fe75585f0e62bf7bce8f9bea49bc0b7d4610c8ca7ca49874a2b26b0c9272c7c8cb9de491472efe9894676ef7f6590024322db7934f38283214d615551ba8710872825a49e8f2724be08e50d6de4f52fc28687ceab7cad213abc6e2b30d54acb795202eb7f6470405cb92c5c9dce3329483df9ca1a1b65b1da2c6c5863c04d42d0740b39e6fd6650690c2ed783d13aadb6dc113303a031805aad544598f562db2b1f7cd43670d89a56b952857002e05fb8748f87d68316cf1d814e47a8161ba5bcee1d1d39a73c1eadce58a3314f679884911fd07202181d9616f644a0f75a468b6131c17b77dea681fbb99ac75ecf25b427cb0a8563abaaabb670f89917c269f8c0cd5242cec7089b0048ec97f9d82ac77898f291b8d33f5ae6d527056008e14f64971c7bde44fc4c8d14a5bf343b93bd8b86d3ed63b4c60ac8a758696d29697b12d2458ee5a38b14a4b80e4b6cd1414d09a6212ce02f2a3062884e3d91a99061e42abddd1c0e150ca8477518962a16dba7b3d3dbe37c847c9795309d113417396721c36b7147c2f331ee75b48aaebd1eb755ae360db9b32d57824537b4650cab6fa824dc4c5d355238fe90b90b77039f7a09fade05749cfee1946fbc81977ba1e93b061e9af8e38d6ecc87295fcc5f041007f967f2a659799c337ec6ace74d9899442433f83c261409ee1786e6e2f6f3c7894d19c3be363a80d89226d2f78d41ba08437dba73f2ed2c69440ab47a87ce92b2fb4f21ddadb65255f0ac120e509a69fe348cce3ad6ce99993cfe04857d6c3834bc0b2c6f243351f1a8f770d8e94577594365913d329e37604ee7315bdf81fc997bf28d41bd4c9acdc2b17b8f335357f45a9f8370058e4ddd801a81a94df24f8ea96350bcb541a921d121af3ad0f3edf255fc36d819794538ea81eeb0d1011c31381e10574fa094bc78ba7abdd20fc453253d8dd86cd6c6c33b5aabce731b197dcdf419a5b0a16b60a2ad508d39c60f87756b01455e5a2fdb1596845a7d7033248ca0537af59dc878ffad6149697971b20e3dae5b2adae92ab53181ebf1a922f479bec8deaf5d9267d36ca1ef75aaddbb6d0ef651c20b7d4a2c1c29395dc6fec161c13295b619f95e6fa8840147f9168fe19a6119e38b27b20b1a543b58c523515c40a6c740557080c685957cde05ffaac403a4becf8cb3264736882a8155aa932f856c6aa0c1210485389e0c3c9d659012749dcd098d42ad7e22f02e97368c5f0b0d6edf2a9c3b4e92454d1141139c9104a06077084257365d8de477e605a92a684e1dd3640a52dc21066901b97fd34890cdc4b14d1f44ddde3a9bfccf2eeec8fa8c826d1bb1847b96c1a818fdcd67b2ab6b9fc877b5084796047263b82f09f8dc82575fd6d02ac6485bedb3764fff0ac3048c47001170e58565a0768f200119ae527511488358f56026fd0717f6a7953bae52a407c8497c6e32cff9954b97d42f00ef537b918b4de2bb2e7eb22ccce9a1ee0f3aed7508905857c8b8750527feec2e229152c450dd7f53181a236dce46752bb377e0e9c5f9bd13bb11e1649062bbfb479b32968a1a389965cf40c572a8f78c040039c2581f1ca52cdacb491b59c1020adce6aa7106750dc5a977611c5a3a6f20d50fd344b7ab58f34f2e6a869d936334803cb2ce9dd9ac6d3a8e961ac3cb7c452bb9201f89bb32ef2ef0d0610e76b7a53232aba80d02dd4f7a57079807741136c736abbaf1e80750f4249ba2082d86466a6d3349831d3571a645030201a6f56008a73b3c089a84601d5742046b38f010acf56b87606dbf4204eb14b9439f7e56267f37e07f7cd5ccf657ce2dc3f5712f1442d8ddba1ebea9fa093307ed63f851883a72ddc91ae9b60803d2d06e7366d5c11d4877057e0a4a5dcd61e887cc763d50bfcf3af3b431456c6c9b489a97e21ed8236c165ac7919d96036062c0577c62817ac42d7d75e61b74b2813bc88042a9298306d875cf6254c2416c7fda0171fea6d2e788714eb7912a2240cb44d318910ba135a85c6d51c176c7049ebed36766c6be2c90f59926774462770d72fc4c1298c191178ed17faccb414ec4458b39e299d3ad4b6c53c7b92ffa22a31dbe658055c967e0e64cf23c3356a9b832214e5650f5c9f48d2295c3819c8bfd83070060828ae61f31c90664b08baa4c22493d4780f9be90207dbee03af26a33c2ed140d99cd61a7817e5c1f83a9991e397414a1730e81ab45ad659a2fdca0607ecc77fd0e488035f1cfc0cb8a4e51447ee3b8b7a67753067d2fa0dac6d8d6d6624c3b64d629077363da4654418468332cc255f977534cbaa49c0b61504dc84c9d8d6a3e2a333535977ec6c14dc4680675ac4bdf5f5117858e8849598fba8dcad3891605d1a47db45be32cd61d73e3fc67d7ec3bf2194dde1c0d171b82e2e9fb6f837bfa8a5a8927da535481442c38449086bb377f16036cb51b53675027b9f212c6746539f21a75fbc8181b4b7963b3b2315d187fe44b9f1ae8c0dfa34694ae51092fef5c2be21546c4647282bae4a14ae312a9e6a4881a78d95ad6f8f1a8f81b8511688dd837e0b6c68f6a3af030d7dc2b551bd3de0031af145eb358a35691cb71b8b4f58223ba3b24247c7c90fd9d2b0291e74e081871e0368f5fd78ea0f2010dbd78ce382697aa17616019db51f5cba9f2c55c31f37d39421c6aa183982b470f951db041cf2c820983683fbf679189d67c2168281001ec6ba816664bbb296658ecc06cafd41c2cc44e6e3b2aada5d261c84fe8d6e19649634a67d278131496be01dd65e1cc2081b7ef2ccfaa885bcd06a8b5122216530308418540b0bf2d9cf0d2e695014dfebcfbe1dec55d683f2cec7b3c844b5c2d94485220718ca790372d55064f09029fad542505ed32be23d801015b8775bf4201b20713b9579c0ee76a34ab9a5e80d22c1271bbb1d95cfdb659d4b426ed05009db319ceb7dc6cadf48c1d65b80a89ec13cad4111532100c5d2692f601ae1f32e915e39d4781c6c0b50a3e5734f2db46c6a2cc62faba54832a8cdc45b94da0451e3bb6b7a1c69ae56827c73f58c01aaed62faf98f2cb6de25e9062b824b733c01d5b7700aca39a538a3efe3e464adb3c900888de57181fd850b6936e3beec8403c857bb5bebe40e09df1893bd4a3349fd159eaf9fb10b830a5001c337cd10947297096d25aaea02c9aa5e20f4b41c4ed4a07558c0f6819fdf80022a2501079aa4da0ab1406265739cab5aff1fccbc30845ff537071a4edf6434302efac95071fe431ef20ad7405c8e8445a9b53fe900f56a000684733e0437dd06a3ea1417274a461eaaa49f326ea0d2775c7a793a63975f258bdbc0b90ed9bf48a24c914accfb81eea474112cf0f8fff028b3721751537121e2928363875e3ab46b9c922979e0d909074bf7db2df61d5a6cdcc6d65bcb44f3832bcbe9563b6c2de5dd538df673595317b0f88ed8de39b1076256f615ef6c8a4226c71dfe32b45f02fa3d47f829b8531400e1dcc34e1161a5320d1af9fdb990b52c326a9f239205221df8d411455c66b73f6bbc6e746855d874d9b2f13b32ae316cc17e7198eb0d6f087696c153f330ea53501ef37b61ccc1aa671bdd6072c71b40cf872023544723a5fd7e7e5463ffdee3876f76e8040d24ecd401839459ab210c2130ea9c66e7a749bc1b4577e7041750218acab8cdc658c2d77cb0b34b2af1ad2852c6182c31b0bd701ce86c44fabf7ede992d8b11c5f1aa7c7535c36118afa8812baba7ee7bc17b66a971533f9dc3ce202efc7f56d1b2d458bf951552e7daa8914959feb0de1cb25b836b9b930ccd8cdbc5a8214a3484083d107a70f73311811399f0b58f67de52f1d67f38ee779f25c507b28baddd8595eedc7a2f74cf292d092254ba7a66ea8bc9218c9921f59cfc3986a4caaeb783261c8556940b3058e36197ab4b8e06c0249ba64346e30f3eb24e3018f08f79602cbaa8ad18efe0f37db1547bb238a14f83595637f7639eac2ea6f28e2140074d19ef9c84c87508c7a87504677ac7645edfe51cc7a1da999e87f64bcb41f16605d08803be2ec416b619c633fd5acc13f26390026e9aead9e4384ffc123e27c6b747727331428ca280f5c262297aef1767c9924a5305ee5762ede5fdb8b0005bb3edd7393175720ff72474f965160c1284f629230ff3dc71dcc23ec3e29f1816b45b0a6ba0d316b25954a9208b2ad0ef608d946bd1233950f1598ae511b091cf1739b8ae51cfa42af46db0b2f85b41ecd02fc5549295228cd2b59e17a8b143bda2768f56cacf90436cdf1ebadbc532f0037ac616ad3db725b9334aa9393a659df6c52746cd6bb098cd571b44f94116ff17cd94497e6975c2a8234804608df0b03bc68f45f406063a43b4ad68943274ca845d61449bca2189bb87c1e0d91ad8b1c5b37ee82cfd1ce82b3645672dc136cf516f533b861fce0bedf493d91e9b4656915c9934efc14a283fdc8925e792feb62606e4e756d91bfd95217d4cba91a46218549df2e068d771a479af71e7603b46edd868c3416d94d6a46593f38729b805c108df7ffc72bb4296fbad212e54b1ba8010926e59c13dfe04bdec4090dbc1c0fa1b2365b26cddda88afa52ae308790e7ad8b92dac06c37353aaad83eb2e5c511f3ed7a9f0f36c5e8fc47f5fdb689308b0db340cb5114df71be45c1d7ea25ea7fd01e15fe380bafec92ee556d19e02e02f57b19704e2a104da73901d98d7da0350355231af80e11480721b5f8504798c9279903374e600a222938edcc98e6b4ec4c25a52f050091c5d3a3703322105215517cffe88d22bfed41c13479123bccc69a7b39c5fd48969ff5f63a1a3d160d01cb0e58fb48d2692ea28a08905cd1d00cca1c8823f226dae1d45de777780b24eba85f2e42c6a12115247780d3fca07d717b89d013a23c5aac9b93eef2df64a5e1f1a3151470eb430d2c3776a8e305f7056da8cb19a943434da8fdc1324f1a0e1f2dc9c26c53cf92e51d72bba30b29ed36163a409fbcb6692235dedee2a069f42edf569875e2eb5a5d1e977501b43d442b52cdbadc21ce71a097f7686f313e09d447478fc3d3977e54d60fdb5577a9759ad35b9d5ed67bd7aa7650ed0551d6230dd946f98e5c9eee80a4459553c13ce84a9f8b0306d3a4459f553483fb4c5ad422cc3dc6f25ab456a200958b4c4b82a930beba51f96b2e12a4137730d682a329587d0a03a742757697ffa9a013155fa6fcbf5ae45b090a54b2931587fc314ca31870d16a119ade2870b78e731220cf1cd0cef12a4959288b9d9fea9687463fea0a8c44c01faeded694a2dd2d341cfcd2323438f05bc75306085ce0405a87f6e18d4dc0cdefe989b1cf29b6821504742f1d9bf5433e453d8ea60b5584dad05f9ffb1713f45d82882228998d59090e5d3e3724126323a1edfb32859f2d32087cfd777c8e7154349447630318c128d478ef40c2f2f3e60d1e8a8b928412e89627bac430c3c7142e5ca11b4d412c0d9dc682d2324b17b3d15b882504ce249a202ff0959b543d1ea065e133ca6b5750be299bca63d62cfd8b5201cc37722cf40012b9311dacd047da09247103bac502945c300a52d31c278be9026604fc5a5e2c69461d9289895795142fbe629f50bec27d529a579e11d0588501eb7bb09640c80680a161b00c864b0dc218a7b16e3a77f27ecc5585f4ee743e32519b88b4436e501a14a597363512da44ca2465e0081309f9089f5adcb6b81be3ee168e7e67f53ca7cec925c2b05a9759bfb8abafbf0cc242710c8d6832c73209d6645a872c04238ee351aed807086d571a391ec9c8c8acd6383816a7234b0d3c17fbc723cd44a7341f203ac5b3d8b61fc6b498918ab03b637f0bfbfc21cc1433ec530c7bd829e6fa761bf91219df0b63a26f3dd3ee31eebcaef384ee757f12fa4682dffdcb275dc7a5ce05f85fe902bff7ded9043e3e4b17df83ff9d4db02f953e0fc4df7d78962ef2779fcfa6fce03ba1dd59de9ad9e8faf6d35cff336b67169935db1df20751d046fe48fe49fe4bf5e69404052c25b4b00031830ed4fd02f95aabadf5adfd9c71969a386dbb7fa7da5687eae76cf5b5d933d5b65d1fa9d65adfa8deea1916a6a470e6ab8d0870687da47a8380193154a090d4b01105ad5f852a956a41c036b405c19e1478d13fbb6af140c4032c577df3e6cd1b367bac0780fa585d0165433502f4dd350cdd8661276a132aa34f4a3aef3f5303dfe287b427ff7eb1f14c99f6f94c3bace3039c3e6015c2103fae28e93206ad7588fccf4cc5f4fbf08d6ecd037157e035985ea3539ad097c6104d5c6b9f8c2ffc87fd7d1a0d76bed72e78deb3262494d2f6bdf7aac7e819880d556cef53fc5f3ec2dbd6edddaf5ed27b5cabbda47776ddae42d785fc6cdbfb48f791eec3aac3cc143f4268fb30323a9f0801161180b001920411e87da454cc0feb601e0c3c8bce145ebb33ab312e72a2d99e6dfc5707ed2533c0090d75a86e6cdbd7e643a57f171921717d6b4832e8dfc40c0c0a02327f7a76784a1f99bb7f92eb77c7aca86992cf638e0ffe07855634cd7f1e33e8eb7864d1d26c02faf26966931225a02fbfc9c4d39e0cf282fe9241200c06c260e01814f464d0e88190bffb33e93fe831e0b4efbbd879dabbe0f9f2c320b3fcde7c27f4cdf20b7a25f283fefba09349c9772a8d6f9e4c403ffebf13fa81e0ad2c73c0fcd9f09b41ff650bf2cd5722df3c9994e4ff93c9c4597ebff3b4f1834e26a0b36cb1f3b457e2f9f279bed45f9a311f13e77b4cf16539afefccac28cdac686956b4ee9ea3241e73c7ac630c4787d439228f53761c2b1c1e83827680806a45484b30eedb8c925edc5bcfdb9aad821ad3f7c9bea0077a5ad08f2610d0931f04f434d9ff7c4140563bb92f6c5f9a0f9dd66ab97e43450220b260dfaf9fd66a35f4be91023648525a7a21abc5a0cda8646fcd22d98fe378cace5a0d9f15e31084f23b938280de7b7af279d93fcdfe27f4d162708ac6ff639a786cf705ca1641fff32e809ef6f8bf4afb2141e7efc49e24334dfc3f90d954fef841669392fc4db427dfcafee79564ff733229f9fe4f26dacbfe3b957edec4c954fecf1b39f940e6f8d8bc2d684fbe124de9cb3b945554a6ffc78cbd8f99f33313e7794cf17b3c74a7c7aca86cc7aca8cc94d98c925e54af1a2dad6dd98e13e8b111e85cb56c4535dbd7aee73c81ce0c074b9d0730bc66664a8ce47932168bc5cc8455289364796bd1a6c9ca92fcfbf6beadbab7d9effc7d19f706f477fc7b6f3d7fdf5add1bcfdfcbe4b52cb8abd5685f3e905951da8f66f9763c22c9f2c9a791e5cffbec08f19cfb06edfbe1242ec11454a925c70ac693929b746f2bf28a7def8a7ae27eb27ae29eb77cbc817a028a0376e87e696bec6b45d8f9044b100c5fc6ed89ea71df0eb938b766593918860fcab060a61aff8e5f964f96501a1d4f1977e8be8c7ae2fe7846e72f67b3fe032a0af4df7f67f59a97de9944a3958f012720f3e969f63fffd4f33e1fd6aa8a18f9a5393e3845df9dd6768ba007faa5a0b35ea0b3f41ee82bba54efd07766ef2c5b900ff42ec8073a9b9428953f7e13ed24dfc5f8b4a79d4de589bfa2b21f53bf8f19fb9999f33de2f3983adf95492439a232d3a29d59370df1759ec7ace88e99f338fa635fc70754f489fcb1a278bc1f336dd494b5ba9f63de17b1f6ada8288304bda4c4665f1d27d0715208ab506af3bd3dc1fea94656e25f43a33d4f5036b4e76b6894e767a2be379ee7f9fa455f7b7a4620745ac1c0b8b79cc72fe3de688fcbc73b8f7fe9de801eff8b9fc73e8f711225df5f2083ba49e7f99ead1b9e76cd61d7ad30543b7431c7e4791cb3e7814c8bba59770b2754ff039c507d3239a14c4a947a5e3fcf2b3115e9a12604549f4c4c457aa8a9e31108de97204f8f59517006e3c929425f1cf75aa825bf4930556ac9c97919d9d691926c1b3fd9f82d8d46b3b4eca5fdfd7e0946a09ec03da604ec107e1ef3a9c6a3d55e90561e36fe6a0b90d6321b7686b0323c17e03b147fc96ff6e9ab8689daf861f8ad07c5ffc1d54de3677ab331cec66f9fc024a9362a146119d40d7bf143db92d7f0c3ccd0a9626f4d185450198d3d8f09a5519eef319f6ad8509e134aa3b173e90ee1f10c9822f4cf288476f04ce2f9ba95ae98343d70688f59d15cfecf879df9808a3ee97cce87be638eefa3f33f66ced34c9c9f99fabd16157dc279fd46de9549b118599a15fda96897f4f444637cd93f3de9fc13cec7fe29e79f6666457b78766ca436736cd41dc21fc331a59c704ba318ed011c27d0c9242c584f389577561fb259cffee2aec3175b10c7c7b4e12ea2ccbdc62a3cc88053d86c6ebb37f1023020992f8b5b48a6c58a5f94d166bb6e397161afa9405ca1b9816505ebcc9406a019030497a6851953ba2f543c2dcf3d3b8f28536cceb9f34243b7a5cb55063561562872e40359696c04a1c183060f378c01e3e42afb6be7d182bd40041f0e609e218587847966e44c42a39909191c21e79c2da0eaacac49d2657712a47b27286c7f219f21eebae5a404272280693488f1f9f7826777548d6eed86acd136f4aeebba0e77dddfb33bb10d2c68ef14abbdf7deeed608ab90b5b67a0ef8736e87d921bf6e2f584ff8dbd3626bc19a9da8b3d6ad5bb79f9a9beafb12829041052103df19dcc71500d1f743eb544faaefebdb33cd5acf665f4feceaf5d65a6ff60a79ad82200e4ecda9b9d3bcad0dd7909519b3b0305164df0cb887afe7796f41f83acfc35784b00a65ae15865861c8171fdc902aa29ed0a68c70dd106f5791a99f14ac5cf90193018dd754d8c65cb264863448402f6b8909269458c95d7de097112fe81421060b143c00ab2918788810b125e513bf922431a7b874b98283b352e8e29302d40c5f60395944c8e81079c2820355282c67e8f4b7adef7f6f653dcb16f8bb77719b9428f9dfb3ac5fd1a66ac112f4eff4bf662bb26e75e8daf5ab4e68efbdf5eb6ec5e0fdee25aa8fefc59d16bd1838c518e39a660fc4ef3e18b1af59fd7af177f37530670bbbf7de7b53a73d4407c264b01ac27608133f6bed674f1838b2a880f92399f1c7448c6fa8c5cf9d862ca6bd9c354e976b689c1c134236211a42393a35dff72a8bfbf8472c2beb0d044f2113423621a11d911cc726d77a9e673d0f04b7ed2c115ff77617df7bef158dd8eae14e316ce3fa29086e8bbd2c3bea7077f197bd3619ecf41b1086613594a560aa817dab68435cbf7afbfe3b65b1edef32ff70044391ac9d8742c2875d1cbebc80e60b93205f8c7456be08a9b053db2f2684b8661a607ca87a44bee09478f9f2e2159ab459c6d5bd58f16cccc22c7ac112b39f1a0be6850ae77b23057ac1517a4733b8b2175c771402d4d72588188ef274d0b938adce66bb5da600b998b35ec2cb87ea970fd59de625d8f8ac0bd58fd791085f5da4626fd81ce170d96f35ab4bd4672e5fba041ef46cd7ad2a22b6fd54483f974e4ae3547941e334f190a0f252f5816f870e77ddaa8a4241f7205103551065a876f0c8686fd72daa1cb8786d2181c1eaca93d4bebe43d5bbf7fe1daa7f3ff476bd61275af34dbcdd6769cda1a0a69ea87877f7ded3ddf3d5e1d8c4377f1ec6d9896aadb5e23335777d3b9be1ae3befc5f75ec718e38b31ae666a31c65eeb50edb31018638cf76c638c31f6a927ea678c319ed513f631c6b89ed0230961758cbd0aa579db7a432f123a8dedfbf962b36e70cf4c2c43589de8d3613f45917d230b7a6cfb1cc0b0ff817d194e74010e4345756dfb6d9b43438648971b2104e9422d0839ac2b23a869b3860c6abb33561d5656906db77dab656d97e7445f4ab6b50e80dae1c991114c0901671d480f979ab2ef46bccabe5bd9772cfb9ee5764b939d3f73b9b1f3ceceb5f3d639890bb4a4a02dd81e9aed7959cb06a98c81d838730db9b902b1ddb3e5da4ed9661529ea097b7adf99bbc7a7784dcfabc0b5d7649d28d4bd977a9ed77d075eea7dfef4fbbcffbe834ffcf2d789fb3bf377e6df4efb7b21f476fd9bc5dfddd817adbf77b9d7f6bf5166b6c3b61fd5d86103982f2e3e4280fadfa95b75a358f15b87fabb1a222ab0a548ca6264fb2b2ddd9b4de109571a2057905841fd5fdc5bcf112c1692e072632609b48b210307ea4f534fdbc9edeeee96cb89b8d82f2efbc6902d361c71a10aeaefb87b9be008ee0835546fde2c417d87ed7afb3be8594ab89673b9909d6f0e087147c02a4bae8625daacc0e4deaa579637472c2183c385a832dbff5a61d1f0b4451550f145bd648b346c9106375bccb2c51ab4b6f8424e44dbe2bb5e216e0b1bc5da16c051e85cf73613b3cd0d7b703c82f960e9aae585b5d3d90c3b36f8e07fe31198bfd65b58c457169abf1b8fb2feb2ac70f455a2c76d0f0b6077491c75b91279160e57c3e170217ce170a8e85c3e64734f52ecfbae03e78a778936b4caf7de6b31c69b48d645397731f1beefded77e7f76452066dfebe382942452b868650dd1ca32b3fd2bb04dc9dafe2968e3911755a7276788eca0d1058d0c6aa266d0a1a3aacd0e34319059a10a2708ed3becfb65e7858a09a96dfd3961f0daf77db20a51b3f7594661e750c1b2eff768aaae1dcbb305ca4e450155a48724668c00b7c4459b2323806aa10b0942ba9638c9d161b37566df2e30fc2f6cdfabefcf2ed81410214a880e24a020d5027af10835904802499b1c48a077ccbe37446fd7217927cc4aa7b36d2750bb9cf1e85a2b3eb2151db6bf78048d61c6762e317cd9366cffda95aaed5fc10ba87f8aba7585ccf65fe144d5cb161627dbb76c7fa41b35cb55a002c34f9648632d1ef6fd5809e4fbb6a0a4d95e85fa8b9ac7762c516eb8cab173756b04617602b63f59349b195902851c608888c0061b50ff0ae2871ea0f820820f263a24d1f22478a26755c2ec7b7f2c85686dd1b6bf98c2100f3f59a210539992dbf7613f64e8b1fd3149644bca04db4590453be68241ea3a923b0a49723aa4f490c64a0f4c43465041052242c2a4e9725082c4997aa061104fd91a9dce6cd696941bfbdebce48db678a88ad5beeeee48866c77c7efb6baddd291a7742a6ea4242a25a8d8de25a424b41c68ffdafebfa7113747b9b6b86c31a040edbaf524cb4ec331db7e05bb6e3d1113766dfb15977ed69997eeca326d93ea0dc6a60ed90bd3aa556e6caeca46ca680d7cfb59b2b82f70fb7edd2c88d9294c0d9b6d1f67055d7e6f3ffcce8ab3ba281d9614fd58f6abd6bd6510d421fb22e0620266db17b6fd14d6b5add6bd5514c6050303ebaa272e607716bd96ed87a15498c5892cc6a194dfec19ab702a3452155a85577eab59f6c328f6c3acf00533db7e683fe4f29b88dac7d7a7fc695bfbb60acaca7160e9c8dab1ed835a3cb8bc0718afa1cbcd7eebd539d9f6c1cfccb69fc510c161dbcf44f4eb07bdc0af3ca5f59971a2cfebfbfabc3eafcfebf3fabe3e3619f779e5288bd539b119d9b2bc2acfaac3c2c26e3a5c87eb705051525d550da115dda402bf8e12701c0a9e4977c87e165d51f05fdc21fb14d4a02b5acda015cd16cd5fc724f02cdd0bf5af3b64ff8a4e9d6b57993d5ceade72954fcdf4cfa63e736deb5252f756d1a92a2bcfca535eb31dd6b6df6175599d96fd8e8bc70731be765415fe16f02c169e55ca60aa6c74541516f0a09ab15fa5c53d99d96e56331b87030a0794b5513da2ac941d92a7b6b59fa77295fd6c653f63855d268c086f35b17aadce6ede59417796dbdfcbba43b59aadc8dfc8bf6645a739db5c9b05d1d9b9ee8eb00af950e9fab59953082af030c20e348e086104684ed51b1b5d3fe4e07a82d60fddda2e60777dfb55ab3dc77aa287d54e8bd83537c4879de6dc102bb921667243b8ec27e772aeb3cc5e73ae1c38af52cb928ac2681faa1b6aa830830f1caaea1a2b4582b8e006c7103eeab5b596309565bbbdb672ddb0fdc3249f692ef78abab3492169e9853f8c190834aeaa98eafee97bf03de90ef9dff7f7b75256558565626d540c085051f87bfd6bb32e20c1cc9d89a9f2509dc184c3a1f94173c65d0287e6f27a9e6f7712b8fc6d94dfc45be5f2b7462c96d4f6b7585e7737986d5a1766fb1ba5d80e66e32c948df2b752fe299ca89ab3b1968f3a0efdcc8aa2a0e938b49a7557b39e50023fe7873dec644aba4e6878cdd4ad520bc6bf9eb00145b219762194d8fe78082edbb91051e5858825bc14c185c8082a36a95a0547a850e5881fd8c870031245b6bf500c28125e354c1253703c6b5184d03f83bbfdefadf7de5b31e8fe3aae15068245617d80d8af62746a896cfb56c6b544aa0afc5158d6ca56d977af5eaf8c7bf3de563b54abb5958dad6cfc6be56a11c36b36a99eb051b46ffba0b59f3d2082a5eb6b081e43f840c19717a22c71258dd40ba8fdac4e092b3922602a88753b147a2ab3ba7db6e8a214b5629081bc65335ad9755b3b11b618386e77672a2ad1b7bef93eac5edb31766774d3a6f7210f6dbeb7fa2095adc808e98424361f9f3551b67fd27b8d3c95d618d9fe1bd09068f1531d56d1730a5d1473aee305abf6dae7b56738440161c55a5b77c5b923ec8ee3bd81ebcd580d4afcbfbbfff1d2f74766a547d83886f9f2d9fa416a847d9aedef5f555cc0bed93e64b4dd238bef655eb39fc27b1004c7b364917ffc0cf28fefb42dd3be3f865fc77bcd18bec3d3028bc2f36462893fef4b45bebe37f24ce143be62662be2b444842a294061f981c70810f0048a47171ba40009025d21c4ff858b2e6e21cf54b6ed8766beba0b7ed9894a16dfe7eebb0fbf2f67fcb3fc754cc2574c9a1e543f5f4709e89fb37687baeefe1dea3eadedaea2e3974f9a3f1ffac5c9e09741309b9902bfac45d2fcf93a86fe85b02f0c3fae10f6c9be10c6f585e1a765ca676f7d19d9dddb10f6253d1e37f05af7bd6f2aa847692c4ad8db76f82595fede84f14288feddbd7deadee2a8b70ac4b0f084c7961480a8a1de90a2b8e1010464ae80e040c993a91c01fa339e4c16871e84704005fdf93abaf080911f67a4a02315ed27706170e071e071e03d15f99966561ede4879f3e6cd1b943c2dce87c06826cbe5abcb0ffb1066daed2398c137721808dd064f0f3cf05af7b929a91dc337157932f950f71dd3169d56ae24a59ff264da79b295c6d0821474fc1f93fcd08a7ee6cb6fd754f7173c372843c8a1d3ea66e71d66df7d1e4dd26412a3a0244e2ec1ecb75a26ca07eddef6e8de4ee5ecee6d55f7e0975fdc9bcf770fe3de7abe7bf0babbc05f9e4c6294fb3f27d301a658c942c7afa30b0c5441c9afa30b14062852d0f1fc79232fdfe89626f93fe6f8783c02f145dac089c053fccc3b9a15257d66597bfc1e367b7c9e34517bfc1df349495ac5ec4ef6f5b5c7d799dae3e7984f4a7cd8384154edf1b50f5d7bfc989aaa3d5ad17e9676cafe53c6694054f225419244f2db0459a5961c1a1c24786dd6841e6a3d486dff0ac222ba030fc40b3e78a61d78bfed97b703f2bd1c63936f3fb51a7818243bb84f5ed2ac5b7440b528520ea0486534a54cdb8a1d786fb71822d934ff3dd30ff6cd5fc73bb3597c247ff243f2c1d04c731a039366aa77eed2a96d7f2698df9841f8e0998a185427c2fb88ae5b3d74edd07d8c818f2d06fac1f72c06380f7eae2ac6071fac2ac62f7d9f45cee7cf669a5f7614d3a2ed5f9d63e27c91d770321904d7fbf410b5fd65e49079d4c0f712142c3ddac816f4e7af5b9be5d639383a27477f71e5e0e899508e7eadf35a9f690cbc739208c5ce06c41ee7174092e7065eaba306fa714a52c72cc9d779bb7374cc1466498a39a2cedb7c7396f1c394170e5cbed6e7470df493af63963a9ff3768b66a9f3e2d72dfbb46af1ecd8643c3cb247f25b556385c3e142d83a53e6e683fabff0f7204b4edd4273b5fd6538d1e53197a05c99e6925554cffb17195512e72c75c427bfeea21c5b149d746ee0353b7e373620661679ed7b21af79d2063b68ab01f949e7065ebba303c833bfbdf5922ee83b9ab99e005f34c17a027c6b62d3b32840d8f7f040448963f7fc0f9aaaddf33e4fbbe767e69392bae59565f734d9a1f9305ad97d7ebc436b7effd78e20683fb3b01f03dbf7de82544cde48a11ae2053166daa4a9c1054b93206ef4b095012268ba6c5922489a310ed831038f1b6460f264046aa376dc2785afd9ae3ef1878a1054c660a9004411e87d52e46a4b17234ac019d17929d11ad1171c5c2a657a8429f3c38d8c96ffae13b23b18d9fe477690418c9923db9fe666dc6caf22caba1c4e518260216744152f3264d0c490b543f8812a391ba84c504148093ec1ae5b6492ecd8ae5b644e10a18a0d1f34a66e6c3132a3e301005b2534d9e18b1043d2f87583d3f156d88a5a701ff34594d124d8756b4c934deeba35c6c84e854208b313d5fa63cb977336714d65db1660bc5b6ef7d6fd6b67babb7f3d6141dbfdcfded1e972ba73052bed1d06cfea35bff7e27b1d6071b87def3d9f4d98d65a6b2d403d21dba2ede370c9b5b37e06c9a78bae45db6a1e3c0f63cffbfba1b5f89dc89ea9ddf6bb139f628abdb741a718878bfebc863b317b2dfb5e806fefa4d513d56b169fa50629de1e887be6b5bb43872b51bd786793bb8e1218771d2570479069d1ee7d9fe7bfbf9b5d7f5cb1916731d70c7d77dd1a53c24c0b976d1f67fbdafeac7659fb29fce6a1794bedfb45d07bc540d9f765b31cfb3e2d87ae7d5fe8ea8045dbf76de80c612d7ab1bec63e64554002d62c9c31165db8a10b0e44b6dfd0e34515aa6ec6351cbe30570882e376f85528edb8ccbac3cfef149e658bf06cca3f3e7896e157f4ef10ec99c66f02cb70e604330291ee2dffe8e27bf06c02ff2b2bec9bbecf6759cf0b5814067b23d823c13e09f64bb02febe79a5f09fc7c3229119f293f7836295102fffba67c96f5bd3f959ac0d37bfc4add67368d9f1f9b4d4a94c6cfdf443ef8762c5b804fbe04f28fe0934f23ff18926645c3d1ace8b6fbc585bd5155a162c31ea9aaf836ec93ee6d7cd82fdd1bf9b0af1706fb7a613f926696117843db5d8aa578962dc01fdf05f8e3d9a444e97efe26fce0bbc83ffe7836a1954c225198d11d827d8e89642edd21d86bb35ed8c7cc7a874012f48a22afc1609fa6d830fce02f09c1ce0e3aaeef4858df6e77bf7edd7d834a95b59ecddcdeaa3d2dd1696bd5ce7e6cde9e4e507716a3d3dab66f7fa8de6acd1a605bf102d6eb30c667c53f7cedfad76c45595b6c39032909636b6d917d6cd3424a5a7a3143a7366a97f7cb7b962d6c3d9beae3fab809ada83bd13001cd0b58acb466a0826249922557b4acd045aadeaad69412482c51e44bd417d4df56393ecf4f9af548ebd707f7a641984a86076dbfbed50fcfe8debe2fc2ee50ba77f257c27f3229a9a7d2fdee646272ca210c753c0adfc8ed958b76cc407f1f8eff99faeb59bd463ef99f19fb4a9ed56bdf7ff97bb2504e449ef6ca0ad156b415c502f0fe4e6b554fe4e791d223f6dad7bdf894daa734676b15cb0f8a61f97db7e63d36afeeb0493e8e997d48fc3a32c06997f83b3829f0623f86f8de097ed7c910a3536bd581a9de69ded98e31994c8b9ba2ad55ce39e79a5506b202d4fc2938f0e0831833cff96bb6a5fc13c8ffe2003be72e528730fca1808b8e61ff87821b741ac3ed89c706dcb383ae037ffb0de8e0fad944d7b776c78e211da45b4fb2ecba23c73e7237f3bd624e879a9c0e37581c0cce321104442b7f7c663d3c3bb21ca59383a363e4288630307f5ee7b6bbbace256b02e118ede4d67f849576656bb5cacaf538b265cec3c79cadf5d1c35a179f6eae4712774d68755ab33dea8fb4415571eda661cad54ec0b62768303dbe6a0faf1c5ed9ae917203640aa7796bedb483dad587955d733eb838093e8c5cfdf04347ae078e5c8f0f649d8a33af94f6423cc06cdfa1e6de90e351e526c703879aad1994c8ed1093db6125b7630904ac5fdc795f0661a138923151e3e4e0e00c11b15a2093335aeb39395172e845a7852cb211e34e26135265777876768404095fe0e9e1e1f1788c497a663d3d394814663eb39907d5b5f9f1f11182ebdab470e3a7fcf9f1f27126889920448c4a94a2288a635906e11203e20a87582ca68180b00499080aaab92055c4205899c643891c0f36188ace05a9caf508015be578485d0dc972a563482e4b9a9010068360614c002698406747d63504403461c2c407200019e76a43b55a101c1a4f61c10900000000210108204c228104124c400105586659883a31801327a4baa4beb0a4b288c903403180018c30e42350d850a0d0686c04b0d99c6c35e1228005042080d49494951d2225a5ab5870810516e02ffa8214175c90a5a0d804c939205eb9098e90a84908b7a2db0df4228ec959536480a222d08b8e1803a83080017240b672409e643540ae7caaa8c040850a21568058cd7876cd011921ff5013bab1190a062b30c040cc4e452b22f8cbcba8561c60c58a1f51c25d733fb2fc60010b1992fb91c4079b1f4f3f7a80c9f9f8cab91d573ac2aa5db1acb5d65a6b2b0a5863722868c9a1a0b5655e13624c54ecc71064fa1e9f1e45882c346352842961eff1c7cc6a9649b4dd56c6fdc06b58745abfc49e2f6dfd7ef9cbf0b750a109336b63de5624c2671a21cd3097aeb4e8e48e6fe44c30824d18b2ed2bc5521839100c4947547e1ad98c405cd2d20ba01a65c29c60c6073722a036a9ea8025cb114abcf1d11543cd0ad3038e366468dcd0040263c4e4ba5419a34211d43ed2bdf9df21133ee8b28247f408461f2dc0773d8de8a4a517f5a6812621603264aa481128a87d18f556cf58497dad908394244640ed934d74ed52a85ecb0d31921b72b5655ee321001200c0340154faf4ece8e0c4c610fcee2c954ea6cf09ad4d20747e10ed67c623cbd1a4087bef2c953cef9d02500b40e632bf9095885c99291294b810648d0770585206880f66cca480da9fc0ac1298198cb62f040073e6459fa6598b41bf8937d18148c4af36e60c4e7048c030082808c86e77eb43bcac252698c8b9f055b75a30627bdda0a71d3bd6b0c084ca136a9f66daee90fdd22c3242ff98463e2652127a66f6984b24681ef3c58e09a38d4e6bd70777c8be8e1954844eebd7b69f631fc7b4505c3ab5381b33add41db20f42e99434ed94697fc2d8174d6b159a16cb840d9d5a2b180803c120395a665982805977c87ad1568d1a8b81bfb56aea90fd9ceb5573cf5497b128ec5b35a95b6dfb564db56efcc9a1fc66f3289e6ddfa5926c7bf175b732b3ed3b962df365bdeeb6652c06755bfcfed8a4c08bd65ab6dd96886bbd496ab55835dbbed5626f1072c26ea2aae233c518934ebc291c0e1704e786c885a370385c0f13db5fff80a931b3233615aa31e24b4622017141c6ab2fc8c5e170382022142b0fa57c3f40f12e1c0e9703760547062e1c0e1704fc022be359381c4e47268387f8c2e170247c67727e58c20a87c309f18ec852dba770389c09dd48b5fdc513708c5672dc20a0962fb7bffb35bd4f710ab12b40942162fd7a67eac16c77a778662976d79d5e5913c2bea7df44d46946c22b3eb8116f54d80f1b4e752012fb5d6128f593e23857605f30999a73c6e623d2bc1971543088fb5b0caa77a6f94cf53d7776cd8520ea3f8686564f54fb5acc659c68572c133daff3bc6c7a1de8bc4ee8df762694d9a0655585cb0a5074a202791577eaedeff5fb9f9ad61315e043fe5eb318d5a0718731193003a0a9c90e166058b2c209646a304243931158108313c21ae192a3cc83e4aeb928231f70bcf1aff09bf9857f03fc4af897f0bf68636e9c3301ccc61f03ffe775b57be2afdd1b1e2206c54e56e93a2ae12162d0fb6ee22162d03a2a7997167ee0507f7f8cf5ac96f56664730567b9f0f3a815c2d4400312477880c971c6c80f22980102117e7801070c630e56ccb8b1c2c48d07bed7f6ed5fbbfeb69b83ceaeb91c5d50d0f9807c1f93fcd52c056c608434fb9a0c53b92281a3c7f6a77d6b48f061bc42c211404e2df0b011252b872a1f4c501f4208115b4e7a38e1041bf8becde5a0a291d8fe359703041bb66b2e07108f84c738e7cfbba2c35d7339700ca1c55d733970b612ba7ca87a7d95c066f63684ddfd0edfebf7fa9bd056cb55ededac579df46dab25a3dd3de79cbf8ecb0d2b37ae58dc88e23a8b88d61163ee38059998f50540798936c0805a5c800d29516643eb636183eb8309792cdc2f771dfeac0dae2b36c4e064af1365b4d8aeb91b5b6cb0331fdc90188ad69113b2e460b812829ed0830b2ae080c4106b3a209604b1a9b8996b7b10db73234cd94e667b8d2b51861a0c775aba67d75c8d13ba1ff4ceaeb91a50de087ab66b8ec697c565bf55ae9c5f4643ccceb29d730a9bad688c111faa49f2958ee243751f8db1e243d56bf5d2c0b223e54375eaa84c15eca31276b87aadb5abeac2ba01d0c17cf3e7a1d73979f61699d2b15d7334b08458d0b00273feb288c48d873d8c974704d0d5ea78201d4c17f6a2adad284c940fd56cb5487d04c6ca876a66f1e4e6ae5b4bdac08edcab84083a16775f3e1697734f3bac7db25cfcd6a1d6c6fe7e09fa7d39119cecef653313f6f7b4dc0c33fb7b21271ac0fede7eedec8d1fc6e1b6d7bde84440ecd9125576f7b417b26b6f84d8dd57d0e57032ecee5374b9104ed8dd16257c1c7516b731d6d2c6c897366d6c70938528092db5cf6be3afed2591c58a04cca45410451060fb832b08b162ce3a5b2e236ed857cfd072830619b4acdc0872a5841121ac8cd8617544f703122442118798b3f670381c6e0ac59f2b9118431056fb7e774208626fac1034a0d8fe57e3cef36af785237654e99203122cac41ef165417161a284bb6ac805e35fb8620cbbe57cc59cb566c5b149e5ba8146c584b6b582a543302000000f315002020100c870322915012e6892cb90f14000d6eac446846158ac491288751104431108310868c210000620c614619232a00960d47cbb70fd031099484f8576724ce80e1b4eb95df2b6b6e7c8662f7a74f6ecf135900fd1fed7d7d74cc992426a9032c8848a9f260fb4661729c083fc44fb27dd42480303178fe937d5fef79ebde5e0406296a58a386b9b84e5964327a618994efb6ea8f045a2197ef7249b52a370dafb1373b80903bd228f85abadf8aab2801c22bf049e64052a984ffcb672ff39ed1c74e8080e1d81386106594a413bc1fa4bee425903e74ce02803a7d11c5e98c6a5d5149a28dfb690c22687c12b172057b4fc33a1204c57c7cbdd979bbbe5a166cd6f4d33fa96a72d3a444a825ece7ef1649a1278317067a94677abeb60d5dc31c30bc812e447d3b931b0e105e5bbaa868fc2bc8b9d20fa68303e80f09d96ba494def75c6ad85cfa74f925550695799a3df84e87ecfceeaa42c65a3157551370bdca4d6ae4c320029a5d1127755293289d6da287937fc4c4ec7748b2e0cf8a453c0b072280ce738929d71b90945901c2583107df76927d52e8e7df4727f4afb423a3fff4f9244ca171c5db3be0825a04f31fc1337d0e4d6e05ca17dc8f0ddf825824ace16271347c7f7bafb57585eedbe859238277b45fb350f5983dda6ac3be400d916e8a14d79bb5a295b010ddeca7c71e6eccee27cfbd0199b892a320bf56a210463d9d254b3db31090c93c67da1287d8fce33673521820cbd79d3d6227a7a64b87373c748a7b14c72341a486e050dc40c425bf47992464aaf5d0f13fc250d69008ff2e15cfeeceeccf377702c74052fd200a95ba567a10c54f45043e02b55f1514281902294a20c5045cbc408b11a0680f187cc63ee52270b2045cac408a09b8680117299062023ad1a0ce9b2e02fa957cea454e1f95b3cb4e8684cca86f72873fa9757768f11e5a542f392d0446ab8aaa39ec87361a48200d3191d1a1512ace26d4ae5f20ec107448139d8d5e3a0bc1371e96cfc78c49ebe9bfb67f3ae58e52fb16a75732db2d799fa7bae01d0dca835a8453184ff4174194fd27a57ac0c2cfae767451ae8bee767a9aaf2da505dc0a0f29e5ada013c09d6541ebd627724c3d2a04e8d8c6caecbe82092312309848a3360ec68a4b44646dd60c8a53000e36cea552554a4e764418c5b16fc75f9f8462095fb08f8d0511284b3c527c922ddc76e9eaebb3c862d8d419f2d215a417312b5af6886791461f8f56cdc8c3c0a97473bba5fa81e5bb8cb4e81910f4d4b3f8ba737096b56b635f8e30dc79eb74da3772062e61b5e9f1e32c15a617d786f30f13cda1be5009845d9f524e396d6d2a179aca59dd16dd40fd106b094b9be577612a18e84a480c9a0d61632cc382eb55914302e25e2813fe4c52c37ae177f0e70a82aeaa72eee750b337aca46cd87fa103f34206a08bc069f122f682ee11a8f62f096795c56ac146fd6acf9347006ecc8381b9d13a2c0373232ca65eff9cb3c7e85717ba2e98b5dd18478a15aaa37c7bb2c13b9d35e963e1146cef1d762701e87d5c4bbb977b401bebf2b1aa001d7e9dd299ed4401ec8e26c06a10de8c79ed916b16fff6733983c7ceb9f5cc363e12deb1e033f3f06517e71f38e04c999b88a6bb797a90b12376f9cd20b2aa04dda22ab2b399928a2cde971d041bb50338d2aa4fcee09bb3e422f6f4833f10ccf0eebba0eb00edc981aea15c2002dc2f702d15e0b3d953f7d27972f958a57610ccb8d7425ca5ef3c698dfe3f1c8e603c215481cfb3ec0e95bfa889d7fa2e2f47694101fd2793800e14c68d8f27d90807d50f3a95a3eff820fa142b2f78a60f413714ca0c94b125cbea7afb0ea720f8f47906d544ca10f09b18bb877edd62ffc942e9c0b946b86c1548f3b6076dcd7d2c359245fca4be7c99380fd1a6d074e8c09a1f2064b6a17cead95c2eb103a211e1a398586c8201f3ddcf65ba5170edd4652bafe91e47bcbad0a99be244666debb5884dd7659582d3b6a1a150a9388e924bd6a6082895724eefebc8aaeac2e632a658d6b09a03d27dd212fa012df87cb363c6ec846ab424e006bdaf42fe6d015966efc7315b7dfdff502821a6b5ac56c8c75f6cad2eae14a38528093762e7d6ecc4213fae99c7f012430577cef1819fd85f8f305047b85c302a6b93b49050371f1f37ea82672361936034e0f562dfae7d47aef3b2e95a6631eca09911f0ac865072b63122ea4ec412c37bcefb6fed85b5336c9922327874014080e2cd117c413598323e44e5003961c24313d9278df35aa39c4c05eed8705586ed7fda9655df53d6cc22a7425d414ecc48f078c1c9087bf5ec74db003220faa41290cf63d9f1d7d4c8d73d782ef07573b553b2fe5019551a1a5333d1537dc740fbbddc495d9766f268d284b8141771d3346b9872259562525e0324fd229557bf9d4b21588b53766f61a0edacade3d12037e812e0af24955c1d350f321d2a660ade026a7efec84e8709122e3622d672c09c00bfc28e0a981293587aef2e9124cd78156799038480f22fd711167a336a828a6f0f0d7a5bcd31f2e0013bc03fa2663e39b232f2ba6a5f03620671a9b73dd46a960fc75ffb779f915c652c8f29634a5229d415d556fadce583b169f61a29b118059603aa4c5b325960318ab5dacfc60816b5a062ff2b4b13a7d2711dc51ba62c41854ae138922c3819024271971f92cc138c7ad74e0b6d3c9d588bc65a0daaf7d337dc796c902a40ff3cc98f951eabd07cbc426094ee20556b2da70f72fa0481f902831e18bd0177d4a4d6b6ef3b03f6440704950d30589ae4539ac87f0147c8ee69c060d059099999803586122a5c08f053f0b974f59a095cf080c24e19cbb76df8ffed88875976cca26b53f178a5094878f02faa69a86e463ed1a7186ec572e6af111cf540c517ef0a228ff2d661dd9d1133b5b64d82a405d489a2f0ddc172331fcad6872d476f937dcbf6e0b2767fa9c9dea7092b700121df9016309a1215c24cbd8e8c0ccabd48ebb53e6c390337c505fc308fd29b35cb6753b7c94c05a37603201b7da6f4fc3b1d80f1eb80bbb63b1a498ae8519fd4e56f06bb7c6f35e9a9331a29b115da216201fd0d05fb127754843866cc2085c46eb7d2d484071c31e26b7be5aed97dad56eb7e9bdecb7503586e5b3f02412e76c05a6c813cc24ae262d1503c82a63c3bfbd4425146b4e43168a5fad75f167fdec699529b979934298f7c99e4cdb24e8832d1bcc3679661d2e2557abe7ec69af9066867972e29d0fababafb477174ac147f181f8806626c5e72a075c4a9cde10d9c99a609737be0c6bfe15a1bd2ca5b97390305e05ff193efe495aee13d7cc00527aa0b375835feef3c00abb878404b0683d30efca2906d84965ec3c3037e30b15a60c3aafdfc01e033a98202797f3b7e18e97a8ed87afab6aead0f3c1ebdf5aed0d1fb4e52b335ea7eeb2c6c2fa311ae62d3d34874d38681f70662596b9a2e6e6b91201ff5a236ee05f9f8b0217f739701a6558b5c684c5c94ed94c8c0141cbf0c4cbfad7a8d0346bd39d09e7e48bfcac0d0dedd5b71a87efff3a4e641919c18a8f27965e803d3b0f9f288c685def5226ef34cf33c13d3391c8c732756be38f7bb21eb3a57bc76f733ad6a62a86c01f6479d0ca3b98b50bccc1c18464529bbd9a5c25c6d59fe772e1371181e233ee90b5aec7d6ce72fa8cc86aec03d82afe854a1596b7d72ccc1e2492cde14587155d99f872f37e30f3f9666a94fa34e4821de52e714a6c35be397f58616dd5ed2069d1ede87eae23926edb8cdafd3afe96b6da635646cd14ff13094eb608c5ebc3dd821294a6ff0b3b7e993d3c1a08079f6b5a2f7240a9ad3b2530ad38782cce067566c9458929f796b6155f5c86f2b23bf2532a60f4899fe37447e59e204b6fb6eee228ee8cc15f611eadaa3bd59b85f0f813d8426d62c283bfa57cdab7d50fc2e9ff895d2aacd04e4f20f63d4b4e0bb21c585bd1cd062e1e23029cc3d6eb3b6e2029fc35e1f0d681b591c59991e9579f08012aa01432cc6c43ccf265ee2d3367951bec58bc879c1855c3c69f809c01c355a6b5a4a96264e6321445ad579be6d99a6b3371386f57d88bc7d218966909f0580ea13bcdb673548665fdb2fc443d77621e84c84f46cc1b0cb1a33049340d0bb33cd815250b78748d3f8e7d1e6d34c4216606a597a6d1d44178084ffcf0a394a48a1672ab90bb20b40c25f17b20617421602c47f363fc91c74f54d9c772fa4f6dd505b980ff209e59f3e55390d9042cb3a12cf28be870ae493cca714db23573aa9e4875e03d003ab836dad4d3772fa64c0932f10696110ee29da02f2c348dfc6b70877fa5f4555af3eaadc1d4b0679e87ef4e55c4b6b5222a656a74d9f453c1faf15ee160603e817d332e18d6c090df15b6e09356ffc8ef3edde1bdc365f8ba6b337da06fd52816b40aa56489d75d35ca56a0c6a0926e81f48e2b9e48800f56b9845b48a1f7fe5beb42d110b5eac99249fa1a3aaa500d1c5b8e0e8d2545094da2c40f633207a310a1eb55a0b243c06642f83a3aa4941d18abd805037e20a4014f5dbd348819f7243966f2dab3ff6c5a0b08f20620f64eea56ed3df0f21bbd349d2d8332a9a9fa22aa33e325e25200084ff81f7e07d68508a2fa0a8c7b62edc8222a45acbad87171f6d1966f0b126a2d59c3c6903ffcfc7c8c9944947ae430660b07b371887af4f422767b5957bc42db8eec6f30f737da8cf89f8c49dcb42c98d65a6fcefc1ac049c04df0c2006708c488a51e1a131998888ca9012d65b191bdc0bf4176edb3c4c94bf07d91e4adf9288f3f340a5b22507b0043ce2056a2ec00b08ffbf237573b5dd8625f4a0169528ced6a198a64eb99d5f626a2e0e276711f3d21ffa8a78d08206169e9e39a7d64c7a51fdb36ab61b41133b0126e9b9b50cfccbc52b836ccdabaa3f112dfded2e6698a0bd25cab397ddc9a0251877bdd82387a6608646558a0aec6e471ad124bc521574069a9604db1d0a0f021ba8a01f28a4efc2984042fe722be76d57cd3c6088eb8727edb31c7739a8a0ecf88342cac334b17e71ff034c255d48f237ed6663725fb9229e0c1ae32649bcaa085673e275835c2695cbd42a8344972aa2acdaab5106613df29058e28b6c78f0a95ee0339aa78b52135ea482159f002d2152a37da540f68d9abfa6c917c5d427a96dcccb8d9aa23572c2284b26fc63820bc12b05832f20881f1736286ee07e836698593406920004700ffa81e52077e84dd061fd221efe770572a49308d27f7b06344e62850aaf90ef7b73c75804d6c201062fe4e28c6289926db9bbb91390531bf9eed98d31e20d14ebd4eda001584f959ab8f3d718189aa25949b1da167e3cd0566d4c60ac0bd0b342e7a13c347b8183e0893fdba7190195aec0aa368b6c44b039bd7703248b9521d959666c14e30b8f01b298cd0876156ead1012c247e58e89d3e8ab48b7266b8e10fce140a429a20f4398616cbe0ecb34294bf471c42a37293a149e28142444e9b02481fb8220f62c5ef5ac90c3f2565c1286def0849fc5613180c797d68cfebbb32e17ac3580611c9cd7a3945dc30cd97e0d81d7afc5ccad08c6682615466b6ddc0ca9db459480dcc9c3089421808f110ae6a98c2ab4c40820175856e31ebaae0d60f52ea458e80f80b33282a004512bf11bb5ce31e05f1bd234d1c827e8c909f0a36d15a7d07362aec295a32bd759253c65e7f22ae4024013bb551f3a69342905c6f51a940b9ce8d673dd8bb6b2fffa80700ccdc025287e9afa6ea5b4880f9a549af45cd3753bd29bd2c3f69dca17403d45f8f462c89c6ca0ebe41b9c0edc830cf4db57bc97b5419402c57b9344ce44c735c6f4c5c78760f2988263108e9549c0617f96a47fc279d1f9121571036d2790654a01a12c25337d89148e1a3236ed6bae70210c11ac140234812d2f9bd73a7bc44d0e55e3aabe69a2691e0f19f0de224ec02345d520fe9b38fd552794574a93077231bffeb85157c06acfb3107180ce3470e2993c4b04691fd2c231848b2576a4011d0d5d1335755ec1a270ff3800a672c69e1c8ca774eeaf56d4c88b73924bf807d1ac1396cb40cad4ad9c820f5e4c377df8b9aa477773c5c1e1f092ee176cf3ebc7a482d03b583c010e6f34197c5a6ae8d0cfaecb91d6096735a0ba17d4c050ed1e141715cb5b0b05404cd3a3273a033dc2ff00726c5824d85f88527f5cb70cc3343ed727b8e250e868267bc09fe32a68445fcb4b2bcd9063973e70ed1fdce0b511cccb4102a8f9b2a5f6f448d1bebb158a6eeeda2408b1232aa6be0ef2217b7dd4b20756812dd8d33122f226a3c76788fe4c8bb012882c4c9adf38207b93c2174be7921e7ad1c111ad96d024b942b30d859a7ade0e727202a5cb1d772abf504e25dacf92e78db174581cf46de70a1a137f5ba3caf4901cb2e3fb50b57f5872d3a4c19094af95e56e82a53ab63aa3df6e016718c4f93f2a7c4d02797d6aa16833a85859eae7e33f9f3063dc2f16207a834b069a11b30cb6932ccc900b8d182b9f9c9fd9b16e332b8edeb890e4e156f50df3bd5b95fa189b98bd47225e2240f70f0369ce055b3f84d97bbc7f20f5c1ed47a551eebd8c0d03b5d7b89e620eba557da267f870a542688725c8156bb51cd27c8ba654e8bd93a6e417be1b0971149659f1d8c4b7f0d16d5f954dfedd3496643022494f5bf52fe0d08e7767c05f5b5241708f94cd2c883f15c91dfc9aeafe73c32bb0d680854dceb192b0b405159617510c167bca3277831bc03f4dc9025bf040caebcbe76e7dace24ed5e8473d32b01a31e07382e34615054e1a70d53228a5cf3972487cadd41ce2a202e7bd5841fa1ad74117928e10e7540e693c04100880964d96ca5e3efa4b7b2c6fa35f52c141dbae8cdfd1c99ce0bb5e1a171b011d2903b74e12aa1b6bd02d82b3f5ad83103dae1ac14d93f80c51ef04177e2babd28e9a72e920c7b6a7c1da6c9543cfe5a62d8a9191d350e48b121791b55848ca2739f2f066ffde3e44149841f513353004ea438c74aec134d2fb370d33baa87b5fc3bc2538ee8d643f059ae2f833f62321d107a93920f238e42c88737e42083d9f2c316c30fe52e221bd0ee5c1ad03432e772e0ec8c012357624153c67c84dc19abe453ba6881f817df13b93a63d443cc5e29d3ea91db0553a446814dbeb7f9d3e474a455a0125446da08adab8e39cd0f48ba2c19b4226bb1ee3a7b5506fb6a604f5de8846f6a80fdf7c79c8a7135f811cfa3dfec6340a9789ffd8acd60c9138cdfab1fe464c05fdafabbb13e9491db63fbb943abd233cbe93da19319437e27902119bb8703a10167f4b95f737a5e416e4b2602cf0da661fe4160389ca20886e9b7004c193d4e5bca3392d0dca99b4e6816b1a7fac828c8e6f3da8f5dcb92881110e2350b8b6847e5049065b67440f41edb76152ff5d1e80f0f59d5092d3a871a70842c3600c80c57c251c5f9bb9b3503a92d24ec061a7ad123212f310b17d776714da544099ac95901d6e5d2cc17e19b46158b3206420b353e0c5176c2159093a7dc1fa88a4419056f2f2319c43be586c80d411881cd490a50174cc0d9a80fa58556d690da3128763dc9880c7a334177a2056ac31ef81e0b600a068a03f5314226765d8ab5183a70be8b011c18818fa9481ed5f34d1543ad86690b8d00142f1c6a959e5264da894ded4b412900892f8515aea49a9469c3513024f7086a5d142b03602ab17ce4d55f61012568b54d25be47f0865791cb9ed45b37caefc04e4ddc53ad92f5493a8719151e47a51cf7ea44343704746ac124eb0fcb5907315ac5404ac83d1157920a2dcfb441b0598b110a2e05862e2f082c5c3c8262cc823d17f36c715030f35bccb054751b8130f9a514bd9348da8b636562b4835647c65b4c52c53a27fd42d7d380fb9247887ccc8ca84d2f268990bb598b9503a178df6c83ec1141a6d96c818e5937a5ac6ad44db0fc19a1bcbb84cbdc45f208ebcd5a608b484d4e26a7d603a03097b350ac1d72892accce5820c93f995291ae592d3ecf8ff14460f5009d290e7c6ac5a6be24c90d424bd7932ad15ec2b4604f21c917ce8b2b051e17a1509fe5735affbb59d138d07f98d8f17b906bbe1c791d0b2205b0dee2f6a72ca828023bab21be9681869c959e9c261ccf2da9a78d76af9d1095d45576322faec600cf1727dd0e1c255d296949d54cf3a475a6676249b0bb56e8bd33d5c5219f3a90b3212cfecb9598b751b74f49b5626d0c7c25cb81013c3aa49027cf89bcd645d5978b1df9a77e235e15245c605401e4d966f0ddf0fe92741bcba862b5ebd192cf5f3498e0c3d0b564c3f1324042cf11af561c864cbcc5fbcaba26164ee117538241d7e74afc1e1e75a23e58fcce0000442456ee30ca77f55feab4dfa16683d9ff475caba68f7d9a77fa7bc4f8d810f364542f386bbc0132f205b4f410b0af3aca9f6f4a00564ee7f8cf76d0ee52f9664ead5e41d0970375cde3e18743e3dc24567b6d8af44ed0426901578de2c3cecf133bf58eee0c05e1ab4cd62fa20d00837103ccbe01f358b965f1c9400ac25c1863bea8d94719e05d1a8df25136e0189d92052f44f261ce6584594a9b4d8c5530653b2f527fcf8ab48f82cc4e5ef9df20e060cee0383ebade175a6f77970fb3cf9b52504a73dbc5a813ee35a4a0bef710ebd04f56bd0e745aec26c8566c6117560bafe731d5e4582e49a8cffaa5e370077eb428821920973a5985de97c3e0f912ca87c37391ea1374d213102932ce600f5a3e148e629adc7604066a20c4aa710f849d0fe171ebdc3e453a699f7087b73a41d195ad0fc0aece911cf5826475a88d9720560363e3e54a200cc20a728e18f14917152dbf69e8e894139a2829c021b02db04d81b2a326b90ec832c8c2b190c316a7c9fe1274d5b1b47c2cb1fbabfca628daea5c40bc0b25205c5cb0a1fff6de046e02eb0ce4fb8c6a864ec21e3f270caa08064dd509357c49564ee5a11690f0202a307138e0cc116140a5a902fa600140ffd7f53edd5eea129c669d02bda39f59683d51a1ac947122bd0b0d1beb0c9839cbb2e22f93fa14ed0567a1330419e7cc7360e8887f2ee3e3de6aa81206e88962d92da60b8004ad70b0f833a3b17be9700e6cd50e7efb08035932b7597b0d34c663393cf8eaeb652e4b4ae2628fa6e3b01448dd14fae377c572284a9284aeb0cfa51ac74847dc52f9d0c48280dadc13484332e76a91e34860aac007b4341d818648927acdcdb42c769826d875f809ea40e56ceb21cfefe242ee04eddd57ad0d5f3b194a7f2a3df50864804aac12bb2aa89913bd83a2fb2bed0c68e4b33e299c2efad18d594e6388ff9e296d44cc816e737cee7205ab08cc2380772cb096abab460ca10ccd7030a28688b9238e005ca2682bd50b684b743946d0194ea8357f6c1c04f168a5b0a4bfa569b05f8cff63ad0720bb28068ba71f3dfd727c24d89a2aba38e8e05fdd09cc8ed03e788ee3896e6190611331db61e857b0142da5a3ecc295b9b7bc84ea7c1125058cfac174d25844c6da3adb115037a3de3969987932b9676eda2a98a7534ea36f62e6bd51b95adc65edec716b0b1badfeb219eb31d38af5cc3a1e9958c10708ad5cfea18bd8b41c2ce10a8e009a3cf5897f6bcbf92916645d5141c5424c05e7988fe0f884f34dc126e28fc07d4adb844f45eb925f4f7c58585eec3b367f136884b2342b07ee69e7d40b8ec14c745cfd145c457954617652084c2428ad1fb7e384ec6eed53c61b5a2fa41a7e28f8cc80a5aa9e1bd7da0f19c3513a68ff7d781535e0a11fc3455a3ac44c62ff859a22549f327ead7a75bd84e287d70416eac1173dbb8aeb2004d56e0360314e63905000d00cf67b9621e9b72e0271750a5140e55d960a0821ae3a3593605d96dafb2b005441a2d00c6748d669c114530872ce5ec39db47a0ef475753f12b1df4b71f5ec60f2228f20a3654c343e79f7b1f18930cd5a9e28d0411dacb601be43700616bb87b167e4d8bf02c5dfbf317fbd26a244a5c34c544a4b8a08eb8085144b16013af5b929a306738d94fb35f07c25809b25840c33ee2ac14cd599dff576cc9ccd46d35f3787204d5f129fcbaac83997d5724063e60c19decb3433e7bf572ddb387559acfff5f9813a5cf879292b0e5361d49c151dd2dc947978592fead9b440d03ab65450e0d9d4f151451224a36ac8e9873a7484f6d0e6556db7eb5ab74871381a0fcc78c15b6d005d3bc3729905ccedfc981b101640edca76745521bd2352ee69e4d21e418e99627ec983ede119420850e2413150689837d93f43789dbb95d5005f45245df888bf4adb22a7c402560347a20f8260a1b819627982c2c05eda01871d08f3038292b821a26839a0bbbed07e111f1c11880bca0f1199a78e5fd75767d58ef0bfe150a949c6aaa3dfb59c92ad82a353eb24e2a17dff246d79e954ed489d4561f549ebf0253e33c8c8b886eaaf51d590cdbb92a9b0742b8e2e5e846bfc21cfe59859f57efab612f0aacc1aa2302940dac450ad29a5bea4acb2585525a439164a877cf0fc57dd999fad5a025c1a76526b08436edc6e5ce9243496893a4df023757fecf8ae79f4f4e8410fd73e303f1fa227c185291962347dafe7ec979923f6571034e49b2af52587c5ff239c75d2341a03c250deaacdd083e5be5a7ae3daecb235b759ea1cc284cc9c4c9e8ad1b678a1718581587f2f2886b77cf0112e89770292143f6f0ee36a53979c3ad741fb13dd64244b68ff3207c1993102104122aa40e37b11fcfe32ed486dc1d7e2b74ac0f28c9b048992504b5c7c106d6e259abfe39b14487914210c74f6f44b0d33adc87a86cb59db25057566dd4f2f656fd3ee1d09c688487ac76ebbb9d1f3d5bdef0fe2c5396d741af530b0b3aee4d232f4c01170268a07ab8f2ae86870078fa505eb3247d186328e9615e482636327d1244798f60a648c9efd7f97665cf220ac8cf8a4f1e4997143a64ed8ab320d3745e762a5660a430a06edcef2a8a70aaab8fcceb9268a112abefc1534ebd399d491dbb6e8a4378658dc03587e2e29d7ee62ce4ae32b27facd07eb09c94b0d91a978c1993d4f43f335ba2322b63d467e5d29cba507878c9c5dc9babfb9f29dd7e1be06c8eb5141afe2e14c736fa1d3472b767f25d92161cbf5f980059625b3c8791ef5233d1da460dc3522c41e22cc2b42dde32e84196fb81f7342e24e4564218cfc4dc74f34d62cf72e81016a343e08d980dbf37203543e5277dcbec88afac931517042595dfb742d5933786fa7eab717014f400a8eb08506e2ed6f76cb5c96ae9391bdaf3bb331b59c0741719bd5a674f9a9b1ceff6279612560b417c3148b0d8dbe2d7dd1eb1bac7b0c819d04b0d651fe124a3bdb044c94dad92e201708518a5aab28a5a5a16cff7630db8bc07bfc875a82eda42c9ed0c91940dd94d3669f0a44327dc0c8317947b71794f46f75162902b73d998e88d736f085588efa7e31a87a282f40f9eace27ae58ee0cf186c812cf3199deb12847c95b78bd241c39b70aacd4d7fe852301bd53aaf3fba4c50d99a203180011e8eafa2591c4e3539b7617befa74ecb52fa3738dca4ab18d0da19dff310fc77560ee01397693a175b2b3c901ba2950a81e0522dcf1965f0c8ab74a1399b9b401acf5c47f483b6f13840c0a56f3aa241652a709a7343acabbb414a51ba295bcf931b51e215ac7afba8cd915b1f93eb3c8479da6ba88134eaa59cec57d158d664b196869c46d045d18e87d6e5e63fa168dfc6c955cb28eac18a0e6e9cad624e5f4ca587b250e3f865a9c9fe0706ad549d39298297344d6a52939c4a0e7fa93509463ed6a6a647cd57cd761d09f09a57dd49be3ab434e6479aea044aa3995b469db442ac5aad00f3d79441499031ea270ad8d7445610241c9df9051512c21fe968eb60a758f3ffd634c3cb1f216687f2097f097a59c382d6dea3be051aaecc5d04e9de6f15514b91682522946d5527db4c1a3eab8700bf54858e4318a53a825a206b517d23368c172ddaac59e7b357a5a7e6fc91372ec209464c598bf7a7a64349a3be47611ed49abba68116dd949fbefb0aa69838ad682d2a789aa2c68df31bf9d541fc7df9b94079fd637cf53856e769e2fb8430030c086b0192a008a3379ca104f807886cac25481301056d8553c65d1c45aa2a21b7891560f624b604b5c5921320580cfd6c47434eb330dccc6298484bea09890e5d70fd896aef8186a2c4299ea150824836bf5b8409573c9dc4aabf64a64edffde85cdd73d738638b78e215fbfa3e6783c56cfbf312bee9b9f796d2932d3a430ffed1010d09926382feea24a941ed12069a582c7ba13627cd5a387154d664d75b60840c065f0b842b0149029b7c3cee4bf4194f80d9a661e2606b631f793a0524c4ad2ecea191a05c206ebb23d7eb4f9e78b4f654faec285ab81519985131ab61c5b92f117e50df62ddbc89259704b3071a38a3a2a4c7d80e8d64a0ba820fed87468163b9f1d478166fb9ffacdfe31081e9fa5f29911db2d5dc908e83c0da4ab50c1eea0ee3a371b76dc6f6defc6716e18b6c8488caba71d8357f01b370b36cba39abffd96ded470b9bdba4481dba3184e247b5893cddfa57711ad197ebd22763eceab4e48e1356e73ab9025d89bd683760f3a7774724b1ae1be90511fa740b8fb8a2c8a2e55e27ed1d7c11488662810cea39e2bc49cf95e5d2a75b1663fb10e995b331a19eb455edc4868ec6ecef7dd57a62d6675b86fb0a290304d681b0bce8a55db49a3ed8dbc7041c09a22129ac8023557b57596a92f033ef37f528064f5105c493c8939992d678e86be32699922176b3b6e1d22f4e98d8f796a3c1985d7f46e1f904e91520e054255452961e6a07b38b83d5453226bd42a3ceb6ecf8969e2ee53e3e0d1462431203134e3ad6e717887c089daf2c4807d9d77a632cbf226f6c7e4d3cb655fc0dd2d978b0528f5df21e53196b1da2b810592ebaffd46740ee189ae9021cc9e17f2b9bf442610b849b1f71445d2e6aa44f5aba272e509bf1388a7472a1cdec5f3d00b830fe6c1c59b5de60655b46414a7832d62e00ca51cfe067dc5c99f436b7b754ab5f22fea3175eb6e9beace56be20c7d0a7dde8b7cd4967ae390ebd9991549b6e6a51505e5d895b57d415b7ed7d7cc4cfc895089294e0af2b4c8978785f52431c33188a76a01cdba34325fd391b6d644862f885fa6963233197999db8f390ca7a7131a91cc1d62a671d0cf507c7679690a974a6a3975dc46c1e77a9146cf8bcdffcb59d0e6edbf117d027b189256580174b5b5dd86ffd2350a658aec68bf5cf21a4e4068c63ad299a7b0cd3bdbd066cbba9fd847ae5761f55521c00de1ebe4e07abed501b2b31cf0eea7c35f07482f94151c73790c012584f37b8dec581a20457fd48c3d17fb2a2a83734dafad2fcc18d51228bafa5d8bd40c54aba16a4c8e848b9752a3e4fb03dc10a3666ce1ad8a552688f47c0d3bf5cf5e587c8323bb3c740b0acf312437112b0a5c8df0b632c8732424070f1059683185cf02b40c58ee1ebc120834507cb631b9da2a7f857d240ac8527dfe95263de9de11ef366b04b4d608047d75d09e1340368158b7e7ef7feee1c12b4a8812bb11e281d680783c5438d2b0f08de7a242b73834426d4542830899864c2d320a283d358fa920c3a677b5f6d802fc80eb7572408f0b6baabf68fcb9405cff55be9f142c68805bab8af69fd58e8c0b54e5055310c9a394f705f8f34b5a0b5740d156a6fcbee781df0b83aa17f916e0906342d34ae6aa70b135524e208962863666c49d6fb8f74f652fbc26c797865555b9d2e0a5506474a20f1e4af4137599f7d3a14cdd87500dbc238340a9548e420667794ef9de41a979dcf9d95eab2c44ca214ba6a5de1657b90445a1d087fb0aa4216cc90114a238a17042b5c6302119f024d6cbb45b3d04b9bdb5b55463b689a2196496927b18b05b3c94b17082ab950e08ceb6da21d5054d869a6493659b35bd4784938656aa1001dc9e4cb695b48997e3e2351cef82376f2f4f122ee73c7027ebeb3944945d2febac6344e59a877fddb27b44e5492d85e4620a1e77c33b321b3a289f35ac755070e062afd4ce1b16366d0291b679b75c8dd2252da65175015a06c095ccf889d91f069876875c43a148e139f019dadc0b30b535d274b40f41d2aa5eed6c93b38463690b6638e067dd77afe0c97fdc1cb75e034e83279a58bc8cc8a30952396752bc963efe5a2075fd4a624e1746d30b59176c9ae3e4a028b14eb449245c5b653ac1d89af2ee8987560543c5e2411949d24de545306f1c78d02f4bb7c026c8df5b1319374db5472fc438a47607c3355225f25c10a4e0cb5710f0369db67b5872529115c055e086761960b05e97d44748e41487bcac99917168370927ae8f2f5d90125671869f6fc1859a853a5c247276d0553ab17f63d1444fbdb84f182a8d44f08a3146cd7099a17d93c2d90109a808b72a68284fd46c885618c49a103b8809e80c5700e6c0f1578f841a58a094d3c7ac5aba39648765d9f603cfc44f0c3b22a6db4106d4c63cea99277222297ec9f96d631ef1b533696ba8cf7734928bf5f3abd40a28308624d1575ec3152cd7ed0aa6864b07b64240ae55a74c68b01bfd7a426a5a6ed63d3d92b6cd150b932f7e979b0e159ec034b9d7afff47a20aa062786a767ec7fd2540c9e9b4a6249f07e0072995efd229ea9cf1fd3e0fbf5783a330f39c0509c55e0cdcac8c92b7026f72469d1b2fec26887fd1eb0964e006b914b059632b997bee47c078576ba4a95cd7996f40f6b7812530e33140514ea884f8e8ad3235bbf6a49f085fdd0648d901346f1ed1a3881e82c83bd45a16e1d5d6ec0022b5f023858d8e379e317a8f3de968e3cec95b07690cf12f3e6bc87d00ab58fe5bb1df7f736a1c86c834b04ccaae98f440dc66fc235bcd7cbfb0441dde4c7cbd5402e24408af5fbde4be78b149f59981f9f29d1763262cfa443b2933ec80d80ab30ad02efe547e38487d654ba9bbfa166a05c60667002c778dacfc27748216b1e44026aba08ddb87586e5e2d79dc2b5a8cdaa534130ff634d0df548aba05bd91db82686648f7c7e8d5553b58307f19e5d95abee1c250b016c97fd958d0007d2d0a98ecfb92aa92b2099006e8f27a1fd40a74bea632be7197a1478c412fd7b29263ab6edb5f96f48d05388f79d3b2643a266bf18aa5f4966fda0976bded15542812ebfb34241153bf7b2fb76783558d045902b09324c9ee41657462224475714e82a943f87e026f94b2bcf4f7241686f389d7e205bf4092d54ce48ad364d708196ddd92bbf9186140def5128ce47f4533fb483d021f837fb16620b8b45b08f6b67bcf8685ee2b82dfc9260cb32355b6c45be0dfe2edfe18225f43813af4e56af63883356bee20cb3dc87d6692df6dfdc3c0d74b9cf11b80b43054c26f978f9db179b37beb12e31a57135cfd9d4b75a04550d9009b1d5d98710257fcd47e7f0dbb6712ffbbdcaade988b6ced8a947f73819fb90402e81983ff77874a9eabbc309bf70d96cabb4284b1f0959ab07d8a61a82d09477c0a8fa6cf3814d5a24f56591c27841365c841d51654fa2c205abbed2ae9f8f02b11ca76ac5456e4a496b4533bc07a9724557dd3844c9544cb2c0193049f38a5646de4060ebb8181ae8955b404deb71bbda7a7870723fd9369a42a6b602e23066462afb080adbb292d108e1f217aca6cade32e2ff4f8d0b92e661bc1100a7b39253a0a82913660870005c10c1366631841080fdafc9b06090c4ace82d0ac001d6455e9f6677cd09c3e1fcc47718e41c98f4a9731dd44eabd3782801711cdf21da02a51296c9e8888108c52b8f5fcae3c271f655474f2ccc5dc9ca7de474418e70d333700d50e38190287fa794087f4990045bf7f2449057f085a3a818ca8b7caba69097b501db9515f01c9553053501bc1686d17165c9a662e51c4220b68fb0970f66672f5fc9a218489801c8d388b55592834d3c641b558f004e481f064cd324b45b894aa20348753506f1b83d5e04178787c25164968a62c5be7294f60064c4dcc7e517ac2709d2e17c39056bcf3b4297b8390041d478098456c38d30ad5c00d502db09da613ed2b8257a8fcedaab1ba8609e892e33ff59f96946b5373ea5c12829030666093406a2c4e5bf3544043ce37b45bd0192163e098a21298b6ca06b36a88f228f062a8287b8ed89a0ea626a354985a4b6e657081f231b1b3649c17329eaa8b029ca88ce919db5578d27c922ab861080686353686fcd7b0f9f36b34f990f9678f246f73b5fe9650f1d6d5af0b50a37d481a80931510720ed720ade6cb491ea8ec68b7265aa92b2840efd06c7c04cc7598442645a694173064e34b0bebda83079a83c9b204ae811a6ba018c4c438f59d29a44b2268002ea0d6a9888e9a807128329bf9ba316180ab1df61fc2ef5876da132d0fa5c39e16983564b9926c60af4e2e519187fafc498e488cfd7b468c061027a2561ccf3906965f19cb15939a2c95e55453d61d235f83d4acf62008575a64d5a45adb7627d76d8160f10f5fc69243d783c4f64bd30185695de027e3661c2b37218f96c845154c0bbb0bfe8ebe93ef355888be6d2dee2d930594cbc2768e6a1bcc1b8033833b0bdb73e3ae671dd0013d84a35a3319efa6438144699283ef1db6e06a0cfd51eb86fcae1f3739d8801fe7e7c0ddf336a885ecfef1177fd18ae5488b69a28ec56441d83873ba0811d9a996eafd474d6958a672256d5688dcb305886df3b143436ce131a626c5ab44eb94d23b46bbf28c2b7f7fa788190e5a87aaac58916246c8671d59ccb7b3dbd171c34d53fbdc613820f6108525e07d6f939886673771888113a6e48e79691a5d9bf813749168310c790d9ec58c7e6014affb59b5b7cfe9b572a3159e64e90e33e02961f1c21b2c2db4844818250afdf8b27e5ea8b30097acecd0264b830378ee37681d5c1003bf35ca5de1519afec742f8a17ca7108b28869a7f2173b69bc6e3664282b7921bbd5befd0d04a4ea79542fcafd849149664c5e4dd88dad3b84d53dd72f74656656aca27fe0bd0a62917460d76fe123741aeac1671b04d53972a0c8bde0fe0d7a8639afb8da9a501216bd1784c2610816c14a41d59d4bae9b501549df79071e10dc0d33d62694b8e468f7bc716f9294fb143cd4e5cd50fefab613afa6586f1f560ce1c8f7cfdeaf6c81eca981b9df6aa786d9d4727e0fda0cbdcfdd1826a061f721b64155eaeda4835ed865d91fa868fde66923ffe5ab9baff50a3125140923c468797e2bf87df2173998a001a5e42eb1c5e7c9fe389af75640502c65ed64a1a5a8fd508020ca638cc23eb1e7e6246b6ba3dcbff21de52a276bf37117366093682eda3f87aa016b027995c6ec8632127170a68a6b061ea6017ec3c08f193703e0e095063786be6647306be7a7839e43219c7dba84af0b14d10d98a5fbf9fef7554a3f1ee605a05bd148e4c81def116b3ad8568c62c0b90e3d68091854e59c36b2d8ad334ffcaf118d3d5cd7afa38992b9f200008754ef1636a0df182ae6b7cf9dc0a4fc91ca2da5b0d3e0ec26e065f66236f5caf2ecc8f9c9c6fb29be6c1bdb75002358a7f06abd0275210736f192243c920d749e3cd9980b6a05b7408139f465db3bfdd251a065423ee2f1877b4d0c1f4d4421be8fae41c7b2778a48d6e5ca7769e1f751294ba8d770201dbcf7d686c8058ce3592aeefe7c4cfd162845affd7ba06db37b80fe1d7b39389089fbc6e8ff3d6ea028e339ad06eadc881fe7344d2d84792c471e5b3a4dcc7dec30c6f2e2d69ffee629ab46ef881dc8122b37b25065a8506f955eb441ae22f3aca8c35a50c7deefbf68dd99143f1d3e9a65c3c6ed4ff0eb7b26336525547bd37930ebe04b9c3fd8851705f46db55c6b51701467ad090c51542c1257367eaea6f7ce06e06f751b565a3509d77c914d902ee6765cf19494549308c3026e90480d815e5e3b73568fbe354b2beded7d7bc415da58b7450283809f35897cd1aafb9570c545549f4d2eaf82cc676642b16442b828bc2f89c02025a073f452aa1c8dbb0132aaaa88edc9ea622bf7cbe1b9202b854d7a03b32bc1825fc5826c3ba9facdf430389241d1e634962863b41d1ada7e88f4e01ea23feae863d0548cedbad5245869b7600d89eb54408ab723e49bbab213732b5d263f0988f7622eb7a704c92153ee15c458659f49f85718a5c2c8265eb786ea21f4ed4077bcc20179c61b3a4998031baed5c900a4e2e76b63bfb46a3dbd951c5008f26746476e868cd44448d0ffe0252b46c4a753fbcc9026d3c4386e486d19bcbcb46c34ecce1658b6d435bb063838716d4a076f544a0a5bb8787457044bc07571071a930912cd50a3cb1bd5fc564c920e08dfa4e5879b332607545e04a409bfc366748962a5b7c046e5c43c0e40f0563473db91168a311e08ba1fc959d544f1781f40617437160dd28a2641fef99d6b714a9530f361146cd40d390f341b7663b144888f70ab73f31c0c3f26633953d3cbe92fec25650a44f8fd3115a8388de3d3126edbef06a153946e5096189a0a89718f764c91e870284e053edfa35113536135214f7f6562c7035966219436aa3b1f0cdf0f67a6ac878fb0c32d4bdd2e32254103890750a224ae12a778826e8df1d1e6c9d3e764f18500e1914d4f751d0c90419301f7291b9f065cc05894db309ae84315044d879cdf7f213c4af67366b1f8341f4b98f3c43a9e1128bd858392f6542a9a3bddbc0c983b1d16eed019ecc99774ccc1373c56a20a8876ba6b77aa02aeb09e226aa5c8b5a71c015ae2d5e406b6f23c3e9983da227e8755c41e5688db4c5017ebb817d5717f108e2e9b7b34959b99981fa6023dedd0acf01b1f8f75e815cea0974e0860762743a14203a12198aa8c09ab638d9148426cc001b96424cbd619a280418d15a5ffc06bfabf3720f0b8313fc599b1b470df8fd4a57a7e3fd0745566b1f49ed8d4cfe9c0cce1d2a4099f5391d204a6e60c256d525f7dd5c6b5fc20d13a98a0ea31581027155683d1d2d7008f23051249413a8c6aaf33a07b8edc89d609ecd83208633fdb5aeca995d4bbcd89ee5d13ccff5929d6c09ddc8d2b9a9fec48b170ff6b91518b4a9f8fac38209e3d0ccf660e94ec9c50ba8040e3732b8155857dfdc8f7d4263309446e205a713adb486aeb00ee095ca815a104c00b8f594ebeb310b8e6201fcca9a8e1ba4ea7dd21da3c5a1e5cb42fe544810cb14616e0ba6b6c39443e75f569e8db0e21ba64e3b478bc1c5a8cf77124049d9a869085b752797dcf0ed29681a52582dbd64827b5d50a7f16bd9b9188a10d54b8637c84d6a21c2c6c78292ea6b9437db26b122ab599b50bd8407c22ea75e287f5c65a1d8309904526fa566f34e89bb0c2f3108c433d835782d6886fb51c106fe2e782b0aa233541f0d38a0132eec06d82b98993a6e5f13672e87cab729886bf2e3db3881862f924ec266eed0226b56edc54355851367a1bbc75f966cf167780f821e26851343758187ae748cf6ef576376f9f7dd886808accf6689ca705b272d6b6f535573c78f9e41525209a1888a9e91353fd5ae2e43ca28e9e00a2398951ec15601fcc1f44f768804f887aedf087acb1b51b6a63ea5394d76b07a4ec0b5eec27386ba91fd4542fc0010be03cee44119e04ab13f1276d5954dd042d1d30d62309aa09bac3faf831aeab222c79d98513d5091d2b926172b4e5815cf9c44b5de0847a078c067554684e99126802db1e09092d05807f6096348cf4782e4962d128fa6407548e51d0e38ab6435c7bcc4656174499dba15ed87c201243657210650d40c295857025bd894aeb050d814f1ece9563251456b7c453fe89c3950d8b76cd88813363b355b920c5b549cfa1ec3507acb4104c136956e6c7b7013afc5343585c3d1bea3c55416160720b42a591a1ab23a39b00340605151941a54776c6488a2ade0a208aeea3142aee80d5283332f8a535382c2f13b2d6b4648dd6caaefae6ffda861e733fe5740a1a52532af9927d496b741292f388c6f19617bdeb70976dea5c5332bf5a0b27933a716d452de062ae7c1dc9162a8b429428f5404be18a70e82865257b2187364071f764f4f213a2d1dd8de743aaee9aba2a0be5fb8a7948078b2e6fd2e201e5a607ee72dff0a8454b33b6834d34cb534f7af9e08e0d287f32f12595bd9f481b6d5a43c00683101abe5f92822149be465a864507f614663691c8da5f1340a6880ccdc007d0d15cd27810140d78b50fc944273d7dbebff4f1c52682ad0913e3733850be2fdc6e0e69b72da1ffb33d2e83501d5c3251f1532f0890c8cf7323e058fe9ec7b6bab733b4f549adb73522f3eaae612ae5420554d95f72c64a4a9e3c25727a627f1bca289b7e7179c85f338da2d48b38ef7c252adda771b907f8fc3b71f798cabc317769312d0a5cb8c7e5032a69d7ddaf2ff1867a787359961428b4787f64f2923ebe98bec2bd9a86ff132bc478bc72d5f4867b40b88951d0e3faeda1e353e0db7089d3a00c80bf61d5bf89d71c4b171ac26ed3a977a0736a6c29225ef31759d2a8ee467412aaeec9e9826640418aa642d2424dd5b9d2da8a2acc0aba2a008aca25200204a3e49850ead4a4e74dc698a0aca8c76bede58bfc18a6981764851d6e2e289aa2f9aac70af399b407b7fda53c2a783c2a322ea0cbd2ae507343c8ce6c56e9ace97b0009966680114db0f3986d2cf101f681650e54dd0a840e76e820aee10f582f8036b0bc2d89137227180b6789022c1183343217dee0c4b153be9192ef0c167c19e2f008b1dd4f247decfdd0263e9407e1297e8077d5e90beff1195c9ead26860be2d24bb40aab00110ad99fbeb7a74d5d57d3f4e0f0ecf12bd571abf69410e48f9a70aec248f220280eb1202510bd66038658ac6bda6a4ea3b43bec26e562656570a215c5a86bf8f384852aa87c6061f05be79f2285d9007264e2c4b6b98925ef126545fa9cab32d5c386ee15b8c66a36046353144b9c84e9bfa96a2755f42dfaa750919aa434e069e30ed3547828aa5c72fc04972acf613b418ea643bcfb226004a339301778558fbd8eea2c415805deb3da2e767923e3d6ac33aa9c7b0a67a8c9f12fdb68dee2ab17127c096c2dcefabc6b41c993205e36dabefa1dcad71933c11c237daf355c7cd04f4710315c5be6d78c37f3d69d6d3b251d3836f46eae66fbe59bb4c3c0f88547f7bfc48914ccecdde1e1d9062fcc0c252157dd8268c88175d10506bd26f9362c2491b521f64385e049e702d9e4c2ae479ba2e7798ba71e58074348a1c024390eac9282697869dd1a3cb76ddeaa91a6c279deedaf702eb118afb85bca06ab3d3c443f24aaafe4b2a23c30e490e575495b00a40655fe3196a97d5da7195fe916001cb8d833beef90b4f4ff119705fbec778b860d5e0ebf94b2e57111ca0928f6650e9d88c638075b20a89b885eb054b34d04ec13644dd283ea1ee4ac6522f05392ec11146d4cfcb1d4367c7a06e919bee0a901d63ab6d17bd64f6723f9958b786a66b22f0c6c5bb22c9ff882456c19aac21a2e603c790312d4a7ab32ee55f203abda9b1cea3c57924602d99f47965dbcb07c9c6e5e6377a9af2821552730259bbeb75969e37df73eab0df73ea4e48a5437151e6ffc9c9b8c32612f23cbf3607d5c1aed1dd93cc28fee028d8ef64f566262f61cf563c0805b7f84def4707942d0c482d830a6bd0e64b91cf887f9c99ea08430a8c1ca737f0c6acee101e3080f519c1233b4e3fdf5b1ef6bda1699a395c7493f723ffa2a81f8eb16ed7b58add5e223680cbc8dfead3a7791b8efb29a1b2d9e244014170a0bca76ed8162ab55edaa25ca8a8ab4ea9ccaa5b570e7b0ccadf6f28385e03d63e5368d0994b8950ba3d306d040473bf9427c0e315c24ccd86e044d861a8119e2fa19e3fb98ece5ec3b000874278baddc03d89c2b6add94e6dc6f6d4562ca8b6aa8eff122eadc5cc13ab011a4f0638ebcb1ed6684c737843de96bb4e8dd50c12ef5ca3926a266a811116279f2a719149962f2d65d01683907ae45167c09afe035ce3a251a5579cff9b888b7ad6a89ae9802ed5efd529f40f4c91a6efae21a6fb79a43825a41c1d4459a835d1d666d73578370e994074dd2945067ced350e26fb522180404581bf3f6d0ea0b257ca6edd56c20d77d2f89e68174ddbe83a6821e153e16cbc471997b5f96fc0788c4bbfd8ab4c97fd588e41bbebc2750b8571390cebf8c7ae0ca3c5675d19ee288b9241970ebeef1c2059f2001b3a940b10ba589db310450de9af3a2e82081ca9218f290f269bea22634ed999bc0f433f9295346496d6114fbb971a52531253ff618463e6470353be40bd5e87a64060782b7d690b355c5944ae8b508711a334dc48cf091ea1e8eb2efce408e8f6909bee41eb182d39d705122b03727e65d5a1ded9c6259a773c766ec40870d141d7a80735f7e5fa26b625ac8d86b1bfb20555cc879901cdfd5d853b751679ca546572998f46b611ea0a38e10e79023b5c5eb8e411b7d32de013710ac0f8f17d8b142ad30094660a940f5985c99369c30c4a3adcac9b5a286a3794f91e0a17a23495285f57143ee8d5589447604681e9b40ce95ddf01dce8145b7994cf84df69980c52007209d99551ab9688942333e320c9ca1cd8d2db13560acfca127a4bc84f7e8809e2d97c36a6958d800e6637a3c5e0e162c13bc402a47eeac3f08320a073bab76029109f2e1983f2499c4797845ab04a239b76470071b702e5d3735236edb0c46ef492ae52b319f300746257411d301af6333d7074d49bea3932a21cd9413e0425efb559dafc006a8e891bcd4490e4e0c99ba39527c70f6d0e282a808e9c1a81b96c729ca01c50cb911373286b8ea9d4ff85ea221a315214421192183ac739bfcbb9803e44e8e80c139e21e5c5a41f3eb2a543d36b991a9a5da3eab71593e30a167e8ed9fff78af5900160cf93a9e08456d86762aa393705e8858c34f966b15fc30d13e6b5c01583c10d3127302dfafd7b108843318909a54e28e828d3ed6433db0efe0d1e9c204305b0d22f55eaa27e7d4d65269efa2334c029150a4073bc6b8df706a44b00bbb81887b414395f905523c0c2599a2ab19379b753f8d793b0933af23029fcafc5ed2faf8c14b0420e834be793eb7b0fb6c721503ca0e3cb985886c0dfcd63cd1f37c6999e2544f9278e205f1fbcf948c7e820c6f3828092130e4bb59ee158f9866821eaa9cec2ceca2c0c79da3bd4584a339df62246c5356f6514046afea13c00dddd2897f938778d050c2540e520124fbde6fe90f7d72a853d1bd861564fb52fb3c690e80c1e5588ec2d91dcf2928fc6bd7257b3d6fd5f42db7f085810c8ca52e3b1e4b2b844e670e357b57a78022d3fc823ec5ce52a79403a2cabae14de03c7a2e388cb7d020c3c888ffd231f1eb404a8fd6b0761dc0926d3da067845eee39fbbd1811784c8f008806a5aa8ead6a0e0863d9394fff9c169d4641835f8c6e00ee3de8c67418c277169f0d120c00dd64a2183f035a020d06e1accd2125eb0a50bb6becb135200d5d305645097e3d098ec32e874e83d990b80dde96488b340736bae2201df75959b9bd904fd1c8beecea3b7a19005c44f589cb3b61111b3739042a69e04014f10346c9c15b4b211ecb1c683a01990fc386a4db383cc2c01ddbfbff63c02ffe7cfd8889d0df887ae86657ebd1ea4f0b7767a26b5d4b5d6b75c4053e382b8f8e32d0e8ae2806cff5549ec427015196cdc0b35d39c3f386e3c41bfe19a46bd8f4fcd6d81e33bdb4ecc0caafe5fc6e4e38f4531be29a7ab02722b51f43b0fefb7a040f9a21dcb0f1b194a4a621f61704ff00e60da29c2193ce09455bad3fb510d5b56d1f6480490f3ef4ae5f7cc4b5e5cd695bda1b0583f5d414951264a0faf1b09df94d52959df006512a147daf04b017708b9c01fc3d63c02ce59121629eb4cd1486d5f070d7d7e6e6a50303775bc9bf08c85a00caa01366799af41da7be820f59bd18dd792c5e066ebd4736004f28778346128fe6baedda8517e5be8807e9a4aa5f4f8ef798c0f919785e0d85b733ef60e5252189a0f85516d6034e4b81981ca7dd2a47df26540019852e57050ce08d5395905b0727e1525d99ca7a3c70673b8771805f00a9b2126f34e59902069bc619e2c769b4903378c6e497a4ef1790e69e93e3b59628538907ded79ac07ca0f9987dc86f082bda3e5eae23aab0a0e904e9adf77698e7509a1db10b43ffdb4b80574cb898b1b5687b77918a4c528477147fccd1e2016040665dd6d654b9621820b27cb7617444aac33f5a3c0d7548d753774e711bc9a84f53c60389175c95ef5db96c5d5c38fb1fb16295d583c71360a0cf0481a2afa98e50ae28319e065f634ae2e49d957d06f3beb9f8917681f456484ebcff165c085493e1833c4344192936c20b70a4426af5aee209c8e888ae01684861143c027947b1a5933753033b312f1dc773700efa9565ffd6e3cd6a29c993429db8d54d02084633bfce27efcb1293e099951d42c0895d16c9eb0779744c2a3e604e7903bca2cde543ce12b49899a503bb18537e492d5b25c419199e090dfb24e6d2620dbebfca6a5b756f2196c4f09e96d4ea51264614732eb3fa00e4cd5ab3209e710cfe7fe7278eb94084a001fd67386d8045b65b9031e4fb2982378faa695cad48e09816ad70ac62c1ae4dc0e4eab4f9be65aeab42dd857ebf62ea423d39f4ccc59e2092ccc1321bc8bf8753f4f508cb987422c7b9d46c977f70a0012abfb43ab0ff8f6918a7cbbc58741a664b0213f286ffaff98949d593912423cbc0764e52a12e4e0b51de1efcdd1942e09db4929b8bc92a4e5a064856622dc7e5ea97236a8a3411561dc85da4544af14cd505b1d5198e678cd6b41dba7e0a7a3f950cdb90d47d0195955ff8c0b3fc8987c68c4cd3620533fbdee1d2ca13f028097039beecad2bf5840f116ad8b131586b2c7396a934be83d23b9be0e4e4da975f806bdc71a69c2447744119b3ba21936f1dc1f14fc560fd8f5c8c49706e10631b1e13fa839a2fc9d617b32020f1f15c79dac89b5d04de5504a21b1c4e2a11c72e14145f269b4429672c8bf8ce3da58538e43d2fba3fe11d26627e06727eefc0342c57151e1054f398d9c95f943a53aeac43da00b8af453e06ac88e67fa0b3ced0f0a455d8a4bfa5be887bc8bc28b5088d1134565ccb80b9fb8dca9942eb525d71ac14602354daba86a2462a425f671d400898b46e623a1b39552b77324741211d5254a659b56177a9921a9d72914c6e467473df10dbeeb5cad80c60bf9ef368f84f37944fed5bd3a4796bef1a34315081e612a564384ba4fa2db5c5c81c62abc0c8fa91a03dbcb2872905a7c067f063d001b68f1cc1cf201bf783a3e314eced5f42f87b6c82c88256f3ee45bb026d59e65be9e13e95be31ef8216dd29f35d30f2f1651c91d565a9e16c16952bf4016973389bb1f4266adeeae211f47aba778acd05474ff10d55baac87dc332e05b7f3b330a2896f920b3c0a0d6ab2efb7297626ed0eba575fd4a14dbc57a236b4c9dc3027dd736caed4b5f2eee853210f48ca0ef7b385e90963350aa9db4d8c3790fc443de35a6ecb5d84e96acb60b24745c7a49dd44c2c77460c9ccae4baee2a61add1c7398e416a3a6eab04c4e129e310735734dc0b7c5205047fc2fc06a5fdc63479a63bf98e1211c5599fbd2af49d32e3687c808bff5d7b5abbaf2fa1d582907fa2e78a76f09006079e2d26898fb5c2184a807ab7db2e04e1b140588ba202445110a8c2fbd00d87dd7ae92e70f036cdd7ee844cd85736b9d9ae6127e7041e6bca56f992742516b1ca2a1fdc43cfcab2f4d392c9737fcb69027ec509ece3d915d3adcc5f5a5f625f2e867de2bace77cebd3da2947f4016da313a181aadded0665c96ef3b28339b4a73155f86184e4421a2de040901b6910fc511e43e53010242e997919d6d01e0ccdace499eee61015b273544c0b32c0891d9a1949bc289fb6f19b6d55bb2647f73c63c467eb98922ccd3549822a4c40b20700e541c0a3d08e0709e72f192bce57e76adaa1887a26f8b50695c04527a6b819957094da711c1fa20b5d1cea97e4f6b16f42e797517cef5248bf5d5f10fb764bd602eaceaf94441bfe5099aa4eef3a41e88e551a8139f8c06237fab1f60e64683291afb849cacc7285e11bb10a0048090e89835fca35f05f6d0a8baa4153582dd18a0c6aecb19fb29f848398b34760c3261322c74b32331cfc0a36043d6175740967abfa4b246110132a054965f61ae1f4271100953b34c72fc2dac8a7e1d0aa07f0455e2bfac1218c0a1c3ec6539e3146f415045a1c23a05b30d0324a3aaafdc1e7977797dd2dbd8bf97c6a8eca319836b653a34b59f2c27bbe2ad74014df0724db1cfce022b1bb16a002820607e15067b48b07dd6bcbbce09575c203a1aa95ad04ad68cdb6b6dfba1f114208d96493bde5de01ab090b0a1e0ab20a8c46c12cb51c45d94829ad74d2c965eca35bb69f13ed991633ab0499a794ad8369b805c565c7c0d56cae6e8e320c059a9d9a97e317370473af56d9f7534ab9ec6d59fb9c6cb7dbb10cf3ec1273c33c5d79745978b48c18d5f2c6edf038b92108e6f40e0f0f1e9ce60149aa343881cd17aa266cbe5045a173a34747473d13a78ff4a3a31ee7f6b16032ba3df5a827679fd8ff5bc97d71079e40a697dab98c6a00c8f55f0ca1bea58217847e11ac0f800432fdc4343a353c4f2930637f48a69f4b190fdc07e6fc8051b6a3adbedc2e5b5648d1c56351b775bf2243d90b2e05f333e9330f050c0805f23cfdb279ecaeb95a610d0b92cdb6f35e19ff4552574d37ed32cf9c1f0f1cb4000192132c41e28626afe9050728c094c0c90c33bc261326db1232d89c5837a162c5c4e6edac746237aa066e0841183136083302395c402208159cf143951464d14dc2e47e0becbb9a87d56d724c6ab2258b91c3568e2e103ae34a2154c6b02d5dbefcf42ab394521ecbb9224ef6e6de1587dce939ee5654c491614e96b3bb69f599afaff316cb51cda5893b3c62ac3c5852827179e47b29fdaa066232a5cfa11875a5d10a87d2247ab84942428d265ce4109c30e02216232a479a1c1469c4e4c4300cc322760c0b638c3162188661af52642a28d34f8a7113a3dd61f65289c58a55ea846a5850ca079583b8bc6998d71d66ed451d85f2a44ce4b6c8cd74f11cb669ae32a41ca171e4a7c4ae7c30a37457afa73c3e7a981c659e21ae26450de3ce29981517cb31a94913398c57321e6ee798d4044a0e51a8eca214d52489d6a449eeb740d7d1939a18e52ec7242660b2fc02802ce9ac9f975fad301794d18527cf39e59899b56735af6c5d51143570f065cb0f469ce1c3ab470e6abcc1a44a0e4260f49a3cc8a0ae91677dcd596b5db991e76fccf822cfee3567ad461841593926192143ae3926357123872e9b066793451b3a4089e3c98e952c92704d909cf18aa1f3a2776802e915830f228008c1ab89a40daf18e216afc65058f245ab5b83165d5e3184f0860bb61cd192e41583ab862448ecaad1d8a106548e5e3ab0e0157f0b306509913422e5c92b8649c3ab6b04c8c773928a71e2047bcf39e951d81ed515c36a50df897d4fef588c42658abd62d8111274dd39cbbd9bdd9b6bddb8d4dd1abdac809d888c67da1e7e5093ed4cb69f51a7efc316c147667a67faae095ffb9ee9438a404486501fae24be38ec1cfac87585b943c4cad4e7c644ea8c8cf794924b1b9cf53482b6894811640c61feabd59d75e6302ee1996f95efed6e77db11e9e970d899bd1cf7ce72f84ad9137bcc6ce70e91246e1c81c890d765c9fc0a9e57c31073cb302cc61e75dbcec9960b4332dbf7c378347960c7827c397bcfc41ea75de570954d0f3fc8d3f4b066469dec61e7793f9f993e71a851c1b4676c62ed953033f6141197c751d8651e2c5c20f6e8b3683ef39c06657e3a761fad83fdf4d906659e7db441996759f8419d729abed0de2e6332b86b705613bab0deda500ceb6315ab0fea28177b0f96bda76bad1b867152f698d9d66a7b34cc54821bc6a3ce662ef2dc6a6bb559462b8683e2120eb8d801798e044932778d044ff263c4ed0191e72e3d203064cde616e61c46193bf6b980c9ec36ecdb7eb8b27d1ba41f646b902f379eaf5bace764675bca53a9b2a79f67366d768b659cf482640fe2de1fe7933da83e46b9f55e0cbbed2c7bd54e1bace7b62bb74ab93239b9f2a6125c2942cb906bfdeab56ad6e21764eec7236d0e1218a1945222ae4c22ace4790570b1251fd2df2c5b07e37404115b2dfa81b95f332a77740471c396cd0f3744a1beceabd69116d3c6e94e3ab197d4da0f4a8ed276d847f39c947673cad83228f0660b0ac330ec0d4ed48d0c6ebee912b07c8d3e58ea1d7b1c0dcbb175b42c33ca1d712c628989913cf150e70dacf2d02ab3b0c72ca238624639a288d1d13bb4175b726f4a4c9e60746e317283524aa3944bb10703725fb6117786c42f1ac5615c32c530fdc49d6dd4a00b7449927ed2469873dfb7828963412042f20820b88519b3cd0de49339d3821b4a2a98158b82dc975544112a7672047c71ef57af84c99dc33c12b6cfafed392cb774b1af5daabd944c9a4b9720a4142188ca10a80f9e99328a82c8dd6f19027d86ab0c81bea318f644ad4e5c12a2943b9f97b670e9a223f7e597304a57a498de91af666329b7cc575a07498a80059c120cc595837243f924f793065b82c9f40b8772385fe31776f342dd0b720bcdf2c934614b5f86e923d50b2299749647b40ec52c9fd3300dca2c97a451c572071944e5309d6124982e7269cb0db3d43a60e8fca4584885069bfbcfdce170639f9fb6c319817243ee3eb9243b2666c8dd1795bab341e6262623db883bfa5cecc2046ae4ee93483aef324c0f993b1e6ea34692fb1c3ee2c92519296e188f7a62665473452d21de34385b71c4a6e1865d7751d4ba9a8d191b2ea58f51ab185da233375c4aa9666ba0ddbeced47065685fedb9577b4d7bcc55ab5ad5428b6dc5dce0622b7461b467abd5922b1a6e7717456d83e96fd5602421c638697737a5b6e95c237b95a690beedc37a8a29a599fd51b1a6338e8b456a0aa9ede447356c3b866198d53a2adf50d2424bb6cf66945252541c1705c218623afbc42068b9d935105470ed639e9f93e230c3f633485ab22487362b09139fe598b4e487a425476630cf75de6326b51ce5ce849b63c2b3f67eb52f70ae3c5d3e7e000d112a6204c99227538e5a074beb749ecd79ddf103372611e1256f3593b97188bb0e080ae75c8f84163a770c21c42eb7470f080c19cb699d4d7a2874c6348ce6285114c831206083372b12dcb0253188c317640e654f8399494468c18c2a9d9d1955cfe7e620fdec55662c9439e3eaec88c964df29323232324262646474c32bca0cbb0a1077cc631f0f236e0bccd9b873dd12085aae7627dd35adb5d9bda73b7cd338dcb9ee1ae41eb9b095b911b8736fb58e09cf691deddc79b48e09dc4157eb6ce7b89ed6b1e7fec34be67e42ebd0735c47a586a38b27800022c910483290b29d5b4d9cedd7c0bc6d7152dadfccb7fe66b1f442a9158f048ae514305396da684983dbbd7c59a375b06f61c424f101dc1e3d1280b6cdbb2a881bf2e46dca502f51889bbdb18a55ac62556ab2049a1bcb2e71c77695926bdfb70d5a12e6b5cf0549eb94bc5d7699d9ce711ab6d867373d918cd19ed8677f35ec41f4f598f6aa699719f779ed934f584adc27c7bda7b7b07bc8db3719a5c1eda627ee66ef8aa7754c883dad53bfddc7b76d5581af107bc8bc5dfab06ddab7ffd8fed33bf1b56d1fb225297992b74883bcc51be44d8ebc6ddf8e6a9dfef6d5b497c3db1b8a20825022c4972e3b51d3912d17bb9e13cb1da411303794518c4439a29f90cc720a152bad435b0709b31057005bdcaac12e77bb0a881b591c40444540444531c98b27b9478e4958d6585153161d5aeeb38d724357687964a741d9e7339e5c4f422a678bc37a7a219e56abc544ff47d3304a39e98ba3fc734283ddd3a03ca241d9f2613c3a829346e40ed207b96466c6da7b57ab1f045d2e1e1f9d0f201d64310fc769b5d68a55960f77ed1ca60dfa6ce7be618b43d4d0f491fbcd7138a83bf7b6f72ef382cc93fbb2e662476977cdf5764ddbb64f1ee916b27d55e650bbdf82e4baabfdc91d68cd30aa4189eaaf6e13b7e7c78f90289e0ef445afec3f4628f6211f918983f589a000d1d7134101c24e4f0405c81e3b50760d134101aa95622290c8ceeca17d21d18720865913b322803d3b10bdc54450e6e92706c22a66c9ee2e43fa2cf489f48b74d32d485bb8e44a3fb1b842dd8bea18b5a8c9232243bd2d69576e77999b666e310e57328f47a66bedccbdde6a2583e3c4716230871b1672e520fa9a65291f651e81ee32384e9c0878b7388c9fd195ebea52d1f3e34788d731d9da9e80b357cab2881126b261e30a19c202117bef6af553895f91698a67cd301ee99d1bf9a024cb0e762e991093e50759265dd192b14985200d993b46a0b0a024ab1492bd5a7bfbf8e201278e7c563194f88a8b5ef223684a6c9c45af0cdb22978b87e720f855cc4a0186ec155f560af6d5e215f69e06ca321cebc702aa2b5cf4ca321c81ec338b8b5ea7187edc11e5ebc7a258c86b0809ee1124f2dc9d3b777557f2574a30cbebc9230dca0b7ef4b352a91343c292886592be0d1b7788c888dc8167f6cc1d7b2d2b050a430a180cf4180e57ddb3e2c9cdf305eceeb6d6ded5b124dce579fa53ea1db8eeec55e62a911cb952302199f841ca33e9c8446acf84ce3b3277583f333367a5302f4f9f9089337f8cfc983853860b20a0c821e50823a3d7e9a64301ba9f613960e6a703cdfc8489a0f48980666ec24433f86210c0b8f135f3398359dd9367e2cc23e112c0172270c11233b02125a9e8c81057b8e4208d1d8ee8e10564bbacb8bd0b7539dbbe1764c67048fb0bc330942ab090fbfd385b200a73b297a1409483b2db16a67db66d32abdcddbdd9cb7c2dc86cb55ca12e53cb751f7d12185a72764b737bb2a32d9dcc501c649f6551cc0fb15fdf0ec92fec7c38ccf2e9c7066577e9f97817ea72b6f934dede7998f558818418cd2fe61f0d661f4bbe3ee6ed63c967a759fb581297a035719fe51199645e32392277f8249206e7fc8ff99f9617235cb06443155b7278cd0f99c7a2747de1e03c40729fc39b9b3c9483e2336a6bf7174cb6e032e74bded64672351c6dce6296c508c6d1166074684125cbf33801e6e484972c0f94758c4e3cc936266da1254bae3e9e460c9334c7d8cae1c1858b49315812002b3774b9b299eb977d218f6e99e769c703e3a11deaa66db0244994b2fb46caee3929c530572bd755d659cdbaf2cdeaa6e3b6741e09b741d445ad6cc6d88cb1196333e63737bfa1f4addfa4903b9b3136636c9e531a8c3c7428b9984e26b40637c94b187b57f2f768e07c68ee78593383d5e541291f6be81f7272503771a7c88a293c50414282ca163078f55b7167841040518507269492e0e1e50537fb36eac8cfcf6e76b657d0658a272bc8620237925efd55dce1b2a0b1060d6ee4c08d284544b0856114a374455154a79ea3b376ed818b3c3727cb186de0c8c99d237fe3c262ca727584d1a1829894769e5f28e9fc646e7b5759fc1de852860f2b887265082e454bc0a0428aa534b21c51e232e18651952a96968811e370c3892a4aaa44818206167be5571b90323cdcd8a16e5c57b494d708952eb61c91a28505af32a808a3c3183d2491244a132cc06c994203276dcc2004d7cff2ddddb70bd05edeca5ff995fc89447b5707579d3db40fb187f59d651968ad7d866158ad57d3344dd334ed8e8052ece211cfa3bb1be76415bb9347eb50ec6a90479893731a94b85d3cc29c2c73725a2766da7476a89b9612cf9d65ec115fabbd2b89142d14524a792645e040a893ef8c6829020824bea8f2040d91065760d90208245f1ce10595fbb3e72b9518a534cbe1cb0f61ae4c5165ca5360c6161aaa94f184cb4bbea50f5c6cc5af3b38bacff6caafa4cc72c68d3d733078831b5b60f7ec9987e2698792bf917164f95925f16007b8f88ef1b7025ed450328233d658c2060c8471250e2f9498438b345e1ce02c8db7910671251769a0c184d1972274f8a28809146e3431470d37f03266005708a104172488638a23734a982a6ca0f1858a1a243131cc463185002dfd2809c12a56310cff687029874e0c9cc77eb35a35389f7d35410f85e8c5daa5d54f96ac08d8733802159c3b4496c02522585c18a0006dd70e03777b18b66bbf726180d287c19e3b0ca61c82799ee5532f4a53725760238d33bc0c110317a4a0051a2ce14618696841c192d76cc1bdd853b0e79e82f68d856107d87307b2e7de1848fb96e19f49f34f6e1cfed42face14fd6eccfcf2452441ac92348b0f684c0970e71bbe7a9856c16d4da026396c30e8743190ed2ea2d7e41560cc3a80e4b2273c80006c41e030861e71a973b638f99ee0ff207030861878c992c7f1a75a80e762941174fe47265a60f32316bfed9493de6aaf8364e5f1be2a08bc7cabdd1831e72729c688f3d6672dfae86b01c544f8f3d3c0af5f489db8f9e09757633b98b3bb010fb0b1f64547777c541ac06c40cc2187708cbf6f3f605899d36d845e93236b8d80a67f6638406e77b7ef48c20b13957717e080b448a98e044bb6bee68731577cc735a0bee167bcce47937ccca106acfba4192c31b24b9aec0421cc20291223dd60e895d8668585ceddb65b8ca208c91bd3fe31472657a8eda7ce787b040a488112daabd0971af6ca00667d42265bf6b0ebdf7c61df35a0bee8d3d66b89e5e6e9c7155c60d7f72505f48bb76edca8d53bbfc2ca171e8caddc72ee48a3b7a6573f44cb854b8e679e67be67f6447b878801b91b6ac91bb7b4f4232cab33d1f904c71bdcb7be73c4fceb8f20c2ed260c718634ceae2881c93b8f802428e495c8449bd69de262473278551d69e706389248aa4228f245277d8c93d91b973b19d382dbd9dd3dfffca5e2ca389e644264e90f7ee5276a1902b7b563a1f0fb3b677670191b9bcc46151963990e86549e6def414ee4d3885d369709c38b673cd1cfc993b71ce297128e4ca33e71eae3c146666b20b3467ffc954b2bc779f79f6b1bccb9cc97cac0db31c60fa7d044cf8e238712220f36edb0ec2185a0b56dd17b3fc38dc7d310bb97294c6e94b232aeef3aac80808a0009364859630218838e8010c2a4bec00851428af2e438a16c06006286881155d749199c21b13802c633c081c41011761aa68f1e2065c7c71821bacc08ba3226ce872b851caa12b5202042f403285106fcc804a4c430829b8ac6087263830e38624318c244159c2fe042942ff04104bc412462c1e442c21780290101556d87111192ac225cb13cd065d1e64294496ffe6810c50833f0dca1364b2bc4cdc310097249060238e2b6fbce45571a748071c20c9c086265d182902095643472926bb4cf3e577e38e7895149b2c2a29d1767906b51281d14a044769adde0d1846652196fbdb8bf28ca0bc87c30fe4ce74e69e293feddc47b547cfc7c7e323f6903ec41dd9b32b20eec81f224ef6ece626950a259290276752042ac30c19779ee62c9b3b32b377f5105c81d385a4c16c4883d9db33e36659c619c1c5969c382c0cff88481d20b1258a0f39e401c3010c80e3993b441f407a7283d24b3b7dcfdc21f2c01c55bc329e69c2ceaa9da516463f40f442e887d0af402f444f64a84e8ca7c7073abd143019b078f5b3afaf7df25102613264f1b2971e1095620561a2bcb647efc7c88f06b19089434d2990cf48a0e0a6c6822b5dd3c53302977d2c20d9c6ea38ec68ebbaed2e1e1f3d3f4e0012a2c210163a6ec38e82b467f8ad06bd6f0546ebcae8875dc1901abc50b27bf8cadcbb8761f02e835713679ea210c4f2d1b2bdcd198847993e668b59406c100b4810bde6c3fb7a7834d8391ec33416507ceca8c1b9e37a510c09bbb2b59d435e2cc7394f82a43348e710862c47587d375a14f704fcc333e35e69ad4a7fd57f1f6c22569557f68b89a21750f490e45557d0c21352e444174b68d029b8edb3b3761586ac90827d56f3f6c9ac5d85217347e6da8bcc1defda1310e315918b98256b31c62ae364466a9466edaede91561869f7a1bdb4ffd07e827620ed425ae794b5aba09d05ed14ab3f188517edd123c195b5ac7bf6f8d22c77eb8a3d78620f99b52720f66841662732d7ae5d7b0f69b1b85d64ed51eec41846d66e3f3b71264e7dd630ec80fa9ac1ae89a33d6e71024c8e5b9cc092653e9e89a3ddfb7a268e765595ab5ddb3e9a5dad136e11c38ebaad0ef51c5d3dc756831269eed0d72d924bad790d0eaa49ad54a9d52ac55a62852157aa54ada901274e3df6715fcf8705492e61c2fda0b4759227902813b73e669984092ad7a42948840c9972244b242cbdc1e03eff344ef54ce04ce8d73c4aa47ab9a5de03736beeb1716b7018957209dc817e1aaca806eb8f136a1776b9bfb71aac24c899a7e703d6c62b4e7e240069ccd3607b28c8bc5dfb583edae9da8bb20e0b4851eddebe5ee1f49d3e13c795d9050314ee37d895c2cd3b780798a8e87583c1578de3c6dad59aba4422e5e684845622ad50f3ed93994bd5a452dc1146a91aee83d7cba692cec6b6ed336f388c21d7fcf732ef6acdd7821c936b6a785a27a5faeaac9aaf264ebdbc8d95d427bfacf149d6278bb4fd62567d31d77c33a7b2ac065fb1c1f2c80a4b898bfda90ba14eb3f2ccb8f5ab1596585eb345f549a306b1fd3acfc071c3b8653571a613506481e475f34d480c5e7461858d13cd771bac2b34582f64eec8248d536fc2a1b533b8c3358c1cd73b528825a924b5d4cb2df5b24bbd5ca35e2ed54b3046dcd645e6ce5f3d78bd4cb2293558bf6189a5c119326e1f49522553bc3ab86440132b48af9b4b2f850f78d9427a29f4b8200b292412fdf7c167946feec1b725df440f85c63c0dd6fb68b07a3a60704354ae8fbd9a3b12c9de55ad204fad5532a9f5e65adf410a1d60a2d885d2ab83f91b4c24c324a571f4ba79f4522882a2895707374c010205af9b56f591b845b180b47c9fb2b213b28cce39e79c73cefff8c92ab541f2744e1c1f120b57338ad6b678169018341fbfa0f9381fbbb56dc68e5f785948dc194f27d618a6d33b12044a667c8024c60e62f880a46404eb59a5109327dec050d23e2350229218467a3a082eb6c2d85d2bb3a942f665914bc6ca5e94b31931b73fe59ca02b2762dde7e59642dd66b5b9dcd0e61c57838f0fc119396e5f82f67a209591a1711cc97814743de9384dacc6d28d14df6012939eb00135efbcb4727445a9b31f3f507099a7126cb0882b99c82533645c2f5e1ec1366e87ede704ec9c0f0d1aa1b9ea4c8e9051e68be6a38188ea341f0d332a2c934c1cf9847bf76d98db3e2ccba8836ddf867924601b66019139734df3cdd79c324914f7e7046984fe98c15d8373a68d7bc24f8356e491099c387249eb9c4eaf73fa3cf5ece9934b66ae8949923c43af87bb308a21f23e3aabdce750269149e6e593b853d40397198840430829906823ee1441d9b2450e64d0408b259c78d967477d2c20d4694e8389a0f4512f7aa53ed6cf8be6452fb9e409ea93513e49c5ca5183f3da27af345827365d399e19b7cb6dd5163aba5c90056406f5e7092b7a90de45cf831e01c129d38ff0e3c766d576f30beafefc074e1ceaa3a741daf28b7915c5bdb8f3ccb8f42c24ae7c9cf30551279436d26c628f9666b4528a6161605b563b576fd7c05fcc0382f96caf386ecf70985d03c3ba5d7a41362014c8d9b7af33aa61aff559adb4048a0307e600e5d9d5fede637c7fad08ceb754f0be9b0fe9bed5cd0a79a2562cc418639127a70db88b635b8c52d96d70ad5333bb7db523001dc4d983e3380e01407287517107c661391f410c25946747efec8672046995b30d2979643c66845a126cf0cbc974b837c7a4286ce4906246dc538e49515a90b31aae97635214a51c52a4ecfb4d52142639bc995fb85a7462e76694ae3d8a9264e2c44cb1efa6719ae698d4c417395c6533b81b35ae8c15abe0c4e6c4e4a4747663ddd2a78132e5b2d50fc51e31d75ae94c21890c1e94e062c4134863e4c004225001192910838b4a82b9841a4534318339b038e355c5e0e0890f4d80c8c11855bc2a11b94e916ba571e386b475e83bf6e84ce77664837fc328941f36549ef4a89b2e1edb1841153b1c7102ca1546de444a0d3e5089d2c6d1122b509d45e2861dcdab5577bbab61b71873a588243288c194212216738ca1c50b6e580ac30d254ba05067dc70955b376881ad371a58a45b9432bcdc20046070b1e445932819c19731bcd8000a297508130051b10b831bde3c736ef2f46188d22d4a712752295332fd08db6ae2496f5e58abc118b476ae6b8c9e111a940658d245a162f6acae9841c7154a6a9df3a8063457c8f0c5154fb82b9eb02e70a30a2f8c4032e206367a7e98030b0864f06409172950a49ca0ef32801420a28cc970d00529c7284639be5b1e91ae2eae7c946cb8e65d3daeee05cf337198fce811f2538b644b1948e98426312ab8596b3581163648c973ce6a278f76c9d66d412ba726c7a424a0c837c7a42490a853702c07f4e78180e65912b720b33c58a4c40c407c9932841a56605884a96249066970c183103df3477f62a279a27e11145c3fb67ee4ab71d1cbceb15ae9907283266870b1d264865711122c502a4329872ce448028d25d4cdc9e1e163043087878f11b27339432855c10b231e3c3e46f8f10324a4462e8ee48a6139bd13b11cf1e0f131c28f1f20212aac80d17a573e1c49296792e250a8e3a0482f24ca613cedc2f8c85d19a7ccc9e1e16304eb44cffcd17dac312bc2d0a78f57a9a3e0629bb2dc793b43e0760420cf988a3b76e244578c214cedc97dfe1132249e8528a4690e21c78710bf13cf807813e252155cf440871b9342e0430ee5132749e4242c5c72bc22c7242c4a323763ca72431e308a64e24b087e7132f39e9ec1d6de6b678cc7def1184f8ed894e566e7aa67c2f61664e65ebd56ecd1595e3a893db6cbcb24620f0eb7362c89883b70b861fc42147bc85c9e85f841ee997d91181577c4837327157fa2873bdbd3f1fb20db2fcaf105fb98dc67168814a14701468c1821830c0d0ea1aecbdd906a6848a813ea3438843a0d0ea14ea8d3e0e88628cd26d35010aaebbaae13ea56434cac6005ad82aec700b72c91e5c12d4b6839389d4ea79309f5eed9515f0deaf485369f50bfa86728940a1544f5d42f2e928be4ec3a66569dd5fdf40cab30abeb4c5a0e503f6939380dcd1c64ea4ca88e86e6f4781d5f78c24353cb418c3d54479db64eaa883678baea8b71c7e9de74bffae9437d21918c4a6155a752851a90f735f7f2e921cda8d35128d36f5824874333d7dcabb9de17343473cdac09ad551d8555a8b8c3c61df31649420554057352051839caf20a30726483eadda7ba29757a967d3a4c1895dd67efbe1095bbaebbb801451985b39b740865d44d3fbdf041be349706b350b80145f9e2d385b2a946070a95b20165432aa552ad6a845036a8542821d445ddd30985b211521d750ef58542a81ca442a554adfa64567df7d353fde2109555aa1f3687a88c4209b1be882186c482925eaca030caf22b288c361a361a361a361ab2649981e6dd47a3c3f4d34dd94d9fcd2a3399549deae2672693c9f4f64a08728f7af6d3774a61960afb5c1c89e4d3331c12c999e9ab410dd16c3aeb6442fd1ea56306d40c28940e1d281a9a55cd0c9708eadefb4d0930c090e1de7b2f4df6fb4cc7553adedd67a99f9eddf485349b74609fd44d3a74dc9fde5e0941baebd33dfb7dccde61a2dc3dc344f9fef49e793a3da50383a0e56667dd9bdee18b7d9ea291e1b4c9703a05d17434384c9d3ad517deb6b1b9df64b8f7cff7debdfd359d8e4215dd9fbca370d819f5d5ef17da7c7ffac222f9741d38a4f93e950a353051575de63eb6cee9a9af67decf3bea8bf9f48544aacb7ca54271325fd05067956732d198ce71ed05517d32cb7c21cdde7bdaf4754e1df58534a33e3d9f13ea3d13f56df7261aec73c2b441cff4dd7b7110f770a82d91cdc68617d68bce568608070e46566c386c386c386c382425696fdc77df45a5de71a62f7beaabc9b0ea59f714cd5327d309b36854a7d380a9a76eaa39d75deaab79f44eefe99a77ed95a06ae1e6175839fb2985592adc80a29c6196ea41d9bbabb277cfb277343f3df5d347f38544722a759a87dd6b30085a6e8759dd4dcff009b33aec933acd53a7e950da1b34a99bb43752bf6988e620544793eaee1da2ac13d9a4aebd913ae1b0289f6efa5236f7629ba71edb749b9e99fa422239752ef5050dd17c0a87a8d780a253786b9ebaf97ea6ae3a2a75d553a8d7600fff8899a54a5d95323d8563837788b688b03e231b1b547335607191271712881c3366cc98219a5b060fb06092e53dc082c9919439f799863a9b1ed2ec3d3471a6af032233eadd87baa92688e627aefb4ca7f96caee3266c3a9da6fbc256eeb22eebb22eeb329a9bded9d8dce6a7675fa8420ea24afdf4af569795c23eaa8b6383a79f300d0e55c8a667abdf2f3cdd0683a0e59e30ebf4ee26dc8f9875c23e34376535e76477efbb6b60017948660bb820330dcdbbaee6a6d7e0f0621afc82cc26d4439aab8ff7b041a0e30b4d8f5f7da149f33e271da8e150825e9031dc9c8885a1708712727f41669973a76f355cec31c71366f93c9ffe2199593ea7db9fee82cc4332d3a0b0e9f47c7a36dddca89e4ae17bd5171bbc385ce9dc87a86c7acde97493a906ab9efa62832a1cde7cfacda7c7de615d75fa35852a9cbe50a8958350f80599691e7328d4ca34379deb8ee69399e6a9b7e7634f738ee63b9de3da0b22f3e90b5bd974a2f9e9a84ff5fb85ad7c3f3d1fd4553d93e6eb7cbff07e3bf56852d82736683a0ab71a34fdf4d309077197bf58a895b9470c84bb94b9cbda17aa90a34f3ccad9e351ce70d00b7f41e6f085ecf2434116704166799fcb90e5cd67c43a1103c68c19338685a1c8dcaaa9ee9430caf31c4dc1edfbc42bb27c6ca36262b23bc9700cad1714ea46a6980584e5e32181e0056924b570365fdcf898ad21464b52185eac603922298c29496128916118e5be67bb2f612c981c520b1a612306466280e48b29e48892a4749494254c8e49612021404b99454b52162f59ac2465c1a2c4655102292da598dc59a6644992c39b6396279d94ddad2426cb0e744e252fb975c821cd6078c9392629e190a4042649c98c3c39906760af6d9b6633066b659939dadd2f0c38c2c591170eafd9f363eed057ed5e3adca3bc0fbb99cb5c08953b51e26c51d3fea8632dc771c73c12b820de3b9a63ebb4b26ce978bf38b4760687376f58d35a59769e4f770fc76f66ea69e73e9939fb43820b2a34682fa4411dae1066e16e38ecdc36e77e5c02011b77cb31290b2a6a1559289143cac3862c98605a6481e4a6ca1976f5cbf3a3191b71e48ecbba68b859eb9572d06458a8956b4d52daac6bbac1653c5c2e9e2fc07c21c648e3c4958b96b1aa9db5b70b2f8d13d700d38598c689d91ee98471a1946151299623d5893bbf602e2572fd4d67ed05834ae3449bd92a4b906bad59e60513ccdaa3b04892eb6f6aad58d6c0b080c1302c90d8aff5bea97285971c7e268a3ac3156180495c2dc7a42bb8b8a952850b658efd4829edd9b02f64f974674e4ae9e269305ea398cd5ae66a1771f28ecccd9e1e103871e23bf9cd8c659dfc9a27f31e305f2e1610995bf293f98918a905e79cb315e36c99630ea531c6185d99c5346cc3b078cad126c78e3891079473aaa85c79ac3eb39a36edcce66cd178b5262ea533d2905aba8a5206577e4619678e0dce22b46c5332edc4e66777ceaa071ad3a886b14ff929ebabc4183d150dcb6ca5dbf789b3baada3a1805dbbe601f9409ed750dba474c6c06ad4562018900f64fa3ab1dd6260358ad13728c586a8954ea2dc9462b576b65f47b07a606695caace91336d6a42b96a0c260f5d5ef23a2d816c58cb006a098912a998091dbcb3d0449181cb49800871818bdba088719d02043890660e480c1ab2598dc8dc40a2e793bdd50f044dedeb5cea5216f476dbf390a236f6f6d776d6087ad2c91b36756e0c8d9bbac8a2372f69bd66140cefe2a6090b3b792aca892ca68d4b8e1ca94821baeaa50c9f5b4de52d143aeef2a15306040ae2b9bc17825514141a6f4ab1f32a54953acb1a453a918cddea4f5a2b3ec72c8118ba87e575445862c6ea800cc1626af2e7a62e5091b906144060f5a5ecd24f7152a4ba458220731a880e3d5455290c42011822d9a509282571781940509f6a259bae145d86a5032630ec618238a151ca270e228c6f1c30b984803071fbebc21b368a2078e4877d6de1092a25823cf77931b5a294515b94f5b274a23c923e4cecc14bd36d517d7ce69a79d1689fce2f6511adc0c8e2c48aed66101912fcad9cc19773e9352b08879f2aa1f5532c56bc60c8924bbb537cb4678c5af45af8a5713277b7c659f99e36e0f7972167b74f66637268329718b5e45af306e09b12c4f3f4f1bcc6a6681c8dca9cf2e64eec457d6c5f3de7d34b3da23c185c62e04f9b909f37def11830dfa700f3f909b725f8c52842b438eff82fadeb74f06871d0ea3e7a824cdd6c4390c19aa19010000028314000028100c88444291582c9a06bb2cf714000c8daa44704a16cac32c8a51ca18638c01041000000022222343d3060007ee4fa3e6eb4512a8d7e614f143b3de4f9380675f89b1d4be0686649dd4376a2c99f9df78c8b20a77fa756648b8951728d94a16a0c74797b5c7f2b4a27bfedc9b38ebc02636ddabf0ce4a6bc901e320b9ea5d6b3e6ad95940af4a7f63f451e083832a07c1f29bac33cb2be4b12f9e15452bc9e379feb4fb6cb4bfc60e156e734e1132b0fb1a7d1e9e8cc164b0fd6211b3f8a84eb8a6d8b40381a219455ee69b10427b07088373eebdd463296be8267c2ca918edaa6ded288b311d83037a694a8d345a26d0a116bd6348528b2ddad1e098526a82ce98793548b3232b575f62079e75e8f0fd54d6d41385dbf0fd55e956796f38c126f332e55033dfd6758964e0d20305cd6e94e0430762c4197cfdd870947d44f68e520fab1b550b8620aab030411d376dbc2588a38cecbe5400335f703ac9b5ac70188c34d21f6b08beb597e86a825b0cdf05fa5c22672d8d595e6bd4e670df96df613fd6de355b363341e541ee2c44de3fba4fab16135aa39b98220280e2921c7766a7aba7c83565e8cc56de6705926b374164593798b3807da58fc9631ae23b0a1290420f64d6ee1f77de06777833bb7f0fa2211e057160acd9b5f00dfa685501dc0002bf1bfddf09b35b97835f401e52df389ff0af7fa0ebdf2d50f7328bb526bc79bca03de7070aa2fe0776bfe9bbe62f6797383bffe52c11faa05f0fe6f61bd1e3d71bcfdfa9ea5400c0640f83d4d9ce896c0c640685e16f0e991f5d5eca6dd365abd639eb95f3a82fad1505e79ccf3935a17db99199f5f218f68dcfa6de50d3cdc80216e620f069d141f785a9e9321cf36b24519450aff44adcad4a5b9c1f1443539bd7ac13ba2daff72dda857f1926096c981a34bd32ef88f2e4e82b6e98fc96a786b2d0b58e44bcde9ef358ca9d93f990b592b974ff2f4f3cbe9ab0641481574eb2e519d3cc54c10b5b47eb52f862a0922c970c1c2cd628fd3612a16e85bc80245fa176cb5b7c37ebe1dc2b10231f73e875e5e674d3ca8ca63cd2a5d754b1521a62edf41ea715f4e36f7097ca92bb2389642067dbbc7ba89545f215a38d924ea3f3bf5d5e7d5711d6e57f2c8608eda8b0e6774e838c7efc5fa9d5184388610f5d76bb572d27c5fefbcfd53f1ef0615d93b08fe4923b3d619081f17d22d631deff728f6f900fa11be1a3f17b9936a52681561d090743207e460419ba4198ef199921550c6fab7ac3982fe6eda40ab84e1ed8b415a2f60f73b32e56fab8b3455f53c2a9914c5e52d169c9b3763239a270d18027e9505f4597edbaedcb02b7a57fb0210c167358610ec5651c21d01fa9652bed1fb0bedeb20dd936bfa553378cd6916e96ee3d5106f030b7527079c92dc29ad8fbf6b7accf7451b8645a3b1632a334bfd2f089a9c24c601fdda8ccbd1cdbbee353a35eada231835a6798106cae953091415afd16b4c95a3281fb5a870fe783f791d7cbf61286ba3d06bf19efaab8750fe189c76b284e8188204407a92346850572339bf68bdb3ef5dd00fa62c4a070ac1003a0d5cff1b0c10ea29148f7a68ed56dabd112fb479e66caeded8361095289ef5576d0b079f9c611a4d121650de6b865e0c925d7fcc3482495bc61fd66436298db79378d29a9180b4227f6ed0dd145527220c650a375310d023b94b32f36dedfebb59215ae1af5ec0e0be989267a9eeb9c9bdf5c17568d7bbc691b923358fbea1712c6529ff14e30f67de6da943382e3f6bb23cabf7012ac93c0f07a9418e80e6ab4f7dde1e86cad5d5778032cbe7e01db5a50d5574822c3afad7b312380350a4cf8756c4fa0c93a91cebbe5b1fdcdf642080a1a879cef15ea6b388838c84eec9d7872719d81b78ed06ebeb354d9d9c608b2c4081f9ba4c09d6a8d84eda3509150a4d641f02fc997e29f016f69f98de0b1df645fade5923820e0e2a0f413b2259a0a7a8ca968a9c5a551f106e5b4f2c44d3a544df7341c018c970cc017b23e31c4b69bf80039142d332b2bfc1e10d1e97b9db52d751c6b0914eb9f6bb57cb1a2ec81d7c3eedd9160a13f63835ff09b66504b5d4c5424116af7f6dd7d5638f8ba3d802148e2a766fe3636e7f51023a5e017d4b48fdf184ca8fbfb8ce4290a0ad7a19347d999389b37f60720f69c7023faae3ac6b609d937cb0e76c556f640be7e612d0db8b81753890a0892a49c2ad25966dd6e61fa686eda709f034cabb47361733ca282cc0dd977d52e0d2ba187ea1ae30252668833c1fbf238346f3fe336397fca6c5ba642205ce09a54d8d391acb33d6b482fad788c9d26c59f98acea67558a66bfcbfecc87f0c6cb37ccfef0504ae035de64bf1b99c8e88dfe5aad5ffd0406742e10e67c712fe80eb121450f6cfc84eb7721b3677fac96ce8a7fdb022b9b36e7a39e2a8a54a12d11ebfd9c2e552dceaa58a9706965711723e9a1294b1904d1012adf8f3275f890d7264e17c05ba7b6b8b2df4efafff5e3bd35e89d67129dc6c7d42f7503256c208e9fcbd53322a1d3bbecb7dd9908a0778e7df509047adefeda99893c7a2768df770299f436803eb0843f61695ee919a4572fd588a10a1316dc79192578a20c1cb9801df46201e9d51951d624b8f02163707fd04d114871f88f518c6293b580b26f8aae3cbda0a60862bc73ae5d2c4a79448643f94aeffcfde165824c6fecb2688b7e077a0572d7d0ac4f33ae19678f0f13160a2bf23be084015d27ba11492c90e693ca54698218e189347516d020ef68572d70f03c74fbc7b9b1e8e840d7352e6f4c40a2e68c5ea1b22b0298df1040cb35da9d439e1662a648ef3917dd52f80b3700ba71ed9f27584084d4f328b6259e5b15e1b7e59e9ff0f47894501388906edc3a0cba61e97c8f84258e7ca57c1328a1046f9a05930185f0bf5597c45bfc9e5d789a827601ae412670ed293f1135a2be2c43520e974f4ceb592e738889e7d4e16f0bb20d6b5e922503d6c00ba12f233014f080d5d24af1c5deb7d65c9ad363499d7b0cd436296d61e54773f841755e1502e388d83ec25fddf8b560dd74a1100d4d2716e56a2239b30d47db9ef082b847a004db0a2ca34717983eae4e7b45692bfba41580b3534b06b4269916b826040bb7a13045b1b365b4a50b55025b2be1f769768b9600e932e88e92d62a47500b808b07fbdad7e69ff286d3788a44939132b3ade65eb1e9c01e9288d59592b4dddf8669bf39daaefbc1b83e1f933365d1a6ab4109adbe0642bfcdf58b46756947b36e6e047fc545b3a1c52cc8af3efb52ed907bf690586b44fff6242d45232421193025afbf2eff766c7b4c55a31e9d3fa3b2c086a3c5ec3fcc6f4eb88f5c8cba849b3ecc2f9f2f14e879ae455a2450ec1b02c1d0f0892b138d6f574dfbef3df1f46139da7b1eade4f5be982748e3c4a25daabce5995ea099be5fa8d6981aa84022a1497814bb83b07c877a36eb091e2240d61ce99a8bb06fb5ae570aab9b5ef8aa5d83f75d2a789113922f0a20c45403c607d6bb324fd39776118eb15b504c0feb106f57312d5242163dc58a202234f6a47d1598966c3834270990066cd024258e383ada5ad4b335c3f33978db5a02344c559b28a368d5b7f08a17a1d1ee515d9340ee63715343d74c67c7747145f5a43c1dc920e91706df65f0ae1db52259effcdfddcb5458e402a3f91dba7141832afbfe6a8d23c8d994cf55071afcfa90896eaf671ac2aabdbd9c3c9d9fd97caf9581e1b5243312eb7b8fbc56195f1980d03d5f948f290aed945d85e3cb8432e51395178456b398987e376a4ff284e6105e983a06fb7961e27bad18ffc1ce39b72c40b56e6c26f13e2642e9dd4856cc43414bdb95c74cb7052631d09dd90685b3cfee0f05f259fc68df5ea5138c2e685657281ac5f82d80d33ff73a1e6a876656be277f38c487607a8347d4d1efb54908f4a7464b321f60b8280740944073b13e891e01282d32161152b6033d4517b1064e0c2bf0e193c7bf8858b0398c7dd1cb42d1b463b8a500df904ac1749d410ef9adac3c8729e0368a513016716894b26a6e6eee96bbcd24c2ff6366a044616631729fb05003595cd119e47e1dc6943ced11205834302b48e220f8402d9666225a1beb574cfac3e44ce884366c1e5ca04149b1d15e90c6800d0c66c61582d4dedaa9ecccb83363c2341b807a303047d59623dd4830bf675d054c6f95498d20c4358b042cbf9b0bf5b41a769ee7e3b7e153e651ed254aa0c98cabcac49a6ada16699407917314454f1e47781abaa75bb6f78fd89fe42ad5c3356562daa41e250cbbf8592fa5ff2f2587374584ac8500d3a13a1717ebcc50c4691ebd6a73b64222b4f63fde1c23dc589d304fab36bedfcb1770a62296fe50ced0a37935a6a1abd91a2f2ead870b675a3fc6ee53d2172ecc1af46f5b7b5f450917e80885b4351799f57172b00de2a7c76580c3d82bb91f04ef278ffc88f9760407ce880a68a7d522ded4b8bfd914649276983d65bb8ab497431157d194890b562ab9de33f5f31f9c876674810a080e413330380762a24442e9adc51e504321fb03f93e08161406f4afaa10ba1684107004018a49cf614053155312513b371df234d0dc209c9ba6090f54842f6f451b96c28de6c1eef996086e873232557341f914bbce808dda038cdcd311a402b929b8fe66d20fce156c9762fc883f08c0875ce7fda6566c089dcb00c8380443b5fa9126d111e7a2e82704ec02f9c68bf4282fa4cf133b5367f71ac600afdf1552d8e62fea30028e6799674794dd82fbc975364ad41420988626e56fbf120890b0358e57e5bbe9a107ab5766ab7e905e70b689c9b0e6fbd5622e482c7ffec5ff40b369caaf84769cc082a41b7033c6c2fe141903cc037a47f973c3508be6774d6353039ee98907617375a485a1681c03889fd7c90e0941c4d77bcf194592d4b9d04e3cb40527b4ff806b876db526da24cbdf328c2d432d662bf4c5144caad6d311c2aade4c7512b223b4e3006b7642674791d2b899a46554eae76b76f4f906486045650802c565d2f01f424e7704bbea3751e3927d36ed4067c43067937d1075d84651b0d2eeabfa1df436bf60b7affaea84a22752468f623a56947e6c1a6edf5b2697ad69fe7e6d159e1d6db5cf5444056c227193834f15f2a0e6267619530698c98715dc93ecb0f793e0b51944dc44811b4ed782136c6a34077a229d691fa69df108a04cf85f6d0656d91ca7224d7f0f79ab6f035171648c52d8dfe8efa2f5d05766ee3fdda989906e665c35bf6363190e34d0319921e8b898bbb1b59abd284c8fc9e431dcd057481bd2fe8bcf77f8964763384affab9e089ee568c68944d4619540e48bc6abe65e4d19a93fc0d24e898bf15e9cb732823704bbb57d41e5548cd10726afbeaa329e3cb59adf2f084c42187732ca0b3d73551f77e12c76aa92af5abaa75e77231a1c658994d4ab3e34a4da33ab611acf49cd4c8f8fb099c25d414195d6270583bdd10d90704e791c882e842e2a1cfd68198060235a954c0c19928cea4c829f43a58118f1cb88b1cef31b58602eb029eaac638101f58cb30db68c16d3c5990a5b664138634b2dc1ae30cbe56ca08e2797a0c507ec2a26b92480c450051053f686d742d7c6310e453edb08aa7bb35322172da4a1f1916faabc693c73785e4d96cc21973c03d17a2e650b883ffb4c43c45e064e20667cbf2fdb0646f1e119245193e20f2df13cc124e6a2d4ecff2a3ab271092824887c00a0fe5850073eee1fb9e95b86a127b851dfd31e8a2d94813a4462718b911ecd0ba0a081e6ad115e6f4a735df0eabce939e5d481a75e66531efe0eaaf0d12ec19d613026094ae18cfe7f993f54586a380a4382e42080cee00939b634a121ac0ffd9a21f0a225ba4110536ca4e817cc76adce5ac8acaf0ea6cf3dc02cfbb2138eeb43b90262b3123dc49cab3f53eb121909017d4c042c9eb298b3ee143ed7727a39d3ac127dd2a2b444e0212190106ebf5c24fafd086234801812aa8d5bf94cfa9288cde70361771652a1b9f8c0286ac2554cc45d20a3678c3bcf3f89b51810f59dd6787f953c711c916da1d52bd0994d4dfd9398e36d0edce3684834989c643eafe6c8778e2c82b843a3daa26970d78ae37e9c61200dae32bddb572e280c68c53334a73966cb2bc47635a5a52456ecf2133f80bf9634f7cbee14100119a5121d0b005b3179687abe1db40e77d6d17c0b37db7a3da132ecfc4bec9d94368c18a78ba278c0cf7bc3da4aedecacfba452bcfac9a5251e7a051abc54e009060a27c28e1ca0ad515408720264fa8cec0ea4f7f01f3c2f770dd61c24e2355902f82d0799d2e00f617a29f874ae19206fce18650211a8bc6b16ee8604d1d7363540470c3bd076b3083307940d0a549baa1a20aa6c195d3d333703cfd6d6afaf101b8c2b09c71b4de5524c2943e052bd5746bf42ea4c7e4c5b98696db83df7d2fd1090a052e25291661d54b2c172b446a3c075502eabbd76fb4f2bddee97b0436aef424ca917d673aac812bdba57f22e40eb29018d03fcb0ff3bca47114c7021f350e2a536c5fca4a4c47ecce16b14a264e403983c1d2f203aab08789a6c4dec95f76a5fc46fa712530af14fa0ed68e607202313479474e013da85326532d75acd56c9201d34c1c5334c15922bdad93b90905a9c68923cb13915e3791989cbf27c1106f1a1a03e42669b1b934c4f2a1f98da0c4f3ab740a282e3f10ca07ca4c7cb16d3cfc43c2d553a6d7e3c2112cefc7ae32df7c3a4458cb3921229dd81e0dd510b6d4e9a013d45fb059ab4bb60ea7683c0a0f31caf8d725f37cd51fef60103a55c0f9d4a8fbeff53bfade308a16cd926098c2def758d0bf2995c9621518598523bcab1c2f11ca2d89e891dbb478f3fc1a9e8c6c414e335076a1f6c3d21ec152bb0f9c9ee1017c04328c703e9499a84286db0ef9ae0d0ca4a0d111ff8da2d1bd4b455a85bb9a162655678616ffc9a1e8fc274b48a3d376d614c59f6176664e823582e940e04fd0e5d49dbcb8a83cc3c1021b3916467954b454eacfa662be7cc9a8355c9570644f944b3fcd439f089dfdc23c4213660b80d74ab067c191d57c8295ca1010a87da74ed05f05e1927947aa8f22f83b248062c3393d3591ca743735f7415b0db37b9b51b0beb5c9912ea257f6c7e1d14f78301ce06384c3b8903b820deea7a6f157ec18be6f0f0a795dc0998606fc4d46f9283224964d16dcb1a5d4d673556253cee12281e5c61d1ca706caa6a821366a2a9f531845285e0b0d5e0244021a81ee591afa40088ed1a2d76e6c0b7178dd749434993d6e118608780436fa104a681210b7ac9e3fd94928d9b993cca6b26c9f70672ef3145ae7642b9ff7ef80a12e58e49c90a98a6817c5e10dc123d692a7a2244fa5e628d552f1590e404bbeb64e616ff51055b3df4d70fe486631ec92600778bfe4abfd98919b7a4552b207334bcaf4c41ae451a37423bb3c6498cca26b5721aff680953cb965c0efccdb69ecd8c9229564e67558327becc3355a0e35c6955a7e0fe10de9cdf526342c58ab5804c16495a4554a39ce870c792c5cf87d42d2981a102737fb8ad27187654c1c995a6c8e3bc21d425e1502f74a8483adea78933ff88a802e019ce060eeccbf68326447b9b4c45f6f93061bf76cf1ce2729f0e281efe4bfe1bc7d6af41e81efa9af0220f4859c8a516ffa42801c6ed5d10b102edcfdc367aa65023fb0d44c1244841b1a8d9896a7f20ae29c08e9eda8f8b741b775ea9f07043a13e94ea150d74a2426410d6280d5910a3d8516c9154f2d814063f72c8d392ef2a55e5385322a0098d7da50dbc7a625c7810e52822cc73be8251156c59a34c1daaf821e5b94a39a4b0ed8daf3badb0ec92f23941a0cd7eae108c700d4d5c9e2ab4fcfa729ad02d2146241da49deee2a83a923828802e420c9c095bbd280d7d4fe4fc5c057cb47a5963c1603c280c4d560a61d5cc59bdd31326d3157c531c9853a9572132855ac0c31c5bf38870c9fadc9a7148b492ec9486e092d2ae91ad31fbfe0a0217ce7dd05ea79ed28932c0b227b197516cba8f875df88b913db9c774e615c5dedcdb8c63078f1d12c0ef6a26e1dd3c82993ab50b287e4b164c7af75c76977f62de85e4b749754c4a5d1b690829e366bcf39b839f330bc9c06005db344ece76897e45b973f001e0067511b9d473f7ea100445b5a5779583d47cf90296c014e08731051b328fd879f1f3bda11dcf903cdb412233d02e889a7a4878c49ed69a7258273b1dd2693d481e94d193e3115eac4a667ad20cd436ebba47633781c52c13a2bd4339817f9c0232a113e9db0ba14322377e2fd60bf94d5b52151ab600572bd250a472f84927f0ac0e27e52378bc64cb699375dc827a6c20a289790b4c1aefa10f27a5b3cc753ef3301c887ba717b5603d31fa6d32c8433f6db60908d5376b9b87742b50bb3382b900d96c189d4ffdb864e6db4cf326cced0a5f7c930e3b7e78db687e62ffcea1e3b03c76b76576145c6e8fa35aa1921b09a8529f7f96921a554ce51f184f28d586417b863cec91013c8c38a68ec7e9e05a33fe3125cfb7536461c527a29e85239a385faa58d54f1904dfd8c30b16eaffb25c185c95c10feb3dbdc330237a74bffbfd0507ec4cfdc5a0e260e971fb5d3c61cfd87682453c68c43b8b33db3af7555b1d83aa50fee23fe9ca546020a2cbbf1b3ac5b42e8c7da28e00c38d7cdbc855101622da49967c8550850a295515203804befd7cf1a53c400aead573fa709618e8c5237f63dd8ff5430df56c47fe20ee89d3b480beff1bca1536462e8b5ae16b949337b60aad416213fb8b1db40556653bab0080af9991e6552aa5ebb9d5fcf30a3bf7f36f5f13d8d4b421345b90eb9a64be0835936f7de09aa729819e762e4cbe9fe13c3d42d0030a2872c065dc297235548e41c8425b0628569d44cbda90870f3b9c541845126de0950464378e3d2108a1eba547449603ffa25ea3e7ea442233016df6da5422d122092e53c17d7db13a13d50b8d74cf7663dfea11f9b595e120bb803f08b30706d23cd74829c49ba71b4aea97399d0dc8d0bfacab2a1ca1fbbd24eb8e637b71497757c8fee4209b4c195928404869d263918116db67a69fb80fb04845771524bd1f7b2cfa41fa5c7947218b346a86f208e2e087a6523297450ed3bd12d03cc6c87d1f18c9a2db85b8fc2ebb2f2bfb4a46f24a9039d7454d5136ab3361bf5ff2ad20e8ad13c33a91c463dac20add850b713e7da1c2471239df11e854fffca523fbfb81a892c29802e893b587cd3d7135084c49bee41bda45cbe77ac741d5d4b42f1a0044ae4712a6a7ba4b93edca329e8d2a456c546009ef40dc6a102b77c16dbc4fb3e6431d0402cbf22b8768570dc4521cfddb472370bc1c91574a07bae1072dcc56d9540a56dd666df45dc72f29d4f4062a04ae149d51cfd155cd7a9a5905242e794677289709e7e14d11214c8f586dcde62e0d88fe8888e4c8c76cd4909aecfd0b0ae5b5fa57817fc94830ea6a0cfd9b01be5c2a20cc54e1a891788ec2eabefc9b070006732356277ac73e46f434f50009b1441c83278fae54fb7cd738b754bdfb28108bde1a3e1a9d5c48b737dfd82b985a22e1c34a59f1e3f8b8975b8b0620fa536c35f14a1a12d14af42d9901c0b9482fb32461845435c3e7b46b4d013b26306a1170b114095539355b2ce2fcc71826fc4b95a273680eff12846ddb95c342518b6c91e85463fdde3372988a0efa0ac131f429a84803d9d6741d4abd0abad9fdb54b5bcd166c6726dc9ed64a85eea1668007fe5b0d222e739571073224b5e308a19b7d917825b8a084c840074067a0af0c06af4d954be7a45b98ffc04e031a6bcc56f01f2c449e2332fb8e64e3d298d46fd68894d2c3b4a926c6b893f27a8eaf26f87b65ef0a7349040db77b57f81818db962515929a37ce020c7500244fd877fcc2aade6db430b139ef5ea8825ab325d3f6c80affe19247a98325f93061be26ad883c2c937847e59b9f54c8dc6c550eacf3a7b781a54a6f85d06b3c82c76dcf527f70fdab01b858d5adb1a78150436d386478e1300ccf0551c794b6c18693150d0f9b43b860f0ec8b604d81925d073351d008a90ac967c6e3fc2d5cb919491781ebe3ef7bbdbd8c8ba91ef76693be29199f04ae8ef42a954a30be835ec5ae938767f1a0425b874e69093b288deb916dc8cc2be3e4d77008412b4a15f7532086554bb38e1ad3dd2fe80f57bd3ccc108a2d503da72b8bee55a08e3f0ecbfb177f095b44a193f9304a68bf7fa218229362595514fd9495c3646235d18429ba5cc47909ee0168d1746b31a96dd1335499066c266194a7d38ab6b1a487eeba6181049f89ac9aa33a80cfc5d6cd97e7b2a644830bb04c3b104d0fc88c06aa588b1755f4043daa9b5e786dede33c17572247b37a6e212d0d349f0151a879bb8fcaca03c46691fddebedcb925e9c4459015be50829ed0b25d48b4c5901829876f97332426c928cc2a17ee4367356a14603892217fcdf4d0fde8761fe67c2f33c532f07c37a54705060d71c67f1cf167278630adcfdf2d5ee1af9968c2a93410549a30a165002ae99c33f9a7765112c0f71d0497dadb8c96408d3526bba67b11dc1b5a08544514430be502ffa126644483f3c280a8832f27f5fae57663838ea72dca41c573b311fd4492ac8f1dc5ed9cbaa6e7b5d9265bd8d0720a99aaa4b8b48ccb3844bca4ac8bbeba64dd3152e93a306ad8e3e7ea75c7892e88a2225b8c9c8f56ac0a472d8532c7be10ff878dc081545d276c92c2c82a76c9872ec9ca38ad5033746b0c02690eb30b23dbd85491814b575ebe63bfcaf328380dd861fe1bec0be3240817b7de5be8aaf015afa01f02642f05ccf50111d4741929e0877c6470818f3d5ec9e130006643fedd2aad795e07beee24ecae7036bc8aae4f627e18e5837a77501cf4e55fd9b99b2241f9e2097752b346707d5e3582edcd09a7c554a6f35b9a08a131e61f182a4021b42c15426954d7a064a816f63d08ea08a8bf7eaa0c0ca4798f73326cb064b74dcb7d8890d4af4f32288c0a683d94f1191725274e53c17bbdfcf0b9787f79a00fc41ed0ab492dc957759e4c77485853a4e0ea4841d243cba98936d6d12c1b1bb063903388eb14d0bcd5f38715b6c70a761f86b0e1434bf0d370fa377bcdf7ffa69091e04eba23e80faf6d6b61c4661445d5fc1920432bf30e6c073f268a29f4a363fa203a9b9879fb0a65a5b63748c753b680f974231914a127a1bb66eeaf52b3e1092f2619c7bbb8d4a25112c515f71dcf612dd594b30d339c323f1775fb63c50391b6929ecc696952269626e95119252e6f86b32a67a1c5799a9c27ae622df6ec47de472beda2a75198e1d2bdc83e392095140c41f4978b924534c863fb3d0964ee64c0a4b1a07b35750c7b98879df54523046cb9012837162fbf08a07759be78646070dbfa6002d084864d76528449f4153073724a69790dcd4cca653c3486df879ede5384fd6a44c1d4af95137ad7433b181fd0932c34dceb466889def1d91c3c3c6d4a42b194d960320d8d634dedff8ff5e5292a4e805b0eae72b99dba88aba0374326f149a70baf1e502ebff74d033d2cbfc44c52f67c52ce69c3974532e300354721537e27b4582e70c38f46268fbc48128879e823341a9dfbb80451c3111a2beae0dfcd03d531536ee896a0ab1c3f7574754d0a6240110a96eb80ec090c7e3e19fd1d8d4c7db9193c24e5e6ab9b39cda1c27b93e8fa60aafa94774fe18606d668ae95ef0b1667f0d037ff07fac883654bc287460add0a25751c510e46e7081e17595311bcc057d11b9f3c7d5c3ca81d996fbf8eee44995716c03ad3f3be73b49b5978ab3a204f734742fc628de10be4b6d4038c7cc1356f6257de804b73a0a6fcd2679bbd5edbeb3c47f5c7233d58972ad280dc70ac234198111c5a48e0e0bb297eff9eadd39a5c3b6e7d780bc1c908303a124c006f5237ed57c96ec4cb9972b1dadfd7c8c32090001c50b6ad76bb55155166a0529e91312043b6d1e227087fceff0b1f27ef1f82375f22c0cbae75b437873b47fc3a2f138f68382e658645abf0db5aa24112eb3c5ac7b714adbb2b071c5e81244f932262f88f69a8920ee52e86284f804998f37a753ed7cdc70f27829eb43f3bbe3b2987013728d16bf17e89450b1db8506284c1607f584904edfe1810919c069d8b16dd4d648c2cc335f58b91c9b6345a56d28c97f73b0754edbcbe31a3c0d07a14d6057bb58e01475f7f31db8a32385283e469ab4028ff0e13d33a13a71a5381df00a374b5a208166af11a10d9fcd38a52332d3c446e5c9caf8dfced3d8ec50311275496e7b3ed2b2dd5d10a7f43d4ca7c0dbbbb193b5037d977d9ad6a21ca4eb9911074033b471cca7362ef011370908f55117df7ec88ef041489cd6d8bbaa1a1628926098af57e2f1c243ade3f9dc252e4aeeac4215ee63f225547256165c7c14b77a57b12544d19272ebc43a39c76c0a181b20a56e5f5a687199c6c34f56de25c743488a0085e142cbbe61a93617fe0533bbac0bf09fd65fab89982b3df3e69244f011411c504e387ec5b5dd279573526e3bad4ab489616788a907f328c497931987a3c123518bc2f9e9cded04060908243ce1c6b449abaf43bc5887ba10650fd429f7b3be72c46eb66f0d138170f1b80032584a70b0a9a10fdd802c7928d47317e293ad513ff542883bfa84feff09d2edca1b1212b238e9e38a2519f7163d10e6c00f6061f41ea6315c46146627b8001451a48a1ec01884d1e3994ea6ffdd2d06f6cbcbeccf36d84fc6d6a8cb7cb6d338d947c77d83c1ba97436e964df05d25104366b4e6249b21bce1d69394cc3e18d6aad81226fdec0c04383789549a22709af4a62658e9ed2a38aa77e56e6ca4b55c8183917a9075911943771ec2ce5e3478c2d86168bf66e919983664fe73275f48157daf2aebef810c64f7e2f2d83ee90c452a5ae75f68949cb6542ea69da5ebe88827d1a15cbf6386f96af6a0d25ef8497d0d21317b3119cc87f82e5d9afdc5874112bd8c156d9a23a682c1892e0c27a832a92d6ce6d12acd582b7ea82244f605733822bfc23e8a6193ee715b57ea8302156b160476488a5a72d46cc71a64654852725814fac4751beeb84b8808f32f3a05ab4e997aaeb6c434a332f7cec896c2bf2eb0a8ee36283b73e5fff6f47ef43b97fce5519bc86612a4e3a815f7ca3a96cc187503d5139ac8e873fcc8b6f670bf893df083e96330b1a7054f790bb4c8208699fe729ff164254db17a43644a8afff9848718b94a046e81ceb051fc5a686c83e8cfe44aa9820547a40952e1c444b792e849d1766851f930ad0e609910005a1c3c50be1d7ab187bb4f7b404e79fc02c6ad0e33c2ceaba8220337a35b780d01ed0f1504a052b570b214319134060829585d4d83c784e82dfde381db530e1e3b9e566486d19a70acb0527f966d40347f535927400c7779036989b57b7dead94224af9b73bbbdc92f40e5276c124e6fbc20464bd4224eabc9770db3f5aeb5e70899976ed3fed39853ef7bd69faabbf00ae256ca4717ee3bbb27ef6ff36a01a0d6657c54127b9db3e1b53b67100071b7eadb366c5805509320795c761df6b521e3936654b4596ed58fb95cfb349c8a35470459eb1d32ee64dc9c4168ae0ebe37c14a66492b5f13e6778e055142a2fa6ef4dcdd1f83607f60b4909d5fa43bf6b244dbcc6055eb7bf4bf3e3bb32090184684023f6444614bb421bd832594304e2f60de1e68315405a1c450677f0382811534d2550dcb37069fb3a62708373332b186cd6b168b723c0905b9b992855d4fd822928b1a0816bfdab2962d5864d28a64f74f9dc90bd1e3b96ab40178e686299307dd524852370e9688a2916e51218ef30bd508ee92a6fe3270c47f2a888f5293f1176a7ee0347c72238993309295f2ccaec5d77e7e67457506647310548ed2557ee4797f860b2bb1bf1d88185355e119a9fb1836c85df2ff78762a990667a481cb9d8de809a94bcb44fa123df7b8fb04376cedae45e602947ce1b6eb69d4e80311c072eaa9d2503c756bc2323d21d05c24bfbcf44961a02f758311389c64c6589a781825a7265b4ac766f2fba5201e1e7f9e7aeb7e52bf520aa0016b5f557f73a76686a228edcb1404b0bd5af65a7d6d52910f19102986c4df252a48616a86bfed115fa0f3dc3ccabb71b992029fea93ae236dc734b065cd784c675b855d7b8512a81dafb235cd80e5ebb69d64b8a32b7f1396313c60328fc96699c1058ac48f48048f9057d2ec4cfb074332eb7683941cbc5bfa0e562b393386949d635c03780155ca08d867097448c49cbbfaf3aa0c5b53c2de738695ae0143aa83de00841b35198958862c5d67f415464c9b889333810400fdf535fd5a47c0c2960d0162ac18f1ad0482685c4d398c15fbe7d3178539fbe0d3ae58b141225b5088e60df10eb95dfbf9a7fc472a1b9d088330908f7b8695296879908d88487f4ba8663c2058ba7f32a86e400a17f1f317a1e0b3f8c09fa2ff18a056d3527ee51f90f0aba62c3afa867a73a10aabd99ef11304ca906c32ea38b05535d686fc8959d5982e68849cfd6a854ec0594dd522c3df601f752ebb8d0145ac21a243a994d1933ecc323ff813822e76ae52a917700592b77225aac33e77480770fdd0e804149b31b441f7a7107da9191a364b408ab365a64d16c458916fd7fb335232d5fa738361578ac48e8df7f3eee5039e86adf36bd634c5d05bf6dfa625ec539b80992f156e42a19b43152ae593f6f8bb644ac08895a7c13b8f5a6a4813257c907d6ee248e9cddb951719c5eb0090834fb174a4654df98cdbadd4642171a0efd8f3a388e325fed8e1f50582fd0d374124cacd7e58136eebd4c19b0549dc19e14a92d297d15fcb6bbf4c176907b351c257a0ec2979bffd710008ef5785deac5b533e4812097f7705df1ec5dc00481123308b9291d2cf1a52a54c2511d3f136ca7f581c1988ffcabc1eca7dd028fcbac7f07654837fafd1ef8a4842daf58c4a20729c7d5265c1a9fde73d65b31b971748c6746ad9057b373e020f37d28c6f4a6dbfd3e34834b1bd2d73bdf2c194355e0ecf3b6a28b26af92e151a510f537db15df6c91c4f76c9d2abbd16c15b669c3b23588aec15a2484c4b199a1686bc25a2f7561953f786d1e48de9a3c6e4cf61097533c2f654fff80fcdd393c143201627034950bfd11163641c74f5d041511d34c827ee43ff5ba691850007002b9baa9258fd5414d2585e9c00e39a718a94650b1399b51308906cf3f412b97fe69f2d89a76f13a313cfab33388b7ff58527b79ef4953c1cd44ef8a78eac81ee139b5447a2e63185fd92204abd314162aec6288c98754f44fa51c0b26694a27a6b6bd5910b05039a56fe33ee20f4c491303789ba40ab05ac91bb7c6d2fe0ef91ef9e1eae150e3c8b7c8ca70cd7df449bd9ebe81e6e0d96fc3b3f210cf046c3c6bed7e924ff8595fdf997ea14d92dbf9ac03fce945b986d33844d0abc6d549716322dabd44ec1bf5aa12c7a4dc69c980645ea2435357c7008986e4b282037535651297344bc8dfc51e1a103124453b61f1c52fff22a0c344e09503a0062a0745e4001416a01c96da5927908236437434a2db5d153a32428e927b70023057c37c0290e23b9f910e46fdb3a7c7443ae73005600f14d8b64741e7e90f149371be19c2785f02e0581a7d33f53ae21679593c678c836a88074c9bd43b2f7fffd285df1c6941432473da6ff632b925044b9740ccdd9f4d5a904d939e3e35aa9a1c7967ceec628403d46709481130c012e0505268d2ed0518ae2bcd24ce53e7df4dcc4ca324028c839562b715d807115701bc24938934a724683a0a502c25839f06675bce761131c6ad63903cdf24a73a004a026bc51a0e6e1a246ba40dc69477b471183423593437a629ac24d4d0225c750371a176732e48cf81f762447528c2899889de19f1d6af497f0442de3ddfbfd15d4bc1243b3655ba45b68d9160cad8974972a10497158eabc6be94029d125027d73400ad1563bf96b2441c21a169f26f4e694f6ebe54fec490536072854b4e4370462df2a40a28da9fec0cad1949e6297cd5d395731d0371d53059d82e2f52235f56c46369eeccfa4fa2f43da8ffbb8da2d5cfc390d1306ba6427b49934d3f07b7536bca05726ec02255140e00d553adbc3fe2e4e5578918bb2ac613dd563559b0dddea23ff02427ed56cbd93b88066b3ae597ef9aedee320345bfd1f4bd78df634110cf3b13897d59991abe4d13dc0a1d8551a50fc25c0320b93a71bb0ca660f45e2a8be07018cbb6f7eaf8f340138c5edd9a1334814786b60ed3a9741563ca749520988dcb8d7388a590ae3484f54b0f5e1c5cac1cd3dde54a354d9758c83861d41da6725e6d107264b8166965211ce64209031db09693f20e65bd9bf0786fc20dcba296ba3b0e3280c2590b00f9d1e877243e44582881cb2970a4a83cf1b235c9b1f0997e9964b90043623e5409c8bf81c554f0caaff70d12d1b1bef930a244137aafcb5684b4fd08e1829e19258f1980f1e1453b5b32e67e08bcedf5fd63b1e76d80110b21ec0b68acf9e8e2add347bfce41a0c4daf533ad8a20150cf45908211a1dae0e1ed824d565c5699b8527d3f65c93e171de37a581137bc099b2f2d203743a8268c1f36f92af0016104fb7a8bb728bfdb4a66b8518ca3d525747018dfc2c38a39f5c98e59f2fc96b1fed1c8fb48e0a1d6519b067643e0bb3bdb63830767c39e07199eaa9c8e318dc7c742c4c3d8caa9b877a38ba45885cfb10281adacc380c7d09676f4e05f7a9038b16e9841dca758be7e3a67b3a05a53051e44aef502dbf7ffc321ac9b49fc6bd0fca91309d1a662920b41ff29c95c34f28ee781c0e219655ad9f8a4b8f61a7f260e45a1eaade99b40d85fd2690ff69c821fdf40cf6540d1a9fc56c2384e54e630759bdb8657de3808d5eb6d1080d92e65ef3e3047dea3e5e91e878896d748530d90e4f20c37ef16973b5055a6d3d7874b27ac5221425dc957251db7ac4ad3e1335d23959f3348b30a6ce8a9ea8f7337655f32c778804cf1fca009ee367fe1fa63f64a0bef520d85d66e875998d0e74601bc674d5b20eb376d36ff0dbe6ad0df53376bb2aac4a501ed38566cc3ebdd76080513186de415a5e014f1502142422e5d7d52053ec4e6673886dbd847d750a9aa6e04ea1446e07746da7de1cff54f3fd22d7b3aa6981c35da5dc027bcd18fd0607ca79b82a54e85f0bdcc1ffcee0e765e683a7bb5a3a0e4aa2eaa5da1bd992a61c98d6692d23ddb3fdf4ee950b25eb65611f9ff27dbd050337adc664db09a61d6fe97d9e400f49152a10fe2316c1ad92a947638ae51316e747f5cfd621e13ed53f8b5efc7b54629c41e817105c701678cdff6f13ac94f81cd7f7ceabf111c1517766b41f6cfe686b55dc3c7f0af463da1b5a5a8182f581d254eeee91928094cf8c7bf9cc9fb5b3927f075946fed34f431fbb4b1bffe160acf63c6b39d89298d7e2bc96f308754202e0431be4a843c0ee582284024dbf6ae4fe70258353535603b936139a014c34148be2ce1fa0a5b596c610cc7887841eb7a527ef90b9bf7b9b9c01f74d78eda59c57e0f98200180170a4033f955a235fc648628b314488f61255cde1a64873f55ffadd35a2d338e49b10c50cb161414152cfd91d3f05c0d62a8925aa2650e7660560bb9c87eb234908542c89abc0d8a7f87be7c6e074054faf67f5bd7a0d407e88a51ab953977ece7200819a66caacc831de6770340562259ccf281fb24ac0297996d87b0471a2e61025b5e767ea3f54a8f0269c4924a70b400b56a26a7f1ad26594af87b4a8f44ad3a7afe8862f9c7848343b35eb3993c04c9532b9496bbf3753ec4187554aa5e9d356fcc29e4ad3a101371d034b6620f7f651d695d1284d2b418cc475a034d53909600a3aa9fdd7606e5e678cfcf367fa7ff849d3d7ad5653fc3e684b1a4c9ed880a6ec23f96101753830993532675a8d3e5af5b001a34c15f770a11d06da4e75a1a92e5f4fc1b8b70e4d97a91edd1b78af83afb7f586f24beb502c1159e136a996924e24975c512071857529012d75d87b23fedd307c13376b5070a93ea96f88a0f50c4f93665feb93c245064c894715682ca8f1f5e3db2f2b5cdfcc249c102859238d5fdaaf30b043b1a1651ae92809781d25cb451abfbc775ef7700eae587706c7d7a9970a64ea8248210c5bb0d46ebd71f295c8e5ca478c1059826cf6e9566ce0243c9d2738c975d1a9e07afa303d97c4890e3222b9515749a44451f070e500081f07f4b4d0c0de5902d1672c58c98b0e7a7fdcb6a0e8fda4178c8db0357537b8b7db164befca5e11f44487c949e4192303a32214d009988c7ffd20452e8e150123fcc5c5e37a3e6831f0fee1fea7fdd4043f0f68be7cdd64fc626045a4fd48b407afe25020c6bab7d4c35176e5f0206073b1ec7ee2059d386e9afb183becb6ff5bcc3c528293bcc459a67c428e8487b0e7b3baa3eb76ce697f744baf37853625cfd8d1b0b984be68c848cbacda5c0a700becb3985bcc17af44620cd7418e44902af90aab8938f0a2d26a82d386e367393f58e8344e78a3bfc0213cc8e67c66a943ae779584d26b27dd5a96f62bd7802882742b40c7813eb8e2883f653aa8fcf92ec3f2986b7afa38399203c73a7de0eee8f62fb9447980a323cbd103d0652855e9753572b0e4f6cf68ea6fd43df5376e899fe979b0701bcd5fa9c00885403fdcb57874e9404b9f5ebd7a2e00abd78425c4699d4427113fb13adf37c9ee9416901808789fa2c0bac5ba29f6dc163d5d4ab79b8afabdddccc524107550ce4fa04ece38055910a8fe997a826b6ba26321a09b6808c59dc5311b0ded158713693d9ed772c74ca310752143a18bce669b5fe8c82d113a9dc707afe494a71183c6fcfcb06984f22752c54e3cb1220f03ac3f49e8b7f8fd5f6574f57c7b7542d888765da5e6ee99ac2fc8fde2ba964be54c94be55002ba08bfe5df681888f65f07cdb51e4fbb5014451333fbebfcb15d09c31166f171af1034dca592a443c9c039f9ded84b93641ef7ce9418e5ce38faeb7b205aab7d0998e74a6e2afcfadb67a4471ed86d0cb3d89cb59468db50215917cee1f5800507f1e9d427adb222fb892f505ba33fd6818e1e207701b2ca7abb61c5f57b3d525dd57aab16d8faca20593efd0429aa121c7fc1f3f29b125e7ce05b22ae586964aecfda43d81a476df02e4dd83f2ac95fa793e7db7c2b8e766545b91fb22e2fd2bbe248a102dac1800183af5d7c0c92b4bf846410d56a3ed5cfe5e005b2dee1342142f6551ef6911b74494f62d3f3b9ff5c10bc757bda9b0a7bf24c0bfec4ba326ca1ed87718aead878bcc500edaef74671d7f6f7d8c94d00c0f41021640a2b3862b96c2dd9b60041d5fcf4a381342e976db0ab18a03fab31b436730278234da14411a36492855f7c66e0a131df233e24b21d816ac30d73a7be3bc7f7bd9043ab97e0f17493b3ead87bb9f6ce71dc57a26475cf219ba9796e54d320283a73dc616d346025093757a44d5934a031206c2ae18ce69c1bf4c0339f6c5765d2b4ab49f098155d4135ba98f0f73de99681ca4c560212df6e5b69afe027a1f475e52959410c8f4eada68365bd6406fc189f6b36a7fa062ad86b816327d0c894df4168f9918f4a0188a2752fcc576697be61012620496faceb78b7dedbc6e9fc7d37d9b812cf94f93772505a76918753685621d4e4f751bc0a8c05bb406a6c941adeefea4223317ac2b684170e28a109c5975701eb3ca43a72d5a730f7778a2b08236a4b45a3f06a8f27615d2125d9111f90dd84ae92e8bb968c0ff1be866b793ae2dccc5b7d5adb73b570cbd53f56b198a682f55dbc18eb53dd3456b360c5cfd2c43714b74698c430d194d96188044f070841e623e331e6da23a2b46b3899c5ea4319b2464dec4c1e3b55e2742462d98e6c334ae34e35687a47997ba835750fc19a66b16b73cbd59a21ec8805335c32259771396828a91c55f05c39fa1658558906416e54df20f17493247538fa39721396e3d2ad54008545ab7417083cba55f1d5e8f50a75b9d58041f42dcfa904ed405674a58634ee2d13c21e19eb6b921c1482be1810eff8934c9144537a07a5d98ec35ace4ee3a9471dc1db59c119dc3f6566ce514085617c4d4fb3fb7ac3e3ae25880b06b0c7bd86580b1345af5153169601b0ce4ad370600f85a247b4c2fe5c0da69b566b47726a68394564ab13a197dbc99639ba3538aa14511200ec5e715b338c99b4ffff58d02798acc21ef36c620c28d8d9e1bebf2515215f2a8b21bd7b47ad7b9338ae82220e723127e7e2c2b0838e0f61366f7167a0945659779834ef252767568f45c280c76f6884936246693b18f27f8128cd10db4a496a64936cea3131f02e4aef4c8ba985faaca464226e3d96348d814f094aab1b55b23225a358beb556f8e9349025f75a65d257dcd414151e9b106ba528fe60a387ba879c44c39380e6f00a25fac212d2d33975a1f559819b7a0a603302780972301a6f5b802f4b89ab16f8ba62a119fe9a03c6d41efacb3b59db1ad9f112bf0135b5babb0cbb670db86570cb9bc4d934178d57df834224ce10f7826ba325f6a2303bb195e58192c856b4430078d6b0dcad6879ee3c04d8a2d9061a136f5f6957ae0dcfc6f7cc7bcad7d0ad6b340223ff85c125517d4babc2cccd511b593eef00e9b039c3548172e84ccbc9ee65fb3c4a4404a3ffb44db80deb1a4cb632e7c3ee7e0e3ec8862dd22cd8d7c00aa9ef039e55d11c110de565e2676b216f6e0edda0b8f7f85d9e8bd8744b691703dd78d1092b99a1758d23658113a1ec229b05e24df3810bb118cc5459953e2dc50d351bcc7309c6a942aaac07dd06e5085292afc46a97a5f51aeb612c6a0458baea0e078fe1d1906eb9cd6ef61029bff2df8ba6ba71ef1260193f07b22c700fef3e2fa65f35411128debb62166d4373b214b6191b0b13937de1ce3f7169d5d7804306651f5746391e63a043baf40cd37e5f4fea62d9628857e1151bf0d176d51d2c61e87af8270181ee33e71978a64255353c04746ac97cf02d9e2549669961c7c7d45a29b1a339650dc9cbbed70a5258e29dae32be7d32ce7a24ea6e54cf70ea42a0f0958d7ce040c4c0dc233ab8d0771f9152230dde376e49707c64b431775439ced1bd56730e8c5e2cabb2ac61f6ba80c3fe8af7aa9b1f1955e1ccd4076f83447ecd9c4847b182a4bd8338b506e95bdd18e2a2fcbe6e7493fe6a5bc4ceb8bbd48d378feb1b7a808f71f25b9b37fb2a20806d91b7de2a830c08631e6f9a9c35e40a9dc64a320d877023d051f6464fa8cfd8439bd91c208080a8dcef1993f4b1f08407212f49f7ce31a7924173f0ad1efe6941920ed4368c8482e2e54ac551fb656bf02d27205da81a800e3e00f35533835d89b3100333f21c23a2a7bd23e22099f9bc254716e8e028a078c06d4c0ce6d49a524adb2c8d890581631a4680147e2d05bf0674c26b1f4c6b5c8380439c57d6f6211b3a087c6c15ea767dcb759beabb8fd12545fd2728ab106dfe9ae83c437403e1b7a8753bc37f257cfbd83bdc10dcb8331960e8f17313435a9f0582d169434817825d76960528cd0e5b7a0d2fa613b5fc523af731ef98ee8ef6acef13c98e7f8b67912f03f4bf7177f954c13a7ddb67cae82c1c6dd3d4076ed010d450cb1cdd6c21604650264b6d8a194f2e39164a5ab6bea69f4b59d060b4704e9d8cd58a89c5f43a12ffb1628b229ed92192093b70db108f980b92bd73429c47461fd62ac195c2c2ade5759910c4d47333d498c9f318f19229b1f0d4db93a83190a54394d9fae91fdbda154c900519dc3c931e9c8ae42f197b764b265c008eaa1babd48d04239b963d54330f7b362b80129670b6d345f64b8866c6c815d04898c66a5141924db9f54f152b177c9078748bf80441f6720d28e1c10fdf7dcfc77f802bf065ab3286be0cfc4e1a814264628d1f14d50cecf62f9db9c5a12070c52cfffde2482a97fbabb59656117e6f84b15541e2eb88298570e8059d5c11e79b755e3e1a8f60e8a057baf6a20e99390c6f8121281e6761c85e10634f6ddf4ca9ba03e8661539ec7ac75e7262e7545a228bfeb69da7071cdb92c28feef44dd7fdbd28527999b1e98362b422d6d82768b6c244d3e9ab2459a78264d31aee00d64cef1fbcc30839821cff140df68d39a72eefb6e039648fddfc57ff1f1503eb23a5febfa0697d5074a3020c22168e2636f171d839f20a2463a455ad494c4e3218d966e6ca7b56e20cb9315d2e16d7cc6ef22f8d67166905ee2a2ee28a1290a888aed9bc8e737993b1133deafc6891cbc341402cd6367c49229242dfa3d5afc58d77b447e0def1ec30eed745ae07f06457ae4def46d4991293d8b116480413401eaaec5281111958d037ed9765f7a645fc2d697a132df33dcbba5af15f51a959b904ed0dd8d2284fce66acb4bea53f8ddf777252454e0848ad5526b36c7e64a8ee6d73720933d0a906b2d101322b3c6dcd67f804eac424d9b12edc948bd099e5ef629d7f46f7c564cdbb2a9415c0021aa0dbde12e4bb0519a214627e4c3fc6fa6be5fb71f3fc241c6fb7c5a3ceb14fece792f4a13c20b775420061d8fd2a4dbc43083d80207a249994ccd87648fce672e97425f252ea6200dcd62617facee81f16bf45a4f2a4dfe45235469fe0c58d66b18fa5be394f78121c4921b6afec8c58fd119ff4f56c20272494157b5887347f9036e4a76164922df857ca881a621f83d0f807421fe84f51738da71b830cb8cf20c9ff8da8706b17b3ac8983a96920d889de18fd25e09621753c3ca59bf8ac982df71bb4747e9f3ccee0eef7f5b6ab00ab7440bf7b7f414eec3de678ee9dd5ca29060826f796b9e891c8612798731e842f8796cb095c4b3c868c93ff820a3bbf06a090fd661d8301b02675588ee982650afe7ee8d2d13d5a52b2ff5e6b232735b5d356789dd14321583f0e732e5e4953a206eb2c5336a503957920d5b5d5a14cda81ccb4a42403f202f56ebcfaca91c0a7e2a792ade21cd48b8535439e6403e719c0f7e14534faaf240d3823294aa1e11b4945d39fc519fa5004fad3d7de58081d9be2b9890a57561390404b56ccc6f4bff759ed70e5555ca72cef26639817396638fb7193abce502105d2d07c0e7ff1c0d587094738caeb7e09b09e57917cc9684021ab3dbac297ed5a6428192f98025141f58cf501d848284eb026612127704642c854f193631285f750354fbc62f1ca545e9e19bf63e1a2a77940a88e3ac6ca4cacad888ef0d2f8215e68b4d101ddebea3e0c6712496d59915e8909d5dae14f4f12410552ddb1c6f45ecafbfe916f0cc545553ec461a7597ae2f37bae7a1c4dae91814975ae4e7c2e2e8bcb0fb1cfc0eae110ad59cf75b46b4e5570de9751c17dd2057101d9716625b499a50fb2a796a943ff6a12cc833d035c553e9fb35e0c193b1db67ecb49a6c86e95a16fc970a6891c2866fdcc4419bc80dae1e7ea60d08db16af074a82e2a2cd2aff58e9c0eca87728ddae5ed0f885456f05d0d62077c4cf6558f58d04969f95ccbf9be2a01389f4264be17c06c446ac3b0f513b159cb3e9b7536a6f8a3c0b5d4f356dab800ff02a59bf90e44272f462e3a79baeec1bed21eba4d2ed84be37dcfa4129ee608de88f6f2d4d6bfe403307cbffc4be018dec4dd0ef3afb080fb9ef846ec93ee3e1dad81b4e7d6d090178d68551309454cbcdf26a63acbf4a37cee544b386edf962352d89543702fafa96ecebc1c3947811e6ab47332b0800561dd4b3223e6f51f3b7f9a95f65e20b5b7a17f4230c5b6c3a9e7702e5bfe12d1bda42fd10bb60b9bf193d1cca8b10afd2bbb29d260abdfe61b34b888e700483b95616c68930aa4ead19aee8bc2b1828595514ad0f6e22f14e3d16305281bef420e0ce2dffb8f6740b379d2257cd2d32ec5593ec4149c7e852ca7d6fccb23fde874c543055aeec177b82a63d4030a9829ea64346dd7be3645bb1af3248751310a1455b932899b2716449f8882471b481683c371fee24bf2d5508f72b535c461e2c40d4e65ec5e4ac47ce3917455a0c1c3c09fb9853acd88393425e50081491d6df3076470fcf1d7306322f8c730a06a765c44e13d06e835f00b8921563df34011034a6e45dcdc911640f6cfaf7036b42c4c32ff5bca484a3cb4f968f95013cb6f2be4be97a5a2c2353f41ad5385cb1be590d26c99384244359d46afc4dbeb97026e48e684c1194db61f76cf4e124adfe7a4306616cb03cc9ddf8e044607257a075fc6010c16afca0ba18ea84a1487932e262a0af489bf60f68eebde75e4150e33fec1a4364c2b1a04a0a2b228daddf9c125bcf795db2156d5a62f1e302529c4c5cde0fdc91ce1bad3cab96042427051ee1dd6a3f9cbc51b041a87fbf6de4485b743bc2bed73afa908498a9e3b7e411301cfae8c1080ae42899008b711d56953d9b4c868b42473c9dcd74148a7f943805466e4860c494e67e7742b8f88d8ec20633e5168eeedcb8a4992606c4c67d73fd3d301836912e229473bc40f761d4588f8d99b1e0d29c6159125124c90ee482040dad6d276bbf77eb94371d954f9562aa5276c9f2105cb2365b28635b8802d522f60dbb60643bb303b670413d7152899ed77a12a4ad6bf77344d7199be524048ddd1b65d2b0baf79d6e0fbd1eb8e4d621c769437cf70753d57fc7fc618a555a85a9084244b7acd201d47a209116b354c8a55e5b1ebbf1aff48eb24a72cc9397470b18566fb5c50f519f8f6675043ad0cff4bb706d48411d68217f043b265aac60bcc674d894828c864f6eec7a76058b0a20cd3a9e509e7a57814a46f2cab95501dbdafc646448ad6ad31c2fd2799d8c0499e0bff47213ed8550820dcdde0eedf5ecf874c5ea37d45ac9e18f1308e9bfc046adfcd15740c3480e4a55ffdef459e0dad349c0a65ada48572aaf71580044e1c27082ed688f159c60c5f4c21952194ec4f7b9ebd208e69fea6ebd389e64f17b8f07faf6a561ab7264140cf004cfa9c86a2519edcd10af6946342f83da7371f62d1cc78d0a1617aa3bcdaf84c229046658443eb048cf30b28f12f06ffe585ec3ca4a34bc689d77ef2ca01d73e6589124ecae06746bf1c9ddabc12c5b643a73c373af674ada5e92f86cf9d9f81dc43d6827f0c4650d519b83f0661511deb53664fc466b931c5512b38ecc3291a86be776801f19fc9894994b7e6e724924780003ccb20b9e00eb84b74b1312bf9ba75e140d88b915f8bb685948f218f233a10e4ae2b09cbf784304b38e2413a49d6839215299001aa7fbb0eb891c966aa9f93c7eb51655f308ce1b8e82f86b92a99540603f1cb9b9e7c8a8de9721efd0ce7fd9baf21d2c0cb711f52e284b7c25ab80a63a6d379a26bec169a00569e16bfb977602feab559a62fab7b15b21c12bcf2af331503e8fbb2368536fae8cc094f3887b3150041b3d31706031f72751b20d57ca113b4f6f0ec31c1a46349411ad27318341f28c7197fdf7a6d805079f8ad174fa2f7b4b71df3d473875c2f938bfad60cc3249df625815442c4294182ac14813ce08a86dacfdbe97490b5b8edd6cd86cc7ff60c205d4d8fb9c71449af6d23e3d5baf509396b3788bff2115c7a1f2441fd2e6a4e776e0453f604dd502c0d9617c92d4f71ef49cd67d004a4b181cd060a43f7ba3309f2370b3b6b215b6d5948f8d9dcda44dd25c2265b108c8ea42cce080bf29ec587c704c587a8c7110c78d43b3832833368ec1e4e2c4ac4cbff66132cfccd916ced4072a8693a307be70dfc0e0eca0ea799be537fdcf9169a3b19bcb55e89a92565713b53d0ee0ed6dd4ff982b2c1ffc05fdb45817a007be67443d65b02a31e61ddf58d8532da3a40c2baacf2b572f929103f24178305a5766831192308b43bf669a8cc7c30c9a0b5138cb226a44918649a041171312aae2a99be42f61de629a8479b57c12e24c6c0d0b00c457e7534cd1f983123ef377a1cb636674c0c9dc9ae8d3d9c8c298403625c7053911846fc1b0642deff16dfe501080440192ecc9507269a4fe0a853145ec07176a3d84bc3810eca6ec78e78f10fbba15e3789a25d1bd61e2a36083eddc32edb5ac19157a870d682025dfbd7e92b4bb602214e32f8640bab2924fbc4684312dac5b93af91a2a8d68e1365d99e1606bac0654aefac64c9e0dee51d99f8a39c995952042dc203e8d5f671377d2001fe2a70f00d94df491e975c7accf05640fc53c2e8457102b4579b52e27637f5b4bc398c0a328de4b6358bbadb46591f1e67e373396bcfeb3884a28bb9d18de249cf65d17b6990a219cc057146369493f84f54a480f5027339f49f68b1799d0c027ddd3749fc25021cc6427133524b82ec87754217f279c3f85f717ee41f48cafbade4de5b8e291668e6b6afd14803230f547c710fb4dc1e0ff14cb05a3b9250e78c5f3da040c9f4d49a911110efbbb52a20143cae6e55187f813ea93867c16b42b0ec317ced02027c96137753f908513287e9a94e0eb049073acb4e5e3d0e6f3f126ccd8a4b71a603e41323b5169ab5e6056881e949254a9c7680d1d3d47d3284a4a6cce92385643691327cfbd53a57fb4db95dfe472df35362313344da873cd19ca583667eb234d0a6c50762cef8ebd15a83d6beb69494b98b7d53271c42bb6ca68730481b496ab26b0a716c3252f3ee9ccd8c2ad07190850865a62b816ae970da1879307baf08a9c1cbfe53b2522afcc6e881a62da2d3d2a27d08ee5b9d32a0413535cf09134780958c400f4a747830a65b7137f9202888dd38caa9e3d34a7e5cfef8bb8664b84cbd6e5121830b270438ff67107d8baba2daa5d90d6c497b50c1d8fdc41bad598cb6d885654c78c3709845e9f84819de3ad8390aca9fb8d9f1ff0ed44e9ca80d4fca176be2f6abd5aeb9977decb02043420f6227fbf45925e6b54d4d71d2e273911f482589849ebd7fe3da4734733246fb093b4b15db1a9499e8c37a733f3e7007e22dfd506289a7a50fe301f54c2fabcb716967b487f9a72bd6234d0f4dc45c4e4dbb6798c651ed2150545a1f15dcbbd695238a09c2912eb0be38b25f086a20dd935c07dab819652625a0e62cb27803c7ceffd36e56b0885fd175ec0c0fe2b31525f272b5ab810a273cdbb6ee9e6ad425c072b82292e83eec34453e8b0121d1b95076f12ba5037af69951e8a828d90b7b39d0e9ef90683ba12aab72eb906c22ca1146625b783e889093d1a7972c0f7703cf5dd1b81fab3bd8b2acd874786fcb42012a3bc35447a07f07f2daa26bae690ecd89ba82723ef42dfc18c0ff0d4cf8e8bf22c1917308213020f50901bc42c537b7f8a6673ab5c869ac9d84d2fcc627fc198ad07128eac2d4859ca51bc565e43ff8d0984c2f72144c68ae2a563cc228498d4c81753353f134b509dcb3f92e47cd05d8b49c13056f153a8858c74fa33d87c964acadadc69c1ead9a05b12a57158d0cb96ad5c04b62d06c0fecfac237c86d177e03acfa231159d98b0f3a3623a040fe32a060d47d74715684130a132a4d2beb52e35cf80180cd4411d10ebbc7d1bcac7a13c5af24a0c5116508dcdeacc3053283a1b1f11589188d66a19072e923a984c6ce52e0a6c58d07ad021277fd7d19d8800c300d82f67e52bf2e0c8276f381d8354413047bee007a6cb1e197be1cac206e81423789ce19fb39ac7f21f97e4ea006b29abe91f0b2c3de154e2c122b512486784e3b67b41534dec3cf219a93d96895aebadaa00cec4815f7072a028c5307d571a960372c0ea4461a5dda896e5182d538a61c439d57c28066f7835e3847d6b9003b87180a4c92a0027b68e3fb18402b4d8e2cd1a2216d5c522dceb4e93cdd82578d6cd1ea85e6dca533b87e875cd00e74e5310d2d08b22f500d5d57813412b0bd81051a200e6b3fd9c50aee98af7bbbba23443f459e3d044531a54c667e3fe11ccc39aa5760689c7731f28300b4c41b979d6935960b731a5148c1bf578c027fa37df63df29c6f2daa1850b4f343fd1f1098d641d79eadd34898ee4a6003ba6d9e89fa4223e4965e037e1b5f552475ee0ceb62968d08a599cf047f5b0589e58c3af666a49f380272923b0813abc91f376f6a81de1390c2ce1ded4d0a373bfaa7ee220bb9dbc963aaf3127f91c83bf19226176c889fbebc24fcefaed2abb95e2e19d110ec1249a337dc8191509e0ef7716f0433c132b9d111832ef787c155602015294ec3d28aafa2f888482311655d62d681cadb031ab9edbb8f59ad1dd0e8dd15f915435e48dbdf0c4a53ac6161d92216a4d100a110e383925b8a2d7593287bbeea4829bdd2d3a475c9b3947c3a753a0d80e32df03b1e14c6716eb4390e6aface1af8b2248e8a84a14ab96413c3cfcbcae4d576b0a4cb58fbbd9bb3d3e1596ccbaba5b72028ddf0e09bbc570b7612c7e5ced498d1142c0764367aae27e29bd298302cf4a3eb8ea5de8966b7d30b284d57e0315cb9a5bbd7bb4eec66160e19fc6c02ae9428ff33988c1442fa5cfa22e7689ab025de81241a0b2018491d2dd851bb6d124e9ab833ec7ac34187c0b881c607de7d014259af7a40eefa2cb35b21a3b7907a4d400b67386252d262a6d6a6506c8d139e5525293b0d5f24ac39b28d25872e66870492f0f36b8b2792821b9912692a669735ec7759f1d32dca07e26823fa91ad416358130292503f25680c3ea165accddf481b6274cfc2cda724dc9ff7ad8ae4619d91d3f1afa8e0de5b810ab01481fc1f5d5c6eac71049c5e29cf65405fc96a34799b3fd1d1c703568a8525ac764fdbf6d3866e3a793af7369ccb30471ffb6fc7c83e1349463370d8955770001cfaf9232865a18a5bcf15f0d7da11495d708400b8a20395ed271b2c233992a28ddb434b41e111b87910dc000c20c8b49bdbb3a9838daee30170ef5bd7cd759c4c821dcdfaf6cd920006a472b9c78da3b3a9ba0d722a9725416922a2be854a833f2c7d5604f3cd8922059aea3c3b45ab8056dc70487fecd5a70c1db64819e26e6870501d05a18eb91d843d2a053213f61052b30805322a6000a300b20a2e6d9851f83713ba9d42a623d1bca6d6071e1ba121f748c08826824c3a5bd134c8b19eeca8759fdcd1e54eb94d61fb3a04488409c74fddc6c102f13960460cc0c0d6b105177b76949adc3e6749da5ddeaf10cc4eed90640e8adbbc198810cd9bc4c22a83373a619a0398445777dd0adda73825b82a65a0a149c71a5331a7017b0ed77cbcf27ca3ba105444015decdaed76804ce6210305dde2841173b4097e4e7cb6c06b2b2280ccac8176408e94ef6339a40ed990a9208660b04aa8ba359532fe72983b83595f8b704e940f11a8ac48741fd9482b1e1678d795e087a32285884746a7832edc8878b4b29990013202f57149ab5a2b8505e1664833d438a11350960774aa012a8d79f47845f585f4e28021f6588f09814d1ab2ba2faa8c876ccac9ac0aa10cf3621ba853dc49227a5b419e4488cab2987f7ce03f6828a35f0734a520223f5ebae347f7a9a90eb24f1eb2b1fe7b685cb1cc63a0cf3a9a474d4199ecb1ed826fb7bf801d910dda25f284600da076731a19072845c45b0e9d7058d315d23554fb003e053e2e6672ec46952d7a55b69aa61700eb87ea1a74381c66b112de1a82bf4994a7f860dc4374180cb3985157c7fb1b759f64a229c8fb374f7204bd3c2efb8802380287075bafea0f919f9e3db5d86697ecb2e2b214408a79e95039c358463f7d456ea4638deea726542cb001d826de84e8bbfbc947ea50e3082c2936dc9a7ce2223beb27170de7b696d51798d109a773b7975a3f23e41729d8e3424c4e6249acccc8fa6a1c89d361c84cc17a71089c7a02961e852429607c7734af0c2b2c531825835fb83da0404381e1d2b02a9f78b14220878a89fe28d95453001fdcd7f392f6f349fa8c8c7ad6f0cc70d580a9da6ada4a392198961899a801cf5c369546f670a6a697862cc11756ad078f6dc5ca2eff616348767d30bea4dd1b30937af10f15147625de308baf7b07de7b60d07b281b8204d4d90670f96acec5bc9291355049ab19126ebbff05146952e358e8d867ceb0e5b09f7626ff21527f4f90c2303be2fc3ca028ab0032f86395c3e55057a71dcdc58724e56c0fe985d583c055d615682f4deaf307f33a69ce4b793bc3ca4f6f00a3ae3f08bbee7cf9cb78871c4f4f7e16a56da2a75055af309a103836ca65df458500ef1efa01c8fdbfdc9e47c904481a918a5c55b2773015a25cc44ff1c7ffa6b023e1ab7b8147acf3be696eaee36f9ff019e473e1eb6a2d523a93a4852d37f90f065d2aaab65cfdd7a738d207db8052ca237fa84d3db3ca01bd686593fe87bcdc9fe08d5bd16866757682fc9b8d5e79699bb5a12351b30ea4cafe05c60a9f6f3f365eb2cc1b984d1eb74d5f6cd835628734696d8ff20a2f776d07d2bc3aa91220b596bb1f16ae7dafd5a391f862418b1ec49555e3a45d1da50f53154ec6215ae2b3a9903731696abaa482164523056c711d404522ca063ccc74b9eecd09e72c409c07815f7cf80cd236470010a95b9468936040629de4e328cfab7f7cb3c12b67b20ec472da5e6f1037b1e044f4cba68e3e3f3ee6fcb3fa12eaf2bfcead73654d0290444aa4d1bb62b424fefb8950857265816a1dd2785c41e9d18e78c8b6ff3e557e3d45129dc148d6909d413835cdd4c857b464218014f5599822c9256f3510b75bc82f988d007640b663bac005ebe50ed1ebd25b44e90f6eaa27b95aa9ff221e1f3308578f671a0c3bdcd047e7321f92e9631ef8aafbf099dbe92bfa9e22bd157526f3395d6b0b025ee0a129d9d66530c61ed2b3c1a2ae8dcc86bb092aacc46ece1d76a1d6165ade407201f5f67c033b12ebecad1fa33d9b3c8b8597d68923874e59414877d99a32bd1ade7df1a1d586075418e05043054ecc995e04c09ae904921b45cf6acc0193768db032525529dd5cf36571885a87a73c902a8cc1d1fb069a09077f1ead7cc6f4051241c1e838d57a229202de934b668dd52cc49fdb44220f55ce1a61497095bda3ef04db4a622e90387ed35b53a97f16eed82602b3d1093a6a5d963200f0e53330239c16a8ccbf1a4529ebc6f8a6f878c6e20f7747956dfac0fd90e4a96a791943398b74d728b70e356fa26c4761b3052d0ae55e1a77477515458ca83db4d2a56bee360504de15d31852923fea1334ac8d130212535901253143ad22138d03902a565b3e061e4add8d553cf98d215fc7c209a94166e04a2ea96faa1fcc919e410d92b989ec066c8a8d7963c194bc19e284a5c8165130d77c7d7240a2cea0d4e1113e746e9eee9cd6fc70b019d4d1ff086ae3a76756402e4dee6a07b02bd88769e5c1e4486f05f167496f0cec7835c9535839369fff62688380696d6ba69a9bc508d278677d7a727dbc48bbfed6d9b7c24e1afed177ab7fe8f607fa8881e0f72470f9a63a04f8fac6a6545323f2f404fe259e285559d344b1934ff53d067afacc66e03905149f722ff104f659234c585e3eb2c3a7659ac30000f4a5d3be8c10c04e280581bcc025e7943c661355b6ff0954ecce07917c24889d050a381b745f246f1194a5a2ff1231ac0a13a844695bd308b4c09e6918449f145a367efc4a88225a99f5bcf2f4e13b24cc5d6da13905849763dffc73bfee8869b139e767e9f781cf308519d764c90a55665657bd6b25eeb66ff5bda2f524d63ba5f7cd5e3dc72b43ea3e370951a4033cff7fbf74f00c85facfab132f37c4e34588b6d30c631c50b67e70e9c5f65f080f229e572baf44a602ef0f17e8545c79469015c9377a686e9d3c8c1817d0570bddc1e697b8da611c2872c0340a6871df28985eb7d04d11c27fc2cbbddeabdbb8df60025be8f7f6082d5a234d95c0c588b5c405b36d10530f556ac07de1ca02b2cab70191175328cf10b79bf64065ba029fe319812b3d41a62b276b8e547ab8f57fac7e205f09721572d40b529e8438181e22b71af1edb86ff86fdd084db5656d3894eaeb25b76fb43b66ef472678d628fd9bab665d0c4eea9c47add8ab3c96b33fad386f7ad7824e8e7f69e77ca8f02160caef57c13038315d6ba862fbec12bcdf5a9148116f547a435d6e070e82cd36c5efa22edba76e953220ab160a5b394c39bc9fc4fdbf7c8878f64d0bcbb7d97a9ab3add4a54395e2b930d372b1852d40653e6610e6fc0d95f7ca468f9974421d75e213a13a41ec5931f0c74bd8de54c3b36187e482ce79cf2c68f749007463a5027876cd714a5c93ebab7e8c3212667d219982f8bd5e013a936dd6c8e837873808a4af800dea60c17a5376f19c1a1110c4f5fbfebb71bc0276ba7786a79e15d0ab1879a42620219a02e05c9109af13f68ba723427c2a654fed465dbb6e390c676eb722c09af54362b0e649033678638bb2ee6b25c6b1be7f8af78774af00bd35e13e8b6393fbd9adcbb9e705ebf91486650162bc824794621a9ec4caa20248e85199375609a972c31544f5c1bcf7eef6900a329ed8c27eaea7991a4b3e606ee967d190e2339be8c7fb1390830892d9d83bfe541f1a82ea0f660cda59d004b3751f979f45a2920646075ceeb3684621b8a957830b7a6b5fc117375efb7f8d87901558dab4b6df4707fbeaaf9940faaa2265e401448d023ac5d15e5d3090b29a0e36e07fe577fcd8bf8ee254c9effa9266b5128873f16367a2636c3244e91aaa937a453a9281070b82a4c29005e4a60150052a5307a255d5621dca1a9e4321702b32bb3442ef66b001316bad971a892cd9ddf6de5bca94a40cb7050006ea05d469587b7d54b1a5f2bcfc0071daa54c439423a3dcdf48de531ae7add570c7296d7c9b2bd0777777bf4f5ba0d1a6d9486d2635c12f31e0d32ebd5d729de681daf4fbc03483a6dc4b72dfe80d769ba7019f9fd82d11d63089bbe68eeb214144fc4b4742fdd6433a480b3efde604769d0a84f190db0d3ba98296bb52c1a7d372cbbcbbfed46e3ad70892dca7df7e2a2b4a1d822dceafedd640426d366e017e6dd76673224ec46d9f5853620431c70d2a9272ff8e557277f7ee55709e8eeeb47903aee5484b7c23b7bbd966fb804db840dee91c4a73fc4b1b254e9b3d5ac1270e8ec386b02c9f9ffd756d5b32a5c2daf0de7bedb7e3850ea15f2609fc4202dc56745050d78455627142b9df0a7547590612f8ec20d418d8e25cc7be38c3a71f315d59a237fd14d5420a95c79260710fb83c16e73641f0f9e1446aaf843f49bcab32157c3a847e1947e0ef8887ebf48b51641545420d1b5e7e3827c571b75f83eee89cd37cc1da7a6f354fd124f76320cf93e4e20ea16b15732d21cc1fa8a2d98f736d140915cfc0e362103220ab5393727ffda921f4b3bac0a7ad32ec0b002a99f0e72b7024b95f90c296fb79d8e651651d427ff9037fb64d7c8ae516f86bc27148aebc20a5e98a122667ea51996a16fb4271c167bd92fbeb15f10a6d721e2fd42b62b6df1561e5a1344edb04c6b51654793a8a9fdc5f87fcb429a3824f7c035cdb9bf2d94157bc566b53073b2d0f69b36f804fafe57ebc053e9bc694bd866572f86c5acef9e9fc27d2d7cc5b994d22b46f5f31445094b40d6d827324d24731a9e0e412a05c691b7ad2dc9874947b4948611fe4d6e1838229f78bb8be644481cf8f5629620d52844249eec7f76d08fdad2178a6fe27c3df3ff6d3d0c08294ebfeee27b2fc5459122700138f57a2ce11553e406c099b6624d31c7ab4032d531c350f21d439333e43086921621c3f1cc620aa79c4625b5b308023a3a3a42d5bb66cd1420b202c7eeb45f1e55abdd77a71f5a24ab52a6770ac9ef53dac52e57a572b8b2a107ccbfb554bf4ca191cdeb7bea7d5fa1e5679ae903df105b37a9dad77950340c2ad7285318b3fd312590fb45aa98056e238c6c49c80c61572cb558e8f5f38b76262621e8f1f33aec605d4ccc2388e33385a3f7e4febc7b2677c170b333858dffa1e9c55df43db1cdb84c5c4b03acc228b93ec243bc94e322b56c026b0096c029baa54d1a2458b962bae08927af185f270e87928d4cbf55e887a2f7c6ffc10f59eea3faf56ab95caf33cd47baf53471e3f7cd4eb6ce1730864b2ea512c55193eea43d4ebd491511fbe4e1d398c513d0a55eef8d587e50a55f6b0de0bc35310d587a7202c9677c5f03d55c9f25c2f2e94e7a15e64c2171f0619f1939c62eac354102f955ad5d4cc982143060dcdcc8c8c4c4c0c49c2c0b85cadd638b258ab954a85712af5f282428962189e4e20a85295e737fee9c5c84f3da531d59fb7f5a9f2ecf28ad29b97f2ecb2f7e32b7b30e53896aa9b574f698eea57abf74c4f473e77dc0fecb8d97533eb3d95caf5aaf27c55ebfcec895fff66f1715982f8b5e6d721a3a202071507dda5b7a674a8e5fa291d6a4ab8e098d518d37ad7bb5c30303c5a2f8eef125f9e4c671706b9805c3066b14899a6a101b9a854ff59f558f5dfabc2564bf5acd6e35679766e3df9aa178b358eaed6c33c8a85bff5a299d582294350f30aaf56a3eac310af5e9d57e559592fd7b75e8e62bdabdcf196ea5763998385552a159e098b58610538063806380638c694295ee09915fe15fed5aac43bf08b21a8c9de8ed66a0551c45eac565eacbcd8d16aad5aaf536cadbc5d14ef87bf8b1429a018a018a018a0185450e1297569ad5efcd5ea15e35aad7e5cadb07882f7ae1f5f7c893362d9e3b9c4c7e28fe53902a6ecc18c3118af4611ecb2eab25a7da025b6ca735c89b72623037659bd4a35fe8af5eabc529d2bdcdaad793bbeb5abfaf114746ba9db0898643c2523e1cc14d6ada3fe4857c2706b3c496e3953024ef6c7c95ece9460bf874a6941aeef30d41ede95879f2ffdf449148e547f0d120c73f1fb3c12c50af638b5008e54b0a650ef7deae5bde0a0caae047dc7c1d7f919c707703c9d934ef8f4f33fbd7e4e0fa4525bda77540f08d9fbefd50342f63f01846c65068054b3bfaae7de7b7feffb8729323b0c05c1fff4725110fcbbd7583fb027e979a5d866d7a2a521ec3e7cf7f7140c20c313204d4ba04008110ff81495c20a48bc604b0fb618048103cfe9bbb2beb0db7438bcee48488b1c4539698ec812cd152192bb7eb905afcb18b25cbf47ad2e84954ec9d63befe8c7c22b52f5d84cbda0fe85024c021f3f7e62001204488612cc684266a0a156830d370c31010e27a099669a69a699664c02f7e13ffcc76370201ec4815c062f81cf9ce6427c06a7c16b5e83dbe037f8103781e3e027f0204781a7c055e044bc88af80c614406ffa79e84dff9fa469e2c0a6d018cd34d3c641e7a0afe8a5aed258b495bed2593496d6a2997a8be6a2bbe82cada5bde82fbaa9c1e8305a8cded25c7a8ceee2b29e42632de50634d6555841634d05151aeb2838a0b19e220734d6525c41631dc5525885c61a0a1634d636b042630dc5151a6ba42c68ac9fc04263fd440b1a6b27984e5bd05837c1058d3513f4c6bba0b15e220b8d754e0b8db5132f68ac95f882c63a8926100c1a6b24c2a0b13e420c1a6b23b6d05837e14263cda4c7a0b1ae4177a1b15e426fbc88def8fbbf4ed02a4f921ccb530996250970cde73f8d551d454b6ac0a489114720619484124e724b30d1c491134f9e4082c2065092a290620a9aa578e07bef3a5589daf8c3603838a6f9afa41472c1d5bf1377512da2311d4b684c0335a0b10c30a1310c34a1b10b184163163882c62a80048d51c088c67c92a0b1092841631270426311c8d1980a4bd0180498a0b1149aa0b107d09b46c1091a3be1098d39e0091a6b00128d9900058d9560031a6300141aebc911058d2d400a1ac331058d911085c646a082c61450058df148a1b14c6f64ce2acfef5b9527c6aaf224c97fd3c4c181e5ae324a6fc0d7e13a95da80efe08be549aa32f86179e2ef95c1d27eadd97bedd09b5e92ddc6aa3146dceede2d3fdd0f2ba1920d7e2c91c77bbbd3e947f53cef0bc3dc8f213f8c54103c89e2961f3eb008a5a4544cbcbca43026ea8c543e7458ad562c162be783084d894258af41d6fa17b0d980dd1821070a2af870e056b25f88dcddb5957232dc7232982027c30c39a02b39a02d392028404a0029f9016807a0222f4037e48084e0972eaa30cb6a5462893517648971490b08579016c088e338b660609c7489920b92432ec80db92031e48068c901b92207640a1a1a193366e480ccb69465071d7470452e0629723138c9f948928b2117432e86dc4fee27f7a325ec4017a3dcec496ec6c45b45aceb87570e8813796cf3deaeeb723e6839204679b435370b22a4c294fbbfc76208fd6014b8b38779c6e31f854ea136349ff7062ad75c513d3e54a13634f7f8707ad51f8ba70294fb45a7f1596a6bd61f2db1d8a6b53d589194fb69b0f84cf029b684e09324c527f8b4f9eb62c5ad6623b2c3fe88692ff0b0593a84fe13157cd2262330b6df47441755a5aa5495ea525daa4a950adde99717e06ad381de0401d59adbc89ec06755aa4a55a92ac9c6cfb6d981aaf4c97654255955527aa18bba21612bdd1067d8bb92070bcfa3ffc3268dd5bf2f1d6ed3cfe3019747122fcb9d5bf6e0a9f9e505b8f6d725f4a6bd72a612ddbaf296d5e67fc232cff70496a1bf2393d92a7572035cae4df0cb054bdf9be0136ca6325bcb64d038228e8dce874f0039654beea7e98fbab545e4585af21c4cd899d224f78fd032b7e5d6f95241e01915ee4c0a94e767690685ee53a0dd1fe9ca6e729bee57a18a506d3b39faeca59c448b6e9cb4686704d80d9ba5c1141ace7efd6bd9426dfa4e13754c14f86c1c912a37510b38a1cea14f55992ea9af0f0645ba6f37dbad8494fb5b080a3ebffcc2036e5b9b1fee731b2e5fb64747589cfa63c3543292fb6bd0a29c9923f669f61ff3c5429bfde00c571a102a0a3ebf9fef23c9aff1409e09a0c1529872ff98c4be933be01353ec8fa3956b766b63ca0c8a20a9953690e013a7e23486b569a34d1c384fb0d5129efef5dbec166b77d7ef09f6ff1ae3278528f78b15e58fedf70194529a546f4d6de441f676b74baab7a636b297524a294daab7a6d50c94524a6952bdad66c0f59d524a935633504a29a5df4c4feef2cc1f941066c9b5ee74038ea3d168341a8d46a3d168341a8d46a3d168341a8d46a3d168341a8d46a3d16834db4ac2f3ac2dc2f3acd2b5b9bd9df781a75044bda4b06ac51a5b2e183246668646c68c19cd6c6626338b99913398996b36a366e69ab566e38c355bcd54b39a9fa96678969abdcc50b37fcd50337116ce4eb357393bcdc0d9372b3b987d336fd6018d9937a3e1c1cc0300f87bab4948699cb7d60cd15d77fde9dfcead5771afb5d65550dbededbc0f3c8522ea2585552bd6d872c190313233336a5e29d75aebd75ace904133231343fe4b86ed1e2d9130aed6c87a9534360f62ad54b8ec60a6a9636aa3d40baaeb80864ccd2b6a12bda2dc7fa2e1414ced54f300002255c2e1ca2008801901800171dea704e23ea54fc9e52e8627598b8b5a8d08d304febcd38cfc8934762dad25f5bacf6128abb8bbef5daf350a61965cefeeee7edb2dd6e0ed458a09cc127adbe58314a8264142a64c5947b54c9fde86a1a902657f540d2a50a65fad9f8aa8bbe758c0822347689a689a6c000552120d34a420053d72b5a61c56d1875117445a8638d1f2939d64c992c34f3cade7dd5ba2641411eb0f1e1549b83d2cea7e87f2b7f5be4e9bafd723d3b1e61e5645dbacdf09de7d6b14d227f8a4a94e00b54873844f1aff27bc544d1026ee7650f8723881f5c02acc083eebadebaddeba1dd08b4e3728f496701df4e646931c5214113c820a6110c4547f5ae7026d53dfaf74162af9845da9439a0a2dd326d8cb77f0c228ec043eeb2d0bccfbeebb7750a84cb99eb04c3bd8eda82beb0de63a15f74eda5b63a39f85b599ebe77514b4c5e4425adbed0d8de0ce138feafb348975805a01818ae001fa41fbb44df5f9019f6deba6b6a136f541f80e90ab2781cf8a5352a354a49a6b82b3354cf059977e0849ebfec9fd75cb524d118c65b4294608dc4f95927c7c923a6bbb6e42b304f6b7d19b46029f34c97d923e1372f46054c38611e89dbd016bb3853ad7b0538df2ededc85abbea5509d324bf6db4a95f90b5ed969b742769daacb1019f6d6bdbf7614c92b65ca30caf3d81de957e5e77c397b3473e7a1551dbeb8ac527e40b4241f5b0a834bce4d08feca50bddbdd7ef75f7e161a1fee18d51fa91bb741944f17050af5851c46f68f2acd86f1fc771c8a8822f6438785c78def5ac07e469a172bf1c4677dbbddbbf9e7b96f674afeb89cd6341f0743a7585a1fa0090503dfed79f3aaac7ff03b7c4382608ad7f87ea29e1fb40106cef2602c698ea1f0012eefe2ec1fec82e74dd30e46e6bbfd20fecd36e6bbbbd9be8a395d03fb20b5d083a5bcf7fe06e1b06f6afd9bb7befbdd7d2bea299c0f8fb3e130513c7344d25f8ac38cfe57f92c4f8fb4c00ea6ad3a10387c3019f2d6b99ac65ae53a36deadf206a5294772c8e695ac7d5245b569cdb3c590304c6e50a5483da6bd29bfa7df40203b1f36e3bd1022987993ac1e2239f349ac0a21f070a316c958f0b1330866440c4921f6474f1810510367cd14517358071b900ea41c40e4c60d10477040b131e074cd1830c86b2900288925b0f5c521128800839e9e2821018e9a10b2290c4a094455297c4139cc3039ee4bac860a5042da8821aa1839521a880f203085917611c5d1f968a58b2a4c4ac3176e32521ba9786080011427648820a961ec6c8e143c80f51dc808a24349e9e819325a17c9a4760fc481fd327a90d559e7eb8092b548b262444846062ba81053c3d4c90c4881c88a0218c22aa542ebe9a439035024a128b49932b43200fb99f467b5f7522460e2d8e34620409431452e56db0f2dd05b8e26b9fa29d9413f8239f7eb5dddecefbc053e8a56a68e8fb39ddf8abaf254cf52fce2a55250e5954c34195356890a8ea8217df21652f111dd8c3a9bcd666fc41a022c4d00f6ef8847d3fe2dbfa260eeca866840376ad61fe2a7c82655149dcfaeb1b3d45031d3aa2b754397040a4f4e97f301d6209731b12564384cf5aab4a4ca2efac35ec3615663c01795d3cac60ff8aafef851343c904501dd4772a9fb0b2d628085484aa03fd20327e90849aba10621262126a126a920935093109310931c984b6c87e64424d42598498849884ae0865116292e143868f05d07caded509f68c736e9efe85b92a2f8965aea9452cac477187f29c0f67d866843b4ae9ce9a95d72579e5dd7dddb7524beb7eb2e8931ea3b22ba74a1a4fd72904fc3c4b17163670414ecfd30954273ae8c0c19f69924f8731bff282e0817742fa5f4e6e26c38dbbd3e389be36cb820c705e18270379c116bbb0e77f3c121c1dd1e676b1d12470417d4281f5c106e08892342714ade122e5cc66bddddba13a75941d7596b2dcd0a3adb75f63ffca26dfab4d96f51d65a6bddabedba6bddddba93bb05f6ee2d677a6a977ccbf3de7beff5acd7b9e79dd7d510461849fed98083dbed84c38144b8ceb1ef3384f37037ef7623c2212112225242844382e4d6a17c866e4690d8db6c2987344cf27237c8320232cdd920cb3e4320a55bf0fdfafd600b3dba1e5f39d353bb645b9e94de589fa1213e43433c1409b6e6645bfa0c9d35ec5027f80cd17c8668d96728a84d9aadcf10913669f619b2f90c1119927d867c86689dd323d37c5143403e4335f7d267c8bbd6dde98703cd17345f309df4c3e49b38f74b84eec8ab6d61547f9274d2173ef85dd446dfa9fcf0a9a43b4de2b31a65571d8169154194654ada1ccf71b29938366eec8c4024fba3e055c997ba287b92b0bb6d03689bf7d579b691b227652fcb992ff7c8fea00ac837718eda8b6c33795f842e88b24cdf913c4ae9496d36922365ff7eff3e4c3e4c6d8b2d558c31d25194cf8edb741280b94de7d349388f294a027de436fee68c0aa70f3f2c799c4cb7e924f06e639fbe3eebb5d669e1823a8708923321c9fe8e840a1e7fdf4286ecef449d93cafece452e3b2d72a3d6a13ceefee2fda9e4717ab0fc50d46ddc3defc836bb07bf07cfe995a4fe577ea17d9d4dd4b8a5b32ad59ede5018d08c0ae0073ef8a98ec0272cbbbbbbbbbbbbbbbbbb7bcd83dce637577a09237c9274d2c922f0ad73587892d4d9113a52922484adb57a83acd650652fc0673d3afa27498c8f409001d52e0c0683c16032c06707c982828282828a82faa893ba19bc2530180c0683c2751c077c92745276f3b2cadc4626ab61013e61dfd72c8427508b4c269355d9f729c10cd1236e85d2b90ef8fc1c6dfaf5e123dfbb01ffbf1f8131c8e2a3c9e2a3c9e21381e7dd7b6f5773776bf77eedbbbd5df77d5d67afe71ee4074eb170eade24d76baddd3562b1c6d06864b58cc656cbe5728d2e56c8c402ededbcefe630f4ba1cdeaeb3d65acfb35ecf0966011fa3a29e32fb87a0f5ae4110fcbe4ac317dbbd583944b15e54e00b4eb1700ab3542f2ad60ab562b144db512d9460b1c6508991d5eaec055763abe5125b2e976b74b142292cd6eaa3b9c262a9302bc57a61a15822cefb58a1fd581fcd958f05b2a49cc0efa494527abdefbdd7bdcff36e78eff5ba7b6977ebf70286d7ddcfbea43e9c7a41891ffe5462088260189e700db5d6d05108501daffcba9ca23ef54a5bfad3e81c9d4aa46dfc8d64af09597ae32f03043eeb1195d6a935b7e9f75ae4359aa2259c05a4231ff0519bfe4c4526e468d34d27db86c9fd61a6db3aba5e4099ba4644485385524a69aabcbbbb9398228531b306a0014029f6c0d2b81d74a5f7fa1eac39cd08658834a8991799540c265530949e94524a59f7ba8f638be55ac1a8481c9392799941d18832c219a71af0bf9757761d5c1ad603074007c014298d51dc6241284393da0e5adbfd6304895a6bbb178d6da24870b7b91a706e240441cdf58665c1da1bad7353a35884e8843cf555d892ebfbd080a7be0e2d86c889c9f53b80854aaebfc28e76b34392ebe37430c8b5691e616767e76575c84a868d536bb459bbd623f7a979cb1b376ed03c41d28cb0d3376eec8ce0b9224b9d0abaa328368a1648e413774a18819fc0c2841c317682852874828588102c489a842c242e8a09aedf96d21820b87e7b8f5aeb947035c36a862f7fafb3da2a5317792d53a54c71dee77d5e531b79d052e7d19932a8448c9a6b62ea900c0000400093160000200c0a064442b1248ac24cd4cb0314800f67844c60502e1888239114066214444110033114030021c41066906186a1e30d0732ccf19e5efd94d735aa43cb1420619d8f5369148e01b6ff505091e566f02dd09d32fec6f5522eaf52900788b2be7ed1e0ee865f7e148e7a697838108b6ee04256641a9866ad4a4700396d221c47d3a5fdc24c153252e302c4436d07c47c6f4ff7837862aa29546ce16ce75e82180dc1a1b15e5c138267fa46a1b7a632aba98d5020c019bbcaff4cda1f9506dc947fc24f05f7138b1a09c5920a1aa60cb0aa5b9dfd31ff9076a1e6c0b335e1658ee0d0ab30b91729caf90d3a614ae38c761d2ee57bc6ee29a8a8df87b3496ff83372aaae79f560672d906377c6f062701567ee6dc4dd4a59a3eafd6a86aad4a57e4cb90a8135a92f56ff55525c5c815d31a41a48527b1e8262d3376a05cc40d5874642e673a2940d3d809add648d744ece35e82d010ed30efc8c064dda955a1778a946b9b96a7a50d2bc99be27af671c8c237b62a0cdaf61cc043acb2d0eb04f6519cefe4d638a871d8b8b3cba8526f1bdb96f0e5f50fe7574b19544cab939dc2e1b6c597caa2856541d22ca275695d2e923208e463bf067aca8d915da2c8a7b600baa958c7f0e007c4fea5405ddaaaa16035ecd2fc3c94deb1e37105e0a4d1339f1439775076915869ffb2b946d3449b7e13ca74cd7ec15da380e2d0a05c78f60b49028e915c939ffd0452d46a191e27d83821dd965b2f3d435527a0df417c999875599fad2d18db5e41cf49689d2fc1a238742e0f61ee019a2f9c85525d8e5b0d80a49df6fd1455f7b0129ea24f6ba728532d94b08585a65f38770fff4a3859fed9af8f96a410b9189a8d288f0d14989d0aecb836308317cb0eff877ff7522044125cdb68315542bdc4fdeb798e3f8ea22cc9d6cc123241e0cd86d97d84d753103c23dd1e5cb2c974b359757b949708257a8afd87269779e97993f801346061f9ed44c805d05945336b863f0c632bd40a690a10531fdbff6475db254c0fa65504f035dbb9a024b610f4660be2d94344d9319e0784108203a395bf7dcb04e0a796583d04ca5b65572fc147135c2790e571c8552d6eeb542f2dfed43466b2509f853a9cdebe4fb78aef66727726d6584c76c2704efac4e88b60b95bb7d8d243166a84dd329ea3cb7f2903ecef6cc2e229a765a0c8b77de8f5155d48e3df7f64d8a463fa0e90d9c77b5687b88cabdfba1b24fa3f0c75f4a1c4cb9f62fef5bc3b5e7a810bc1364355684f8985d0110e82f618ab0b2d89dbe83abb6efc0b96cc289bf59a6d7c3b9ac62d422b4f1b16e4dfd8328211439106661352e0b276df6dcd9cbdbf4dd94eeef5d6e705fc52a61c487f9c92b3f180cc0cabaa09cd01cc1596dbe8ed5721b59ec247379fbe701a2f1a8c9a4f5f419b53326463297e56d082374bca34c1e56ccdea452f35f3786561d367e80dc3c8561c44d31e65327539377a6804543c81150c47953b147888dab704b03f7c9bde582e39f2c9a3d02ef99d2a43519dd2f7852294010c9128c0945fbdc231cc5ef4cb0284777b1061262b749edbee10db4c8ee803f6cdfe907d13d9410bd0e30769e14cb08313f01ad1529b2b4b609170d8b125e9c6d57d414623971fbf8cc57255936311115779dd131c7caa55871bed9a8595e33c221b73739e22b47ca72843047b839f2319acaa65e692c0c76b88e916f44fa8d0aad20d79c8f8ba0d982ebd8c529559b5170b84ff1821c9a19f0e3d4e90744b20a7605a5e0e9500210a8fddcbd9f9614bc1519a099af1ef67c1a170ed11ba24d92437208c5797daeb34e3be21c9e882e75d29cc0e953c0a8ef4118dd10e26facbeece85d9492f148eb1a652159337199f6c796a4c31793f5b84a39ae86a9fa2f89295b59e57c31175c53ba97e661e081ca6c3493f594b3216d767d25ce69e9aa663bee1d954e039d7fb4228d2dc8d805457370b9a1f6aa16068e02c4c8cdc5cf71148938e5f5be122049228a31aa34b4b456ab03a663c6311049f3362b8a8f00c4cbda04a3314be523cfa5c168c8504776458611dde0b5250a7e1952acd5a85927d1e7b92c4c44928ef60e0f13223201658b3a183718e15108f33502f4189d99fbbfe59a8c1c3c05950577304b1df0b4e5eec769108326f9afb20906a54d61ca544c820cd56cae0fde8eb3ed01e7d87975adc17ec9784b640b5d22e8eed095795016ce27ef88038a57a2f50be1214fcc2daf43d9e7754a25edacdeae0592f21e41307390fdce79ea2f247bc74b59aceebc7b16c3e790b2304fd0c8e2d7ca2d5d4782fe5629bb605155ab3345c59c0b7474655e202048fbc385a86501e4093e73206625d366a43189716b6027c9d24edf18b74ec976ff750f4667bc693f44292fcb258c6907759d1dfaad08ca8fdb0308f8d12c90679805bad33eec2a4a7e4b4f4826ca2bf706d535ae08323ced4986a90ed2ee1357f8c6b512249f9bd85a6a85e8071640888411ee8f0df585635a432f41804b67582a4acc5f3f34abd0b0e7f0e0692c530916a3019bb6ea267bd619a49c54a699161a9695fd9b4e6aaa0206ba757e8b8cce10e3d292a2fe97d62215c7bf30959d1305c5f0a99707ae73c66e3f2e37645ca875ea765b027df3f958ed26b069d36b638af354043d5ecc9ba97b41f2403e8ebfb28a7cac4b7a055a05d4ecdf0622dab19958cde3af993887ab8172c876a04676c5580230658b291e441c7aaf6bc1dd4d5114f45d560ecb479fb9fb0b657c2c21f2a31dd4d852243080d7575c54616692120b46abda4949ab6e9da08007b40d088ebaaaf0d48090ba3ede289bf53ac8533491aea82317616890cc849f200418548d0e1783b4d49d04e228695724fdd928d6f3038294c4cacfb0a2aacc0f4f5c6b47059317fce55a307e79250fbeaa69a88d7306c57fe8ec39fb9b79c667aee6f319d3dad21ae74a57eaefef16d7924961ce6f11b8336796ec16a4955648b9f94dc7f1042f2ad29f2d703a4e31cdc4a8aed96dc8270285c4d01f56d31bc2c43bfbf59cd031dee46503570b4f7065e7ca8017084052322f78ad2293ccf28af1f848173b7aa93342b56c6597004173462b3771aca42df85d673aaad43f93e8fd3bdee718d6a9b468362835f7f427b52b14aa9a3bfdb12ae14c8f3fae9137b58c730281a062fa0cd629e9f409a499ad8dd07ccde095c76add2c80d6e932a804230ecbfc3bada2f55a5a7376f867c4683b1947b2f7dd9ca03788b97a336744dd18635286e027228d995c9273aa8621da52778bed3317afc9b8ca8cf67d3d9bbb450ff7ec59f844429a86e6444734461c336ca77f1ad59ca169c802f0824cd0a73427d8d49ea4155e47c0f515c15218528b4ee4189a16f8d57f836e14e9360ea9e32d211de40ae002094b9fcb6f38e529ea60375dfc0a3b729f950bc4e5f21bd4f10094fad8b97724259298b281aa3a5a39b3d8d5a15b3b70e0fdc7f5354de09e7c51d445a218ca3b4231f0a9913db58bed4bd60d8641af8f0b870c382ebf9d010106e097571c7772574da4b4569357050b2832404774d671f0c03095cbff29883198f9141a0107013f217e30047100557884cd1d5dc980e4853bdb0837452b0db66afb599707c4eeb0363fe052fa20b9ce895151e76ae2ac7e81eb774701e529e5e636c0cf3eb0262cd53eac3c6ef44aa84655809f75d9c6fca92554e2155b6fc65251f207f0cb0a317709292377d1b3584241643fb710c07fb1759089f95e53f1282d16223c36d832e66fd5f41268e2c95657d860cf6669a6e51130f62a229f81678052ced347c84d810ae172cca8d863e6c579687190a48c062c5239ac3341805b2f6c85521ef81303b49e94490b31068ab708c2833110c9285b50815b30f5172666f33211f4f550db84d7a2487082953655cb227ee1e79ed351b0b266340d35a718522e431536118fb703b60d61d994cac818ae6a214e3cedd2365c9844bd7680b48ef8b00d273297270272068006b119cecb38dbd6c3da49dc21c44416504383d7557c5332d8424b48719a1c2735fc96ef5a7a75c3c2640ddd50c25c8e0a9ffd90560591227f07a0eaca3c309111d16045641c9822428013dba25885851f9c0d06b6906f83dd2f6c2ebefe7d11dc7fcff8568130fbed9110deb623161e68930948689cfb166385c6594465806fdee3b10b50b3586602fdb58037e1a3ae011882bcc4057a62641c2dd241bcfef9edcc76a182b009bce3a2d2e2b7008e010422fe666d686372e36079f250c1d172ebe263bb8f23ba225b134155c5d738d753cae4042fa8142d0e93cd5bfdbdae5b4e7766eb32206988e7ec6b7283c1d1bda0695459f442c27817371adc48fefeb05600ae298476449283f36354c599d54133b722c3e1e26809d255453745899917ace9cd3ec0ba937850bcc0198301f310c831c7efad47c249a68a2b0bb937dc952f5e167240117eb67cb5660974d182499b4761a2e4c833844e4eba358c936920060e3f27c661731e1b39c0e133312ca3f358c80508df81f16608e7ff8393fd240b62cca9a7862fcbc1dc4671adb6a04c897387a8d485da6278d53610070c9b13c361398f8d38f0b099182dd7694c880584ef8871734e63454c28dc8c1887753276c4406398fd984abf7cf4050f8ed1d0c6e413effceeeb6335dcf4734f2f83588d5109870510a59cae733062baa215b413417cbffd9d97c63e8d1a5e2d6ece1b4e8d425ce34ae67e288934b6964b27a4097c82625dc3c3bad422ad7de5091c92507885ae904505186ae333acd1d40092b3f89991d9c9f0cc552397fb140bfa999a2531514f233aefc0e35248c3c1182b8f1347d0c740848c6fdf88fb7235766f4195bff9532da7805c5e6cf27d84732f1c244dac366d195601b56a5ea83a8d168511fd0d15ae880d4c976f73ec888b7298be769296580525c408c8de7a685754eb545385f2d606149a8e619396622dfa9c9b6c403dc3165a76b9aba1a1d5093f534b7fcf89710bc29508d0c4ce4bd403f65aabc562c97e5f0c7d7b50542e1d901f5aa4698252940da5f3d580439d0172fad4d9fbd5d0156e09d035d4d72485c11abb4ba43149d96d7a7e69edfc61df3b0150c472224de08a7091eb03d2a7304b902249de7ce8905576a5476c7968b1f42c0f4d9454c5cb1b31a5b084d133600aa604dee6ed6c927495bceb225e9d3d702446a1b827292c642a5905acde6610d0c0b26d3a46264f4189cd13e90796f35becbbd7aed9ab4108415adc4d4fcbba702f1201c83ba466eab6e5495875cc690bea6113a0b49f0aa39087b9f203888d18f3bd733960d8b5741f130b616ead353e4eba4a3a32bd36820ec494b4cea50c83a72a5dd563f88d6d3952b99e924e9586be895327c00da2bf975045a3b31006e23973a8ca26dae8501ba0910d1049aa479fb45dd69789809429ecc8d2f166ae2f9b392a639ed03e8879cd42c04d22fb365fe8063a13b861222626f5ab11fffe17f504ca07d7be445e82e1937b626642d6a1ea896d6d562559522f7a4e351a40b0a20c42ee1d8258367440d4bfc998de733f841c9d27ed4aed57e2b1d337bdf8ffbd607cfd2c50be8e4bbf138cf7af04cf3f71eb67c1f2fa9190d24afc7f24705e806bbf0b96ef4c88bfdfeb30228b0f8663d1cb6529bee09e7d7a76901e76397cd1cf716739d4ea2c493636586339a742bd74e50b971d35d06549d708e90aaab9d6d8980bd5b14fd8b9a0837293f530e34fa5c1d4548d6df831b4549778ea110dd962164e478a83bb86aafb250d1e8743416d1af2390e8078d3d52e253f2d9af3380e817ed1e0776c085ae34a940e8178d3e4756008d44ea3767ddc0f80da35eb711006dbb94cc67d8ec220dc742517897808f485ae743703f87c31055be4213f406a7eae7889297919254a2a2a02d24a790a8179b563a9a29fcfcf8626a77cbf54700f12096d88aac59bfb668f23930e6b51759cd9879de3d944836fc5273652b17da7ade7e0f14cb62cf7a7ee5856805cb954b3e8af42d5d88d5c057b73968612ab502564a5ee70ac7f47623904c38d94dcc02a3c0255a56dda4ca961f9f7a88f3f47795f51bda539efb1fd0ad7143030a2bbe813aa8fe91d4dcc8560bb69c9c91c41bf763b51f3e63781951ffc6fa95f340be2ae54abb1c2a3353515ee76127e8d1effeb09c4d3fc2425f0b6c7165f5aeaa91761ecd09bac0adb9b84bf509ce282c16fb4021fb7360ef8cfbbf6e43d5a7f6c1d6ca11ce55a9025fab4b99f0c8f86494fbd4fabba5b1b8811c5390a9da4398fe0bd6be11a9d3e695fa103eb8f3976de233a8492c5b24dcbf7c445f0d16212973f642f99286327928cc6e9ce3c1744ff3fb740dc11beb09c8c909d468138ec7ab6c6a2f0c211cf47be033db3d84997681662a92086f92b45aae2a9fd16c5fd3dc44120f689909a0d78415fa19147ed8f7393de0f718cdc3d484b69dac79a40cd037d3e7a3972ddad4af947816c87ea1d1a3448c33b3651093d6384548e041304f47dab9a0f510d7fa1028f0987032d105aa5985d2506041bdd15933d900a35c98c25a75db773c8173daf056399b21c643d8af16f3363083594e095292bdd85df50bd90c9884c38cefad88b0d37fdab3af41086208941bcd11e7b3cf35e13e57474951a01403cdb2a861dda2fc8741bf30805e0ee39cb5d546ead8ac0920e34877c5f9cd692ee9da657f9be46cf21555574ccad8b06def703c099aed110bf6ce79f43118c7dd1e8c07e3730af90f414eb127eaae134f66a99443bcba9871be4c3bd99a1de0059547176edd32094903734723a331bf3acac40f0892533178ec797405890633c8ee5392ba7771f66dc8cea9099a9aff8e3d7659e534a82bddca50e815e38a51cb117540270c8ddfc28f4aa581a9a7eb46f7857cc79ee5213e8cdd5d2e7cde69712ded387b0d2d5804e04d0d0b94798ee93bffee2a1e25850cb98545e3cf20636242c528b713cc387819e546cd1946d9bf5682aaa4fea0984200465672ef2b29c0b98c41590ce009b652ad0190458302e567b10f075f70132374970053e03d62811d308b02d6245469286542cb8ce931e06afaf5c742407e283518380cf3eb0134464c9c2a1671e148d59a58ae5b8f0f9938de83612ce4b2a722dee68c74049904c8845cf3cf2404acb755e395aac113aab60c3ebaa6f8d0b2c62404e69000a2ba5fae9bfc742c60909dc1116e818417a025e3798bed99bbc59fdd86919c1b06b40cded300b7d4bbc2f2025e601507d2b4b3116e7a5ae77fec896fe10022f1daf676b7a2c46454d85881709c689e888729fcfb999193e72aeea48aa35cb11c3c0c3d9d015421c3e39cf2ccfb926b48d9c9cd3219493cddc5f28e71e7de03c33dbb009f4d898251210382310a685727ebc2530aba7cb513b0c33c81cef7e5fc6627d967969d5182855904f03164cf7aa5bbc7e360362ded0955b0d7e148e033eb4d0bb006b92500155d83bfa0cecf4a0ad30197e35c8efb67702b7f4857561a99410beee4bb6fa492c9835b6e29dbaf89d3d1a47549c63ef1b3ec107fe86b760958da76a5385d52b4e8ce66170eec078086e6621fb001390d3588a3abd516cc5294c57fb6c0f4d1e28b5e87f86002ac6e8977a05247119fa7fabbb32c330efc67c5371ced6e0cbe5b39f99d09b0cdc9e4c1a727d984fe4b08badf9c947b4230cd36ce85e8122b85df72458bbf170d1dcbf084e4ecf05ad1208f52fbc606400f81a345450fb138372ba75b08082abd7d69f744f1e5ed23b21be17374c11ae418d66a21428217cf5921911665b03cf991d34fae4852c1506f2c18257a7c502e9f6a80843ffb5f52b6d2819fda7e61e21faeb8158a59139e18a7876a43bb8fda1ebe8304da4c65c9daafbe80c1bbec6b0c3d0b665fcdcfefe1a1c1804e69e2be49ab55999d5ac6b3328a9042399d7a3999a989489b030327a17f46160c2b096811f3453a75f07591f43d2cea6e611737a36c2df8a955fc8d97ec6b2bbc2a35c21ce269a9e4b5ce032cf3d4eb33da347830a959c24c5cb1549dcbe4f7e184f1a2b41f033b139abe4021650cacf21309d5a1a9f0dc265f273360e048887350e3f854ad39dd27765cbc13cd2aa1f3b8fd35b8741b9a969bdd6f690d37512b96eaed672139b6958346c3f308216d9f625ce1a09d52235bc555ef480327e05b54035909b84c61ba43309853bf0db4256f076736b7462285725f05040d9df9c1e92d0298b6c2ad70dcd551d83db054380f5ce87929a828a078e3d5900e03e203e61f61fee6ad9f7f885df590c5f4e62beeea59bdbeffd3dfcc52e3145309202609a2a84c08317107eb235e9c7b1947b4fea6e3f623f748343dd299269f00697e22094bb1c2ce8438eaeaf6deed05a590c80d657d2ace8667a3d7545ec1b19b7b8ba5519393f105613788a0066e6e5146cc5d4362bd4cd4951825028580b8040b6191de4004958ca4793fd789f3983f2ebb02b5e072e2334571529b570793e600cc302a127c957a545240003afb60ebba13a19185b8360c330cee6529cc4dabacd3871f51d2f5a1cfa1623036fba3a1235331811196d9643bde1d3da213329651d03e5bad13da45723b9689de8b071a5633153a930e359e8743480ff797fcdb85845a58725810aa84187eb8556fdbddc66bf29b8410857e3155f365394bc1a545422b0431c0584bf24ec5b0a1512022bd4c1c1151c1bde49ca6dd599c90ec7e18ddbeb9d73725beb7892b79bdf8ccc378103b76333edd32bf18aee32b14a73a1a104ecd7b43f6a01bc462f5c88f6ee90a7fd05b400c1e02c826e7c0f62817be7b9ea36b3421bde79fd3f70cfc0503d7eac8b84fc3a40ac27d0835571c4070c87be85570dff546b063993e6e8e45435aa6f20ef2553e339109174ef0ad960e9b3fc71441b632b4d8b249ec0c5cf4fd343e2e71aafbc7e21882e75327d490e251433b69f25c2be0cb157b9a2365b320e73597ccbc8469c18c60959d6cce726999b3d15e42de8abe2334f95c627b04a6646522f708054ce071095be276bda735dfdb8919301e975482c3954ff1ba9225029f508f51dd42945529a9e503a1dad22790521f3b568ad2e0c47b2309a5ca8bf7412feb88f3c4d15a044ebb56e5a07aa961988d0b0c37fe59d12a4acf1ff367a871116ccdf6848d8fe14c6071300fb6e32696d623d6a227fbd246b5a293b80395197b7a72a75ac9c7df93312eef1cd2c16a3e029d5777282e0150c764e04442b384252ab72b6e3534073a881c4a84a7e5604e9d9e5d8f8b71836c1840125af1a4bf8972bebca37309c1f42e4b6d452b98e855959426331ea4181fe3ad9b4b33d4683445994838d19fc1a17685a9b5d253f53757ff922655bc9fc4d22bcacaaee321c9faea97bf31c80dcf9532540cfad03868898d8e44d6dcfe3af44bb0c26dde07cb6e3b8ec10745ad7f1afef0a4ead79a6e10d4d6ee2650901d298c0ed789f225f3d4015176cccec8e1cf9bd75a181cb1602931eec4c1cee3078a05fea4d29db4495b58f470826466e009c3e58c5911c1635c29205e8f8a3dc2cebdbe9ec0269ff7eb64da0de13be05cb4ba1cf2cb25fecd071e298c7b7abc175156981cd4130435f02e164ec5c19d9a9dbea984e1acae3ab1e5e9eda27248c36a03763d17f6859a463c7bf9dbd6957e7c61e76d48875b20b420aa2c2198536d22fa2bb8a2f9c58b5a2f523747770d11997299ea12eccd4cfe589c04fa92f10292a464890fc42f72782ba51f86f2d73680bc76d8cd3f1ecbdef3bb622a2595c07eb499bafdb46161346236e42998d2478aa374c8c8339c97229ea103a91b804ae1e39d19419599437f759e816fa271478342855df743426736267efd2cceca89cd1f39920c3e711f383462cece909518c7a0ab1586fa8724e752a4fb587a63336a91cbcaece1001defb3a6a979f08cc7110591b88e0f298a38c812536c44ad6e2f12d2c538bc113e852bdad90794a4eb4603ae6a482578c689af741daa376cd57e9406652060efbd121731d5bde0ee9586a715691fabcb709a90283ae5bf7916d1a86b3df7f6c0850751f4709702fc9d777550eba164e8dca979e0f2d508aaa556e95b2052ef72af521ab05b1625152332dd16c584d108da5cb90da2c0bd921ba33992ee4ac1e5e128f98e62cd908966d6f10fa780087c8e8f032a32bb305f4ed3bc4069c3367e41ba5f90de32bf1b3792c29a27d9d56da216a72da61a2cb16c0bdd03c11935a58176a4f562e9a08cf4a49232e8186286f88feefed0ec866f506080bea6235eac893b8ea322b73f8b2fa811d297824d3e2498228d284203633b47a632bf9e39140ac23c2e3763b82f8c4420b6c02d395506b3944abdb4d250516f4f80068934091604c5852f53b320bd57cba7eb8cfe384a859a5c37d5b7920dc3d4261cb1ee9b0f6ace810961477945dfa6302e94685ef8ea89bcd06a29e3e1f62b16460a8274abf0eec02dd3b293fdeeb6d1fc792003d00914dfdc9fdab7897ac4ec33e81ff7edc96d5552ff4e99afdb310e5abd9ecf5c747cbce8f1e0208196d6f4542c7b65ee9c062b61447107e29f74c094008599032324ca59986cc97ca339e9c75a784ec202c4fcb2f3591cc549e45f9825b4c26d7763a2028c3f367c7ff485a7a21fee0757abf7c245376e40f4eb991600b1b71e610fe81174e68a241d8bb9047377504b38d7a6e6c1b91dee68cfd2e12081ec1eed8689da461ad408ca2f0167d48148450837521cd234deb66e8cac9a6e3f30f4765cd431da664ba6861a0adf1a3057c031fe6c7951c385c7f804afb938d6828c9fe6e7b9167a4d25c5ad7b1bd6281f36307a2f75eff22384b829a6fe22b77c5b98e7988a244c0ca124491baf92b4b56de0cd1b3bfe1bc20db2b360b1fb059b66bc22b0adfa8331f0f8c871fbc430f6b405252287b969e14268464710a8dff8eb3133e2d5b81f731a6973f4efd4c336df47e7624345fafb32c1630590fe6bbdf3fb8e753196afb873d81c19bcfe2dcdc644986dd01942ae9bc4cd3f87b7ed7d3b3310dee7a01ba294a1f6080a41bba464bdcbbd214ef2e34e3bd03d258972b04f02549714608511156c3bf2b26394e28d00fdd8a526b32da26809507f3ae43013fcc93cc34fb676b29a0146c06d090ff191d549126788a3e204ac4327701fc2fb081c8ba0cd84e616b762e0864af921d859a5d947b724f05e2fbdc24aa1e2f4351beb2af7580b30b54cbe4d2c7a882e96bf1acf2a78dda3dc1fc4800d64a3feff4c7afcb8c9e653d4e4efe1a2b8691a4da205a83848b18bbadb9303247edcbfa1dcf5ba88b1db62d31ecbf3be4738a50cd23bccb3fecfff5dc9a3124216f8733c56c25580391be532445427e44fbb9badc41319c97084970526b8023d32022714b87bf069790e70a671ca20427cfc54796fe02cc8247ca5b82aa6e2dda5d82b2725f0c9366c4a0387b0c4694de5143b80f185d0374f1bd34bac5aafe337921986e57b8ad386f2cc61a797965ae98e0f8e1bea04dae9a86a42ee09d3aa372c7cd7fcd497bfc5a980f11a9a9d5024ec91c3e34a181d06c54a0c40a41c822c8993ecfd55b9acfd58c50da9c0b12210600ce1b24a08d8eeb0af4ec095f12bda475039633d80714258e95ce1e4a9f226fce173f480863ed953b7b1b4ee6a1ae549af567102a0bddbfa589a9b7307666a73c9eda14c00b08e5cc4fcd8ec3b8d404f5f4a44ae95ad2d890a224880ba7c8e861549fdf932de5860c274659f2ef5d22591f207a865687d8144f77a0f6b61e6735eb25e99a793c3f2e5673c928c1ee4d5988dd245066934bf5656dda78689211dec61a42971c0ceda8776c8604bd5e5b64e21f841c6212ac814e92968a5bdf4b0dad08cd8221c08afb6745c76786953ae8a7fca37476cb6977658e6d429d7bd0f0ddfbb39ac40f56019727135aeb0b9ec4549ff51b9a5a5a09cfdc3635322010f9b3e06bbbc68e281762839e54cb45282a3d1427dde7a8d8b445300a228aa40c5f369dd39efb5193c6cb7c06c44754e37e5de27d08944dfbbaba0192b1d6006fa512afdea77e62f07b4d6dd6379a7de5f5413b7238168081ddd41a804928dd7b2ff7a5dda643b3c160653869c021651b41ea71643d8635668b5989a7ab31fc91e4acdf3453d6cccf7cec601b774a87218112f0adf647af90b25bc4c07ea71bc65218d8d3db18e5ad22eeec4467a78140d0bf40351dcdbe8985d9579556b39683bfc80a91988a016d1911138767fd2b98ee0c58cdf5c876959a76381cc374bd954a267d112307f31cf6a67a298ef7a28ac0f2453f4af3ee193af368d1fb0b4a02a6bfb7f9e59a82872acb89db933d44caa7400ea90eee2d7e2babcb62632ef5f55ac3dd81014f70908df4a2cfb247b43d4b4bd749c591985a47697bc2d9c83976aaca9ed64e2c0ad8a0cb801000d68a57401ff12028b04da43a4fd970c4d529e8dd333fa0d89ea775e80477bf0cac0c1f006a161cf5f1abcc3d17f855aad8b9c798f1a33ec60c077f63417d71a9b492aa0749fabdc8b25853169d82486ef5b3977774492b02e2b012192c648010d3676a443f4e20836f9910e2ca05c51f6bba926a1982890a5db653f6030cacc6418ca34042cd38e2f780623eebf80c28821a65b7ebfb9f9d0fb409cfee8df6018395e123c7dd9743c5b9312dd04a052c32529c5bb9678c667db748b37a574ce0bd7340f1477ffefa41c1817c51fe872841372fa425c4455f14e3185d3a0696856239c6fc611459bcfd6ded0f6be78d7f26931cc6b511b922a262488b4987072d2a1f2a34a80c9132a172444bc447032d15d3717c8da9bbc1c9e99384699f1b18481a4337a92439c147a83a1c848966918141a4b8fc9d96754e460c590fa8155ed81714e831dca90b4ab8478bf30b02151105810a818a408d4041a244a020a12051905110033dd5c290f34604d3104fc32d7782e483dc3a0f6558d9934fc0a045f252ae7499974337580a9f86a3b48a8fcd92b34f115311d9b027b658f5a6bc54a6210d190d869c9dd8589d93d0dd8fe73b0c59676c88890362e893426288d8826566a0771a00072c1ee65672f011d1e991e35968e6358afad8969d2b4ab0ae7ba0d8de2b5031fe25ac18e735503032cf7b8445ab3d5dfc582e81f4edebd8bdf31a9359e101ba665975ecc722d5583f9e62b8d52739368ac8908fd1f73d4bf1f51f26732cf94ed00945a0927029190fa9f380eb882a4b2c9ad4b8c348521725473751ec3c4ce8c39e255975bd25053b4a8967804cfc91bbef64e0453e5e979d0772f1c2c898ca3d0fc9b9c188ccf82e3f1fc882c1fbad7ab1b2f4b211984346906f4f9e239c097c16423cf3ef000967482fb8ef870d076e2e0ec8807b849df467cb101e41383e77505bc1abbdceb73da500a7cf28e01bf91067002ca8aebf1490e2ab5182d8bea10b2d9bf48ce18244d3caf0feadc0eadc40755ba8abd1472f75cae4acb445899bb950eb96c413dbefb148f8469e5472a7f2f7ed35dc4fd251430c72c9d3574afff6f188bb296d77fb338f16bff941f0ad7313bc7051f740eca9b2aad20aa97e2723d99499f08250d510e4874a2a708795d44d07860a20b786d92d70e6fe7ec0f7ca708f2d35e305a61602c4630bff043939c5373d641569c48f0a7feff4480164e66a5777e34cc0981310baf5ba89d4ad8cfbfddf63e2616f6f6920b2d7cf55c66b088df03a37f9adc987c5eeb1345d11bc5226439d0b7c2e910fb1a2b6a36961209205e1af8d2dc70f4053866d2a3fd02bf9a550df84db536d5e09877646a565e2e38cab753190fef454c738cc72073d204469feb4e8a31f74039232f5539a64b39630657f6495eb191742c51dff17933a2218059da4d09cdee7267c292278d0a986638f4cb91abc770a663e6eadde6fd6d95452e45fc03343c71c7456fc6fd1e3646e6be85dffc8c98c5763ceb8b72d98ccbcda3c989bf000837a6dd8d7984e6ad0a788204c2b2dc22d61afb6e465267840413d223222eabf48879c99716fecc610b31202931350319caf3674d0edbf57d2f771f584d021529e29a22064ddd6112574b1c8554cbb82f74cc33c3aebe2317e8b585e3226a8a597d23f469e0494de5886ee438b2a563f71f3d2cc6256d1d0e3eb7389370adc5f24fd72f851636cba1dca96ad0970e37c0748e2b9e22c2cbc3b086a5c8d45af9a04581da1f6d287e725eacb0592d28d86469d8634f3a8a1171f5ed8ef6ae5c334adc9de073af0f25d082dd19d22d38ce37a965dfa4d23080be7a66b848d50373b3f72d4febc7811df817500fd4a4e7d1c341dd55a70b3932b6f5be643091fa1369fcd0134185e1f26cb8dc07eadb7e25c48bfc50602eceae76da5f4fe3ed66eebe60b1ba654c7a34c2d7605f5f6491d4f672bcae2f71c450da5fb3814691883f1734290b3b6490b3b39146c61842cfd4c2cf8552cae6414f7dd7eb6685aae594b8b77bb156faad8b3224a4d862f38671dc44536526a3298162d14f0bd44b67b6ffb0162b0b2e7b9309a0d958971e059a32e1857c948264da50ab27007c0a74219c0b072b0f73e6d1c645ca8428937468a8f6d63a80bac71744ecd5cda6b7a7345588207eccc66372f81c81b921f8983ac097926c28883ef4ef6225c5a247ddce8a3741bf50e376160923cbcb3a139563b763364452a27abbbfdb82bfda63851b6648178a778ebb0b019cafd0b71fe313ec095b792e20e75fa721c6f438b7a0ff6211a78a915c43d068d9401099ea97b5d79eb16ced7fd74c046ae11ed99c62ea2f71ba1fd3cbfbccc1b46f6649a0042c0bae093ec59c8ad7834216c85e1657b841fd846700d1792b0b15671c95de663d9445662da856bb0b96c5e3a19c508dc930f05fc0497a7453f0f7c7ea1ebc811348c6954c1692b628cbf053482a2d737108c059c428fd021a6137c17b0769c74a5deb7b11798720c5e9bb41332f3bae34ed4d5572cc2e21dbde0bd6968a42cbd1e52539cd223bf6761ee6d744bed4fbb43420f6aa71735c25dba49944f3504bb9d32ea8018c3589d45530630f0e8e3026d720c207808762d473368defec8b10bb09944c5bf08937ec6f04288569b13bb13921ef065a6251f4e41c908bb948821632360a8671f725ff52d06c2d6fed803d67ea43fd04c3420c1ee0902021b12ec71fc28b22f20683eb9e1f122f7289bbb6d5427783a9e75b9876d529df6e63a5107accd39bb35dae09b0dfc3085b1b27341354123cdd775ac5e01bddeb708d233d20c553472b80518bf26a8914619f6e0a53ebd78b09c67e73fba4bc45c4fd823afac905756b4500f52782c5c96b644657896eb2ed25d7d0402a4a85c33fe8a9d68b64760e69365fe037a23c957043794834ec0105b07910547e1ab93419070a5c099ff559b96595f1221d2e07cd5c678aacea44aa4a8d4eac685e11b1cde347510478c9caf611056ef13b793f560e88b3a19d69333f5680497bf819e9707757baf6d0c435d811cb1db02076bd73254b305ac12cfa12f00adef5942fe61c3c992e6a93cad6ef19aedc1f33680e905a885b64a0b8aef1f0c6e4bbd5aee045e93e87696c26b7d7e372b2ad25fc50641320a370fc29be8e6651e606c087eea43b16444f911a46ca35945a74ef1b2d4dde0023f0f27252181fd5d6c15428b622b3cac36e28bc4ecf8930f3c090464ebe7ae4b49f638526a2c418b4a0e3613594c1b35adefbcc69a84875ae78cec3cd24d570d52d27e480e15b6dbc6fe65a2a8f6f927874d7de68d8e5c82502799baaf0be44d76398531629f22812d21ad7ef4ea516be67a64e4c85f80891345bca90b8e4642250f4dd1aa164722508f490a703c8b940296bbcd30d57b243c0570a2fe0fb471a4e55e4cabab05bedbea511e41000826c9d8615352119863f5e1da9f0259465e7b14ca1740ebafc525a2c6409336068f035beb518eb27597d99afc3943f115407a18954f7d6ba8ee19091540610c150c01c822cb3ac1822623b218eb808a7e84daab34ac3129267364c7b693c502efe641cb2ba5bc9f80b4a8081a98609300f9dc54ac1c0fa223f75380a9d0bd9ec5ad274b547ad0da5b811a6e285a000976060022e4486e60a8053f1b4aae42db86627f3ce417feb84e03c27f999c68ca3c3aebd353252702cb91ee5a1fad1a98977c27f72aaa4ab2a7ddf5adf8ac89bc1ffa560c0f01862da25cc6fc06b22df90845daf0ae44ae105db09253738b23ca754397177d2ce455105dccbdf89edf71324909c6cad5b586e30a6cdc17f8e6531673229c2e03a0723a9613cb69f52eb5d325b0593d5dd0505fca096b6b8c2fa9b83973d9c1c77222808544d77c53d4b2abde369d64bc3819109cb961428cc3e09d1055b9eeedc92decc368e126ec62361882a71eddbc86acee4355d31d5c4987902dcb87d244464956ea51cb1a538e7753655ae87b909c4766d39e8565dee3e5387699d05129396a5c0b462f5184adc269971175a0733d0013caedee818997927285d600361c707fa4cb89164179e7aaba8800009abf0c502439a8ae174ab8fccb82685c74aba99d1271ac5f31c9e76f59a0e30b26258826fb9f9ace80437fc162b9810c8b4c7c30bb34745f919af70cb13941d4e28210a6659eeb6db61c4742e11bee5f1d17e32e11ac59452b4139a2b6c753782de95765ac1475ea6e809e123a9c138dd50402b7e460488496a2942b49f690a431f9ccca6e39860d3a59c6d20f93215c9410998ba1da4bb47173f007075de7a3032c747c8d9109fa70b0f2e2fad715df4413a83c5ff92cf4cbde32493769ddf60d3facdcc9964073b900793c1014f74291795ac6f52d926d088a47efe9b4a460782ce594ec5c4cb0fb3b68c4ff934e3500214dac15f0f344f215391d57f2f899ef7f6c3a80b30f0484a001993bda4848490523523bbd83ff6706e7e778393076c07cacba022bf601eb10ba59dae3f518f7315541c63ec98853e51f388919c7dbe8ba3564b9a59a3ac4cf43fbd92a7c1c07e3148d2c952e7b895651713c9bb07dfe74b74ef46409c05189627284ff6b4e52ea46f70ae9997e8a3ba3d94a28b2b6ad81225833b01df56dbc7854d134cef72c44516cfc5651e7345687db20b0004bf9eb390b4860fa6553945ec98d49a8caa7c297ad4410e0dc82755a1fa8a5dc5a3709ccae471bfa6ef5584aebdc423c37a169bbaf0cf6689017c24415049282a76ad8528d5754d36ba2d4d0293a0ea69b3bf20da5ce45fd7f55ce3d91219f3c330d5347b161353381771d5bfe9aa2b8ffdb33589a0d06b491425df704afb85fe51a10718ea415b2a0acfe15787dcdd63ec6a06368100d2753b9cf950fd84379269778e2d9317e2b70aeb97a7885a095622c16e3c2a45b6ce26180ef130be24fa260afc8d5ae9a229d429e5e16fac620969750a4881f27d31cd642fefd4bdee7ac84f389488b3ab1c0ee4956a715431a5e91e7d30e99569f52f2045de5105f17a2a64e61589a15aa81de08d3f572d66519c5ac8cf20c21db72905ac623ea14617acd7b3c075bc223dcfe5866665ea7c54190541f82bad938ffb1aa9d4afb5e1660560ea328615227edaac20c0609bd6132aa72d0624e967452aed6a3775fca4715fc8a8c79519a5e097070dac3b9f2faa51cf7a1e895fcc3415f64460c2554b8fe8cfe75868299208cae24d1ff5d4f7f4300a7b3aeb83ef93357164da3a3c8c5f5c35874c333fd19cf2c764b32f659d600464935c2992bdf1b97e2bb76b36472d67a83f3c7fdce1c67c8c6f17a44616135be7f9c4bfda21fc4a39f17fc4ccf2b4821202d8222c922789fab920dfc47bcce262c1956d6c5e5605b3b8f9128cad8346c183f5bfcfcc3607a52886407651b002a46ecd328203215a211a1c4807921ac9f2f84328a8f8c67eb91ef952f229654abf887f5d4c92a7d41c8f7d41b031bd5a95f5033b9a77e95c3d4ef4768f88cae44d26a9a1797c07b2dace08b3b54f5cbf359cc4f91fe8f9cdf917a55896e4b88750314f30069495a4be4aa9f86873439098e1a7562a53dceb64b76096b5940dd4c3024e83ae287310ee68423ea868481b62b8f6c883b51a255cfe4174717011127de161f1acf64968911957932a8c94e0599c067b965b1ab6acdfb66ec4ee52459cd238294ac1a2ccebfa43f10b78c159d9ee5eb404d74ca18696295808e54399fd9c13a7b247bdc2bce7845603a56164bcb0257fea759332487ada1b45441f4540695720aa820bc92c18fca5c68bc6218658825479e3f3fdad250e16e5bec2896ab183525c419095cc041ad0943088b4293ce39f4b250c0f3524072a2cc5258445e36dfd834f13c7ffd2adc5241a53e0e2de5b4066063d28012cdfb64da99a99a8bc39ad4476a8b114a976c504388368343deb662f14ed39ef62afa86cf851cd3afc1132d8ab5f9f892dd324fb6583254f59ac033c8d206911aaef902615b21e42ca26ea3f371fd517a0cf53a980471535cc81ef6410e4c8ea2833fe37736cdb9201c2327311615a34b7edee00ceddb18563772ef334ded6e9b87210a8c4c16618a0859b3f429311ced221a2e3de5e2a807c2ebad0caa58e0d3e807a45ee3622ecf026f0f69ad4b90d31ed87b519c180b56bbb52e89daf08fb6f0d3a92eb5a0159fe4bcce5250c158120ad1c98831fa6d94565c29f294a2ba92ea1b0b541131868d88391f56ad35c9cf1e70db2a351fbb6d6db8e03312edb003c631e3027b7f30ef8d984006b0ef1cb1b0cd874bfd2f9bfe2c790e7bb93f9a11e1598b53fadddfb2dc0f722e2bb356541d111bf1ba19d86c9f84b7cc5e5195701b63d379a998c52d017351b6fbbeab9670b664edd7e1b58cb66d135d42e8d0fb93ee1157a894b7971a25f37c5063af3009ebdf3d5ae41506373d2dd634586f517f2e1b15094549813f6a7f5be14c674b56968c01079e8dacd23163b702805b9772b1d75b74d059f2c5b36e4c18440bd45876e9f470f5fb919a20b6241470af3cb8cd127b3dfc166193ca5067af9e5029eaa93279b91ab2d9152c74acb073c9d524224acce1c380fa1c698ec587dd627e54b3290705b726e997a546a081c1c03c263655682cfbd90121450854c12b1126148fbc01df570404aa2d496a48b63b71798deedb3f540757929e5b22d4596941fcc41fa33384f8d1c974f51c3899bd4b3667d5865d3b27713a2b4320c3a8135e40792b1f6b1f21f8af418f02395b8305548ec38f75d0edac668869e317d5d8c251e5d0569bfe76561cec0bad8662d5ea5640552ac5c443a0634e70aaab8f7ef2f82908de60ddc649d6be678d4e3467a8fa804f81f4ca07fc98eefb20245547ac0375d820b5fa8427b3bac96453d0c3ddc8299d284ff19b89bdb718b39b8fdd2bd886d827f668a1c98d637a197c23622b44c549186bee6bb3316c327290faed9a20ea827750b0b4c1d0cdd6102d3f683ea47b83ccbbe61d5991ea77b142515078a98e92a4ac41c652b90635095dc8ab12e89fe6077ebc2754e4a64a615ce8ca11b8cddf1609625f390e33cc88945a72c879022322bc9faa092b74bac269d513d2f6d5ea64e03b39b7493e9ae9d0de74473fbdbe2b8ba6013e5d34659849d5e764efe1268ba6e3bf5a9af9dc493923761badd790e4a00ddcf24dae880be0a21a3d4dc2840c033106624c44984931906044c294803901033286240c8830106322c74480991403016624cc04981330231eb8901c0429eb63ce8ebe69a26cf7957686d21c1e51d1272d7367e09f8b8a330660757a0b4b97591dcd0735ff6c7e994c16105733d9f4a4e05a197ca4e7332bf40ec5e158b0811bd2375a8338fac5b1e5f2ace857d2c83ebbf0cb97a0f6466205f6f5b83e84820beb0471d6e9af96a25b1c664c151db9be87442bea9611f4ea69e9b06609fb20681e6b03ee82261e0a523cac0780bb9d183b174773553bc8a475f6b173c01d27aafc63d8c2da45670f139ad21db4f7422e2409d7d9037676c836021a720be39e79c4c1dff8ae28f728b339523708a023134d79097c5f310550a4d02dc385f8c1aa900258866a68108d8e72eb138a84a42a5b89745785965d995093bc47c9283ef8cac45c893c4dbad4194c38f89b72bda4e708ff05554ec65eec28131b1b63ed5ba5568275c632064aa8384a97d748bb6a0565e2e001343c7e094736c526940976e951466877bcebaa860d1384b4a27c209ff55853ec093bec59930034397ba5116db505530e1dff61a448e3f13cb7f4c306f73bbb2c65f8907b47715c618e5a827076a47ea31132416c4994724bb9e116f2891f63730171b8eceb153045644217770e83fe1e35488550a65e3195892197ba640a73e3b3d00acfe1ef302d0974054955491d9752b823d165d2154b3bbdf547828d4cf05b906649a42c0bb6b12a2646ae20ee42bb264a2a0e4c49600579ba3f6003bbd36a615cd56a36039cfaacbca93883d66dc5f0d841ae80f6350a65a3af42dea86838182aecdd556cca7c420d8b7e5f577145a0ba606a2be775e52544613a4c2b4e8cf68897ee5039f634a14717c9e4062f3de5c14ba9c4df5c4718d8f86b4ef03ecfdb238e98a6678b630555d284a1498bc992bdf7e717bbf4953e2a28b0b04be82b60c98d879ff5652667cf085e24217240139e7b2276987ffabc5a48790d6a036841e1ea2e03f527cc0621992b4217465aeb8845432fc62fd309b3a2a32fdec40f67cef2c88056656e2519fe23b2d0d0f08c9f20729a6f767b151c12af288d9b747ce6150b9d891044f81e853628bd47c9eb148f0aad1f5247288300a435422ffe4b235587cb83b5bfee089b29f36f66af876fa9ac733e1a3ce6e952ee4afd13726006b039f4c2298dad71b15462e518c075fbcf807e0fab3380c3cedcdab9401af3d23b513d67e683e618ed9d1b86f2c9119aa550c5f1a31be3642e4a374eb102dc82024ab3dd5a5d308ec24a07fe821dc6704a3436039ab0a10f1f8b250e6767bb93370844061dda0c9ea2a0e0dedce728d8d04a4a76b35fd681e010a0a3328c35100d073d739d239c8fc56275e22f8a69086f6291c042235364f9c9de726fb9b79432c9145f05a605c705f96670f3ddf1f2d5a0cb17001b88b100d07c0530f385c1f375b096c506105bd110fb8c8d03bd6ece15c91eac65b10df2a500d0a0d5046f3bf97219e46bc37c3b58bede8b7c3f17f982af7c57ae7c6974f2c52df25dc122df9a56be3639f9b270f2bdf92aec26d78e811ab0d9fec561e59b63936fab265f162bf26d81f3d5a1c9d7b5caf705e6ebe2c5cdf7bd7c615dbea1cd37032edf9d2d5f0d68be0098f96ee0f98a9f076b5985c97c03204e971d8bad6a489b67fb0f64fa2dd26d871482725725e51e351f6d4506f544a15545a8095256df012dabff33809a6cfbba83901e8eac800b11326fcdd8006ab296d5f7b754601ffe2dcae04a26298f1de5a3270a1094ba83439e32279324fb47c0674c106496750417a5307af2d71125fb9b80258a29d9ffc70e098a507ffb2de441021f1d9041f5fdc980e91a195af6514223a0df43b099fe77c7260d3b5033f0a379fc7fd8dc5264ff0d740cf7d0c719fcb9ad40c1431ee25af0405691fd36cffcae634c0f66d7e27ce9a0875d08354b3047adb26b689b673e28f368f30743991b6ea8b5564ab74a29add469e8a9874f9f3ebdbbadb5e20e1b8a3326e2f942063cb6b5184b4dd1450b831345510ed1a080da155adcb6554a29a51b4729e59ea87e9f67f06f38f8335bd8f7b63e68ffc66cbd8b5da88384e73bad61ebdcc06d1cc7d5fab572af84c471b5564a374a2bad525d10a594d6806334ac74ce49e7988feb31c013e067cf6eea98b1d9853f63f35ffc309146f0f123023c3a601de31973f518e009f0f5e75fc163d7a62b20e865ddcfa7ae80eee7b78f5aad36bfd361ab7c54f9a82961242a887263215325bfc88de54c55c6fe8ec4aaa24ab335bbbbce3927529546f2e84b140e39e4a249f4a82807e5a22e58a7842e4548e00e7ec434bce162bbc8fde7452f84709db5ce39e7a453c2e86cd59eb43f9f0164ce59c3a6ed475ed40d24cfd18bb253255cd4023162600c3104f6ef3a2b9d73d2490bf272f272c25161aed67a944491847c87319e01d3df2ae8b36d75ab2dcc54a585939290908e923a87a2a2225e7ab3ad84a9c89225539e28a5b47bb285b5acd5086856f3cce932283cbe8ef7e9d3a7e796d8c1b0e257fa1e9bdf4f5094942a9d73d289654889125100ad588b29026d86aac1ec78e24401b4622d7a4329131e5b3bdd6443466bb29a67e6d01b4a696d25c134b0c7fc5bad7f5184f9db0e1ffbc9dba9c9697c00e4346e78cca1b2ff53f6b047cafd44ed88da81b5d0683b28a574ce4ae79c7462b12820415295e85aaf534ae9362d0b5bade53c277c671079fa748c29c3635fdff01e61e4a0c9329a67fe8b16e0511c65e4692dc6ad96cf8ef946c33ecbba2c8c8e30b273226c20fd065bae6355b75ae99c73ce39e7ac1b9d736e948e00cb1108a575a394d6ba6d94d239eb9c74d22221dc2e523b2b9d73d2b904953e6be83e2775eaeeee52523a5d4ae992cb992fb9b19cf92922379633435916f98ceda79ba9e5c652e6284b6e2c659632adac4c73d53702a1b46f8f0e918bf3bdc8ef0d756c78e462a7c3ece00440e070858b0a2fb8209bdf7aebdb93f95e672580a5061eaa8a8c909a92cdbf1e1882fc412173a127cdea473c1c753a143951d1d17cb9341f1c028fb2a8050aa699ec7fa4d499c72ce9ce7047cd9072833978cc90421e334a0552a66f6700e1313b9a15516e56e433e8ac68963443a294c72c69a6344b3aca3c66b3a259d18c88c7ccc8c24c98b1284cfe8ceec1f61408903c65519eae54e3250631e8d1e245047714532de31c81250f2633512f23f0f360a262a2a294d258a6b07103c1cbf5ab4c6698cc5029401b9319262a262a262a2940527ea400490992026499cc388d66aa62a262a2aab9d84c55434ddc4929a54178b45912659744d8566a14033042846c1c1518bf803a4996589047bba4692eb9532ad21222da12142c51988e88054450b48721251a8698544a5b181a6287806847cc7096e36847c43cd18e3471440a731c679b9edc1713f2a7caec414a77a7b140fb522596dbc519c475259165b2bfe88357c9fe1f9d4f2955421b0294fda57bb9b126f8933f48f2a82e49e9ee40434613cb082295ecff304a905d66254a5176156e0932f7b794dd0d764f1bd99fcac69351cdca50cf94aa71832a49e9948a9121c2e8a9d13f27083a5cd451eb0730765c2c3904828e0f6a30ac8dc22ca496acfa1d31ca2711063a8c3b35ec0260b27c4a4247e57622cba70db3006da8bf64f9d493527a72a82983f6a30d4175e033604356c25e31e19382d6ce09047584065a293d1274e449d51122370286db36235ff248b311a73cc2721be162244a524a2bc7fd14a162b78db39666a4c84892ecbcae3343334264a488773daf46315a9ad0179a50134da809da91259a9012342128da4f124d68041ce8286532258f5f5b61f2259bb95304f9f519e0997e831e785e0581fb279e31db236db89ed73cf3ad8c315d54b86edc46b7ee2b41e6ee6fb8e77d6feff73df89ee7795e09277cdebb3861b8b823d670b1e51a83dd0a0cacb51847175ab7f6e9bb70b167691838f41478b4f67bdef6d0e00fbb6adc06b7d34b0a57163c3e0e2ba7e5be23051e2d8b97147864b9b2bca0c0636bc705e8f33637abe5726579458161e19701e863ddbf6f07f4b1eedf7782f4d5103f9cf0f234c4112e519ea6643366aa34e1d0a587289f607ea8c87899d2f2c409a6502101102a52949a2873e44a114038fd49c1c5132b48586882c80a36292120e9f28253940f2f10e153484350463c018312282a9ee4ca161882949922060c11f7222978000823a68e56206a62626ae2d2658b0aa4bc1071c26b34215081092a5cb4205164a9bbc430040d6776d0c2822f2e050a408cac1009f3840a9896aa2454047e94a0a108a889ea0939940215482a1061347485c88a0e5b0d6544906589124154704a010aa2ae8041da4273014521c846c5040e645a700495d9cc89a32cb52142966809f2313fb427508c3cbd008c0860c861014cc280298304162a50504f8c9c88300244942a51a4c04ae189312b541989010b9bd2d6460401268ad0142fa042c69fc032450d9f1bcb1442b2971b0b1933ef148eac39e794f45d4be091043ac32746e64f561c38d359e59ca1cf49a5bbbbb7bbaf5879c67ec311984529954fe55b80ca70b230ebca0ccb74127d3d58321ce7f4cf459f5356fa74864e2ec4481750e091e61cf4a395eae8e0e032d56180cb6ea795e4e955d40d6f2b1bf0dce846b7add229cf740f51fa3464b958dfb504ae734e5a87320d6d105408fb371e5d4b544adfe557980c5b89dae76a385b2d8c9f0bf1f8e5f961d64629985b2b372bed8a31b7e128350fc76d2ef2e4be724f398eb31cc7598ed23a5baa79386ef38dabde100b2ea573a2305d512429d2b3c91748960431761bdced143d261a81c79d9d2f3b1eb0720d6917cdd953451017154d28edb979de26956d5ad9e69449670d73d6aa427d114d198ee89c72ceeea42e5f434ea667e73957b8de4fad06359db588fc4c612cc7dd2f329d1dc54f98deb0da6283cdb37d6bd531b856deb870020c086b93760daa456a907fad498c20a89b6c5f71db77edbf35d35a04a5992f8964960f36071ed1dc38f08a640cffcf18739b7c9127ecf31a5a6e033da05fbfe2705a95c76a548b6095c8c5244492831a83572439a848aa934c945fe40eeb50f3f87f43b87fac43947b0ca332c42eb6cc9e1112b7badc604a36b90dce03eef676d9723ed93a58cbeef449ebc664e36cf72f5cbc5c3a2d58b47228ec26dbaed697f325f71727a7c502d3acc0ef7a9de5363a9d86b479ea7fc0679362bb493920b96e62bedc06f9daeea3300db2673b5ae4ede47b33c8f70bf30561f9ae3e5f9a17f96217f9ae78e55be3cad746275f568b7c6f58e48b9393936f8b05ab052b5f1d9b7c5d35f9be56e4eb02e7fbe26160bee117340af0648a26867c1143c50f1c937662c952159522429cc8c85c8c9412435c8070a2040d32e79664076284c25450902a21da0a32c7c961071b42a00413304764ce11ed60e2080f2e7001162d4960d070468a16aa96b8f0848321bb8f941f9c784272644448e6564a1122a8501591d4838c7b214a0537661400da0633747131f1422c065bc49530481c278798a8329b9230d3d9100c8d3626fbef884d86969494c1dc349a1279dc09e2b28801f7370746098c873aaee4e4e2a7e4e442506871a0215ca464fd3686188e5421eb14c8fab1540206b333b2964a41d68f8b4c9d919254a65831a2814492951e62a8aad1648229b213a80b46dd0c73afb5effde73412d06a417ec9e6effcfcec29cfdcb41caaf27c1b1d5cafcbdb73760369f5c921b3951cd71cc751bc1a81e4ef7bee499043a207db876067e7b405df268d4bbfcd451278c4130116583df8f35d2481ef7fb0b19f405885a3bcb0968bb5be0884bdbf3fb67cc420f8bb31419f01def073f10a1e6dae2dcffb09fa78d64512786ce5da72b13e8dd3dcbe4f87f75f8e8b43837c431a1a2f1c499043797bdb7dfff61d82f449bb6de75dcf2b5282045a515391bbcfa2244a6905c12225dbb671ab550662acb51d0d8df7057f9ee75d8c372edff7812b56d43cd57cabd58aa6a6a6c90f18e31536363535362c56931c582cd6cdcd4d13a22648389f144a02ae6c46b009194545d18344c524a869e9280911105517a8a6a5231892000dfd54810188aacb0b50486a4d2f2c011d25790188aa8b122816684a9a683f494b474994005175814ad2140426c9120b5b8e922401a26aba42a4b9d025f7dfdcb6ae2cd8ffc6fc44a0d2e76bd6e373e335c3a3e538ebd3d3bd66debddfb75a8d34bf66af999432aa868d9e9a1a166eb15a2e6c63c3c22d56cb85592e16e8d372bda59ffd30bd116f409f1d9cef359b45bd662d16200e3057e9d2e125ab7ccde4183cdad72bca45d48b2859e56b26e5f65bdec23103324806d574b93dbf5d595818b7f2f61807d1e7a475e35c596a749f08ae563418f4c13536363932a7737070707072725a2dbac3c22d56cbe5ca52ff5699b7efdb42aaf3b9b260d70bf4a1a00f76b9b260571611168619645077409ffac92a653892d051fe12031d952de0210d3f1611486a524f4eee0898bad8e14dad56abd5a6a6a6a6a6a6a6a6a6a6a6a66ab55aad56b3714d850913264c183faad56ab55aad56b37185e9f7c9c3a57f294ce69e5c1bd033565979ac9137eea30ee838e7b8e6b138b8cf615d36b575c57d057188e38a5c4720d9db3a30c7c7813b805450e17e16c4d1cd932b67579decbaefe33e10fcecd87d1dd8001a8cafbcd782f641cfb3a1b7fa3cd067a4f92ed8800fe430e8800b4a106cafab1598c3fbed57200e9bbd10cc61bbed0371d00ada0773782fbbd032c0cb3273e1c881bc85e3cc0de2982fbb2a56848484685168448c684496d08820a11111728636848a36648a36248a36e40b6d08140b2568e972ba94b2410065dbca53098c6cbdf51676df98db566977772d12457777ab45bb76d7d0465144fb296206cc96964e30fdd958aaa0d5ff7aa71e4076e9c12805252394767ccbed1d1958869436a40c19dff3b9985d3b3ea367ccd04e69e3023ce2d93e9fae77cf1d57d32bd89f877b5b4eba71f649d779f703572b31583e0d8803cccdc22b6c449f0eab53dcc659ac9b1b7963738373838383c3b2a9c1c15981717070687056200e0e4e27440621e16be18f86be66d5e5a298dbbbdf8a86a6e635abb1896ab9582cdc62b55cf846871d166eb15a2edc82c92816342d7470b95e635e2e5e44bd6631565cb957becb29ad75db38ceda0ef4a155a9267948debddf07622b6195a826c941336c45d7d425b156a953ea52ad32a52ee1e0489caa64c362ddc89c9b9c9c1c964d4d4ece0a9c93934393b30273727236e0a2e4941ec8bfd2e5f4d973526f3ad2b9c2756591a110240f8882c0bda3bb7b859570820b71efabea55d553855bac179957d56be6caf2129333e4de971826442c6c71b24f459321a949902c53b5a44a2e995ac2c4a476ce0f0c74ce5a6bdda8b5dd77bf10c0be256dc78139c0ec83049bb77de7ab2043b6a35e0d57cf36c4071226a7c8a50f240792269b74681effb187c84ec316573cefa6e05b2c94b252ebd034b8975ab2bfc42281903bf8937885d2cf724fb82730bbe37b52dac184e5835fb5dc505774ef1379223d3f84086eb1bec8137931e422891741a4b2cd5ec7e99831da2ffdfb656db1fe06eb5aaccfc1c016eb5f1d3e63458b3734db4145c927f9a4a347d4534bddda75d59dc0e56e1a37b4459c11278c7144f6f7965a9a46054224b2ffac8038a9976ff7bd0882e7e349e35acf68f3eefcee9a0f175dbe54bed59540146e50801b0717b67c5ef0685d30bedd43db2f411cac177c972562fac9b9646e6370602157e1755e88b81fece5a645194385a3b42cedb618883cb6ea0aaccd47d38ddfb893b19cf2c38494c73a8a52478b82248f3bad9caf853fd6fc700bf74c5a94153c1f3c6475f15883e9a00b554b28cacff604e672d3a090c9e38703bec94d83d2257340582a8fdfc7fa004ad48cb57d9bdc34274b649a9b0685c896825d8262a73708cdf6ef2cd9fd867f5e8377449623bcceeef2e1031c2a21928a9a368210641f28a51f143a43f0283ab90927481f8a60f2238352ff04e964cbec8b0c8a8e07d57eb56183de290cbeafbe6705bbd1810fabe77eb4018205b8b00317fd6d702f372ed4e1be673e08d3e1421c30f2cac6f7fe12b6c2211ffc1bd3e703411df930fa47cd3714c31e251d3b78f468ff1e3ea577847bb20ef7f4431d2e9c6fb30e1b3b5c43d9bf86672b61a28bdd0eb8c67cfe0f9bb31440f3f8c73a86ff0d9735d6a233a066e915bbe84ea28e1d3c7a5091d22a2918cd08aa08188dcad20f9dd2c68e516e271d3b78f4f0f92b20725e6c90e78f2c328d5c19c13294b1514a29dd6032dcade099a5548f0a8ce0333e4f1a8e98a679e65f39691060fef4e9314205922082022796c8f33b240c4a552124cd45d982fdee1fc850d9d2c40b403491ea6658610a6d8a19124a64f26f90e01f1f72225b05f620072201ee2080d892b9ffb165fbfd1cf7e422948b12ff804719255f76e13e6a8b94fa867dddc11cc8835c949e672dd7efcf8563e3e8bfdfd37b5fdeefef7fd41c2ec8609947ffc9f5efe5386b7ba44f42c3fcbbd07b0e36ce9fccfd44553dd59cbeb81529292b5f9c6a4f55f9e783c4a1266aaeb9e66857bf4b98b9863f6aaedfc9a52230c84dbb6129d36e38ca4d134117f93172d3444095e59749c3818a24a972209807f9f44bff21833bdf16a0183cf697fe01bde0b1bf38e83fcd23df451596cd7132687690b5d87f260dfc12fcb1b5fa11d3ac78efdbe946c7fabb5f01c3301ad80a06c2ba63630dd92d7d6ca9f90ef3bfb0b1a5727f7fe73f59be858dcf6d34a42e92d052991562f9391e025a0bd5058a4a6ef95d92037f57c7a44bcae572e51a19437e4b054173828586f434bdc708359c931adf79977b3f29d4e02403fe53cbf4afbd37b498e3da4e3c63ddb20b6b59eb09a640d33840c7280799be0c9a342e277f5a64f201a038c00b32fd1b6d9d280d59d0f0f69c094f24ff7ab00b93413afddf0391f5dcf75e84fbdef77bde7fa1091d9831fa5e38c28cd13721a432ef9b477e093267a0d53cfeb0e691bf3d7d3b6354be53b187f664fa1c0c16d65aee0c4eb040a45729a44bea2ee7e7b77eb472df36bfbd79bafbacf775f7f3eef75df0fb2488637e577152ca714fb9e742dbb273161123372d8721b92637ad06210dbe8c8152324193198a90390b6170f82630c30984e82074c5052776ab342847683433b9959b46c3182719d5b9bf0bca511147f0508549133222331c4152c60928cac85c86cc334513112d61bcc440029923614608156a607aa224e36210618a1278590113253f3c9101a9d2c213299c9a08512b22f3a2ecaf63d200325b8a62aa09e14408156440569842061b98a8c0e9cb0c5c93dc5c74a842061768e161494ae63fc20c9847a8e40dd834415424250000007316402020100c0743e2701c49c24099e50314800b6a7e445c4a34950723b1502086711c04310c0531108418630c32863185182a2d004950986994834221fb911ad4999122cd7a270fc5c724ce81223388c41b0869469c27a84fd278203be46305f92c859dcb4b405bd16ba709bdfb498cddb268589b693619525d4f2bb76cd8c4c5b2ea3b661c3bf6131e515136d4e8821759f29024095eb1eec50ee1266a7a708594405809dc357e4e2ceb6f79a5653f7abdbdca849e3bb9070756c5b623c178bcb9376a642e4c7722db0e11eb1d6bdf7ba85d7d7cbffcca74a19ac2d37f96059452d014ad73a488db202a3cab9fb2cec6937dc315f1cc72882d40c6f8d2f8480475e266476077f095eed6d2538e5b769765b7865609dfe4f2d59b6fb7578fa1dfd238657ef3932ead7b1459c817fa6d1d88809455608d3b890837138209f63335b5cf5e14d5582f0a54f4a21868eb0d671fba00c91f82fa81514bc45c5df2435132507c34730eea01055a184880a00c933c76453d2c8441ed1e299997027e3cd0428c84213b6254228265496a605d318eb41589b72fc898c5f7af8e11b8adb6dce045259c0413f21286a422c8242a578d58e84e4cdb958de0f6c431fd25152c69e02917c227c1295ab20a57176f412449ab15c429d70e1a2ba8ee96b86a784b0813f1cc84e15d5cedc2de9ff2fa4285c56f29618eb9dcb297643c7619ee0713298f0f0f28ba05b426e0ca18d69ad05cb64a2e77e523bb78c0ba203e2518cb38b47368403940d95d1e4908622197e1162e05c5ea2be0586b941847a6c0ef223614244038499745bc6d0e89096974212ed67155e93dec634ee580669f19312f9a4002b5c468e6d132fe1cb2e074531abf611cb3207f32f64d65833888f6230b319e43b5a69eb70253496b3d0393a81141f912a8383bbd628202db5d48b902313623c5059e7c30b98745a8c5f22476484d0b835f2a9312d87fa127f91694c83cb8d03dbc489ba1234224820e73a9b765c2af9b461b7f5e70ad1736fb450ffe0718e2e41a25e3c2bdf7ba2d4986ed3095c029a34271c4d0b8e4646a30459e684d416219fee59f021e8fb2cdf33602367e63a50b4cd1568a60a40a14aec31549910147a365da2eaad3f933382f5559bbede8c554e9da4ca6c5a16c0af8f41a4a14920dd8f74fd4886c275455c643536c6dd2a5ebc6917a5282714a7213cb212088491b9045ca300a769719f41c0182be5c88e8a4b097d1324f689d6d429270455d6f192c20dd4febacf9fc43bb4c6e7639829b9888bb0dbf9df589cc1551b0d6caf1ae08a29fecbcfcbf3d1c0fab8f6620e4015889a1a32464be222b684aeff8802459c5b855b81f740c2f07493271e7b1901710c0ba296136a2c8ab694681fb4ca789ab3e41b493f8fe6e17999fc4102d6fee882e353c81ccb986abb7b7d273627abd14391b4d65637679111895400c54661964c781126824c10c467db0af36c9a62dec0dc632e97246184d4b6e987fa875a3bd1fb52dbd68861547eb2277bcc835c93c46939109029694d15730b73b453d6c724052482128e3d09b268512b24b419e8b19984944e92a1bdd7eaa8e03345bd4a9e3aee0ae1c97ce2ad095f9f7c4521c8ba47295c3c99da5c080c57ddc95cbd6669850b166e4af72d70923fb6102b0d79f60d3a11a0fdf250ca9e935f9009b7fa6dbffa193efe5455cee65b6466d3c67553990fe4e47755a7adc1afa43b87d08ececd5eda99dc0f8ecec206a8186d26eb838710c3bbbf7886e39e841dda51d94daa5fe9d5602d286c5692d6e553e56bf9d7598f551727d458b3d32d82b2ad20ed2d8bd74b823b08efc902577e3dfb97732df7aac8bac25dd994e236caa01c315e0dc03f7b2a9c2505e923150f5603b685cc279b3abd397f4fbd220ca0eecd5778670759a0eb18c8add46adddd1b29ac9121bab0e8593cddf831f3ae1c026bc1fdc723e54b413f9405ec2b383569415cc76713581f5810ab6bc919e93377eb127600439a6cd7e84b6f927594d00638322c616fb554a61c992ebcd387baa27c6b3d5fd191b6b5ec7c9c01afb206658473dd51f8408f895725a591596ca8454fad1225f03590f414096bd918b30944b85c732c66f85b6d52843636c69c866f579d6abd05e923528ddd05a7ddbc65ff0c74008d36253ec03fe7b65bc3320f762055d39c8b46749966d0ad74b145135bc6d9b84adad662942169f253671992fcdf1735799f455bb9fed671f90b9b16d6f2e9faa41072c9931f5272855d824cab6548869529fa866a295a92528450c3fe2602ca709e6c09feebc70ae2442f2622fe4065096318b9a5d080a0bb0456680ded02f238e574324a254bb1d64b832108365805e738691fe85392582a11ee1364aedc6077e4080cc6a358c83e040e6270a355fcf2a049ac0412bfa41832d90065241e44d018deaf321374cf8f363289bbddba74fbc7df6af2ed3cbc519b0de344b5c79f61c2b1c07e47b045864cd603bf983fc520f0125763f29fd87cb5b41cc7c11a03ade8bde8d2d0ec66994ed0519bd725383ebb631835886d72b8496003401476294822d6d89e2ed25b78f1d93ddc588d9c077efe02f3b46c02d0ce037454e31407123fa9593a6cb32f4e9cf13ddda9a1cc64e6608c6791dd48765350502c46ca8126362fe0c7be0ff5bd08984f9efd139774e2d5832e903e6a2aca8b644203466456f534951c715e2ef3dd68d36ef67ef91ac80862a170ff9a69d048a508a41e1a1b76cbe76d532c6c24b4b5f2ba09a1b5ee106f84bb887d3661a009ef9bdd3fcb78dda2e645f41feda791d1443abdc0227460f640d9e07ef914ce911537e1d7acc234b82c62676fa7ee1640239f1ea8884bcb500abc0ee25ae04b01dace130ed33003e1b4f0fdc61e104816e167e1c6e30943a515c61f96f1582493458bf5e7fb8562914d2792ce3f3082d39c93a241521fe119b68a54641d192b273bf078afc6a8ff26b486c34041c4daf1bece1e553ae27a02c000981d806b521460aa4a86223f3d77ef2e09a1e0098c9eafb574223802568c612ba41ff17dcc3a39831945ad0d253028fc439ef9148eadfaedd05244dfe4230b4f752d02236dd75f949fe26bde40fcba7fe1043a1ef752a256480e24ce469b1f136a6bc8048b523816d658e47b5f3c343b513faa7769845896d6c20a5194e2744808dd9d8f18e1122f0c8efd8c6cc47abf33dc96902fa9f89f281373e92ff62fdef40510d0957ddc418c8da17ae18f998fe24ae1b5a073374f27d4285065e39ef36a824733a7c1141c11604bc20ed4538ba8a0bf225ec02c21c306df89e2e7e8ec917bf14f101c9bbd3e50dcd86b2e1f5cd595733d6e7a89836ba5bf50d29cd098825d79526122608aed4d4952f077a5488cd818f531802546b418a29329d52a1e601f91352a25f91cbe6e887cf4dd08d1853cb65d3c5e08f793b44e600eac2c5cc7f41e24915ee5a90403b9c2937e3f96fc7e97748f8c863a5c7ecf15eacbf7a4fe703909cd070059f95c28b00c7d94303bcf55ccb0ac17c52f8cb75351676fadc80ac6fea5b4248571d64ca3905e8084add60ae061189d9c7ada1cf33016e265f15173c517fa59ac4d37534705602380114c45ad44ddd72298277839d810fb20cb0dfeb59387da538f545db650496428b50e101bb31c256e7b9afdcc0a92d456f5bce0b99d713a8a3f7d60ed37712c4d295f83f718d99bc1899f01bd83d3c1a538570e02e8c6b3bfa759bb9d858bf63307f7d9e4e011e3739732d82ebd2581cde52a3a148619e44c344cfe4694b8a09218cae73eaea8481735390e84a64dc4d41876ed15b4f04bedc119106d24d1848034b95bc19a38dec3584f2b60ab604946947eec19e50ab714a44458a493bf901b34214cac1aea715f2f1393bd74884855a62c5aa5989e62da920bbbaa2f4cac989532e8b9b89485053843bb915de86d252611d1d6159a18805d78f8a7f0c6f8509c448005e20a9f00315dd0bb2ab26be5bd6687bcadc64b36f034c8105c324b58b988642054604feb55551e4ef4d4ec9957458975c4c72ee20f73eaa35bc2717553c10f59a202fb55ba88fbc20fbf8fbb6d1e0571f5c00c1593e93dafeece399f91fd97a7f13193c95a6f6ac82474763880104118b2397a74716acdc18d230a08a140aeaf07e7c4022d3b00f9989a74ac41c75ad68811fe6d88740eb43cc4d16492c138b6763739029351eefcbfaec33ad19ad70c590171dd13efbcbbaa37c6d94059d8a8eac0bfa27a01b76e3cbc3a6465d8182ba47f01fa319c922ada734e3080b46e2c0426e3c728515127abad3d5fb809edfabed30f0fd756b94c284ebb15b7e0715e233b50a0b9b7d803a050216fa40ee110340319ec6d2014f26ed444c792d96e67442ff9010c15b51bc8e0c882ecb42d90150cd31dc9fade2124f3900748b473fd2d472a8a04460e80f64579ca67e284660f865bc9db4cce9ff88a2981f9986d7f80b4f7ea4c7b8ca4d44954130e135694e155ae14a82f113bf9db148005bc75d8bc7c81a4b0d256080f86143c8c42e820d082c6178de451aa386a13084c85b4b7a72652a0a0761d2e323c41ae1e34c95c7c0f288df26375706cc38e7921d1125fe83aa82343b8b39425315f8dda4953aa9e2d5770b1c853f02274e2d2595588c40c5756184b0ebbf08226af95d10e43817813af912291f8fc4e9c63d835867030abc49193fb7649d146e17882cb1bcf441d45e4893b981fbb0d67fdbf007144b93611233ffc91bc37ac6bddec580f344b9db3c000136174ee80144bce144a42f3306d04c0e89ee5fdb555ee539bbafa8ae5e9eae067f4d422729d7544d133786b9db42c03b7c88a98f1ed39d9aaf46a94c97405d03441b5e23c9ae4e0b341840c2a628a4494052333e74572febeac653825e94ba12a12039c4f6b69925f120329d12731d37cf6a2be9bf0f28eeebd960d43a01590b168b264d366e7a262e00a5ef95765b805ae7da5bfe741dd9c69bca20ec0a0b3c646f5defe6df9b4fd10a1592eba0b7cea4a0f7bb60a7042a42fcb926de070d69fe1222aad62b391ed2bf9eabf4fc2456b11d2b822053aa40a59146c07df587b0fd83502cff0f20c184340ac0bfaf14bc97b7945f4f3dc30753ddf0418bbbb103e57fbb0f4b27238adfd6139a232eda786e8b5dd1a421e690d49870155205d28bcc99703a874afbdeb28566b66cc3921189780e977f5e9ec32ac5c777daa806aa56f99b22f1d5e0838e8ac1c3a2d1c8eff5d99e4c25dd3bcead8f00bd6cd5f0e56f2e7797f94d5efb4fe7029771f4d3f267a858db03c823ae985be3662b8d364094506d34804c9b9c93a9bb4d27a1ff252ca1e66e028d30b0d8d365f2e5610834f2a78c4d3a035f467427399ca6bbcaf008433be52c97bc1282ab26ca313a00d73186f61e9cdec1c1f25f2024d3c21424534fdce8959567d27edd4394376cf594c6c36df27a371ad2835c163d8dbe27c44020175b5e0f737b037112039ec0053dcca84ab41a5dbe921b77a0aef5061ca140c33c27296040f907ca5af35cbadfbd74efdb0470ba389228df575dacedda861208d100a1463ff111348ea252490e7cfc51ace3e3dc035ffe59a379bf89ea0cbffbe3c7d5c74e294555da8d117f35c5cdea201606c45cb7b4cc71e46d90316929d0f4ab6025d1eb246714eb412897504a4a2ac871c91bb63410c05fee79baa6bba8c3bb01f229cc2e7e6a045732f75bcd88805e30ccccac9859c95dd95a1b04f60b2150eba1484a0ff17c06c62689d4bfc83cf8a144ff0f668632c0933191b73368dcf0d338ff63bfe18eb5b8f0c84103be51d4cdd3549592ca096b65260c1a83628b988cb5a16fb563526a7a76ad80a1179fa79e91cc9081c2844781c7e46fd7d0d7d158d7b33da72857d6dd9ef1644299feeeb10e75bbf0f8c17d01c5bdc5183c90bca570a3e24f6dac9166f4a59b211990150c9693e09a9ca88227f34adc1ac4fdf0d9574e0bef149b5a8194716e61d97b10ca59a0183ddb0f722d4c50be0931c0ed4930a31062d3c414553495ebea859268d74fef503cfdd3ddf57fbf32261b8b3f8a196cee8e84c4c3e4da9abbd7c57eb790411a15bc71ee0dd4c00c66eac888a2dc6a41f95a47d9999fb3f5475f86b9f5ae8b7bc597f4a4cadb83696de01631128f82146980c2702510a889271862c27fa75b4e4df2c0a89c6d97bf3cf8e04c49ff0eb39081a119b912fd055341068d7d9a6b4abd74c6501cdbd008a91ae924a322feedfd83815c93f9851e05f36374c5fe024c1e5f70b8b2fe0530e160fa1bacff19a9e0e0dc9eabbc9a949881b13fd4ebaecea84d7f933696b202bdbaff0782dc840d0243a3090d1e0956b4e7fdcbca4b7b1ad1cdae682df7b7101b431c75904e6f0a082b1c4564dcfe08503c4688b26b94da1a987a0411e0ccd64ee0b2373d40d9ef2943eda7a92601174d03d7ee557ed47281f827088eb0754a35ef54722dbe47ee4d4515fba3f549f7542cd3a1a9efbc59dc9d32e29d9c7dafa67b5a8a80bc6bc6ddf33dff1c890b5b1f85632f545bae44b0c8f83df30ba1ba03bd9697c2088a641a836a26fdbfab0f069806dee82b1017781db51c56ae88bf1bf60b2469b3c56f2f49bd4a8d1778e7397ae8b785b09613125e54ab4476a5696f2d535fa5661d21e9265b85181633b2396c028b0b9f6eb48d3577151b29ea439cc65317aae0b80771e12e3ea392d726a458745505b2d5f0c8c1abcc406341d2fa8434ebae6c00f64811d23508b4ab3f2ee87deb83971b3add8183b1b5d8a5581be78935801fe324b397d0706889493a9740fe2584b510aac6edc16315b8e085cd93800d14906a043780f8a39b6011a0f3e0493cbf96a87b662dbae66c3429eac4b79f2f99829d28c3627a582700edf8492d6e54635d89696a78834a5e704cfd381e493089b8e9eb3f0ef1bf27916ac6baafd9182705c39ea86ba8c887810bf300069b936fad85abf92f07e28231aba489edc41d316c9db6666ab7ad17dc1fe931d8dec258683b6ae4e2f27e3005b7200b59406837240fd0fd19338e8cc41a40322605e235781b933c5abe1849164576e17a4b8c3478803770dca9b8166a57d7e9000bd33e05d5ed068046c19721a1e40b6d3a2bcc3a51b43e2b11df6e9ca48cd8f44ec20a5023ac2ecc56c621dd83455c1687aab86f1bcc379560931e023851d1ebc57dab56f568f12976327918b7311abb5ed471e31f080140ce4900ab56fb76c163169e5aa7d072fd2dcd1899804a72599a229e8714e10b1b629a0c6ad802ef3cfc5c16912419f12ed9ac4a22e0beadf06e4e33d9883e3e62fc0f24f90e499bb9e6b6000006ee4a798225cd28a85f60f208fb976bffefce832e2bd244e695b0c3e4e2a31d4ff1cca9dd676cf3f7ad1beee17761271acaff11e895f18576496e9f10e036a6a8ab1b048ccdc2243a45cb13ae6b937c120abc0b25bc8ea5df13b3e3c2f62dbf54e797d75cd7ae5dc96000c9a3aebc8aa6d5231803583144cd457bd90f44d7f1ab69029596521e059ee6c74e17baf972f129fc36ae6f57ec96b00bf087c34046c3c7d63557f85e697877af5d6363016b6de017baf190566aad4fca157a11eb3772fcc2a3530cd691eca72a858fee96e6974aa7683f3e3147f0b70d293ee050f4197bd7aec0bb5f06bf83ace68fad3b57ae01304d78e582698b7cdc98a782820f7690f4a332a2683f4ab03956f5a2d4aa56689d21231539341c61b8a0d60173b24f1714e9c1ffff543bdc32b389dcb5d4f23853d7a765b4bbfe7cbc1f147f04bbae96ea946ae950ec9630ada008105ddf520bb62df0b1746104206f6437a5c8a61747b20cc140fac23af62547b05363e1957f8bab941e1a3bde331b62dfc2d96114f0782b9a201c4af95f4ae8d32a4d5a1d487d83b32ada223a9cb0545edc65ca522852f059fecc558ac19e322b069435ca0009ebfea87184fdb99df62d699a61a4aebd5745b17775528c8a5d33ca5473e05e908396bca5c34912ad3b1b1fea5bdf297474588b8823cf7cb28c0b4b0fc48108eb2ff1cdbe247167b21b284842dbab6833415e920533e85badd0b3f43bb7216e9440e6752c48dc5851b89e8878144da337bb80658d84d353b7ed48e09c73f71001c775c4cd6ea10c67798c4925a9470d47e15d88222745be3c325760882b6098b85db713a522eaab75f6fa28aa5dea4ae13978ee5db7a68c4603e2202c8266ab58c7061abddafb35a1361f0acdd101f49a1b63be11d25926c0f162e62aa7cacb72a7e8a0de081e05f60687ad517db97c2e7f478b39bf3a85684531c0a6bd1cf89686f448929106d74f7d88ba0a00cf77c107ff34959ff84459c2393413fb8a3e713542c5f82390c58b20cda9ccc74795572c11c0cdbcf94aa473922349d65610e14e4a60435b011f77d062cb0a0a8d8a407060b0106284e1aa55d9fbd28a09df8a2a279acf800ee0395e35171534971538402a68cbc6f6f6fe4ff4410e7baa0e9a8d0cdf87777c1eceb5fce1b01055c756a27d38965566dd5050675ef0ea83006d99adcac40148297de9c307352dd358b9fc0ff98a3e70090fa270c1896285cbfd0c5b5af7f0b0c4ab6ba8195778611440170a5ab0ff4f37ca2bddbecb61accdb6d02eb91aca28c09cdef58177923db41b1166800f11524bd6fdfee2a6d805e1a9ec2704922cf909841c7c7c8b7f98517df0d0a92894be28a0ded4cdb12d34d85bf48b8168e209d8ca815cf9796e02321cc61ef90fe49022347d1c8b77982478478491279791a4b927952a8360ef258f5d86a6a8bc519265e60e514e06f3be3e95557d37945ad54e9cb640447288439ec32b7d71afaeecc48b2fd5326d9a29a07842ae2c31a220e019d1b9e91b86ec87b87370bab66cc096b62b45ff4df91b375b501e5cfada2deba21aea1888211f60ee6b60d13ede266c2395e80f4a315b014d363391e85295bd129af669d31ed2f308404b37844d85bdb155802ecfaa0fecd7e22c65d57ba99ae627b568ac87f41c84cc3535aa8b86285b8c6bf75c5a66504216d1f974925108ed1cee8f9c72c9dfe32d136b785bd258382150108027e18c0ccf2c8edc7dd876b5a08604389ebb4e56240c999276841945daddc9338e56d74d425d4944b282917dfed748a46fd142056f0e8267988215f3f0aae05b9b315ec223be829bd55b1eb279c61df5aa1fdb2a495a501371dab26e7d950814f2ceb25c0b277a6bf0defdbe2049e51cb393aa8fda160b8688c05c84b654d492804774524328416f7963721c4d0aca8066124ff7a193f3589b3646cd4265ab98984dc82f98b458213dc0e3a7d409582a40a388065b249f859597caf8dbca25385f02f8e4cd17cc50191483b52b49380a520dcbcb8f6de872866aaf7d83ea88e618a5d4322383bb9519f2da84150ba5205d5d579173919d49dc833724ec666cfd8a95164e113e81bc8ce52fd0e42fb9e2cf0de0b446e64bdb05c54619fb0583c129f3fb8e62e64b0b22b728f2b6640fafdcc216f4018247fa9e0f948d324b24ed594cd4e6a1897817c85649b2d390bcce0ae7c12b0d6618d90bbeaef823164ba280fa1c1129e066d82a7d03daa53278c3cdb361bffbd9c294ef80c5010fcae9869b4e832f7c31a5bbd278150f367ed4d3430660f98ebc37d56253bc15f607f0aa1b979646716c553bf4265ca1ce245c5ec55986370d6d11587029decdb48d081a6164349ed46a17fe0f0a8cfab563fde665962af64ddb9d75c8fd0c8d77a207237da3fc863ab0c2815dad16c03b1d49507f08137426463f67617bb497715689eac4557e9fc7aeecd521e197e32925342b25a35a0d5671c57b82b10f53856d3f1a39c2dadbba8a2464ba569fba8147f647610e66bb7172ec2401899e3093a74922c5af797665f2378b506f2eba5cb27ca0f3a5252bb862aaad4a1adab32db9a1cc5f23a9a798d32d8c306b69c71179385635b81baabaaf70568429a11493361a57ca1c1c07b85474b88492085a7c1291c3e342d677e78ff847e6aab2fe81ca194a750e6b7e5b0558468d3793ca6b5fff8b5602497719464f4f9816209191d2d62563c89daf9ad222e648b1ed829784d2fac5e6386f56f78412ecb9a0cffa7b0c8a38833a6c9fdd74d12abc6a3149449a5845229eb8c4a35951756bd1558198422011c74c0cefc4d52fecfcd5d7af5664bcf0f9f8d5bd96ec9641aa4e18ee4d1ef691b6206bc9eb1ac091e3983500531b2bbaf6958fec9280fd027cca2468a728ea2735f8b701914831e28ff2c4f8c30d2aff704afec9d0b2c6a3e47b399f126fdb7fa9d288d381d0bfc2d872fe650c19c6f993e23a34a079fcab365f87a5687b9865acf419e9a840e952c75c92689192d76892614f1cbf89e21f8690de5a251e868c2df9aac358ff43a280b391d387afbe6cae36d4a0be27fac9cfaa0d3b3f71bd626ec025e9440c90e9afbe5b022ea67869a1f705250cc68352cff0b51079268b0fdf499332e3c0950f9e211da9a1ec567716f83949e5d8b9f6eb4d550cd84fda4cfa9d948a0223faf681547043172c795856028e71576510f94085c832f699516818164518583acbe982471ea8454c12ff9a41f5fd06919bab16659aed7330a4275a7dae488fe597e070e6a97c42f2217909345c2e2467c112d47c34294dcf12add17c59a3fdb148b0a6f9eff5b61255526267b4014d65eb0f59bebc90c4f599b4b99a8dea36b7dc92deeadbfe30984a654b129dbaecf984126e3f3355aae277577ed4367a580c24539790f44b050f9bbf887649fd7b278940498b83c23af65badae5f4216574999a14d6506663d3ac491088a28f051deb70150f57bd9203adcaab1d05d5a0953acfab753608a75553b47f5dba9b0c957d43aa755ead52f3a8db88e5eb9b5d21ecb566505d5d3a2172b089835f346c6da640335b6556f57a5ab54b88530cb3872661a68db2b1a7482fb6201b8d08d2b6f256d2375729bc85114c81b1bfc5a1d8fc19861fa238693fa6d89547985dd0be3fa20870fd2e93270b6d3624d2cf5e5d12b8c5f9dcec404cdacd35c15c9043270ae36ec4e537b87c5a731931f0332eb45c97caf24f522ed639a5f8ba5bb34bb00cac47884615d9df759bbe3c9ccfb53d56c162af0c7d975912c4b7954d194fa061a905250714a9ac6f2a7e88022884b86ceb1cb5a54cebd8897d9e176b22522245b014f6922d0dda1706d7eb3bc1393974b07c444b4c68d82bc83180c2f50c19a1fd2414f1b687e04b07d7a19a79ff628e9ffccd79ed7309911548769041827a81f1c8fd483fdb9355b0496c83346dda478e4f921c531b911e27f9609ae567bf853f6ecfe9eabc0c5d83d078aa9e883f37764653f73f2f20ff8e9779a71fc72dee566a090ec6a45c56877a72e14a5fbb98aeb14a12b1b3addf1523bcc4417a60748166f387205b51cb380531a2685087f28c62c43fd5785d8e101a02e38f400be83590c136426b74b8fcda22ee4900f0521621dd5e8d67a58772d3cf6e794f4a99886aebe5d34d459fa9f84383235d2030c4cd2d0a02df7a6d362a30befc3a0b64beffad96991f5dd2a359214f68e248938579ebafca172331adc41895aaa8c7ac174221097095f86cb52031b84e5df97bf16dc9e69aa0fa21cec574c3e7951f4e00fe99f24c98a52d4aec374d4074b8c95abb29c34f18873f301f14578fd6b2a33b0ab846774a1a78eb57b0263d71476754155a0914181d7403bffe283732d558844d4fcab70685c28f9939a0be91e1d420f7061e64b17861098d4e375360b9ce26c6cfd438621b5e07eaab653bf73ee3df87271072cacd2eced6f781642812e0078accfa440175becf48ad36a3a5eb48b72f41d6af0ce903b4350c67b19e4ea875149ecade66b652d89bffa4e10e0028b0904a91a8804c73799fe95848128bd2143c3921385a7f022a2c92c62a59a401c009420f1d30bfcac03661f021cd32a7ad4ff4cceb7a91ee5a79e252b986500f7a9f540e9ad81d4a0791b4abb8203e39d78462954c3883dd18ff6ac4380a3d4d373418b0975449a184db3eb8e6a2d62054f7c9886e21150548bb7fe1237e50aeee14db733b3002696e918c8505252480567631ab9916f5358216d7b8f0389fa41aa564cc970dc4308ce6cfc42a62e7f2399567f9a37363df688cc33c8046ec8f20a206e2b977f2e632d5bd05665d904a46b281f5ebf1c9c247de5e0142f3e20b3cbeefc173135b1a8410d23cb423f9b0281ec13ca34aae91186c0850ac85826354d08490fdcc5bb8e6c9cbc38fc3dc1afcf2ede9eb0381230b37c56f2f0fb07dabc0ee7650b2003182afa659374c704fb56e6ad549f2aa16d0f1d8a1a0655e60cc78c06d64fbf19fa4079e643ac74b0c03737f8a309072d0fa1e4e55a71e8d943884615838a71aed57e060f42452215cf4297c45b1c72ba3b4c706996c33da6dfd9e523ea72e7d4b4cf0bb5eea5f2de5cabbe6de8b90d28c42a8bb5f73da46cefcf430b59f2efdeb5f9f850e356e4b1a38529c7f71c232155c21072d1170512765b8dada35ea11e066c1cd646cc1e8f5b28a53bb066a7f7a7aa71847cb2afed0955bb50a1d05f57209b6df5430ecddd26abb70a0f54e8521962f3d021563a76cdaa8dcb27b4139142ac4086fce90ba8c24b344b027b59eb42695807e4b676953f9b9e7047bf9b81497b8773d0e0b48b863985aba7f2617e5524d9993a65b7af9e8aa44c769b79a6f9d6b1cb317abfc59d6a727024680a13e8e24e29d8395c8a6f82a217a360ce15f0cae4f20baaa25b24080811164cce3222f5803d52c8cb894a325d83804221853fc9327f3c37ac11f14b2436a92d63602a0c9e83752332159a28afea4866e295ea1c450fe56a85ea8c63a15f19ced3b9c828b0a808c69060ff8c5c194d4b0fc5690e53a46e2c3dba030fd0f20214155a6ed747a12ca8a352efbd574de1fbda089015d09147232559423b6943811f59d3e5a807e33fd38d5794e1e965876781370093639f0bbfb574684edb9d5f2d1ddef46a6a8db8da94f2a75afe6b4aea2e15f428708558eb45ddc22688b51a179107602803723dacdf67700404ee565f3148a8326da4c668fe1dc178101878c96b2c64414d73f361e719954bec5b0d6ab2a41bd17a03ac9b2f2d7a4145222fe2c3a5a88a221e1370757107016ce08401f44c60c9af64d9e39dc3b9f143fa55598b3c1f1f8f9c5087481b6ca2b8f7624f326aeb0e07802672391141f9100d7d552268c157c9b2f3449162ddb97b166b6bbe8f545e44049e3e19b6320dc0f6e83f42d6dee2fabd4a256f3fa2b16f128dcab8791f4398688264ca082cdf20eaba10a992c9c0041115d8c27e62f00da5511be3f5a2614566c0fa7b38421570ae492b17e04cb85c10c95114c68047e865b6cbe71bbd6381300ed41f557f7bf5a8f69bf4215e8af3cbfff67377f68d5f4f5fe649d45633840af2a1f7aaef3bbae7e7643b0bc2b8ddae5c710be8576139985a3edffce88707a6322fa14a52dad6df0088bd8ebbfa23086e4d52451f966a3b19a5f992fc538689d2e5f1d3c7bacf5820ebd590ff56651f44a84723d7ac1d069dab3e920b463dd47d2fb0c9e507deda802200788ba99a38ac928e8301392586401ee84d20c63834e20e41189f95465ac6858d6411a99240346f8e8fb1a2e42c00aac9b101eea5011de7b82c129d9b6556a4b0947375f77507e633df7cb589767bdc6a6323a1ce60fc5e081c1f23ef59e452c06bcdacf41c3a3ffd4398e6254f544d16840698edd2fd55f9cdb066041a533a4e42c2d2a0b22d9f3dcd6dd8a6efa0382cf31cfa43086207a8bd3ef0c7c3d8ab48c911b25e7ec0e8ed7e2f5a623509141c542d4ec9ac73c7c69b7aa0081b432d6a0c7080c43f3fd884888daa1493c306829062b649abfe9b07400ed4eaceef2ceb632290b4ea90c0285e799ea7b46845cb419b2d64b9463c1f91a5c141559c54982bf3cb6c620134a7d628ed3b282d943a3545f1dd9042d2f239d70078b61bf2799b29a8ce9db69d8f0d749deba1f87e60c2811f8436d2e295171c96326ead0c58407d753d8f80d9f6c2f2b02d74d2e67def26ad6cc1fc00ec6c8eed51bc5939e4d7e54612f97c9e9731ab7826d3dd3674592df2460a395a1745d6a9b09cb0b074f4023e419abf993745460660a55734c3f4929237f9e300707ece2511ea23f1e26b7a5e68726832cb40b9e497e107cc4452e5ad91fd6d2d60fee339043f0b6d29381ac4e5b6e126b8dacff4968ee060c1ecdb6ab6ca2b80e8a7fbb7a42db8060050cf7ac321e79c89495ea0a42b5aaed98999ceca2f4256d5c8dbde1a4cc91841d34f284c6c21d8597c4808273efb4f7dffa8a4dfae914a8e5f411bbe69bc083525c38cc32c2d0c708ca611118033c2e6b28c5d895138050000726c5a5f12358ddfc82a00818b2da248b2bd9f278db22730446f63ceac40d0f4923ae54a04249c828f180538e4ad0b421d6c0178ccd3311659781523642bfb2c9eb8003cf1cbc82d4183aeb04d8b2c296a7e97f40a6119cbb482f6263cc81959c9e0314ebc787caac283ce7daf3683079b7f23bbaed1b01c33247585e160c5e321c5bdaab94ed516cb3f14232147dc82a973824c10de2914c433c0349262e0c07fa4460881ab053ec22baf3edbefb7024857a96d389309bf5f2d6108d8c93d131c542009da9468a88f66b400d15a08f1c361bf9ce019fbfcf2cefb04e6782221003922c00986bfdfa01d9cd4c326859bb9431c59e14c9f119a70e004ac8e06f76f3ae4f6c76e8092c2211719d7a4acb9b1a93032f96c99dbb8665594f50936a74c38e5681bf83855c2ff78436d41529c44f4d413ea059486db65523759436c089c0da61b5e2d5130a8afe0e97e307434dffa621c93e462c75c656b2115dc65186987d81dd7b1a9867af9e5f29f90bf9856c2a3827a6be1d415ef37988750044e9fe974069e120f46dbc3970c97f11bf13bd6ccdda4f933c95d2b2a5341484214e5d233cc8edb10cc11a0f5476763e30db1897cfcc7c8e091a0d0ab7d32018c798248c485a26da0bddd99d85194a3fecab628de5fdce8e543f28a17d6e188dbbb3e259f8eda4419f6e43119ef0f9ee974f2d46ae4c47cbfdd09162af4da46b0fa1ee72833ebbc184714cbcbaac4a244a7e4bae666a09ba064f5ef40d6c15ecd6aa92615c5e725983b60e304cd4e882a59d905e06a9d2ccaf9838de35c1737b9e2f675518d88d5ab1c7982a962a22d72ca361b4a70201ba01f8cb01281c9d06fe3ca664074b71ab33c632f7385fbb8c677182ab759c070cdd3c7fc1b8decb5ba8bb96c46a290535aa4192a6fc4b4a9b4374833d5c57e56ca6a972a035f88efe7864af57957437baaa914584d1e3e769452f025d0309b04f2c9db2eaef7e056b2c1aacb31e6c0eb3fbb4645e718ed9e4ae6dba828005d4ffcb89b08111952c8309c275878e94bf8f0c4c0ff42b80072c58ae85b2ac7f2210b311350a3f95935e3870c112131d4f169382130bd17610fbc3c55c2a444ea8f1d0ed3161cf1deee533314fcf05053fedc7d4d0ae771f84e436597616f8729e2f3a5867aa90e4b1bb36ccf311d4733ec3e8d9d00f85c69963afc5f6fc03e2bc5eddf5178da7fdd57cfc03d250d91baee927e0760d292012fb7f193ccfa8ab233e53a87e6f595400168ddbf03c1dfc7d745f4d46ecbbb83e7dcb48153a8fe236fc090079c1f8fb0a7661ca9e7adb2e044c4082a27740740a34047ec7a8ba3cc0d76746f181d9982fba44f4c22c66c11e203936232ff82dce0a1250c917768591d2d820fc7c577460cc325b41dcb20cb4bd193db6fdb6287d58b02ebb65b021387953e874e8fa941c80ddf14e16dfbea6dbf771b70d0db3e8d15571d809080408424f1ab25b209887e44192710f887e1d2c6b07d8c99ddac590e2a72166f0bdde430b0363b7cb0fb8db00a1e497fc46cdff2429cce901829ffd93d7f82f8c74af5cb0508fd6ae832157bdbde2939d1a600cde106a4f96d10895404623d0ad115c5fa5316bdf828d316e5c6da92754446b5b106cec67ae7bb0013304236424baf11eabeedc15f118af649033d0be4af981d0e743d522656c003046e849d75e8e170c16a4903883eb4c4dd79a1953ea14204ef620bd7381a554d8195f35252467cedfbcde722b279addc469d0970f4087ec858333bbe1164dc90a0a509a6b03e142fc6020af852fd35d89adecdf502d11c214a4c8096acd913fcbc896567bd13d8e7b5ceb76e9bd826caa1cc8c3cae40f38037265ec5977638b09f623dfdb68d10960a9c7748c77f988bb81ab454ba31fa3fe0724c6c685f2bc227a4091e63ac7e7ab2408b271880b3051d3a966f9421ce265b49d2f20e24bf3e0f290e6fef0f8b473129ee58edf8f3bbe83037b5a61ff897068d94201d62e56289d29a15dccec8fe9e62989480899c47a5c8111c65383a0281f1e07f29a20f89a10bda2366904d7ccda8685918170737e2fcade104fcaae2c5929e1b13ff1a71222892e3279f3564042e78ecd8b3b5827d5a7272836b65e4701fb4b89a8a4748cb78562129b25503448235aa4f018a5819434c3b993126bdfb2432abfbf8205fe95d31153e1c9eae4b90839bbb4bd04623cb3871a1bd92d863086a92aca757cf42632c8b3b9aed793b8751a22a3193ec1c7d886a770329305f5b1f6cdfd193905670594ba69bf35e8abc8924144a40df2883b6be3a8e9fbb4d4068639e4a78eea5d4ee826b11278bcfa6d32ba6747ec52f166ef4ab608ae39b7e210735c1b25d18920219d9b194c935be0489fd118de5103944d1c8ed17cc9ce8d7161dfa5c3b2838d479fe4a9cc4a4796b01653ee303cc649ec83a03c60554a0f51d155267109bf48496e1cecf34765e5b9e88939b6f2eb7aa3a427cf416c47dcdcc872bf9114b6e9c7cdb438ed6baa2aa7ef4387137a805bd2520b62fd1e209e0f8497c3cfdc99380c97cebab7f5a13fddff8b65047972bc341cf3188dff55713aaff22346c30ba6e807d7e2caa41730fabd32f1b94ac584fa31926298a7a8c2cb10c646727505bcea9da9d4f0afb091bc1819ce1ae6fc348a63b459cb560e4cd9ac2029e6097d72fafc3cd625eaf2bbdd89c1a1e32a354e90857345c0e11b8deb3be82e4052fa814afed96e56003a0439663a8cac1d821aeaf3a918acdb877cb41f2de5131d1dccb1e1555b1fcf0305ad07917d0517903c4d2fd44078570d161eef0ee074f5a2bf6c9ea03a9def823b9c488d6501ba5e692e68690f7129672c0fc3056d5f8aca317e8e2ff146a1dc1e82b75d9a1aca0c1577e5e7288157781f25752fbca2c056684c2f5fa848beaa6cca3f6cf32f46b0882bb09dbe72f5fe09704ab7c5b7a8a791c36829fd674acb74a5d81f903072f1697f6198503ffc24ca8d4b62af2dba648cebc479eabccddce0958bc82cc780b878501fb5cb6ff9bfbbc5790057fcbb6e3734861133d1932f204c107d217777f289766de21e2785d2bb84a003b9cb8945536384e1152b3c0dff730871602023f1002eb0883d886f537f1484f975a34d543de2f56464deeba9b96dd1c111a9b58cb82b77465811b58595885110119d70cb7bb66f8ce15616c2d00a116f697082849d003a8f4fbbe88708fb68df95f2c2f860b6cf4fee837cf9ecd9e6787fde7bd1e110b60cac5da7ca4fcb808450c27fc03b9ac07f0652367c4be83e605cf8d105c874f4d786f0cde37ec70c235c771e17d89d1c6cbf9474145a7140858450a70f5bdae43f69789edff158e6af81d46428b10e799820e9fcb21a119fd284201f998f8f640eaf95319e27077e1a71e8d613bd5bf597e6f4d3fb900eddf8351bb2c61e50d28759b8b0e1690fbbfd070d2b05861e0a343a6212302dd84db192f79504a4c63ed9f75e3a6d90bb53bd0fd3f2833779e5d7438ccd001baabd4bfc4afbfdcecfccb6692150d4f90dcc0fbab7c20b6d1f61f70b962fa848eeeee7273851f0894da8408c3724205baf0833c6067676b2d65046041a7e8d021cb22c08d4d08facf9dc48d7debfce494ae895234f37d3db6678552c20c2e5e8740cac0daa123c692fbfd72852b83a9f37db668818026fa87b215523dcb32cdaaa9f4b14ae08026889d8323b3c90660c0175dbd1641f3200e7e1b458fe921c1399fe215c528ca40cd26f4552dd4e96c7df30d29dac42ce7232bedff8627103e478931ff10dd182dc034ac8a56aa9e1a24d28a18180ecf10986d566a91e37b9c3a70ea2ded378499d80f6049336197d4a01cef65ec0312f7e19fc1870fa074b979a5ef0acb4db1e65540df4baa53c521336d2074a1d67c8450de282298e4ff2c0336a43b5e61b117b0904efd79219157a8bdcc7b446579752b29a13d1ca800415d6504a7f353df3a17ce0334909e216d6e4a77b4b5bab5e7c4c5127831a449e11e294af1076f3e0fc3ec3b232da8b131f26ea3a1a0991c784e86a5cd9331eea970b34a61f883ebf88d26f0a3d0e8475e661ab0ad775a21b0dc2466157f780694bb7421501bc2b451e895b756fd4f586ec43a9f9ad8f3ae2c5350df03cbccaa0acb8877f2a07d05043b440a3d4039e3612de27f32b950385d1ebe9a0899c6474360851875e89108ae0566536b7a2da7d1e904d2bdc8f67ca2ad4bf29dde88fcbe6b0f64257169f10b55d29d1fd18acbc5935ef9a567d35600eb6154e8b0df6fed195882a573caaf64af90555cea95915bcee7414042edd4d517c31cebc95d0bd028a1f0316604ba0f3691e227a2c0a138c739c9f1f127a05952d5f793ff32c84fc2e43e3507ffb058b10bc61d5716365d588aede4a6263b3617318d1491964c68a03f03e2dff40732a0c6b87e7168fbd07db19e2204053c4ab14015b19953398ae441a84458eb658c1c64a2197c3f3cdc649dc44162aa64788e780da6df91124502ed61706344a746b9762cc2011c28dca9a36c17e5665770fd2b78ae58f32b7b540e63b017ced77bc8c4b0b13d3c2031df4cc92c3a6391afc0a2c0c9c9befdff947f3bddd424e56a0c1b6f1c8bb1350416a96ecab171101c8671d4524b05f08960a6389c1ae281dead4ff0a1d5afab5f487087028f1950feccc4fc21153195cf300ecf24af370b42fb8d45b44874b02c7b3b5f0039debb4cb218c6dbb733b4b3007e450837a40686ec2b7ef17cff0d4e50e693ff84c2ce917c1162cd375b8e6441d3befbfe93808e62dda7bbd163478e18e750cf57f20029f6e88de2d1f2d256143dabb2e5f55a65256086a3c16cb21e3b3d520602dd55ccfca51d9b66bba3dc5055356c4b8783506aa4551a8531f99873c8192815a72549be032a2b1b4a924b866fa0a4317732811d57b024c580a37ef4515c5f1e25307b0cadbcf776be1116df50bb9bedb988e7cd31840570b716e44f1e7a9f80a6c92821ad734161dfd55118c976c9ccbf281cc824108b3eb48b11eae7078eae31f4195a1212ed9a111c1e503a9ddb2c1a2902e4996060b74bbba680b34d39044f047c73af4a47c50e6f4774dd28a8cd2208664d54cb6f5f6b6f643f549dd4076eb68e5a952c4212c57664b6777ce3cba24e5dcbb663cbed24bd6c727cb640efb29b20e9832d939007015745d17c0c2147214ad7222f1ac660a294a55151745545c9f6d51ebc62952c0e44ad730dd73e44ec45be143c037e6e7185b6407129ccd1cf2282b4e3ab75347f2bef6897fab24b61926c80ec3652b87ce8eebaab442d466e307b2b6664a9293943881bd348f10050023d4250931d41b13824fc551ef61b0f80ab097b160cab659bf7430fe17d8041c872b92b812df1d5fda2f8f8d303e4b03809b784e3e53f0f102bf224d51df3689043d9f9f3f567e0a4143c36d765f72489b17aedfb69578ae3a4d9b4c26c0a8ee77e42704f431ddcf95f92ed861807f4f71ab0b6d10b779a68d082c67ae8cdaf1d603df44b8d0e861de9d93040c60b7c039c5d4f2558649649ed3d541f4b1fc6cbe0e1e35b3c6558e92ffad0f1bee5b77f8776bccbbcbe34bf6a922bb4f5431f3fefe7a1d7600041ba542a08cdc5acc4ba12a6e4b7c5823f641af45e09274447d94c0d71beea10a6211e181d9901493cb6a1ae08bb506c1fe4a1faf41e293baf374e8d4dd87e7d3daade2a3138602b86a317a0311e4f3826bf2cb9e76e41f11d79fe3006790f69d95eacce5bf9704608399887d24d29da806873160a3f9df6a50bbef983f7dd8676c30fbfd8797e4df71f00b814234ec59d651414b30af8f89ed027dacc8c518a15f2921f8db2a35e8f28f72e6d4ccea7af2c8edb0e5df0fc45d0de688f193654c0549be408726fb767d2f79ba00584cc9aba16b7ead9c152b3b2eec72582ad6756593d576e1689f50150dfb1d58d16cc26db7dc3348e293121f842eea19dc20f88768271c0fcc18a78192fc1acc4f26ea4c17c498a0bc5fa99a1a116534432894575367c3a52012c474c9b09d67a0f9d0e2a7868aab254e2cb25f6bd932599432da822dc982582352bd1e0e0184e7b2386b50680f73c25a2d3dc797633ab6dd5c1c5758ca9a647c898682c88c908e013a686abfb761b14bfb4034fa022d08fce958b682b10c8b7e72ae0d3df9cd01240938c87bf3d6ca2be25be5a821f8f8c4d562d0807efb442acec2068e56cff42508d457a791539d1a3b0236f76b431e817159c7f98340659805fa30b2f2d23be316b9780ac2cc1f5af3983c983d3ce777ca4116e6c700bbbe6ae7f59ccc8f0a0c3b21df447a6ed942bfbc3547e39e89af3b2c33083b2f571ee7947ad848df5f80181f966252cca7781dfdeaea42ccf405eda804d1dc25f8dce3e6772ea2a375e3d01245a04aa105f9e59309ad9a8036d154b114b106eb1a97b12ef2231399a9348caa3963b4fd0ac14f3fc5047224ebb3492bae7e23e7bd7f5467fff79108663360a5fc6c84b329d874c7abb780abe8dc25e3284c71e0b1e10fb643791726f29654a32d209f609bc09b216a4c3f1bc1a55504a44ee40b8ab5145e581c1499ba39eac242d70ba6a078eb267a308cccd9594b9028f53c692bb065a0eb90e17db6fb97fe278a9fe0d67d439bf861b9e5cec30c74c7989544301327d2a4bf5e95b69023d0debfdea5ccdfe71ca9a4a6bcaa8c04e3381be2b0fefc32324657051eae0b2056ff6e6ecf15190861730fd9ac901fa34bc806f0742f943df73db1c71f473ad12d07bf573034b2c16bb210b97cb55ddd539cda9788de51be31b06a08295fb2a5f6f49c19ae97916101c83e4fa171c43d9e3f90f8c196b282494677823ec81a374f3444d1d737431358df4d2d4b6f94993cb92fd19d6e7c1440d618f393d354df4868fea77c825a7d2b2ace128e494e7c70220db801c80699d9f1bb280633159acba5cae1bb2e855afbc575ca73ad5368c72174ed99402ce5912f088b30e176bb2216e9aac17b94615784e6b310e85e64a9cab29cbdd3a5cec7e1ffd93ab81478f5011b89f94bbd61b62f6cfbc2901853fc8194a87862101a4e09c8f0b000879a360d2014cb2696ed04813a6819bb8417277efcc792d9b4e16192b3c92328944c23730be412219c1ebd99c3d67cfd93d27e98628a51594c6a801ce411243a1502894838e88ecef4d50ce524b111c65f93e830b7894b29913a4c9478f7464effeb1b7206956c86e3fb9990043f66f26fa493bd15240404a40969ae6f4b276caa41b377816a54c4b496ba552d6a7769a6690438831ab4f163ac35b023ceac84e8024740e57e36a5c8dab71357fcee6cfddfcbbd4901c5bbfe4c81f6663366742ca1881c79e31319bcd66dca9694612878edc3e9bd5f6acd074dadb896c18e5fe1a55b87bad3020059281204286b808c37d76846a5481bb6b75c14db342c2723149b796b8e80d8e72fc9032fe2f57e8989e6c6712b88619f56b7051ceb21039abf55f478dbf60e6c8110ba449760cb2bb62b0e13147b52d43c0fedd777845c8e94ab5f66905f2a37358a5fbacdc47bcfe12bf495a9d53058f38df70d185842117330c97e567470d6778c3456baded9cf6aac86c08c87247f6e2b23fd542d23c5648173b59cb0059ee4861257b54dd04417927365f93e6a2ff92aeebc2c9e466a54acd454fe2a24f96c8f225b9c64543e09b8b6c606042910d8d1b1ae14de8673ccc1741d5f822d324b2a1f136de46788343918d0d1be18d8c173d8d2f822a82f2af01da27704b71f1c5631ae0c380a1189dcdd0825a8b7148b482477afb3c0c2f7dbcd4c2c44b2e58583e9f170fe3fdc5bb8edc303fca40e3c7518d1f411b3fcac8317e3ecd73b45fc613c67b5ed36423acf1a2f182f1a85ea38edcbda7922f3f862e48ede7d8e5c57720fe06657e0147193b5eb8c0708101d22c3f2e5fe32e304a60c21f74a0745ed059f5fc8c2ad02b3535e30af80558539509585d20bd02022b0e0b58554666d3138eb555c351c4371c675f14f0489764ba44cee8c899fbfe34076df2cc70b43dc0410811218a2cd22478f59b3b2a058394f1f7a8a68986a147fe5e9370cda0e502560a563588ec5f6f78f4bc3c2f2f71210f3dd8cc430fd88997ea1529030689c3ff825b5019e4d15933ac80e7cfe802f60821659284a91a1e9de5514921458a9d29a4d01b934c6fd3e451518193e58e1454f2e8ac9d29a864674d13bd527176a890ed5011836d21491ee9cd4d14e50fdb0292ec4faf78a99ba0e71628b0dfb8e8b7efb7b74081476925f77b39c277c113b47fe7c9c5d66104feeedaefecedba2e033256c37dd7949cf1d30ccdfeb2658f033d4f418f114f8e8bdcdd41f7d9113a82dee44c02b27f4d35a00922a88868c20924720c90441249dcc00744702108940dbe13858de2e006f4e625f9b181fe0e9d27c5819cf1ac3c49a48c8ae54f6f206766e81142cadcf0c91e15165894c21e2164a9aec0082c2ab2bf4725230978a43755e9bed39b089c01b210015795cb006b8adee6c89fc6123c3a8bde2abd799e1fe96df4a876742a8f7fa5e0e9e4efcdcf02eed7e0a2d7c400e7a85284179a9420082d685004085cc0b9b5c080022c7650fe176c2939373ef28f9293715e2e3271b9c8c3478e71a8c65cc662b2b6fcd081949aaa2afffec870011ee96d9a6a623525ab39a918bdd1db8b0f400b523ef69deffbf01578fc28a5d44a39e33b6414018f9fff778023fbbf6769c545af554aeff91d8a2eb690509e5f5d5cac21dda1c7222d6385a5532778d24bd3eb6fd6b00273df3d49caccb077e82db20d69c7e0f39122bbb37a4aefb091d8c8a935aae8b057dd7d447637f77389479be2a27bf43d9b0576017612560c23f0f86965daedd39a261fb216feb492b05cecee295370fae54b96a84088cd02771417632ec6a2b8e8dd1deb1d0f54a30aeca2d680021e3fb04f142fd9ecff895939d2b5b6d2d2357ca4e6403f56be295e14cfc5cae7ef3475cd470ecb6e2d2b5f61a5921c59b2722d79b99c4489128b4d91d1a47869742b53bc34fa8d6664fcb4aae458f1d238c779a4c504892a309c9d28332954a2d8a864973b3548922b2b499733e5b3e4d3fab83e4c3e2f2f71397079fe3452ab1519155aad4a0e740a6b2746a54489c2c4f5729283e739bfd26f1b96641c9553fad9e10945f386a25985e2405d766ac0248759eed0e00ab93fb3cafc1fae2ad35565863f5c3d8576c59496302069242c8136a1a5c819da3d7dba605a23cfc7c02aca4422659e90a5290329fa5b1bc23e62e97fc0e6f93473d538fcfbc7b96a623ab159604f1e75c4c8bfe1e277f7fbf05a7a0f17fb270678d09eed9092d620658d945352a9e3434d73b30e39e3b6e5a24db26a9a8fc4d1efa022f2fcdc70f38c41093c5a16f861499909e620d9964d6297d8ce71d1df4df35a96bf65f5db56763fcdb26559d6472633c4d4028f9c14d95f76f2e5931efc69fa3147fe249228fe874218f74f93a344f56f7eb83198a174440ba02548824e0a35e2f14924eff00545cecc9067bad012f2133904d2d44da000d1b119f6ab09786c26729a0939d3d903135c406f91e90238fa5fb5f23aa148ae7150ca386d9ae9476bc531f40737299dfd4fbf079bc304000e7f9ac304a5e8997e7d29e330ff2f584ce63fcaeeee52c665c0008ffdead7ab5fd9fbe5a5717250f0a47c2b1f4b5311229038116536440fa2c031d1e084181550a0b302283329a57c59e32d4440c2122a22b4d080d27feac72e21ccf2cd027e40893ddf4fea3fb96e2e5bee8fc938ecb89264b9a3c41453963b4a54c9ef257147899d2c2a1125f7c7dc707cafbee78d40b2157395a71a8ef6bbb6167708488dd3f9367842dc001879d66a71b6b7d2e99f1d939bff46c0230d615c9421fab98532e52395704507aa27e8000c4f4001aadf234d0270b2e409267a000515b098d43f09b87ff608da2ce0fe9720db5e5be08da3fbb44d704c7f3e7db69c95c5bfc61b8491c79a71678f73ae2557c119b24d30e5dcb5e0591fcc7022cf39c30929433ec0fd330a5ab9af761efbd951dfbaad9d87e3767cb614b0672de338ae725dd7d95a2bf793fea4efb50d9ceb450b7874f9649fef1f37e2e25cad6cc366a8e4f318cb649ebf0002f624bb95391b0c7bb8f8d25b0ecab3b58434b56c8e5ccee890c1644d72900dc891b715596621e3d19d9a25ee4bdd930200c50063b73804cc60a3807ab2d4a734cc91c355ad56ab956ab95eb069eada1c794d5553d554b9a7a96b2ae81a0cba966a79cb5b1e228542a456ab837d36af613ac7945248391fa4913dcfc27a9e3aaee36a571382f1a80985a8e72dccc748eb22950d130ac96b05f6247bc85a8c4321717e689a1c15928564a1d0952c565043add734cd90b9dcaa96aa455be208f0f728a53332cf252edf41d2b40d240eff570a075ac8fedd8202eef7f1891cc07d7d1db8b0da399228c02d9701aa462a193ea1296bb55a304f149de2114bc552b11983359d52ca27238cade5d1a9d8951bb39b478c07f8466042f565e8869b87c41a6681c0427739f0b917a58c934623d934c0f48fc09462d60545361d0e25082185eabe08aa3f0f70940ded1ccd510c2c603b47610d0c06b3d42b1656621992ae6f97cbe5b9eb46062250373f2000c5fd0f0140d5bfe9250421c90f50373f745572505ca833ff878ea207a81aeab4cbd52f1a725026078583b95eb0980c16493407ae092893834229e7794d7a4d5a9d83598e8be27ac1626da178ae26d2343343eea6c04f40e1607246ce7002eef03a01df3c92dac5c15c742ec64571f143c3b021524605d2b483d4828371b069aa61c33cb9735c2e97cbe58ab95c9c0c744bc92db8da3f2aad431b17a5487ab6241cedc35a8c4321998f14ed42ad945692cbc7c2041e49d50526e6c6b49609343401a4e0a69476cbdca18c15c6186379049712d9a90d1260f76fb4a123f011d2d4b0397239a343ceb0402e1bfc9032139023ff9a142028db2bf0286dab297846d2563131b75ead564356ac966b369bdd66d3b4831cf96b6181988543a48c0c23f0e82b5f598b7128e42b5f75ae8b855a1d20c30c37fb652cc19fc7faa43ea94e5429aa12b2e765c8ce8563023a28d9134a69a528561d2b76c0a3861a1d1f3255c0a74c012b5004e6e1a2ff94d08bad3a59ab43ad843da9954e2965051d459233359fb2bf0c2d2d32f228764f7462278aa2288a1408558aff7f9b0516ddfc793903ca3e631c81c70aabb03a84fa84a4c9d138627286966a11c61a45ce4c4fd6ee96b26bb591c3bd9cf11a1773944eaf5a6b6a38fde9743a9d4ea75395754cd040ea1093fc3f3ba9bbbb3f5f0dd7252e253eaffb9eab0fd8f8e82165d7e5c82ce7286701b2011202d26479344d8c8dd998bd3e593c204b95136b105fd4c923168b8143401f362eb68f6a5226a6697290386a905288a28cc2a35d57051c8b3342d52a2bdd2a95ab542a15cccc9067dcc2e0886c83ecdf2a1aee7094b249644e3a67112244dce98d94f19737aa9c55371129e372c639ae7b761721d24466f79ce18dbdc959b16a54516b7873d32a95aa552a15c7f29e2882470d353a3e347d72a11749a71e353538c70496119707cf7900e51e6c9e200fe803a4610f17270f175dced11c59d10312045204d264e76848d3c4340e184d8218ae76dc14afc82e03067894b621369bad07576d8cb531b621ac19c0a4445be4c89123c7ec9e3946fa8db411d52a4957eea59673a3f188c5704ecbd42e67d24956ab20467fa965ff97dacb14e44cbf27059907cf00c85df8cdbe2528c11ccc09cc55d0b01c33ec28359e8045369115d1cd092c4ac75a4af544b930eba4f3249f9622b2896cd3d4b116d9b24ff1285efa66df142a3523b61c2b5e1a3dc977a5f54939f9a8bc34bed43e46609f23b1cfeaa355f96e1f9c4fce91ecff41d2b5c2bcd4475c7ca9f2527bb1bd5879b9e54073bf3bf1d2121793d2914aa9aaa9d862b84ff74e4771a0f96325168bc99638f152bb116476f1a0c92bf6032698e468da5dad7599181b4962031d49e3b1c6e17266be43a144f6c641f6ef969c9939b2a473ce3967addd72aa7234f8d15cfca6786c42f1cd5a6652c66f88b429e24725fc6652c63f6cd5376b93ef78ec9b7db38ff6d53edb37937db36f06930ab3b06121bbdfac0f73e4a03c1fc66681439d0f1346ce80ba1c239472392177c445a71d37a563d231991d93ecdfdd8b764cbac94de1681c15ae368e919c2396c977b069e2a670533ad7d8e158193bd7cb4bee444af6e7ae50c9d7765c27a59b75b29dacea8c7439dd112f49186b398ea3f5142fb54d828446a3d51640b928ceed644e4a76968b5c92ec73b288709821e7fd2a3b6704c80b2960239d029b72ab91336284cb39124423912727c49c819a20d44522679274eb0849c305d138fc67eccf6f91349c101287ff9c72c62504e32519481a2efc80cd9e69d21967e6beb2e45ae52c88a6e9648dc33f88dc94ca4b2b85c97ed3c92a15f5e6015d6e5cc4f1a19b75525cf418aef8f7cd1b524a4a2595524a49a9a4a1e8625349aba42fc09d6c9a3a9c0e67b68a66cadde0b4d9c96647c54bb35b19813161d245894d4a67b4344a1a122fad3a5697a46bc57438d9bf5b4dff0e678a8a498eac83c15446bc34c264da46aeec2431925d8a97665e9ad2d168c76456a566f39ec245e1605cccb91d2fc9bc44290d7fb8a474730e9122a4eb9098425d5228a5d425454af6beafbb296ddadd949e9a368c9cf1ecae299d944ef6d2834e96fd7df8113f178621e9e643678b61045ec5c2ccb3e23fa629877b8e999743ce80663fe4cc4c8691fd830cf1619a3afb554affd800ca39a0e0fe318797fdb343e400fbf775b07f431dbab773b44311165c61d540f52406452089401035d8020a5848f2031aa0fcbdfbb27ef73a707f4322967b22ddd79728afbf4ed4f66deadbefb7dcdf7412e4401175ff012488ff902fcb29673f66b3d90fdbf41b84273d9013917d622baee32938ca3bd9a35f8d2a70f7624dda06f0048f7dcb33dd53f2108f7edff76101618ebb97a5861570d13f035206e38c7d18f27d5840b8c5450f9b205e87cc9197662ff1917b0ee9a921a9972970178e720766bf6f7314459638204528f57f66febdc1422d1c90251729e25a6badb5d65a6badb5d6b006889b7074ec7f78b44f5a3f0ca0b6290f176f8e619c44755525bae99452868ec06328246766f8422f926a0264a23fe953a9141250fe3a6a76a248c90e44a52d65154a382ef4e46f09780c7da15028140a855c42a082fbc7cf4ee69c73d6c9d5397f01538705536c919574df85291dfa3fe8f48b6e134d4124d00cf624fbcb1a5584a02c9e46d224438e5c26fb5318501558ba98edb4328a8047f186e8a2288aa208abb46a45f697a8b62e63427090a61839f219d94413392463313131481c261ab27f0c0f7f1fae1d505182222ca1092cb028928216942734210320924c210072e47fbb3106c7648f91323199c7b416e3588c078d43c2d66f510afbcbb94493dca094a8063daf24090ca05c00ff02c81969fdbfd085239800092b728a80722a68f0842756b084178e09dcbd41cffdd921a308729643440e32471e649aacd76e18e50e874c5993d1962b1df30de362ff70d17dd4fe650f4286e001a4c0d4838fdc24c447fe57820881b997a3ace19e25b863447c9aa39613cd9da0048fce8b93e1042695d0ca3d78064120d0cb19364c924cc0a168fe29c708caa0183662b8a0dc201920d2a986076d81a60706293f0b430a2ced179c7832a63f1b293cdaf003337b8cb4e3979b40218f36b7bc0037b12293a048c24d014dc611b16ae29393b3240611b19d26ac8f885a8f262b8b4334db3dfb7b55c1238730842c7b14b0cd72e70585972c775841a839e8e62c0d35ed38ae524a029f9402512bad16003394767751b4f191ffe8c2591b5ac33ada4ab94a63e0edb81399ba57e9f4e34e29bd620afeb201d4b46972273ea24f298dc20e9dbd89947949991ba69fa239b24c61b8e6b16938e0dc3c78a048f6b7a148eed754893ca45cd8bd923a3c4fbfb590a68641a8855e4fd84de488fea5b4a7c8f4fb2565e8cb5ff8c790534a5df4d2bce1261be6d07191f02414b99f5a3cbb4956e4fe1ca72320c16369bc74b2db2e32db9f589136a64fba22aae07d764c96232426a2e41866ad575e60041643e0029421a4284d4185c3ca410cbc20f3182819c1c5fe28c82e450fa6647f981d26709065f0c00aee1edbc1e2ca6a0924d090a024154dc0108620bc9c8024071d0d74821004da4921fb4bc1031e9cb23f37e75492e4d34038a51d0593198c64d9f16c01e1a316976aec4007d9dfbbb14f2979dac04a9e73869f4b8f96ee3071c246761623d8f28ebfa49ca34b29a5acefe00e3f64291de62275272ed2f9d29920673ca43e9032b46966485f8d833e85a2a239744559b4455db3355bd3355f13366353e637fa9a266fcd117d6a1de350e87f14b3aa9ba62ea4af39a226bae3e1682dbd1113435f3117297dddbc75f394ab3cc757ce8ac564335acdd62b56b75c2f98ac0519e243a7e8e954c3c3c70f20018082473bcb74ce68b3366df3468ba028ec298a661b12b05cdf6bee9ff8133903fe90321548e3a8534e39e59453cae7b8e93e398e3a71b1d2282bd7972b5aaef14f85a5d3fc8ace750ab96691ab16b9bee75fd350f93f9a86864e6b1cf5eb5340ce74e84f9032f50300058f4ecb920aaabed7a6a908aabedb2ace4f15a6cd51fd6ac547f56bbd1113932b0c4cae361b4cc0d47677c84367f98efdf35c0806b871522e561f86745d5398b7047dcf0609707d6a336d1937c09246814757b9a4133750574b1a335cbf5f3fa44c0f81a5ad02bbca9790261f72d4dfc4a1f813dea1ade11a4eae882748fff163bc4615b8ad94f26ba6fcaea79a1a78f8b0a900900c0ca9f4717744f627d99cfc2f5cf851ce897bd4a753147e9c3873a0483ad5cc1005814798ec3bdc20330c0d29e32d69a5b4526a8306cd616e41a3d21ac2d00923924e352ac0300e238aa228762c4fd64001964ea4ae3891b292fd636e387139693da03ef73e766877011ebf86a902d850fd3e5e249de6fc41cdfd073449818f0f2e0c2f924e5524f99ffcfd33165f12aee33acf735cd7bdb51cd77121f5e857e90d3db8b31e12632931c6249228fe4f1ed32451b21d85319e1877ab89e8171851abdf50844715b873ffcd01fe3c621c7a3164828ed926ccd416d8b379cb76b3c5405140ef5f6ddeb2dd6cfe8ad9eead8f1e296af316ab07ebc6ce0dce04b2f161b3d3a374dfc6c74e0f1b9b95bef595972c6c24929c3d95a672eb0d75b6ee9533944fcf23e9c7f4aea7eff53ced79a8b7bce5a696f7ffe1a5b1a9b82dbbbffbbbcde79cd3845d4ab780171492011ff937696cdb4e1052d93f2e6f13dd01428ae563f97ca0e8e2bde18f2629ea85a24b457483d41b2a10766e93d4bdf73649a5545246669b1e3e66cfd9f88adef2d634b5cdd6b279cbe6ad4f87c7715c65e576c5c594e3b8caf61e699ada6623d948beb20db1e1d08bde9aa98fc30cc1714dfac891bb4a95b362a9e48c91ef5bedd0c08ae338ee7f9a82c891bfeda60129935558a8542a95aaa3b994b81e209e5a0568adf487e7c74e91c0042748354d8e150b7274cade1c2c7387222965eccbec13b8e234855316a71fb3542a954a857284422e2866e779dd8131747e57ae60979ea727b90886bc24e7cb0cbab8f87d20ccc7b002a6d6560a8eb2b5b5051ecb0816ef8628b6682d57abab5cf9542bb5456bb95a9cedacd88eb3419678356dad32406505e6e854a73acef4b1e5f1be102af33300925cbc37bce1a2388350c980907bef1217932ce051523909b9f7b25c1612add5a2b5682d5a8bd6a2b56831ff23feb20bbed7e586a1ef74ca2e264e602e262f27b096f8e556ebd43ac9643eaca5d1582d3a9054ce392bf73bcc4cb949a9fc82cb077af6e637ebac35f0dcbf058dc441de466098e6b18d701c5705a621fb677f1ae4cc05a48c3461408efcb5504216a8d00f84861deb2892a6837b938cca92a166855839ac91344c1a6a38a341ca00a1d168341a105927044ed6afa2959194214bf6412962193ac0230963397d5005762bb2a5bc4dc037bb9f6818c1a34b0e61a10139d3d95da48cffe97482424ab722fb7b24196a14d77de72d44c02329574a2bc9e59321011866a7490639f28f418a91d1c2f4a767d26956a1db5a8c4321e9213ff990d3e4281f4337b03d3501d31da44cdf1c0eb9827dec151217c944f6e75852ca2127f0e422177ab1aab61045511445519c266b310e85fe45b1c51669224d143d51a4e98cbd849113c8b2906f085be668345aad266766c8aacf5bd56aabae754dca4cc163cfbe50d45e286a5bb3ddba26926ed45ea686c1aa5fab7ead5e40aef58436f477dd6cd1b4a17843acd96e403a53c91c076476b2ebe47c8e9b0418e1c0719c18e3a228d66cb795afa0ac3e22a5d56ab55aad56aba5f08b4bd52dae6766b17988392709f36a4186dcf717e5e069ba21111d22df8f69fa844486786e5d17620d9926223a369eef8978de7b51bfcdf7d73fa20e1df0fd7d1d3ea983170eb950604f28eaf7dc50d4a1c8c77d996d3ce10d098043a4113b8eb31d5783d46ab55a90d495c18c2bd8e65822b2cbd0e974b2f69f047a1afa150f714ed3e428693b9da4edc6719a1c61a17ef886b0a1746678bbc99919f28cffcc6929f3c54dd794cdd8a4021e6172f20c2c3a1bdeff74018f7e9b267f75a1fd3eeff42665fc354d33f59f70145f377cbdbcfacdc412de70910978f42af946b609e0329dd25a39395b69a48c7f022a9700ce3ed7d6862729e33a864c9344c97c6fa71a1d2efaaa6f520606b755df7cd537964c41cff23a80421692f8dff5f8b9a10df3ad057ba859d45fd381a20e4f9daf0b7f9ea9a99a397d034f52c66f7ef39bdf96f8cd6f36c7c50b9ff6c051f6faf35cbebfc2ba4229cb0c95b0bc3fc751ae57cd9ab44e8a97a47d99afedaee781df7bb2aea48c7fff98c1e48ca7feec0f03bcefc302ea3eec7d7eb46e27ad94a99e951e7c60f91a498cfdf5e7cfaf808b40eaff70d13da11039cb1dc294a60b90f7177df62304e262ad5fd89eaeefa2882be0a915b437251f1899cc5a8c43a1956cd52b97fa5e7dafbb6b75a161972878cbc539bab60b569a248a7e877300b3820cf624fb73211bac5a28ce2ccde0c913b2139e4409c1c095e7cf9fb7285c480110495891021b0891c2882594b0851630c9e992dc80091fca0421bc20bb1070e0842654d9a10021fbb7d8eda3fed313aa44d1852f04e1044274482cf9c113206021092cd8400a4ed018021e5d44dcc414d9a378a6f0a4276fb0dc89c248fe647ba4fc6e4d9385cdd1fd97972fa5add99aed7653577573e44c63218405b6427e03a469b67a34cddc691cf7e58c42ca5c6973acc538147a5948c22e4d4d9b334d31febe5d59966d5997bdb44d2e2e5e28a0e56364f916669bc892b3a478df89e72cccc294c81796ef23e124dff728a8047fe3967701718210512daf0aa1f0c700453e62d0d4345d9513a127b2ab5925acc5d805c61741c588f12edfef22ea175dfe06c687eec3086f11d49f422fe31f705fc6fdd0690cb9f8f1545112f5a2ffc71cdd2f828a018a3ae4e10112e5638eeebb84373ce6e87e8cb008ea5d66f9c2084536303ec6c308753a50bf3fc64b94c813fac081f12e0f23bcd1f1e112de340a7fcb1741bd8012e5314091cdcbc7f05e5edee55f607ca360fccba3628012e54aa4a9abcdd17d276cea49be1d135ead62c546ab5171f14a9acef2bb69adb41bec6c9e678997c6fbf278ded3f292bbc9062d954a01e1c1b9ef51b94974df73e4be07c97d0fcb936449beef7159eebe2e6c9a7074680cb05197e625b963042a5eb2915fc022a8f9d99112d9c478978ff12ea1488746b97ca35c3e868f978f011641c508bf9c39ba598443f8ca3df80bf8ade6e8dedbe7862e072102bf78177f5f8422cfbff27d17effa2228d005c812796e5af9be8b50e409450e70f12fdee3093d397374ff45e849cdd1fd9b7b6f2e5e897a411f9432f45b1e3f0c172ea1c8c6c5bff817948e77354db7891cdd87629f58dd97ebbeee0d89978490a64b9ba3fb335ac899f9f7af179aa6fbfbf7bee7bee7b2fc058d32a435e2e29d14ac99ebb2cdf6bbb469bab74bcbf7bd0eeca8d038ee775ac8d17d2b842a0391ef8f9e9405bb2a2e7a2c1f057d1cfe6ccbe7f95e7c2c2e1fce9e8b172f1ab7bc007d2e2d1f8c970f0f99db45ba5c16cf7b5e7eba2a2edeee2665ee7bc0cee6e27d0eecacb838c36e0a52e6865d4dcadc16d0eb5e53e6b7893d21ef625efafe7ef79aa6fbb2f7354d93e5b957beff013d2d17ef77b569ea72ee6deeb8c963c4bb5abe2ce168f38d98ee95ef7b9eefb3a3a7b878ffc65ad63ba327cbef888bf791ac5cbc74aa5cbcdee8f4bbce1c0a4e232edebfafa6e970caae0fe48c87938a8e898bf73d1823e0b15be5dbe54899fb353ea99033d70b52a669eead3d2a17efc36c01d7a734bfddb738e4f9f99aad697296c53f86666ba769fcd638a29033ee0529439b2687224739d3e491cdd1fd298857fc124253e027f27d8e36cb9796efdb70c4358f2ddfe7c2f14e9179e8f2786ff7e65e9033370c52e6fe7dbf35cdbdd238eedf1735c1f64e2955a678e9febc3f6793e6a59bb5f77a38cad8fdaed2b6505bf19287f70300e5feebfeb51efe429e6701ddd734b91239ba0fb23170887be5fbdc12b2e42c17ef5f24a4787fe498e4fb9c6a9a72a649a403fe966f0989b43cfe15c7e25ad344517d6f7274fffe5f7bb790262a9b31e4d1592ec218461b31401e066f5c3c9111e07711baf89697a81bfc2e423c47fd38b47324daa1ef4b54e33802eedf18e0cff7efedbe2775dfa3baefc9a9b3fb7546abd96e5caab66acbf582c564377aaba9aaaa39755559018072ef8ff796ef3bcbdda9ec3e65b5a6a908ea3e068ba0a8eb4ad47d0a9b268aba4f6372a6f3fda8cc9dcaf27daf3f975496eeb456eaee7287d5c1a367ff589dd30861efdff0de7befbd9ee7794fb00bb26b61082cb6101b020aa2408201b8a0039b1528a8c10e8ef0b6f0826e0416afb85984239ec0a117ab097011b40638f473098cc43dcff33cd204c1f94e5069010efd34c069863d92b2277a9ee779eec9861d17d6908672ee248102ef147e51e2c9183761f93ce44cbffd4acaf2e58b241cfca52c028c0829593e922bb2fc1ed2d42690230f3b49d3348ec4e1ef1d84671624301039e392a62706e4cc0c9ba643297190802509dcb3669a1a67b691d8ec23486aa649a264990452c69724712df1648c7725cd072cf79efcf940d8f2630c3a548ffa7e049924e8e5df198f9c69f9df34fef2012015d0f2f23da980efa5686d06818d725009e871f72da02a8402853e78b400e79607fd28e64ea270cb833aef4060e8a21ce49ac0aa650cc2088102818efa803056f010179b86a6b212efadf70d2a51615408e549d4470bddebf0eec51b6ef2befb1c6ef27cf7b4ee3b3114e2e3c71c75d3b917783cf460b3fd5a5de4a1c8019eff5e078ff79f47c47b4f28f2700754fdfa627d52fd930f1cef6ff82d7bb22871d40d6bdcd6d082e5421937c01e7a89b244445c2863ea6c01d7b5fb5cf6719ce8a3efab91e58e0da24c264081e5c35ce1207fcf3bf79768dccc4b20117d17fffde7bdd7c1c57ff2bd2236feded3f7c21b9d2fbcb92932c40710590d8d266536de7f2def3d0d6d6e5e7ca088fe07fa7baf03cb7f2191ef593e647922221a8e9c0dd5f224ecfd8d8e0de85bc21b3c4733bc91e17fef98e525ca0b45f47b1dbcff42223a362ffe7b222defbd0e1f9117ff3d05f0835e445b40110d3f10c67ba0cbbf7c1154db6f5797b2e14db3725cac54e7bc80dccce54bc560857ec61741c9788972f9b15dfd2dde7fdedbbcf897f0a65f7c4b78a363d322fbc29b9b8679304ff6f58b77011b0445f5fb5dbc83a21a8a1ce0ff791dfa5ddcf7ffd81a17d19ab0c40a1758a9148ae55d5ec7c6c57ffe13dee8881cf07996b7f9d48fcde75dc21b4f85cecaf9fce8a98fe7b0668a664bd1dc3603e4648021300628e788f3686efb7e9ca997f7bfd1b1f9bc8bbfd1b181f19fbf51d180727996f046c786e55fc29b9767b171f12ce1cd4be82e4277854134ca05d6f212d5f2a3bb5a4251fd22a819ecc54bd48b5054436ee6b2cf37eaa363d3f2e26d58e8dfcc6771d9b0bc8bf066e6b084d3c562cdd17c0f64793fce1c2f24a263f3bdf712354e16912f14d93c083fe87178a323f2e1fd0324ca0b75e06e2ea8820c64104ba550f346e5a8ef7ff01e148ae8b33c683e018e80254a2683e5e9e4043c88220a2a5f48e4072f4c7d7098b4499ba329127d5ec927a4a9399a3f05cf8003cbb20879a42cef1be54ddba48142918df79ff75ea2b89a2d4f910e8dfabe51dfe7a4f20c4536df7ffefb4f28a221374371349a93e75f1ae0cf6397c3cdf2fcaeebbacfa3735217754d6ac1f9e01558a23c28eaea5c8a508ff185b73764e48cccdddd5dfb03b1cfd97d4b1c5dee7ece8a039562d7d54a654f4a01cfdbf007910e36b64079be51aa0fe5791545e1d80fc2a25acac0fd051bd51f1b8af28441900084b2ef28dfe1c38652cac0fdd7129c4e3ae4bf686f38cb0e300ea7eea8742db74539e9d4908000000000a314000028100a070422a16844a8c9792a7d14800c7a9a4e764e1bcac36194c330858c31c8184400000004046446c306b8a9a547014b2ec0dd293e0d829a00bef00586b2cdeb6c4ae54def8aec62eb776cd85c0ee70c4e4da2542caaba982f62447d3905de36fd6ccbce4bc5a5d5621f38472940023a0ba2ec7a0f42448954bc1c289c52b1194dd71889aec274a9478b519d2a212bbde1b7a2a277f08490cc78abc7e7a9c4d430646d2ee39db1235676cc03e3dbe8e4bf3f6c910bd8d1f10db5c49c5ca658c839043d51639583c6bee86341d10fcad3412358e37cefd436efed70f5ed9625f534182893acfa3a0b67943e93a4c24e752f941ab841f725ec2331cdf7521b5c297fa84ba2fc6f08a4522ffd34fb7bf2085ccda9b4c141d138d92e7d86d4733fe3b7c160d9e748e1e0666743d59c63fd7761fc8ec3936a64be076bb223c9017e6de99d43a870fba85c4c7116bb0db798d93f89679e3063a801253482685bdee203e8b5e28bc728dde143b193c2a420a8782c86b59670ce3a0b13a20e427ffc3179e911f73f78ae0193984b91cd1e570a081c0a380218d7c5f99081b93d504bc32ec3af3e4a0959b763b16c910141495f5a4c3694a1ec1ae8184c04ba697e71042e8505ec1ef3bc81aec994aee7147bab54a46d3b2d14a5079d709c3d723a9b3d0669515bc760b5e998bf2fb08a797c4999244e6ad4880f3e45947f7a86b2211c913fa43314ce0413477fb9b9f69002e845ae854b7d2e82de4dbad3fe6ff68e680a0aa745b2cde4a0bc472bc859139457de47f7d4f7ddc3e04c69fbf82aba7b95bc5b271943dc94ec8b38427604cee2434b7ca61d1dc0989925cdf82a7473b916538c34bc8b44d77add0cefbb749b165a3257929d579c9d3ce36042343b793e498c4ca7ef45a67487ec44ccef988605d98937a5179e9b5159203b99d7b2c3c7cebd43571ec51fcb158e196959f4881a1e333b42b76ba3cf2918ae5a484a84e0d030b916356c0cc9b5abec31773fed085a14156ab92fccb45735f39902be1ecf0eb22516b0a10919d8042a66fdd23af5f6f20cc82f049980bc9380c7bbc6eea83998d96783bb82b93ebc989c00c00c6b64e1ed28b3b3660c3c21c9b7254d8c961a97ba50dbbdd864468019244e1e326fe41e138e73383fd237c5bcd3e9cf9c3f86a712569e21ae987a99c0f4578215cb0c9b2995cd49c7cd43d84e245f47133d72f8df80ebb1bab133f54f61950532bf4000aa94e9119478f8af3d5f343a69e8217d673d9e837b27e31e8d4f53d2d378cd60449c86ce9972ec8f8829740c37d34152edfe0507b26010472976deb4d56adb69a85f44d71881fc54c0cd77c89524960f887fa0d644971013702f0e9eed168ac9c96a16ff717638d41fa00b94b8c023dca2a02768dba4978fac8911d24d4e2620c675777512f700a90f38c05c6ad24e1a50383afd4e5e749eeac9efd527f71e2509e1b9012703596d02efaf92e40ebeed46d3d477664bc2c3c6cccd7a390959863b6face254ecd4214c17d5c0acb57df27f5e50de43085fa85d618452432cd00da8dd21e8484d2a20a4754ebf11c17bbf1331ddeb60b00610894686c466744dec40a22a2654901cb06c1e3665a9eebad7774fb1241ff67268093c6b1c73d27d6bc6de0cd916b77f987ced37f9f30c254a9148b9584b8302043e9bc5d398961cbf4c444d79198966223e6357a6af8203cfa653d58f98757347f2fded011a836ec21f9e206802ed774bc591ee4bc41d1476fb225ae121027145271c1be877f6a0eb714d00f9132c35f7474327c9fbc44ff9be8933a26a80ac41bf04b2ec602ae8bf7593f0c3272b64dbbe83f59eb6720fe12168344e5aba00b7464477acd0167e1ec5c2758496f47a19edce1d204b57e192ad60d14a7b2b01e7bb652ae8b787c577dc73bf7b112dfcab6ea349998592c648108065ddcc98248c8cd232de3c0331de2aaf988d03f06f14b97b3c344994c177bf083dbb0b6519dbfd7f7e85ce2ebf10152bb61759fbc10ac469e4fcb9581fd050fa272f773694f42ba5c334b5240cf941eb6f32274a26a59ec0e3689225d7d719f8049942b017083ff08806a19a28a22324ba9e19229187490a42cccee70c59df83318e8efc64a7e0c60ae66a5e0edddf6cc5f0f730ee66716a76b1b6e75fa10b16a5c040d42d720a28dec8a2fb49b2b44993b6fcf5897bd7ef316cdaaf2f51439c61fb6619c843e6d3e0df7caebd1c183fb116cd06ed7b2cd7203d49f4394cd32740cfe547f4771ba77a919f3bb81f7706369885929c2a2579a6b05524ccf31a6d040078407f17771d01606737786076f41313c1c58dc8a1d8e44f7601cc104c9981d0d83ed9fe439c346fa1e74cd9d829250fdad8470af438f8d2c9eb7aec31fc6112da5fc04a4b9465751661c918fbaa29cd7cb39231ce7c84fde5151d611a7c801f335cc039dcfe45a93a08a991e99ac44672adef3b993684e9cc35a28e5a9a4f5a27ab68dac5af4180cde655c916954be97e5151e7eb582978aa79866b2e99d613ca0708d87e7b7c639044cb48aa9f049c5868ee792a8dce879501b5c10a822a5034a8c28b150f10ad9d45b71ccca4380f3f2c4e9279a44428258d2d7113ce7bd49222e8659714bd17a8300e9f523c442be619c07c7d6283d827c4418c632e7e5c2d95449cdb548640fe33b107802694069aa87add6d42e564595153ce057a3b2e08ac542961c10007037ee8972d95817ffd24ada6f508d722bee0d44160a57fa84b774e6058549fa00868374b32d772397c1c484db2e27380b23f9f2223bdda0d3a220ca03266d11b96f1fe4c1a35a7183f96f7309026519c88c68420aee0e7856a6d2e746815babaa72512455bca9f36dbc2ba8b764ab4467822cfb6ebd50a6366ca8bb2b784f98b11430a6b0428dcb7069cd096835e5483adefb16acd51ab7a05089270bbfa41809821fad40208b0a024100204fd2c3e1439e643f26321853f500598cf93592e83371b57549f5bfda072197f6297a2846273341e5b54bf76482e116df4181e05a02a275281fa2a635af4d09d0232e7ba08a94e4c1a75ea8a9c2dea6caa4e854dec48589f91ed1938aa3014e862859677c1eb8a42587ca3f56b4e2215419881a9b395aadd26503a4421cfc4332bb1fcb557693ccdf35346730a47f9c7185dec9ea551613e97dae4fe8f8b0b95f8f23f16a03f08e5b551e043de5330011088eb5c7e21f9d8e0fd7922e857ee0ffbf995e024f5b6542fa57fcd31abd45166e05133579f17e9704cbdc8916cf400757f054b0e4c8696e26bbf56756db056530b3b5e3ecc1d0a9e71319063dda6f599d788c61ee6519c508a0cfb055a5651190dc3876c40b33740c75782fecc80778ab075227f49fad81d74a43369c0644823373a3f21a065965286575c89c9214e35491599f35e1d00f5ff4e9398037ca67d33e1afe9d0b85b50fb1f894fb049fbe3bef040212ba488c3c754fb2d7e4522a080098beed6db80a3ebcc699222b8179b7791859494bc9ae44dd7c9f25ba19248d705d465dff442342abd15108e5a58e4305adab5dffed76b019941efb4bb2524af27f10eb37f2da2f7d7d5ddc2a124d96e326cc7f76b11a6447f3bcd519e43b42557980fbc824c1407bb7ddae236edff9eef0f24c1178c38e10159b4139031fed8163b66b4325d9377a6ea1a3084c95db7b1d057bb7934ea30e4eb01d8a9be32580857c44a51e4470a3c3cd77a43da0e420918a2f34268470f7403c3ea7200201b6b2fbb2a6409337f266767730971e4d897a5b2f2905e36a51c8fd389b89477341c1aa8356b87fdcf555a6452af10cb2c74de7572afa0593bba3c651ed3461ce3d3119e34b909ad81ca61b7d05a9305adacb5e3f9b3e1b9d6e02da4b931d24a4b1114915d8dcbfc97d0e79ada93e31c5f861c64ad7229f691fcfbae8600f5da4687e41efbcdffcd1bb2608a2f4bc0ad01a71b910422d3c0a480b60557ff7e220409efdb2aec45fb9ae5c25d098db6813b757d59fa34b6d11e2def872bef19f7a1065c44226060afe7918df170cc776bf8eb686f83669e679603a25a9224eef01ad7552a74d22489fbcdbb1e648b1a603f7a4fc2149dcacfe2df5f58a3c7b75b1e8a647c6d76c5230a5e1a12642ea2dd772746e622ee2b98e2e7e450dca38c2a2de71a251040cbd1a7f15dc734899881a9ba429be950bcab8a2f21d1278a248f2005c0bf98d46f46b69aeeb340a6a78cc5f8aded7c0a6625230c49a32bf44d3f1ab8c9b77d065ecd81d3ecfe58a7ed817c62ceccccf530cdd80003ef9e1bfa30c7a48113515fbb7e8c25375c806f2b6f45000231da289047571cfa3b98cf9f65ce281d01a9251d6f1e6990ec4a9d5bf1eebade2ed93516a0eb1dc6de106522c68415acf8e81219d6e21c3a540ddffd27b563e09ee13557ce2c50e554ba86e18dfb6d07260e752b512bf6cc304e98e6fb024501ad7c3ae6985a5afe5bde280eee2fa768cd8c86d759878a88931cbd498edb288985676e9cf63f9f9b08edf2960bc6c421e825e9a7b8df80609a8a48b376695ddf709142977c30b59235135de5c740de06a1019e8f4c202e8ca626fa03977cc6bac8d58bb125046417b4e16328aace478983861fbe56e5c7ab9e69020e63f6e34c7ff9ee32081b86b276fbbb91879fb6964defafa54fd54e9c47bc602cc56db0902433bb8d92e55860164affe6e5229639c7b86b396c17eb6f8b54d6bb1d71b964d5f5c8a5d44b5c5c7de5679a8604ed904a41ea69913bc12f9398b1db48c6826ed82abeb822bde9f3d6fa3fab728779114e8542e42ad4a3132f5a1b27569543daf08162a74918087d82e64a2afbe5dd79553e9db14541bf36bc2191e9700bfb5af9982d7197c6770b8eb5dbad7617b3d2be8320dd3ff73f4b20e4107f9169588677295cc12d2d812a05f37aa6f503eaa32c20b44a529cb2e82e81ac634177e8e397cedaeb61462965d03374085f3d610ca3152134600a6f6f87c261c076f794416823c96ff960cb50d0b38a1212cde596a1bf50581fa94577f0f8dff1076a930758b5cc349520ae7385c8e4910202d5efe773d877aa44861b29025b3a4fce0504fa3b57f52137c3d963a7b4b9ac72f7343bd63cb733c268a63747faa62bf3adcfe08084d03afb329734b813092176b15c90a05cc629ef2787f69ea2631a5430907726d8e02b65ec0bfb8baa40e28c879f47e2e87e4552d810ffe8361cdac73adf3c8b72a333dcdf6a0ed331e508bfda92f5683b6169cc95ac9606f2c86f223433eb87e1640aafd7044bae1ef3c4919234bb4ad145c0e1b06cc2e529c041f968041606897fd23bcb5c5190b253e9cfcc32e0ca2fe690c89cc302302e0ee3c2bd16d7f6863f80c76c64a6ddd2325b76ab4068028a4a87f70a84cb717a1b9e450a3076f676a32fb556b94ed08f4ca8f53a293d8a4880d73e356f0c45f75ed482e78f42598d8e497c2e01b4a1c1832f07888d2b991d234d19667062ca3e7695512fd099a41657dc95cc66358150e15fcfa8bf5c3b7dc32eae7e4444d62e77738f3429c07dbb135a5663ef8d11ac8287182b3ed56de05b0641189c75979afe00e485270d9372989e13dcea1324ea4ef1828bbe54a5b311b673d5b4205618c93d53a0e202e88b336b282e55f0331cd39e08cd6fc99adebbd2a8a569ba14cf55a82caef6254ff3b951493a56693cec313a275f296ec6bc8a9890bfbbd8d451571b6dd4c38c04dde0e7a17159b79be9841a2967aa6d54e4465a672950ce645aa6a96dd2a2b2924484b1ab9e129f6d938eb46de21e634ec5cdb211e70ff848b95dfe78aceec190793fde5ed9a10dba06d3308aefd577a4e5063143cfe4251bfdc66659900b25514f9c8eb8f1d265f519e56c84bc6773e1b293c20fafbf3d33611322ba62d0426dbf75f2cb51144df1c0db542915f5a5492565e51575f5ce9c372bc413c8c5ad5b5c850d61c14a32a39f82b6ef745bac5b700951bc0fa10c09b3cc1a433f55e04c66b8bd5974ba662b61f35016ba2287e6d444be65f4a35330fb1af6ade8c5699f0c79dfd717f0e2d180e0fc9ceb52423e68a6fc0a950eb617fdf21e876998f6391ee64fabd5ce035e678ce4aef7151ce66bb77295d8532f7169e945e3521d7c4d0e85380b48ed302130d6fc1396c383940e707381fa6169c2116c3f4d9166aaa5e6976a12d2ec41a9f95227cd33132cc5d94d4592d2103d9569c5bfd82afaa962a3429ff848f8e00362b79b6f7376fa6cccaaeb75596f92f001bd6119e7d1c0c548239637877abf8c6698fc87b83053c380a4347a0ab4a3461d0f21f1a737f52516cd60840c7f3287c1e0aba21f5c44af7abc4cc62a8dbd3cc0cc734310c4ac2d6c8088743e28456edf29f2d1302bc7c6b9ba689a18e49897ac9e20fa645e2cb4770e67ea4893993e58e652164d34c617987700dd52dac1dceb8c29581a2e36f2ce1a7c2842449ca5738f515ebb246356d399d9f7377c49b6f1c0a84b5af5e340164ff4bf670674c4c936ba7ba001ca282d22051b1a4249a8941201aaceee3dfe3c35d6c3e352938eae2ca6eaaef99d0748fb0776f313c61089572979349fda0b3290e8d1e17d6fa8ecb5db8159231898657dea3e03c1bc869ae08ce0290865c289c65c8e6413f2e4355018d352a71465370a64744c9f961ed254fdda0ce74b5c5cd0d2f41bf8206c12f7e0a36b536250e2cd77416781ca62fc561f7d0f6cf12d32de9e0558244a759cfec0010c426281c4b4f5c1e81eedc219ba7512369664e8c4684cda497ee1c49cf92fff30d72b441941b827477b2748b623b34ebbf9897931f8b87a1d2088cf85d8334ffa4a0ecf6651c43b566eee8932f650357abfd1c69f1db74d547f5312232e248ce72c90958b71d49bd172afaf4446ee8b385d74a455226efc2bdef809209c8027cc82c4d84aa49c033315d11f5b70d669ed2a9d558d71c1f95cb6f0f402fe93b842e83163fcde51755a887983ca1edc6890f0d938e387237fbb0e4535a7117ca59230621112ad3383f95ee95efad8d463e6f8001ccefbe360f79969316eab5ceefba4e5837f56e103380cf790743d64d6a95c891e4376321ab0268fde0926d8efbf06ec02b96adc5ab39e1c5128b5fcf383afb5adf5355193be9c0476eff14270a06d71f6fcdf6e25cc22e3edbe0c882c1273f2442160690cabd7c1b4e85545365dad933ff573b3218b173a1dda8183263469063a3ea03070b4fc2de95d2ef9e62b4083450f4e5c838aec7923881f3820d2dc7e8c2b6443f85a78ea027aff203b692fe8abc409053957321334708c49097417946f1ac183933a7786fc5b360c1c094db93e53c71c9438330373702b9fded5fa296280063c3b3a6b5bc681fd00136767a58526929aa83c87d0b5353891e42991010696495a91dc1c9c50e3218e01c6bd513ed2838109cb7358fdcb04851cfb35eb0c252198e2a994b7d0086e12c6dbab85936273cd4923c48cc0ac8bd97660c22e83b47568931c56aa0c8290ad7715e7bf8b421c2b4298a66b7cca3f2595a8dd2f14f7303329f2354a3ee146dc379c1b9647a3a0581602fcc9867aa46b6289212d16e6e36dd9746220748d65f798921a3f7b6ac8ec15ac90cd538265e6e2ed634b54f5fd2013ab0b3eecbd06acd1a4aa6292b6248c606ece89be50562f122836cd74bc0b36243d79a8e210569cb8ccf445de605a352dd41705598159678879e34bb4d1dcb41289d7622b6529753c6fa0ff794ac1fba8ae4284e0816b3923eb61cc139f139aaa5c0331d866505316c6ffb229f8f719c4aae7ac1f2849d4ce5629803c61c1dec774e61a6bc2d946c22f590056d4d1af942a8a3c5e8963725c68b4fc265965d06ec1150981f876c460b6af9448166ac1d41d33c977d48261ad1d593076fe6f441e7aba85a4152b52eb2b10907e0ac212c69bc6a93d8cb2a6757cb4149dbb37417473c814f5f9b8eb9900bdfd7ebfc7cbdcd6ec55264e3f465ed39cab6d82d3b2c1517c3ff6aeb1e1cd16fba496e126a8f1ff2e07cd59b68567cd86fdc0a2a79655e3f85749b9de11adb1d3248bec6ff0bd389fb968321b44efb97eaf3f7d6993d5e44368b552d45c00951ec148713c04652232441f8a4c32cab0ec6708575a446964c7c01780b38389c04f029b02cf0289b8a250e34ccbdd751a8b061c4cdb0c5615a1fba75a01a85881658e43017106303b89931dfe7200a968f9849ac8a2a64fb9ab801c8eeecc3c916d8174090eda3e9b1bad4420b2c095c7cf6c174d1b9a72ee86b8dcd52a67fb1738e7a0b9b3299f56da655a244a8675ca16e55395bebf1d247361cd133ba654683bf84c96470fb0ed14d3e6d1bb322be03d56cd4a1aa3e431e0376cf3038111229d997064db8fb9a208b29ac1403a3222d74d4ffa6b45d70799abf94f870d2380dfe446c1c2e13addf3af7a9219b7afd2a531c3fa981ca4352b93eb418f60636627b09341f99b18f5324ddf1cad99255ce69cf1a040a4c4164b8738d8987444575dff309dcccca8c194d104ea7a962da4ddb60fdc9a57ad14ddf10a8ed06220cad379268ed421a5d401959194b5887b4c832c1f7ad2fc422e95b687edcd7fcb1dc1bb481700ee7fdc4960a9a4e07fd8bc8bbd08555d33bd88315cba0c051cb383e46cf5c811882703d373a706c68ff28e100e0655d288c1598452526aab3f198c7706d35fca803ae78941027d4b8b5d386fe42cb8d3c1353f7053fc74401f6039a5d04e1bb56a691d729645c1b9530c041043746804f943a0dd4a92d1b83283904f4d5f8e7fded2de02793daf9c8c4022aa5bc890f0a1ca84b82fa389068e896723dc9903a0ac7a8c93a76de52c85eade94ffc8778653975a63af5026d0889632005d909d69d826a71d8b00cc4c6ed5330c8a8541d0feae35de37b10acd1593f60c2cd485893fbac1a9cb234535cfc03d982ccad7b45504dda3243659edb3c923649da868d2d5bb4cd9b81d4e4576e324ddad3c7ab34f0b8a28a075741c63b18e91c262c835071520a12c715880f5f2022b8e2c6da6e40b3a838778ed9ce39fcfe405edc817888c2ef8dd8cd3bc9eebf2fd54a033dd74b74ea39087333678d714de7026142fb7a01d228d026958ef80210f82abf38473cc22383b8bcdfa7102420d3967bd5a0a4c22d46bbe4c52778b0a4bdbf24a217695784a7eb06980fa82e3069ea2592634a78af0b774b9e5462b999c88ed800c4e5782c9f201e42744784cd679e5cb38936463610ae532b91b0cb293a284058a609fbf6352eb441e858333c5d96eb67dc4442ca099c35ebaf9d79a836e589987f79aedca0e3a2f655039d8ca9824bdb4ac619540612063d627e2a9dd0aeedbe376752128783b49fb31bfef3125e922daa607b76b1d53057cd03342ba85be06cfc80a2127965b0a673f220182449474a62a4319c15371ec6cf5a294063cf969368562fb8a4cc3fa0138ba0af8316d1a9c157416e9a216cee8d2c9d07c6380457f870e2eee9f6acf1041ad29c3fe3599145d242b90025435f8d8a5b4836c3902698067f96f63a06165b9d50efa4288712c288111974ffdfdbc5458f1d394e503a0d595c271b22f72779e698696782bee806b382e5d6eacc2f25e7b9fad21d8acecadd7733cb2be76c1d6d5c93f508e7ebd633d79d1fefa5224b39ddebfcd018daebdfc3912575d87c906605f87e9ee84a1b5e61c28fad6c497539aabf3d009ca1d32d38d1254b982d2c83d3bbfa33e41020b92e2bc8e434e97c7e1d05af1257a61bc466e10fd85cc215ddf246add5b6aba8ab1ea56536a2707d4da5d04cff32c5515259a4010091cb0317ff2e7b0591d0dd8d3908d1bcc800d07d475e5a45042db5092e45f4c5f260adcfd93518328134d408c7b462f62dc79a21db57c362800ad837557747091515b754e76d3cd8798eb7fadca240884ffb4d8eff04b075b55ba2d7ba70e2ea2613bb205c1f3cd3390b7c409f1ce8ed2834acfae9868e1a4a04988b0d35330855c36bb687133badaa5f418d58a7c06692218288c62c4a0e205fa1514cc494a63294bef13ebc0c6f756dc11a11468b81f865a290a12fe87b5b8e30887205077b2027c936554b1875b90642b1750c5497f634e4b0885fc6b9ed1a0a654da3895a1c35d0a54f636ae4ca5cd9ba4639ef030267dbf80526577fa65170c7a3d3994586d63e33008ac6ab772c447ea3eb1620a54f85f31f75dc455a74cab88e774dda270ae909a84dcba5de1187df87bb23918c8aa2b836173e3d0b5f40add4bf196eb51c26dba138fb07dd31adb08ea9544bbc2bba37a0ab27685c1c9b3ed98af00494c5e956d44ae41153d0401b232d0202125fe779a69c751c7c056cb14866ba14b117d1b112ad2b5fd0f7592ba1a7dea9357bb0d61d7f6a08557872d59e81a2f186c1632fb76e3959d19e97802cf6a62ef20da5abf456bb296712bcc9985faff5cb1c048abb522be7621fa76c8a7162ef92bef8a25db0b0b5f65f2044f5c693912010e034757c29a5b3dd0bae7fe00a84688ab0edb4b90453f6268f53eb538f6ca93e6131e6f04038c9cd0613ae1cce487a4d6ef584931a9806028ea337ea26b89c4ff19ef3b97f87d79ccf68b4aab32925059de44f35772c8e033717841ddb8e185d6373424721797c77507e07db455647fd6a3ce0083a8cd733d38dac581a3e1b3defe3519445d5339a24fccfd7c8ac160d5780c1dcac69ddee3970e9ae7c51a51ab997a0c1577656537ca019b7e76c23dfee2632f91e46503f9fc67511e4d477bec4a49b1b9a3dc8b8fa0fe4f6a34610ffe033d48ba13d7b59aa7d9e38410f83a611288d8578ddc281149e2912aef4dd300476ac4b58470c362d8b7fd7e71f1553b5a02b65cbda4aa2242e43990f5c1f8fe14ec001d2fa3a30fd697517dc9a126ef92477ac9f8df2909df2c8492a99fa46cd7f65ccbca5272e920a47b27c066cbbd74e424bf4cc0f2f8495823cd3fd9cfba059d650c722e7db0575a5f1908c942654edf1c8cd23d4abc16ed6b7e3cbfe912559a4f1eb0d29ccbba090c97ebf8f29f1695f6248ef07e513b291d64d01fb186baece453853c7292c18df111ad2e87ad9a088e0a757fde848e5f7ee5d893c1a0c2618816638d2a7ebbb0bcf626690cf0c36769e6059a54e5296b4495aa029e6845547ca15453193322d731323dae8e3ccb206b965bdb40a8b9a7d32c1ec5d1fbb65707b273d7f4dde777067d569fdfd59d1f601766c6cb2c06f266ed316b3836eaf23afbb524d6cd41e26d71428e4251fde2eae77a218d0c59b2c4f9462d2d0157b9f5210197e43b51341b0058c438788b145c351010231bcbd6d7fa94a21eac1cc730d0ac4a51f0e04fd74b4b2dff7e7a898ce5f75df6d898a3542a420c9bc3ea9a12dcf8554e3c64b26174d63f571027c53898530a5a246106e27a5c57fdebc6a4a0cc64a621b8019c7f8d6a95789727b2174170b0f6dc6563bec7f08b912c6d74fe505207ae828977ce172a4bb63d8017c4a2bd510a714c94c1e8c7a67b21c8bfd35853d0a219f9b1697f972af54829818f56099a293ec1e654708320f981badef57ad3eb6f943a50050d6c94b7282e85c855156fe14fa5c02677b7210d02eede5d0781e769d1de390c4b5a0e60c715d2c4c53958f489c34870605c47c28f586f74baae42c51f9c1c88e894e6959d62c65d29c8d6e577cac87023b8b421484c68e2d6afa0467f2fa8d25724a79724b8785005ad64e3b081a10e4d4a82c1b19aca0ecf278e804090bb38f962cfff7185662240e9a0a00ff5877682d3664613124a0128581741906e78f2d429c5fa16cd86867da54820411f6cb92aacdd9e488fe46efe795bb9c64c1adfbcafaaa3b78215c9b527f5ba127ee4f32869d0a6eb6159990890e5ff9fad4b2d1baa9fbafd7dc67f702a5c3f6abc3e11980b0f42569dd38b1fd409d735fd964319dd23380b47d3375f17925a4b45414e170e6a0ed7b18e8cc15cbc293d07ce45357442e6e1e3267c6e98a3fa6a41a37eff74470d0fa8334a04486d5951c5313c2b5ff20ce83f8f72ecdcf0e66f696ea459203a5f35242dcac9694325f0b6b7038d8afd6affd79a8037e6e724f2e37792ba1795c07b95dea8bf20deca1e68761dda5e009d1de9bb67b9dfdce3ebd3b019f2fe7c4858df7b930249c49c608b769996d2a59b2c7e565d5097995c044a29e95c82790cfb4b5a9a5656d0c237b3ae5fae37a663cd2973f0655a2fd4d48a65c9ce94b4183a45f9a2298732298613dd5b95236ff77210186684bd7f10711f67515c9ddb963433b57aab85b1979ba4f7cc3ae519d8d21bc80276cd438fb2809b4a6f03f96da464adb4a067ddcf53f5fcdc62d6a537af620124752151788c0f0e6473b61e6a496c6da8fa0ff3675aef364c0059fb3fb9c8e9c62883bf2cc3c3885c99cbb86d42beb2f9c4422e9576f129677748b0d18d8c5bbbb1c8b8434e7d2f1736425f85bee0e4a375fa050534887c5ae5a1393650e847f2636ab4c2f6932002be59df35a43cd8ae7490ed767ee08d1f53e82204060df418e44ff8283624a2004fd68c648f7c4c3d5a20f9ac3a3de043f298a73071feeac8123288337e0cc13cc58e883fffec54e3e9fc25771f930b76c02d6901fa5602bfe8e154102940ba5b71215d4f07955319b1ebb8b0d290dbf2ae4184ae152178d0296903bb65bccddd941940615971a022846bd5938520f66088297dbb7972ddd240ec5ae2206dc5a6290084bfb7d6d91038d0a0a9bb9a4ab805fd2e91e6d904d47b8a42dd82bd0ca0d5bf866928be8ba196f32e909ff425a6402030b3e3e64f07092812432b656934933516666ed7b80cdc21a51146f6e709105ab7134c109054cf4bccf9462b1a4136a8e7d2acc3a390ed61031f55514c42f766f25e59fedebd501f42081998e093c8e70705fcea2b711d0a76071a3afe9fde73905374ace40c3467ace05d38a527b82ae2a9e2272d59a9e0594a1e163d97b35bc1d7c520314bb08d24962e98ecba67a4bd47b3ffd949f822681a9c37bdb5ce2038193051e790d5d65e906885d1efd0dcfdf30a280c386908d2a9d1fbdad2664c6026da18f0b620230f00a1774a0e4c4f0a7a95f9e7dece71f0de5b4610d43a9242c0f900b210a540e967e89b5585b452020153041acd687b30531bd17a5c5a47b658c022b990a5d33c7799610b2983929b0c30418721fcb40ad99994275d26cd105c93049b8a58cd604c7456f2211365e6b19391ee18aef1791a4a886461bb2283964bb00e9dc2f2a71fbfd33e7a8736c766b47b57c6e066b41ade6e0b61072bcfc84dc3f5da0d74bdb1c20dfce98ba7f1dd64f6b92750cd278a7ef2cceebc338c1f4714a817cae495efb777fbcb30ccf5f28dd16fc3ac08199de98400cef521292f2eab615b45c9984917c431c9e468f6b328e02b47e47124e80516b6965aff16f070c534c210e1d717e132345be46b49a2a91d236b5544d3eebe8476f975d726bc66bf5052832d4cfcc07b454d3e2d4ac73245eaf8ef7fc650878dc931a5b6b924395631c5ec3f2f81d50f8b32bbbcc38d577e7abed331a2926b11f19873d689cd60770b497b322f77a824e5030436b9f02e862c1f341f4c884d3e54413a58e7b308c52932960dde5c60c6b69e9d9a0ead8ffcf26bfa0b5b9d03a2bc7b6190733e00d4e026a05dc854489b45810fe6eee0dc90f12e6212364baed6fee051da33590decb2868f3d76bb421230505e07617a017df87cb90b2f71bbca7ac9f1880f51f7603ed35f86870e8e358025d2040d2cbd35c8dd728ee498aa4fef11c52d63d5b5cb72485d27665bba7c4af7c980e4ce26adc603f3f6abc7cc480484a0bff81dfa6d7f50d964f13b7811f31587b14bacda42b23164bc80df1abeb4e5232b63a3ed3dee8d7bae12e2d5a5f0adb9080bbe6cb1ff7832b929a71fd5483ba763eb9634eb3bdd8f6f2dc1214a1f5489757f26db1d39cd626c16523d7a610b3376d9e745c93658f1a225c7d1d706f406d38d6789ce2c72b7a90d3caaef524c9249a409961bf7cf7379de40ba9d3dbc0e75b6ccc23c60d281c13412617d1f3d944ca20ac824e04ad182f22ad490dc70aa1aa89c5fae9d504b5ea89b4a4c4c97dd0f75fcf35530575a1034c9337f5b08cfbf2da29d0a8e7c27aa2a570ae305b9ffe5c92c2ca3c9b88f7ce5298385336f4a87c3ce9f15303f0d519f7c7342b2b0266a5362a660751937a6d23bf9a5d02e05758a5e9fb61b52f0442972d690431b33d45a83b2400c4631644b4c5e1e8e44cd9f2f9399c023afffa47328a4606f96e6d299110cf8811c5974c9703578aa0c25d469e7b47e16430a7204fb31101bf5402d67178abf7fe505b64fbd0511961904d61561da7a8de0600482eda1d3140914c66b70510af1560ccc32cc1fdf1c77a4c329cb95441605e86d824c2221dfd40e9c12551915407dc835a94eec5823722b702cc97ad51b5fd96ac9fb94489b96048100c8c68b4dab222bf692490859d216566d8ae4afe2d111857295e9b92a82311d42724021f4ef5122e222f638f343a3d4419c1541b9227b068e41d36c448c889f4ebd477cd200ddd065fbf60877295934b2a47707f8d88987c27344319e7d94f046d7d8cb1c4158996e82b7e32338d7a94d49114a9a919b3be9a428a5cd19ddd382736d0718c14e0acba1625aaad5169e3d290a37624d26ccd27117e422d338feecd3a18eead039a67d23f9eb7804149486050d4d2a623049be167a78aaa619a0225f6256ed9a985a9122f42175fe57388dac84d6288fa50d20426787830085640b5c28aa0d1013706f2209beb6e167ff98d74ec1a962616ccdd6cdeea9abcbcc10583d575390f95cad724254dd2e5319247ff63550b1c5438cd0402dec91552f79a0228268d9abd1153d121dd845010859c79b622cf0824671d7c986a7c295049903c00eb8703af4aa87e7fc56a7c31a5d6fc0a3a107864c49a2a9d7e009d2677df7be4a930df0f42ce854c7f08b2f991de746f6a41a5c72ddab7d1430f02eadf17fdfc929803b6c3e3cfc8a15d9a5bc0f0ff34ca5d9cc19c3327db67a429a8e5664b969720c2f3fb05ac24b57583cda4f2a605c3caecb8e47151084b6563632e3c1c3bcde194f7be9df1a7312c1330426d4399b01856e000c578cf2bd546cbcf3ab7059f7f7e371538130d6b8a8962955fc3aedbc65b999e51e26aff0d1e7be288ce770b818479615fc1ef38024d37ec361e707e435d16aef706f20e61c927b7b3ed3cd38a67701e1875c5f3da0ea3c2c5e409329b81ec4758a89947756ec3899293287f50a5f587b3c8567b61a4483437ee3c01a9d2fdb5e7dae53024277740cec66aa938260caaf5a1c01116c9369137f61689633e39650dba6fd1d23d4452b738e519b20c1f000370d3606a913d9fbeb4b232761cff7bceef9aed6ae9473338131e0507cab7d26587975ffab62f93e82113e8c40a64f2c167b085248e79e9f2345925f5e6967180a62457cb15aa0b1622fb6ef74acd6bd7faff298ee8f826ffbcce974f7f6d1a4d08846c255801d39aaaa388e677fabce10f7d84a9389c458cea70a159bbdbd41d0527aeb9ea2b259191500d99976d82f339bd4220b1e69a7eb06000823d344e262a8b29c959281a366bc2f4b059d30850e9ac4dd9145b91fd8e3cccc2a72b64e7c1808f3fd247a68cd43c269620d5f3c4d6f19a9d2323a73a796083ac1955d321ae58a5d03dd72474dd2b5b80442595a072c06bf458167ec5eb40f3710631db60f079f3cc6ebffdcc7476fdec5a0f20e0e4b93740ab512a283c3628474fad03c07c1fa2acfa01171b3a2766132c43689623d9852b8f001948224a1013d8e62da6a65e96eb104da88ae96077424b889440842004d84fefccb5322ef8b21b096d64aa20103e1cd70846fb5894663c6b86a8d6e4fd94ac9a9ddcbb109d7c8c2e03f491cf9bfd61651adb551c7966feccf602c991ed6d8f8b7b042acb255be3c844c90600b29df99cb665b4d51accfa81f0cb46193ec26083e7f645cf14afc30a9e0d83a84fc4ac0a52c7bafb355a55a32ddbe990670aeb41bcc50606ee1fe5fe40a5e6e2f113f49a1a9b6ad5e81e502b4d52e1f726690290ba22a0bca9c284ede79566c6b64cf8f6913e383a7fb149ae7dcfc8da4457c652e00c1b60446b7361f71ce4c3daf9fc8d1378c96f51cd36767fdce948f1414c2e352eeee2a215ed0907edeb833d34f0db9346761f5eb8f4a78964cce8c847a4aef29394ce19a16938e85ea50ac24dfb356056b9944f6f9c02c864a4e38dbb292bde5e19907b00340bf790f6b411528162f03ab1b1af6424b53579b5e55b17a8706a11c465010c5fc007e4b1745b3859bdc28875ab5be5766085bfee49e04bfde8896a6899ae858c2657d373ccef35b7249e2cd226011c53cc8402874475020d1854f52bf181773edeb35c15da7cdbed3a42d5a3c1bd5a13c3c3fc8136d4f11c8cc5afde40b480fc4a3183233700fc6b9d837d791bc96dad3223e800c64eef158675f3eeab61166de5867515d5be8851fd80c7dde932a271513315c3b2e2c3ebc18cb9c0051bcb249b30b46884d6c938d9a92bc307e136d84d13eb0f484b97d0a2557ead99656e576ebb4e8d9d4d664688636be722814c488446722b35ee5f5798cbfc651bd9591e55c807dbbd3543b0e3f65aa225aa5d6b482b22162509e10fa83d06973303030f5ad2825be68af5b2f1997c9d900f56416f387902c7bc9e165344c1eb867171c6b47f4cbbe15ae47bdc0e9ce7d98dfd41353378dc982d8c1e1f2921afb33b0e644b36176507f7e3f9a3ef1940f9ae2b4dfb8a1b463ebe5b6621a97738f18ce805e32074a559b70bea762e3f9194484e30fdda217b8efc0a27a415c71b5c0d71ae513c049008f4dcb8b84d0a96cf232e465b7a89c2d92cc6d0978f98d9b9609f0cc27c885cc3d7183ff733713b518e1c7b2f3ebd10c77e05bb1164d5568c775e8a391929b52ed31cf631c2ab7146378f5664653f07ca63901f19d120947ab6626f4be53e84328626cbcb51d24d39b9315578bc876fc79279639760972c33f4f7c0a261fe57ffa0f703e469a08360a61aa8c9691e3e7b1362656e678930348882ba626a3fdfb5ace9bc214bcdbc580845f998c50e6b3a0856c6e4342f5a9d3f4addf08211c1b120a8326dea3dbbfefef0a32d4eee64b666a6f1f63b3c848df67ac614c0eb40966264388f90146d5b4af08c2098bd4aff8b4abcb00f4efa045e8e2223b4e36cc5d5c09d0047021a1aa48cec02b40cb38732f3c1527270cc46fc7b39caa7a8b03a7bb7da87f2194668767bdc87bca860322ea6b479234bcd4adc49bcc357058269f3d9fa3d00a61428281d564e3a2a253a91227cafddf32cdbd3d44e8a9621911c0920e9feee318f68c63e34617adf3d50c84d4d231d1e5deccada2387749c34b9404f6014bacdfd8dd0cc02f1f6c9134bd7eef96cd7948fb69888f616823915d954b27942a9a837b54e55d2b2635cb37b5a3bb88042c85fb46b5c39954c5fdd567c5754c31067941a3b9afc8fd0302080b9ce82967fa87475d69808993442d2a9df0e614943232a22d8af0c6a60c3bac026e5a19060dd99f2dc28199f89d4f8afbf0a0fbac4a1dd513937f216d48170b9c5787e669dcb98f6882b69a480020b515c45796433cdcec44095d424c9ce40ae55b701e6e01604d3ac68472025ad222b5a3f5d8150c31b1d2dfd79cff40b06801faea29480123f966bea2eb95903d9ffec4392bc954a0a842b717a202661c665cb0c23a72d97ca0e23cc1461a41a5dce859bc571e2ade51325392d31a5930bfc8f56ce6e4ee9da2f7d4c2d8f60925beab2d6e91a1a817bd4557e7ded26efbab726025394c37059f3e53fc8020d8ca47c995852a500543a88cfe6695308d9d21dce3f0c471257c15043f917db7aee3c59dff8427211dc8f23d0a43a9fd8832fec62fcd90d2de4448dd9cd9dd2adb22d446e61a94ab8268cd2f2c59a505e08f49e7440040d4cab53fe764a352f5a50a0e3116c051a6cba4d39319a6c8e516ab05da7b7af2b1020a7a38014dc7ea66a98b4058b01bbdbfa2718bc63943252ce0a36cd2e843ca227b0cbb82071cfd207e924e35012566aae9c2290b4ccb4895bc9d117a2d78f248268d42021831fe7a8ac6be18133d98f6cf07c98485da1a9ae92645b9afb63891ac927a5db4334f8ae8b0dfab7dbcf5fd8edfc7714bc2143f5a81b1c3f4fe23ae5a91ca53af1f16ba5bb1924038faab343157718d77dfa3e5be29121bf61a4aef85d2da0c42e9967859c8363fc90005148d35749a729c1efda8be7372f2e8fe4ab281a117957fc9f1453f1d10781f8311a7cf397f8b9a20e82508bebc262dc2daef4bdf7c6d154c96cdb50fec6bf7f256a1e944410bc31413a144f0c3a0b8dd4b65abd2978ed0f526a9e5ef1e082c5a1f4ea0b4a638990673649a2d737b3dc241ba8a66609cb9cb202b28d00215bde4748c12ca4a1bcd40b99dfa350621b593234b34d8fec3d301805fc29ed099990cf4ba7467c115806ac8518a7432198e11bc00a109877122f1dc50a020f575b1a744dc1ef86fbb8357a459504bc1b2f3b8e0ec72737797d726701e6e15a46046a789b4c86177000e7bda302685da309705fe0e5da961801f1a06f5a3204f5cb8a9c2a6a7b0f77e0f5c0cdbd1359dfaf549aaf5bed233eab8651e65da0488c6c86d9aac0923b00273586a9920e6bfa56587dace5beb9a13ca6d60a5b926ec9f68823727a4df79737c61f4ce3527519aa51d0e80371c9955f5c0d7359f49efda78be38db4ca49a9e02ca964f757f186252563f14f166735def9bb4ec0536fde750df761b46fcf3eb0bff40500ece7e0e12689f1ea9b3070bfcb56e3b977df3fa1cff58474fa471b1b1fbc904ee7d3147104e409338940b1a1b697ac76a689064ca3145ecb79d58b27a1428aad13f6ab22f3de3b09d5d7970f4aee92634bb2475d75071c898e4dc56da4785b2aa7e502335a426bee622f06b7365a43c07e4054ad52a525e850d62a5a9cb4f7c44b2ba6216defdf910a3f484c8d969acb0367c75184adf31a575a021adc238e7102237383e6553561a061cc5abd345614f4d15ee7810e5644f9ab80a6df33831bddd1cef7ae0ca045c271314ce0411881b1b6cbc9d1d925ac365986ca8a9169dbdc53c87052229b1f9d06ce71e9b03ee43afd6452ee57754726bfc36da470799ec692f1244675815d7e4b560a7f182765b658b45d116afdc4c01aa673c1287eff943214e7e99d2d02ff5242394d6c1862a269b33a99dec821feebd4cf8961d25584fa6222bb1642a6d004aaa05a4ec71b4f8a04bd4d471771f36ec5dfab01ec57e6ef0abb81a26ed81b2fe9bf1c0802fecd7c330a269b4dd7474c5b043223171365e8dec97a69fdaf059381a533b3b1da53062c2ba3f4650599a4fb16ffcf77874f8ac0a2d1ea6ee54c3fcb03b1a6334011215d9a7039abbd3834953694c82bad08225cbb8e4d27ed5b79104c39be85b130194e8010446ca2e0ef83476a827ddec1a092564ab82167b83f0c67412106860527001a4153ef3e877adab0a2f0890a859171ebc1809d392d0b7df376b5c8f65e90cd77c79331ab1393481c43f218af8f41f9ca5c660ec93b442de1b731a8cdd1a99e2fcc2a3b50a990a8516832e0f6b7806e81e3d0c35109cec4d7aa3ed77333331866ee01ebc35363ba31254c3e4822ada4335729430906890673aa982cb3e49b9e0650c241c12c0858b08113046274a4de024a0cb98da899e41333152029b30ae3f290f93a903a1c468105d02cfd3c9f1e6f3566d6648591d85ce48c569a0a621b1d72a94a1834e613369ee6146e4b611a273e41066380e8eced18930a8b4eae44d5ae0530192b076645013cade45e17c5c1414b7fb1c846f9f434821192a548a956b8986b625ca8d0ccc81aa7890b70219a45e39f449a5c02686269c0e8d8821e229766887041107eeabcd28a48fba21ea50fe8cb011e8213d2c3d194a80988f68cdd2f46221a1a23756c4a6850472aaa317cb8d74737b0a678d0ca072395c9a607b7d41eaaaca5b22300f0fb60d415815da9908ad2f835fb6b6f94ebe416bc820c7230f8a002cded0066a908067ba3b00e7790228f41694950c8c6b8b36bc5f6de0f84f9dca71d98f09c1a17688731023c5851b2bead1794687706689862da7345be8a20e91dc6f68c3fbff51befda142065594c99494b07666b2faf8db99d101fe89380b6c79517edc51ac68c096319101bcc950a94d6682900d1c840bb4929e684ab2e3c536b774e86d2d4efa2d453d9e19ea12061e781fa3c55f481b0a431afb7d96035b7e423f184bb37840e1553988572661c9acec0853e5078c9dc8202bde9de374cac76952a026194023141843160aa0001a3ae680c81b6e267f97cda41175b1ed608258543854871b080e3b4e606c442ea06a490ce7274acef6769ea9d43841802939a5694304a66ed89cd6b9eedf045ee625207665f6035944e69838c1004b1dc17b141ad9aecbfe1f50e90121e31511e1f503656b03e6af9dda28115e2656b3daf3186ad04bc6a49995dc62b878ef161a813a760d81ca2a0443dde52c340f725e670d161237d0e33a6f4ecb0a4eac948dcc56da17d547645918ff3966daa1ef032ca2a58c03bdbf8c3eb92264e9fd2f79d915646097ffc07e6db40fc011e6ad75d1c720b97de154bc255c48c199ee34a7b0dfe41614f2d243f79d52d8aea9007457a0a26e3568bede6e01ed1b15181c793040c958264bf1ba84ce83c03a10ec94f1620bcb896442d38a6b00fdbc69a3bf54f06953a129a612be25dc08b0a1e70170db56185fe70118918398ee1d19eea8caa188002ef6b5a33a9b7428d075a3c42dddae1734cb52b69bbfb7015c2b25bd6c903bcbd172bbefe97489836d77b58c621e03d7bb007f717f09d61624af3beaaa857cc39c50738672cbe278fad6d113504315e735e2765bf0034fd5a8398d8aecef69026bd9b9e574e121b674e33290124bd661040f5b720bcf8ed8105bd03d170682e9a1070a01c7f50a13c1586e63987988ffab6f6e8a576034205f7b6163109009ba091ba281d0a03604f38118c54202928d351fab1e59d1986e3a9692d0cf0f5f9496798ed06aa276b8bb1adb8273f8eeb4d3d8b07166cd6abd92111ee6940faa73fe63379672b2c1176a93906d9cbc8d3556bcace402f7feb78ba0b7630e7124171be778a79f1bfd9a73e5d54581778c6f9d43f675a6e6260c4a079345618d298ea1aa70b7d5c6d3ce2c357ffd4bb4f1e96abc6daba12b1f846adcfc43ddc182aa6384bb633803c10732bf86246866a774373304ba624c0c1bcd8acee10014e6dc3bcbb30631f83e3c3c74ead7c6e6e87fe698758c7cfd63ec133dc07a8dd8e4d87b2a1f2d0595948bb8139c77292a999eae0e60009c66a4fa71fc7f6642a6fb84e2b2a045bf3d483166e98783f764b6cbb03832dc963f229e569793ff85ed24f7a3af194ec4289e0885eb0612f51516a5a52647d20bf5d5caf07ad7b5172c91add1530a1093f2e9269f1f62a6950b343f55cceb22e7895303eb8fdfe1bff0462d0540181c90c8bfc54d65aa9b241eb52eb77a7a2b4c4552404a7828254be8e8d6e93cd9d0dacee0f458c6c3729b38906610f216e109af542d9a53f9ec8b64cc8152103253f9e86ebdb3bb9e32389503d90f612fb5a0d13f2e10f73187645f1c6875225e621bc07149c700841a6805a14dddf669627b87ef89832e40e95d96eadd3cc3dc22d4aff5ffd12b2293123126d3618a190dfa9cb4ce1a1b7b94a42682df2910ae145b68899333eb819dd2febe237a5a11f14db04c66a9d2ff3dfc6482d9619b7fc2ab66c227d0f54e6bf50566e1afe06b482025369a27eda53d6dc361dd74ce9729d0131a72c9b54d8c83e6eac38adfa8aa5aeb828305430a5c417f678bb038017774f12fbc02d8628259d39b4c4f280a8aaa1feaae254e3b3dc0412f824d499011dfe30ae45098b245454b470ec1c868f06011e8f1d6cd804143b254a7e9cbd2be0162a6afb356b4406cc13be32b317d84058993d7ad68cf11fe8d4215938868954ec0c6535f8e7d3502c61ca3b8b4ea310b9639e4b961d2c5c7130ab26d95fbd0eda8a6e1636f37aaebb418c98e9ccd744a8f8d4d0c84f639dffd9eef3fcd63da04ca9895e385ed087537c32b80ee57432b38d4005449f11c5c9291da2476de5e3a1ebd182f26b363a7e6036dc5346df00cd36c42e003039a32141484110539272da9d8c4571ab37467b6c16ea05aab41b5c0ad57169bc752e3d113e6c2821eb98bf4ad8c6db99c325acad8b66432fdbf4694ddac60d1c72ea0762143bed5eca2dc44ef7b6a2f632ced9da7bc490054ca98713ce7a0f79b62b49711578ca15b8ac189084d92dd29c223406d6881cb1096f9018b628c0ba41800b4bbcc69e0dc8116bcaac966da24f75470e085c1670ef90c974d3a9cb439c4d2b3bb5155cbd7255cb7fd063b90d412019629a0ae0c6704aa07df18edbcee39b2ab93a07272ea1519cd594138c71f4a1ea0a44017656018b321d31aa3b87a6523dee4fc9db6620001ed391153130307f729ca512b5248f3d26125df95f343f52b20d0b769933d68d88abc01a672c1fce39a18ae167b4e5af9182e340e4aef51206b5cf453e836be352bd0cb64195680c7853bed4aef5fbd6792dc026af04531426d4d6c76589e688926684db9c6ecc0a45d64217948b3bbc24aded9ede724997d4116b81ae705823cbb8bcc06071225d997251ec6f61183f3a443984045b9f66dec04b856c151b3a03888db46ae23a05cc28da303ea8072137669eaae629fe5be5cb881aa7c2cf3eaf9970234841b28db234f70299b3011455352b8e1c35381e276991591b392d7fdf6a0e9c3286e6c1108379615c3576f8d307eac660a375e63617f2cbe89230f1840f7c6ffeac968033a37edf91704f7abed5c2a5cf1592521ef45e8ee14aae2054e8757e9de29ccafb60b5f5a196fea3492a6470e037bbd8832a0a41b6c04be45b49a2d2fdaa5a5adae85dfc424736d493a286b88a9f390c483c439be38dbbbee81934cd95827ac095583efe1bed7685a6af99af855d51f6424816cdf20c90e82f97ce08fd0b0fa0a2c580a5993723977064207bd285b59a30efe807741d5eaeb5518d8a25afdd78d215770592336239034d8ac06c57320b052690b42bfeca03e96257ca2c822eaab1182938478384df1c55902d8871bd8282a83219301148888f7cb53b30700574a629dd19215600247209073347b28a1ecf1d4718b57aa44d33e489742f8d46ff042a06886d903040700ca5ad1974206f1d6410e6fc5c6e003736753a64edb257e605702560220339b852fb215d15e7f5730d16e5c726720980b95ee8b52d9cc4014e967f30f99c4586857b03d65b8dbc784d5658aa3c2bf49a69f46c68506aadf0ebc704b0607c70cbb17cadfb4b813ba31b4a6cbba980accf43a47bb447fd8aca5736a06ff55669f78255a01f926dd8f1b6ecc9d8b3d6e1132a38a82805dc8307f0a55b50cf66ac0ac37738c349b23083a31e87723a67aa7f609538c290a093253ec49a3e62cb3ba9280ec0bad938add58144209417f90986fbce707556e74d45ddb6efadfc01f42f2c48ce8f3bf9a42e86b364e2ba7ec96ec8a2b1ebcf545e9ae165aeb3d8fee7dd35c9f8296557716f7b380fd9a4c61c01d31940b0db13515a7630dbb0718c056e2795d4129245d2ebf1234c0064ead14f193483dfa03eb0d7f23397b3c227d837294375f50c6fc85b4ae10b7973d496d33f90283ab59b8f1b0af63c5c0df11aa5a53f2ea0bd0b02fc0a503ddfe6130969c26a8d901c26d454be6844fc102cc2c219c14d67116d690c7e4fd4786d8329218aab9197c6f7e1178936b9d976b8f05745d96bf85fbd23c0c95453d2e4f77fea503576a61f548b41bb48961361e815105c133fe67cc627c8f6e5a1df8775800070e8512e3078478fd28987e59a09e9980697fd9d0e03b874b564bb8d541e2410be2e7e8c3ef90cbcf6fd29878f28efd2b68ad391b6ce0d66b8516d42d9d26963c21bd829fdabed390e20e33a87fe4a45e104a55cbe677748b85afb5007295416a0903a75264b9d664ef2a5ff7b9f6245b4a951e5fb7da14dffbb9139bc82d8dcdc568160ad2dcdd8ad76b9058b0a756ca452f7cb3dc4bde71035335cb328d0f95170e2bbb054fe5c39a693610a18cbdbf8e18a1235908d48e118a12638d40bbd502cfbd7bcc65909271590caaa6f5a1d28de6355f80de76e7abd78bb104da6c79f6d8bda992a0eb338cc571d5f1a8571f98338eaf08cb9bee772d25443d07ae28169131a4c40909ce90e98c42408b4b3d4b9c56dc8f1aa4032eef0ffb01b79bb90b07b7db4d70c24722d9fcd149103cba6e6f4aa2d830e94b4ff35b8e33b9f33cb836b4f075578c9a82d147032a0a9f857d691c8e4246e3ce7e46c84671ac18742f182c59d931a461b75297c0a48204c633c3775e5cc6f1fa4845c8b874e0f732045c4eb13ae588cdb46b318826df8c16cd4de54b98c22147f0cbc6780c13e64e30dddb6f938a9a31ed23d15c6ac22334d05bda7f3e78f1b5c4b90e6f1c715840c3e9ea8d4e369c89fd117f8d3218f65585ad37dd00453b8d21bde6856fdfade98444019d08435a8d6dbe32d5749d1f3b8f45b73177203102759a4212ee53b299e2ad2424f4406f6624f32359f369ad9e82d20913b2a0f8fa0ee3aea481ebecc3efdb104a1054bbb155e2e6e1a9f8c0d90cf39653e85de808f3a07b3e0cd8bc27c62e00a2cfeed58e710bdc0bd49b779ed1f9c0e7f07fdb244930d0b393728e15013798d0454f411917ba961ad9f745d35150c62395c1127f9a00366613abc866571830ea7b216ef6a074c671f7c625dd75616dc385a9a6ab5e928dd8e37c8e2fb267456489f0c5bdfcb6b972b1c4a1ee730144a3aaaeb6d9b0bb1bbbb789aeb79bd02e05b7a8b694a92b672c945c4284abc04e625b6863b4580258b56840c51884643d46e79b05a08f627659eee69719100f65f6dc442304fad8045242370532d8c1b6edb95043aed7a7994677ee4ef6fbe2d584991182a65f4211ad3eaae8b32ba943c35c37da1751d23f2000c94a97ef6e6916bff9b9fc83d347212a0c8b13950d090dead65c4276f1321c0ade4e2212448ff8ace264b10ad07ef513bde0f76e621cf3ecb3419fa2935e49ec01de01b515dfa0f78d9725497454c783527755f3bdfe1e63ab0e2e3ade7c3fd6698dd04c681e01dbaa839fed4a54686a78b169a9fbfeb85777afb835bfd3a72ac7b325e7aca350d2b725e36aba39a142b26dacf38741812e5c5816719554913798999fa6ccf3171d45cf827dbb782dbb2ba4d620bfd3e6722fa190a5c2e0596a34dcfaa01a5508d2916b7d729194c8e0157503a1b1c7998c76f848c83ceb3611d4069aa99dfc3759dd37d2e264bb23ee04636a5dac1588c0c27204cd0b0c8943469a81a802e03e616e1dcc43e002c8d6b848e6f091267ad6faf08db6eba63191a1dbb24a3dc3b19d98a432adea1a4c2c12c19f2736f6f41c61f56cc2c2e4e16b9cfc6e83fedb9c8e12d29686e3a6758d1c17b9fa730392ed9783d0a3dc5c4425db7ace6486c5d9f794ee0ef4cb8071c00a1b124ea5fec3b68aa3955087451ce0a906852642b7a54173c780e38664a54b24ba3e8ddca5a75a9285e1231912df1fc959f43cdc103e4d2996fe18a861dad300493cfaad5631050cfa46e23787ff588e4174ad6a2be689679aa494eb0875fd6f2c5a0fe5b711186bc35b6a9130e733f50ebfd321d656c4a57d534e614b38f82705bfbf648a1c2f45ff8842159cf5807f1c7bf610c59f7a462f59f8af54711db91b83f59bd42a1d6a524f28a8117adbc16e7d9c82a5d3803eda112597074ed39d92ffa2220c7da87f687137028e59f73247f98e0df016a7c98623049c3b6fd2f4fdb3e472060016097e378592ccf95fc1c4423e2881e2ce704c5093e55760d61e1099463bcd49b6c726c52c87c8e4df11702dc61df35515f422f976ed7cac2375e825fa49aca1f92c68e1d1d255c1a311d3c2d13d352351d7c2eb517ea1ea85388e2bf88ead10e7b500c46b2d25f5bc956a68cf64801eb82d20a7fe6ad53815320e9ea1297ae3faaac96262eabb9c70cc05ed88cf2b7d18be78001b6037e3888a565346cd921411b30b8211e5d6746e121948b88f6d077090c2ce125326f1f768d18ed3ee934dd516381ac48e2cb8bcee8a79357e78470e2a03c2a4217cc5ec70eb17458199a708b5027f22dfaf3577b1db207adc747bd37324bd22878b080c0c9e32507ed8c91cb2bc2ad5e1688e2ff8844d9c5130079a35c4e52ecff14f413797c1c8cb60239a6c69e65788dc067b8f8680828fe61d9d03c2807986606b0b0fb1ee1b41ebbe845dc4761f1be69278461c8452a7dde89c0f99d7f7a3a8021571d8cc321afa6ce354d9b66e8b224959102ff8837a028cb0a8efcbc76d95e933a2db87970eb687025d8424826c1200bf43f4bb41383a964cb37886d8a1cd9ab5e236686ce6c798d9d7d9d3aa0d05b504dfc7ce4f016dd4d43b7dd15711f8aecd46cad7a078038c4d9125a0bdd34374c810335b1a48b8a583099fa2c983b9c58252f215ea86f261b4950307bd89c1b3abb68da0ae0ac5334c984ad2837dfc907fbcc590457d8fa2759aeaecf61868b8a0e84af8c13d05fa83bb07f0e9ce24fc0a012278c2a6c4db01e27def98be0239c67c76c714a0f73cacf6926b67a46902767852bf17892d77a770af98f85979641c712ed40db59aee4002b7feae06e16bebfa1e17848bb8f7acca8590a72b3a9c183c0bd6c85481424d53d2bc2c6ad8905329f337948ad66e151ea2ec6ecb9499a811d86c888c93ea2d47da5d7e885f1ef494434487297450f126b27f75eb716c274f9c8cb6415a089f4e60961dd38799253987ba8116fb40b03b102318d46d6dc9912427967b2d08f21df21518afbd45e279e1e0f129eccda9a0a57833aa67559aaa6581238e974b566c23060ce7ddeaef7a25e55215237637799256093f4113810b3ef768570b05e9785c1f63421b8de6ae69d1023ffd8f0b9351f1adfc69af223f29136a55c190225948a9509ca8e2aeb3a23bdae9f9407f0b49aa71f253ec65f0f1923c1e88ed86ad2a6c1771adfc96187f9707a25ec954545e4425375d04e57c52ad450702eeabf108c4fcf0275ee1f077debc7411566d214a1ae38fcfcb2fa1db348330eee2f5ca51791fbb1978bef9d280474a5f746309706427e65eac1f2848c885139d8046d26903fc614b5b4cf9722895d4051a464d67e57ea93d1209d5c07b4abfcaa8150c33d3346dd031f60100f2cd3e123cf6c31a4ebbab085367d3779cb5c0f7699dd81e1cb98b882232f193c434c71174e62cbb7438d2b087ee35df86bc3dd97b6944c912c017116ec6d22c4eac6287fe7ebe8af597ddd01fb5d9814777562228a54af1316309b3d350d74fbaeebf90ac9e866dca21e2bafec1dff340473c30def94b973a23467c83f57a66685136b05c405daca2bb4ffd0adc45b2187db71309944c408a00406d38ba38098d9939e2a3b9a0fa60ee7bdb61476a5a432c6a201ccfe6df581b782eb45e52d4b2b226e021ab8583ca2c08706ce6a161cb1a943c927bce3aaa344d94279c301674c7b567a0154d423eea6f2995a81a456e7e07ac3c6d863bc07eff48459b42eebcda0f8c63f3534c19bd2229530e0b01c151101a55fd771730c8a4a6617d074a1c1a1e34f0e8f2933e9290ee2a01e48c3d082090ed6d4a2341b8227bb6feeacd14fb715c6a264c546778b56c539910fb58840b2e2e7c3a8e7274bd95913697382cb194576842352b14c7788f115287a03ca70674d0ca9d7febc1462d462b0fb7868a3a2c5c88f5eec5f557506dfe2882187eeb2d2b6edd7ac9e75bfed0f65959e0cd6b3b853298fb61a1eb5144be588feecce687b1d727a0865f123e65a07df538a3a8efb7a9302be5498fd139f7261d125592b6aaaf12752f715abb6eb305274accecb05b36afc8416a091c5a4bbff9bb6e864eacfea71aa3578b8724d89fc75914f8ea66bfaabcbbc0cd82bf2a5e426378ac53115e157cc34d7f6887edbff81acaf99e7931b3cb799561b1b33933f0d025eceed1a32b72003c47a6746464defdaca327d0500cbf868ff33dde550456cfed8eec39010619bd052d5c7e56a39ec8c2792c32611ef20c1ee0d4ab004887e92675be934092a8b5e8053de63aeb0804e4be3eb4ed355781e8a91e160f583fe6140c7a3bb4d90b326f74fdbc8379e9cec6610a5682b396c5a38dda062f81223ad4a68876e44902da0df0a2c4e90d9e524f3d65000a479eb950689a4c490c16fa324ae56920dd5c344a714a2261e5dd48b7a3625f19660345e70325a1cfc84f88c284c379e092d924887949c676ad7b51af47e4d9fcfdeccf9a9fa40aa9cd406122d0112faf8534e0bcf840fcbb4f4603c08f810ea1c1ce03ff494275d8601b211d594bc69324f24def14dd341807078b70df5c2b6c11c7b1f40e69692401854208f73d714cb1ab5a297e1e40b57c636ae795c56b84b7c12e8e191c0c6418aa0170f343b3be5a99ac112c6e61a37daddf55503a3a1aa7cb265f7092d87dbf884a6a24c99abc39c4cf11dbcd1ca5475481426f70b4fb6c5e2bd43b50341ec93aca59bd83eff4ef5c351368a24facade5b857bdac7e1ba731b11253c6413a62e511996e5308a23523f4d9d2ff1e20bf019f96623536f2cbacc4a991e8e33b004cff6dec2710997916981bdcf6ace3550c5ff62161b57c56cd6079586b6a2f5ce72b3f6f0d20e8d7c6b86d28e6b9e009413cea6113faa654b3b5a850dc9b53240833ea474d3b8a786a7ad2015ac11884108b46e8a5386d92a2dda1568fe53003bd5bd7d7f3d4d0984aa6554f094b6147f473f2ea6379f45c8e91072bcebeb608b0de62bed382abd7eadb93b5e17dcbfbeebe65374201e6dfbbac9baefcd2326315d71c315137efd4a362d9502a3b32c013544ae8ce3c7e5dc01072fb30e37ec36248c3acb674ebb46dc709ea991d0758afe31f2225e392c98e3255e087aa0da7060742cfd61f5e8bdc6df1b9ab17dc0fdbab6824804c920debfd3c29c410845902fd039170cd90ba7b4a0c4881e034c90532c5101a4a4a1fa1a0d1f81966309f8142d433f4e119a038472a9a6bd7e59a2e6a3ff840975ef6f4cbc4cf811574ccc72001990e956552a689efa92161db66d0cc02a9997af6d42958f8f404b34e83f8164a058cf99e434f201d5376740c55e8609195cef970608beae38273252027f44b1926891d9df42cf8406ee4b5eb090571229630a2125e81b835301e0500bcddff6d43171f2f1db35552caac1c33bc078701abf173afea254d3e38bb1ba63b46b41ff5702e1a34b3cae284eb09166a4bbc568e9cd97e3e0cbe4af04532c592a2175a9da7c386922086629042804834bb870774bd7f7b7e8b81cf4bd2d5cbd77420bd63f6dd3e056081d4949d708511c56315b2e920ea9e4a9d7f51c74fa5a4e93e3df12cbaf55e77f38d86fa16ad256e6ff6aeafe32ac5b4cd47155344d8979fe588ff8a1ce922864ac006b3700cdd4d5bff73e9774d864a366c2750318668da7f6f2e9145e7d5970c42233d35d5fd659b2060acdea3685ff7182982fff92a1c005bc7c65c705e389917a97823f046f91224b64017212833ab645b2cae4a24b55103690b9fe1c6d976f6251fc83c2b142c819891f3ddb025440dce853e794bad4e25a54d2745b594329bd899cf71133feeae951e78209c0fcc3c81f5dd2887cabb6200642cb35113d81efba83e15ed13adc4a0e65d0782ce2bc34ca31e15ef08ce798a18694c1c7ab482fa193a246a5db9137920c518ae314e7266063bd6451540096cd65655b12d2a632de710426b9516829adebb1f4a43e23c8f7b216667bd61dd7c47f956d744ed88fbdd9fd8d63c3a671d3f05aca5db5378d1e463cc7a37c356da70abff47e37ebdc358b3917d12797c174b7b288276d43ba8b989cf2cefbbc236a8e8938d0aa0c04dd84df96de1e93b3bdc2b8fd2337d496df7ecb1fef4eccb243dd3d9e5bf2fad2d98baf64cbb591d7b76af96693662a6aacf9d134990c7de2473d34fe8de84d0a9bb547e62bc873bd364408433d209d9798c744c858c5f82769b09b7fe8b90b4bc3f60e781327f35677bd9c5a80ab079a64fd7a6493ed67e4d4055f56dc3887312feda1ab7873e493a7c4d46795a5f6a05156d99bd213122a5f5a4dc613a04bfd1af1eb33809b875a4a48b85f026ac647ad1228f2082eb876e06eae99e07b878acfd74b371fe4b7cb0e4469e66ea55a713a763e5e5318a0f5e25eae3fa51f1564d62b9ca5775daa770dc2bb844405c9f8ba6fefa2b121432aefc6df2c377bde2a93b27d99bf4a981699d271e0bc9cd6595b7e3d1d1924153c52bbd9a123f152a22230055bd5745edd2810846d1a90f6652c506384eb4ade7ff4ddf445db742c113f368e2f2ca8fe7cfcc384ed1181110dcc8b89758212e3ec6e7482841fdcf7efeb55e785371df8a03870b1a83b3df38c7c2803acc8f4533142de07d117367f0795d513e71d651e0323d1ca912aa0c5f691f569e085740e84fe60b07c929c6e684be30d32a7532930e9f581f23edb8bcde5373e2987e85ab4fca86210da94832f43a674d7d8e5ecdfbc363612ce69f73aac5bbf67a3978099c8cdf1bb595481de88f73114010e26f65f29d767d6b0127a0c753311811dcb6d38c2e0b6cd7e9dc3dd4fe74e80adac927a6f0f3f0807c5607e4f170f804fab1a375603966233deeb3d86e1aa23ce6484a3e7b541528e728cbc9b8a78724beb15d3c50daa6a200ff8733d5fef6cb1b78afd90652e5ff9e639af408af5b6c4a27921f5d60428463eddc79da95e3d2997d11368974db682b4fa91cf31d441835af7f8346df204bd283abe937ee2b86faae7d8c1663bafde62002b733db01e4477bacc1404aa92fe73780465079c636f53156c28aab70654772a6028d90399b2a1e4a96dae7cae6c11f928c46f8ae66a7b231c429b878884c211a181c951d6f628bdc1e8c76e9e34064e5164ad4156242fa8b6a441bd16d3fb550710b53b69ebb40ac75eeb03687d629925308fa26d118aab9973c01f4762c871b92c4174cbecfc2440aba0ad12ff5ecee559fa9a9b3fdbd4565cfdbf82867c7a0f0e4b67a4cac65b5edfad0e1024508fe3e8839ef7bee821012f7b6a18c7db3ba5833d12456a76d022e73fc1c11bd8e79f0c2318abd5e89b35e0c034af32d12c56edc41c944cc36c5d4310b94d9bef6ef4c45fd5a754ec509ed26f664ae7e92147c249af7c19791f5d294bfc23afd81bbbefe91c0505b5712502c7e05fa3b8cf4395eaf9eab716ebcec9b96898c344cae4b8638f1e37a6861a0deb34618dc0f6989b5e339373dfb2b0f7772f8019e3c2c31ea4389bcccadf278f812a3f3992b61bc5e034091f9e8747a4ff1359146fd02ec1f9d7495f2009188fa475643df2fce0cd2e24e834585f3de16d631e055e82c870ab51a9f388538163b022085c472c53602228e2e022963e97b310de78d5cf73e7836fa1382ac56ca92c1fd364f37c0598acd14ef350c4912bee6c3d98b883f1d799b32da3c650d2892f77b833827bedaa1a94bb3e2597e67d4e5642919dafa07404b2d0357b2f4975415b8bbe501005d3e7a9d968f86924213df70fdaf02a160aae2781fa519bf0e8a673c5e32bc5fa2ec9b11bf965a20e8447f5b28e35fcc7855522f920c804812a0f75df12e3052ecae810a03a24f3e7904f8d4a975042d31d8e46add16e761161cbd8ac07b34c41ef01f640b96cab6c0b3fee4020eb7d47f9f8f78ec1215fcbe62ffb6d9c9d62f302953872c3bd9de390ba4be4fddd71940ee0cc8e559b9a1eb4fd0c60418a693220d8add8ed286781c16b1e72a34468955bea45222fb99113fa1d03e02ba2d85440b96e1e6a1c600fb15c70a24c02d655eca7d6e51352972ceaa1abe79049d24078a5a839fdfb60bc921d91a15dd762417a25f6fe576e28121b24c94780cdcc459ef11d05fe87cdce8f008de3ecfcda8ae978b41486c6c30d4293b69848bb6c16fc7b9cccb40bd9f816e4c03f193845797a8cc9900fa3225fa77eea1dcb2ca594e5dc5c603a43214f88c1e68900da1d5f017a6c92d9014501a81914b57ff7081816c70c2ab8deb437a5d2ab366432aeb085940298d14b1e920b3ec32f8d10e9d6d991d07a0d4d2b6d01e46d9854d51fe93808bf5e462d6f564a3d240ba6c007bf2f429cea22887f41665485000b6f7c5acd9143e64d10cb3850f8dcb8dfa8b2cb606b82bddbd1bfb823274eb8a1ebce004d4308f24804a0f8e72b6febb7e976067d09a5ce27f98518706b640815018a16be417968e9506ebfe070d72a0a0c833f076a58a362361d44953a0b7b178a61f3af6b9f4e1b55790bd32b6ee861ef02c53854cf04a0ee5d38b0359852616e7c9daa38db5633a3935cae460d7d25cf494dba7e09fab753dfe7f8f5c727d9651f916afdcd59e77699763d040289740dbcee025a2c53b9938057d6f6923717bf65da3613a4efb9184fb8779f6531e17ab9b13bb9b18844a2242092ddd076d3ee0ec287ff738ad785c1f943f68119873d02cc3f25ee16b8f578e1d630a416bb4e259101463d055356b093f5266b1a0c3f9d643135cbb2d07ba5dbba99a56ce69627ed7da22cfbca4216f79fd63220d135c6b6f5ce12e7cc066ac79bfbc210e8d4cb2e4f5bc56fc37ade5a7868b7f2e1b24ad851fd60c523a6d442ed5bf659b846ca59753fe6038f769b04b55a66833262565669a4d23506df97fd1105c4d4ea0553027eb836bee0a6841cc95e51f862f8b7ecf312c71add403c5ebc5c8bb9d0bac1aaaf23c6cc911e20eb21fa1a55c894fbd8356136982e95fe89ffa68e866c508081d9c7e14bbfef695ff8fac7257869a48fa1709fab75fa6f65f7773e7b8a99ed82795973b7d74fd78eace3dfb1af54e766603f2c16689f5af706068b9591c98d4a9ce6e559c47e647711bdfe1165b0dec94276c6300baf90cb0418c02d9c86a3ae19474db1ce57ca8d64f9e20bf9d60a686f983581aa09522538807709f91896fd8128e219ea7f2949b90da1c66288da064f11379eedde0415b5eed4d66e75b05dd7a672ff30b3a90ee24b880ca24a3216b99b4bac7898aca54aadc23013ccd36f76ff46e9ea9324c615d033a9543289206fcac8e13dc6e1aaeef833c68a7e221e1141787e9e0a2c9b298cc882b25b8724c6129a710905f151a425873ea89cedad980f3561d11063979646e932363369c3da6e6c6533c3bfc7dc5948efc42ddde4199b39cd5d545d9593582f9c9cbbe31c45c17d0694ac45f604fc22a6c95c4dc865339ea8216cdc24d19237d708920cade34c465723fed125511238ee03f19155a41e38041c161ca0cb2460a81185f795a7d0bb1b27f2748465327f9613dca3aad4393016d62e6948062da96e57477e3d8a503cdbcae8cf2dddb27387aee89ab409035d0c4813702dc6ceedde7f3dc2d40735cad4b77f0b11efc22fc557f69de3ef52e1c41387b70c88e4622722997bb01ff3503304d3b3df6a61f9c103c082b90f8be48d929047feaa0516a272b560f25a0b71f26841d4aec77a287bdd26a512d11406f802fda2bb1c7036be6ec54541421d0b2cc7eb969183e93f39a5b31e0af0ffcdf41aa1b458a6c1201b141dd348fd2f0e9922d46819d0fe2b1f4aec1ea60d2014234e77ba1235b91428665c43774381d7129f5f68e564c2d47c0288c6e4b10d61ec8b43559f1ce326ef910878c1672154dbca404c1c6616750cd51a3db2d476383397f21d50a3372228320b284919b0968a772f31be90db3fc76c522d3ede0d506634e7a4613e8e651fe256caef546c89c07502bc137a6af3d6462ca3c2c8eb6ed5de46af3cd78a13db3f25b1237b53d190d0d9332eb331db7d625e15c9d46d03f70c3fd089685db8ddadc410584039049080d53222650d4a94829c7c61d9482e0cc460c8c6a051545b9e4306ca0567ad85092b1475c00cefc1020fcd3999c27f77c28d872fea4111b1cc9991c2e5baa6ac096e12d1f5404179377d2952fc690785d3e11aefe140ddffbf1150fdd6a77abf3a0c406a78b4ddda59838bdf46f7bb2001ee5c8b5c691418c4646d66eb8dea82a41ab039e04bb4b07ed152282e6848b2870ed52aa05d8e76c82fed6bb9f997881c9f3345ce7849e7733cff7a11dd66b12097dfde8122b7dfa6e8d205fa2c158bafe58befaad25dec98e8eb3cc08d987e532cb1aaf9797b77299e12cb3c9ac38d7f5f21e299bc32b3d0a0f5f505eb0b7412fef9e85a687b4874003fdbbec7649239eb9ac9ea1539ab3b8138f269d597a1a6ae8bbfeec200a3ccdd01fde61e14047b5a97768c784d57420d1f7eb19aa1cb66ac2bfbb86ae15de7a90ebcd87bc72a7289043a8a2ac72dda01bc7a963f0af39aa961cbbe59a0ce008edf4cb5bbea899187ec940eef237f1caddc94dec495d1ff24a2342cd157c9e0dd00d03f1067c4b40dde51f61c4f739d98a87ffb12d7b5b753ceb79738b50a8bec3918fb4f3184177e0fb780a9dea246ae74401444ac8c7c88b613da340ae8cf76c7c524d075b607c06f62b8acb37b58f24aafcc8fe654f66fafc27e1f092d2c2ffae84e9a445a42f7fd1b92be1717c9dcfe649db1060a5e72da08796fad3949b978e3b8aec618b9285c2c416912f7f8fc25c444a1da391ba1670b0188f458e93d6668b12009e7d9acc699324502b3e5546d55371c84f76fdf88e98c87950e2663662b237ff5b36213141dbf1ec0e3b67930a9bdf8e99f3971dab2661d0f4bac6f0992406536e9d97edf4560e000271e9eabce3fc0252efe541a8d0b2aaadde49a45e3015b00d28c640ab305be0cea1924a052a14eb2d5644413d9840a89306fe23f38967f6339a23f60ce8d1d8c805249db92064e80e641c1b14121c0ae897b1c98d14215096f7513ecb0bb5e76e681f2ca96975894b4545c58d6b4dcc6bb52c2ed4ef89de7a816741f66eb47d6bfa59b9b5fdc06f494d25f2650b223f49ade5cfbc91239c403fda50136e4315bd4954e52d5c8df688a3a89f0df009a90348fc871e3c2d4d80efe748022f7680dcb669d1544ab00b2cb921ec6a3db1ede956c362a4f155247f8b29d2f2cbdff255facf1648093c06ed9a1ac000937648bddb20d9267c22df95b8d2d2d3af7a8fb1e01c99c52f320bf24c2e3e247a254c199464cb1251b88fa4f34336b5d506bcf3261e0214dea2b16c0f0f39a317c86b61a67c4ae7a1567cd48545dd6067a70e5d6c672869db7199f73736f51dfa5605f1a6b1c88328fd32e964b5fbd0aef6eb7b8ba51aa53773703aa0e8a447afa203fe8ec4d799dee3a22612b301ab441b5c9bb01d0e147274a7177b14aed661a8e9bf971a193402b692a9533bbf25558ed815ea76d19199cc9807512262608a39cc9d99f4b6220a5b55a6712046a742823e07c9a37c4017175af3a3066570f20113affd594af79622cdd431071d459d0055ac0bc2312aae8e3106ef4ac907218e95ccbd5c9e9e0fd1501bd4ad12b5ed0b74106535091eda74e44f1c4325dfb19679c8b521900f9fd2b6f9cfaf18a7b4f6ef4b7f9d8fa3dea6a68bebe4251324432bb74d9c2e1612f3ea339429f922488d0f4cee477e34c25b179f02df073f2b8948ed6f21a27d4220d0e147bd371db9ec50be27c6198b28cca701316193234d7350694b3348a7c91509dfa49641ee7c2cab9fe4ec0d34cb24cd18e8f383376f07692061eddbe33add07c91a388c88e82e640ff96b29be4869d78a8ff196949715c8d7f73017a781aabb082165f67489e68fa385ac4c412b1ad1a31dbb284db7ad4c83b90122434a668ece2e4986c5771334faf2b09e621d2df35010b295053c13aabb77333fcf9ded4c15a97cc03454bb2a3816a9038f541f1b0badfc621cd490043acc1bc5592050c2927476caef233fb3ec2f7999bd0d331c600add460cefaf4b6b32fedc58e1cc29214c1077f47bc9167aeb16039cd812db2b1895ebe878d856a1c6b80ba0cef8af7bcd1bdb046aadfbf8fed8486b84104236217befbd775d0c9c0bbf0b9a96850b9765cb6205ccb2832acb0c1e4e0f1b15dddd3e5f2efa22c014a1449f0a4dd3342352984cc1f403196ce1454c3bae421e7001175690396207333889694584d19af6258b526b37314dd3b83cb958e1eab008d183c54b8765051907af303b186bc95980842272bd40c7c7e522ca6ab8d18e85f6c50814b4a61521466bdad4ae1d8b2ce8148667185094502510b90edb69f9254b173da3e59723606831088c0f66a6fdced8bd77d11d3ebfe471e4d5f8f60a10dfc36ec65858dbc65a51a9982b1d1149aa27885079675d807c03be5c996a56cb2f57b468f901b11a116ded1722a0da6a316b6d069b0045efa7e517226a68dcf20b112b68f115448bb017efbd37680950f4ee71d58e786d2db80514bda654a3947ad9e5ab6776641be72cf704c9fe0aa1b3d685c25eacb5563b81286954763cb7b2a87e85a424a79b5ba0324fc5a808a9a79a3a9b097b3c8f0cf9b842eeedd1ec7a20485d6718f2d6ce9aad943bacadb48f46a0a7b3e5671721992d7f44496859250f4a5482c440275f93524a0f05d27b97524a2ff19105a7ba21a648608255b541ae04921e4877d42bc4be9ebea802d1a52f303003c33d7cbe08a1a6295df9003fad2dbacda0cdae9d9a853d09d0b6084b421d30dbb4cdb099833efb9e04485b84cd11727e245157f71d4877d867b741e88bec3ca1c37487c85387d01729a03302145bdd2dbac352987c80c43d8f7be61e21f4f968b6cd43a06c4977ccb992bfef3a7aebdf821340db126a06312780b725d40c607a02e0dbb0965d5ba9fc2244126165ea26adb656218210c20594d27aef4d0aacb537cbbe0891d42d335f9ed45c2dca172b611a6cf9c5ca96bed2616737d36173ef5647b451a8adc95f869d5d91363ec237bbe8126bdfd7b04848d8d9c3fb0016fafe49ee8f72daa3b00e57397388f8b3ff04cebb605ec64c6930a9edbf3c3db5fc62454d83d0f2cbd352bb66481ed3075805bcd6e6a3daf643c0a44a44ab743d3f6a9b362dc2cc21efea9dee563a21e408a005c301c0cd8b95c1af6aa87c3e1ecfd5e970aded06839a2af32e6771cda89d74e658b569d372e690563af912ad54d7a5a64ddd238436b5f62f55d4f4ade451bb53414a20fa24461a9038459b852a20b56d6aebc1b8a09b219e7a310b09a0a7d0f18928514500786f63335d9f00f0bebe8ea94248480c810330558071f26283587d95aa42483d38fdc08987324874a183587d455385909ebc80850c4e346591d2265665165343f020039b150c0144acbeaea950a63c6181e2d215cc37a4a7b54f8d66f6620bd6535142653c549849dda469531fd5ee09bb6611a9b7f9a69e5bee11f23980b676293474aa3115a2323f7300e5172b52dad593be6e1377a6b5d14caa99bdd76655a36d67968947d3687612ae6df628ec48d7f3435c3dab883857361367146acb18a663b2b0456154409a45db626553d9502119a34d30307182c31c61767d53cb8e6110aa9162e2ec23b55568f10328d4ce8e43146a6bf5a73291da042217d8c00947e608d34a79647496ee10ef93d8687a299be69ef9a25af351ed2b27b5183cd4a40c90dd93dd67f4778d1455d4f4cd47b5eb2b129bd4361f715dc2ec9eac6bd6f4594ba1d48346b2339ba1fb42913b7e57c4dde37e7fbf851c0dc9a3b31528a9a9d1dc6e441b2a8b1dfa0322a592e49db7f6a844b1b79c04379d499f0ef213b2d39bf7a27ad11ac9a9a4a43ebae9edb51e79bd0d49a1e98d48682a81ea8fb2b62245627f9409d1401bd93022a1a704aa379a6d9a360029849a6dddb6968f0402431a12681ec99b36892f4f505f9ec0a491727256e860c592154d7ade524aabe75591c6dafb7d5588c9324da5aa0206186fab55155338ae03c12aa278dec76255c144a55adddc54f10208b27070c494717383d36a89f922474c183166c43881e385882a50e61165307951d884aac1184fb12f62d2ba286ce29e22236b88344d31fb45ec1e292643c94382f5c7d62bb024b9e10a1112c8472309707e4e3a91e85c218c30c208238c30c200ef6b96364bfa43459582424de9ec48a1b323050f3b5d86a081955de0f84ce1f84cd11b8ca0946691cd29597dc09873ce3955840c65c59e14d8ab79f9d138029c979fd3c74a36dd413f7984b74902cdfb6c014a3b25ad36dba66a3926f4499d9a50ea8e17504e0a65a9149d7c7954c8d21f7bb92529a9e5d11550b4406c00e5cc313fffb223e8e44bdc8a10c127a2505dad0d528856ba43d74a85e84aa5f0997492d44daa3ff81be87b1b4aa09861e95aeb052381f08bd418ce630bb19b547fea90f7cd564dd59c9c0014ad1a275d675663d76c4f5a6e183061a4b484b912e687303bf8b897e3c22c8569a2691aee3a2ad050b1a65b73db36cef3a800438514154b503104155154aa1508520103153850e1c2cd1463dcdcdce0e04c2135c59497ce4a9f29e713357af8d10107ddcf1350aec44c1183450c0d625020e605f9da124d97c415de540f0a52a04b50fcc02546d3f418cdb64d9ea410e46a9a31fc252524c4f09b664cbb18d44304e79e2abb088d69f814d0f0b56ff832263f22db89289315f21185d14b307532a1f5d6036194de4617a0b86afa39955ddcb5428a0627a4534f40f037efbedd68b68a26a05741ac13d11c16803fe779275285744e87868282705a17c19c2ce58f772e07e356c6c943f3f2673ef3be1b1f20a769af1c1288de06983598615bc01c454ad8314f3f777cdf7800e9f9ae5df60c7bbef7a030fa656dabe17e86aed047a4bd02c5f96dc2eef6439225aa80020831a6b882c5ad3c5112049393175210339aadd29e2303f8aef427d0cff028ebee9d0db9397fefad9f5bf625893369cc1a30535cd04049254135719973defa854663775d3ebadd3d6f1888217a2d4472d2010b2b6ee8e1073b34e1800d56d4488541850c3cc4e83b5959435946840a493050a408a962f427084930f4474d9a7e851186a6ec82b3b727201116bc6011e6c9851aa4d181d0078ca8018d0e4f4cf0804d0a3e4c9a4571788071368722b4189c80c8c8707292413935f9c0a631c656e229335369a6d44cb1c9c152150aa2d6071be4d42d09fa23b7602ff407af09437f30fe16e04d4b2f3e885903eab4f4e283962e3e54e124065d5888ed5eac616dda2c1bb2d6621795526ab366b656d7bdf7de8bb55ab156edadad55a378decb6d202b862e8bf7de7bf1d46aa5d99c9752bc58acb5d65a6bad338bf55826ae5ab779f2ab52fef7f273808d2ec2b5d65ac1ae887befb59ff5d3565bb52cbbf766d67ed64f5beda5ad73ce39c1325a9d942b680043da3ecc587d43d05db5586bd7ccecc3bee0bd64f50d01beacb674c7bc5cadd5bb18ac60b4e4bd41d9192a5938c7a16066c0793187fcb1aa6fd5b16eb0ea036fb4cfc3c9bcaee5e9ec7860cdf5f33e21216081d25213dc7bd78e1c0490423c724b061063b96d5eb7510199e8414de744214327c01c2850e680913eb8c20464ddb002500539805c68b26ad9463527204f4b2f5e9ce8ec0b9075050c2f5268f0c2e41a01aa5a7af1f2c2eda2839b056cb5f4d2458bfb04e2b4f4d2a58b1890d5d24b97233427106ce9a5cb0f2e6c651078853b1cdcf2308843a907ce2e3780202d9374d305052b2f92583b68a96ce004ec02fc6c30b592628667868b0aeaebca70f9a2e08106d705132f8aa69e0d0d940e0a1de8e01b24713bda0d9eb6a032ab0c34e3047f3e300683737504050da101a30525d1b2db1928503c7966a6a080029699826209ddb6336330e6b286057ad84717502097a9d7410f639e173861c3b54052d41357a8d0608398186d52ba8192272d624489418cf680a7d2676f56a368690fc2f589364dc12402d88d4a815a417f148c143543d1543a55852c9326d54985aa5b687daa57b8e0d0df2ddd01eb0fbbaccb7adf2762efdeb9cf87f7794ffe9b591919b4f8a2bd5befdbe7c3f37c9858ee092d9a7bf7f9e0706b13d3f8f84c63fc4496c6acc63260d2f8dae703bb5abbfd7c68308881603a7b8bee2840674ee490b97648337d2d02da5e92f181e51922c65471e2c90cb40013ab55aabb281da595524a2ba594564a6bf530960f92f407a553fe003287fcfc82d0534b691e9240f27248f6687997fce56138a8570355857ad09ffada03aa07edd1833bf79ab1c62d5198c671b9c60ac06759c76df34eed13aa56cce5ec997874c3b944614d494bf593c97bbd74f23ebd4c845aeb8204aaef2c91db351bf1accdaeb5a004aa3d7cd8cfd0886b42a93f47b7b517e986206284c2a05428c903015d377c275425f3498175f56f955519e34fcb2208ca9f69c3a3dbf3446e8b3dda029956c86cd3772a49a0fae982cc51a790e98284d57bf65e9204aaff7cccadd6a5fac905cc98999dbc13d10d54a19fcaf54cc2aed709855f31fdac3593da280e162ed74a062c5c7910c40c1fc8a406210a40da322a87293d2fcf420bf6f32b41b68f7b9b2f87dc2c8e3d3fe4ed8be46d361a5b6c224a3fa315965e7021a9a584c90fd13d799ef616c62058e59a5ae90f7d0587daf6151db6b44761f4c70a62508b4774b42de279dfbd48ed9da81a69ed892df4cd221285d579ebe7eb6b38b73b67ad9f3308ee6d6afba6f5760aa346b814e88e8e48910b88520da5144c768c41d0e5fa61ae2ccb6ac6e60e21f5292c5c025a0a7bf574019cdfc2681dd5b4ab4d9b8bbc6c4e1d98f8f848fbb23b6af85183ad40615edfd0c3228c5aedb68a5c22130611c6e685298c1e07200cb796695a06227bc28083f66c88c2661385bd288c524a4483b28ed9c259c46842b007328d881387a6da2f5496c5143aabf7f296c2b4ec38006b16f145a2bbd86b2b829d4f5b9b45fcd53b30dc56b7c7ab6c555fcb15fad86dc3b4de7a6b3dba4d335ecd8a83168aafd6bcbea0d8eaebf3dd2c6aacdc025b210861c0fbeeaa77abd0fb7da7baf60b2f813c2f7fcae5f343bbadd742d9d389883ab156b482e9b86f436de98e15eb5375b10566f1b256a12a0c4f80bf2cdedea3b6e5c711d150dace42d92cb469d3864b965118ea9b8b3c2815ad516b82d46fd90bb74f347dbfe5d0d4f53d4236edaa47b9604d57fb65d742717bd177ede65202b1be85acf02614b7d78bdb16766f490924de9c6ef53759d4befd7e43ee351fba436667fd3b2becc9ee5d7ea5a25f853d42ee55bf57e59eec3d42bc7fdfb3d68928cd58939403c0c10925f629e23288d4f268156384c2e689501826a24145f6d566a21282481ed6763c4136d0d6e6f934a0ecec98be867a481eb3e727145046e5e0a4ada7025277bf1f767e0d40d232c4bebee6daf20b0226d1961863ee95fbb6693fca1ac9f6a36cc8061a9f8872f89b86b39421dc1ff6442d650862fdf55412681e689e664fb8e3af74c042f8cbe543b40089cf6531083e87cf5dee138430e011f7ac72f83e0806fb5d2eed55dc30f70bc32fe232fe5015e22e0671dcb92c6ed9823147c05ac6168ccbb0663774b20768a7daf685d2f666599659353a3abb0daaa7996633283d047e2e15782d9c61b6708e214361f774e2104e27147625a7b371b9a85ed32c1873849dcf19175def74de85f0f2e9baaecb79d775ac19f988764e2eaaa22be7bc9b5ed7755dd775accb4fc88ea8933371decdf09e30b7f92d0b67addf6613ca04869e5d7d57b7acb95a5b0b8d6ad7db95eed89ecd674d9d5dbc3050293a060b151aaa3f5732ed2e2d8b26c8ea04e30578b3aea14882ae6f7d86b67197c54ac715b68d4d8bf3dc17a436b569e608d935aba66e948872ac6f17ed548b9382aaa99e0fe1e5d3d22ebf8b477404f5978baab8ca5264c68401e3e5f618d2d15a168fe8d05ecf52e52f63cddb343347a681e155616d85e20423ce317d3f5445d7bdf2e684fa738f4190e6db7dbf9973ce39e78d6ade9c7e9f975fb660d8be7977136e1d0e65832bd5876f675b096a07c1607f06ba0e43e3e3bad26191eaece098cebe527d25c059c5e13e68be34b5090c6cd4683fe19e7511b6bae8b29d1dd1d133ebc2561285655fd125fa939d95459894ce70e8ecab2cba9a64ff3218dfde699e175a30b24d42c96dab5b168fe868fcec888ee62e1ed171444710978bf0b56f0ed0f0116ddb193ebeb4606cbff97c6c760a6b5ab660cc1c59ce849d7992d45edb4b35ac65d40d585afbe5a7c75d3a407b96c520dab3214fd96dc6699adedb5c940df15abbd5ee76330861407a7b2fec425c7fe615ed45385f2d8b2a20ddd2aae586291dd432ca0632da49e38e7262e6e6f2f2986bee930b7c65a6a91f10fb0ecbc69af689c64987f65d87431f7a9cb01506d59fec5f38446159d4132e6d8096514f9874675d1496e5ee186b58c31ad630d6f0892ac6586a58c31a16822fce2ed43a9104ad719ce5be779f61097ade621868d35263eddd7c4793b2fe42718536aa6dd8f4144dd05973a151e5a886af1de923da53d33eda56235285705ad7ecb39e57cb7e34a0e875961de4b2681bbfab745cc1aa6971fe8806a9fd59ab85e2949a23606da631aa2dcefe72d1f60de9b238d1b4e87dbebbb87a77343ddfa9f2116d553ea2abdcfdf37bf72e14a7382da52ad10457c3764acd1cda13856951374c75d7f3681a7797691fd79dd338eec3e7ba6b5ccc116ec423aadac479a56f8e0578645b958bbc2cce6ecef9ee66fe46f5d5c16be78e13b6c22fec6e42aec1504af52a9c5e5a15dede42c9a5d34ac0dd26528568bd762d6bed5eae340861c0232bf5696f8546ea8f769c9048fdd14a10caa95e85134cabc2ac59a1f482261449d01b09f0c15082e95538b9b42ab4fd85e2dcd2dabdb00b450935c4ebf9c9c51c6166d1043db978a79d3bae42f5dcb3cf01f85de642f1c8da4a55a20982dcde3e9fb86f9f0f0e4d631ca46b9c2717338726a17454d0ddcb97482765802c43c53aebefcc28483374f2989287087d67b64868121b9dc98f015b5706c832fd33a0285a4e6ca17b84d0c645720449e6a97116ad580f0216607df633a028de8752aa4a8b358bd9835ab417ef03eacf80e2bd98bd6624540c6a27eef74ccf2c8b4825b0ba5e663d14d862dc67d3ae658c6836f88cc82f2b3092a94007ade56704014b5ab0e52288ade5672487154c702d3f23950c0e5ad0b5fc8ce08062e5094f4d0cb288fa5a7e4668a8a087263aa8280f4b6244a165d5f233a2a385104a68c0969f9159c68a173ed8d0a64d8c63b5fc8cb06aa0850f65288d4a3346e5bebb211221b6b3dff7fcb87ddf434469c6b8dfb66d0481eedc91a880d4f84edebb6d7555c8fd0b575df8a93895d377a2aa2a72eabe9cc4c5baaee3be0abb7fa1ea37fc9e85463e32a31f454eabcb3e92a49dba0c7eefb8d8ea5c4ee262aacb46720f0150884dd24edc3bf95120ab92b8d8978da872121703dfe5242ed6d1bea19001b4e8f4fd08120eedc47dffde85aa83e1ea9502e0ea5d4e926662aad952acedd444426c480d584820d9221d61480d63640eea71e1c89d09294685052a43b4d7abbaae23e29d880ed1fea3e87239e9c63827ee44b5022972e22efb8809da29e9c6b8ebb47655b88150067d97f5e7cba32a6309055ec6be8be0ea3f6831094e1f9151f810d5da8beab58397f507cce32a7f72aafbd20498ce8a92dcf4118b8689ae3722e25dcf7e3e88283121c59450c98e14e36ebf21247496a954799c603a29280e8cd484f2c4644219835001a9ef3910c08035ab20a1da48b66951b2e9a224387dc406115708d1dab3d565fd59d17f59d61f714e5dc654585aa4495f5ea231ee45351fd9d6b2589fe52220485d9fa4d547241085a9ebe5972f9e5aa44c188034022f2d8ea04b57a519ebce854a68accb3df5dd97f00d9104a15ddf75375a59a09ee74e44ad53938e18f72e54d2b8ac843c144c739e742d481e48909af6a4596ca1bead9d2f3a42ef112421a6ba66143ece164a60ebd8338a06267d343bcb2848337d730ab666a751be851598294bccd37056305c70e1002be60e664cb0f752a0e8794d5c61028a04228ad8e282271bac012366b334b1059759b5fcc24494b62dbf30914454376716a709e0edf1a55fa2227a58ba9b9f9c2cafe51726a0c816181f30c1a445d0c62a54105dab50166699052af632d62d69bfa7c72c8c54222063f75a0e7b662e4136cd2a50166ebe0d653300a955982095227b156c16818d9e9faf945229f766efb2f08e01c556fd75dab6dc02154d3bc54753cb3d3f66dbf704c12ed8c67d0a05e3a1354363ac7db179d11d3d41e8670d87d0573aa47ee6ae227557c3225abf7a1acefa227bb068568fe6227ad76b164bb0f90295d44443699abe4709de67008a32ccfcad770d8132eb21ba309ef7b915560985d791d7abad955028bc92dca3fb241785a12343cf021c4261a8b35c745fad6dc1c5bccb1725aa98e28b1233f8a24417bac3de2be9bd1577b8eb0e67d1dece50bc97974edab92485b52adda8b669b55a3a6d28e26ba27d0d457bfc4eb452f2e82ed6bedd45da5d9745fbed44d5e25bfba2fa4c4927a918da412bcbae232b42aab32ccbb20c8b9954e917257a50a20577875b2bbda06bbe956566b4395b476b8b9b1de34a5533b06074505e86edc5689e8c694744d1da7d2eb55f21a1b2561e0aba69f9e5082cf50bcd882c53602cbc64f8e00765b4d12215db3eb6d046cb166190e1831fb4893165199ab64491a1694b94d87626a4d8966908051665d968852eb237c8fb5e6b1d304f73adb6d64fc8cc348bb68dc6d62e1739c042060895a1694b149896c5db805b745fbf1f924cdfdbef47ee9b6f87644baf129da53b8aeea794a651589a347d1d6da5e20fd974486d11c98af7937e52edf319c65a28ae00248bd9e7fc4ac09d65ed4475eb5a64f41f48b417a920c14c698282d6c6cea89440750aa1166acb8958732f9388d7f7d8d7eea9618fcd44c2744fcd13408a6597513f806919f58314fd2e4011262720db909165256ec61504198651c0496152ca7955220b3d4ea45ae9139d7c18660145dcf50fead2f5b028babe858990d2f55e0d9a2cb042c6dedb2ebb27bb26e7672bbd54d71731d5f538a96b776cc58b151b5a76ddbb20ddb1f67b35ad6a9af67bb57bc32c6b57729383d2dfbd8e4e8faa6e2ef2fedd3bfdf77befa647bf0678de89a80ca26527d5b7e350446a6c379b5be06254b6673eb03cc2b590adb52c12d9866c8d9f85d808268dcfbd7e3b0eb32c2205e11a0301c1ab2a710299fca80ae722ee98dba6d755eef4dde49e7d41b8e377acef0beffdeef5eea997b92f0237e249952aca2821032831297fb6cce1d77b1f10fce1d3db4f2a3f20f6f36300b559dcbacb3814029ca110a0dcaedd4e1d44e1024a680085cd89791880a4a585be59b47688edeef6b159e8165a7e43c0a4de90927adbba7738446244427b3fcada486b2981561e0ba1918de62ebb2c02571fb9ba85c65b9632041129b344346a48a05903b8b58cba02a56bc6195429d1c987e111a068e5a5ac3404700c152f2da38260d2422da38280d2dd4a9e4a2882e8bfb008f0025140ac69da6ffa137a7c01748734a293971a977a2fea4a5804383d1bba2b4d3e6970ae507579b58c1ac229041fe878220a064324600c9e2c70b81ca10ac283c20221967280a38537c58c2c3c3af4b48c7a5a8ab292a679422be0bc685d335437894e760dd2c9ee422a601570f6ec99e72b5427c9bcda9f5427f1a8edcf53491e486692ac91cca94e72d3f3f4a2d73469d2cf30d8465969b2fae98ed5671533abd7af720dd3f75c15357d0f5a59eafa55f615d8abdb83a1b8baea7675fcfafd589dc3ffcd2adc7eb3faf6555ebdcb3cedcbb4b0087cd18673562822350b27941268757a7075faf9008fd422feea6058b4ba6c5628aede815944ea5510efdbbd6fdfb255785559ace7c21e21f7dbef379c8b5c1fb54c8040f383152d6fc2206605c320261529cd723ad1ea6c76af0520a84579032001e85b741f80d602d0ddfc28608188818717a22411db8e9465d369ce91d2a0165b2de2b4b6b4cd396938e9a4a7348f93d24929a594d239670f41b65eb4b7dadf9a8becadf55e5bebd56ec7aed9d56c166bb7ba874ebe2ce511e745fca3d5b368bed5e29c00520c735debcc4eda459be547015926a69d887a9429cb272021868fe7330ae4b0828936b1b1ed0b98b2130b2dc82f4c625a4e7a76716c7576f959407e6112cb72ad56f3ba00450c82a59a189dbc2c90c25cf28708f2c7d6cb6737cce85540ba9ff5f75a6bb36cde15ba66d7565abffa09a9595ca1e9978990854545f396d6263af92941b412dd5117ce5b6898a69f2246dfb7f00a7d544d0045571f671a83a6744a124ded27274bcb1e85cd2969ba9333db287cbaef05499ed49a98b2a6bf0e204d6951926ddac8fad3663a5989728ae2d402a71344392965514e491a5e83555e6c9e169c0f61a27ae0d22d8f091fbc0859fadd872b2a7c807a7a0cd3a07c7002827cb7d2b4803b58630228820d83616d89a81ec8347d4bde8c1369520d88ce0543e2e3fe98cf3ea9887407644648eecd17897d910a340758c854697abcf4425213d56e762b13c07919d5c3941f227496dd6b6dad944e09f463dafc43841692657185cebe1f22fc16c93a2f0defb42e9c0082327c02caa81e9c4449c1d24d447748bc4990250f8212f09482a00434aa074109686f0f8212d04e81e2a594120425200390da860c61b6a093724e4a6bb5f6de2cd3348cb78de3bacef3be4fa55aad4090c5bab9c1c169b57272747476765cae193378787a7a7c7c68d0a821792031b2d1352490fcd16d481e496acf6c4302cd7979102565ca14ca82840420a0c7083c0e3024b4c3003a0a40800104e5100128041004f0030b000070bc6ee4f0366ad0f0e9e199e1dad1c969e1dcb0c095eaf33a6e933c646b9287e4215bca6ea2b3217918c9363d9d2450fd31c618638c2f0fd3344dd3344dbb7cd0b66ddbb66d573214db2e3f2485388ee3388ebb92a11877f91007509c4d3c8ce69a76ea5e3f9d240f2412aa8d486827a5d926967d6969a9cb4d43b1aeebbaaeebae6428d66559966559762543b1ec9ee7799ee75dc950cc3bcd1f2cf6b9625f138e7ddff75dc950eccbd349f5a0cc262cf3a9ab42a118700a69afaf63a450f6a996a11870f614b26a15e454bf79401003aa20dbf45bb638679665b80749319c9768522cbb162e2d2d350dc5b637d588e12f35a962f84a680c7f6949098e29add6242971c5943436494931ed4b4a6031a55a46524ccb4bdab7ac848be1ac6428a6e5a61db12c4f2e57c81d53c2c6481eef7a325d2f258f99d434e31667533d951ac2039afa23bbcad814e6610d98e46a62f2e4a4fec89602a5fec81627d40955484a20934b4fd9599cbf14a21606e05bc46730a679668a0350c4340c50a452160660198a41d76141435608700bfb04822da37888ea550f32af73ddebb2ab564ba75849670dba1ae22cb33401de45af33b1d5d92b088ac759d6ea51322696d2fba27680218a072e513c18d1ad19c5c394966ba27870d2a73b6a3d8287a6ae5d57f24545f06380f7f3a8ea1003145d2e9f5324c6b870a8699aa68114a6612d07a0cb47d3344dd392ce4445e1d2326a07284d8096513b3cf55f5eeb5af0d2db31409b651785e96003269c3047385a61d6b0030e6d69186f7aed79593cb2cddd92c179f7f2cb06a0f8c2f65e165d20ae42dee715bae3def33e9f3c9a007afb164d40d3633501f5f62ed9570ba9ea3d14a85f3d02f5ab8cd4aadc4301fad52340bf3a527b29e0ae3fd98f6c6fd993663b6ac9b060275f695ad3ae730d0a99d65ea178e9ed160a9bce326b6b09446de53744cbb0d66d5e90141a7f033813515b33fc6b34db751b02d15e5da127816ab62a09d4655d17e6dc8638afa10d5baf6187bf21f8f6da3704c9b3a1761c5658b49df555286e5ffd0b7b722efb738177853d39ff2ebba3f5cbf94dbd94402ed15ef5d5b96f8876d11eefe87c27ec11b25de7db75724fce7b847c07ffbd3efb0cfbc386f839e10fa4fede0a45eef838a1b81dff262c625d367e16bde31945f86006290c3fbb2a1ca2b07b3757eef1fdd08eb34fa883c2eeef670da0fdbd7cdd16d57c90d6bbf7fd4585a4fc7c28cdd7a6c52181ea6d766b9f7d21dd32db5fa5b40ac1accd661892c7d44b02d5832228e22daf424c7fe83feff4537d55f57db63dfacf47761ada0cbfac17dd3dadb5563a9bdc3b7f673ea23d3fb5d0e2f004a0172e8162d00e0aa31953a105d09f9a852d00c5a0201d433d8814317281fb9ae16b7bda68d3a64d5f5b3325474ea030aa691b6737b96533bb58fedad7efed9c291ca1306a8204a2a7444a600d9ba0a4d07006509c504fdabdd01df2cacca4b4cd138639db638112c8c60046c3a2eb64689facb5f6da15dace234d345644929e7c38a59eaa9d5ccc1cd6a29968ec953394924a498f8354d72c22852f8062504ba949f97b6f0b6db3799a5d86a14d539f85549e86f352522943fa69d77428bcbac81e5f76de41afbbdfe79745dadfb9df702ca1ef02fa7e2d34f71b7ea1a5b0cebb96a1f0ea22f92bbe1a634e084b7c7930403184103eef4786e87b7ca117ca5508baa6fd66af85575a1f745c47bdbb610c7af9224cbbc4d9de00142dbde8b2f4c7dede721cc7710fe22e2d181dbd9ff7cef30e84de436a2d147578a1c8fde2ad0b919a3ba263dfa01b83cec707ec83e10ddb8c2fd4eb41215098b5535ed54b02c96fd36a41e9ccf7e26ba4b5f616ba5efaac86f4d2eb614a2ba5af9ea5596ad3e28082abc5159a5e04db05863480b8c5e34e3242e5713863f2c035c132fd0b104b0fec600747f6c8b603649b366dda4c1cd41bf9a8cf8c346034dbfc6671ce50443a51cd422d3c483ab47cf6436e61035ecb28a9196ca5b70815b231b9451a2dc868f901a913065da3a45850bdf0e84f945452db96515bb069d1b60ac21b7cd149bac307eda1c74d27bd9db8663c8f90515ae0104583292117439a98d6b4282d82686d15d3b4336502d0324a0b309db58cd2228a1f8465402ccd98e96242b50b362b77f98e0b59e0be7a17b240a50897e559d02677fb22dc6d2ee2bde671aa6806c1faa3fd5a04646c89e6b9037e07fc48a588cee9e7bb1799efbacf6fb988ebab3caeeeca44ea8f36f318547fb4b3be935979249a6046ed3ad986dc6be85d158e548a4c7bee45ecf611bcfd968bd47bdacc239522e78a70a7dab9cc84ce99c7ef7454fd2608070cfdd45a44d5ca98883b2764a163814a912e4f282c80100566bf609e4ff547d30e8217306361a4120119bb5c66e15ec6c4f9d49afd2aac9f470327dd492aa9cae91498b17b221a5b2155aa4dd902e3a13543e116d6bed8bc4229fb10871194515940e9a223f378e276612f05ae714661be7e3bd7f23344816bb9854b54c4107ab68ccac2057d5f74a45ecacf04500c72dd21ba43c478eb4185668c4665d1a451b05c50496a99250f6498c5d0d48eab76508b2273c5865a4461a1d45bcb282c9ec8c88e149bcf3291a59f7ba41891fa7383eacfa5f5f3239522b6fe5c9b47b0d6118a52d01e842850c6e665ac5e0c925334874e8868de1ed0a705baa2c8488922d382908c4cd3d9a7ab04224636c044673781ee5075f613240faa43cbaf1074f4c8d219eeacd31135e669cb433400451d3d8f6f0873d51e2116600944a0eb5fcba8313cf4aa65d498262dc2c034e96415e2362dbb7da54963fd771b8ef6ac6be1a85df51b8ef7e07138e2eb3c0bc7d6c7ecddb770dc8e732e4c134589105ba670c1530ddf8dbf5eafd6471c9c2f79c5703e72d7d139ce1667b21863882ab218230d8bc5faceca23ebdec719c78103078e8e8e8e8ebc424b144344959981cd0fdff77d79fc9ef351e7afd7eb858383a352a9bc7031460d69aee0015311aae77cbc711c3e3e3e5dd7c520862bd6402105758397ee343ecef8aba7a7a74794152676a8e2c30f9200697c74f1f0f0b0582c029cf9218c2b4a7080a205ac9cd56a95e372b9beef837d418332a67022830f96be1bcff3727272542a550f9626ba9881931cc4f044757373d3751d4b872e92ba9061e64995ee353ede58ad56200872426c81050b1aa208e103f81a1f67d0a041c3f33c168b95adb1610c272634d8e2081d1d1d9d3cb25ee3a38e0d1b3670e0c051238f2258828a30ca100389286bbe871f6b9cc6ffd7eba552a9c42f7438224d184a55e4a07af891c66ddcb871a3eb3a08c4a08a131dc4a0b474021d1d1d9d3c760f3fdaf867cc9811e691012d88ba028c19d810031c7e60d122872a4fa0f001081a3b3b3b484bb04153860f68b0410733d868b55a4852a63c7181126a50e0831bd4c0c1c161b2859636519ec090c4141a3e3e3e30948162c2052a988891c6464f4fcf92991c5e8862054d54a1831a3c3c3c72cd1463be50e3848c165252cd1352343813c61267d84834353c29430922a2c8010f328b2f3080820c2456200331e497343f4051e506253374b1e179de016250a221892a3d5c295303070e1c3ac658a1410b18be9061caebf50a801417dc400a36485861c38d1b376a3cc9c205261428a9828a19533c45c1810cbaecc00524624a0c4a3384c10396a313a8e0490c125ba07ea0801726b63801040d5330f18100144728b9c00825a438e9f1f1f1015244932b4f309882cd138ba7a7a727d6031760a8e0045c5891e173f1f0f0a854aa292ab0010a24b86892724195e372b9baae438ab2450f9a34b1c1162566ba9b9c9c1c100491589025054c6620a5c90b24c0d5cdcd0d8bc54272a10630e8c18c962268d005cb5bad56dff7ed808817ac18a28c1667a67c383cef4b4888792a95ea0c130e5e70a181124f68a1f2f9f8c2810387a40207a52859d25461832dba9e8f375eaf97948286275a9ca88289982f409e8f336edcf812126237582c96082ae0e2c45483272cf081e5faa83363c69790109bf17d5f00b268024c9822b86cc1e6cbf9b8a3a3a3d36a1245105360b29099fac71a6ff9f8f87cbcf9d8dad9d9e9ba2e3be3c48b1c9262580aa3fb3fd2384e4f4fcfc7d5479c56eb4b4888b540109c001566a6f0c0c90f5f7af8471bf7e1e1e1f9e87dcc383838cfe38fa917ca18e28b283a3461e34a4c367c3ed6788fcbe5fa88e3639873f6c923929620b658e30332927081991a5762aa711ba7d1f391c6797272723ebe3e3e0cc39e3c223db900050f963c91a6092d366cd8f8c844e34a4c345ee336783efadc757373f3f1c6471bff79f28834c5490ea498e20b306698d4a851e32393cf95987c4ee3355c1f7b9eb35aad3ecef858c3860d1bae3c2239d1a1c90f55c478a205081a34687c64eab91253cf7d4e23e723cf6f3ccffba8f391468d1a3572f22877c0868b27539c38e1e4e3e3f39189e74a4c3cefb9cfcd47d7573870e0f8b8f3d187060d1a37799464c6fc8044172f4e4046989e9e9e8f4cae2b31b9cef39e3c7e5f7dccb9f77abd3eb63ef6f8f87c0909319f551e651447ec30830f633c8142898787e72353ce959872ee3a8ff7f1e6386edcb8f111e7234f4f4f8f974720355d54300614412c8de172b93e32dd5c89e9e63977e5b13b8e8fabbf66cc98f1317f74f1f07c0909311e1c797c299992e509256080e54c4e4ece47a6d5959856bf794e1ec1bf3e7abfa1a3a3f331fc98e3727d090931d72b8f2b291b60414366082088b8b9b9f9c8e45d89c9fbea377964fdc6471c9fb1b3b3f3f11f6f7272be848458ce8d3c86600b19a6ca3491449732abd5ea23138e2b31e1b8f7d5eb3aad56eba38d8fab9b9b2f2121766382145860b1810c276698c2f3be840031ef23d3eb4a4cafe3b89747d5753edef84e1e999ab218ce9996d418ce9700c5703ed6f8e89da9498badceb46428b6fa121262abaeeb5a0a3655bcf8408a144d70e0c0f191e9c695986efc751c3b1f67bcd56ab55aad56ab9557d8c923d213305c08a3832a384821e2f57a7d649a7125a619bff1571e419de3a4c062b19092c208424b9931585011e2c68d1b1f9974aec4a4f319bf9147d65b1f779e4f903f53ea608b1aaa44b5000c16843163c60c9dcfc8e317e2e0e0e0e0e0e0e0e40d8851a2031625ac9471032e74747474f2a8ba9197931a1861860c169c81a1b341e486892aa49a00c1c4164b80354a903f93c5621951f2820a14388161a909160d22f933bfef0322861ab0a0011545bce0e4dbb9cf10f8aebb4aa55221b14007a93051ac39a3c3939d2b31eda85aef09621dbc1213ebe0bbaeebe4156bb62cf1e4a9062836b4aec4d4face71f2d87dc6479cf3e8e8e8e8e8e8e85cc9504c27c3e4cffcceba12d377d64110fc92570ccce38c3c1e0088a72e5a6e88e205969d9d9d8f4c385762c279eb3b79e4aef3d1b5b3b3b3b3b3b3b3930faafe5d8949f5ef2c16eb4b5e31561e75f208022c76a0660c0c4e4624d16ab53e32815762028ff3561eb7b73ee6b0582c168bc5626557d65d7525a6eeaa7fdff7e5b195472422a496e041195c5cd981151c1c9c8f4c19789c3ce2b33ede64f076dd552ad597bc62aa3cb2f22873f064062c60810e4a74912206825f428018f891e95e8929fb3d9847eddfc75556a9542a954a7525433155c6f2672a71dfaec4c47d7bf7aefb9257accbe39747d984132910430559a29089121bbdbcb4b494a5fc991f99ec95b233dddb8f4c4b7662d999968810cbbe8400b1ecf523d3921931ee4c4b6ac4b82f79c5b833296dc757e2ceb41d1f694dcf81aec3c2a070a8fec8b770635620062bd8f4ac45f34d71a573da90754777603a42571d52480a8124743db5b2d63a0514ff900b28ea681d3d1a2079cca41df494d200ce79d935db1f429efc99934b97508a500a6d4ead658188e0446b675a7688b0caf5321826f452c574d4abb5457f2c90fde691ca7c9665fda91190b159472af32d70b14be7a5470a72d3f4d64b33aaa2d987c25cda2550f5a1b0cfe6300a9f0a76a5b49661ad4a64a14f6161f80411cd3cdb355bb055bdd31db6c1cf6621087aa73baa8ec388ac805cf7808551803d2cd8e2bc3da100e710a0cef2d5c47452ce164c3275f43506573aa354e8864880f4f300f6e1ac534c27654c5e7eb2b5232a4b93f6e608f3d2ab332391530409348f444e11a8049a3fc22d02b08fc046a284943e9a72e610655416297d34a70d31b54c5a76622fd492c93004d8cc311f6e01a5675d3e1bb5f554d334ad884acc0005e99c37cb12bd37d48b482db31009511622d94027f1ba7ed65b2ad2d3f0b693c14280ed642e1febea32b0057adfafb241166cb5bc57434c6132ecc19a34bbbcfdbd0cab549b647fc481814a6a6be518d9900f8824d35202c9df6cbf20754d9228b960496aa3ba26a96be63173d0cb6f68e6a00fb780f2e210a5a1bb9d8f307d27d8a2a0268bac8e20664c00ca282c6a3c4f82abcce52334447faa8e7bf1b6715fc779de875539c8642a379f8f9bc32640eafd75bb1cef5ef5f9b8338485809f5da3dcdce69c786a73ce6cda79672da2123380afe1538b29cd453863d1065181157b920c6867b804787f2fb7dc6c432de06caf89ee92cc8fdc36d32981aec36191764ae72ca243ec29962b2468913e496da7126c1f912d2b2125414161d2b4f4820b4931a52549a64a0d2970828b1c602113dbbe346a208ca761a8e4ec9684414c2ac5d0cc0000000400f314000020100c07440291483424d434c97714000d9fa43c6c4295caa22088611032c418620c20c4802122043033b36d00970c1f003cf59218add2bba698e40c77acde61f6c6de484b46b71f2480736d6c4f49226fceacee3348d712b3327cc460ce47f1d2a38c8756111521b70444864917968d778b8748a8f76292d65262ab1edc238aad6b0065cd824363e6bac6ba2773178c872a65c16785e9e297121cd287fa200500882a59ccd3d56862c064f0cc42a23db684f27f9fa8b39ecb542c23d4d1872d577e5666b06ad02c4a11847ebb181f02307a9b1c65b40433362716fa2fd2d088e545b8b349ac404b5659e589d234359a896ef5b5e2f84b7fff516f34a55d145aef7b9c97b417c35fee018f42d4900db337c65306c1172b3ab1de69f814886b936882072605390432440f3b101956bbe85a05db891ae2b7182bebd600545dcbb73c67f5e633cdbd28a404855689180137420bace03014e3394fa3786fc0b37048a9066d7f18c631655ed3766c563fa96eccc85ebbc4882c61d6e0fb83c5c07aef29775e5458200a08610d5d2145129fcb2b8d1cd80c030cf32221346f46d42f787840747816eed242042e8699b18526c3e28d268d37a39a88bd270385790131690799462a50c865aef66492897e26e0c95e4e2a586fb4f81a1938c9c8152fa415f1bbd882f534b570aa583f4bfcf44d781156acf67e6fd68a01d44ef919967198749a476d85341d88bf3ac0e786e6668d00b64e4c844a19b2e84480c55c16b1b8f7dc6a22eb8d13dcd3eea8f3ba0c9327b3b161646388f90ed6a377098091f757f4867fbcff4bd64bbf525bf2194be3fc6fb15a8c0f2b065d6f8c890a8024a2cf4d3d313e2a549620fa095ce4ae0bf7debddaf6f5092831aa56022e14bfe705c3714a489bf97ea7ecce95230be67801325d11f81049a0cdef0255e5692b1f1c00946e8ff15a322779d906e0d6be10a156467c04d477b32f427ac3bb6e857551bcdacb060833d4996538b0a1500dba215e6a588bc729943b1fb76dfa9f5d55c5b95b722153c8fbee7d4894b3c907c2271874202d72dd45356dd156b68a0c1371c1cb107334c63d980aa7200db8c69914c09d7dff2029ca092513a342660b3043107c08ec6126f4b889692758e761d62f29fda35a0a179a6e8898b13c9221be4032aedc033a7efc3e6d427c7afc4b63d969050331b53571e878f4215e18c686745ddf2172cdd152d87c137c30f8793280810a7947d6926961b53740f773147394afa6c718b5afd29f65d3f93127d8e14ee2e1171aa0a8a2c4eeba1b48301d8b089297d3ddfbd81c632382328cb22bb17aeb157afeccddf4bf01f97835d58808a0cadea8fe9067656b52964154719c30dd3f9557e0c585c25280d914b7e1697d2b4e56c0f2d182dd2102de49b9b3a3b94fc819fbd0cfa0ad4080668fd0166288af6c1191b90ee09fcb57686eb128d400beaa06d7c15854da657e306f6b1f248fb638096109db80bd89125c1fba5edd92c23a744998d5c514b3f4cd80f073043b7b080f614bcd7ec9fefbb1f50ea07e8642e84f2197e30d6c637d67218a31db0b0220f77a67ea30f43342e6af2ddfe3c0e16537e3b6195cefc247731e60dfcf10bd600025c483b9060b20e38fc0cdfde21125ef9f634a389c790edc4f3fbceffdd414563e3f47ed513201310141403abfd948a0cd0fea13cedd5a0070bfd021f235e92af0dcc2b165518e430fa0b32818cd350a27fcfb61794b2a610b014740f02f4c1d2a7eee50658c33f800d9bef8abd90189f12e74097608542ac65c59182082a1c2f58f88ec2ac8bb59e58a22308accb2d9623b866563ff0c118ba7a279af40bad1c299a150ff8d0614201d03e9567c810f33bf4d9ad06e9318fb6fb7047975ac78157c0954abbef00d6e7467f5b78e08f34bd851e01d80093478c0bdb9b55afd83ec83e49941fb407be7926af407aabb92e3046a07d65bd757db5fdc8e488ee3c71d406f7d5f4d7f75bb44b28b1f77c079eb7df5fce5e912493b7edc81f2debd6af803cb679220833cf0469c40e0611be58482876d9413701eb6514ec0b907e2cd45d5f15fa7ef4a36f25107ca3b07aae51f745f4982e4e3e1d3587f793b4432a7f707bfc6fba3c5b192067b3b48e330317b708d79a2c3e11af384908335e2090c076bfc31ad8a1a2e25f717e3430a84f8fee0bb20338bfff786ee5c27c846ef0699d9fedf19b893416e6ec4e7934a832f60ff62f8480140ef2dccc7b875069fd9fe9d1b24e77fdede08d5b015065fc0fe85f125c5418c2f0af5b87a0681d9fe19195c6741af6b06e5893002f61f78d841f3dd8406362ed9a0271f045900e4ff7a53672301a4d20f812c60ec7fbeb9b33dfc51e907401630f43f9f35c14d5589214e1a1e1035e0eb4fcd1e2048692f229c523c7004c80292fef79fb5e5a66a06f05a92fc68580f27d8bd33eca81081f6200e0cf73383c216c01cee33c2bad152401f08224d7998f5d3c961ab419081e90e7ba4676454cb3a180d836a60fd206ee94814afa73dd457a6b7a9ea930967cae7863f0d838e497751ba2a64a9795df707585071ed2e4a5f412c3d9ebbfe00073ae806f9d05374cca05feba10d80464477ada2627beeb340f257975b496f53ab27d19c91be4bfe34f819304dae8a8aedb9cf02e7afaed559ea15af4c6c9f7e16507f75ddca65af485d62dbd6b340f35757a744e89552ed70041ccab1668133aaf5fc36848a07adab6ab39eaa551974ce4fba7a41d49031c4623a0616728db5f6fc4d01fa321432ed8eedcd2d5cd24591d499d34376632ba8e5c1e371093928a0b0937489c415a32712a0985d693ad4002542bb61aeb5df080eb03f809b26dbfd5178b0d9ff883977b6bf6a060c586122669f028274b17577d3a593b9271f8cfd131178cadc88c9f4d4d04396b8f2dc41be0730ba241ba4d292ec2a2ed5018e7a6c01246129eaae596c055512f337b4fdb799f9c9247810d9fc471f4a6081cd1fd83efce98ffe425ef65877dc7740e9c5cc8b6fb82c0b8fd02ce2cc1ae010916cbe8a9d910d379b990c1394be80b6d88cd7820d1f0ac35f302038a859bb154bbbf4564f44e063ab5c8bd5af5987052c25897492ddb33f34aff60a628852b7f79f1a5902c4e2c3f5539a503130096a102f805c2a9008c18bd0f625852e21435f4b3cb4f5790f11d98668b20c9d1f06731e2d48d3c68f8132f073ddac1c2956c134466463ccea2160f4ea499b267c39d9a5db2234c0a15400ae1b6fee14c72ac7889a767725cabdb52b2e8f0194c404d579fd0781c3fc42b28bab8e74314578963b6626a9cfe5a16b19e470204b588f33a8aa63aef5cb7a3a316f4102d510ca7ac3d4b03af816a190b526af4f290448ab194c872cafc77e439a03519b6aede02eb6d654072175002eb367a9ba7948847702c0ff58464cabb9e10e3526b49c6516c284afcf8f9371effadf62299ee59b6adf63fefb8d38567773bf5a4565e8d6137d5f7c8a5c5f237c257c63ea5d170ee404901902f430b7b57947644b10251aa3e0081aeaee0688c4c83cd1c15149b2b37273de4ae3144dc5b652f48d7d1482e53c60e7e772e47511246ce88081d4fa3a2d21194c9ed00cd77a554c6748b681f9a9967ec2d0ab0ee7eb7acbda66aa9aa80df0631d498d418c9868842ad6ee4e63cf9dfbe82cb592b75cb3d75bc91f325fc8d72f92802e71af74f8d88b006ebb3454de384320f873ed9a6b106ffe3f6ed84a2847553f62ea0ed6c97db10e608937b5770f5c6c10a0459ff6c137961848735021206d8b14cdca3c36a1f8c4be31a905a0341648e6c6e083ff40f0145d235e93ac0c8b8593b6713bac589cb9eddd85e8b1f961a612184c4c189a81489ced7e7ce70b2d50b09c6c4ed54747b3e620a0e6d3e044944475bf1f37f3c623ae32d2ef9ada6d30c247e81781caa2e85ad736b1a10ed776b3b3e5b0ff8474b4549b5097665b6cf911c9dbf0ac0befa142cfd6430658bc7093314f3fc1b195786ad2d1026e5d91f9e3fee4a0ffd8bec35defb401247224ac494de4c06694c6064b767b3635682a35e0b43fd15138442fe9cb00bcc475ae176347af884ba8a2ea7576881d8677f62bee6ba575acd2e906091450a9fae0e3359f4ffd36892e0a95e6a9547550f28638c6ea4fa67e0eee5c43936a0c4a400456c0066a714eca2f41bff2d6f2535595cd71251e0bcb6cfb108ae8fb13df0543d38437017ff90183aebaee55d652459df17a2466f1637498ba366ddcf386b1c61940a5153e9de9a2f39291d48f7af02067b5bb582942c2589be026ab1505f57b40c6b5529c28dc1ca872098f6e3950dac3d5d8ce01a001fa475edce33d88afc1ca39f2a6c212d92878fde7460ed40ec4b878c06f19d67f2a8a522029c73a402bce689684d7ccb07fb668b2247bc1b4cbc6bb01d2f38deeaa3a649750d4269190dc9f7c82d5d9ce0c4e687b66dee93cc4ce7c47c32022abd2809ee67fe8db1804e5bd31514bd2d6f66823126071bd5975780797a91b2102eee4723ec33f41701e0d6406aa8f004abdc127b8e5f0e808ab7b4c1e3757c511cf8a01d14af0d90da1ea6586b360f7924500d06842d6a9db3ce0f527a0daebf6311db00398f4936dd20a7392644a1fa1c66906d34e81ef9eb94f837dcb87a7c20cf549fdb9bd9ab23cb3c021dda8101202460900987dcda8725f7ec2290e51715e42f459c847206512f59580894eec1720e084f616956b4ef181970dd018856431e0636977dfd801bcf872a7a1f255ceb39d1489c016465e3dc4226261ae4b3bf15bac5507b714aa6df8075c3d81b4bc602d069cfed630022a9e104c525ec50ba22126636f441358b46709f7d50141ae32fdc8c0e88e2a78677943794cc4bdc39ca3c4f726773e72aec2787b06b7ca377f44fa703bc4cc5120db85addaa2fb47dd1fc3b46b2789b6f8115ff4ff9e43ccc3469565d13901aa38db1c2d7fab664352aedf68d4e95f14197a1b6214547302961923293b3fd6573fc0f3261088321e591d50f385edf9ff9bcea77f87faace75dfd147ef74ee788c9f6a9aac3a1db63c1401d3686e358c640806dc60206366f50abf9352e999b1e9affca1bf5ada01ad6c04f37c343232225544390e83ae6efb33445358f4a35bda3974b7065d820bcc78f16ada9ce86e874e863720b072fdd7d32543fa4a66138bb368e8cf2e01147cd06900acc301ce801befb8c2ea5a0ca25c3f64839885e4881b431deed0e9b53f44f3a8292d96aa798b42025b81acada39a67d14d500aba67159d5fa445a9fee992c4022b31fd31855ad17513769895455da676a810d35bf79d823f9421ceab0f9cb851c93362f94e14d87ecd9eb5eb48f9550eff8c6ea0040785de0b9f9734034f3c6c5201f159bcda246b7d3fda2b85b3291d887aa8f75c9221eb3c423f6f120d8ef78196c0e89179ca2283815bfb4610e6a89bf4c3104585f7b57e538c72df99f2e209a862d83ddfe2430626603a61510818c12d0759cd51a0de67294689cbeea94a28088066d21e5a92e60a6cd4fee989e24ea99707a0aa5af96787bb47db5988c8ce46c254a1cfe7a003d3d2ad6facdf98c71a9342d4d6362244c48439e958c9e534b5f6d31301a863d9ba7e29ad86ed0173d9501729e242810185d3d5160087bdabf5a4d27013234002668c965ba5a558ea080bb3435e9c53f30fc172e51005f85d48d60b680e53890e44061b1e7b9d0ee11c499cceaf3920595f863cb74c7aea4e988594ac038356483b7b65c67813c9470e751f1a238e7e40fde33614d767f657d92c7791a66dce588157de084d50026d700dbf3cde3fbd7a144397a146829eb069c2465fea80693401d5b0791573df4d0cac434d3bd0847ec0c29ed7989c37a7f89359e09a2ce5e443020711a723f15f36434b212492979e7a76a40c6be904f44521aa4ed567fa6a19b8a3bb12d4733b6520bc47828280049ac0712a12a98b57e4e527d1da0cc8103d4a8f6999450d78e271ecfa346fced78f4280ac41ba9cbf8cba9864fd2dd5d9dfde9b73ff4e39d4fac7b5c9b1bc07002e640ff9b85108459fbe0ebb127fc6c8544ef763f9988f01c4bd6071a1a00a6867239d9aeb1af19409b6bb0d0c8e8d814056a5a3210c8aba76123d21a22f15876b7a7ac6f3d618e8d0460a9f12e8625f9eadf9979ec45f9023e046f1840281a40770da127388f5e13bb145eacdf83124021c41e71184ec220796da08a9b613f2c3fd5972c974971202e0d5a1875d1f68bb988a66ed240be732ea5ba65501e5327c1b857b7d285c66c2cb8a9e234ec56c0a16cfc5805aa52ac105cae4c8843fc6a7e9eb14631ea7066d891177d4b238b563cf3828af832339281628fea6bdf0489a658c4f5fd60611e22ff9221bf6dcc755c799829d883c8f688be5b9939f87fa03782ace29d51e05f144a864817c69c2515708e5002ddf9595e0a9109d8eae68dbb444f04c0a01e412604d56320cba95d93d0c713bc6135caea9e3bd5f577b3b6a52a24fb63257f2d2809788b1489b181dc958d54ca30ab5b499d2d2f870888b6d137c1a51436bec9750826f70e9e114c982be6c8242049500dfa2e59618a04912d1f971c899c4bf97d5bdf16cb19a2216cde5b3b94120786a527df0213291f321695ce3eff5f0e71a9f5765e4a88766328c7b52fcabff317964841fbac02ed1168a7120f0388528fe0ec452c541abbed987a130ea80f65cee0e489a0643fa0e884142eff951771e1726f3990eb30067077ad3e919e9b6046e87e5d4dd9cba542ce36ed8f1d50e5d1c7dcc795b545b975172aaddd2f615276d88b479221b01cab9a64dbde2be5844182b05a79a9e1452c052e2249aba19db5f847b2910ade620aa4d7f34ce374d01aef195724b8d3069b3285bbea55bd5996d860944df3c11a45007ac6e7d81843ff06cefb9349475c5a27b8dde233abef73f5e86b8749a62905e25e7c4aa3fb03eef6592891d26fd5e88ecd1b0f2ad4fce5a05d7ac101bc7893b9e6edbe3818d3374c94a832634bbcc1936580cce6f5df1b948377642665619033dd15bbfed2ca0156f89a343398d80c213b828271ab8ceb3ebc613032bb200013c152918034baacdabadb143184f49ec94e451b8eb327074cc125804d90ba1ba62e6ca1d851c9eea22b7830d7e7f6e260e800db20f4635f46c8c4e8fedc4739089a1f3bab438939bc5cee025292e7d8f9e054e0207f89c1fc8ed25af5cf2e18d536b462c31f99331a67a2d2c714d7450166d7e2b90708f482842f925b054e7da04ef8f5dbefda6dbdab2eb9089a3eb5f0b28fa8388a1c866b1032370160d35d932da093398874aee22038f010ec4c03d3196b9ea68051a4b4ce708ca45cd3e83cdd0ee97a09a1604c45c40439d439d0dbdc6ddf0047c0fd2c00b80158d18e9b388b472a17ad9d47bb1abfa4ecb338f45bbd608fe0e3d47abd9891da72a8ed009253cab51dac83e24cdcf2a52987ef293f32feb2b2759aea4a369563a2ab1cbc46ac1cfe25405bb0f53fc255c48eab6cb80938abd520c30591a7aafc3199e3b4065f2cb8643990d0bde217227d48a1f42fcf0ac35bdb66ffb6b4edd7f7e285db0d28e5b6ff9f2f0adf6e25c3af6cd756a7c0de84d585281cb5ed3f3e29d791f58d398fb9cc80ac5b42ab97a5b89a37185e03fcff1f5b2d8b5b3d0f411b0c96dd24629f00ba42124228c39739e15f2341197e8e0c8c8d040a715fd734b22d40c77baa3ae9971a3aac59a0dd788087bf57e930b1c54bc53cb141a40a6387279d21846525fe51ebc87e741323ee07fdb15449c15514e3c4d337215e6e4b3a07a998855d63a54785b2cc7623f09647afe835d5a7e00cf23b2d469abf374785cfd9d890b64e4de05d250614d2a0c36474f25ddd2e8c7b891efcefb536e592d940c7e7dd3d97b7292805317327abec6deff32d13ca352895bd3044dfa7ebee75233ed1b8f5a3471ddd160997b7858e9b9bd8f916980d3db9508cd6816417114aaeab5970082734824e7dd0bb8e0fc9f32476182bf4bef43a3694ab805028fa7833e5e2644fcdb21160c45e8b72a3337ca96230851e7e031d3480ed61b0c512f30276a3cdbb5c0b2df92dc8ebc476b417f375be167efb0798fb1b8002209a9125a6c794df1c94775ccffd0033b2e76a18206d3df7011e71c21b30637f11e19dbed07d909ad6f577a55ae9bb8014fe6482feaa094d61dabc23b691d1a0f8f055f36545dd888f955ac5878690ed930add1a25c5cc7319b892d2608b8a34d1b768f874923ad4a505b4c8b08b576869a90bab34f25d2643fd466864387134efe8ae11076eec816e98d748d40196efac4049398dfcde2fd8fa46df647c7086f4b780199ff7a3245bcb2d5aca3e575f9cc7255e4a856ccebe46bef659e193af04ac2cb7a1ce9ac08d741b5179819f6fc86c6633c327250f1393521bf73875a70bb63e904c72141a9b61bd83f99d7bc17721a728c2df903e7eb1895af40d9db41c22800176bcab35e51c23e109cdb2e456002684a3178d4919e3fdc72c2440b1ddadcc8b8ba0ff6061ae1501367a4dcf7bc362077905f714c7c5a043290a3f063c65d699784ee8c9c4891a1911c0504c9a021adbf0f66d42ea45df4800d50492b5b5b9c1379f692a04453df6812a6c3fcfb5591af54c340d1bd031ed6a9d240fae5b93ad2413f400e93adc213b5b5c1f41dfe182f1830517d04516169d0e80de4906677a8dd918b1f9e81433ff838aed69f7738b9b458af65c1f91cfedba522e430e21cf94e4a385ce1c86adf4e11baa0c093253da1ccaa8f417bb41770621f378e1b85c4cd36d512f2d2ee578b418e6318572de55ca17c9c4e8523f1bf2c9f320354da6716f5a33113182107b375191824811bb8ee0dfc29a70d1486a83172214842686fb0071927a45d84dd9188517908a997c62b88794021efac7e157a272a7c667944c4b2af84be39d2770701c73602e4b2e107a5262d1060d0351208cffb6f832390cbf8e1eb88d75e9a341a9320bdb355478ce783f307c7eca17d189a1ff9723aa6abaa76900bb3050a66e77dda87c73a7ef486fa853f0eeb5304088083156cc932295999c111ecb63e2aec0e33574bf1b2f028080a80dc919ddb9c3ef2038af1c382b9f9647b5c28411f06bc4e5ab461b7c7a1407373f51bdf7dd49ca757b9b33ade932aec051ff49351fc0ef9c526585f224428e27ae785165133e176360d6667cd2d0abe7625a134b5010ce5857dd3e98906802f72a1528b83e6f1d083f26fc9b5d492486bbec50aaac9871b4637ee8ec053d575f583caaa7bced0a5ee7cfc2f4822dceeadc71efc2cadcb18d1003be8d872449550190a429a84e426da2e5698e5b2e53805bb7fad92a17fa5b1ec1bab57db6e3c4096a75ac09d1fe58a13d1359e7e75cedd0191cfc96f4e34103d8361c0aa8b926ed75e0ffcd963254f0f49f625b930f5e6a3de6068ee76254dac95781ca68e87ba0fc4cc5a58d30f63991f1417e07d121ac906d8dd7c86849de7099c461f70432ce5021cd1377d8aaea89bdde44bb402e4e4569eb2aefee6f139236b6708fe8b514ae54c280ea83899efafd320e09eee55d4e36db69b2390dd503fb6bfca23f42e592f38c2ec0c56e719b7a5b5f61a5e702982dbf06e43ba110e485357ac5b99131656a53bbd52c98965c70fd26a08945cf7741e1454c0882148c9db612701bf64666531a70cb4ffc13260cbef54b6b4b55ad8a6b4b55ff44c737d95eb1b48aa2dfa22a50ca82316aff37d18033767f480029cbb406e8f1697d0dd8f0156b3e55f95e498bad86a8a80e38a0d8ce3e832a1fc6368441db355a2b15ae726633622b538bbebd73bb915155e8370fa55bbec40e542d482042ba8c628ff16f8ca2cb240e608b90e21a590ad50150c1159e1b904565ef8c5c4903dec80e4d06f1e76346989aa5d89b4aeca05ac854c465b47d0d2610859d4055aebf4ace4f25e7479de3af96f7a7caf157cbfb53e7f8abe4fcaa72fd55727e2a393fea1c7fb5bc3f558ebf5ade9f3ac7dfa1986d200e661f4713fccaae7391d409a503a40b08f1b300eadb5ba9f1e0c04844d2df5e8c09ff3c02624ffd33dc02e1483110a87406429217e9b3132f596d314e08a64d39db61e9227cfcecd9abc58bcb6f2ebc6eb9f2fe92ea8b6737d41fb2b8dc76a5c507924b941f8fedaa19706d47a5a5e88fa464d884133aa1ccbaf628a406389b8cf2e166e8a7ee6f51a802c9a66d3c8955b98aa312e2a9ec0ac954fe275962ef6f435524c8d71754fa9b266be3ffa58eb05984c25ad6884b7da766210ed0d8be3f2e20491a293a5d02e2e01f0f294cf0877532c42e5bee51b8baad4e5a3760be7fe251791b76788fa86b84601bc9254dfea2e8d5ab5aa803074486b1971df1933a06cb5d0afdfbffb27224b60195170a13e7a80fb6f6cd5c8139ff7b99ee4f5e81086fd1891cf74af11f9fbcac9ad38c7010f7e014c32300e8a450fb0c6bc9d3793c083a58ccbe87ff9a0defae2ca44ecb2bb3ea905be06f5616345213ff61cf7d0019cd84dad7e817def95a653e3bcd852e5f68cd38c78fb5b8aec749d863ce468a8dcdb07e08f5a7d8855f7dcbc29110015bd0ea0b601f9fe9b54c13c6febfa4c3d3c8a6032b23199439812f6bc8d5d0355232df94009d1fbd60f757c9bd8121b6845c561784cff4db483430a6353c6afc935400f4601c82504e270089834059fbaedf995be94939a9260a88920713c82f71bb4e01dc8776507a2654388432a28e62d9711439e5c2587e451b49ab1bd62e7b4b3b95280897107674ca421a6f1b1ee1ab9e801bc8e552ab348db7056a30d1567144c1d2b9a6ca8531f37c946f1126b4d02152660d44f941a06b222a95e9d196c76ca20734b34dd90629d04c9f1fc80a84098d423805a85962d207766ce0f0018c1e401bd03a0e106067d6add5d6f0cd68d673405e44aee172cf5e1be295b71ce4f2bf46be938ad379d1937f92285ca2e85bf7f02d6bc6703b2569220339f7a0ac390f303b28a559eaba3a964ebc6bc314647d1a57fdd8c184e1b783866f83ceea83452fe67e93be82f1eae2a7bd40626f9b862b46166ac0b15e30538b32df3dc9e13290bdf9403c92716998d786c83da2251644880ec58b3d2a42086511d6d8574d5089109edab051efa61c22e41c8fa4a307dc8ff3cf931e0280b288248d001060abf29cae62cdf8698dcc2b9b00db1e811a5a6d86d46f96fe6363cec490aa1a3065bc085bd313f589041c19f84ea6d5545900e76a8bcfe06b57190dc7c09c9a9900a906940dfcc2e6ce46901133f5eaa312604e38963da23255395a108512fa06b2101c18c08ab99047f9187453fe3acc02923d745901f45fee7eef0a5fce072bf92c70cf04ddc809949904f0543925750e0cf64b0c23d612550b62b5feb09ceacbd19dd54af97dffd43d280ee6f9ca1d1adebdf450eb1160b5b775bd82773c2395a294f7aab42642a845989d39051a0849b419970a218da81a9002efa33fe82d2054ac06f3f93bc883dff73948fe46ad8471985ed3b89e3108a1660d7c90ccdb13b3c8ce98816fc82c7907ec6616a968377e4554aeba8f04091818df5ebffc17e7f5a6dac18ab58099caa73bb14f12effb29f2d06a07a875d521ea26f0cf010440d04c84f800f43555c3067772910a4679360b1b1a9d974794810b460d157dc093efd384d05efa6d459307c3fa51e3686a2591e9a73eebee094499d2f0c6e87608ffcee4a9fc5c2bc84f7219e546d621a26d621af21bbcd42c1e0ab8679c00dc89e57cb24600f2f60d5e8e36c916a07f030d0565ae6aa68d49550ef4eb20be073eccfb67d53a8d886a20b9969672f82c42dafc94ca9deacf501fd7acdafa49575cda1cbae8af2df4600822c251203060a63670323537648ee31df6ca0758e30038d032d2c18aa8abfecb39c3d71a9fae5f8a55419e9b831f62c4128a5cc6762285de97b50d192974fd95680082a66027b57aa81b6fd02d0d200763f3809f9afe144399e3e3ff6e79f9b60b2e68ae49665586f0db73364dc75eebcfec0183c66ec5e24a065babbb181e4283bdfe0396f3fec13f2d19eb54a04297dc68b92d7ae21c84fdf7877b0b1e64baeeaa90958649135d958d5a1f121b824243d930e20efd8ab48c450c5cce97b867a8ee2757500242556f27e0230e3789bef5384bde0cc634f2e911e8f4d7ccfa42660497c2640e27de99d97aa52be48e358494da53378db20b8307180593abb0c0bd4e3a7cd5e3d000d5a65f27606d805b9dd85a009fbee5b9b1297485abab303de0bcdf024b10e2c00da2c75eb664c3ca158b56dd3550df2a0e4673b63be8664d8298ab9e0d949b2b5e14db08ada23bac0d33d10393acca5498e6132c09a0d7ea19f364badbb04c0362cacdf639e8c362bacc9d636ae0589f7d7ab8fa51e674d3bb59eec11081c29d3de0e51d98a2229efe39d4115a48380be1a3fe47c865d629f0777172cf99ee0550596b1721296132adf833b8ded1ff0c635d550a731c1fd53878ddfb114529d93dc9ca95ccc78093e0a1cfbe112c1c81ed9a19bc4c9e03f40ed2c2cfeda5cbca4314a5e350371a382d439484268e144d40884bc4b3f6dd2302b4cd5b79a201ea089e11ea718b0daa7d759c322da82a6e4b1ae151ab2a5334d1a6e3583828a8fe5906c59c5e80823de219d7b46190aab8f6d91177e4d4c76d0d9803f8a8e8a7d25213c5dda55877909afd9a221f156bebd4a04ea5959710a2545ef5ad868a92ed9e393f6425f2521b64b9f6e33784a135e2b47d5e8245eb45018adf9e60235cbbbac84c534b19c9dbe15d51a228b46a5b7ca2fb5dd47e00742f7bf912ff05f33f4bbb15470860842c6602a5671bb4f6bc8111afc32412d632013f154c1e404e29f98642f8d1ce31b61e44b0d4850b0a88140101ad777ed260be2aa308b0778b6ffb9f647700b8cec886748753301c8a1b94e191c6f1ffc809b941671262f47e470da7aefe645fdabd7690545858c7ba72535f8c93462f5bfedf20833f7538626bbe8fdbd0022632c09a85034f37d55cdbb4043dac676575e6a5fcbb168367b4cf79a5674d2560aad9df8c0519e347a99048afa1d7ab49ee3ad88f8b052e9236032f3714e02d0f86612a5ba5da8b8791b0d2b884156e3b53e15432954d82d8f44e8404b9fb686c9d660aafad9eb72ee167cb870dc2870f66a3b728b112e643d77204589b48cd24ef8d7c3398edec8b9d04a456dc8af1ea307b01df1f9c8124c8a4e0f609d157ec7b1b00cbc32d0446c283befbec67f0092370eac1d4efe3ba513d831f6f2a0485e562e7d1d777b318de7dea2650848949c897bedc4b0eac15af6e3232239489b38299703af385c6350062e234277c949eb388bf3c71071636fa78dcad7bb35649f4b99cda7602b08cc419b242e8003428ad2de84829e439630820d26c6ed15803e2f8226998f0bd70e168ddbec01052f2b5719ddc076c047e5589e28bcebbda98f043f28b94333092776a3b664a7a442294367a9cc12e3eb916c106cdadf37821ee138cd01590a280ccb7196f7359ff43601220037f15351f90c8bfe326b2912c63b1abb60d27beec7ab089cfd8a6b8a8668712082f0d5e1ae218bba4f881c4080eda61215dfa81de9db77eaaabe03621077bbc0e31c8061a842a50e498040eabb93fadf6dcae0421ff97c4fff000b6b95d20fdc102bc277845228196140465e344b3b2d3a988607305fb635b78224f2bb0e6059a117773a6b6404c20a67c08812763ec899d02f16483a6aa2d17ad33824e5560024c864aa7159a65e66476f9cea7c2039774265c70ff6d090b2dea90f41ae935410510c95460736b1432b2b1d31150c090dd98f556740ff5a7c19bf02594d043063641973d8593184dc99041e9b758bdbe5eeebf04187186c2be40d04a7f70fa1ace7b20d848828a8b205ec7f63aa8c4244b2ebcc686d7562989c842791a9717a79ce48fcc533cd4a61fcd622c088a738f3e9c63071408b960c00d6080692bfda90c834b9bd843014a8b4fad45e3d9b781ea33198e685edd572c7e9c764dc035d98f8a0124007c00db41b49668c1e30a788b1902a18fd9e542dc1a6650b8083ce4d15c887dab119fffdeb35bbd8bdc3a199ab109a81751412579f325e27e1bb6073756f0610fd36e4221ab192d92a5864fd49458dc9f28e0155a7f5dc7c77d0db38b29a706f1e33446432e14cf8d4685d21c249515a775f2b15f5b8cd0b6bdefb6eaf7d85e19602f31aedfa55bc2d088aee2dcc7b4deb2e4055a2c383c64cb0b88879c18650774ed4484f0afd1dcf17b884ebc54abf837cc8e8d716c10151c5a2153df11441d06b853f8afb29a002b90432b91138863e06601eeb070858addacfd919382e8ecb0c8738e6ee90bad64f5d97b99cd5df16c84b2ec7b892c4626f19bacf8affe41b1ffd2870aa71bb20ca8d08199d7c37f9142d2e71e8b2963629e3ba95860f7561223e3550826b091c6302b4a7b92d06dd6a32e09870c5997bcb3086a10ed122fd48eb37847dba56fc0caa07cbc8e4d02c0448abb2af94701380069cf61895482432839be705177b24fe6027dbe8ea2677b81d25aaa76febc862134c6bea7fd3ffff034cb208078f74348795c947d5c98437e4309ad73fc2ddb62481810cd8c68f09e2de766074287bfa634c3726a452e3a3ed3566fa58e0666e193008b340df8f169bb9d0146fa04037e443ff187d976f89ce99acfa1ebbfef362d7a55cc56831d515b5c405e5c20816970d389276c91c505a33b7b16651be3de8d3610c8ec6b8eeee8025fc08467053de9315ff1506123b7d152819543244fe18d774f346f426d1db3995f1339b8160dbc426e6b8bb86ceb0cd8f131c235b949383eaaa49060c43ea11e3947ed36035bbcc1e70cd23602bcd80050556f7caad37c7df14ea10130ae8e0ca06dadd032158d2081050aa3d0b7a2f9453705808aaac28b258f43e3c3976829375de84941fd8c364062fa585e75a94ed8569e0487e3b6dd0cb23e3cc84186fcfe04c3874d7789f8194a6035d1f88ab96047335a0d1aec2f12d113de20ea0d8bd41b353a145157296fe8a5820b49b1e5b2f832a672ca0dbd8977fce6a15f8f59ea5763a93797fad35fd7fef409ff8997bd4e20631a39b5fdc30c8893f7cfd4417329e531e1b1b8551063296bc59442dfa3a51bf84e97a86040e0282e890732f24d7b45f78ba72ca4802e835b645a25340425bd52e880f2f76f5737007b433936ba70f2a77cbc9ef8a3905e8aeb576b8b3a0da2493b6cefa1f3cc723799d966c800376b09851d05e951d839c60b5acd483a5be2029e3cb180d273a8c97f34c3696b96f1614340c5bea19fcfb57548e082978e9caeffaa7c3e6a8465ac69884ae9a5fa8795764de3277d8497a8556540c78d0ac89589766de4f95f967479524e6a8ad52f06b0f73661badfd876fe4389c3b992c1932575e5142a12d8c3283e62d77c4dbd490278891645b5cf5d79ff47a1f0da6bf7fed837e1ad123167495919232c4ecacdf8df5fc8363388ca7d80152f20c0be8096d0b089ca1fdd1b89b9f012f347df3f260bba9fd6349ea90be4b3a67a6cf2ba67c001768ebf14d94b970e4af867b8a377a38ebc2c4b00ea9c32a9a0b2c27211720284b3990c960442b2c5676fb7870969426e45f2fa55c3d90f2c130f9639d6bcbf9d301b184449a49f57033d1f0b8f648612f632c9194a66d7c90625f0273b34a616da80100cedecb1c346acdabf2890a37f519703134e080eba6b3bb577a8e50ec452cb5d36dedfb39efdc8bfe76ad77b960d94dc5793eb081ccce4be737fe328ed64daa249a962ac38ec6abbe62998a55b743b1802103038994fb32de13b30ceeb256ab7686515f238c411ce8fd53ea3b291a5e069565cb2a463b456970b402db7b4b59c2bdae5e8f4cfe7850fe29b9ff434e96138f4d97d219a91c02433d794d7ef3fa957fecaaea390fbc37f883aa5aa6d9e3e61313d8819408ac00b01421722d3ed85ed9b5a42074497db80e134b6e47de5541652d8c4406c6b4f2ef915242464f507d0faf8d40fc3b85c70c28f6383830908ad1285e98ed57b019218e6ab345e2d861f32b5335d95b6cb57e8f69b1690ca37fc3b2539cd7d0c5139ac2405a42e8ccdd221699ce49fe0b31af59b240262e2cfa7c31413343f3cb9b639ca99082e8ddceaab25785449014f0f87daeef5bff1a93cda2a04145657a65d3e4dbd34cd5a55c5272f2589614a12b18953a987b45f5279a5319eece2433086bbb413aa4d8e0e79810d7ac1c9da442b321de3f24b628475bb58ce3f8b647402b7cf0776fb36de6be8f82eab211afef4962028fa7b6c869c7fa7abd36c787fb881ac081e9abe97bb8662e01fcb5a178691b92d8df73514bb6603fcff49a98d6e69ee73675127ccec4de8abb6abd11c571120d2a4c9c93df0f2c1336e0370c5e0d341b3a7bda4abde45f3ef5c24ad485300d14e39c80693bc79076a5cab199bc4d87eeecca899552f768295efe5aaea468806a434d58b1bd452e84c7693000bd1dc17d22f03e3e7d56e51dbdea735b2a20e2099319d38dfb254d8162fc1920d2fec08231ef93c4facac015d28421d7eaa69233612782027f3946845d8b4ecfc9bc53e0b6ef99e5243eced19046f2ff3eead6c03a1e2fbe59e64c51cd16ac3edfc6c2543ba940de71212c87a65aa58cb1e4e8af50ff4bacba03a45fa62bff84e2e90e82c35e9a17477024cd3e1bd252ac79174569461529a7d2400135431132aa4dc3a3d1eca9074dfdd01b88a1750c01aa7f6b8db8f784c3ca268fce810ea9cf79a949ba7c218136276239c1a19647358be4ae93d0db7ea0e099e9e201711a8e1794da1eec4d5152b212ddcaf2511ab6f0f14e417782cca263030e270f6517e533d4c3e786556f2f33a3a7391efa57dd00cdb1f21e33a1089b236164faa61d1fb629f31e4a043b276b7d0af04f8917a905a8ab0b739b2f45f6614bcd01800069f5d08fffe2b901b54b546103ba68bae5e9681bef7972d0a9740eeefa74777e20868c3cf2c038304331c80650b0d11218394f0dae64525b3276f5a8b293d6fa6aedcdffe2e579d76ddfcdebde318e0beee8733db0e5735f34de8a9dc0bae70ba7f6c75754c0f296e633c14502c2985f570abbdf43c256205546046df4303c43c9e3b807b9a5bea358093815e30adc0865d468236e471c7ceed8491214e586eab5d8b057313d6e2377e011e040dc8b99a5a34e4bfcdfefd4cee2d21eafeb9b6380bb64999f4a03aff982d3145010f6854aeea347c2a75dc1585f6ae5a93dbc339edd7ce8b1e95faf57b80420bc5054ea54664b2111c90f563ace99304f558845cbeb39bd24d2dc720f264c4c09eade6024e681d6e4d00cd1cb756e96e945fe6d058d5aaa841cbfb35867ea4871139fad8fae24f2431c431b78d763a74eca3e19d1107de288c209fbebcf5434100c1ed3dabaaae7db3c7ef768d1e0414f6e0098b732f8ccd195164fa44787ca48c5cd5af50046139ef2563734a146d0af255af9d8ca577b5f4ffee958472a86cb567a250aab3692385aad4bb0cbed9e18734a706388e04de02873821584f740b7413becb3e6aa949540a291da42553c9937844918882aa350590d950a2b0f09ad361b72b52e92bd2be83b62bec9992ddc2ef64c814b2dce7202374eaef7b87fd87cddf5cfaa070cb70859865dc09995b75e38229f9666dea7d86c758a01deb0019cc98f8f80d547a31f96dfc34f7ad137ff40b078010831ec5f66ef11ec79dd7897e5016a27ee7433ec94fe44e194476a31fae1abe1898e6ef1f217330600a51772845c99a58dc458fb586d9b4461d85c17877b44531c759e8495a5c1b947c3320046546c7646d425446441ec625af8aeea8b996f2072a25ca75c6701d696ca661f42d0fbd79a9301b671f0b10a9683e4c69d7b85e20492cb52103ec0dd3b50725600eb38f9e1c73477e753a054f7e27890ad265d309091fc20483a89447c4725302c8d840b6902a184564fa69836f7b264f9a886418dd8af14b4464794cd9169fe1479c2892dd07c79d7bb1b256a69a3d591ea7638b36525612cd5f8c37d8023fcc2453922727ac17991d488cb123dc6305af30c6f7e09a2c130f447e461070739983dc69a79869afc2f22244be79dcbc425ecbf5ebd25175f0959084c4852f193e3c42a7496c5499c218f0a4f1d6da180846cc32b069a2693517b9e143655ad208fbb0e0c94fba56a566fead23db25984ea519fcc6bccf4f10ab93359675e629a61bb0aeb7aad21cbb69d0d6b2165a4da24b1ead27297c2ef953d2fb56e428bdf119c857cce8e3e72d3840437195cfe4f48398d3f1f140bbab5ad5cb598e910bfe54076c60cd938324bfb80c4c1b4b7f9857101fe3a167b4112a5150fa32c8b2c02ac6b39834317ff020dd31976d79907eb9322c631b18181d28591b4f7c29a9e89501a20ae4165ce26e4aa0953e0ec577fa29b33e0f8b8ac71d4d7facaac4d6e82132e0702dbde595d3e3c28a26983b56dc1dcd2e35ad2bca263f48dabc33e619d7c66beddd552451d0d82e343d94fbb1f56e1c6ed1f926f0c1436c930c4744b9c42e283adac80362d586090c18c5facaee896c99914bcf61db531360366050601e296c622d155b88ada2f6996583afc6e2094a0c404affe21e03984faf0eec8c5f8851a6f3c886caa2d6a45657f2e2680451839b8f5506ba9ad094d6118b933ae99a0114c5dca9e727e4adae010a422b21c985352aaac231c6d1d30fc4b1f9b0f67e33de2ad88c1410ad6cd8635e094b3c94b9a2e30b9771e14ba302e86a4066a24c17c832eb442145578c11bb28b275d3ec9269ab1b9d171340fa8a732f98dd2c5310a0c4ebdac0ef893ca3009ad3d08524de5595a1641caee26bbd35b310b1621f42a53e0ba7f9b83869c2eff83444c5343ffb7062be5eb2b42064d800dee3e434d12c6d22910657b56ed776eb15f18f6af15ed5bba861cc443526199e5671064598e41160f608715a384919c07bce9c626e591fcd28bae7f542c41f401c9a56e1c9225cede9bea8203b1eb04b7eaeddf1a56b12978ae89f8c8fdc183101de812691a76fb525c6eec4f77146ead13f56facc004ba5bf294d5998881f4a8254ec9c0364be2449628b9ed5eaacc1f500120d04cfb053f00e122870b796ce2d89936b4911680a2d1f3f6384ba29592fc67ac0095be8472f54633425970479cfa723d5caa4115ec4b2f0dc2418f71cea39d4dd9a19b5c8793f846ca887e2117c8c7ddd80e0efe7cb3e87d1408a8315d59adae5e045f011b165df43b150580378406a733bc47cebb9884ee42fb402719017dca8d348ec47e46291f9e84c8da4cdb1bb46e6f830c155a6016a493da9b40720c60a43903b9b5dd807d6043a15b1bdfd0b2e56cc71d28cab1ea5892a252966a387589676ee3a8db4cb113f7730fdbb95ab6810d09814a71771c0e566baf178a5ac484f3b54bd8bc9d5914bbc64558990f4101ee161542e1afd17918e405cfac6a9447755ebfd5cbb458e42f7497895aa618dafc41ba16bbfaf4aefcfbace56237f6007d2408de9fa3c1a300ebbb454d25ed2ca5774f801e5c07ca8f173e0db6c8066bca834942b65706065a07fab99155d2153910dce3d49139002c18daaa32ddcdce29cdca649d7ed2d0c5ac55719924d499591067d8c240721476a069a4b21cbc2387f15ec365934f089e68f7cdf78fd306579fa222663ca8479bd52be7dd31e85250833bb4901af3083c482810b457d39413ccd341171a91599a924396e6a9331f8a2654fccd7dbf49b768a3da7d802de758436f7ac790e7140e8c1096cc3b79f193d0819f6187846983f01deb695f0c9bcd92b7df7bf148573d0ce74260d4a67d19a534b6faed63f1db2135d4348be5a2502c9192e3b7a4efab2be1afda474050c4a888bc086f172d42359d80c293534c75da7bbe131e1cb5e49843e4cfd76ecc30e55da21f8d0cace97e4fe6591bfa328b8c7395827c4d463f7f7084eeccc5c2f5b7a9656ad8212582a89dd954f3279a24d9f79c23ad80955528fe86554244ebd0962f1b4c8d029dcd1c9bbb1e0db8e20365aeae6f7708db4ed7745c31025c97be014582bd777b904220ca32513822a0299cf8c9dd9acdd175b041e04d3d964c15d12ea300f9187c50a2f4588479ffd48b2ead3b39cce2509a7ce73ee7b41291705176251b0c476ad76eff1768c1f73869241453edfa879edca4675ddfd221e6ec2c96fb6b0dd9c51527be2c0a65cae707162a7b5437dab4aebea731fd430b6a068669e96d4e72732bbd8aeb6b83ef9dbd1e7807e9b89ca7232dd29b06981612c98de8f933239dc09ccad8fff6aa2622e2dea10c8ef8645e6839cc9532e3727d65d24577f2ca4e4d942b65c6c0551a148a9d4b6df27b9c46ca0acc93a9b03e8b92a788abd2b1c22ee6d96ba30d6e986881a72fc4c3436c1e9337d01a2e831c57ca37b90181965cf24864f79d4a03559573af21d095ae681cad420ad38d062cc32f0313a6d3d0d39dcc3a59d105f71d7d4c5a0efa8ddf2c2df17926b163d08b365c482c61a318532bc536436046313d1337db001edf32433ca5d01fed13b764491065e3f41fdd647d52d0bda47ae297454762e4734b71b3ddc80b556088148f69ee3197e12faa028d73496847793201c7203c21ab4747fd6d3f39a99b8325a4618101878b9c8850986898593ff073ded90d618759cf968c6affa2a9d49c894e0c103f8f2d9cc7def29720cdf391bea7874b4c9e2267be6e1cd0bfddc787a910fbb583d9dde7c5a8cae5f98d08492269da8e925faa4c2e6b235975f3566014cf6be0e4800c1ca3000bef0bede8b633d62a0e3aa57d887cbf5082f494fe0897f70cfa7883b18649d18e9e74e12cce41318699934713bfd8d72bcb48815b11f2029ed4f7e7bf61d01e9ef7e3b79474d63b1da5246f67cb0976f25eb06b8a3f6ff77cb18476666dec20203a19cf66ea2d5d1dc6481de6aa6038896ddc5b6a23c89c8b527ea9c847bd292b8501821ec371841aa8e80852a56e2b74ed43f69b832eaf8ae541233cf034e35d6551fd9aaa8745520b4190e53084369719b1818309fc90ed9c0f8cc0e346b547e27c5963d6a70551ef96aa0ec1bb66ee2ff36586f89581afbe02b18abead73826db99964adc8accbe2b0e575e1e4b02285c9f1edcae4fcd25c21c24cd017f181cf8e2608fd065c150f484c34e03ed9b0e04f0899a6d79e7a3b24f07b1d786827edb11c69190a2b2a4a7012114fe7426c0962c8d0daf68520523242c4cd8a79d28532f30db1f2a69287c2e5351e83597cbca39b565558813bfacc3e066b34a29dcbf7eb687d8a3eac0f74ebdc84d8687a2bdc14621b570d9ae68957f21bb1d170617a6d3222d29162b8fbf7844a1fe6e77511cce701f42fbe9810ac88e67ecb366fc2f7d09b0dbc4e311da54556b170c685297de1b582e8628a820a372fb3338d7206446931abbab099436b668ea1ef97ff835a10e79a7bb7b8548c64af3bc7447eb332f90dc4ca2823d6843d6977558b47ca46cf70f47a84d6664cb51b9e3c7e1724a6511add330e6502c9401abe234a5ca06386a12b8c9bf33ed1ff1152df4bed80fc88ffeca8607b2c31ce74c5af8af3120f184dbc4a3b4ef868cceb73ba5bbf9de2ac03d9c0b3402a22c4c576a2bb8938f11ababc51f60bc2ed69c6efcdcf14c32287630cb5dcdb8344976a06d3a94b563b185b5d1a2a7dde5f7f423054a0d7c6de0da97c6f1d0424041be051c3c1575792bc367782e2c5ec59bf39821312eaaf2943f6408a6da2cd1ca9408e719cf214d18352ad75ee87f548fcee57048f811aa8015dd06d2203870c48d97f29f34317a463a187fdad7f8a624cbe52ddd82df970e149f237a52b22357e243cfcf1d0bf8fb648e25a145cc12ccfa9cdffa277ed573dd5459163a89e1c91ba51b5b77c5bf38915b1ed8246371a76dd6b112454a02258a2552efac28748b60a1713a13586c6993628432e86e02a57013e3b0edb26274b2c84983aa8d6151a742436d9c66294d8c2c43dbd3cff4e7a6dec0280132db05d4ca5758cb6efbde6443886e99e8df14768d3e4541ee22ab6182c230ea1de82ea2542052af55a2e300d404c33a4a5564966250fdcdaee95913187886e2e5d9cf139f460e04fe525f5ed80bbd14622a7ab6df195acf716858afde0cf5458c0c151ae669c02de8dcd2a3bd6a9edafad2a3e0374e7c0bf7a26252ef1b58bff91481c96a3b682b47d9249951d0c0cddafa6c9768e8f9027a19df7ce421f68eb96ac4e09348b1c49f86b3566ac8233e25dc4e50180dd13d8afcd6b60ec31555db2ffc2129b403b2a3f75c376147dd61d00e4f3f992a3aef3b9620006a3dcb894cc4fa3e276586c25df299cd082aed8a8bba8315e8cb0945b221631934d295d9cd4228f6f1d15650d8deb1fe015654cf02b37054667d2b8c406c054431762bde5c0772e93c794c78141eee7d42c425a437c49ffb70efade4470fff1eb15f0e76dfca6139b15500e0187b1ed594938e2b5bb0330ba7c3bd21197de90b01eb5eb627d7a3269b090dc0d2b018d113ddb145b43df6327abcc90327cc3fd40fc00f69f73f02e8653e44739fdec51f882c81c0023d9d717dbe2e3bbee73358c5d40b265cd0d41cdee8ff41515e20a4228219b62a95a28ab7b5d0529687c67efa7e456fe8c7faaf64b5f42b72e153acc6f3ff626d55d55b798ab449d30d6eaab007e4c31cadcabc479172aff0e624ed5a29bf0f64f8526f5a3ff5da46fc5cbb9da2ad109bf38405e30e3b709c729623630dfd8c44f1ba60c8d4f4a9a572465f72f1ac4b3f9bb4c0830621aa513ecce2c687f8548bf44b8d2366a5cc3e6e3c0e6e9f46280ccdf54fe32832e5c47cf0f60ffbbb3854904bae2fffe82ddedf855c3ae0f00625e96f8bf669ca167bae8de609b70d3026e8dd66cc3e167769b62d29496f8eb0b891500bc82c99890faf9131fac1af68dca11964a8bddf7508c1363316956668e022c1f379206672a50be5f4c0126879eddea0b5264a63b78c9b97bed59ee80a0dc7644b56034659e640fb23f81cbc109bfc7bec422a99fcb2d05ea2f29a8b42cd38d34def0866b3fa2875c5ba2e9f0d1d9f44dd88bed2f53210338cdca23f5e5f010431c495ae6ef18e604fae4ab4f61f7fbb8895e756678a2448642e9e92c834dc494a6c8dcda9d10b4cd3038d9214f5255a8dca37cf205efb06b7c6afe9d079cae4f572ca01fb0836fb11210fcf3130b89890d64dd107ce9dfdbb2f8674cfc7884e99b9e9627b08b0cd805027582305efea400573c86e0e5c370abae2ff43e58e54d0763b86b841b0c0164b3781650c00abe410f7ce7e7c3619ac4f3caf5037c0e431a4ef9ee40c1cb335da382d591dacd7634404fcf9b5386d81b240f9fa0e1ba2eeb6b6326bd3d80417c64ac8cee3be97fe3e2b028b387489dd4e1815c13631bc5771aaaa0ce907371f91f3762f2e265bbcad13d52a51d7bb2c77915f3ba262b7377b1fa0370fcaa9429dc1fdc1c287a483749753b35969c8bcdcd2475b30c04c4305154cb4d16180948a4bdfda0a1f413806dc99b10cd9996b501b43760847881dbef3f9b720e14528463dc83bd89c331f0b6ff7ff06c0894aa8f43e1e1ced65a8e561376ec6ac3353f2a323209ca99ec2c87d165e08c179f822b1fb3921419e865a635228369a6a1e9f296727628b9bb01fe91382e27b887b7789d9c3cf244df1789cf610de8e384af0fdfb28f68fc977cec030e29b4287cd36636a20879fb87f7d23b7ec10cebbe502f2fc20f0df3b8dd3974cb2bc6c6a17f404ecf8f290534db1074ae80f8ac3b62da12b3cb91371291d06f6c2c68aad6a4e9c5d4f03a3e50ec73ab72d4a838d08ceffa84a8222a9179dbe36356f22ad65a37ab16c3b8c0b07776cec712451f0c9216486e8765d631628b077e786f25f6c09a8be12d8e2333abdc7afaf39800d52c3ec5c62b677526ed0de58320b967ad33a5a9ca941634fc473c9cd9c89d998264a4be68995708709d93897e0531aa2b93072e59430c51baba74b703b0bc5f81666dc1d582dc95cc90d050a3daefb7c449e8d38de9b2cca11c8decbd7976315b0dd0a65c0136f5afd94eae521072fdf87d10af8eb58bee8ab3dc0117807e3a5fac951eaf41654ee97b8c6b7fd270afd9432abf842e285db1ad1af4c345fa3bd00b6386fcb6f148ea0b54d002d1655be3987d122c5108e96057a0a6a16f8873a265d3784ea235444357df72e1b71a94f5e7c8e53acf8299e65008d7243f3091595f01d74a6626108ed64da46d604ad09a0dfae61362e9559739a1bb4e118ec62487b2d64e3e59ea15cd4fe4cb68b2030faea69cca8cfbeee368a707e4543e9906a5029e42e92023820ba48398e5c1ad6030ad737f5d2fc8ba6ad767847241007231fce55cda4d178828d8883a7672886153b837dffdd01728db373bdd274ce57e7c098464eedf8b9c1767dca1120200b3c3fac144e18e40bb9c8eeedbddf98877d8a7bbdc0d4b9547d2345051fa19ae842ddce7a31f7f0e7e4ba1845cbc65fff5c11eb390c24c9052073c60dfb3dd1d9eba0d55e50bca2656f72aa1e18882d9c2b7d9f4cc9a1839efa5bc164a48745648cd80ffd8a2b4235ec590a50d7f845c9131a6e900a3b354770bbf2430303fc0f6707ed934b80f9a9bf34467e4a31932b70a5e1fb41a59ccdc898c572d353f26573a5d9006c7a6aefff04a7da015a0f2aa93812e84c971b4d5e6c3bba680ddb52aa978d35af8e9ec358d517f47503ae7f7a2b9c19643e19c1953503af6826f0b6a3da01dc9a0a6254b22e99281b154f1ac6abe6673b5955780a6d988d5755c4a47c7aa037bfe4d893ffd259d7c09116adcc6a962bf180055fc309e438bcf74764ce9f0f1f7953aad086168252d3472755fa285674dc0cc45e8e6d9f79a3462bbfabb9e69e1fa06cfb24a4e25322eb8ecdc68fcbd764657e93ebd6a1f25e263bbda65698fe29ec8665988348df2b141311237c505c071cd1cebc290aced7fee869b2590f0c08c3d5020599923b46d4cc067bdf5dfaa905be4cd0a296431609c5752fe6f6afe15cef1dd44bd3768c56698314dcf570dff3d09010ad8e561a9cdc06e5429a89653fd9cb3eb02870e674c66e42183266dd74f94c7cc73537daa934c4c67e11d15037dc921abb5c1f83a812e5e3e1b9b75991c02ab33451791c6bbee7dad375bd6845c2e4aca87238a035fdada0440ba17e92f15c3516d5d261f5f94afebbe658c8a768c65f1951c428f0935674d87f9e76709969971e816ac80f6849cc50a39ebd5c138a4275c659636208ac3d846a3ff0aab876b2a0fd070d721ed3ec0f4dbbf72100d639a032d8ec3033fc4d6cf5f73d2cfc219c0c8fe52b33ce91d5d0c05d1ac80d44b71a6099bfe7fc6e96e969620ddd9e840528da9e855d700e4bef0a90d5ae666bf86012fb73e6b923528836ea7486ab5821e07c301ab80dbb2a009845d2a5551ced523a2ed5ca2bf458cff833f7c975cc3e45358dff0f9c2fe34dc0976e167a5a61d538a3918cc2059ef186238554ebe9f3f4afbdf2f792e90d8a1375c0cc247e6dc056a7421d7c2837cbe9ace2ea8f9a3070a51aa2cccea19d467bb37561a502a2d07ba507f9172fe7608502a141acceaf25639fc8580a4c351d225de7bc3bfd190cd18f1ba6b4d2a20c83b29158ed795d658fa7fc5566a77a3cc04fc682f37c97d83d655e3764e46f74fc458c0ba43668fe2c01a3a75c4d6c5d49a5aced5309e9bdc191577cd4e7e81009b452480ed7b4953c0c30948ee70e06483bfeaa45b31a1f4e2329d7d4381da3caa4f76c48666006de24e3c71fadd2b73ddc505d7e68e0010648886ea4c7b1872e901af3ef1ab6e99dd7267925287a58008a18d9a351701aaf6708c1c910cd5e551826e32c3406202c48fc19ee87c588a5532c924740dad8a97ba3726e18abb32ffad4c03a0a58b73edebe6e680f256f6df9f955960ace13cc493d42fa92524fb2c3008ad476485b3896c7d6b52ee8b08d174c4a74299bf242d53a3b62a5feeca001f688bb940401c1f6a7b66f8556c8cab936afe1a4b2f39021a0e809782cff543bb044de9968d6d58ce3f19d67f1757d4c539d0a96fe343f66fb0157040c1e6fd4952dc5b607d1af149f10bfc053a3d66fadbeac8998d844263369139aa92b4d354625ec2decfd50e27c4af88dc6983e4084f42a77c05c9b28e099b6fffd7fff2f3c922f258d847333a1df9a11fe629b339cc00ee12dfe4a346e6c157043f2b02ef288af3ad6b8baa3a5006a5b3182d05f7139ffd1e0968b1d28feab3840ad46630dbf07145a53e3ba6b2ab8a3e5870b26759d09e387c12b81a8812ae9028c283eb74df4b66d84ed623ccbb20728573421bef80e0f39e5ff6fd6cbd4cf05015535659d2428b404386ca0d999af5313e46b9b5a696227e753b6b90c9ea079589c26744d8f2e3a06a76d0e3e0ad4b019bbfbceb5b0ca11099e505446ac2312c19c9ddaf671342843fb96a1ff8e74d9edf1ab8805036346aaeb9c61c26c39d6b7c0ba61cfd03dc9999b0adb7f470f7411366d35111614a981b18419f173f9d18bd55c648a3255d96e90f41f3c97a9cc7dc32fbc4499fe3fcd37a213453aa431ce7a3502453a41de12a57b416b2819f3adfe3f7359b439035f3685ec44ac494ad12b1b024b1269e442eccb26c1228b759943590d9f121e2ec23ace21de028aa5554ac075a570bf23a49f90a055ddc7fcffd7cf2a766e0ad2d9ee874fa14dabc6d1fc0b133b9077590556a75c34c9c100016ac25aff297eca835773c0d3fc1386a92cb70190b0e38d02d9744f1bb8e9c69077866ff769e94caabc831173031e42a56a1033fb4771d2496fec9b73b48ae85c6f09a77d8d2fd45dff35ec913b8b2be3be4fab327212db665839b4b30127553504fc64e3018421dd88315448c14b4b4140f3eff580b91fc0acbbcb50856f5c3d3e64441e518e8f70c0297c96f9bf1961ab659ed18334426633c6645f2b32b23039f9039dc7330850a7f36a11df3175fcc1ddd56e8c1331933c9090756ed79f44e140779d7ee8fff4fe35e2dba865934c838659e7c7c154145af581a95e313e8b96a8c84bd79988116ca066f1b2d2fe9bceadfb2be888d9d03ba5211e13368ebac095f5d3f22236682290020b106b60da97f440b7bf0c1002baf5ca6c393752ab6a16f445c498fac32fe4545608a83501604e5986e89ffcb1e21c1b15c5702008f372d98431ab00ec2727adb3f9b481b5ec46964a48a03c547953644fa82299ba1633bb1325de173c888b6d0fba73f60ac71769ae9bc1a1864722a0bf2522edbe0cef58d2593b8ef84fa148f83b3989325a3c466cf37d921f2454a80bfffd0c5600fc7614d21432477c2e9bf60e8db96aeb8979c45cb15fc5de508c8dc132c2fb716938f86e0042822bcb045626759f42ebe86830c21fef26c142d11d10e81beeb796f71e697b4bda6e87a65f798ab10ee020567bb90f47ecd7d178026066f5051fc09e3643b135964493d3a9150c10aeb77c1a67a0e9ad9b0b98bf225a1093bcd4113a7ccd98754a23a29c9a595ec357dc38ee5a00ad444877c45b8dddf57ffd059dc316c983ae51688eeceb41eec7c5208a29d7066c0f27eea60f108bf9e4a493a6090ebb33ef52a2d5e8e8258fed06f91a675b5632e4ab8587569ea745e32fd5d53ed44e97b1df1dc15274fdec844bf609ef7be6888b9a4b3bebcc14901ed2d6ce75720882b7ddf5a6f471fad1b971229b6445be6677ed343f2fdddebfd7f4a9ac608216abc26000e7e22a335b56fa77ad8b8c9aa5db01582009ec456c75382ef6475991d20d4abd8a5b19c5ed7e5056997443495f622b4471dd17dcca916e52c247bcca08eef683b10ad20d4a7a88bd0286eb7d40563aba41299fe25740e3b6cf94558d6e50c253acd548dcee3365f5a21b4af613b32216f7fdc7ad507493125e62558e1af71dfbc859ed886e5948bbaf80d80956da463a742367d91737e24c78b891db1c5602151452c53dba09ece79d52098b27db75b3d8c98c7d8c45570752b7203bd7982e035ef26b82df4833e2072826e826cd881eb6ecaef05332a547fa51a1a20c6f47c513a86341ae762c859430519387acd21db5403eae259f9b767943f3ef067e8a9bc94736eabd3bdf76ec70e531ddde0d2bb96c7a8229b788be98de956671ec3b8e67ed0bce7eda623ba58c004e36e27a6d1bb1901766da6e47eeb61de178675b2487c2c18da6b9ab581eb85327cef0c589e1d24421139838b133eb4d03999dd89ff96606e11e0b5975dcbc15501f4a4f966a689465f63686c9e5de0cf3b9377ff6f1bc8d475b1a120187d67a6a155592886a4663f3a5dfd82682bdf2a3065420dbedc4d7cbe8794b064064f48a9da37462f39f8696661d0e07561daf837faa13606581f6c8f6a1cc7b9007ee86c91cc0adceaae33c4d662f378da9b3e4daecb2ffb3bb3ac4b2c958fc484a9ce3b1addb2eabe86fa20eda992b4111a34e38eca5dc6ac4029976b4c5285cd9ded1e4c1856668f67800c02f2eaf655b9de333099d66258283435a1122427acf282ff1df2888087ef5d879789ff79a8d1590dedc6ca2a1c4e16ea9e788056efbd1d77dd89078dbdc42f4b1bb1e36bfae2d2a11dc0ba61a30a69dfac579121fea16adbac7b616050ea273a5d3eac59c554d04b9c9e47cdde1ee423cfabbf207603158716d89c40a474c9c35f32fbed84f1269c1be6ce1dbd542c741b1274655cf57aba07cad011ddb1c88880eaccdc780b22c1fd4aed8d23b28f5268fd996094772325b6534b06b366f8d510b926025c964f44014b745ab08fc515bd03ced035efbe32409e413a3a9f5622942a171c3e048dcb4a83ffe0619b715d418f17cdc1d0dde925b4d04ee3d54707dba453d900ce9ba8b70dea42de0969aa8f86ad901bdf4b2d460e64720a39ad3129d133e453bd66d9bed4010729b3cb37a18b58c4d871a7806e88f124ef0c8209af016a799b3166077a92508e98e6955acad131e49b664f73c26d7441c25c85911f05fa4cdb90eff8c4fde928a848176e4e65d76418d2573387599336d2e94b088ebee90a2e55ae3ea4dda87455a9ec6f6e426f0a6d75d2b4e31212e757c85e7a8ba25dbac58a80d2689217b07ca313138113cc427a92f947eabcaab4da4a3d85d7a1c96c94e3fd9f88683756a907129fdccd626173953838a69a2e13cb73146e4bb94eb7dcffeec28d3afef7a75ed2ffaf59359a087e818f5d71a459eece76fe84774bbfd7337606c40162bb991d64fd930c580a8df05ce481d769b53dba94eac66a7681b45c6a04a3ce7f5c9743ddd01bb69223fea1ff8aeb6a4d782689f3bcc87db30e744a8d2cdbc52ec5654fa4db4a756d76dd1e10aa670b137450e28b9cb5d666bf8283aa86bfa28fd83cd88639082545e0605b954d647f26d617f8d374555c00a4c2d16c25e7b57b92427f26cdada6f0cc28f11749e3435d4d92b9b1583ff494d2c616d3200ebd8b7d753c2f16e6412197866a4b970b0af782ba18b7be7de2a05fe2ea294b66da682076a3fc45d010aae87afab12d65d23372135797cc3989fe22aa1817bde71d55156727cdba514ea6b8f9422b3a51cca8f98a9d8e045c08f8ce951a58cd5dcc6b71c94771b308d8758f0d8a8b710fa7471d66624e49ab59e2ab2294e6c2683eca725bd96fe214d3c5a807d7fd4d7c86a81f419dd97e737527af61b954d293832dac46a45a04e4b36ae453d68d308688acbed87eb6274b810c088258805bcab1325f857c6f5a2c0b5dee3fbd61b6f1efdd8a3b2e80cc4b30b405cbbb50719fbf185abf4015b97b4fb8887e12fc15d79df35ceb0ff6358f6fd5cc51de8eb6962a29d68f436efeaf98a480450fe1d1ddbe2e092f8a9847f7d9ef01046d2cd03a73966651f2a62494754fff0599a1a2bc83cb98010f54e711fa83ba98b5c42eac7cf9894de7720bdb6df40be3b469d2390264107c87016746a082e5d337e92935177209288434da097957266a6431655b39646ca3ec312464cdc060e1af0c918601708842bc5199aed13adb74143befcbc5384d86d747a292e08fb6eed3eb7b5d950c63cc04f2f674a4a0cd5ec0d9a7cf49897b1bbbfc7bc99afa11822f978fee6017de40f56fbef600f6814d8cf120fc9c1baa54628ee9cd958bb94c55df5e7408f5a011c430adf7826a9649d828b76cb3e708ae6fb70442773edc0290a177d7b5f1fea71f0e02aad92d586143c8c0154d0c99cf5b3c6e00e044277fa4518af4134e9e13c6711af5b5e3a42db5cf78a401dcdb233be5389a101a5f0ffd43dc90e8704e83a87d4b9b357c579521dc3288ffe4c1effcbabb1b18bdddcc492deba69ed5245d1346f0acab78b61fe1b14482fe23e918e12ee461d413e76aa4c520844ba022e5b80ba2a804ec398aeb749b153100d143dddda970424e98ff5c56a804aaf253451201abdfe7c4245fef3ce987dac407c4c8e1d024c27749b1deb6c21f9dd7747fe1e30458ddc52ca8b48d0fc9fd6ec3a6e6e49a3940d81e0e6db257a720047a3fcea6b266a75efbcf37b4463fcd19be9e1e09f19c62bc3278d4918eecc437806c651a6f2c9b1df0684146c608f4b25753df88dc7167e0bcf1f323a996ebc4d4c3126baaf192e4fed095a35ae853fd0633b3797998e067197738185f1c1e04b8c8facf61dea4c8cf0b00cb2e0b4a2dbddd3ee849e7695f7fb8ed4efd2924025f0b88b9d9ec9cbfc1bf00796d165553b515dcf2daa994e15d09bc4bdcf48a178d163444bbd57e6cc0742de2c71a540c237df3bff4647b466b829e522a811c4c701d1aaf027c2447c141bee3916fa72d4486c5dedf7d52fe7ccdb4c3d025fcae073635c9af3553831834a86d898a7909064a376cce3f9d30b48eaaa51ba9422202014733d6d8df4843a7d08eb4881474a746efcca5dd10a42996132f02dd1a6c280555a22da7876a9232a419858cd62f61d53307ee6b4b24b3f5008d437c8f04b876467ef742406a65e6e9c4e90cd0f4d129bdf40a10688a19d8603b689af258c516eb150408370db4b401524e9e5ca1fd6454082a66e5f691e08f4c1ad588040c29271836039841d60a0d8c0093739105b4d8ac9bba389042a5c10ead217ae207275946848090f0b10516a29bf395871410a2871cac98323a16741b7f1936ce05fb4b1742b36e4aa4119d55764d1e541b8001523d1f8668f4e4bacc855d1cd6f3dcb27e1291ffedaf58140fbd05d4a5b5e83c7b99e1f1e5d566ee0fae4755e051bd6f824be81d18da8678e0915c5d03b630ecaddb54cc33295a26dba5d32009a8196db505b948ddac2d3d5de38ebe46122f09bfd7d53a0de29552f53e07104a1a131b7a225f1b7bd2db935c2bc17f4073a005913b7a4971cd9e44483640a1bfd0e4f3171493a41c55cea0ca18609a3b3d32fcf1d7bfbaec028562925cce67454b1d89e910a92c19726b22aba75700bba9c3efc28bb5b1cc88d126059717ad88d67cc5d7509caa839763a491a7791fd1721572d2a15f2e188fc186fa75aac025fe9d08b0321553e3b32150c3e19bbe6bea9d98d9acd9534ebc9c2cc70175f1e37a085292fcf12dde3493091a5a7855f6df950cb060da258123a079a010f00024945e1aa0e02e04c3a76b03856b847e126a567b2e59139de0ea8fad5ae86aeeba3310963dfdb3051780d4005795e38e52169cb827485cf8f6c1c178806bbed339b4772a24da88ed8b7faad8e96e593d53838c5d22bfab598fc9a001a1b432bfe6dfba33ca446c1f7de37bdcf2c9a54a083a28cd15f1285dabdd6d9b0ff91b61a94706f05a5da1b1a38f1c8b3bc6d78a9e59df0f0925ad6fd5007d734a66176366258c29b19566657cbe5fbee2b5b5de7895e9a4e4041cda31e633b5d3633f8b21f6db469adf8f597da2a162f7bf3fc70540d6fa2f833c8d5d4e43b265656f25a6e26daaa8b5e75316bd696ad309f9233dc9fe5a90831d199fb72545b700c3f5e1da288eabc17992073110246c354fc81f2b40b52efd0eae03c272874090558e03904fa52ef6cb4cbf54386396760e54e056517a3d49b4784cba1495aa124b0338968ace52f5ded0b9817e2d05534751af50dcc53ea65d07a849fc886a185ac96d1a2826886e236c9018f0552fffe0a81ef9134b560b4a2bfd9d8665ae3b920ac93733a5163b3934b04dc778b0256faf53666b3f92f0e08698f7ec93b5573062b7a163ebe856f7b57111795daf8a8788076a464c8662d6a30dc24c040322ced1dd00a8df06aad8c414ac72297fb4516083a46e255d08ca59b7e340126754b503fcbb03847c52f5960321c1c738e014fd22988450c6fa661f9a85ceddfd6d8d49149b42f49f4f350a43b88dafa10085facc89b4c831e2d9ecb603a9b60bbb1f624c02621a893c0c1d0974e247d50c74a441304ca2b155ebb399d9fcd8f3f6478364c701a79c8fb47f73e50a98b474f860d62446629d54dc598742608176d3cb9aeef1a1b44d9f2921915ba4623279d3922ed64f27fa55ae05277ac4b734e9659e6faeea6b2dbc017882f5e2306ed18e84d6f84091e4301329fbd48ec4eb100c2047b7e85ee5ba347fdbbd92dcfcbe0493dccc214310b304c0b6d6e41f4902b0f283f277f6e480d6c822eaf728f9167b37279e94e116410320762102133ebf9707ab96c2b36997a2d848bed2968b9915c5e15855717f866d95962f51e218812020a9534b5ce64901f22b4e4c356910f1954192543f592a68860efd1dad883e7f3632096a5cb51aa0b743ecc07103b90a8d7ee89843ee2e3b6469f07e2d2153b1fb525cdf72cee8d22009526d93e6be425158d7cc16c7da2cad84dedd6578c25678489bfaa0acda51c104871ddf0566597395a235cd5940794d8833a78466957b854571e64c283d4f08ce21ce1205be181381bca7c56d50328f66069fe4645ce82bbf92b563f90047290222cd833e02092ffda722994d5cb814d41c5e7f758ae93df38b7933f59d814857c7e8756cdb9422dca1130f32d700be8f31d7007883383167773685a40064070b6f9c4004af233d897a40a7d9833e27c8695851ab38f321f88308c76fd02590ef3ba0db5423d1067e8b9c850916fa0cfe0174a01202ff27f804ba8ae7d89584a812a6a92e912e7a7367f62074a9c933b1f8b9c9f35ba1958e65a45551ce762655e820220dea9985e547aa33e2f681a5737bf39beb21a4e182ac2332ea0562acbbc1c54a4317ff389cdc766e0361fa8bb143eac256251be34947f5ce6e520bb2d1122b00096771987a7c8d940eb7565b9d057239a77ec06fbe0325d682cbbdcee422a961b06f04b9ed8f78c67491f54f5dd8bf984b3705ae5db9d86050ed07909d5a44fe194e862e68514a29628ff40ff0dd3f0ad03f76f14023b9505652e82f27eb6873070f0c9d9416c081ba6b8aa7369c5e8c89d0bd5bf758970d09cc175a4f31261cce02c179761871d64bce8aa33c0c414626a94deaecec89aa2ab49cbb8e0c6b86d3e2714dd30917ee60a4e86c32c93f2ec4c4384848904ab672d34aee96e99f09a55b6adc1130e2e8cc53134056355a58908152c92925fa36b238c4e3458720bb18ff2b2a5078b3e9e213070010fddfb31fcd6fcd6fd06ca1982209787107a92b3e69129f284e7d93088ab047c911b1f74a30c09767b2e0b898f1005a7f0eae6edd53e1bf94d3a986d7471fdd50d8b7c866de8c02e113b1a57803cc37f6aacdd1aa8c85c42b30816173c5b81adfe84b3e0a2b4f69ef2905286386d5e1a398be38a59edcffa9b6572e5849021d6643c338ca8873fa6b39c0c1601474e68fc39e698f8040c83055bb6cc017499307112945eea360dbdb5a4851e1ab0b835014851f2dfd142b98be6116ef4f6b2847e98764f3501878fcaeecb7d0e304b692f23f6b05dd950c17f9b1cd568b3176c16fa030acd0171d4017b5cd1ffc9af6f17cc1e571b94f43aa51f3f59142b06aa701ff879b5a2fd4e0d537b9429a8d277e04f95cc6369570fbe5d4e43b98f377cad5f7243e017825ad980cc7cad46a512469631eb20c3ec18fe9c61e6a3967dc22127a73b58ba32efd5a731b06838fe8edf7a8c81fa67f4678019385fa8e5f24c01a0315e4599216afc600909248a8a0424fef95896e34b796ff02a133f992f14ec5a6740f126911c3f4ce47bcfb5aa30dc33f88f2c3347f95a23eca3416b346e818cf87545a8c0b0034d5f1189a2209d9f95efe750fd3cc37179d0a2025d73c0ab2454576ff6f6b16eec9046f845d6ae0d197c08c0547430ff3502cd6cb7da0906855a79483738d89c5ee754cace7983c1780a36ba969d89c84e076387814ac947e9f7629da57427b487e9c67fbc080d46a856b9d5e6cf5d15d97663e3b5277b8516625eba381c44273c21d0a6e7cf2337949255cecdb65ef3aeb24d00e6acb9cdab88bc5fd1c13df27e6b66f950802804527c147418463bae3078c741838e980cb1bac87337603ed52a0d29283354ad939c8991b9b032e4768711b895c4d7c04aae6f6baf95781688fef92c981a06fe597e13ddd0d0dab339ea12163a04a9983c446c55a58852c9f55a6bdb6d514fc7d542b2af8f93334df1db94b760537cc3c01809e0d2f73391faa82a19e89ffbacd3a3b91b6442fb43a4db2983cc05b7c66e294706f6a60c4c1794fd3ad7c1ee9c3702b1bab898f08bfa64e0a168cd61cab0a61e81d1e87c9e7616220344938bf70f5046310507ca3918f9933559c26faff32d0fee4dba6fa312b52b5c1083f21ba646e4990dabc01b54327d3c68d316c146b8a287614bb137699153ed8527e493b5c6ff90ddd663b1a7a01fd653c710220a33593e137ec798351418685a5a9ca908de81403065cc1bb51a832fee355f4c327abdfb57da0d15c24d397c6204e91f3fdee2a01e55ef78e980c8d3dd39c9942d4afbedad8e63ef199e0ec5ce68e6a16b6e7046640d03ca4bee735c40141ea503caec6c67853e3fc4113039f9a4ae9c10ad1e52b58352a2d604dddc214d29d8fc48c007879f177b1cba44b301fe8666dd1364ee5095bdc4929c559617b375063b327266562ef5c8d33862099184ec2df7965b4a29654a015207e306ea069c05fadde6986886a3975ced222f4b7ede67ab541dfd6da1c3905242e9515ed78ebcdafd61869f2932da37e78331c6e8028ef668ffae0ba4944f4a2218ffb507c580091b3831e2073b7841811018f9a18b305d4029e2eac28afcdc3e4f3df70efc731a2b16ceb3b9a448713558fa5c6445eb922042f8e42b72430b9a00210b089c3839810e7418e04d1119c06c71a406432091c3169d4782243878e8bda4818878e8cde4dd68112767878f183cf41558884005ae1084b08787560011716ed0acba857a2ea2c2e8bb15d10e551cbde9b9880a31cf5b0a1d16362061a48a28b0f4a013dd68891628c1050a952674e2141f3da5e463b462868f02d0895768092ab010512e7aa9766f1548c1e10725bc041131a143c3132e3630018208243ed0692e7f49f1cd6aa220aca0891e868062899314e84c000b1c746008c8874b129711655bd4e549171f807401faf95a1ae29bd6d2467dd4605eeb2579402fa893e09aa804d744c74213bdb71eedf37d3b0bd7444f126374c8bd85fe3a09a9e43f47ac8ef5235467f3d849300e251a0826d7eec9ebe5ec762d83727abbe6e1a3338c18441f637030381427c39d38133739aec4913848136f52a9e82b48135990263a0ea48939398c433a7b4eb7806bdac80d58d89044e7e788eb7494a780f69f23299d5e011fa05dde96c235ed47ac4eefc007688f6ee18d911e8234469a874e40bb916eb1e08d914e02698c34500ebc31d241d0a36fb7a7f001dab322d8a3468abab4b82bb8a3e97cbb275b357ae42215fb8bb61cf1b84df376d1d111972f415c9e289a4286a2297e3cde199cd0e1afebba9e8bb828f1443c6f1ae85ae61d0dccbb1ad4bb1b4d73b909374c00bef961e3a1cfb0cd5cd1eefc9ff08a0aafaa44619a860e79087a777b88bb6128000098a1621c22a464c480819239992c47276d5acd307a4d1961330ee83f9806ba917684623033bcbbf1cc43cffebab05d0f3d7c58d8204230f41c086ccbe01b194cd317d3b00de455934002974a0f8f88fe3d227a031771f1e10a172b8f7aabeb840aa2e7a22e4cfe75b901d11226cf441f6f30ef7969300d0d661afe1cc4c75b01ae797e6d60c238923c276df37cfef91301e3e8efa1e77f4dd81f08f7049137c8ead1f8e7702836b152ca6b444a197d4aee0d858d48eba1e452c3776c3d5f26173b64544a08cfdb0ee50051651a35e270649be2c2818facf3b0e72229b8f8e87ddd8edaa358230bacff968fde47cff42f4616582e9262098b7a2e92e2ca031ac19627b67c798ea286287e342e463e3c174521f4dd8c975148f9194e63f51a405d7a0d7afdd148192bbf6d460ff6ba29d45bbd786bb0969986a45204064028b1032a3bd4f0d385125c9e5c45a0c8e0c450124b1451430e5b861853994a41c5c8caa521092e42d48a3b43d1962a5f9f8bb6b0a05599c695615593371bedb87fced0dfe3bed896cd71f269f769ef916e0c9cce949f29edd41f7d9462ae7ace455074f9e7715a54ffc354cff906d772a8143783f3d2692cb9048a2a4f9f9d00f35ce44495eff84a911344f0952cff9cf58307c511ff22e51ad359ce6dd231968b8600e63bbee22ff477b0b3978ddecd1c1ceefd9c2e2f4e0dce3104a38ffebe2f2b8b6ef58f993927c791ede9382fbc17d2623e5ae005fad287cc8f0e617408210b2d60d236f8a70c9df5ebd8b39b8788be9fb78643f0066ab96e87733bd62a95ddce621736960e87b582a994ed6cdf223acfbbc65279dabbe5ef1199d217060161c11247e8d6bf26d22d9d9c21d7cfe7ddba3c28bc2b84c7fcf317ae7fb72b82e41d60598775e4ed960e0cf3edccc5b3e901450b7875d9f480e2075ef1773cc4438f5c0948580ef3fc1d173de4f2138688314db6b0e18a0e749a250715ec20063ad02dbcc90144952a56f0c588231d74a0a75000e60b155e74200f903029e2c20a1118e1810ef4550d92089305071282d0e2071a2871848b2974a0e38c004c0dc2e8c02b082db139699cd775c539e33cfde458a6e7f0fed88e897074e6eda8bc9cc506737a894c998e75a720cd9b4d1f25326552ef9ef43461c329b97e998f3ebbfdc21ea92bf2716aa9528790845f0862963c8ecf9c42af453687dc9bbe752ec4f0d5dbdfed1ce3986bb4db6db57de369d7b8fe4b338fbe796f3d706cb7ab913a75de9c10fae8b561d5411f7342cae67507c757a799c74d07f55835cf6ef7b6cfbaea43986ba056338ea707c7d7db028eb740e643e833d740e895cb68a55cd34ebb22b4a598da578a4950dbe0cd8f0c8ff5e72c84258f79ffe6d93fdf66c65189b9bc14db52d830df1cf31d39df5c23db50c05090cf663e9ecd9f73e6dab329dd92735578ce9b8e61ef71cf7ad5b6cdeba6f5f60093e73c367966b76ddb4cf6765de4f5cb0dbb6fdba65792d6db03a824d930994c26d2ed5e0c98f7a6c3c633d764ccc40a9ed946f67ed302e6a5733d65db762ba73279bfc94f9ccae4cd1b04a4db4ebac96ba53ee5b66d9bbdd834dd0e7ee6b3d3c06f1eb96ef3cce167ce454248f25c397e196e4ae578bb3c996b5c7b6f10b8fc75170e237c5784063bd9773e30975c87390f261dc29f2ea70f99ff7eba94b5356c3e9fd2dba57da61ba8a082a322462806360f01ceaddeea9a29cc787b18cbc3cbca1ebca2b20ee97c639452ca8e35a33396e7917e39fdf67999b09aa5f6862b56a8c41ed6437fadc5870a1f5f1355110383142c1fe3101fde8a9d89d831b301dbcd78aed1bb18b1963ad4426fc5de415ba472bc14a243e06b3e7d5b4dae060bc87611f8f16ce60c2034bce7d9902e768760bb1c2f493624977e420f6379d24d49df4a5c8d47339dc21b7f34d363865a3d5fb9e00c5e642c76d3bcbbf10e6f5270f5d0e4a41a8fe6f28ddbf156975b2e0707d25c9a439aabd2399d44df2bc21c72d84de6d9bdb41eadb5a85cb9b28682414a829404290952420a5242229148a793475712d457e25f9df69792d3298992a013494910298992a02b4a48249256baa49418053e7943fd49da04fe786dde7550c9db63b7dd78c130b975cd494e3dba89e3b78a2687c1f1a3319950d5dfeb4c1e65eec99f9770842595fc957004255d9e1249f3ae47fbcd37a7b7eb25ada44d385d9ecd49de1ba9ef7609fd66ba5d91bf3cb692b611a3e46dc706b0f843ecf7bcae207ff5fcc563c68cf9e2be10bf2f8f741dd2edb56f054f27547d6d72de6ea41afb7641415dd5c4d14723fdb2be7193ebacf4cd2f4efe4cd1aa5bcee424ae1469c6498c0629095212a42448499012d333d920e5fdb9e80b111fdb571d23f4cb637739e11b0a7cf46ca66f28f4acf1ea51ffe4a7bbc12d7e9e00cf455a2c81c59317e1b9e80a245fa1267fee6b41310fcc75fbcb75fbe8ad62fc214f1e7d447947ffba5dc9d9bbea24948c533fa1b81ed4493371cc35dbb377bb5d0fea35df4ab707f535f3edb293b8128eb0d5bbcc1fe69bbf2d059ee9f1ebe5c9503f9dbd9bbe79d74f7c941ffdf248af7e79a6cbafd8953feffdf2f276970be9315f5d488fd101e1531a6e46eaa176653fe0cd69e34723398e6f456fe6936bafd325473b9b18c7f04122f7a888bce615025fb2f351e995bc68f1f3da53cfe2892caabce3a4589df975bb9dccaf1e995ff2ba848268e634bbd1c9f3d56ab57242e5d5ea5dc1155cc115bc564e9c442027585e9085d0972e7fe5e9972aaf05115a30f92cbe7c7d1a839ef2b3b191499bd0dfd715858604618163b6a5401d7a8c1c9dc4cbb178056291056fba05a4e44ca6d3e9a6e9daf4b735d15b4def166992bc04efad17d74018766117766157c5b00b62b16b8fe8a44d28f9c963d0c9e1c5aed3e5c1b458a32c3c4a5cd790eb202c5e41d0a1470ebb5dc40093e8589547c587c73cc2e89087c7ae1a85c02d056905f3ab8b3efcf5aabc1b16a419a2511e9567535d89d5e5352eef56f15eac8194b0299fee9806e123d2f5c3d0fde4bbe874dbc1b008f46c98b40998d32814fba29a479ecbb11ed42f7f5d7c93f5e5f92807d26499f0763d2bed5d0e3187d121e6d12f787974ec311a3d32691b97635b0a9476949f4e8a406f356f52acb9659cf5ae2978030452a378a757925b4a29a5b644a9a5b47479322739a599936e74d2362c75ebd5725d2265f22f9871f2dd53294a6ff786fe5ad5281991aeb05635a854794318b0f2979778f8cb499767dd053e9b4738ac1b5a9e78572ed0250b16cc1b689666fc6b35049f7abb89f307f45697675b0fede963f268802e9fd489d05f6e5ba5db59d2dda29388ad7ef5daeaab6397c3d730ef86c0af7e6134cb2ecd328f404eda04143a06655874d25868cc40001a0348a504b042a594c68dca4c4d2cf4f0855ed1fafe5b6463fb0ade5024dfed16cc770bf172c573acfc6c3cf2abdddddd5daa61dbb9df0f5e8e48f8374d564395de34a9a4c37811aee7157c17281a3366cc18b8edc487a87f2a292dd00ffd0dc186f656efbee049d953767fe1807f32f5565e96f4a379fe70fed58881ed52719552cd6b017f339e4dbc50da9f7bfb0a6f88da7e24e6b9c88a2cdf959ead307ade76e68ccd794c8373eab5427acc335739b7ec3c2b0996630d80aa5fdf15a0bc0b00db377586e538239c111539865cbc309873ce795d2a2b7d2ea997083bc21dc28a6065aa8efe94a9cab01c2f4a6350caaad9522a8c8ab23f53fa29e0d9c4cbe1f5fabd2f32bbb30cd96ebd9653d4fe793697af783c1e19900ffdf27e36fa62bd75b43b9107918f10b8b614e2a675b1834d5499138410420821b4a8d40c937523d5962c69ca272164669255cd4bdfbe5f1cacbc343a4125768bb09bfd99021d93108b0e3148afea8253a6a06af6674a947e2bab9e4349e23ad1f9ef0ad1a1c45b2d8ca1fb299dd4ed5bd149fdc2c076da53a7ae59149df3428118c46e662f9f4e9d60527be9735f60253fce02fdd163840da9cd7934541dfd978a2fbf45d8697fa648afceb5d90605cc62398fc675796cf750a585fe338539f55ea9bbfbfb461e3a8a3c1dd1df83c073e873e32181fb9027faf3f83c109f6cbed0fe4cd19e022e10f6790d32ce38cb1e665eb43c177919faaec64337c07391171e9eb7149e7dab1a6f05fda2c07635605de263996b4e9de4cf4f5785b92a73ead537b75795dd1d1586f5d8bcaa300877b60b6f47ba8cf9e6b47ae650d3e05569aec23c53658eb98a6e57a5dd9d9a5d56d1d81b8fd20bfdfd5d9bd4ca31d8da9b8e1ed5b1ce7ea79a391563cdabca7cf88f1e98d3eafc41fef2b619f40ef2aeaade1deca2aa7977e2e5cb0ebda94fe72323f6ccab77aca57ae657f8aa308fce5c935d15751536b1bba3a2d0e574e92a7a777e049937876bd8e5f5c1354ca49a9757b757755d15a5aae92aea577655543a73cde5aa797754d359efcf0ee7dd61710dbb3febd9e54ebc7c6d6d7a344383896b666898a1618606949fbc9e50d15acb351e2463c10cd065ea49a55ed3346d041fc179bb7c043f01d1d123865b37f909869f646464b8c6c43540fee4a6db0149a566805233402919130a25422a3563c60c50ea8100f9ae27954aa55229d44d718dc9532c203394d4190ed8cecaab79a73241016ce3792742d3b0e952dccc0c36f5f171724ed8f156373ae0cb9b43ccb35ae6b5d6eab57a6d6d8603b63dd658a3e59ad40665bb31a474a648d415539f4c41e5a6d78ebe5a39f8b25739feecd107afbc2fc487cfdb8c0fe1e5697fef0615c678d139e725abbc556ca218233333330f31c658393a333373eca1b78ade41af872a394b5bb1f297cf74c056efcc2506a6381122cbcb1eb6f2f3b6c059b27e2300c2ce0c83a669104208211d22bb45c4b74dd334cd731e84104208b53be3adb4db959e9412f7a2cc4005c63139967cd338d54ec9372fdd0d62be396f4e728dcb38150fad04e155ed680e5d73e82a1e1abc999f6e676f07bb4d0891cf1cf30d7a062176df4f6b091093b7ea242f4914b64bd17843f03ea1b77aa6a64ec2440123e56b6946c91177c91204c943bf56581eead38e3cf4000f84a0e2a163589575c219582a26cf797109c6013d628947c42c91cac91f94b95d919751edcc1cf8accf8af28b53f1b81a06a597b92686bfabdab9fca9785c97b94686cbb85dc3b81deca65bcf814288589fd3653821f05f7779e8370adbc5280fa1c728cfe639f784ded06b71ef877b499600317912e5ada488c9381888b4fabaaef7de7b8f0e91443aca93795dd7f5de7befbdebca17e549015ad24241178b76862652d7ff3c928ab820e207f05c14c6888f5f4b11909e6518865979ea56a394622bbc9b1662219b9d7cbc131eebb12667c4622e25ca11eb5fac8ccc8512c3f9dba146a1c68fa6a364b144b46337057e6ae5cab351d1db40df561ed18c8f0d43e5bb06fa288fe639f6a3f3a73ef363b921f276d135906cda5e0120f0e607a4e9be502c81c140a495d91d2c9433bc9171863727677863af149dd6f5dcf89253a7ef4914296fd56ee23824b63d070c1568a0f2346dab30380e89c5bcd33824362b711c124b7a594c5c0fce578740cfa67a1b411a268c83c22330591a4b5381340ddb51b763a22cdf2e733b9c2bdf7ebadd8aa8f328f4a9b598744eb5435d965cd6dac5c738158f2c9e30a78ec938bdaa9dcca98a07cae915d2635032f774e3eda4974a264e0891c74a2e63f8925b4e087cecd2d27d3f6fd54ee25eeb2d017a4c648c21e8311884edb4dbc54679faa467dce5909b8e713d6df473fa1b7aabf627f456bd6ad722106a496508217c7c4d208fa66f2270fd601c90ced810d2211c5472c54a101254ac1d6366669e31fce58cf96caf025990bd02ef2687c809393556fd04d7f46322c004e915de0e157c68da0f2258ddfaa797fcd86ec74641b40bc35b3537e409dbd9b7f1e1addaa29e0d2685a5c2ccf888ef86345d6f8793b3e3adfa84b7ea2eff301f332af0687c8dbfb09b9a28c9f978ab151ee94e613b26ca993dd4fee4d1740771ddc2a18f8c6aad517cec61a35afdbaaeebba3ce7d19cd70283c1ba4e5285add8e55966f4115efaa011ace7911e5b524a2915e2803163bef8cb29eb3b1ffdd76d81f5f4f244971847593f27c9e79c94dbeebb3208237db0089733568fd1e7acb55e213f5e7a74c9f5dc7898d1709494524a597dc65bd54b338a712ddc781eeaf2ba5a6c878ade4fe2a07599ae94524ad902836120f0f208bccb87300e182ee3979ff06c507ef90cbf9c856763fdbaaecec6f02e25c33b4f79b77a11bc63e1fce058803e20cd6b22ebef76382c116eea762b1937c63d5dd3b5f684923171995baebfad48faaa9b3892f452bf27b86ed5b15e4b84773198eee62d3ef630982b047b790e6c23ac8423eca5c23ea3bf9cc17cbc3d6df4f03e2d3e386ae1066d979286a75018876118d6b13ef556d99df15652b6708372d9ed6e7ce6b2bedae5a8396af5992516f32e47ac15ab58f5ce1fab58e6327a79415e33cbb2ca5badb5567fabecca17e4f3489ffe12f3b7799722dd2bb45a33cef29a577fae713492362c3a8d50cc8db78e951cc3dcdeebefd5a7bd58a5059ce7998e653efdf28bc7cdc7ecf6e0bc9cb55ed7755d17ad388fdd78cc570e6f34c7528f39e65ce359ce6e1a173ea93bd33a72832cbaf07100025a3968265cbc8067b6f862091458cc800746266881e034c5881c6c9841132684788b95175ee209ae415b21b5103ef858135ab0c8931984d8d204972a84745082286a4d121bf8a0a8074df4500226b230162d1e4247611e6031018fa9b283974498241f98a20b2f59c20c6169c5c036695171021d5050c5171d687072848f133e2703b47cbc55a32573e03380160e4b6630c3a503de811757123eac1698115a5b7c88f0b96975691080d1810f092d312de6c2081e88b9d24408f80815b40c3ae0e383a6010b7c62b494601bf4123c44d197a7e569f161217ce153d3aa8207237cbad4f281c2070b1f4e82abe02c27904232c9a083171c9008c3c50870c0e2d3c23a700215b49034b9e10810592bcc3c00006eb466b4180925f15a4141828b2d32e8a22807127c71455642932f9ee8e0871e74e10307a184565b81858f542db6d23670c287b570100bb8814f0f3eb5a5b5807c847c08d06a404b0a1f233e096825e15a50f8b40f50ad2d3e5ffce0c38096123d047b6926b8f00fa0d4c0b14b7294d3a4d31bbe08e2d2deea9a42455ff0f0d2a423a5943785fa185157dce083a3c55778e163c3a695a3a5858f8c5614442518c20e1c85f88116496421c30f5c30020f605a245102254d42f00384f6a2890d3e382d2a9e681d68b452e013858f4ccb053970c0a76b10a165e45380d6155314d1432c441b711122401204971f199e4f87d172c307c620f1450823a8088ac6dcf0527a8d7713758a90e0080f20c892831723273009600552003b7091cd00d9e9a8ec546b4f4a0646c96a1ac965306d4339759bd5ed94d58ce3a915c86baf546b9665d5559b65c7646e87ba3da99a7957cd65c420f9f88a612e3456b5cee4d449192acbbc1d06eaf6a43e6b19926337b336b3405e23c9b80c57728d3bddccfa65ef6d21f53cec98b377169b31d2c35a3a8a1640b8a83a84b17386065bb90757dd0ba1ef1ed88551d234cd4f305c33353f0cae9371f61227a4bf3acfe62d73bb7fabf595baea9b56da583d3657a16e0f55bd3d986b30ade4d56be9743b93174bde8bbcf8f9ab47f5ae59116c731931503f3e23b9b0b98966327ce358480c5d7fdd387e195c7772181e8313d23aaa7330b813d714f3ec76413ef313cab19a5dd4c96588505e714824128a95f3993f0ce52814c97da436926fb7dbbcba0a45badd8fcffc919c545db5dd9d2ec867fe64543c4ebef9c94f5cc933ce743b7bbdf280dee385f83c0c354ee5c20ec931df5ce5c2ddd1b099231663a26fcfb8ae878f1ebb2fc06fbf5bd8e9fdf185b1b307f72cd20e6664602c6cdfca5f8d6733e50c795335581c8a072dffd8db4a5379c24ee4dd74abb5c01bebecfd04e3c89c1d06f6e1d95bcabb61b19eefb05c97b899a2f135faa6855e03055d2eb66b26fda487f54d34e7b579824ab79a4a53a9b56afc240dd3305292feed761af80cbef6f356ac25bb30ccbf4e582273c2b0635ed79565cebf655acd58c06ea781af0e3fe354f0b1c25b75bd3be4df31b6a954e79afd11cf269b35c37ca579bf763b0dfc9ce1342eaea9d06b643bbeb243051f2b94b46c36bc8bc639e79c3362f1ea16911d6c97e39fe738e119b5b3204d7b0a42222c38df3d2a442b1cbf5b6c5703e749c1b0fba2bc55d0e5da5b31b94d5c54b01f3b5eebd15cb2e32b57aebc2a5ed879a950611cfcd521f5393b18311bedb10ef598f3bc30e813522ae47a5a393ae18c4b9a3e266fd5421b3d4f74d94623748fca8c076cf6320ea34eafdbd3466f28de27f482629603af6ef8468547d32bd87048ec7b3708d88b5986dd1eeda9ef38e1072d6533337741348304422983b85dd847e7f438393a7df6b410478e1ce1a32153e5c2ce54b9b0f37ac68885dec9dbd3513ede1ed6f2f0be00df7fe2a52c99a5b3370f4b8f555e7a8c3e93c4b6c71eb622e5114de37551e57c6f3eae42adb7f6e773ca09258410fa930ce1eca8b9117c74f4858f784bbd49a4a4a6692c689a47a0d6e69669b763bde6d9ed70b4dbf195d7b4db559f41d9aa2956e431ae67152510578bab45aba075404969f2ed28294d8e40cdb8408875c6eba38b62375e3dab1e1973662a5ddaf8e7a98f2ddba11e765cf44feb2c6ce746ee16778b16844bd80e358335243efee7396f92c03410fa0bf2edd8bb5d3b090ce78c56bb5fd84e7bd8f47eb1cfb1a8dcc5135f4baf07155d3618a17ffd5aba94524bdb78ef757b7737bdd306d606a93fdf346d835bc9377f5c0f929baa6b5ca7b2ce0fe43567ae4b3d9087cea46b2997ee4e76f93edfb4db6ddbed807c4f0a655340b014f5cdc743c7340884fab67126d7b892a73697bf798ccb282032645c1833f5307a52bf6d7eb98ccf6d7b8fe23a02bc748e5e2e1db5396fd6ee602c18ebdde0dc124c6d4e378c42b843533dbec352df3c7398aa57a56d1bdd6ed793a27ce559cf3da9d48ee72bf2f4b60d548ec1d2aaf973c8d59fc30cf34dd5c3e425e75791aa33a7715d108d74774cb7a49518dbb80bf2d0e1ed823cbb762a715d902f7965be91c1341276da0e734df7e36190a75e390bbb20af99bc722597c12edd52975c83912e14189ef3605c7e8ebaf67213676f07eda3387aba2a5a65a8578e3e198e677abbc60d892fe95f30f682b17c3b7887c49f2c5a9dbac94b10d2bb63fde425373974e857159ad2a8c4ac96a5490c99aa810400004314000020100c074482b15830221448313e14000a99aa46604898c7a22089510c031903000000004000000000408c010349170ddfcaef976e7f817ba9bbedff7fffc7fd6f317789fb22bebfe07bc9ddf6e3f7fe7fff7ff9b9014ceb823798b80693ef3ed241509c7efe7ffefced63a2b0aff5eaffc6efcdffad7fdcfe18e12e7d5fda3715fcdb2a805f7a57cb476926d562f179f9ab7f63529dca287f646cfe50f811eddf1154495aeb2dffb4fcd37fe87fe9fc53fe537fa87ee9176c5bb0b7a83034f48c3562efff48fb1b4897249d297c2f4d5777bfa2fd19982e25ba2a682f25ba52e85e8aaee26e427034ebd8db1245af02fb52347bf39ffa4ffb434f8cf5a260fc68ff1130294f5c96640050f6b9dfcfffcf7f3fc98cf84f6b60bf246fab40bfe4bd69cfbf904ba96ee680be52b8d946f496caad0af694dc6d8f7eafffbeff51ca559a3755a057f2ced43399b0dc985bd52b7d7fe9fddffede7f6fffefffb73f777eafffaffde7f64fe05deadef2f4ebedef405709df56017ea97bc3d7df2dbf17fef7bf7a990cdc58f34d06ba2bf2510839ac43af8a447ba1cb1999b151c8b634cdb2fb3f06a44a85ae0ade4ae8edfd2fd1ff06a85274356dfe02d452349b9b7f02e952a7310a6b2f4d47b9c19fd22ffd2ffd9fe61f7acd060d0c857b2fda6097d008c3870968ab8288529cd6be0dda4b6201ea2d497fe3f90be64a8ebb10b097a0bbd8fed0a3217a4d1c5bf694c4ca652cfc6c4e201b11b3e3cb6cfc08a64ad15eed2669ec3dffa1fa39822a4963bde3df94bf817429daab8d7e69ffa7fd5920557234a6b0bd44d15481add4686b617b89a235037ba9d19ac2f612455b05f652a3ad85ed258ad60ceca5466b0dbc97126d15b497a2b5b8fb174e2d6dba19bc2da1576bef47105da23446e17b491ad3fb7f219452a157c19b12babdc92f9d7fdafea93f74fcd2ff4f331944b7b437e993eecca14a538d9566cec27d6a952c2a6d2ad363c9b545b0d6b64cd551c0a7895c0cb24c7822df34385a4d409cdc8a0995dfc9ad1724fe3ffc169afb164ace8f6505fddb4b623cba632bac7ed3bccbb8a088e4f11f046408874947d46104158649ba21906b945f86493349a36896fca0930f4b49cec0ab4c94f104555760143f96daa71ad853eade0aef0fb2ef256ec5bdfe02af52b92d047ba5726b19c12bcddb2ad02b796b7affd7bfd7dfebffcb3f6eacbbfaec0b7ac27a8f7f8f386ebfff1d9052a26855605b8a6e6fa669ed5d3fa3f817429730ad45742f357ab3f8ad9468aaa0ad149db5fd35f56f30554273adcd8f207a89d28cc2372549ab02772569e6f69ffa4bd92f05ff94fee9fba1ffd2fed3ffa97fa8bfa6fe0d3e3dd5004a4ad0fa204cc92580b3d19333620ecf813387580ca9a05400478ff2f551a9c04d9ea28d06ef7016e6113579e20cc0151c444e9b3ca7ab3e3f7c5061dbaa7a3a779ca3e9934901a5cdf618e8649d2d8a441740f5d6d32471c1b735953e1637f4315654fc19e1b98cc5cf88c883a5e2a557e1827fe6998c0b49be0a6206fbef8b0122a47b34615caa9dda64d495facf1ae6738c883a12c72a976d354096309fa172f93a2aa76834a0422bfdea98dc5c96827638294e266f91684bf7bf4ddb1fe2aebe8ab74af52ec3129460054854e46880936d6197de4f75a67aa33ca8145d1eeb44488d0278c5669496d0769887cd0f08349945970f7b714c0171a800265ebf03092551fd4e698fe83da3016f8bcf55647f179dceae5754bbd85bba2f2c6a51d7831f68fb50386706234d85519447d777aa7736311af4e775a7f6222478a6407848c42b45ae11287c56fe295c98b52450d540159aac67195d74e8866237f5d16005372a439ebd03e355aa3023556ea21800a30957de3dc621937b6d3c8738cb904b69d910202435c26e94207862dac743a598aeaf4353286828b662aa5c7f78c3af9853012247863a8ad7f51e67c2e7ff211814ef2a84453fd4ceb4433629c68feb7adbaff7630674f4d843c3c1671d05c450d34434e03f2b708a37be4d0cf42d636449629a272974bc2155bacf9425f2aff6447cb18ab3be250fc0eeae9133a957830580a65781590a1c79e9c1ad0dc264ca015247408fabc4721906dc142a9ff8e5b3a7f2511f5e3188adbeca24389d18d31fd1bda89f5483f6d9538d519056566d9bf880c42e661944fe28c84fff642d0b266795a833bdd05de883e7a6479b584d862047bce9bfe71468eedad6a6051416a853c5ce46f046bb8cede99c93cce0422c5dad5ba505f346ec121f7542bfa4654252db66a1bf3512ddc68ad052e93be407b5bdc0853e35bd4c81ad466273f348e5bd8d1eaf6afe098c4487c9da6224299462c3518966cbec8529ed0a0fb5bcacc4787ef1575b077d0744795e403a055e82fb4038bf16729bafc38026066b94472b272329ffbba5e893b9836eadd02f8247d09b58eafc75d6917318ead989267f0b83b99f98f03325abeb52b0a316c9c2f217f05561dce574ef0b879ebaaf5457da8a0aaf8cbd998fec221a41a520332ad2939cedfefd52508afc49ea58a658c583b20abe5bd5d81c4f92384676d32621f29ef3272ca34c10c29952a4b39ef2bb030d9ae8b65e2f5425248d7819a019b26b5e9074a3e92028c747eef63c856b5239c5b0d74291b2f4d39018883d8f519057b45a46d43fe2104dbe991a35aaa3f23b3e7af0cc3ead86aff205b9f210ecc73c8c034b2a45e629cc99bd01b5a62a093b09aaacd3685ae10b02e8d64012757690a67bc128115c549c029d2fd80d2ec485965d290cb91940b8e1f0dd1fe8242e349f72e41e43443923868f0a9523f61cbc8335785ec189c785d209f2053e971780c92cb4c8cd5aa5b85c85fd6e8d54a85582480559d335996dc061d780980bc7bffe2f0c97125781b4f11b10e7cc95e57691d77a5c6f3f6e3f39b11d94b65fd6b026409094b09cd8d80f478405e7e981fd3cb1e3c66a68480fe9ca409b8af24c7fb61447abd4101c863ead52d57d7348ceab6ab8971212d87e68e634ec668affd5151b86a06adb3ba3621779125dc41da670e836a9def81301fcd82f49ebe3c7b3f49f9eb8f9cefe4b5302bcb2481439eef502deb7ba694bbea6dfb3cfb1b3deb1a14dfdba85725963fd87ae3f9a43212ec65c54a3687ea06101d6d814efbb6924b46539005757de4680583ed271a11130617b84f5e82dd14dc4fad398ea9b807a2aa7eaf6fe776518fd5410267a29a20730a74afba8bb4f8430d364f771edff8b9733ee5441225d419a2bfc320c410361f5ece80d9417c0e84bf64133df572c185050aaf512c484b260e409c338338b4d49e5cb0e078245e74489ee9b05b27df246b2ec6fe1d4536fe2f2d340c2e453dd43a87038ffd85110daa63e06a253cb869050df715741b7c3db72d4ee4f840e80b4053a567f3aea5ce50a65723f416611b27f5c7bbcf8015b1f5dc0058d8d8091fa8d910620cc27476ba69d242118fdcdd4d3224e8c3b075b4419081f8bd96834a143aac38890340367be226b6141ca1af36e1f6e93944f81c11edf85d6b55374324899e3bf3fe788b2cb52e8aec96cea8899ba50737e92c0af15a80437dcecf9c18be03c3c6407b8b59972655e86b4bbf8ad2a32f13d6bfcd25c03b5ea3ad499d55cfaea7a3140cb47417a6c11c5431af9e27012c5942c7f435c705aa970454558e2b435444dcb2192f0a9c0fdb9439f4f33afd769f4bb752f2ba3396e0815bd4098671ddbcfb17c22628ad59562e596c9e47ea619d06a92cf0810747a49292a1f963cc23b06a81f8ae81df8d2b23febfdbf59c60d7d9958699cc22d0b60d3448380a2ab045bce48e3a9c0110d91e9f5e3abe1960c59dfa1d21f1cf1d088999168f85225a8ff4528f810838348aa3d1740059ca015f3615d98dcfb95055743104ebc6b96def10532bb47f641761d2bf9e649d27a9f8833dfe2c4f2142e3fd275dbf8e0861b1ec57f33d728cded563bfaddabcaf641a2c0545a60357c68b68504478d17d1ae19cd033f7ddd00295ee7f8740865b36a9fcbf87bced308392516b4ad30bfd2855118bb35522a826b20d16ca5e992b4480392c5c2be53885c4380e0aa94cd64398463acdb970ac231b2a95ce26619102433bec4a80dba08d7296caf6919be27ff98e5a64822ba7b3f4606705e336c850ef081bd11446aedfa2e25c1c6c36716898168221339b0eeb785d00ee7d16758426e766e213c60228588b2adc8fc620ec0f8266334b999006b59c3f4ca4ea23ce1e372cbaddc7df01372253b1e3b38f50681974b1714496fcfab7d98b3f6f60c240bb4cee92a66d86f2b535c28606b4574f4a19e03851d990bb7b34ef659534cb18f86c5b53502d60b41281c7cbaa10b480a530299ebb01890c05967c095b3abb202a410c1e498daeb5d0f666ceb48b900385c94a73094e9c6d126d9279dc09f43a2db6ed8cb3ed083fdc7c3f97f1ba9f6791ea9f9dd3dd3ba9f39dfa847fe24b5bbf22a4b9b5357a5ff232b428badd8c5ce8420110eff85b59ee97f4b828aa602db508250ab118636ebbecfed716b4f7bca1ea928bfaefb0110d9b9e0b6495ad668048954c61f380409c4c448d0d10e3b2097c56628d8128f61abf232a834cb8a4fb710ca2ae8d83544402e93cd205c9cb87c4f7754dbc6c43113e7a6217267668303d3ae5dc2f764e6b1922b1be61f656b019c555db4ff242919149ff1d1d598fbe5b41248591918690b9a1a75df41ca01759719c7448a2bbe5e1277549f63a0cf44ec43c8364864ce45933d350980843a773741b07d3aa3de216c6be87483189c0e6fb495a8510d8b1004d16a8ee0b9035acada1c35ffcb85c59cf98387ae8dc01bf01b4232af60477089cea5b40a0d93b6d332cefc1d072d0845b363c6412a1a5aab27b18425f10c4bda54aa6c597cbe889614ff57177640b56d70a22463195ad0d94c3f41816377a4a556735819f1eee218e79bc90ccd9e47b15a0269785fb36723aa712b698a57aacddb7c299937485078a7dae81604e39a00f4a769a93e512a42b1df214e66940f205a9838a8f1701aa4b748d252cac2d903bfab841bfd7f373b379094a66dee6eb7b3a2d04a06b563661d26b151a920a172a43ebcd1132a8c42f5efacde6967f34cf33da8f22febe349bdbbd216b5144f049cce508e3b7c54a9e0bbc087fdb8532f25cf2dee98dcd243d56e1d0d272c7105fddb446d8762cde5e53f245907e34a5eb88f8e2aec7469f0b0a14ec07005a6a929c7182e338060364138b6c4b6dcbfea0bde8244ded761dc15625dc29cbda6d24fa70e06e7f55145eafa99ab2ac829dd00247cc58d72a4c6522401a72c11484f1816311b21333f8411ea5f12f673745a442db249663fef71c9a8ce3a4e842edf3c5daa0ad505aa07272f1c93541b37c932f2051a95fe26c4448e3cd8e89118604b9610db110da2812ee486893e043eb9d24fd64b62ea46d19fe5e28a6c984660685df7d8783a60d576a3529913839fa90a1a1ab6cea88a2197a39c0afafdfe305144db3834756131a7e1fcd8ed5d13eb816fbeebff29b6535b2e9c6b67c3eac2ef29e5d6d1b528241b4dafcba2e18f92789d72e92c7309c39740ec34b847ebe1e599346d3beac0cb2ca1508ec40ff2ba6664bef0ff8d24dd9aac4fae43d719fd85864a4c001f2cc1b1470933517d716e1437be47ae366612b578a17f3c79444a55a06480217317442efa9982b9211ce8497e8b2d87e4213bf3c3e4dbd89cbce6bbd97a9643e92bc03dcb2a53f9858063892ed9a80ab022dd4b5bbb7c16020bb35662388495df2d33cb3085f37fc79765eb472540a02c5624fbe77df5b2dc5251886908008b22bbe3b054bffe757ecb5154a63f474d95e91997b46ba17310796afd8af0622aa34753d97d3d3c9ed4f489165017b050a9c2ac8756eb05993ea589ad128e6e0d25d97556ecd6a3b2e3d5a0ed5ff0db7b8e4109ada4eebdfbb64a52ff21b024413a559b4b914cc0408529f95f09c9c466c6720a7d5a6c162d1758949aed5b657ace9412b4b4932e9dab1d116c0164c4f1bd55e536ff23700779f70326a98460ad489e541c4879a2e4402491d80484ed0a74fcaa5997c14e718083a3d785cc87adfc1a0e568fc70c551a31e2e33f6eccfd37c712ab48fe53ca5a250f4f136e064a0b8d407f4c6d202427ce2fb9120c34f75ac89ae00a429520718e809bfe1efb618c3ce7c553cf047df82aa25550d8d6225e70bd5625dfe1f9c9ad53cd55dd556f9a23eb96a852f3a1f5ee68402ac48e8c4d3a83ded3352be92e9560f9fdae2e406d55dd7116b19bf50df12b0724d1eba47c5bd371c76ce4123b5c6d5d945e5382b7f27620cd2c8bf3141dae8de6fc8cef41b76ca3b7bdbda506bf31c91a9db034e6d06c198210a192a63a463b19f3eefde856f6a05769c9ce6b24e28a7844f65fd9ae3191ae99d8f395d4325c9c1100cc116aa9836411049f2ff17d6b477dad6c469be87fdf3c170b6e428ec944641dbebc3778128ed5b4249a29c823b8894c89edd863096f84b475bb287fde49474b46356689489a7701fe2039b908db59f913bbf5588560289fff8ac963cab21a1fa02977046390a21518256bafa809bedbb0443472c458b13460ba1b424d34d1d85be28d17e9d9fa297a61c60f52a2291ea670f7f1daba5fea04b5e6a250cb7cfc4c41670382a4ed87a9996a3b388d46c30876c63595099b707138fc5ad82d29a8912b1f4cdb290fc4ce646016084fc260973b773ae82a9d9c477328d0e0c47b8b0ce2a2f57f46a4f958d42cf2f26008722451b3cbd9bd15a9d8964c34cfd437fe29b91bbe9367b783f679422746e90c668f2ab32a001c60672b986b86650bf8568b929015fcb6113bb7f06809f6a69950bfea46694c4b9bf8c46cef091a0e37d52321959ddda4408f715d7f789331ee4ed888470bf9a693a4512beeeeb0c0950dee0a1d868d042ccc151156ae377b98fc7909b13768283f6e1ad2c9558642a3bc8e20f0f97423f434f8386997c65db686698afe037b4e2a009c7c75910e1711d1007bcdba1ecab698a3889a013e74aff660dbb739857f0d3eed7f3a44c80645f097e5fbabeb417138e563eee2806e0873fe1f16d757eb70a98b3b6ad7622103e79f62ab9b1c9cfc8469aec9a72a0c6bfdcef8cebc1be5683ed932dc3f202bd65dc397470301aca59b4c9ba24fd3015fe33939257c9dcddf06376cd70623a3196228d5b358251a36bf7cd3fa6d568363e2636c287f71487c6b4bb6d9a64e90f4a91a852b18e6ba42998181205f310bf243b85cc6862e9e0ec1302bf0c65d1ba1ffb7d91d03694fdc04b03a602920380909de74452dfdeeb582924b022fde565861a8c52909e1928acf78c1884ca6215dca18a072fecbdd58ea3b6f8b0ad40bd6f8cb8a82463cabaeaca3de90dd82d4241612f6e7e8e583b2767fca5860488046fa5c850579a1e70affd07b3c54eed311a3f15d71e9114c9ced71ff200e58eeb26e37bade1e03b8ab704e44576a96610e14a2b31f815fe723bf1051948c8bbe6569bd0ba54f938d0d2a11c98409ed17efb1d44892070abc75a8a2ce1e11053c7e2eccb5729cd2e08f4286319583ab7f71bc8e1bc2f1d14c65c5674ae5b3b8e4237403f6098ab01e4e371d788ed6f3f19b9868bfbfaee6cb229143c04ed6fc4f6a22d3f898fe4f43605f39328d68ad16ab6c45e14252227d8e0371899bcc28759448fe9df4a2528e95617589ad7169348e27fd8965551573e1d64905c04904f259d2cb37949e5fc1ba22c440cb5d986bbccd6f89d28384d514b170aa40233a8dc72494b45f6fba1470e7d52c8bd9eadb180ae7b4161a31ee9b8d9697555b1c49c69034cd25198403282c1d3128f4594a6587a515074abfa5a8060a42a571d42c5f2279a9de89ac333998946a75b21f8f110ca96b356726fa6f8178a37515feb7905ccaf9768e8db2b168147d22122f2db72d5852a8dec2266b8f57920511062c1dbba9e16e1ad371886466189cfdcaf2654dc29c7c5b3a695da300e47cbe4a308b820dc467929c259ee7b65f4774e200d7aedb879fac2f594d0be87240e81940cef157eeb41ccb1de8d4a3dcf67e2eab2a027dac453ef88b7eb361157388c5f1509e5d64d90deca5d919ca6f51a5d4481322df044c328fff9b7a4d3092637c878e21cfbf3d706979a321edbde8b91639b9f2d508dde7d373a028ab92b2d9d766f43cddf654a0d7872f6fd03aa4f5f6b292d1f9eb88f9cf312a17b38167ca6514a3d43bbbc52048657ba2c5b20c401826957cde6c34d134bbca72c9688414f6b151f4a9380f659eb8b9b6e22e6ca1e64c3618e1cdc4a9fcf8a43f61f2c0d34c90a28f49935a965f17762bad62943ef6aaee9cf782f396c1103c0861188304ed4bde8ad74e707e897f754af411c82a0537beedb0a2c8397abdd3a94ff734f49cb48aa6267f6bd326896c90fbb5f5159fe07140f7062b05040bcebd9058f3b1143e6c5c7503099438b68b8563a2e4f2d3581d8224b4754d043d7cbdfe0c841d8c46e65eb37d76ce12fdcf2deeef3d3bde3fb1f4cc1470350a8c30da894daa767b1b5603a6d824c17e6713a2cd622e15a9428073ce13109f6335c705ef83aed636c471d5064a0f0f6e2fffb9269893775b6febb681399987e903b1e2e8608ad769e3a87caaf57c4ce4b6e409780c12234148108c98cc232c305064fdddbf2505d0e4ec4018f1e54e611b4a47cacc5c2e41b103a0d39d0af362c6eaa163f8dcf58fc92943ec5bfa3d347c5621bec1ac211cafc7fa532a9d3a38a2c058f9fa66e796c49a30807f401b49791ac10ea3f715e95593cccb8c38944c25f83236d5e70f7a082cefb3fba978db46197b33be743c6adb89054dc7a12eb143584fd5b3dc828f4c38920e1d0cb5135fcff465454c2da2c377f6b5592ae05b453ea0d6fc0d88b3c834a8d20f846583576531cf6c5b1d9e7437a89be5711690b4271b5a9ae1428ba84ed35220e028710512755a62a6d311d8e44c1dd682520d4ab9686145e7e0b90f2429182e53e69f0194df823092fb38e7fe63dd12c4600d87805fa4cf0ecb5d3c46bf136285b6abe90d1ac45c27442cbb5eebef9af37e6742d762e9af0ff3c0b69561c1a46d89cdf54721417b1b71c7c189dcdf3d1d4d578a12f4c546842fa02352e1323fd7bcc47514d95075aa5a95f416a4bd3c7dbd50a31a94cf6bd2ae9d9052d1a85de9e4c7488962d2d584a63d5a29832a13679d7dd0dd8506a41178aceb78061e33f1f5dcb6c26641852bfa78cb339cd9f6b2a3852cf6b09df26420a6f524b3fdb405927f07f52ee6a53f0b15a3e22e6170a52f762ecca26cc5b601d8a98e30e70cde1fdf9141f9054bc892c4d77dac966764ca36c081a63d9bc4d8ce2000f1084f85b1747b33f331ef15e0921c19dfeb42213cff3cbe00bd7fdc005e5e9bb0384739e02cfeb6cbe3f85baea26e22f2f84c10f33149dab6eb92a206fc40c614f0527e144dc5b1f10be5baa08168af50594e54df352c9ead4a56a19ac23df3ca01250930c12b1d014f959c85c27e42672d0a248643c4d0abba0e78a0b9c878d632af1c9b2c9e8849991f3070c1e668943f1aa21d50bbf251a48a55d8adfe1c8d9673ff23d9adf3cd23677fb05e0fda74d04474ddd9e599ab2c8eb3c5dd532d6abd2844b1b63a6caa5ec424402a41eef307bda60f17d3c70a18ccc90368aa2ea8da8855b3329b0a5423a087df14841ec2267243e117ca2de1f4fe8a04473ce075d8785e8e20f9e454efc2d156066a84021a576f20d6d11b60c8f3370ecdc7f4dabb34c37466b0683648beae2c5531560219194408d30d30736f60b090eef28e8a140aff787df1dcbe864ba34ed4eb8ee80d040ca5957e4be2df581e11b43ba179b33c4ff8dd3988231986a26114c37b6a70ebba3a9d93561144eda4a315b6e7967b0ef0b9570a06fc5b70cff02bcd6cffb2aeb27f78b5f51229d7c6ab3d634e442da08cd053c1cdcfdbe02de42b797de10a5649af46174da86efd7a49522c8ce2b9bdaad7ea9c24b474277a0f24b974ad98dde4fe8a7927e4c8426dffb2ea90424f78489ef03ed218328c4aefc51784c233959016d39f073837974f483ff0610f3504b70ff00a009224befd3295e77a3ce3115e6a529faa77dc1db83653b93e00d9081d0f5b7f1bc82364d884800a1a5db6476bbf5e5a887410e64ee361b1ce7c184c6578c223744f65d76dc2ecdba19956203e26aa56a4ea84b30ea77376f934f3eebb229a1fcd65f48348e5004c97c90d74ef6ad3052f80dffaaa8e119b544fbb3b32f7e8a98c857af6a8b9aa5ca8b725706391ddc59be33eeb8cce40eed6722f8dc0330021e3519447db2b54ef29a95bfcc875a314532d9e63fd85f19ac965dcdb41d534996b686f72ea0d6a2850490aca872cad2b3015c120d391cee0816a2ba6c5f508242784ea2952f8289ea679033a57c0e0d7388f94b664c6d663a1e46c9439d749fd7e422958a4391688e87457c8ac6343d10ca31d977725e4bc9a7586cc9ea2c6c0124be816187932ae6645dd456e7a2908dca776ee3e417ac9cd2876e4b2af254dc46406a71f7367093519e74e4ac85bc7b55b076abe295b6871fd98c01c4dae15b4706394440f394a3b9bc28c9de224647486bc934da4ed68996559aabf6e5dcbc80c06b1384ffea6b3ffdb553cf67144fed0175f1c1912d42ac58f722a1cc2faa460889270fe7b66ea02522a3023450144ce722467ff66d57990a4ad8f147f11ee7903c2ae4da74f2e6686db11d964d7ec3f82935ec39bf4fe01ed9ec4faf9732032504186be65647b33d910ca51013299a2260f4df0170eb6c8ab43c88b606f4a6d147ee70ffebbabcc9477af1a1fbd7785a629b1433fba32d147952a7f180ab78fbaf157c48f5c67966681b406aa6e04871cbeb912ad58a3564c6e223ee28a101ab6870ae6b0aabb6dcb63492befdf42e54c2aaef7bd2d9cb9d0d80c9e6c0f93e6949e7693f7779c7451de532a08c3f948aecffbfb291dabe067594a35e86a4d47f02d6c362f761eb24d1906255dfa2125534efa24ee5d277ab108dc78cca592514e848ccadc37e0f3da533b7bbd48831cbdfd8c39ea71102cca2b03165624a00beeeaa15d65f207c0a6e458067ef2d7b7cc40d8de231c96dbcac3301dfc13e0fc6565b6df0585b433eb1baa7243e54ddae4426362bb993f1a827b49b6fef1cfe0068aa8673a42cd74a624c0b4b49e5c3806de25a5df94156561146278c8fe324900f610ae68541f7f5f704e1ab8756a22a504edfb7548cb715c552fc63a97b7694957cf8a412aaeb4a3d9e8ef55520b8c6d8dc233213d05ecb7249a0de6791f1a2bd646c63565efa7b70b0533499a88d6e0851ecd4368f99564ca106d2a9e19b47e6e1925ef541d16f9d98cb6723c2c49029e9e18993447176667109d616e98ae75f25786d06f4054c33f6f35da9f98bd5c346902c4540f696eaf574153625326aea5aa4c4d93bc56b2f4a430c710c11cf3270357395ef369e2923ec9e52a03cb17050e8200ae83e362486aa418164dbbc06257e90cd503518a46d89bba6df1b2c646f4d86e614beb67590aef5894e67b24fb3318dcdcdf4e01948fdcdbb91fe2f2b4d2b3c53e29f327cf4d23b1ad528f9e9d2684c33d5e3f397a965f76fcb00ddd05f59d8cf76ce9dca18d97e2b1677265f15235f47f426a8d0164564bbd9ec9f6bba92cdf097d3b546c9db28b82aa124a1ba7f8522568e6d1a0c61de26d89849cefd63962eb3bea8f9dafea7eb575e597b3136b260327da178c881e63e42c2d6b5b67b4728cc4ebc7401a069a951b5762a789c73ec8731d5a586736397f14568f4a76eca667cd544830606fe316f104ff51f4d2af6ec4eee3718e887b89b20fa5cd026adf38ccb67134e2d11e2c22a8e04dacc4efeb37c673818028d341d632f30b868e69dbeb91529b980e727cab57bc31b59436c3c1603520a8c01f10ee61da992359b39fa68c99b3abda07f55a9f0d9eb563c733f0304ca12dbeb05169f7de795b0276e062b1ce8d45c50d3c01c605ffabd8e5eee76068a93871977b9d5c19e51b40809ea21445b0a060c44315a8006c6f4099c35f9a762e6fbd05b26124a240c0efba1caec5e251a206102118effe14449a1fcbbb1641d4913e2393cb90dee9945ac230a27370b549a1297ebf1c31b46f66ad5e86f23d3952aabb2a3b6135328261e0fae6a53316b1d3e4624e5e2bae60ed678eb1ee2e2e3598369cd2928e1250576f601b04d89edc28650d5ebbf3e1c3c0f1bb0d24227103c53716d20e14bde0a09b344f9baf57c81705cf4b669a380415df86ce59a725f0ea6c8a093ce7128769ddf3ccf2e9c3fbc479681cd9434b8cc4caf13c413209972e2f63da88ffea630cb762c32d197d7677af6a219b18083091fde5ed578f0ab5c531e23b18a582f017c1611f14d794f9945508c61c660a549a29540f67666e5c9a2a6eba2a01b948058bf6f3d3ee5391439891ebf77ff07b64d1f4ce5a3ad9ecf040b7386e6e803abaa9d51eb6cd0b6339744ba9f1724c7713bdafcbdc920e976ed1ff45a5c9cb383838804035897315dd721a323447f128f75a0180b44cefd472ecf09322f7fce038452ec81b122299a07ec791d01b89a8c8cb9c256aecaa86cba89045affe3b1a298c048d73233ad62b99f1650a6a8bd2177cb3633a0983decab4d458e3683f22809754583fa5aa4d9934b4a85fd9efd09c93b7dcd9ffab57876426a9853f55bc3082203f47e3acb56f9eb88d5a51e101bea9486c1089da11fd18625aa8c110d2cac9f81158094f60e06c8de4ca6c5d35aa7132563f5c3c2f1c6dd73a31293b573682d0d01a789e2b88fbd48d68f55394ddde4d08226d81c1bf8d267c1994c903fdb49ddfcce2deae3e23931c474108d7a30876e7490b5b6fae4c1df6d597ff1c95ad1fa68798b81f5a1b321a1d977841bfb1e966aae6ea22a2f4b7914d2a7e2f5d44d0f2de05e716a9cf18f8e1684d02e8d424aab5abba8c6021650b1fc027f1dc3545bb4ea56bfd28d1d52a93b91755b90eacd03cbee55e56f7b2ff845db5626e2d3dad4df7d20cfcedf2172fec64ed9dcfda762b87032e400fffa664ee322a75f5aeb585eab29f22c873905e2f7dd9115bfc6962ff477254b04002a3ae2aa44638abdaa42359d05a6050b1ee64a0416c8d5607fd4287d18298f3bd91c5f3331d558308be86cb8fb596e2956b122bbd5f4be564f28164c12252e607f79f9f9f70562fb5511aaaf9bd954d19fae519a603ac97394b4776956a15c611e73b7c09461f2cba94f1e51b5d8700ea06727dbc037628dc9dcf32034c2f5bf1e033927d99942ddd66ee61efea6d41f08fb6b9c22c77a58cce75e3812e907b23dbca77288ee7c4ab60d6fe9cd76e76df913fa73893fc75059c3c793bfcaeba4940140af1c0290e95765826896938d2a57c2ce774a43e7d83342e18d782a69ef463fba22cd8c0823058eb2cacd0259a69c17628fcf5397e7501f152e0d09fc3c3fcbec8e66d06f2cf9716ead330a486627154d4f5e5ba4fdb5b8e60de76f00af28bc8a1a7c94a1269a742c9d18265e78996298d31d542cde63658be9e9b6e4c1188b9b824820bd1ecd8e213ba802b65d9357e48018ffefc80bb033fe29fa318a909423982694d4e059dd3ffa37b96a1a7567cb99457fcc62c07c6a8b4330a1612aadb45c4f59909199c1342828c7fa6e60e784f887361992481428e2f8b83559cf337e7290c6d5f9eabcdee2e8422e1e9ffebf647038a0116600918ab98d4a85aff98fe70f0201fff7dedc080cc9cf9178ed0876c3b0d3a352c0f1fb7dc540e26c6d243ef8ea0f7bc7605cb14c5e1a5ee0f752def8913a568535d821be0a6645227a16f5973aceb236d0bfd1e82c20cb92e8535fdc25737b53a12734a24f0b583b66a15c2863f94ad2f76c84c886130896f2c80ed2496701812d90fc76f672cf6fa98830fd95532d7eeae1c8811f1dd1e79746418b94c74f7eda824b77c1ac63129efacbca215cee7c6eee0cea294f35296666d8344a266660e24561945e9b9dcfabebcd09a95b8ee51d1107f833e10010761d4a17359ad5633ad8912c55ffcf78911c90933bb16da893f861ceb77948b7303a77d20896612a60d99b5bea75abd8febf3d1cc559682df214a9996d8660924c3557947fde5c3fc7e8879077c60f42c62050884217759b0ed814d02cdea0844a6cb24ac9f63999b4ecff755a7c6eaa1a7cf79125ccf2c282f92a1f6e9648bff0d790fdef1d6c9536737f27d8d78d4c2a72bf56a50af31623cdad97864b8e11010e14fb8b17e8588eaac9d8fc03cf7b5f4068f53901472234ca0f185c1298b8ae29e58704c874220c9e714237d282a6600618c0d8cb66b45cdfe1363f6c7fdd5d5f1244087c572a21fd0cb2256f0377fa02d869c578624611ab7a78b2ebc2101e4fdc1f1336213f6f53d3645ba89d50389dae85af176f477fd68b41bcb45a6c060e1b6072bbfbba29ce1d3f01366ff32dd96761dd63a81eb6ca89277eed3daa38249b8bfa4eb20f57209f49042dd46321710bf5e496a7e80f4e33e4c6c9771354463ec822adcf43034c4f84a0386ddace07e7ef35271c6a529932cfebe259645e71170e1807250ce4b16b004a2d9711e190d1df1e0fafb1980ea63508d1515d20ffdec220fbdabd2dd301b55bbffbd0ec18daba1c5be786d34c2fab28b6914e2edc58ea3f92df8b0c0a0544cf5303c321d281ffa08a1f11de72e73053249eec384f83e8699081c70465d43998af2aa2bc116e2fae346e9df07a0f8087521a9c1fab6c1614f370028019432a63927c0e95e197cf16c871611515cb66b67316a83e4f13a79181437b9cd792be893218a6e07fc1486afe712e52a96ab0dbed20a7e8bc4e05a44ef1f24379a67483d6a3f393c1aedcddb87813eac2d7abac0fc5fbbdd0039fb922644715cd7e1e988a02d9b5e405a01beacf404b73ec3033e6672a39c21d053b39143a5bd1fea2643c31c12803b1467d46cb4f44238d98aca0488e1d6551f7e2ce64c49a998f6a1e6e53a5ff84fe6c4244e2b6b5cb1d00c6ed6b5bec616966ffac232057b36dcd91d45b953505c25b2c9c21a8661ce7025696249170fb422f6338f02b3d5c1567c185c7e6a93f84a97820fdcc8b1a8b7b3314ec81a40945e2a4199fc6e05ed5512e1611e6b4ee56a2aa7841a4e5c4146527563b64ff137d1b988160abfa72616d15ea1b19d84b01c543dbf33123248b1ab52853aa50320194dd98a562367f77ff0f498db501af5d92073dbb1f2dce4e2916f56c731946c27e24a07cc90095a634c1937bb158bc4b96e8cd1f9fdae641cb6a466286a51a786664a474d66a99787aa07ad0ce5c2bcb5b5332402bd1f644b421810680e1c486f742791a86945af665b0ccda4957208d12409f2eee24c1a610a052ed90de4a857806ee109fe957626b043cecd0c9113508908062e9bb7cd561bb0dbdf4fd51db9f331df19e0143bc2ef27d2d5b557d55b8dd03e29338f7ea31a8f48168a9df040ea6332f916641b8993ddbb95ca20760d43c126bb7a18a8f9d4a44c763dc3b57bc8c4dfe209bb316165eaedbe24bc0b49e045138d1f7919f17ec9069e1583d9adfe91a450984b748082b0506aa8814627ee307770cb32ab3f5948c362e36fc7e4d13a6401cf70c49ed0755f216d936dc6f5e2e116d517853d2a8bd1c1c5e67ad165ae0db3f9babfe1c719a1b9058b1129d8ff031340810fda153b7335a947aaf88ba69815d697627f52490ba680f42f6e0b36c27378f81f30719087a0fbb2b664771639f2590c4ba48da4756c6897e4d1853944836e6c56b371f92c6e981b9a56eae88a2d444a3c0d51f87899c865267fb8740a818d1604ec66ba05d1afe73aaccfd370afc84abe882775c0887a3e12b683ec02ba2aa4189a88f970d6c4494f75c6a7c1df606703d4c12d82ecb46d591f1236ca9a0ccc8445131e9fc18815a29969707934511e69c7350372675587f0c471cd84a3f971d267d22a4598f6e51547456388f26720998e32edb4e55d5e97f0db4f40724debd2ee88b1a40381f9a05f982c02fd3afd8b35266fc5f16d603f25364311cc890f9d321d500c25e845dd39f6ca807df88e8a5523e3343171d892cf773b1d7b53ae063f85af4d359172544b0ed7f3d1e4357d706bd201b23a432c2888e22eda0ea232d94ceb3fa5a548c615b74f2e9c3b54512607fe87310522e7d1a1e84f3186314156df1410359a4be8317978848e9e880a2096da529735721b5451f344ef2702d3704674c1e65ba57cc68354bd369327ce8656216a025ac91309b360520c9f796a2e59764b34b09da81221d402b41a97ee4b076ad1449e089f72cb8d932762fd1464f56bb7d3342d3467f0ef0593a0ca969fee6d111c623396a8e571b6a69d7c67fc130956bc9816092665e7359351b28663241f767e16f314e467ec4f1d599d34cc577a800eca72b7cc4ac6719bfa489a4dcaa8155e696125381c50386302520b220b5ff251124194f04861353aed76c5b55394a860b91326fe202d3a83881d47fbdb0d334747d6cb4c538621c6655cfb3e0527821d9086936481842cec2689b2ebcd1184a8d985ef90cc480654c0dc51ab8a1ea7011e78e8a5cdf400938619cb2490a2cfba40f994cac67e882cf858dcbc6df7743058275d5517b8a7c37b06572786bc292dd9597f28961a6ebe9654dbd6f1d23a2bc202632b65e9c30074afe52f341b0b1fe85bf4162ab7fbab45436ee8e6cc4e25022f7ec346a59f9abcd9eb352a6384b49e4011bb7e2bc9da95a7734f0c60eab5fd69f97d9ac9e2fb868b24583584ad0ec26cd3895fd740019dd33e28dbd98983883663bc015394d549894461c0f84ac5c09835cfa2d5f8eb84e21caff1b1240a25bad5aa261d86c3a33f1fb7a5011c81c82652f6c5a956f238c5355fe89d419dc4c12a380894b63b136ad833e4b5f72cacaa1aef0542ad42e124659fc5c68bbf80a76ab206f8a8680768ad24270a348f59350e66d02ff0e3787fb694c151b3f5389ea35f5b751379828f5edc1673bdf38e82ff9eee06160fb9fe7bf69e2dc8f9c93d8d769db39896b560ce06cf328a9ddbc869a843832514cf0ded0f9e3fb6e519f32de31b826f196470ad9d814d64ae3045b97dcaf66fcbe422e264511aa15133dfb090211b54333c1268b8c0ae80aae298be084de6b154b4d8c8ddd37e07829650d715e68b8f7edea25e74c1960d78d2bd3c4577720e547d99fb3badbdb0afde4017e77adf7141ab295c0a9caa8b4fc04de85a51f4f87afc3dc3900b20bbb880fc07d6b91f3667dd6f24406597ecc56b46e40d170af7adbf890327097dd7f730e088fc6db925290f408444cace8bf6a2b7212d4c3c417943d539306e470cce8eff0f37ac7bc533567a1410d7f33e292c32bfafb1650638810ebb7a21e32f0b8d3200d828bc41f4babd857c098fdf0965153adcd482d033ee8cad9f5cf43318909f37e068d42e0c7bca12e3e3ec7c6eb5b4c7fecc4400d4e9bd451b1eee85ff876f0e9bed2e63db314536854e0d8aa40f627c35beb4891b474338c6b59a8e2ce1189acf3a66c832cf41d84405147da662bc2bbfee2399a139852f82f21386251f03f7ba3cfcd4f540a7349348ab08bc5008c32c7e467c2313e4be7336ca0586e6e9d83df17bfbbd8fc93bd4173b260b7a6d45a2e42a5a4421cccbd6fd373eb1affbce33b2407e9fc065b33b80a2d8f05f1234b0d961f4cc1bf57a54b1ba81a64ddbaa87baaf01944c80715f194f169157922420ca1001949621c97c3912b729960a32151c204f22629813fedb3457cffc0f709b345302dadd76ae504b90776ebb9711771a12efa27a1c686ba566fee0e1778bf8e012c9b24de47bb16376869a5666120b97f94568f984dbbadd77e6d4c47d3110b4f0f361f72b499c13cfdb4a58fa5279f1f10cf6f1b681eac1f0db20db780f1252b7d53948dbd31ca7cb3172343149d80a19d5794fde1cfca316f4a7cb652c09704bc732fb8283283a777b8f58a72d9ec7f9071a1cb17087e142995774d8f7c50545254f958b44441b8bf7a4086e11651b97daa22bc69ad58ccc87129f1fbbfd44d919c4d500a7e0c7d72615a05e64372e882f868cb9bdc36ff7750e001a918701ca6a032e7324077e6ee6bb861a810f3f83149896194288e85a2feff60247d0f418b1c8f6e4ae8e9a17f491b87e8585ea7dcea56fd8e2d56f14174208a2133890e866bce0ce51a95cbd3f942b0f0f64b656a2bd0b029bc285c4bb328c51ed56248113aa210b072b95c72387bf577fd9a51dcf7d51bbf3647aabbe1e1f27d665d46b774a1448bd14e361f97d454ca8029faf3e19bfaf8583dd814557a58c34c5bd7a4d88ffa5da8fa8c6a42c2dcecf50fd75494a7b89db50d8b586616613afdb3fb210d2099bbb2f4b0567c854e006893c087b175cd53f1f18e360a7dd86e665992f55a582aa4166a01b466e8b275be8b1dfe92ffb40352951e200c5980c49208d8fd3dd11d9e7c2e51ca20572f2016dffce41167774d7f30c56d6e3fd1c5bb0842c6033640af94f6e84aa4fce72f12ca91d93821aceb3940733d5a20c1e47a4b8f64cffe8b1e9acea674e80fe87bb7329211c12f55905396d3563f426b89247fc596706a88f24c5de4d2a647ff677d01688646368fe026f3c3e3872a407854335e17d5c49586aa24a48b13921290a8a2d4e5948c07952ab6291cdf2006d6910fb0001223860cc94546c795f4fed7308310a45eadfb2140c4142c10e5f03284522a450c20cfb607342a96618bac518356ae68e8c1a40d33e428218b618990de88a3d1cfa7d557c28997bd96439e09cf9e20a480bd5c3f6615308bb0694050a9ec74cc8898cb5bf62d11d63307c9f47ff0cd6a8ef4e562645d4384c954646e4345c405b2997c244217d7338a674b2cf20e9f3c824805cc81c034dc4cd6a5903308d9e8a0bc3b7086f60523f9841441411975d6bac46226c94619427d9bba40a6c77f8d00fccab10153d8d3e42cae7708cbdcad2c0bf1200b7f3c32a03cec1085029d6f6ef06d7a9d9277d7f00f664cfccb8a1350862f71ba91ee4dcc7535310c6daa9032650e3c8aeaa876183cb783834ed5fcacbac25b2289ed7f1c34b3f033ed7066e17a70ea37e9e79422c0a0b5b3b76295096653625c52e9d08238ca6d232075bcb4e25111115e63f74951281e30d10e8d4e7963cc4698d18c86229e09c8a2786108e700819a5be71e8db046074bedfb32c509b800830822cdeda4901ed9733da09added9930b55c1dd95a492f54714ec1d51413bf5df88fe338b7b82e94682dd0c0dee4e101a00fcafcdebaaa828cebc6793a1f12f4a582694262d436500e91147b179084da488c910652e5fc2ff1beb97349c58ac9b11fd00b0cc49eac84d75d6c626900cc6bc3baec012b98a021ab63d5cc45c9612a9d9f1fb3444750d673db24397c1b3483ecea85b03ddcb4e178fdcdcff94247578f7461ac0188ddcaf4ec8c5f6cbeaa1aee8e0891cc7f3ef252a96ea6d8be15e17b406fa01fbbfcc56757e26a2d4d7cb30144fda4ee92c28b8f82211e3884a036634c3373217255a0852b0f4d488be11d978630dd8e984cb30146087118657d0b2f092675ea2ed80098675b7b9fb7564b36fefe9a46661c8730cc497a1cc87221cc2780773f518c37b00e8391d09163b2abd2cab7d1207da88f1f820b001bf80a47869f6f70269d3e9fa922bb81cb7e112b0e46ed6d86ee6d107f469d3c4b600f96877f9a4cf2cbb88941d1a1cd575f48f31593325fc4f7e046a20421c4ff4d420396fc5dfb37464b03a4f2cd031eabf99f918a974dc789f4e8cf8114af9d9e4b2e518cbf49c4a56a4f34b8dbe882d3b149f7b0511ce08d174025fba3cb80b0b837f93a807f4cfe24214ac67779afae511bec9b0b084a5a0948e2fa2b687c95f63af2d1d094ccf4d412dba587d3b047a70a3fee73689ab8de38516f04bfbba343b3a6fb3540a9ba6b87f1b78b01babbc259bc786e0c60537ef5604bb1b5fd58fe7087a4a8ba38ea9d21a6860caa69b771711f51da20f8668ac104d13a2aa41b45b1075241035d387a2124c1ac6ad3b7f025bbb763cfde46dd9adbc9f84c4d0a05a3e84d496cd19a422ada88aac164891551deb45927055c77fd4a6f89ff10b44ff849f15b51d8bd5b9d0731da991fe109c6fed1457ab2092ea95850bf8aff8b9b3c1f4930001c20bfcdfa2441cb822fb27b1248373e4edf150f95a4866d8b9eaea30d3a24fca8c0dceab57e59a68fdcc9d1255175014c480224414a4fd71e9ff597e6bf8f6f7848481e072870dde19021b0c65fc68a912008520df8f548abd7cf1703c9597e7e81d665a9bdbab524872b9f3b0a4ebb48cc1053fbc196c9a8ff4a6d832925549fc87f1675c3654783ec24597f4a7febfee2d0b5131f150a615a84841a55754e8a9dd5093e239b57174b4d34365ce2e45ec4fa2ae048ff18953053e53a452dfb64e7121c162b613bf6dc78a64b08c069deda44eddc2de03c3684ec9b65b65a60bd5d4869055702477365ba7bfe58b4584c45ce20c4d9b3d843621ddd9a57a50a80e145b48108a7554f14569acc7787b3b0f09a6de412f3b3a1a1aba4a3b724205e49d0f5a350cc70646489930b141bd50478ccc532c98da4b4de0fe04176a2fc22b2224e8c9087abd4f9ee92123ce9f6d704d8737caf38ba80fff734dbb0bb84ddac5e3f1c607ca7b2f945207b556929d3374102c10ea3b7b836624400785034ab5c0ce246bf255140e894852a48b05e426978e303eaf2b9cf9be912b4736768be010ce5608b795de5820bde03dd18a6c2859ec280bbd776c746b4fdfbf187807f63d5e59a2ad31d710852e06de1f5c86f190e535c41c1d3ca380beeb9605f4deede5e7acaf73534268751b257107d654f17a874a45391b0d7958cd0bce32316a197561484aba4972b3c3333670b7a3e099456d80647d30d442d2ef2236b030abae0340368b0c6fdfd03f02da12ecbfc5d59d96d8059695d48a652d5fe6f91e97a99185a7568f6a875c841d30bedbf96187c1aca5010948862e35fbafebc68c3ad6945264c4064039239c8ad5a8e369d98aefe8462d0f22fb66ff68fb3039c38543354be090a2279230683bd818350b4eecb6fe1491251d39ca34a6a40f76d3f01ee48e5f610723d4c5d9e03474c12123a7726195581e9ce178c6ca7dd4b8662190363ffbee42a8ca3a33c8583efb5768ac35934b316501f80e0abf90c1f1f47b0879f4aedea069dfa1c37cb4d14b226397ceaf8f6a5cc8208f5ae366523e44a737d1b5e6d5c661754728d19deb88b4261d766aa1ea4be586a534ad75533a9ef18455133366b3a0018281d609b30d239c9ae4846f802c4c69def705ee7de69e1bb05628f561223f236954169e035d8fb405dc16db9af00681ed7996b5301fee6ccb6df431b4471e8c08fe2c3af5fc237eb36d8e7091a0215894d755026f0080d62e122457240ceace1ba55bf068d87866815747bdec2f79a848cb3203575b11b2af1814da43582bc0166d9850fe462315c487fcf37ad47a4834df06b481b264192c6555aa44f2b06594ea6acc2b195e11bfb8637ce3aa0d83ce06a8d43f3911220f9d99b3399c9161bd5f0a22ebabdabdc408c6f7a7c2ea2c50f61e41b53f40953f47cb5980052b1808120616cb658995e1c1fa8f864c14ecf5aa2bdab3e1b83f8b92a4c8a87a7174a5aa4899377fb13636e03b2902aa518259b19b63202ca95875c0b1fa7f102e04a63b5340c564a77206fc1d57eda7166cc2aea422f414fcf5b6aa1b111b4af3880effb65d1f8ad07c8771b555804a755305a406973324fd1c8959cb268755aa7dfb42567c2ffb55e43eeddd141304785415e4892e05749f3ef8e77e5e42b699ce5beba7efc90e56f5e32f0ad18390082076f40b81aa1dbf5354e4f0c864eb53d30fe0752bcea29edb6d0d4271455967b17c0b75f0f6f3a16c1295515177a09c9255ba7e626da4c494f576e4117e59b213349ac5e75e55a2593557b290819b299ee7b0bc8c5a9236f1c00d11abba15f1ddd3cc9384c853a1c6ae1aad66a7b530ce331846882a39f2b56abc21471b2690aeadc7fc318e56a3edb4ed62e2fea37aa5cdf09d3a2b11b9634248d7657a80d008bcb750d7fe93a2af996d07558280e447ec2607fd390d1a5e37e0d60e25deeb11ca70a0e36eb09a90a55fca88889a486e55c0a497cc87314dc2f5957ae0d9b149c487949e3491a8a31e1257662929466a1a348b4c898f16dc4c6db96457c3649aab40603cada5c5bfd462c0f41358407cf0ac1178bbef13a0a3cfd06cec029646f9e9167d1a52adf4b1b931ce4e24d3b8013b762219491e1c43e4fd6765039aae85547515552145e08cce908ad11316e0f3cb5531f1c956481aa0788253444c941dae934a4e0bd57ff87ea81fe15e50c376d1a824f62a2f6f92cf4fdefc0649b528a762ffb601625c0de182705b3e4f70932a6ea370aafa789cc255f0fd1c0162a81b0fa469d6750ff1e3e14f2b01ad452557abd9a3fbde14c80414a6399d1b1c7a3b24d09cbc732ae055545993ed9828d411b54ecdd7c748d442ff3646a2a6cabc6de77c4a24b33118a5cd6f3cecb986b67c384bda86917150fc750a6b999f30a7486980bb4886fb4660fe4e6b1d5e7baf22552883d4c341a66dc99fbf5981f009efd8603390e0f87041d643161c6ee53e5f1636f47f509a8e2cde23a8ebc3594ef83302db7d01e55a6c37110193eee0a18e82803076134483a650bdd5ad84850f97e7f1c663e3545e9c76086d2baf74f9708432d2a63a5c1abb9ac8c0e409472c5ca7f4fd4874ac1cd38ddf497a10dd813e5b176c8b316f88c5977013c281d762858233ddda1b5605d15052c1c275ae1551fc29bd88516d39b645783600825749bc8b44c015fd270b00161515e2bddc7678b9f7bd1d412ddfb3da7dd67dd8c721932fb570ad9e64dc8d42d64e43982b7b701680988a364d6b178ae97d9fb868570dca03f57010091324737c770f7b669f5c83bd22555eb4ba116ed8b83797530e91ac32cfe9031a4b147cd790582ccfdad617a106d95c1c3cc40fbf34d65ec8824d6a92c375ce17142c776fc79e2c6d3f14ca3a607343e3c08b2a53b12fb067eb871441704b6be7a1ba3b696350b359cbffb467d30bf124a0573b8b9ea6beb779f336eb4f23eb80273d586fec40fd493586b3a38c05211d2670094ecaa524a63f297226021135e5e37e7d4d7bd5a8321ded2f20b744b90e70b91fabda0bcdc41f9e319199486d43d1fb129ddef31fcee9df1251b3b8b672040125b9bb07d3dbd9ad4460787d13dc441b68b7f19e02f5ff33278f290968ef5bdd4ed2ce15e7555871f0e5bd0b1e4701da2bcfaa5e232a79e413e39ebfd72dcb0ca16e63300b03651a3ae8d310d8d2c2f84741231cd06223133ef63829d635ffc0d7192dd1d02ddd8aca9700ffa4eefc8095309ff70a99b56207d3af92b16f2715188a7b76de97866c50ac6f2777c2caffd3f0c27696bbb84aac133168af30aba3dc02653b0b919d33045d3a82bd297635588f355c06203497dbacb9c9807c6f853f2b25d5341350e735f7b04fc8f527afd02ac2398b8a5ebd4e2f841306947c81fec813e8a996a76e25db1e9a2177cd1760c9f1d260b94e1cff4b9263e19fb270b8110ba4a2142b84bcfd1787feb8d1a64b09ccc1b349367e8a6d0683c37ce03a4d53793a6b0265c985b2f985cd2e2cb1867159313b39f0578723e24d05fa76cf3b667fca02d564d7b6a523b2629fa60efdd123d6083e26b9b8436e148206b38dc5b073a3938a0e2484fc7a18387fff39e6e3c3c9057e2ec1db752ef8d6b79e3630260f06938292cad1ea0de4a917643275adbebe55c2ea5789bb518a083fde44c7da315d9efd631847205489e6dc5a408181ddd2ad635ab7961e1c44c16e73946aaf2068b0cfa964ccb5d57b4e7b9b82171a97d5ab4c76c72d08fa6bc1f4a5c708f6e959e2d0b021832adde41fda4fc38831c67a38123e4c1b25aa5ce2f6e041d1c5fed284eca3df3e06669d5eb7608645b6e0e139e88df346b3406d5597de54326738a69a9d7ee55303f747bed7e0a771667d05bbc1964d841d7a68dc7537a43985984a5eca084cda8da30147e9259909ec6c35371542b4d30c8e47bf3073af6c955febb3c10552680c90e41700ca4b1976a891b93da5d6dab3bc779d60dd6a9e4e17745fb9d0f83c01d0ceafcee845a3c973bc61175221c8154cba27b240f1947dd769727a18546b3a9001598a9cae0ba46c1f59c10bc911f07a2e0e376821045bcc81032de6d1b9bf9a6eaf4357f41a234b1863eec95f8dde6a83a6d93781ce68eb090e11c165556bfd4a9a22f85ef6af2b095a5a3ec69a25cabc66f034d3edbf46d36a43b6a48a50cca95493b895b0e2c568b5ffa2de47772cdca7017e76d44de6847ad23eacd7f9f1cda940b11dcb0ed41720d6bba90b7a5cd9cad538d66c035c460cb01b5ca479a29e46dbb649ed77956d94bd42294fb3178ad89a0f9d1e2f0e82fa0dc34bdf154521eefbf9548f95838d2a2a3dfee0ac5792ca772607f5a71b10985caed28cf5bba81607b168fb45a1b3d065803068020ed72b5f6bc29c89776b2f2a5f67c30dbfc67d7752d83e545a6fe8f4301857072febc3e83243a52d1d1110965888f5a97029606393fe6e3e5701fe3283f03eb8a6a6b779235b1feb4bd434b7e475c4b387550dbcb1e4e0f0f1609d8b4e95d280b54c2613ef1f9af517e56fd275258dd4e4e4022a3bae7b58300eb1930ed0a49c6f4f78e275e1c751237bb445d41edbabd3f81cdbb7c9ed3a1a9da72378344c1ccf5bac42ad94f92f9db95f9c90d199903d8a401d065a81a051cfdb032384ecd57e157620fb37217b6fb2a594524a29652708df06f406df8ffa4eea3a4b6625fb4cdbed6b690b118a2fdaea8724ede047d29ebb36c3c5c8c4ee67cb32f395261723131bc1863a5c3ab36599998181799bf4fcb9a82a26d6f56fb1aedfd469eafb6de60e6aeaf973489d2f9b413f48ea5c89ca45ed5cd4ad62dd6686a8629dbfb6953fdf833cec9f4e53d73a4bb9a8fa00f1c3ce497d5c977b49006cc09a3d74006502281a0943a8271c4f880dd12684732814197c9c3fa109c09317dc5395db9393f00909f814e4c946ee6928a7c79907ddf3f410eb5fa7670f2d3a9c0f700423b53c94ea646d402fdee08ebaf16a387b58f590ea268f0c9e1dc1783aade9af6103075caa47536804ac9de22cca840494a9c3de412c62e0207b9f596bd377ce67770892c2055d15a8b131518a3c8555f9d0375d58575438ac9284f96cfe438a970ecdf240644d08a7b266a5b383d4a0b1d3d3090cafc2b51318b7fafbfd6da72cd989cae63addf3e0747a3a95d0cd0da715dbc170b2da0d719a1a47ddeb3a3d9d927a19bfd7e6bdf7d6299c50e834b909f9b5e3a8fb2631dde43975184077a1698b18ea3c7c93930c400fba26accf7641a7d335f9d0f9744d38427e41a7fba8261a3a5d530a1c2636384c67385359661ad34c609b490b7e9e93c98ac949cb7761c7568225bf19aa0344f05005d8e701c107f2a1cfe37dcfe3f1cc0bbdf252179a394deaa0c6b063acd3a52e6723f1e5817b4d3da61948404e389b540833f3d9517dbf0e0a56e3c251b4233ed06c0c41b570c667eb4e4fa6192b6eafdad67a71582b7ef3823d515ebeebce2169e6eeaef6eead9f9a39ec17d4d5d45de8f6e9c954a25bd1830f2ae5c93d9361a7e2077a86183d43e8c0e22660f4e440081c74a067d740076e081cd06dd840d7e9c9834cbf9d9e3cc47453d75f74d96d61e1fde0c2a1d5b381046cc82e0d146f49474f69c6ee8a4711ef0b8f133c156f762da4d9e918c3cb22d64bd2b20b3345c8096f0d8bc7a3488e28193bae24ed6cec706164470a9e531a95353ba932bb226349507873f2509c20a6849d932a33523c164c6a6ceca02cbde0f9581ae2495943d16637e54caf04190f0b6cb7e6d5bb11a54656132bde50105e96130ea55e508cdd093a589c3a84749cf168a84015a667820b6fec0acf6beb8b094c8eec664cedaa9e5ce49892c183918388c72487895e8b168a56e06d29ebc1f0d23b9165d7a34b4a131e95243b30223d1d3e78464bbc201abd18388c88e040c153016dc746cd0f3231bef8f8e23da1b233e1c9ce49092f8d4aed471b1e3cad1a3b2aa5a39d92920a1e11b5de0a36bb2566b480e90d6dd925559101a59763096f8711254076534dbcb01b3d2318426eacd831dd08da7db1c02b018d90147631c27843acb891528609efc5d5ae8a101a3d7860705841da21d968d164a3441a373b34b32b313c13ba98c0b2c3e24ad212437263081ad4938eaf196b6a14ad50e304afcc1b5e94344ac6ec9e889169e19199b23b73b20382d5ab518428aac98e9e50d28e2417504929765c69bb37e3b7867765fcca9c00460cec84959d972dde0cadad24bbb222587ef0cc98784437dcc4d8b140a385160d13476f7666d4f090cad800d35301e6c4ca2e852dde192da924bb1a45784d3f5630ed6edc001283c68c163c2e334cf464bcd985a9d98d95e1b500c3b302b6eb62a537638be7450b4b925d9422477ef0ba984ab8b1e31223888c164c324c2079c36b41cd0e4d192f305dc0ccac406ded92681d49c22b518467e4c74e0cd36ee9066f4c0c2d482d7659904cf08abce921a9d94595e1918149016c775ae1596df17268f55c2451a1c8eecc0f304c3d6ef0881126468b9d550c13bca237bd146a765d659ec020017b6165cad62e4d8b5725490f4711147eecb68c9c69a766e437d020f558c0285282918285b5aab33f5ba19bcf864c37e9c98302a69bbf537b11d64dfe2faef05ef2bed7acfa620a687240e555f30bba6a7b72ae978f3997f9e2de7e9ba1e22190f228d6efdb29c9adcd38ccb9bcf052c210dd7e257b49463344aee750a863aed70373adbfb4996626a54ef3bdf7b36b591c36308072e059fc800d1d3660f282cd5037e0e06ee860cfa32a02e037c898b9b2460c654766fc3a3d8f967493b75b61acea1d6c0f255d8c3b9d9e47368e8ebaa94b6314251ae11001d0e969a40297d155de6914c4cb10bcbef756237230e3fe02b5ce83aec84b675dd193105fd0e9744548c25b1424bca0d315f1d015c1182fd02c9dee798a86bab9013c93efb579efbdf96ecd883b3d8b4e786873136f1930fc6203bf3e5b9b51ecf424da2a1b6d9d9e444cfa6ecc98b1a4463d8e3bc03c5a7d8483471ed7a83b3d8958dc934868e7c6b16b36610734cb83e5a91cc6bdcdface7defbdcbdcc8a3cb8d1778e3a87bb1d3b3c5503779c2314e63ce165cc29e909c4ecf165bb4c7d441ebb1adae773e5aeb9e06b3ba17846f087317c04ecf1659dde465319da3feb2da929a8bde73e29c73de9231777ab648d27b47543c14c6dde9d90288d6f59a6c9d9e2d98faadd3b3858ceb0674b1e4e22b4556076f0aa90ee230858e0ee6f0923a29883aa8430d7a4fb7e4ce2de989e2a9d31345960e6e17432e907878af4e23b17ebf333dfcd24130bc640e950e86e12573493a285ed236a483b7d092388abb89dd92f4146aea40b6dea05c0e631e1aaf07a407a4e3de8f1e905388a807d583021a5242172540a014217b0154c28a0a46424e682554387d80fec871788088509218c48290d71b6ac64c8842a1594f847a4142aed6aa8f0204c5104242cb24110aca71c34b2883202d56f509163a86eb4c6d7212722354bf3420a885100efa4414d118f2c5cc93929b2634390e2083820a536daaa03c09a26dc06a0936140c88d047a970a16b5410cac05930e44bcd8b133b663431a1e1a8968f31586a48f150caf242031ed8fe7b910443e83aaf4060b5564033d56c8d083927a535b6b6dcf73bba19f8c74b3344985fa7b4274a4b64794a33b44737dba37ebfc7850529de2717551950499419df8c7b5c46cc71505835b3c67e05fe762bf5d56d2af7fdfe3eadf7edf737eaf0cddb0fce8faf45907fb7dbed96bbcab9ddbe8f3f0e772b45e4de83cdc97d0e97f35f99a379b8cf707ee3347f31d46737c3cdd11b97fb74de9ee9f071244df16b09eab00716d6db32fe889f7bc5d92fde3eeb069e576c4f687baa287e187e1d4b13f755875931db03da325ba9f8e9f03d58911471d7c2927bb8a0e61caa57a34ecfa9a41ef20d44101a6c035dcbdc94e5a9757be88002b95ed868eaf206d1db3286ddacddaca588bbb6f6b667dfb76d387face9a63debd7c461fd043d7fa0d91e31075535c0af23e2aeadd934fef46b5d9af4c4a6ce54085797664ec5bd1842d611d0e939e48ada9e6b73b6d95a10cc3b679bdf8223ac542d2d500fdf8ee3385ee1c6f176037f84edb752c4eda34942ffb97df8a3b5a539c2de1ebce298802be3edc1b71527e2ea78fbf04d9da95e1fa7c3c592fffd102ce9589abd6ea9a9216dab903321a790acbe804e4f2144b61cfbb524a8ce12b524725756c4f500a8f3aff8ca524de5a4fa1de1c1528a7353a5888b7bfa14a71f87d369dce3fe8e8ffbf0adf8c10f06c1d20c41307c50e7f7df705e7c1d51fc1cb234c712771343b00c01d473218ee54441d0825cb967df0f567c7f84edb5493f40a76710a520449d019d9e40beca7be9adcfe9bd5404079d3fbd7f39ade5882c7ee06f8a7fc56e86fd3cfc8ff312f7b79df37b1cc707714a5347aa8fa5c94bbacb2ba3586e6d86284d9d262b7e6002fdd84af3e2ffbefee5e54f7d1184fa6169d6c7e53db58eeff272ce96a87efab348fccb5cc7c94fa7b346d6c81a594c54ed1198bf6c916c566b9bd68dafc9119c20c4152560796cb6d0668dea0370dee6e48cb6f7602be6b7fb18677bc4c370c812514d85562a7c4b145a281be70f658da0a47ace4f22041aea217467f5c81a850085113fc59ce2280faf256189acd2b665226e917468e36fda2370d4f6a8dbd78de54f7d5bfe90834e6bdb575dad25d2efe18e648572234d5a6687749703dde2577a396ca82528d65a45db8be27bb0a048f29d7b3e31c2dd64eed668002290c8bf473061d0b7ae47150906f823258037e09e7f00211902cb9325901f675b698dacd1833bfcac11077fb62ef3bdad11287ee0f6686b6b5435c8d46c47459eeadf1252b7d50e7d2896c10d967df9c1ccbf4a454ddb5726e0ca781fbc5f936e38168ed9a170cc4e2911916a4836147e60186aadb788b437894f7c057f81a0266de1d8b658386ff27b6579be4f87649fcd668742b1a1133631c8f6a1982d44fbf4195a38a64331a86bdbeb3c09dbeb7d168e612e2da3c5b23d59b689c51a1fcb168a856676e8fb50ec0bcb6c64e1d80ec97afdfdbbdcfab74e979377dedb7eb5b7866255036d75c81cd2cce19026eee6bdc25cf88a1d02ffa89bf70a141f046ff5cd3bd46b098eba3a8663550310e4fa8ab5d692837bcd91589afa4c0412231075fda07eaeb95985da6bea514582415355022d5636c7fce1587d539f75ad3bebfabf8cd6f59b16abeb11d80ce1d89a9182391c23ea14ad8366088a6689bae65cd7c1f2875b6b0ba1b343e1d8f785647c876319570de0c4b64b1384a16ad3b67a5459d871645159d0cae22f58c5aa5f896cb5e7c7fce8133fa8ff997b6361f1c32eaf2679349438a4ce66f80fa771e54ffdbeeffbf67f5ffdfd8196ccbd92b4739b7525da38fb4d59a9af434db88d9b6c0f8b5c9ba07a709fbf03b3831e22ec8f653479cf1deb5e491306bd3eb624ee1ca4a02daca439f66b49985a2775d3e6affe3647e8affca99f78015c69dafe7d1e11be15f36fb1fca9fffdcefbb1e580f3bb6e5bbfe66d9fac435583fc5cfc60c43d586bfd3eac1ff81e6c254ddc41f16f6fbf0741523f6823b9ba48e6ce49dac33cc2cddd83cdba67cad581cd901f477ab03c23d0af2e923ae4eaf96180b3ba48e21e9266870d7a66f1fac11d82647e5bdebb047f780842674dc4b7ce3a572790a0534aacf3747a4a5df5b3320157c66ac64ccd39ffb6e5a67252dd96b37dbb1370c5bc9ff75ffbd5ec863a4d51b9289da55c54d5e096f47e15d3f8a1d437747a4695e9611df7d3c7573f819c408efa299593da4b3d3ff8b9a9b236417de207b6d6a89c14cf855d24cb937f933bc9f2e4b7e456b23cd9f6d83e043549f55fdc8395cc17e741323765289b215bbbedef9c94e65f495b9a78846d4fcb0525d7a4dbd2dc7fab58ae897d9d6b02a56bb0d411d321b31c7242335597fbc8ca887968ede311f390ffb524cc1cd4beda2208b7df07499d25db531ffc1c547d807ed0cc4d5511b7ff6cf1025c9b392911cc49f5fada8678b1fcf66bce8be6addaaffad6cf41550df473f103fb3c3fb6f2f387fc58fc704511b5efdeb7edbd8317871f69bb48d6b58e6d4f589a240875fe35a8734e1db003beedb4d7ffbecf24a1db9e2a20f7510588540140b7aadf74e89cf70e185078c08a6260d1a1a7a88d9416d0f87852834ae162724a21480b2b68f0235a67b6b349091c0c2b00d0e9e984ac879d9e4e5a10c250024309ce3b9c75c050a2627c6f8c5a7f6a01bafd167cdf1f81cdf90e0805e8f60bd0adcd1850ac8df44d0d9d8707438b1d1010e8f65b40b3ba7ebad6f18f7efb2248087302a00ed81b02dd3e043e10c1c397cd6942d96902965af9158613f79e5a41dcea4f13cebac9eb3e72cef8b1e5b1f7ed150e4633d06ee27a66c24533dcafbc973606008380828e1f571c06a0e3922be9a19d4cb2b6d6447b3f15f5de9c7f449cf3a3bd59ec21cb8228a3d9211128c618e74aed91d65a5ba49c31ada51dcad6c81ed9a34aa140adb1b6bd7ecddff67aff60ce3109e67bade52248f4abede5f6ef8fed963cb495a60de47f2fa0ffc7f6f8f5bdfcade8817efc3a8c1fe3b8edd1997bdf6bda7efbddcfff7ab85b8320d1dfd4bfeff333fa7f7459fedc9256ea03aa939d9e52278e40f56b66c9da2958e6a42c8f051f2c31d9990e50e764ddb4416896e7accb68eaf47b866d140441b0dc09ff07fcfc21f8f94130b4e408dc79b75f2e0a676c56d5fbe240cfcb5871cdd2bbc24933e41f72d0c671c7173b01b3923a88a3b8dbb36a0963228cf1d16571311e62713111516693bf67366217d4de63339a3c3cdb8a4b36a9e7359aba269bd4f3db260b65a52ce5b0499e9e5feb34e940e948d99e6d7bdaf7b729efe7f6b6cf469a40e0388ee3f87bfcfd63b9bf07eab7c791e6882e9abc6b114702f51b59c5ba4886087ba8496cfbb4d6764ae75812d42b964e4f25501dc4ddefb5309abc6ce44fc50f1d5818450e548b7bf0d67befbd386fde3e7cfcf48633fe487270257e10c7311c4b7c479c7114c9d1f2881f70469c6bf994c177b81c322839d7e9f1c7fc7d97836e1f972978c3affc480d55340720e23323eeb8ffdc92c7f2dcff117b63cb337e051fac97da1eb4220816e7c3cf8561b80302fedbe3d2cc7933f73a7fc33732477690f3e57c395057380fe250e746c2ed756e25c6e2071d92f69cdbed77c2fdb7f0430f38a40428b07433d8bfbdcee3e0c7b90f6d4fcee35c79b318e394d4f2dc428c83737b1c9c07713a609c0fc9d0f2e03c1541e0e0fcfd101a7aeeadf821875382c8fdf638f2edd2e530da0cf875ca91a45f48e68cbf83ffbe7e1c728f15a87d0744def4438fcd6876e836c4e5a0c16ae8f6791eb5f8e186f33ffaebe37cc579f181bad8887e356e2481fa25739834759a4c12966e24269f32f89ac163f143586eb01c32e850bf0cc8de9ad1e43b9de31dfcbc07440e7b05286079e8ef80c839cb4343a00aa054c7068088d65a8fb0fc04dddca97b9722581e1e42d76958d6af3766d47487be8d7edea12588b38ebbc6222d7744b0bd36a339a29b3bfbc7b07fe3984500c36f9720720fc35e9be85e96d1dc0005abd7b35ef90aab53b8cf54876f87f687a1f861f8a3edb17df839db73fbf0c30ac5c5cf9fd33d075c070f1d589efcfafb2a7eb08103cbc381e5c939141b4dfd22b93f0c4baac1b7d96c1b36e8f07d1c7401050772db437b2a8c1ee037b1e5a17544afa5b9533f8486ae69f8b5ee80a0df667b2a8acfc5e764ed4a923acdeaf4c4faea31e8243a09fa869904d225fe20a2525dee549e8f5a1e12fa4e2d41e45ebf82bc34f7d8414b5afe37522431873124c79c8dd4550d747307440ea1e179b486febdfe48de2333d21dfe9b7fb69cfe8e2d41e41ddb6f07b2d52da587c6da8ba6b7c2b89f769347b5d63a1c73ba0b7f31c618e452c0e7a948a47a7efb0348c096b1be696f2e973af1432dc34b86bdb3d10c3bbe607b7e9ef758dfdc67ad2bce59dc83afed5abf49e6c6abd176dacdb0e3de82da47d84ed7d6a80322d041a8413b20e0a06e2f40b37858276dcae993866d31e6395bacc107c8cdf9e9cebd255563ffb492eaf43462d613d0e96915d4d7d6d6d2fa7d0ff6924f22d81efb574756663dc42ea0fbfdc71dcca2cd56a715560779b8932fefb72441e703448b1ee8cf3de70e62073fed2f30017ea08e4b11c62ee0d715cb432bfdb157a83a747b2541c33a60351082b9a1d36ae906cb437fec96c41dc491a6864ee9074a73dd8a1f407aabc5f8567bdb01a15b72ec58fc90b3979991a1d348503dabbcd0b1a2c83aabb674939f5553ddc4f4acca72569d5443544121ed6298491ded350cc3fa62687b20bdc7c6fb5be3ffc8dcf86534791d63dbe3eff104a828815a04ab9b21f6a12711a95e3be7e204e8e36a71aef8def68354577a6f360d05da7b71df57efa7759aba997f721922ecf739ce72f8077116e32858ee7cf0fd4fd5ff8da824d7212781fa26312e2f794f08c9401ade0a8a37923475ddf62178233fa0fd163e152d0082fdf6f86fa569fbfa197cad7f5731fb2fd81e7e002e19a0ce2d573d009d9e5bba7aeef4dc02a59b1b784828b031c6e4871aa92e6328400323b244cc912d1f3ef569adb808d6f52ac3e10418b363c84bca099622663940337404117a223475444b6badb5d65a6f2da3e6dc266333fd4293716918402fd2d8203212c5c9d80a15cc2644be38d94881a4cbb7e4f56deea5a6b862985c14d921036d0b061334229797355d4ea89850061b49220bcba1630b0afc4c1520392ad861460b8a8bd50c214a55c34dd056d40e13693546d79af866cb4cd593d5d4112edd84cd0a26299a04c1325365015b583c994ac14385151baa52d84a3b53060b57996f8c172a37d25270a13443ed015ed092babea471b2844c0e06a2148da10975a521a5651753bc9438530ba384a862798585a413119831466c8acad444d0a30a0b191e6325ae8cc97182d24a3aab72534299a55e37ce2c1c0751bb2ef0cd971b65f2cae9c582d18baa1a35c90a8a30499415283465c94aa2f60597bf88ed6c7b20bd104a1bb2854b596e05434aa274ed58b1e34ac554575e58fd2073f1a5a69af07213168de158c3630a0616aa355ca4450a4b5294aac4daf8e42f3d7b9d618634aaa51a44be1011a989c9c009119a3552544091e493956ce9c1246bca491a8fa2acb5e6393095c69acd354dcf5e2d7a9ed226afd0d48bc55658d1951869def03055aae4f830fba296020aa11e486a1aaf669ed3ae951738b5bc4298ae135f2eaae8909142ce8d690516b4583da93a31d79aebb14a75da5780285c56c2502d712293e2631346ca9616636c0ca9505b0015b31b5ac595423bc40c51120665c8279740ab070aa5302d98cdf0c9643de79c73de4517ca45068482f8d0e2d10687189829526e6e5450e1d16346571a306af43b4332d4c4048d1e676339630b398c9c29bdf9ea4aa36976cdc9d2967b47adb5d6373752204d474b522421d391e4a351f83aaa9183c597133efa4bd75a6bb1aeb5de6a7c701d1173034709240a9490a4a386d1991f41720c5c05091a2154e78ed30b8616aac2a0e032c6c462ea9e5e4ce05a4f97aa32497af460d3a60b5d53a24b870a1a5f5a582c58ce39679ed1546c012f2f90d0a0cad440810b062e516252b0c1640d47925a0853be74947961444a140fab7223678c968e2443c8a26ca441b58932c348888e28ab16539680d6880eac1658a2b6c4b295289be5602aecb53ae34acc16193f968831b345e47144a9aac886092a646b560a0a38594b694ac0b0f062460c04529630fd40e2a116c401325f4e6872da08e3f4d59546c4a21665284b8f18595cd46cde72b393a57b94c1ad582b9820a4840d1592215c0b95233bfa0506510e2d132790269a736526b019e384085856962a4b72706b8ed078a15a43c5844b898971a4028dcc0aea024792d4b04af155a607962ea72e287e25c5ee2ac2014242f646c51ab3244f547cf21315634acad0aec08eae96506e73b584729babc5a5765d549ef60129252de90126869033a84e75797d21943143a40525355268ad4063e82a49c78d264a56a884e54418d232e165e8858e3535baa3ea0429566a8a988a6a781d8140563ea2b0005172b5856c2d7b60e5491a2f574796a4d5a7b3e9b656e2cb0a5e5098a468a9351b59eb12c245480889d789e6a360869230b910933285a9e2621835ed006264c4c79a101955602898842c9da83225c69d32853b89367dc246c912941d519c7015518dd981163426660886a562ba80f93ab1634b8c2854aaac6022260b852b53d430517135d80272d642952729b0e0e2d524d44b59d2a4904089fa92b32485f3451b2b542ef81420196145ba4c594384090b4d428e2821f981c40945574ed99694122c26aa8871b1a67717eaa522b7e06a2a0d911b2f243a3897d71130cb122eb1356ab450a1d1a35ca698697a66c65497549b2b2062b4ce5a6bad75ce187bc0cb271ba623ceed32ebfde001c2465c8eb548d75d60fc1674a5036ccd8c152b3e231851117346450ac5988f2e73231ebf2d976f7581d96b1a6319e93917e151cd0b1022535f68d6ea092b4bb61120c132c5ca8b8ba94c5acd2f858bed099f12de5c4439070a0253e34d150b66b078f8e4aa184a3ca05630f2828d4f8ef2044be1507a7e5d8e9eb3b40f26a5245034ccd42814224bb85851fb71b504bfe0654b70a4609383c69a103fa10a9b1ca012685650c8b2a40209d55ae572d333ee9ab29897a34ccd1a0f154253fc4917193ee5c51097b1296964d8d42749563bd478996286ac2e51b1196fb85cb0b0c44d0e4ad37815396345c916295595469926a3c2448b2426a4c21459dbd949cf5c627ae6da72ed10a65a53cac29c78118615d4848a1a0690aa4b088a364c55caacd6c9d5e6aa99d045a4e7e7e5b40a240447092527d8a02d9d31395950ea2a0bbba2cac1826b1f804b88af28415f44b2766c6555011315a4890a96305c9e561c200c438daa5c9587e0ada78eebf4dc4ac2d94a598ae203cce4866e64bb66880e1b589e5cda255b26f8b9d582963632486a6e82ac49f5f0b95fdc087171034658952f9f8bc146069d9e52d04829cb024d6b3b8833ed5f6b6b5090cfd500cdf2b925bd196a27a102595b6980f4c91194b6cd29e54c81a631f0e5360fddbf47f76f92eda154966a34d99e5b7fba54bbe372f7faf6b45fb62c4a8a7edf9ab13d3a666bd0b4261b4242f574c555f5e573e91a205ad4bc143d39e3c3e79630f5a6dfabb57e77939cc5caccce5440b341f68425c25075ea2a0b4cbf50b8ae5c16dc1761015470c4ae070984f0a4dfd700073a300218a3b9c10828d2b0c2b270594104526acc8cbc88892d712552df09a50ae7841c271c7d42740ca7637c40513a014ae3bc9fe2e71c0b631879637ccb135c74fb1b20732605b5a12262c5c7221135e932e6a3480c13d6edf43c81e83e8d40c793f45ac293d20d1b594e464d31a893174f94a841514385191290be098638727f27b90d07e610177e589ae1e370e18338d2dcd9d92f7ed0e713b48e23cd0f68ff09614b15d8cf99ebdb7124ede2077dbb5f2892f76da4eddc03ca43f06de4ed22d9828a7b59afbdf653ebabd36e7b0f162c039ac4a8444c988e5ac90c250d000263160000200c0c874362b12c4d523029db031480097abc42523e124865a228864110c4300c83000c0300408821c01003a14152f1005afa437bcf93c628b1aaed63c47da03e68b60aeed5e95dfde6901eb4bbe1c0d952a512a1b4cb3ed44a2824d1724a3f07793955ed8de59144810f761d146c65df519e6f50c38d156d8372c5df4b3f3681ef88c3a62ec66365d18e5db82abac9b284b4ddb85521b366b49774f1c20ec62e52a730cdb12c1c60cd7971e6bfb4566404819e64c2a42015626733505e4c91d18f2a64f74247393eb9a49dc61890023882163b86434c73113e5c153ee677119f26b45c26c4519b55dd6cdbb0739f6967bb6e6060f50a0d923f9e0f34a93d401899a54c9b55b72ef2d964d61c93b3aab93d7e7c80fd544b715cc946f7c41f97ac6e2271fb6208b18ab2fbf45984a4744085011ae3d407961383a8035a942156ebde4fbacb0a46c0fbeba51e507afbae65c5a1482e37a30fc4b04f13ee3640a894f28d49b2a1819a9c9a09980fc5339c74a0ff63eecdc2306368acc23339061de50e084a65ce82c70f0e64dc488d617288aa5a7367f345c4c1a64c4ac19210da9da9833ed76e52d0a384e279457e6622a60a28a431400a37414085fa0dc76c4801083133df04a698594b5292e5cf082c4bcdf20d49daae3c527bf79a7404372507b78aa87d841dc6d2ffd7ae39993a76b1526eae46c7214481d093c3828290a57c81ceb138dab8764a10ae22a17ba9c0d584d7e96ca6146741f4748578628a06b2b2e806a8cbf4a4d0c80d93ba2c89b31e37a97c841dc62f53679d458f59b23ce9379807ebb149f06059be8f7b01f722317d3b1b1d69484d1efc183d764a8d034c15c0d1e0f8b1beab71eb6c6ec0b664bac3d39f153c508d305733e18bbb09715366288b34e380d42bfe15adbd4845f7bfe7fa002421f61737282314a9149dfd93a934369861bb4972b10aa55ec394d7390db84f795f14db0ccb8399bd6d303a5240e25450762600cb098ef13a0a0fc9e9252d9e87521a1f1a4ed04c5cc2bc8215f09ded0715a3b817caca4f503f4b54da76c36320539dec819f36e105142599e68b856e1c4c858ed207c5568129d7b64cbcdded3f0cd7b20a616c400edc23986db7a39285e2f8d68525e62b54f3f352f215143ff63ba5e6c7bc75dc272873240c934321651d239e84bdd123718363b8646973333a32f2843be212fc4a4bd3d09b50e7a4c794104b9c81463b1a490de227b58641dbe79ef8ce24520c08e0e184de6fee8873bd83d92a5a47efbb6957182888d4db1a47f143b9d1b44c6a65034a3f724b0236804bad8d7dc449c7ab2cd7b66e9c18b7c8633823c7c43c4cd36721a5b24ad149d5d5a42218666103b839b6f5f21251e14a51f3c313abd8ed9c5ee43df64bf137644323d83615c408b65c59e866c903baba712e62c18a05a86d6a365b21200cc25486a20d29527862842840d8189444cb2d06c6c7c40d9c0b462e93c49d698ee97ea680d30d3de5c52c80bd10c95ee008bc695ecc51aeb6a89206622a24fa0cb71f73f4959de39ca3e497be7ea3b111b4b515380e0c46ea711983dc13e25a6317038584aa51d05a96e6ba442afa6f8584751f0db3acecb2840445962a36f988fe257f87be064aa6feed144b2954f2431a7d5bdb129bb909a3b018055ebd03270b929551e8b99d5267b8d47113eb9238141954a2eb2f0d994f92f39ac1a88032bbeeda64015004933f098512e8a78e9d269bc8e1456477387d7f05f8405af88a0ea150e96a6aec5c0215469900f22588067f91450e044c5a30b50d7c32f77e42d038bc924867d12149626d5500656dcea961070109792d6927636267ea732d2b441ac0f7abc26bcc733c1c41c7984f8f32e65fbc4d7d8dc26ea45842113e2e25f04bbc80b5c66f21f32bf009bedcaae0f76373900bbe38ad1beac16f7c882116e62b82b98bd4d4d99b60a8803205d8fb4d1188442ecd150275df6ef87bd3a51be14011dc06c66bb2345df21f61c15e502595baf795a9797554873e8d5f0098814e07722c3d24fd2df586043c7612947375c8db6d7f39494425f7e0f15551ace3e16beb5b2042f841d71fcb56ec83133a1a720fca3f7207e14a4ebda68b32bbafcafc000e68411125e0ae611d56279e733b28b5330a3c6d812061b34e535d4feca2b10c3713e06d8dd15d26987b6e37b9e144e9d39581460d34da4a88e076c0b5ef867494c3db91ff6848f90e07381687730141c4169b65e2ef2afb0711e05464f204a56b92715115866527daa1ce3b1bc0fbe7eb00f2fbcb75c1b60a6eaa043e6ecf6b54bc8e5d80c255399c73a5e5db31fe6163f4c3b2927ca2e08604207d12f7c927fc70e8ade665cbfa4e34954e07c6a79920957ed99953eeaf0535c72cb29f2388ba3c9fcd9f870f57bb2c7a714918f985165b461a77c99cdc44c5467c364e26b4246dbc76a180386d954df24227cfcbf93ef429629cd6869627129d6e71a921d1886926d0a20fb118d132848241644550f47b45942671bfc20bca54191821f5da2e158bd329e8d32371d2b738602a114f1c936f894463fca187154524799fd67c570d9d140abc297a112bc8ac2c3d78b590d37a3695e266ac7bff21c5761681ab05925e76853c699000adcadc10c355d5ab19f11d16c77143f57fba158ffc003ff1ff831b04134975f6d933330062791bc49738589a008d5e04627a1b0af81b047b55bf2499afa003c2813c71ae70601b9366444dae7ac4756644972591394c3fd2fb036efabf22781edaa8195017dac053cc6da4fc818ba1c48e4036bcf9bc3ae945ce981d5232e6ebc6b222406fc81ba00b47bb687111df0d4cf1ca7c75c699658d53f8be2d0593b31e63d3df6c863b05421a34f700cb9563a59dd6adc133a881a6f47276c2c50a1c8113d7f3fd754a5bdf379ecec963eefbeba9b458c947e0204ac21eb3d1c60f98c081cf0f50e3796d02392a3bfd7e5eb019cd9bceb3deacd142cbd27fb0375e0170e8a208346e26562b10b317e08179ca546db5e122cd510d5ba7e87d49c7916674e016e909c2f600fb8991f7c70277238eb5f3fb6b06f111d19986e881ae03b596443aef6d3d867b3eb29ab7fed3d7920474a99d7db1f6f074636268228f4b32ffcf66961a09b6245b8275f8ebfd4a26b8d8183f297022d0b3a7579560efd1ff3987c7a2842d4dc679b7b7968e5fc3067f53175330033ff70a330d534485e996ffcee27807b316f7220649f9f9b9e84806adf4b1a363901bb7c21da1fbb97d7b0efc7f6605e151ce9d25e5b60b666fdb29db96041d92405396f68380a7ca69d1393656a028d3a2834f0bea4082d4f44ec6765d8ff34d7d88dd47b205a36f2740114b30069d4c0fe74ff18832c1b6211fb187c6c0215399c13e587d6a637ae53317086bc4e99c2cd3b2762fcc0fc57cfaaa40f9f5133ea55bb25f76b7efe5bd8957045cd56ffb3c33ed1845818f78536b7199644f93b74991ba169a522847cc74df75532cea935f143f8347f88dc07a4b10bf8270f4cc6fb472dcb2a13a3d4c52d93311523dc9d343476ebefb315753ac87cc83d3cc5c1400f1acfa4f665b32a56062ac5cbb0c3b78c09a4aaf728a8a504ed46963865719683d6c855f2e7234cdbba04a9a0caeaeb3fbd498ed43c295f8e23f568281bf5b1b3560c0533da52473ce5a688de00b625411f2cf3e8c73718481fdbf88f21b02f97e5aa54021875a7e651a8a685568f20bc05f58fb6dad2b37cce2118f078c6b00bfd0077344e9d19d38f7371845c9e017718d284708c66e000c19480d772b4a993604613523296e7b3cc9269d36a414e5204561356ac3db44f4916ecea4451aa83d879121073dede37a6c71fd8e4b3752b6c4aa7167d8bb8e243bf50e4eb6aef06ed53fc21c44dc5fa2169c8204ed4ff009f1a7ed39ba224836bf452acba531b88f85003d34d8893fc8c48ed030a91226c15ca3234e6b0d66fc62048f0102f1f05c8bc5ee0b1367283ab13b36defa4ac02166b149196c893e9d9afc65c107197b9729112c0aaea51e92f0d2c63cd8d9d980148d8e1c39d3dcfcc5d9e8fdaa8abd4050787ebc9e961cd467fe6f689f14fd28f62aa3deeffb84e12831523b64a7c3ada273fb38456dab97a99a65bb391133ca1e42db9f43bc090c256b2d112769fd689c533ce6ef4b34a2074bc014737a3d72524ae91a996e504208d75a5d783b99b504ccc58a25668a0ce66a42815b3d2ead6fcfc7e7bc52ff5659821d58fd03471da39a8a57bb0077dd9f0e5d194c01460394b883cbb0097ac5d884fd1322b638cdd6ea9be96ef11e6a658206f394529ab723444789b8ce49bb88f3d2daf9e7e9c1a32597ff482cb799fc9fc9af977b2127b5669496ee1de833dc893baff8cc06296308b2f1f65e5f125d0ce61149a1dc9bc490db0aa03637b63e30f7c0fe11bf5b7a8595b5d279401ada6889c7051cc56ccc92221662fb672a8422aeb0608c7f2b69995dfe75c1481b411ddab9ae3336b2df9bb778116c10fe8f6aec2ff448652ef174749e4351df2060fd70ad2b257721b00809028e537055a66a3cebd735c4e92cf16a18e2c51c70f0bda749edc26980130f7d46a048887fec08314873c8ee75a6cd69bd971c51b4b2924ced51aa8afe8bccf116ce2d63b63d84162f129de762ee2986879b9c802d944905740f83bf697dfc2330f7ae27098722afc66050be6e2a7efc49dd853a845eeddeec9c06d8a19d831e86760180ee9a3e83a58949a40859953d401d45cef3dc333a49ad0e7d7177938a9b9865e495802f48fe5330c16bb35253af89adcb6bbd0ebe261efb6f634d71d5ddd3c536f087cde94a3eb9e018e2c5c27c14899d103471bd1bed1e2c99a6496f4e029dd280cac05fa4101134ca217e1ae006b7a136ca215498341655496b13c227a67fb07a30f96cab5d10e7143d6c3eff1d0c08f12ddd7da639132679e51b9243848534e0499149dff80f56ebc8e127df0fb4541f2e00f7d3da1ff0036d18cfa7838342419aefaf16ac8eecc7d3595f4f1fc205ec9d2a549c7681997e9fe673452c1487a40ce82e3730cd5bc408f3ffffcf7926e27f3111b0290bb05df81e04b7461001b6f8baa75bb95d6cdd7f3c20d2b57a7cc8d9ffc902b27f644c1538019db7713c093167e3eabfd7a6f5d851a050b957398c55601a51966494ba1988218223a6bf00bf7de93869a21810dbead08539b6d7c5a91727dbab2073e546973049d022975a31745e8e8a2d89cdddc57755fba12387fc62be74a0b851c15809dfc3987f35f3c822eedba4ede6b3f907e2132fbed601d709a8a6b3fa620d27d5dc5c1c195e0226bb63348b1097c48751ea6c1506ff0b414dae8c582441ee96f16c3e50fc75b899232cec42a6a37bffc8ffadd58999efc4ec795444e642f28912f5ab7b667cb4411ed23412706c263440a91c3a0d650517b7f8e74e05b086c4c0b2f93749929ae8b20713c327582af94098ecb964397131702cf2d427ae3cb99ba37cbee2cf39c87a016118f3a4b74c540128e824dab403d9a35c32cc9c957dfccdb731b5e22323c9b4041b6b3c96e0647534d904f221fcb0d7b6c24096336c38028a84c033e3a363c30f3a7abb81aa75aa545817ed3395c54597db3a9d594f1b405b3fede6f3d9f95a31d8c5b1114fab0e78c4c7df41e8b04ca5681a9800fc042f048aa548f3f0cdf204339e706c19054a1f0a516f9bfa96820c1a0ee14a79c68404813a54e4219537b56b8a639be0523e562f907702740472248d702c1156b5e1b8df0b20bbd4c43654efe2ffd1dee4ef616e37c6be143943d18d48fc3315e5ac7e68bf5429f86420eaefe2cd4d7eb11a269a3685329c5eab80f4156df74838cc7364bb15961e31064b67b39df2a9215c24dfa41a87e92d3441f86b5a95cbd5e6aeefe4d310137a75de1f00223cf76e1698d813ad7fa18cd2e053242153d16a6d1c096b938fb81a92646348ee8db60747a5117f233fb66e84ab434c3e6bc8c4771a25caa7ac31cf7292c9adca47eef28175c1011551b1a20761c9932c6a3ecfffa730d28174af8231c20ef97205a43edeb6077fc2eac277401fc9c2202eb2bbe161331801a2b765983b6a436e37518b38cbac9104e007e63a5816919dccfebf8713648fb01c5e3304056c2d8031fb4dc21446add271cba0e56bbf507288ed9089f612989f3090d80668f9210e553cc3f73196972a6adb72e666de20f6285b7e0760ec30f7ccd744d8258f2b807898760dd9004e76291fa755486176444f1e20116f2d6435ce77c4f8e0b4e8dea76a599b9413b550fb16a050ae41b7c532bf5699778a9cb45669bd4e84d380a6f1fadf872c57c255f3f1d4f3a61c1015a76283c7e386ebc41ed643950ec88102e978cbb3d093d87a08f985f7c1f91cee777db00dd2d3fe3b346cadc64431efcac7c0f0c6774dc42a0b2bf06753eaf3bed667430e7ba4c6a8c64e483b9884f1bbc4f223cd09f073836ce2ec44a24f187c272706c058cd6e0e1e9f51345eaf4be60255349c55a12decdef141d14e9de09141922bf77e7969b88119f8b287235331b36d1362501d26da3d1f90395680775a15b022eb2e536752ae674827516e5dc84c8823c243ea2e357f99deeb64bb8bf1d6e7c8ddb25afb1e1164f5fbe4a6e07b85cd0fb0af7d219050196a2a99945a5fbaad238b7b059b71bcd29d70707d98eccc9e938f6022eb5e3c260c21431613a9530fecb3e2e3b834186ad5021311478cf58fd9a2e4465f8bd6265b097351d2743133c06a69cdee064625cf952ae44516749fad217a84d51f280a72836128b1ffcdffb76984b974e6cf5ee87592b361370a35fc2a5d0b3f559ba6c13d7c0a85982541a1ae093fc9641afa3d6913f09eb90f5a6c5d01123d04f71ac8a240284bf68e7f0cb2f8936b2b0b45ebeeb8295cc59169f11f8b6c02cc7f89566c6557776887e6865e763be496a062f31419cef3342d6dd96a2a9bba915e5f55bddb68bccb2f574e9d99125a9737e4f8d46534d0b0429db9d48b444d38b6415f851802d3dd55ced8330578b91f88ef7653e754e2add5af5e817a090e5b9db633c463ea81eee52d042f858698adc69408061d8d79433cdc5f6b33a3889a526bf752f4541145497af329f6cd6c84501a88b6e649c90f59d0e08d9ab9d34ee16b1d58abf8160efe58026cf232df61953614da6a48cb399bf83cc0b6fd1425d19873ef2d31c569901c3291ddbb1c393f9b6a52530fe10ca646abd564b9c9f03bf5d85dfef39eb3524206fe6e6559d47038af6bf500c41cc00ad9d83d3801135d491c5d0837fe0eea8c06eb8fddfc8d38f5235386eac4697e8d04704259aea675f26cfc43bb171dab150a5b978140e3c6245739713c0ec507aac94362a7f8151561501758744b55895192d6549c54fee057ea0feab91d9a5facc2a001554e31bc87fa52d184223fb2552fde4b520d49b1579dc680fb8738f532e3ebda944b0e6f694a5c08964f3e710cf498040a220aa9289d774e7aa01db573b44495b5e71fa2438b863201e6d797ca9b062c5b03a69bd524bb6278d0ce94d0e3b17dc1b007e536974acf594b23a98dbf062f0e5a101328aa2cf2bd4bd4f8c3d26392f639ca15fdfefe19060c0a941e7c7b331e4a31ca11bb283896cffe6c421504aa20549fb320a8fc21f7a721bbe316edcc2a2a0b09d520cdac948411f97d4718da179f50870e1cb1e2cba1843109c091ddeb9ad23252f9f7a9b53f22440a70aae79e6a8d14fec2a970a40ccb2686f7802788947a796c198cdc7977bca0f380fdd6ef84c134c9482dc17ab05da628a1067882b3fe9fe8c47ef8a087dbfb7968258214bcae972b5ffe75e1087a7c7af60fea1dc27fd4fb2cb3a0912987021fe06f74498f4c1b8fe84ac0d758966334cd75aefd266a777f4fabb32dc39389fa7b29b38a00c0921e670ad0f9a188ed2926f2e8518feaee390478119b8543a84b22932b33385c0ba143cf1ce1e441a7f3a215a7fcbf6a7470c5b1ccff9cc0fea2d1b3efea1bbb3577a542ae2b0255b892182ad0f441d919f4bed56288ef17131969c1f6cd4a6617eebc7740b0b429c5c7192b6360ed2908a1d7270f32ed9c65dd9c3cff61d93041f63118251224ebcd507fac1c96aa70530c117fa8e7a878ef29f9c58bce992f2f7d3e27d8016553aac653511a2483775066c8d06ddb277c74f32036123fc30b1ac4b363e286c78be3a6dfb3acfa6fd3365aea3b4baa6f0755751593685c0b566bf290428b4dfecaea7c8528384d83e7d1f32cdf8775b06ff83635a6a7cc4ff5bbb414886ab09a0e0f66ebe9f6b6fe1aeb8582aaea2a53225c681a649c3fe81aac74ba5e8204b78a6c2db7e87832af5871cb4c530c9c23843c64c5b7eb0d0dd908cb4c061ae05da2541dd20bc61a921261c6944007c8332b17f3e6ea6cd409dbc84274a1e9da0a2e577853fd39fc730769dee23376cec04998d78eca88e9a8c5cf6b46a145248602f07d763b1575582936ae687457368d5196ac793bfc339341611da9376f6756810ba55d7a55221033138807fbf7850cf0fe73326d37a7174246bc908e61a6c29363cd4d9c90b90663f1760825f8538607b31967e556d0e94c95e802f6646acf90bb32ef7ce88cda84ae33060d436258a409424d59ff790ef3ad1c8a3aa67713a89f0df3245406d000c97dca75a093885af12f57135dae14d0471b0aa5e301d0459d00946a1329b0c869c193380501a56d87094d63caccba5c228f65096d66a8f387a2e131d6fdc7d4c017b20a4c79c43c63a76bfbea58ac2532b73e31a0d417824765aaea25444263879bbaf48e38ed9720799a245349fef8437aabe5d97904c5ea5c06aab734f82a63ab29499884deb4f0112e35af7abd474e93798872e010ac2351aadc8b2acb37a5295eb1b71b450d1f9f3810488427a067700c8814fa7281c366709d700f8f29e379b9b04264591a92783ad86c24c2b8e18f1986f1d29e47d16a68b4c16d36920ed6d8f14906f1eff1bb9d8ef43572b1d44674b66d9bf38c38d90fc441ad4a979d37fc35b3041991b2a3200be55adee830dccb55e350c3e125f0b60ad139dcf40b6b2aa75caed6da70ce5d1042426bbd237186e9e86f49e99d4225547c28ba705e6f933a9645e4fbecdefebefbe5d7ff4fb21f9bd642ee5812a7e66a977fffd1a24b5855f80cbf31b1106af611c9367fd6a30a05531b3f92546e210596d2bfbc2e7224218a8bb39ac25381bac4adffef47b0e7b137417dac779fb7e350092fe506050a43dab17565fd3b52715723a75acdbb52ecca690c60cd440d3e3e12790bb7aa3dca00d94de6aa639d81c1430451ac0fc8176e6f55ffb13109b8c6bc701e508660120adb0443ccaa0b0e841046ed4fb759738b31fb6004f9a11659035fb7e3933745fc92cf6a52fe445afb1b9bec0cb1838f92b71bc290db3a7cb831feb4f016c72d9f28fcd60fceb784cebc9e5d7d79bf028b822e830c3a47ecff086d433dfa361561f89a311324fc455425ca20abc6410a1788eec58860697bc06a9074d009bf6a1a137ddbba1953883f83f1b3cc83994f11d9fdb5f4682de8d9878a10ab78cef22b516f6b269e74d8ef462a1920ca43ed2a5e41314475ee016cf07a4d9aa6c9390328abf505caa9f7fa5b946d8e957505806f70674888163c46f974cd4572f7c9f1067b94b26f03668fa16a2640ed87a3d99886ff5948ce9f887b741796bdd2127204c6fa4b942cc4675f70747e0c9d7d4be27d8f46d664edf8b5bd788fa0d424b865d1471f9a7f3c3f99dbbf50537b4241998b9feec9ad5542a28483fe6c95fa427ae073ff0d8fc8c78b8006db95939f917b43566e93dac3e302abfb3ccf526fe3dc6678ae56751af5e566518cb3de3b885e8d6d70d172fb36733af62767e7d119bba63f275880a3142d94f32482868d08fe90c240433ff100d8d4951c99fe7782387d3bf4f9c6ab855f6046d583c6108b41bd800b709b67cf0649c6b3d07546459926cc968963861dc857e6fd6a5f35ad958e03e1515bbc50024b70efa4d6a9432a494c2e8bfc06986ab56685f04f64c76ecf37fa3ee11c363a178ea534e190f597c6906de5c0f11ceeb4df3bcbfcfb20f65c423624de6d6cda41a00084aeef6983763931050632c7d5a2e89a31fc03a4b23078495452c9243136eb1943e4a5be0dfc90986cee848059b99c9ba67d006f8a01b4b796cddd21c9411dfa4b6170fb2348f90ccc7d943c2913093b11799d628222de1aeb43f570c5ddb729b8fbdf83c7dd3e89b8cb12b56d9b07072dcd94a029e3ba2a1c02c1d00c15e9799e1d669165a1dccdb83903ea435460fb0940043c759c48ef91194ea7b16adb5cf6bb143edb0f1e33c92c78bcb82c491e73ea28a2c365f7ba5228ea2d003a3ee8ffe835d17e773a65812a14b84441dfafbe09c02f92e7dd1ebe19cf0caa2f160d1abe626bb723730782591026e8e57077d61d51c92ce4746a1e7ad7ece6c286d1201b5f9dddd5485d8a6ccdd735a6f6353378de061f8c2db6889305668b30ee620fc411bb0ae6056098bf2f823d75d9cd93fa2a98d1fcca349baa1b8f9a030f82ebcb0da77c050131375a0bfa960e2c85194469954049b148f0412c2992fd29c9be37e08d6920e91000136a16ec6738c9e3621152a56d378bcd24801dd78f57390a2296dad3ea0abe025074ed085617b6744f52e3cf8920603dcf00204200cb9f27aa5a3a25fcb65cc022873232ae8e2c0e61adbe4771dd86d9bd152b53133934c45dbef0789e17b9a11f205da4809aa03afe729abcd7c0cce40a249d29dd3d90408e7208a052bf08f1511e6e0e1a6d2b223a935eb0ef171c4504b5204744f44458ef32f8238223c174e01600c10a9b5b387cfa0bb1ce3cb471f29294e42d86b6727b7e541e2c87741dd1296d4fc657be9ff2c34acd771eb7bf76c69a66a9c0c5001afd320e7108f8dfffd2f5f70611b3a7518ca45722fc39e18505be2edcc4e5ba1fd10a976f772b4578d17a98fca5c1dc86d7934589f32178351750df27cc5b6b31157340598287a99859a0a3d2c4493d11c7684c45ed3f051340e3cc19ba8e8c419953ad5025d127ca1061f0059cecd41bd3ae4887db8961ac248d1d8a2298504edbb326ec94c9dc8c24446539303275d65affefe0fdab56d1609bda3ec43b92a313d02340a0a25f1131e7b5c0c34373fac7c0c33b8f919bd5a0c076829e5a49e4e137d404f699b5085aafb0dcf3ba2c48a657543a43af0b2c46a81b2079539f50da24dd3ee10f002b63e32d4ad297f2cf7830c99a51a8483b97fadae0b36e0d2af28c716a0f1340e9cc007bfd6bd96c769325047630677d0b633c6889fc1fb5f6c5929aead3c694fcb82a102a13142ed4ec4915004f033b84be070ef6d5a324778cb67d24d998837818fa6f807a00388e28c42614806043156b6f58d3cb7de1d33dcadffac6c0c1c52c5e8b4d3abce4b492970e4792014963e8acf76e0c385cc7ae67bd6d99f44691b6bd5b29bef3a3b6f1631b5a1beba1b512b33978af6c7b1524d566f043425b1e847fb2538a28ad3b8bfbbc300a4cbd817ce5cc4a631654c8d8f250e252f8df847ddfae1ae36c5323be2070a5e773d231ab7a5e632d3f7b241277a972d6737d2e78cd4f282876b48c3a6368cdd4b03eb3dc6b7aa11b5dbba6d470ea20e4bec834b3b859c77d16361abfaa490aeb2ce20d220eca6176a2d03cafc252eede1449a29c96ff667aa3dd3afb3b60cea11ed6aef075f4538a0d86e6f98771db81b5c6438a7ca0f5e0f6d8cd3f25df35cbe812491a8a451925e16a0cf5593c188a019c4b49e7fcd4afb2497a811771590496004ad3cc2b3227b0ae9c211f1998b550ce779e8ce82b065da3329a8c214e247883b993aa7f27722375a86348c407c718598944641c6766ac625c7f6e420b7a4a93bdadc6c4edc5cdd2442adae21a93c467c78ff6cadaf2910aa464c07e3daf3b72c8b5d553ef3ef45bc9e72053d4f100012f1e9b035794c360133332b4605079fa0c2ec9d1bb9b1af4389ce9445d02ea74ab2e6c4b819ec8bb4e1b485f86d7c437c8a5f2279a9bcf76b5e301d7974ac081e20f5a281ffafa58057fc08ceb5c67f33953982d4061bd9ba086bda12140abacd66e77c15bb49855e98eb384a62c571daa561eead389553cfc3cda2bc4b3f22561cc6b21a6cf87a72c3e3289ec1c51726b2818d8c977862e906f53f13604a4fe3c3ddf5e3fe6e6ee0ecb39d81c0d90cf47fea40bcf764192772123588f9efaa4c6f6be7d793c8e67d727f99d5fb8169df5ab4aebdb9ec0c0db3eca9381a449215ecefbd19aaf47f6ea2d20db9c4545e11360a944a4ad119ca523c3f340f83e6f9b2eb54db2f35633f82159e9b6a672bf692aa487e0a1caff9b52e4d04dad57d2c3b53fb813b32430d862ad40d47be4bdec2be0161d408e77010fcc7ef78c201e46118c12991a2595de231af1a4d28b4aa1f00b7a102d785a8be02d5e729d9b6f4fafa66e07b82ce8b04e42cfe5134d6f82fb48e8494610628c7d76d8ea44f5be72e38149f1251bea74e31b1e34431bf38ed7990df0fb3f6c9676f49f1cd5868718e5075b46b926e7c360c16964592aea9935370b31475b5c429192f8b5f0036f13d3c5e9be1a699f2896fa8c5d6f1b0dc12f35a3c267f3f291e20d86aabd0068df32e132ec2398777a328c6926a9dab7870cc6dba5e77e7fc7a1f8a7785865e042be82928c0d10aea15c72f42375eba510a3655ce6d6ef6568d708035da6a029ee334c48175dab03a7bbefa1be4da63b1d2cb57dd1e208374821898bf221813a59f2a4f243dcb1a41f707f7647918b4c7147b54ae113fa8f405f7a4f15522f2f17757afcee1c372d42fe6a255559588602574254187c9488650c5a6f7ab223960bc54a7637d6d8bd729afb5d86774945cc20381d20fb4ad7e82f7b24bbb96e55403fd27ab08dac1d098fe4eed86ecdd9c34dc175479bfbe93ede912df118421423aa7da77f4373379246b2e699e0c557ad135a6697fa2044c65edbbba25f7daaf82e883848687850167c8de15c209afab9a1bb40cc4fa5b99d0ba94762239e01119caf817e110b6c9ed9c98cb433b0ca4fe7bc69709d4d8d0112fb5143894ee92cb732a36438d0895c1a657bffe7fd3592f941d685d93b2e27215e38ccd659d4c8bc1e1101ee14d925eb79dadc6e3f1b2924cd2bcebcd9178f16f488b01f563f073046f190411aa80e61a3bdc962546711fe0e9b41ac2850fac6e7c3a7a09b8ca305b9acfb987e4c1248b5b3979b82402c29ab2afa53a4db28f20582af7e154da3c3b95fc03b233f4b4ffecce4942d1e8ae395454075e57f5580acee44007c0e1522cb2f7f90f92aac4597a308e8b4b6e0efeae9b822f6bf5e5c00d2e40a948b697902687963b8ec0426684a839582cb0b96042c8194fcf6dc2250256ed050ee2b8e6da420a4c04a64d352ddbd51ece4a82860248689178100f6e9cf9b7e3f00d2432b0852e8392675f7e8b01b2b1a1808a8216b17a64293a1c1d0c158d7238ad243a3d6432024c4ae512bf04148a3085e81a95512275c7b81a94a982e4e942f90b97e12e6265c24185d7195603e13a55bcae45945b0f55c70ba1b25cfb676152a905f09026301ea8b4bfadc52bd9eb73dbd79b331fc4582cd257e810bab5d6de3a69fd22cf80f81d1b8c0e02db709bf1d363e2900ccecda465f083507905dc781610e60d12af66a5e628fff57a36386e73297880500c7e05a7bccfe970052fe1211a00b4cb53d00e675b03b2ef6e25505c5908911e07a2037337f03bcb61dc0e30590465145671b00a49e22e5b3e550fd7412694c4263387df5d1dc9d799b527a076ae4fc670006a43971389492fa7ba8aa4707a6c6f0a88f7ce2ca66fc572f40d47826e36c7f9a12b4c34a968fd80079196d80165c7ee925e3a7ef278ffc0bf193a3efbc34b5420fd5c68b883f8e61746e96d2a99fd0a4c28f4e514631c1d4fa3e8bf5e356e1ef3ac8ba990b6e241a75e6c412bcb9b861dd9db8c836d69a5d855e7374ac2979cb1e17570036049faf59b6bd0c0da350ff1a1822bd98d45bc67537413ba15f0f77ab8ba7f40f9f3f7ae35084a728d020604e0c3f7233f50590e25a70670a0f71f6b831ed71325a95ac40df9b47424df50ac37f9a9b4eaf3941b03b2768ce80933bb474dfa08f24a9701a95452055f4d204b98b1d532daa490b4488d9d9575b0552fefb0f4d4e84d15f31e662e2a94046d5e7c5a6e66995258d3a6a0382f5bc6dfa6efb12a2f62a408c1869a866175a91784b375bbbbc4b0775fb2b34831ced388f724827999dddb5aa390401f79de96c6b3869c7ed2d27a387e98b0487fea8e931da2dd3ad3e7b4a8e1f7282507221d83a039f79e7250cf9407b2d1d79e3e5140260e5b04f214d485d542a2fa885a0a8a20768198e0b93f3848523e9f7d8564f7b16b2d4f7469467cfe02e230b43c721e4c5bd771bd65ad9629b1abcea5814c7be5b8fb317758ff4e2bf3928b1b676aeac4e006c9526ffb084eb182bc667d304e110f3b53b48c61bfee40548af7f64ffba106302849c46f5878666f565ad2e96886d95c2807212e8ac3e22bbb92bd686cf4d922fa227bdb8548468f22c6af048453738658453dfd295062dc4c34b0c3f03c7623bbef8daa991cc3fd50dd8da17cb8bedc7ff159ffa8e60cbaf9fa71f86947d778ea8e12e2f8e104eac46c68fd5c5bbc6339e140cdf107792728e938c17f0973ff687a16f5c5118d7ac96c22dcda14f99f0a73381d7878eaf4353463671a0fde0bcf4e2b5090d6a22171d352008bddc5111227bdb6b2074e8ceda8b57a2e4ce40122c77606ff77d8bf7df45539735a54c705c63e8bc77e47557387555200175b1a06d5098df13ff2a8b8ae14b4908eed146e931436fc4bd32377048379545e7cc4e9ce670f7f5a4c69c89403547554e1213c6a69b9352d69bec44b31719c94b25fc1d72c10a6eb657e4a0ddd6c9059ce65116995575cea10855bcae7c6cd07a66dda32a1d4868d5d517a943645e3445acdad2928c423a420dba8827e5c2ca5f254d8ee00a205666c6220601036c2b95738a3c318049b8f5310910a7548cc99173426eaad76de409ba5cf5e086f2eed6fa3984e8fef31ecb833a268785ba38d38d1db0c363186f973227df7d5ae95b59a5b3f9e9256e36d814c9277e3c0c61bf249a88ed65c48a4bf853def5f2fcbd6e1cc97a0a934b795e23f652993610784ff7a5fcadd82f61776e41100fe792457637ae4f14e0c4b97001f01d3c6fccddec4494c2be46405f5c1112ef55ae969a7a9617ae3cddcf16aa9cb73901a6c5b3217704b8cfa3a7966367c8104984e358b4c57d4e4a9fe020fc70a499cd02d7e54efd3e85b476d20d91a523b3b591f9d811a1272cc423616fabd03f5f29a33eae8210a3163d29dd943942d9fe6868acd6e2860163a402b43afb4337792a1902348279a0aa8caae38eb6c5e01460ad00b3d267d797f658dbfc7b6f21ab03d29f349edd441cbed51d94ad1bb1133c6411c0cf2c2f79f24ebde0f1bfbeb421e75209f32f06f552314939974b9e2acc73a4306712559cbae60646d5fbf51db6506ef8b77043d6dcc1d7ea1858113099fe0a41790630bb4d67bb2b1990b758fa5657fcb495b821a2fcb443172f5eeecd65cdaef2fb38b809bb39724d06ce4f5bceef031fb56ad50897727498d8aa2d7bdd1da5d48af7fa31124a2f76e25d1ea909b06416f3c7a67efa547ca5abdef5fd4397d653fb0369073205921135b6048878fca96bbbcaab73643b7b135281992f213a0c6e80cfc2868cbb079f63e9b3f981daadb70ec6d35a9d3a87d08b580cc629842fdca6e24751c7cbf48c12e74c25811b59838488d7bd1ce4d5250994cbf406611532b6e02601b34c67fea7f220b719c9072dd7ee749cf36bf5cb4c25e086b42f1dacfc17df93a7eba19d6986e7b39408948f6b1e5fec293e044f476604bd7b621067f69c55d0b8d9a2060e92ddb3f1cde230d9ec60eff451c13ca40f5a95dfd1d893997c807a78d49f7474e9fb94c2df14a895c1f8362a38e2ecb23c5d9cf041ba855e735240b0ad91380bf6014ec4dd48f2ec3d96e7b6107d5bc238285de4c832230733c6f0dd9b9be2e7cd498f6162f230230b37fbd63114cfaae37087d53f5c50ec7705efec42fd056a9d3027f5f4b889f076b5616ca0354ed3a1ca9d9c75b0344dcc17ac5ecb0b1c94226d6ff6a8d90ede4ea1209979ae13de52e842d8136639c5d7b89589b4da9a27aa17828feeee3d8e3e2fa79a187d040da9020d86c7db8c1bb1586fd49449f0c4cf0f75ba3be4881b13ceb06b09fdab004377e326a5c24ea9ece14e29b7acd6b74fa9f319e66c7de08aadeb63e33a9bb94d981466c7dcd7b0d183012dd37cf295d6a350ed2294bdf0b2d91185fa44931c63212e00b262a9a58397bc8f7ed323c756941a16b2e4bbf0e445a0474d4b980a68f6af19a0a147ee82098989b5ef4698b4bfe4b045117f10733ba5944c4ab16200ba130489e3bd61ef55ac0f69938646ad40c088367fc3b1f928cd5620a401b8852364f4379de26e20d68c1c26e9bac9ab8361f01078e21fb01cae48e0338c3863313e0297b8a5c424db5ac36ce4d50b7477d6129938bcc16f97ae6bb855272e880c8bce9b2533bae4412b99c164bcc89b504289384ac7250ad5230df3fc1d927200d93c47d149160a11d7b719a7668e05c09719fb6d8628ee7e2c3565f68746b4bc79c688b309398f8c863a73d288acc8639bc7a3f279db521d0c59b860a7f5de4d6d46280bd31961d4bb461264a8a468b2b372708f5ccf09d5f3983f28b158121f9f477c91c25cc694f2848f6788ea1cda7787ee29413c98bb11237fbb59f068821f9286c74d9d3b2e6d165ac65ae4c8140b265b78d324f26706b7423875672c46c71c290e071a7f4ffc14ff0ddf3912cc37758a2251c75b3a3ce100945250aaa7ccf80557cbc431c3d108b9eed447d54b49b7d0ee3d84d3542075cb70ba37a7577da186c622433e30ce33b84e60425925473b61eb50b7228d46880d141e1d71c55f60cf0855fd2406c1a21279f9de74368650b9523a53539b6a356dfaffa331ce794a190bf8dbaf5dd77682cc26927a298fb703ea62136acab2961f5107bae75f1ed6e2e60ef55471f850f87af92d8f06db07dd7c6f4fbc017f6349327e77e8b50d909b966904126ccd12a624aeeb73bf859902da21b42fb010e3b33e786129c1d4244b6765580f096bb4e5b85426d6837989dd91ebb24ba88d4c7345515cc3783dd0dcd86b1528bc33b13e3852e4e938b4d011b3ed90779b571967e72230e62ee6545c7c84ca20860824d6f98de7ea59b8540bd425f913619bd472c6e119c997505e16abf99454e378e9bbefe3a8cf4c4cf6116bd6f1f770face06098c9c3c9cc75a99de75d73841d65cbfab5bc82c299c43b11b63b19ff1f63d410c8c010a2a7cfdac03ad8d9cb1b8f40b29c18b9c639b2cfc250e8e6d51f8e1df006cd731d88455d86fc577fe9ebe8b283dd2160ae0dd114a2d5e7a31b019a8afb3e8154e559521b5022e75fd1dc96aa1590b6bbda799f4fa506063d208b48dc5c7178632779b7a152c412372529bdbe834711b7b64cedf55ec3f41583ccb9c733c8b00f337fb5d6b7af0fa212e90b45c26ecba965da6ee8223faf877451e1a6a37f9db33657693ff93019c8405b53d500c52d18ac1ce613f986664385ba9aaa812fcbdcd526a6aceaf67daf745b2f480995e1a4027e6fc2209ee1a36a9a5cbb2c718ea1ea5424e73d8f6229305126a698305318132f342283638b51611e4897ad5d8cc4f1f41a415dd00211edd241465a803328cdabe99a9d2a62c386d5c560d1a47e69a358c3d36dcd42b4611a6aa61ec9991f26d5ca74a616955e951b16a0863271c0e1368c33dfe747d1235540b90790c4917dc553453f5d1b3da00e85e7e1f65bc9cb9ebfb7206165574c2df439d7c3be1f573acfbe41340588d8f373d00415eea2d6f81801b29c6887ef0fae21452426812ac1010862661f26510868da1c809b3284ec3c988c64a77cf836c2a2e60b5331b80fb4b7728831fbf5f9e858ab64200829075f9f051ca1b8f0be66abff0e34097e21ad909c1f27fed0723d406d35bbed6ac8a7f73e264add09e19316eb78a207e680c23d057f756c2185f071b75956128d0e70d8e9f08ca621c014b3b129646d557e7296905fa7f2b719f38cea06b40a939bb1802bac84b12ebe54e392c5534715a65d4bf77bce9a36cb80f4203a907d98de50887a8de2c7641d59410acb9555893e65f4d225008d67aeefac82a65c2f0f6f6e53f9e3c899d50d0080476094e0750efe9cc0f5d06240fa0f63fe915ab8000433146ad13895faf1ee55e22299cc4b48b8afeb3c2154c45411b02617679369c9efb27feb40547ce2345944f29ea8321a01d00af345260fc859171d5b756bea44b4220e669d0daab1916549ad2d69926a5a2dc2d1d13af9b1a3ddc0c4c9188709736b11cca35b050d2465076b51c24b331ebba67eae289153edd5727ec2d09a465a1f29a3f7167aa7be6c11b805118ab1babf60928eb1d00af7218f5f99ff47705972c3a13020c7c586527c0bb2bd3ef6b9b272ef8c8d795f6af311b9610f30b3066dc1ddc12ed2f5fc09cab3a805a3011256e5eccbb81f74ed34e367dfd6cea4641c47d838631b5b2ae7e1bc4bea8639ea45761ad81c87c3a8a4250ae03f0c8ebcd588af9c042c87e920c4dc21022a1e8300b221a6e4c19388ea37561dcfaca709b57d9d73f31ce1828b538808190bb1c5c673b0a7be92191abe6bb13477df24410abeee7d66c70e1124f210b270704144119b5a947fa4788e8d68a936a5c48a2f92c560023b0800197695d9a59367343ff2390fec71ed5ee73073d550ebf88be830696e3c2e9d982f9879b9b187e2829e1203ca6abc8bd7e7e111bcb778aa0af26b079c62976730b9dc7054d3b070c26c0dfd4d6201156de8592276ec9a87b9df18bff66a55765492843989bee72cda3da3073497962088491faa76202046322868cfa5918bda9c71b4b716d0852b76281ff094180f5b614629c9e0358c855704fe6984c731f6264330eec26d127be00236bb6ada9d961211527d6108caac71c6ce9c7e417606447dfa18f56f932c7345af5aeb695f975ebac74fa48206b5c4431d8b8a951c04baec93b4fdad66797f2864fb61bd84828605def408be2dd329be15bc65bd076afc1964e7a97db1dce304a9b15735ae4fe1a39d07ef7ae6b6f43523da90e01c9faf66d1464d090127b3e44d5b3a1ebe6aeb5b538cb3681a9409a0a5f522fd05151a9b31ab55b166292eff1450814aff3d28b88b4507193172496c6b3c2837fe68add7c31b1afe56bc1445b89db6b557cf3fd10d2264ac5f50524c4dd7d741a71cd212a1fee8e2c5cd88f3733e1ce27d8e8d7be479b52e3050d6e1f68785e8e0c61d268f145d607bc94c1ac4c1d140cd8722e9343a43ca1221644e2864439b92c01550a420748852249f1289c31c668e928b103acca0c6c4209c021634ddfae0e270a90316898a0050dbb2390202c07c0d8105705019264c854209e8383cfb8308bcca54204301e10658d5c0a0844a6fd79e8512c208c074e4bc1d90cbdcc0d8971725902ca0f236a21416156b495172c4258009ce64640126e8472c5e030aa86a5078707b260c9e18414dfe24895920c0b2e73a4ca061ca2946684c868491ce31212c4e04175529809e110328c28e5991c8a320445e305e0b05823a3fd99108998a1e38c0d269118d4725224a2d4e40492e7a60a0702c638206c060d97cb225025216ca06921a4140fd55e4e32b07b00cc420859284c9ef63241853086ce906b0f3cba00973141190c7d25c4a21966888da15704383a46ae79b4109ae8710e8244942a4c812c6f9219cf5ce9521813e182311e202531610a65140e0304e2ad7c8c88280a81076258b11b10e5c9e424346f44d0805009e2e021311654e68a2061121c19ed0711b1a084108fe218069622e8245a8608b2089b41e30c035e1158084c848588b990f87bdcc960ef01eb101889cb036dd307eca3f08f94a6e0731debdb4b092b0fdbbec1a3acfa6fb7508362d1b2698d0cc792235a330e7b16e19b15835b9d88b41a646f5d98f66cd5ae65c3168948201096e009b1cad483904d80be7f51abffe549b2c5b2a49de614b5eece5ef07069fbe59f65f2a27268a788b1914ee80ad655571e2a3df5a878cc5db716330ea29edd71bb088238ae4aaa04ad64b4ee060076bf46c5016cd6f40708d7d141a7d2ec6d65a44b5a1b5c3d9d797a4e7beb06bf3e0c36a46cb544f1649f8c629f102e617355167ca16e230a0654ea17cbd476af62c35426d53061c31c959f198447011b7558b0ed675b921b4872619040db4190ed67bdba483939e4ca8a6ef6a7cc5459f40f87abe0e22517ea5d127a83db150a9fe7f50c8fadf2bacf78f68c67747fb51bbe9c10efd2111eaded49dc065d7f74c476e2ae0a89e390150cccd8747e95603e1829332b12538644272d7b51d064a62dfa0ab542f806520143f4c5308f02befa7fcc16dc9827fc1ac5f27dafdb5731f0e6d18aa76d99eb3b03c7e9c21545eb1b11fd611fc34c0321986eea13b06e61ddc4775daabd05f04ca4623324b31f984d31885d7d55e3c6ada7fa01597f7a57206fb77cfdcdd1ac1a060623554761e57e307b16356b9f5a64bdf5cc449e533a7bdad85de86d46e31e3afb1f139c1ab3f77c95bcaf1aa5f547c48e8c6d424917888656420f19de08067bbba657c6b7fe10cfd55682b9dfed9cc02cef9a43cb5af2e0e7d903b800d7fb0bfbdba792032240d6bd464f292b845add94406efb5c7e61713007f2884b27405480260df2a9a4d92376937e43a75c702ddeb5124efbcfe2fd4f187eb4ecf64521f0da1efada56a4057b9072747ac430247251f929e1a4d9cda529bd4f55fd667e29c83689785445a90a4a080e53a7c763044aa1d09dd8e680a88916ac056c9cd85e77ebd4f09b053fde5fa0bb0aaab839d1708c137359b0b8b1ca779af913754bfb0be7e4234b01f2fe06c7d9f65c6cf8003f4e71de1eae79af51f070fd5424511e10d0d362c21b59f7cfe2cf1671789cd79b6c5f4d98eb6698b21b7c1d6d9af3f38d5ea14183423e272dd3e900e668727e62d6493411a9ffa8b0882edfcf6cfc3c68750236641c04ad4fb1e6888f5b37d694e7309b8ddfdcbcce087fb42b2dc14acbd987e836a37788931967d4ce1d2e60b617273f840dcfac78b7919dead26baf8a46c1050daaa9762aa5896fdf0eb8ba1b55505dc3b4f8a1d39781b1a7b85242382423b6b9d0268dc0620ee377e34c79e675209c565ccad3a2956f904fbffaaf8dc686041b54f8a833590c9c282d9e89bc35ec5fa9ac73a1076d861c8fed13c0a3c77a27daa554561a9d9c22e970c4f8b10553a0bc957dc2ae7007438ee9edd65cc588e3f789b9f5974593635b4011c75c864f890df00227940cccb38286ecf62f3a90a221feea52c0e6829999bf2b6a0388ee53e4ccc10ca12784dc98c33c656ac8b54ce7e2ffde8106dbfe60e4ef37c2fc5ed4061a7531638b18c1b8267c6b359ee6461883e0aa193423c3c428a1a09a6a864963e51e748d565be92a08c3cc3164936eb029569abd6f9fe126da879772d17e90f72f1b9f8170850a98a3d4c789e49433445b59939abed62c865dc69b08f9ac7e4826ad001b379c8a2b7e4b84f6f88cd2d97e381d1082b40abb24b8b4214706b7d227d123aa0556ecfdd2adc380edf2e137374bccb7ecd532a8a61c0c31e1d24ba32299139e67b2d2efd164931ea7c80b628efa95c66bf0b461fe40a5437f4fbe7c71528a86a5ca21e68ade8485ae4df583e81de69f9b181e00c5ba716fe34ba083b7ffd58e10c0032ca463dc1b52782052b6181e9b8c2ab39e20d17977eacdd1167e96c4db0dfa11582bb5923db0b9f46e1e7ff1fd7bedaf01e592fbf531bfc4ff19715da26555b051eace9efff17f2b7e65824640ded0e71aaace42f0583271636850c9caeef673977f06fca510b72e21a0746deffdc5fda7b0bf4463aa60a0d4baddffbbf4f7fd8be5b7fa53fe77ef07e87f0262254db3092096725be1f7431caa442216718a12fae2445341dd058cac27c3da215d125da1e31877b5d46fc0c8544241b0d0d812af24fa0af127c23ffdcf8d7ffc4c06256616102cb55677f8b9fffff77becafa1d725e5b5e1e7f73324d6a24d126bc078e54539a4dac734c624f850ec5a02eab3855a5e400cca9236f74393eaffde39dfb5c7be7ff742fe4c52dad950cac66ec06207391b1156cd62e3e20eaad44fcf9139742b5b09d0bac04eec32379a377934eb3b0992221f662050e6e52ec4123384c6900a05fed6bac9d68808adeca595dd3b94057b059c0534645c6738f04abfce27bdd6fab3866be8b5049d42e6936dd6c87482de100d2b4540af93d28a00dde9bf59818bde5097b9be0c9570d135a434d6f786680bbaf52ac5908d14439dd64ff7dcedb7c10e289472646e04cb0916905594950fb76487b8568e5c95b811ba026596139716b180e039755751ea145af974fa729363f58c74fad2e26e3f163a70d1850248be984fba8b6133e154c0114191a3d39f4f2f764f9dfed4a06ba88ba1d39f9b49a73f391574fa9323d2e94fdd44a73f6fb7df0a2234459a859b91e029fc23d3145183b266e182aea18ca4d3a718ffe8f4e965a2d3a7f5dbbafd6a72884d5d1a78fbc13681e9f42b357af1d2e8f42b065d43db0f9d7eb54d9d7eb53b3afd6a3fd8102eba866042b42ea994eac27e4caa96d2ad4b3a7d6be9dbdaedd7e1c045d7d0285fcc2a2774faaf1ef962730dbd96e8f4b796d2acd2e96f5b05378b25956e7f021cd429e4af44b2e0ad2d2d9146985d740deda0e813740d25e1ae21bdaaa02cf73a3fc5500a15f2d6b3fd603b6489aed2d3d356816a500db2b4881a5123aa9ebbf4281504462e63fd18637d03b729017fe266f8ac872a090e0417b94d0f6e8385719cc77ec4f2040b932e86630f2223203f600112323362c1f1440585a9681caf1019af1c19afd83072fe92b7da4d6603c5673f559ce8364355b8701e7bdce55885a98b21ddf5ad95c5d835d317eb9c6fbbcd0ebeed7bef9d57de9b15ed935abb51d0b2c0b9add2ace52440d20a549e806ae2c444e79220093146292052c2a3044fb656d61376b33629694c17ed51177997ba4b5211be37e94817edd7655210bdd6318988b576c338a9270988de8b73b6a2343535a7b595a24ebf267523b7390ea947a7bf9940cca31522a3959fd1ca10a3d14a0da395a0bdbbae1babac80852465ce49713344081e6e08f94031724313073d2051e68a1314c0cca07367112cb9c9163d4b6a82344bba1192d3c16a2ce8726c82872eaeb8b16793314a9110518a8c516e90618cf24287758071d6fa87314a0b526bcd712314aa283f1b8a980ed3196f475b6ed64c079f3dbc3ee5562208ba9438f561f285ddb66dd35aaf2628a72a529538727686cb9f5f976bf0f9f7bd08d060d8baddce7e806b99e36ec379a70b270dab05bbecd56abc9d960ceb5b20c389bd1a0663126766aff6499cfa3736b2b733254e7d2d71e6efdd5d9c3d3db5debbeb3aed4580ab2bef031edb736fdde9efb6ee3caf9635c825cedc9eeedb8b00abebbc0e58de07b9de4c8c77e7ed581a4efd5ead8232fc21d4b71a043dfff43018a382224c59a55e61cb155bd216bacb9fe980c2d4e508054a2f4097e393a42e9f10a711ed863a7d75fcdc13fdc8cecef049c3231aea9ec169149ec0df491767285fe07ff5fbd7865d77a22ed29721c7bed1169b7c21c2b412e34ebd9d57c7dbec0c17733f1a254efdb027d72eca1a707317b3ac01dbe3c760081b1864bfec3028bda15468c9969b35d3c1e7ef0ae6215e7fe399de036ebe15cc12c73a91e39323a3f149921c5dba40399929f179b375ab1b7e0ccad8867a8dc2817220ecc0adfb3810f610b6fc6228862b3aaee162d7b10b6ce5ccc11cfd62ac8bdf279083b3a061cf23d56e735cc7752ffe26e6116cf7a83df3b9daf0896f1f5217b307875c2875b26f56b85901ca4f134841927a74dce5d884501341374e5bea4e63f586fe8a02b6a7874e0ac8221d0af27ae3f54d29a593ca7095b73e9b623521c6af19c5363bacb8728277850501e098ff334c4c96373d1e0d8d4732dce05065476b5685c6cba626168341c50c16808d137775395289ea622c565dc0782a535e18504162055241c27d547c782a43f405548438155478dc0050c1b1aaa172c2962179810100a9cacb02a4265d0ca96895026988a3b0390289482c86c4420743ea794d715796554b4ac78f38d6117aa5030a6f4a10cd141f9794322c2959a444f1a4a040ca09b4142134527a7452685810854b2cca152f8a941ebc09e8d67b9b7e32bd17076e530417633a16fbb0e9084bc190cc90c4a505a018cae85ca53328282983c40e4d6ee48c4c3d7dc987251b967c2ced5852610905a52794c4281d292529196dd483fd302848802ee9077983345841f673dfdd5f435dd4e09e066bdb2f9cd9f46d05b0a2ef4bd3b98f86077a365ef59d3befebde7eba6fad35d55a6a1daeeceb705dacde4cda22a74b0d3af7751f2c96ef9538f46731703116d210cf8bd36fbaf56a61b703b04138304fe1326897d370d3be81a204ba0533e858884d69adac1aa3003dd390ce309b4f1736f386732169e0c4bce6974f6702f4ded5556bad157f72d78d3fdaebae55eb7bb7d6f77afbaba1837e9facb39ffb6af8649dd54baabf7befbdf7de9bf3b6dd9cb7cd82d5b7bf1a3464958ea7b5d6de2775f4273b06b285ecdcc69cf7c926456e28430415105392228c20c1df5c41e7bc2fcca1c7872548dc58d2c140b6f04009880c3d50fa21619841cf3e932d6e643833e859d7a8e1f33a521e40f4fa7c9f1c1d290ba02502e66340677873b6e936efcbf9687bdb0ff7be6967bfad6fdbdd8ed391f2453df2d3f32799fafd42e0f4825499be39244bf457998ee8f99b4bfd7e9b8d211fa2be395e5d78a03483bc91dd03a52012477631d6e9ec36d3859ce0bc994f71fdbc9ebf39d38000382c0690c18d010c10cef6aa5e8d80ae7eadfeb1fa94385383f931175dfd567d7f79abc8c046002b3000bbd5d55bae2f9a0a15b057b7d29fc48975b0cfdff8e57265dcadecd72ff7fd65fc89f5d3fd72b0d93c79a71f2ca8a7d39f19c1e76f295fa8d85171a3a4e7080b182c5e6a36c6579b5fa9add3abd53e7fc3f6626fc74a6badbc19e33c7396749bd163ecdfdf072ee8f6ad9d1267cbf36a1058ab8d9b35bbf1aa765877196bacb1c69ae5d5a8a73dacb1c61a6b8efb9a7dce669eb99f7d35ed8e9679c5ad404e67ac8312c12464879492c6332f6c3969b5dbc532af9a88c07b056ba0cc0ee6b455b66eb198bdfb27bdb7ced8acf56af656d975375faf4665c6b9d229f3b6b26fb1377f5bfcd476b1d502a5c4b1200c7ab7f9b5efdbbcdafd40ead4b0e17df73658bff2be7b1058abad66df8252e26858d7b9ab55ae9bdf071e08341aa739dfb118e75beb6ddfeeed6d2971c4dcf5d6ff8107c2f46a96e209ca40f0befb0f3c50d60ea45e6dceaa5e937d820390d2b1cd6f3f7fcd7edeacd9edaceadcd67dffee3a6f27f7fd9b9bd2e3b8957de94d501663bffddad6169c7d66f933faf6e2ec32fb5566c15a35c1cec8b4a502b5b26f7ad8010a5517f3a805cca88569aae94891a61b3acc6ed6fa90724713d06dfac11963a6334923539891a90bc63967a625bac4ab8bc3be197aaa011e827dfbc99e2ecee854c2a02e64f7bf1a3f5927bf7efcfd641dfcf2134de8f2b70f04daa3935f7f3e341d5cc387031dfc3f56277fa59eec821ee0971d04ae935fca17b218dc94befd08397d034560f520f9654fcff893df05f8fcd9bd8d5a26fb86879b2258a8b408d152849620222d38b4fc6479d2824296a3a42c44b2e010b2f494c547cc4b49969c988496b02831b19ae02f9965331b9cd5e5a845c90641b410512d3834be3707ce51312501c9720409efba1cb3f448c2575d8e4b54dd09bebb1c97a008591a82b30863305eb38207068f3d1311d35017c371941203da0f9596c4434dcad9c990ea6486fd492b5670829354d28e9f1b74700c4018d99124a54415123a784a1315d826558f2b8611fb706cc2d21405c9aeaf7ba599c50e28946aadb5d65aab67e445144bd412b572d52c275651563e9e115bb1ad74a9d717698ad09d0b771fc189e16cd05250e4a84fdd92ee5cb8fb084e0c678396b2d95b4384a6e8c6cd441843611e37099a22823aadfac6cd44180af3b849dc6d9be5c0a7e40b6ae607de74b0f68a6d0106663383371dec15db02bed6c2848a2c05436980fda015ac459682a101b84e293d096df4b33df4ab5354431fedfb66852a94a5cdad0da88bca124f65a1392f1e29dd8c7a7ddc53abad4577c8da3a45557f53da365affd62ebdfec55e07b376c1d21649f9e2d5e5cfcf53ab1b5b52b99de1f407a98bbcd7076131f9b46d00cf6f4f21e84fbd01eaaaec9bee22fd469875cbdb4695ac142e49b840e132c4a5884b0f2e44b8fc70098a12c3a5469452d454d451545214519451d40f734e4bfbb441541eb46a84ce82b6219b7475b55bced8264a940d5de458a260e026886ae1d5e50865c68a116ebb1ca1a87e404d413561ac6737a0a8f8807262058a09d492aabb1ca188f8214514283bac0c31e60622bde30a37248a12647420a182243ab474b7da2dc5909cd3c16aaad313d3939879648f4f34e42ea783d53c31f144172de1a22c92c2350c1efb255d0c9964e1986a831a385622c28db80cdcc98ce660f0d86fa95aca3574c0f3dbdbc775b9bb85d10de456e47cd24df7af7fc18c877841ce06b47941573444973f93eab5d65a6b4d62cbafb2e39db77ef1a5e4e9734a29a594524af9e442a47549ff6bcd3ba641f12f28e6482c35098ab42efffecc079f9f679fe9e0ffb0990c5cccbfd55aabf87c0aa3ca0b6ea0954a487bb3e496b4eaeddc0bdec7b38a7a3b34e73d31ae5e0dd37bfbb66dd6de5a31a5f97e3323bdb3f50a832c64b59bd32938a36f224f9741ebf42ba5a05da2a32d72c26ddb36318b3cdd2671d176da3971dc828a39731e8bfd8bbc639d9fe3db8be1b66da0c8d32fdd40f1feece1a098f3b34091afbcfc1d28867d8b3c3d7fd67546858b1309eee026083edfda5a6db6998aa6a3430573913e82dd04c1453ee3c1ea94255fc86e6712216da155e804d44c0d6e8bcce98fc6acd2e1be067f4da7b5ded5d6e7e7ef82729b3912e7853ae594534e39e5cc07a750bc7ef81d0693817fcdb1bf5932fbb2ed67f4d9e7f3cc23bbdc6cedd6db99f5ebd72cc892c922a03fff066d6830cfe83b60edf69a7bcf1363ead530bdb78bf9d66db3b67731dbadd6ebd5eaa5bd7b35daef3743c2671773f66ab3dfed65ed82614843f9336431b6b75fdbc09c19b5db459855b3aa9b60675c7a91ec7db3c20c6a7c22323e1d199f6818a17074d142d5d0c5fc64a68b21d40f282150445d9ea8c6718b129191d0b86568dcf2336e091a9dccc8aa2c2f04d1a0c265c8171d35627ee45002189238f3c24412c2e4a4a3c7081f0c90e244061b45ba38a1a05f68d220070f4ac2d070e46409090ec094420d1c4dd4a0c443228d3e3a404db95215146304224a91266a280569179a723861bbddf9374328a5b403408ca9d28108273b5cd14047452db4f0f484c61212500e1d0a5b1152ea9482193e7aa6981153c5043f4d33821c7184912135f0c8c1870e6da1532715f42961354e559cc62d2e1cfd604952e404238674ee8d2c4eb450456806269a0512d41dfb083fe1e85b9723548f99156b57985931b31202753b5c5f8ad6eb5ddd27d27a873bdce10e77b8c31d6ebd2b85eb4b91e25f3cb559d5f9bbfe05fb57ce9cc762ff6128e6745006e3a0eb5fff7a7d224f7fb52c78e941c0f5fcc5d7a70065d05e2f3086ebf9bb6842205708e472d1f0168a173b143b2c9041bbe045f021506bb56a7d22adb7dee5aa799905319a87a908802cd65d6f412cecae4ff1520528e674d7c39e220500ac01c52c030170c11528c640f17b0b14c3de7a1a500cbb489160a098d35bcf4131e7f27451068d46abf1eaa1780e8ab48e028548eb3268349e9e0b2ea8409e969b2078fd591524e4ddee5f9a64929352e8f373520a525b46c22481eeccaa59149f3f439a21cd90ea8f8ca914449759971b233c874f3cfc29d2448c41913645167dcf3979ea043d6003d72f4afcf639cd694e739ad39cd61f8b2e4aa3ce2ea1724aa26d97a3535111398486f1787431c64ac613e451091e7bc838168b7de8c4c3e52184530c3338b190c47197a3d38d294e15c5c33449e52e47a72096e9361de1dcbd4d45b6be3118b9e9869d85029bd3d95bd1608cb1f5bcef3e9facd36a75efd5f0c9d1613ddf39df7beb6765d1ae75a5bf2971365dd5c7dee65dfd605e573f97ce5ee7f2babd8275dbd32f1a4e77abfa77f38ff549590091b5b146e1c5d05d67afdb5f0eadded4af4b11424ea6bb0bce3aefbd77de7b7b79ef5d42094649369822304436ce7963bd31d658638d75877597b1c61a6bac3dac3d8d35d658639df7de2594f02369054cf8669df3de9bd39ce67cc7629c6fad77de7b639bf7de259400c3d01821257032944b18a5cd5aa4d1489131cc102063981e631817a6c6303e63981e282318a695cf94721c6363d2395b6268a5f44b17731703a577a93533d95a472798941083023145e01f3049c89829a3834c17324a6492c81c2123858c10999e314a6676d661aa88190c94314cca0c8d39c289126c8e9489a10c0e324a648ec80c9101aa32660aca9823148c211a334399a232426cad46e80e163ec10ac008b90246088c0e9b27605298aa02339582a932535241432cf5200606243118818309519ce4e0634b8f225234b64cbd3005e44b972f4c4ca1a0847f2923b5c3171e3a5a73be3f3f116615c7d56e3fd3db51d1b3cd1763232c7236a05d20699d765be9ee839110485814164d96b547390aa02e70c881bd3afc2c7538d8360eecd579d399de74b31e7456a1d0c897a02f42bef47c01927a92a2921aa594a48ca476983a32f5648ac8d4125348534f5f92be749122fac284ac807cc2e6cbd08cc6f4f1a1c9489fe72b5bbe62bbdd1b1c6c6818a586dcd0e9d7501a83f19a053840ca06211efb1c52333c0151c3941d53629a5c51929304103f6a38c2441729214a5f8e4c1dd1c0522c94c00b15135ebc78711ac2cb942d5e96f0a284948fc6f5cba0739fb4d405f714466fe8efaa014ecc6a4035b004e0310943285974fd494e7fdb66ef6575374156881d152120a59452eea72fd25ca0384394d564e791792f3b4f5fd15a4f5f7edce7ad56cf49706756f516d8adc04fdce206f37f22adf39f9fc8d327cc7a2950dcd577af4fa4f5577dfd6af51dffd737f9a3b83430ebbd58b582e247ebf25b5bbe4071f6d7af5616cf00e2a1f1f4ee69f7ad3e863928c626287e48038a391c0c14b38d7150fc097e078a39f461d4d7f420e0fad66f5f08aecfbf37b7b9cd6d6e7372833268dd25a59492beed9bdbdce636b7b99f423a0f642a3e7be6cf4fa019b47afe1eb7f7de7bd3642bd87bcf7f83b2d6af7ebf98338be21e286bbd6cfe8b83b2f9faee65ad15f71281fbae93751cc7fdeb9b4571a068413991e6388d66d12412d2a2ef011a9b3f33e8f5f3f97394267b81def39f4f29a59482b2d5bf9e9b45710eca562f6b7df7dcbf7e82b256f7da9955fdc57df7da3f857439d5651bdc11e5549f4266513cbbbe0fcc9ebff5cd9e3f048ab55e843dcdc7f8321fbd00e9b3b57a1a6fb57abd5eafd7ebb5fa16cdaf60afdf953bcd27f297ef7d22cc9dee6708ddcf97bce3e9997a5dd7d5b27cae058ab0e9e5858e3f7bc1d1f15b126670af4ff1d2eb00c5eb5dcf01f5dd755dd7753268afe72fd2b814ff62bd7e572bbf60ad9f21649e16edf579efbdf7deb217b8c3f1b85a2f9f93911bb0fa58ce9cc762ffab17c31528e67cb2fcdd6712f6cbefc02c67489cfbfdf91365d49fcecdaaf04c3c801f0a1082c88f0a3f445346324a8b0f132401244b11931722bcfc10ae40738883ea50057ac311501ca6406df8435fb3a3495fb3a311f014f033bc884b900f9fc297780f3cea072e58b8482161d3dff493935a1ada4d4ad967d039794ccd79959e9e261515120e7d429fd027b4714139fb8c6d6e3d55f7d9195e7fefd5ea37ff58b93fff467875114ce8e9fc8240439bed917edf12e12e4f4afb6b8f7ebf066df4a8dfa746d60cd5549d44fafd2984b66009514d9934e7fd095c0bcc23d6dff7bc0eae9ec01128aeded2b0ca9d6debbaa7f48915a8684a08cfce70fbf4cbc087811e695927d872c5a8bbd919aebd18b88b33ba2d0a96d0a894cdb5372d848a4803009000d316400018140a090422390e44792007ef0114800a688e3a583e34134724b1402c0aa4180a8220886218868118048290614e21c69c1200fad9138f19cbb323475208e04828b5663f5952b8a100aee13805d321793a83073122a9dece72f7a4ab62f2a468083d232e5d4df0d39ef37aa36d40f599055299fc9f413a2c5e6ef73054de43b3319f9c45bd803a44be29154c843c68bdf1ea728f1098b0080276b02439dcd9917f1ddf48002b8ab39d0c8b471bb217e4f7e000628807a473e207b838a276c32d707b880e5b8ba0c4ac40810816419d35d0a3e06d5211d141896320f28b7ce33f3b1a72fe28bb676fbd1fe87e6dcff8862030102101f5476440b410fefc93393c3d7fe208bae75712818e3cca4ec8d31d13a806b08950e688ad6dfbbb46b670d0cd23670f6f210571482cd342ca5dd2051ad6592ca49839418cbc28e60aa9d64996a9f57a5f26a18810e40b5e1d8bceb6880811c4079a331bc051a1c0430afe430f41c9041b922148f307fba59eb0f336d4d007ec1d730be6de4e26046dc8adc8b9e34f618106f8c1ac9d9f20dde0b441908cdca5bcd2a83973227cd6ceabf0392d61925b6d798364323407820008110ba3a12054c10419df260b854dfdf3280a7832a50c856da60690cbf037404d7c350489fa80b597b9c7166e86950064d3c7b1fcf04f3237b1a1661420840c64337fd4fb1f12a2fe7dd274fc5013f8324d2b56c05289f2993c9b656a4a48f43c6d8c7be324f15f0404250a5b38fa03fd81b45553a41b9e95b6b9b50fc48186079e98658e4bd8fc9e4ec98c7c2298e3c0dda842644a3b584fd0df28fbf840d8c9536d7fcb64a625f5401056422ec7eba59cffb708a844d41c980d9d9ade4a601a926142d0a13682cfe563deaf3cd1a990c12afed94ec881436b9787dcf80e8f9e0943cb7f989e6e91b3417b73f3a022c58376d3e6f79cd034c373fe0ad218207463804fb3ce1c660a8340457a1e7eef1a761a5323754ef126c1627610c2acf7e8f3cb30d72b6098601145368e84d735a1b7bc59d66ddffa7444da43c199788f50c726e063261eedfac89b7d922bee2fbb439299eada27050631b3bc4d043339bfc03a925cb26721528be1c5ecead4c30e5cff72415a50f5c6ef1522fbccd3e92e53995c1ee50ed08d73f7c4567095254b1dda41b1d3197576fa1ae1e90c1fea31cdd99d7ca5c1e054d79efc23137fbeef780c52df6427a6ae167d36ede8f0dd5add15297808462e00dd61bb13035e4bc30900e7258b9b92d45d04df876284c96b24a3590eea49c480b9945f0c576d1523a0321831a4b2fe38969a31e8d43b65f45a2a18d7335631b36e841fa74c488ff18b7a667c2b902360bcf7359cf708338127073d7afe3744d498ba038ec32558b96da2045fcca1e69258ecc0f16a67d9881a273a6d9996912758b3093dd45ce23f34143a70b230be82c218f47dbdde407f3e3b7139d4942b00b3b1a865213e60639d59f58019d9461d1371d79c7166a625855305a8f55d375080dc812513adbbe060c3434de6a23558494b0d6bd1a731997a980b6b849bceb38278aac7b9c507ffb4b029fca3c6a319c407cf0f2c1a78c2b27ee4158421db92378ba283226ec7cd5094c53c462312b7b67c61f24dc9ac0aaac1ee73152c55c8449e834168996148934447e52c8031b6a460f9f7b7c64f50a857afe2c2160bf22b2a01d8cfdfb18d27e89d60440b553e82805c17845372f7de82aa3443dac0689516e3c5d395044663025afbeb0ce805c25cc2286f4e5e3f45e171176bb4ac6f638220ff6747174ebcba450ecf612a31e65008c2268ca6eeb4b5bcbcd222e47021258c6a1ff2a640253d0805229060f20c159319680a11f5342380d6d79282e053d1628b05f31595006ce58fdf0329e89a26fff466e00e521174c1e582251991007a4420aaa17c63a0e814e2904f4de1b36fb95158744fc6872b26ebf82c34914c2e40e46f8244cbb63341103e566c1f4229a4e654e46f2944db43e01fdea49a56d1a82757005bf5b0e89b4b0bd8a06e80b8b651980bb21c485ca09c3d05ac83368da401d114894487de05e5b265b044e8c600c4dc3aa8b780cd6a005f8e236ab97d186a6de86024e8562b39505a2bc6892ce1d8c1153a62d247a67d0e736529ad73e641efb8c657d5b5f9f4af2af0a46103bdcc30601bef2927e5a018a2cd57d0fdf1765d4e24ccf1475d04c79a0c8ed733f30edf7c6fe9bc4960fa46f173d3697b51c70f57ba4beeedde3d23ec6def9020d476f28efa54359156f45a4382ec50f75e78cd3855fbad68b1c581792db168104b8301464699eff657740b7ab251e792beabd273b3b36b46238a25e57d2f371344a6aba74f6d62397e8fcdee367e050d705fc7d8e35129bd1cc4ae8704ad28af6d61483b3f5da2cb7a7f8a9ef082a6070c941e8bcfe37c757bbbef62ef7f4e85b4b5b34f5972208b37d4f7da294f18c618247997a59b5c799e4e0dc59de2f4ecdfb54f7cf3dbdb5a21e636bd04808d6c1f9d5429366b2f04b9bb48f751a17f2f5abde166ac553785f20ca8955654664840f3b42be718094ee37ab358452a00b9ab963ca38d97e22574f3d44fb14b502149be617d4599e2591fbf08c40dd663c2cdaf6b3fd994d918fac35d28ffdf24069b7c04de060530756a8366fa86e3d7ee6b27df3639712c01e9a099013316e3d2aa396d36319ec68f7281549dc59ccf060c086316d8109c676e4e16526945f394b55932e2ad367a50d813e1736d348266c31d81349f3220f764c3be0439b163cd378c290018567556798003153a94b42fae2e2b978478983426383a1a919f70231f034a4a9d6e1dfa2ad212341c81e8fa6d2709a633cf1ef91884af304e32625cd2884af17a0119a79dbe9fbd04c719cfb990aa7b634bf8ba210bd33966442dc16ca5c453fe983cef32e7fc755c69900819036c1b14fcd601d235f632b36015cced74fbf974155b0f48d6936b578c1a322709b06a104a33f0a5402a5052944a31a628eca8f2451e10c022754b97f6421019940fcb8571222087555de0b37d29bb105167cfa01edd01a72103b1f4e0542f8178285f1e25b44427ea1e05186cf8383fb9744a708875cf0f957d115be2b8ed80c8ac0bd3e70ad8c9ef8b3a5002d3a3e1aacfe485935960c5f9089b1d713a7c168b45c2574942c3594307fd1fb76c488b4ca6285add44d16b5393cf241a1d1f89453988ca4354812935a2ea4ea988b89156afe5b8c43776021871c570cb91d56cebd2c6634a3662ee3d72634189e2a0cd01cf0134cd0bfb71fc8cb6ee0e071d905df1f4924c308919d2000e821f56bcc137999d0595fe6e420c36d2f2dc2ca18c4554dfc63ac9c634336fb4ab0b2e90a53c9a0f13b3eee2687db4d1cfedf41ce86ef510c0a2072a1ccb129b04a065f0c75fa20c6c1831f6fb4fc842d7a938d36a4220304015ef93608bc4a5254dcd14c1a4151064194eaa96495cfe50d929e780094890d01ba842136fe1c7122678331554b144e6455e55a85a423a8cc4195bad62f1d4a032e37e2222c2cd87511d0d5434382b668d125529fcb45ab65a7217a3002687d9def4803bdf96a30b9ff5f3ca0b370981f19eb04a672205a0142c7ef1ca2920591c381e180bc66113c1b16cac5c631c9d096e0a2728ddf52a261293c9f93f98c594455f9462e903b924b9b1cf67816a6b5dc2d97e2da4b93e5bde4032439c9624ff84e9f15d24e88361fa6a12c801690454afe9ffd0b5f9481b85b49aca1c8347d212c3da109b888037bd1346e2ef99b9fb957e6890aa2e2475a6e3c5aa437b4e71e578cc7c1d503e1235c1c0a03d0e01022ac9483379420d63f6722768a2452b76df61fa9d7d2274f7024de47792973aa70c95d88e324ab180a312f0494a5ceeab0a8afd59d4f6075ebd75c5ffb19c2f0d61d6dd0d6b114a14f628241afd541139caa791d9180f4a9a3e65478662e690b72961f048f421c8d6ac4cc41afdb26367cc4ba11daad0fdb03da2af3e1d08fd66bd9e027be07412d83a4595df6d66420490fa38825abfee9692758a1a16cbe4309ad2be768a14b81ca5468ae27d84c2ff092e985a7aaaa7ab41434aef2e3ea5eccccd6934fc858aee82d8e721aff226c73f0dcd7e81332c279bbe04cd93cc2daaa6bfe55748bb09c42eafd8ab4eba18ac9e304a29f0d466d9ccdcffa2e15ff91052ef1672dc106d42c422407849af4d5ee54daeff1a9ae281372c45091f9561a2d4b16b178ffa35e18e065795596cf0e26ad955e9c6ffb68c21f53224e65aabdb68c53129811a0f7723eb2be4d5c1dfa0fad7977599558c0de3cef846aa1d79f1fad380f24ac41459ff3295aa9c66c73e491e023ee94cf51ab1bb319ed52fced6a6b3c0c8fabfcbf1e03aec94560a5c731a9f170ff677fa093f40c5511c5cda7fe431b6c69249fa53763b041d17dfeeac4c5802fc7619bac7dc031ff3e102513a154e07af9a9568be31a46d1c3630a279cecf44a7a980dceb6339527d919b9133d336e6ebe1675657bdba5b34e41e253647d14d88e91be54cb788cc2990e505e41edddb1d50c8a36263a46cca7c374520f5394e0745ed917b3df7455e151dd48fa77c4cee7508a21da13d60e10c814b9d6c07f86938d29bdce3237e9e32136f888f5add29345a4c83d9d987ca0952b985a146738703a151d13f3a96b87e6ab5b7cf7bb695c6e47adb3d2e292944fadd1565f8832da31f4d7b4fbb77c66772a3a06dd58cc8489b80cb9ca1f0e6a85de32678eeb0a1a0e6dee6298b53a0c5fcb16e14bedf96f2331506b04b5f56633c246f887c8865431376da73437fa998482c37d30457a4d0106cd8d26d9e4aa69e6f252d76ef018a52a536eb1dd6c0790d9778ee66eecb0a3c22b835edfd45dea68713d782ee9cd2ae8e5e07b16d2faebb2f8a3f5ec975a8955dc18da4e981c59a7b4af10aeb73863f67b28d61d5fc7a133d9cf4dc0990763a1417401e5bfbb0e70f28ef03d64e69f96eebe736622e2051e13f042cfce780949bc745416ef744aa6afc7ef626c54564c685ccf3acace98df7908178ab695d31b439ae1e451f59e1c3bd493c595d41c0fe44e62c28544456c2f8130a50e08cff7f9a81de209a0211388d4c3376b7acfca81e4007c481efb18a513d8f673cdb2fbedf630909138f16de83d5e13b0002c8c96f426fa019a64bd3841ad68b643c04c29aed144a5bcdd1d9c90f48fda9e5c1d9bdcb8289a82ef030c17ba7d5f8e3d424af84155b91c46f62f0161cfd93c217aab73528e05cc44f4f040ede276848edea5885cb00a82a04bda7723257279508e3c6ea352297f104ac209d919df651fb503b1893637bee664b28a7052fdff1989ed4933b053fbebb6620b683409099562e2f1b465a5de4ed590ce9e6999386bb72b16c879109a8b3dfb9333e775fe871dcf9f28ad8873a7ec891100dba4c0345a62237e1184ddc09f7de4be5ec3272131825a79436bcf3d3b1615a33bbc7f6b9a231c10f45195fbea6a74a9361b8f88f0d29862c2953599d34b398c3b307e624930742874bce231cc1081628882758d1f8604d917777d51b1f02c2107185e83b0c78d56abfba36159fad6b2402f6abdd799d5795f3d28ba5f06430a1b1a5a7b528e58f17b58aa0ecc8e46450837433b9cc5155590b11dabe44474ccd634237f5e7af6662a63f0721ceaa00dc9516acb8d2ce386624c2f7e95290865f83c370e4a4dcf71f11882084952f23d0fc2a8246b3fd511d88880a67fbb2b1a2ac9ff5a0949cdc483a02e4e82b0115a10e7ea05ae66bbfe003042093820e3b4fbe78995be078509c39e82495c218214e359b7fdf3ac0e2edd1d78e8261086556fcd380afdab8db7ab68b8d706ede3b63672b00279a8e587939fef523c34b2fa241f35b9333ffc3515298d275d4476c8af99c982a6b1f33e6df0800a2557fbad70880352529805ce17d1aee619e8525a80c3ce53083e941f086ad029a01fbb4ba1aff4ff08ca46a5742cb8163d9ff4580869cd82a02f9ba50ae2dc3582552ceb01eede385356b976a20988a6e411b8299efc7ac2d184c699f813b2fe6781718aa061dc3830aac3c23bdd63206bb0d6f4dbf173de488270958357ee15c42176937db759ad5658ef025dc16579a1ed395e6857e621ba867ad6f80baa07b2c142c07220ad20322c1d5d04130061410f84eea025c7249d55b31a4456278cfa0bfcd192000c894d486c751f5c5a38c3980a963a85e5caf8d8dda584e219cf24b3f4d1feb70e96d581b1ae76086c61f7cc318c60677b4edd3b6233ca7c9f44d9130fddb060a8455b4b02248d217be42bfe89acd88f45e901e3772e97b5306f67b86e23e08236743f72811724328209c830bef2c67e5a161670a896f077b0cc26c734d5f4c65079053a6b13f7f9af0d11a91526ede448e1bfb25ffb6c60f8939de66265cb63f35448b079c4265f73c67002e5f5155b5625c7e566f8b6cb85d64da337b7133d688cd90845dd74334b63f7e4324dbc58fb9fa5500ef8f960e25908cb6cf504087b1ef893160679366e91b6357614d06809ea679183ad6f4947ec7430dd18b34a546cacf2c9b8c38906557af198759cf8b4a1bedf49997e42aab2c6027998177583d1fa8e279862ee5f4ddd124c935e30cc04066b9a03f20035c090349a041f225c8072ba64ee94925698243dfe38c077cfceb5a8c7ac1c889a92c897d4c7818c5eb04ee31133fc1e63db0d63253fe1702c108fd4214844ea4ba81248532f80b1c053256daef44af66dd1277e7a300a23b6be8a3a075649f2a715599e42d1771ff01c3c16fc480554a27e91ed51d7d1c2b470130e978326ed26f7da0fbf1b44aa92c599dc238ecd10622f71cf2628545cabe26d11687225b7cd5ec5d5b7ab8e1103699528066550e21a72a0e610e00dfef6685b524c378fbc21972314b62041eea24dc8211920d68d72b1f098f050f1993350040df11fb6ebb701801d9fb6dd9bc1dcebfe45a07b2a3f9ed35adce57171621aa02169e8f3da25e283395b60911dbb7724c9857f90bb22f60d187cda10e4df5ff14784b95bfafcb88a05f25338f09aaa5a6e834e635b89c0b5b5329d93164289da2bd2bbe0add838a5c4c97d0c99dbd4d7a86123fbe270f97d29f547a94b4e5186b2009862d5a804ee64043c3d56d131dc6d2d183d5faa87d6f0d1ab3881b730015e48fc47c1eb25b1a6eaaae0de8d200d373d1950b891612f69920cb76e260431d860315403117666803051b296f04041a78ef61f7b8421110171810ab45b066fae473b46ea0b6a92b7143a8dc891b71a8116d3c6953ac1a89de2a16ee2de119c72f4d4a69d0feb12d9a190406024440d7c67c8b27e77d1ff06fe37fd93250586d5cf870a2a32eb0c027a39d009d06e00aa1360d7442b9681585ae8af75a73a94515761d02e299f81a10fcc36b815f621e11216d88098a164d4a43bcf825667dbe89424675cf97ed7c8a7ab9d19518fb6f4320c64c375a2b6c3477926f763620d7c84c87f6bf695d4c81c1f584354f3f0f54299a7fb82c5d248353ca170482c44706e0a18914e04b86d8951c28dbea3c69123b11b04843a3117ca8f147f5623d9b288e169e39f9efafeba2f7d503619dc0ff0f559069170870d6b0eb6cfa0d6dc28809bc0a81f3599853beacf7a6b34143662c3610fd2161f22a91d7092a5e49d3e2ed9c1d03d7d02ecb608fa81d65f24ed578330a1805c7c80f14061e3e073234d441615dc4832cb470f41923f90a7d59530918a906215f21a59329726cc8cb41ea05ebf6897b222f2f7ae60503bca169a1d03505a7b07f8b1685f5de001171fc4f693e33abe8d53b21e9c9396d81a2050ed739a3e9e00f9174686a614bac3a350792ab63dfecf676b40f771cfb0e8b7eb13ba7794ed1758fd2d49b2ca22e9a93974895903099c32e05e70d811a889a02ba4fc3cb071971f637a962392bb40930a9cfaf242668156331945c33938e03cdac91c6a0e28e6142454d65b8af32c2755499e1534696d122f58b3663063b068340fa313c8e28c617ab0c93c0da33de9417a0edec2345f455fee34fa6c45b243fc557afa5de3b18310e328883a7c80f51e232fb189bc40d4c2d32b618acc37a26c738d7542cfbdd3b2618e987a064ccfeb64bb7f15e2dabb03db08860caeeb55ae9603f15b4e9aa76402d141e858d11be458e5de24ba37b76f86c9ec4e12c3ece33139ab53e2e84e1077eb53ea22b6164fddff2a4b123c8ba8df9b74e16b4a884c147fac86228fb02d11373c6d55bca68a03c0602ec4ef318e6a5020a81edd79f7ad1b0513510a9173cbeb84244b12fa2fef81118eabf4a25f5b14bff60a35e4a6bfe337d3f20a8d13b6e0a5315849df2131c46da73458180ed84a056f3815aff04ba4e31d227f02fa3ce423902c86cce0f12b37d67548b47cd81258993f2e097fa407f6c7d07518754a9ebc60a25c0c55b88e44e32fe2fd9aff60b8f1fd3b7a960afa0415ee2e2f05aa9012f957a7330243c1206da88fe374074d2d16d241d4e15a5c3e82346f7e6b2ad1f19654d6474949ac23c44a365bda5a375c960050b36c8882c261e750d0faaf240aa448793139cee2ffce3140954b8580f9f1fcc1c34285dd47a7c853b34ed9661a4e8b69d871a363cee1a73c26c40a6fadb7b46d5926046e78ad6d6685294b3c315c57c524843c4603100f9d2cfd932e4e56eca0abfba5a04275b91bc14a2837ff1174a3e6c25c91a8dd6f2e1a1a8ba3b8385fb019054849a3ed1cfa8d950d020c9d362d63acf2d86e2075228549dde1829c5484771910de1cca1d10644c6ebbbbab5c1d28947b5e8b070cefce70140517bb663553f57f31dcf668e8ed18c035b9a3403e2fc8cde8270e4fad67fd4efa662ab6764715ee848d029d7f9d8e3cc82e44aa60b22912c632823331c50588322d8bc2c84353f8b8168511f0505312aa224c4c88808a5214ed98476d342fbb601ccb107534818fbfdff06dc68c68d7de5f81bd438fd8e1e9109bb4d02c6bdd9b09ea7d57e3fc531f5de90c6c51f45c5c053ef3933eb641ca6852d76ede0cb6374740c68bb4e924d980314174058253aed44136975870e9e47815ff8efe2c9c698d335b6f3e6bc6af620698807130d0bef7e285eac9a345b0d22f616427a92344837a5f36d1a4203f4e6a95b0f149d4734664d40b3bc8178ae6613d691cda2fea350f7aa3c47bda918a34dd6e0a0938053af8d4b8aaaa6d3dc5a5c72afe222dacc6093d61186e9a08a3e47cf1ed0944838157e26903b6cd875b0a8d46196e80c99c98683796379cdcece88b8b1b527d5fc7ce08d8d4cf04d9f388724d90a3b9651f0107ce328541ea756f5f8d485463015f01113240dd9a5fb76aa7b20c00eea57e5027431f0caf0441b0efe561f2f0295a8fc502283a163e7f9f89b1faa545d8331368e63b574ef9b34b8681a059d84cb229e71eb6d8724a62907004639d35499ee29500c92dc882264e7bc54de52550310017cc0471d0995495d1e304425a35c40bf438d8c4f100e33c68ac1c4b0313e3ba7b6126bcffcc05c0339afc8f57ea580d9771923466c84b6b9221009e3496abe951503cdd27617b5a5252ff812f28b0463d751278c76890f2d80e095423023972894b648628ebd0df769e0dd46bb2c2a05d9fff1bec729d385f75fc21e42b79083f48ff94c311b4e971eee241f860a880bde517712c2eb0db04e12076d9c57e072b18274516c5efce4a19fee57cd3df43c23a71be23d30314939531e06219f465dbde2239087b195e8289c281c2e1e6cf437bfb1d4d1f248db02677ded7a16204a897174ed65f139594f9749a7a5f9162a504dfe073caf2f539e00da60dde4cedc6e985d89b3fcb06efa17ca4310dfe73719fe4512c1b5bde03e5aa97b52a2d82ed77a896413270fd839ea77fb02291aaed554d507bb2a4a3defba3b6cc8346f95bd47071ae907254d46232f1c76e7cc0c8aa14e8617ae252b6932617c41113b38560eb8fdf0e903fc1f3bb2f6c75e1c9da71baf130ab5187dcc8454cd05ead9a4f348e5c07daa202365a4219edd464cea63190143766e165278aa907715005acbee9f807f5dcc28f78c09556586b499aeb29e4435c48ffd9d70910b951c6390869e64eb856c29d6aa844381bf3aa1f7e529ad11489bb26bd7f30d7b96cf6e78cd42abfd51afb579a5a7f6173ea94d864451415a50eb3b80ed261c1b851718e098d528f79c5ba3e714728dc232802c6826428fc2f67f677779d5f65fab7168581485dc2931c25e643a15a7044528982670c9a0ec1a64d8ba4e7139de2635c4e5fa6d9f93842b545637b50541d37fa5b8cd565098fafb2b8fc9d048378e492cfdacca02dd9dc8cbdff7fd0479a0bc4ba5bfbf723b335ef980a24ac8233c69623d16bdec0ed2788833e39c4a366990493a6c3cbef9c7797d0752f4f2d45b8450fed43c123d46f2491aa4511f028c6ada14c1bfd288097bf51b07270c206c250ca26d2da031f40d225e28ea8ea1dd22a655bfde3a145c32e6c9e7a6792a3552277b53e78e5001a127c5a354051a2eed6c89cd80f7f90fbb2ef9a944c664689459ee7f3303fea99001e03508724b2c9e381a8535b9f7a0c1c86d72e871ae3e29b8d7c60159740f779f44cf21d6c43e6fc4ff0252964232f21f3ed20658ccfd5b8f21b549ee1ab3dd4d93802be3137bdd470ae550a512e172087bc36af3df8059c76ce4d746b2c4e967df92a74316f6414241027010881dc5ff102a112a840f3525486094a4ac9b5f6acfb90167803aacedbaaed86264440c96c939808c60046800b1ff00461bb3894fa64858b52145c02a70f596f5ef7ef88008e199c5e3ec4593a87409ecc3ce2a10e77a04672047a5adc659b58428735c60e5ceb99e8c53a73c5c739dd0ff5cc590673c27f18299752342c9af5665c7bfbe96d081c2010335f02c92dd452cbcd24a8b8cc8c7fb94a37dc33dbe34c882bd581b9f1e7dfa1d66d282592d9abd4dd0387667dbdd24574d7195a0a513fb27e25c1737a63badb8b9f695935e1f277cc1f36cd87ac1cb2cf51110e4bb64f49f4aa33820b527ae0598f333e97e552496b6d3017b002936aada32f767029f926a51ab5a5d199d2213ebbc6101ca4c34b4558035240297ffdb2089cd19a883c0054d44077c7dc8591994fade51b63e6d609b7391f52de9f98c25119a97f0cffb90c1e63ee50f5a7f2343f2989da8e3f74498b63d7fb0bb01d9c4f2dc3c4089d5308d9dc9523a3cf1fb6b2b0c4aaf54877099a1f298e99347258a981fecfb76e91ed6da52af53facd84af2f065ccca7bc0126c7c56eccecdbc683c4adb178c2ee0c79a8b99778cccdf71aa19d099c141fd67c0fcd9dec72ca1b35b036e1324dc18b6b02eb717036eca75341f2c92c8fd9bf516b66059cd0c49c6bb0a679c944952a156b2c32a046714fd2021f39668d124043611aad8fce6725ba0a59fc2c5f4e5db883e4a90db641a919bc1f91bf31891c4a7d60da8b017b2ddf93b28fad247fd36d4879bf8c68b9c27d806fbcdcbfc93646b23126f52008e7f3ec77ebb41b5fafd608b981cbb31a170651f847b9aa9e4570db94898ebedb88111114261aa55641a9fe448d2120a1ad86cea0f724f6990987d57feb62302c920d38a303da07112efd8ec20c3ba65a1053b916087f9062c3075fa615ba9ba5725d37f7dba1878303dd8b60f0eb1f6854852dc6619e909a908e06daf93829e20aa482c549c6cbe8e822e3b8422b6b343a6299fd43eec4071367ef4eb425039d276847e982435f686b63a85f90eb848da8cde0713dad15915451efbd1b188ea6de10fc0465e65bf05afa29fc9536dfddc4e51def0116ab55206f0de0c188444b9d9b1bf3849c0cdf80e5f6dfd5f21766988171e33039eae219714b993fd2a1d0a70abadeecc6e3713833219f5c9318f111806eed2d046c07511fd13dcd13f371d9f23b33e2c3cabadae39b61a9ca45f5b4da1e4ce7ee12cca3e2e9b99fceb4680d5b11b5c08033251281b7158dfdfe3643cb2f366060afdd85d129fc7068883f8da162a14d87fc50000ba1a07943b1859faa0df7eaf5e1d36ea2ebead8b3204b7449b827e9fadcf3fc23e6d8e9c07c4ee28677ce667d4b64bf95d037c0248d846afa0ce90170a655b28ae79438e3060636e0589c337cf95be87b1dd8448dea50f0aeb9a74c0830e4bcb4441866160b58c428dbab1586c602de98de06a29ba05f32eed37401b6acd0f2940776ce28bca5c09276354bd773257aa8651a5c72e078166a6a01ab2cd428668abbc1e09fbcc1970aeafd1550410bcd040308d710ed06dcaaf8c764ffad5edcf7b350da15b0ea05558dd408512c5d51e2293fcbad41182d8c9cfa64df83ff59faec4a6c93786741094ea8aec04e949494c309fd81603bb42214018a947bbfb2c2f3315e69f7c65c7793c57267842dc1fa0dfd4986e2e4cb36a9174b7fe306185e1ddc9c90e1b03b54f10931b9588a97aa55ad87d1979c5e88a76c66e9763a66cb3af633426b447e59d282bb2d62e8f3ea4ee19eb5428caeac8d177095119b76d51eaa7f14ea295b01471f62089236bf7d31da69482659a9af88d64b52b265d76196eb17873ccf26a8597510260399c63cbe7bf56d668da3a77a310cde367380c52a5664f74de1b6a66d86f52adf5c6137c4ff496d1c2c521d5a7437b72db94ee11dd22b2f14118ee57d0f0f61a0debbb70c1d761aa31e1ff439b481079ce826dc7a9e99c45534ba7e0eabc564ccb8ac4f22f47acb9681a63d6fd197b3a966343ff732b1f59be18afcfeae36d6045cd789b2c98f9fc1617becb9f237170d3c900286a69c0cc8be9eda5c0ca535c93596e380bc4dc53865fdc0ec5f3672cf64845e6bdaa316be5fc4ca36b03b8f617aef86863b570156e37c098da5271792ca0eae8c04ac085911e1aab07aeca0c513e6bfe47fa7990059be81c05f632ded3b00200d7d70f07279893301bf90d87b0fe22dcca32b76cf64f706d2a81a53ebaea9e13b5f7b01090d2c69640d00a82b034edcf54c3681de82d070ab6cc1977635b6d699a574b4f103a839e2f90d63b6f69f25f6a383c67ca43f440347d8e65ed4bb7fb10a3569c1c42d9413a3b81f51ca94467949a23eab43cc19b52446b10acf41a69de994ea911b093c0f7bb88bac6908174c1672080ba58f0e236ffda256778999b7aa22560b384b49379aa4d681f27acfb8c138e13926c6ac9d9bfbba3bf7636540a41a478049601c5aacb9c9996e07c5793a8288f21a0951b86952b623721376658db49f96f8ae149994ad59712ece0a159a2a7e82634d54f3309481a69dad80b9d0d78de2faa023c307d850aa962dd873fa92830d704058c1b95cc9dd75e7b26b61afb8812a33854793164b0f48b225e96ad7c7b1754fd0e1c221dc4640e34881df7fad042a4d0e14f59b9ceef70d821a06bb9222cf96ab1eedbac8154e177be18ff68119cc11f53ee623375e04a41d7dddd2fbed7fb07a095b189f26bd1839381da0c7199d2d547f1d269d411871eceee945684000902bd3395a05b68d898bd43789694b5cf4bcdb2e000ee234d40d445aa23e703e5ac9d467f63ad6e5e8634d3e68cd60ab82f9e9c5ee61a309bcb9efd2fc2eba5ab18d281990e6f2371251438b82e24946f839f43fd646567e7d54d6e0a1b42d62ae36218f744a4c997fc235677c7365888bdcd8e03e5895e766232226c0e0e0a74b81f9d91d10d7e2c240b2da43cabd1a1a3b66a7530f6be0aa974b690e5a0ae3b0c8fb64bea2a3bcca7b7db43b407724e1b8aa403a3c5dea915ee523805459e537e274fb5bebbd3999aa63d4d6aad1b9dd6613c6e9ba7f8c4d07a463f13be128f55e5a31e500daa996e864ed4b3aedfec42e08313cfb9468195764e4b33759cc8af0aad7d1f116737a8278feb992827e5516ada32c4875cd88f30b57c454a35a69ad983c09bd00c25086cc19281160e517cf0d42d33a676e74cdd94d546f7c4eee9f6cb3d31e106787535f6b6d9dffd7e66027743c099006bfc9fcca79bb273a202be7cdcd92c1a60f7fcf7a118fdf481dc6cf888580c0f907d81935305e9307bd184203ea4129592d87ac8985410262ef9c4608d411bdc0844c05292679888ae79e936f813a499bf0ce65f54754d30d2cfbdd75d0c13da801d5419f80ecd99205ea61b6a2faf376c2c330a419a47dfce2ce3ec7f44b92dc6e3b0222010a2608d3f9547760216c7a0f3f93ae2bc690fd6ede99079d943ed7366a3b89b90775a3ea649bf88c5bd0fad30c48878381daa8fe5172228572fca3b21f73c848b8c928a7299c351050c675982670859919234c8fe9e8329ea113bfec13af6db0ef050ae099ac2d8b43d85519cdaae0664996a1c2a200f430efc48d34065e23659266242ec13c934af8a90370d637aabfb9b99973a9c87ac8f2642e48e833e341dc2b4d816ff5cbb54ab4ab4f11953db5ba68b1ac82dde5fb8379894b98cef0c042cd4f08014d9080413ff332bfa6d6e827ea36d1829f2802544b45e87d007744e5fae8c367644f638b34256b7a8a976582334ace912df39d347ac9005c4767474773054ec5a5464292df8c70ea6a3778ab3c80a0894141ae79bb6c549c92379950e903ec3995f7310455cac810e15d566264470a9a8c65083a6482848b808b78f05e0069ab43a47a63ad1828db0e21364e1d8d08295220bc29251da9f062642d6d992db09052b78edefbe4d53a0f3dcade771ac90d3c1dd3ac330952d350e9cba938a281824174112e7483ed0d7ff82b6656d318ad9e28d8e5a666c0e612c45eaf2863fe9c1eb0a21d14dde96c6c5bf7af052787d87a15980712943dc51c7f45acb3e75e77180a6ffa1eaba37b96d9a73415aaab86770d83dc89e3ceda0b3e39b74ba1da4e788ac56c83a3a7ebf4082a4b5b6b51e9b05378fbf8a9d08320ac1e08f10a6e9ea12052bf5e16e886c4123f0feb01311b9eb40fecc805ab3c8660b7ddd9201e0b475b2564126fcacabba6e9c291357895f519f58facf15103d213300076bc59bc5235c359ce5d01d4db8c44a480662ce53ff85c8d3c626254e5399305367e734d20078894c07e405ab76f2089dbe739f89b95fa56bc5c555a9b537e780d874d8af186ec13f83a52c19cc89d87e3332357a315f1d385f1e78c59b6b79011ea9a7efe0b420469cdbe202094eb56e9ea0bdf54279d3003ae507bdf530f74211c501eb8b0543be62eb3786c073df689a4727b94c2ae885d1d9c44fb293743bd0892743917b7a5833d8111362d5124a7c92401ebed79dfc48c15c00e5f2b2b648576b34da413d806c21542790ddeee0d93eb1573b4e15c71fe2127584b5c541b23aee281c7d1c1c555ad1a2167ba3d67b46cba4ce817837ecec17425aa7f5756eda37f0fa8ece9a210a3020af265fa4245e26611727bac12abc27f871e498b8cff6471db3cafeaa3e93b89c484d195cd2ab3abbcedebc3288b78e0dc0b557a54439e41431345a77ca0c870073d8d5bb291070510612443dc16f5a0b9f56be4e4c50517cc4b9a68809b715187eb6d5c4362a9cc044b1b70142758d08db030485bc3cf139de78a1d913ca5838e61bf1673f620c8d33dce32478e398a763378b53a921923bfb730cc64d789cdd2a93cd4526d1efe3de2b859d3140b0837aee2ef3d97784a78c706d14d217855d526ead386224b0981cc63093670876f10598100c8953aab65757b866ab45276230332e67fbf3d7f2b1e6ed94f17709f1acbfd8ee1814601dff8ac53a775ac4e0ab03922c6ace478e8d581db71204ef040db75101320f7da711033615cc07641d2aaaedf4e3461c5e9b4238ab462e9db8d5e205d0d7f4b42353039f26887d78feefc4fc309a4900064298c06bd100b15193c7a384e8c130c75b2e8b851f400f0b9e57070ab95086a7b267e1efde3550aa4e304fe0f08085d5840ef4da05f39bd5b1ac78be5af7a4e5f1c022c3c3f73e770a5c1e900cce95111026525214e422fd67ab5391c609069058cdbcb1add3e5a62bcf28e128a8d7fe9fdec9d42941a4c73d4cc40e3af0601edc08b896f257a103abad7557c95b0691955e939539391126c7fedd7a4171cc4639faef1018621b2d705f5a893a1df9e5b973b9f86dbd89350affee49a69a967fabd72f0ecdd3093d01e2cb7fb58b8dacf8f5de3c86f639e2efda23a5c1f0adc89e948d2c8e5166e71e0ba1491091e609d7e1507005fa4c770f39b794be287d021868ba4113f9df81bc181e2acfcbdf438c36b4fb93a9d07e901f8f8bce3873af6705740770a6dc8c23ce6fde0dda0d913a7a3146fa25fe0c65bc33a69fb045b1572f3ad619ca325d5e1a845417e6a22c97e49ff8d1564b1bb768d9d769bec8de3ae1389f1114c43511608213aaeb562cfc4deed80e06625ccf49e2226b8c79093e87c166a959960a4440712fa54c44f4cfdfe1dfc7938e87d96aca95cb6d303b324b87e7fb0a85c5d6e3920b26978b97a0b4588558c6c5a2be09846aedf2fda6af07f79acd31158c3049fdaace187aaaba133264b95097c3a24699c6e0101802bc2b63c0526283caf27e6bab86d5aeb0d48f3c6f1d7869bcd708f9502341ee7560e4faec691dbaee8ccf11b0d09bb12b36ce28f2adae55cdca6f5149bd70fbcbbd35c0c1374317579df146ad2acb8936e0f769caf132c8c78bc4cc6ff50eb39bcd0d39985f627c673a34d66823300dd258b5473425d29c62cec9642f54ab697c9032351fbd7f79ac88c24d252d4bfaddc8f2cd3e5ef6525dbb7340d5ba884bc17151e82d3f63cd72be0b2066722712ed2b5f4f6a5e79ef6fc3a929d2721b603ebd5dcd855d20278595af1771e17b4f8c5b337820b54648c903092816602a9b90f845301ed6eddb59737c546503c7fa49f400b179a799d505769c2fa613a9e7da7e8af22a00b50835bc9b12add1cd9a4e98c34ce81818c3e2a9067dd2a2e2e9aa5096a04bdc066071c0d34688c096d184d0eda09c833950c8311562e319637c41e6a2c5ff0159b54fc2eef1162a8c41aa949d913355870ad62540dc951fbd61668d78e877eef1635b20ad9d9d400d0f3f0f850c1c17bcf1c51233120984e30722f382cf1385e4bee98470dee41367849307498140b826be0478375258061d35a26681f2571991d778dd573605100c3bb8e0a45a25da44661cb058714b0ee8bbc8ca893316a66db5b0668c99aebdcf4921a449d8b7dd84f439eb28dd2e09916439dd440271579a20b22496e959114606ae4a99579968a1394745e3e06214452635590a72c2b8ebeeacf24f476481ee154e254a684c035e56e677d14d94ad1af193cb9c55953144130111f78ccc85c3563a1e66046d0b841a2dba2f45ed449e0a984f135b92c296fa202b8748e490a7d8a2dfd7eb1de23d5b504b8c5bff1f55faea365dbfbdecb0c23b3e18223ef4fd545bba2c76b33cddb49c4208ee72ab635ec4293ba5e35c7902299b9f99059c629e8c2cd55a7c01074f92d732352f1004ce18e8153871300f98004f7473344b78c6eadda89736e42c5dc976fa4d12247e08b864891d5152496c809c24b43a5e203a38d21fa4c40643f31a6ceea7748881875a75a674d00539d1d30a4325d6ee371ce44c56ed5fa774c73de7065e2806ac9b0fa6137e8ea179efcab8fbf45ea43adfc513ffebbdd90fd8e89419a36c700b7bf3c5fc404e02cd9f87b866c8bc625a4498f6402a7a92c7c1dbd4728dd6e865a67c6471f9a1dc8f922b9f85d9165f9ec858b4ec99ac9abeda5f3662a450dde529a4e55016495eaba5c28e94c91c6d49ee639cf303eb22abecb11d98beb1162b5bcb63e9189435512908f13d999aadd37dac6601e429e6d93de6d8335756bcf0cf1c25835bbdfeb6f65a4c6dec2a91e547d81177a015cd3b5adfccbf29e8e845709d20d4d490cff9bfc5e868bda817eeb958d3ffa64f23ef2f3694d524fa47453b3c5d992132abb8c7597012e459dbbe7162ccb573abcc67116a2bd79c21d8906a2ea19081bb7faf1ef7deee9dc549598e0c156d2311c9312243d297ee9f7f0097b0f368b25ccb8e0db4ce814a711e11acd59afbf89692a04c251aebaa3a22ad0e9a3518697ce2ec201539c584ac62bb8a08e29681b2f500bece1c530a6475cd618a6f8e4daab41e989f87e6bcfdda0f134c2ba9ee5e9927fd27bae5a4eadb24601647fe895c948af159ae511c2f1b90720f7b4714edb3304a9d818e7a9c212ac31c7eb1fc4f6cf5afbb9be051ffd291a07e47d82f527f583e0c204c955e30002e44419e12e7d17e403055ab14b8270130d2ec896e77d5d49862f6bba9c48274c3065a1e987d3c08bf000b5b9bbdb008cb4e5c1b517d53b21aa27b13eb2ea5558ad16e520b70aff1851d4f6ded7fc250610ef89a07f9cc9821447ec7883421c81581a11444484d0ae4d229671150259da9e2fb37a852d73dd97c13d034ba4530a73d71626b80c65dfdc581afcaabc12c75c86520da935b165256a2a5a590e99c1847ee795633c8ad12db9f4f56c17a0934c4e81f66090bc941f90f576a80097b1b4f49ab3471dd19ce53e5a43a9bb37cb816f5221f2da3f2c7ac10632c62fa43654203986468da6a7ae723476126aac9da36f5cf8a3bb33134c15d157a441b95f90fd96349d622d432c578e4c2551f88f864a87b344db61064ce0eb96d8f8d0af6cb9a80107441e7f6304440fa258aea5f9c1017df3c6f0ae655e961fa58a73b51a843145168a03b11cf3906d9167c02e6c0e10c1f0d6f37244895a31ef46fad2880582deb03b929d5b7e4a1d86292bbdc7e3266aebad774f6fddeadb4bc6d3f80fe05fdfed9a250e2385f7ad45e99cebe118c6a0c004c87d581b0e6bb364509b550e7b40ceb73e1a66f728b89be91db4c89c7b2f14616c9cfb144eabfc00a6cd10685774f062fe54609e833cb717b0ee7f5f817bae0dc1192f38fb44cfb11f85771e09c259eb3cc7a162788754fe98b87d96240cc2eb37446d6594d038bc7a13691bc329e3e1d51b216893337437848757572491ad4f59825aa6754e02aeda5bbd1627b0b25117045b036a7bce7f5e40125a690e134de811b4ac5efd2b433d7c3055fc0bc84cc96edf931e7651d97f8e55e41883526fbd359c22994284e610e0dac69940bb33f467a0bccf03c3de8ad8b931da21f867a283eab2c936602269adb5d65a68c9cade22b794324919f4079f087c072d0fd038a5b4d66aada5c12e0f8f0ff99092d2f491b2e846cb0334b7e581fab3e563277bd21dbae3484873c81c324aa21b2d0f68ee00377b979892d64eceb9b593736eede49c5b3adcd0380568dabab16d1bdeb1c3068a2d90c32ac3016451052c109b58011426284932e7f499411699109198d0027d9ab3484e25b29473c264d3e443101b01ac04838007a11150522110c4233083d408d83b95500810000742587a6d31841f9c044161831dfc70c3111dd881120c016ccb1b1f37008104c90f215c604326d104104000822792bce0061b32c8964ebc51464aa54fa68fc6a8421ce2aca1c3183ef1c5044a1ba7138dc14d4ca68f61d6483591d1a347195b469e4c388553168845c2f0cb784f5fc68ba4d13dfdf1bfa73fde1aa9a7f4a78439fdeae96b1aa37afa5688c67ca12db24c668d54688f58a1a42d6b8550a1942e4cb6fdac02a58dd5aac8daa2ad52bd3dd2de6a3fba35fd8c9ba4687f057eb4655f054a2d5d6cf5428984ce1648ba5819e962efcfbe1cb881a3cca8daf6332cb745d25e7d90650cec545b416663199b86f7e38beac75fbd94354eafbd9430ddffd3985528435bb3c6296c61ceb0af0a5fda48a564688cde7c43a1be8559a365ceb06f33b9844ee994d2db71267073516b6207b4266adf81528a299003b51dedd6b6f05699c7aceddce698f002135e5047b82f658d3a67d4bf2f5e4a9811a458bfe5a584697177f12630f50f92f02018e34700593e044bf83a6b0d29d6af8f554f5f8e286cd46fd40740c2a05ea431e1a3fe45d2d01ef51f8d91a89fa8c734067cd46b1af3af5285d8452a1a693cc2d76ff999409286f675db3812fedf478c07bbd75cf7fa159001d9aabf658b260352acbfa5583f5bac5b7918bff2526e1821b645230d822ca82fe16d6c3cc8820a595ef807bfe61f7cd483210f23a8b006fc12421e311e7c1e24601a53c2d7d7928626658d185f6bbd21fa40abfe7bd4af7ebaf8995af9c0224af8155844f8aa121e15c6f84ac2d7c74163c0afef028df9af7873cfbdfc91eeeea5fccef3f4cb9670a45b3f0b88828ba88f316b0440ce407d45fd299c5f0228d216ea5d802fd205f562658523de31404c5ba8270194e2aa7e0d5538d68d922ea8d08ebe4daf85be2d65d79d6c8ff3270b410d7c912efe20f8a0a4d917803d855a3c1b99608a061b8d7337e6cfd609bc2a27edb6c8541421044545d8219bd1dfeb2d898a60030e53b4982204144c319a62059dd1df4fa9c11212a3d5caa52782829062882194349101c52008cfa70ad20d98c0614a9316bc6ca916206019ad16004c68bc5425690acef43997a424ed948bef340a295288bc6ca916293430a18714294432294a60a0c4446b41c5bdda8cfe5e6989c65ffa74ea1eb2b040a9cf3925f589d9aeca3a6b485958f0af4fe361a5de0116eafbd3541bf7ea6f43e7062ccdad214b0df6f61580d9592ba5944e893b1afa44a699b4098bbd34d45467997fb62e71c7d19085c6432c5d58f0b74f411ab7f6a99dbe8257392d9d93dec7bee63e76312b2f9d136716d3fbd82be06299d5389a4c6d46e7d4682852916595ad519a1986dc46391bd6ea9827634fef0cf40d47fbc38277f677b454d0b896539401d51c230a84798cee90f3286dc77cb6e34ca8ee20114dcf1e890ab9bb533c64fb534a6925aad5de1b8b613f5bac81ce0c7077c6625958d03e7b1a2d2cdafe99f5d94ead2dda1e8ed85751bad45003445b87fdd96e93cd4c29cb18a32674b51fcd475b818664ce707ac7960f12ed675f0d8986a462f85a7cabdc31210a3d6a3c3c9a9075ea826c3f7b629116ab9836d093d20741e92231fcf76bf05f7c294763e7942e12bbb406ff7d05e0502694a1ad4b31e568dc7bc1dc0c62d10cb30a4793edc49b056bc55c16d2d8f00a6ccb5ab67dfe1aedb32d6b19368b8a6a4ecda14014c8c8c8799c670ecd21a9340fe075a7ee6cf9eeeeee543ea594521aac22ed29bfd65a69acf5217bcab7d65626533e86512653fe0d45265a6eacd6dadaf3c7d6d6b20e7f7d1a1cb2e08d85e3b8efdbfa63569f060bad8ff50959c20ad4700518fb8662b8028c6d4351ba5cdf6a9052440a12294494922831512aa28444498812112d969474b478a2459216544ce999023445670a0aa62099b204869f1baeb8018a901e10d8c0b2406a82075390a007af259620dac418d45fb6548bd2d166d992480a0e538aec31861090ef7bd1891b2411e188fa0cf238378b02a40dfb3ca4908d0cd4cf807d53dd527481b6276c008c73ca64ac02236c175bc2acbeedac550176be78a31c0318e07a62c7d81e0935dc2fd8d9534d49b7ad557bad9d314aa9cf39e79458eef0cae799654a16dad1b05deeec8d73833bdbed05778365621c8b0c5db072d748211b7575552a550a8542a150a7d504553b9f5c984c26ed799ee775a7adc3d2a5cb388edb72ce396bddd6f94f10dc196b3e25f6b00659e8156829f4a889d0494e58adbfc75b1265e1430ca6d34aadc4e4fb01dc00b24a15df9686d5f79532b3dd7c624685a413e0ec5e9c444417e3063fdcab82149af9927ac058c33809488e7183a41ab21a454a467fd0e30703fd7d515a90a402cd87a413241191f443520f4940926a8822e54994a4284ba23489d28289b12082d6ee0d42ce1c0b27f8fb25302c094bb120c1ad181644b20c8b9e2842a2188942444b92356fc337534d4529a5f7627c2fc698f6f2620f638c7196590bcacc7a9af779fb1b5e6c70ef7dbef75ef0eeb9318b3186b1b097d57b47f85eb4b0b8800163e5c31dbe60d6427cb346428a65e563ad5cb850a5b20e63b6e3bcbd75315027934ea5bc2eebaed7715bc771f866d904f102d8b91f59662fdc868b10d100c5300cc3b070749e6dbf173b22e7f19e25db7ec721d9f6373fb2ed632f42440318cd71226742719692fcc89b64605728a6fb32d098e9f3227e1269d7baad0c8fb634663e79e9c251c4d97669dbdfc2f19b3e139bf7de7bb3ccce811ffb5187cc68ab11940a0509354510e4ecda816b072f203a3db95554545454545454f40292c50bc8931c2469f202c2e405c4a7891710a021c02a905e407ebc38e0e405c407901b1e2cd963dd1e843d621d243a4f9a5ce15214b10327e59c3a43747ee674771d9ea457101c27484b9a000d1139d2819d214baf0ee818bd72507ae5c083254d8ebc7248d253e49503ce2b07212f9d9c97ced24b270a510d327d8ce5bc773a8639b596d65aaba5d462ee58ab0abdc27c297f8a2fd24582ee7352a218620f312e1bfe28e050244612710087edafc20b879eed5f23670683edafb325dba798db69b5d8bd18bb17e32cbb38bb18675ade382ee76de3ba6edb38aef33c8eebba79675602295e3e9c78f9087af930c1cb47113ff0f0f2b163a4f4c4c90bc705d888944378e51ce9e09543035b6b0c5a20f4ca017ae594e095a3f3ca11e295d383f4cab90922e50b87e8c7107e30f921841f497e3cf901f4e3c80f213f4af08388d28f9c1b8a8c766a665a96016d7fca641bd2b2a6dd2064fb5b138cf8750311a4d70d1e78f970f2ba01c8eb869b978f9b978f1a5c40ca0a6444797c48e9072f0e08b58052263e23fa2b02c311811240383da080934396b77ce1d4b0c30edcfdbe175f360ce1872a96bc6c207ad9e082970d412fd0d8919f8ab77cd9f003295ac8132f1b82bc6cc8b9dd962f1b8420c292ee496cf9f547d238c91bfca088273a90309388c989a4a18dd00f4c2da8902d9fea20616612e59134bc974f77248d6e6ee12e7025ee8484f1243e2469702fdf85248dcd6120c587a42148182a4449d2c8489286267d20451a8484a14fa6cf954b4891be2061ea1117617001c6fe90a2c5e9b11a5a452145faaa24544aaa22a474a0f2511d91d2215594aa02e5442a2705e4340414104a05a720ec0f09730a8214711ce664b44fab1e9bbe6935b48a42ab92d8f43d9592aa085d4a079b3ea7f2511db1a574d8f473aa285585867262d3cf52392920f734844d1fa380502ac0c61515a7205645d285fec9c86156af531024cc8a89acd6be20e230a6252629a6d8542fe92a52a46ff2a18b6824b4125e13cfb3c2d3f182783c7448ba263a284ef206269314a625a6297415bd64f2a191d045b4125e0ebc269e155e104fc7e3a16ba243d24181612d33c961b823ee8a2cb81e0e0829d2e788d8966cdb14792957d97ce4221989ac849e454c22d388d7715770475c161c105c0f47c426c5b6649b2257c94b9b8f8c442e9295b8b7822c9ec461b4265a0eacd854d3d1824891bec64386246b428af43328f011be0267d14d2d66d2dc82d372a035d1acd082683a1a0f591319920c0a7c053ec25960ec4288c3e01e0c0426e22eb952dc29b025accaf5b1b9128741d6301015f76022ae1477c99d02ab822d5d1f5916aed0270e8315c19068920329d2b742a33e5021540419860456045362d39738074d426b8583dfcef588c3581d17e9db20a71e1747cbc3a53e9030f2e91321e0221b24b43a33b43c6cfa78cb9275ead994c5235de8d72524ab67d3677d408a54c95e1131b122922e49f4c81a42c41ab2e99f7a569b85a4e70c2746b409382448c20700411881136d420d3a06da0aad54b5fefe55c314af1a960091eb8f13bae342487308917c9b3d8d9cf2501faa4a76fa78c6c428f40cc528b418851ef1967362405e3d7ed0638915489ad4578f9f8b61455e3d745e3d46f0ead14325c9eb86caeba6c946a4654d23a2c264fbdba011bf6e5e37af9b2a4aaf9bd74d952b7654f141152aaac8a0ca0baa34510505558c54e1a9e253e5a6ca0e95252a465494a83ca1348522737aad24b0b605155c9411a325e5c2e755c3ceabc7d2088808f1aa6167c89c73ce578fa5570d3af2d54369a7bc2b744d41e091906942029926364cf460e9074676a28860c7c655a2879b2484e8514568e67bf1550392570d525e355c9124cb39dd29add55a0c937fe528630321e3b7f6f18f22d7695bb61d97ed962fb6f76d0e37607f32a7556449b14dcb3fbe7c2829fa8f55bb38bdc742d15112e604f989277cc78512db326d4eedb517e9625f0365e0af14e3db6d6e9f6429a355421bafec10a5e1a8c3fed89fec76686a1fed83b1d6dff77f43eab327f62b34f0632aa13d6a52b6cb2b1ee9fb33f4d2af1390c9f41d0929fbdac7a176224ea18730d6fafbfe87ecd0f67094d937a49876b2fd2d5deddc2a660e502793b641bc8edbb296cd3a844791294dc91160bc686171b1f2b156aa14ea64d25ec76d59c3b933a04204c7164932323b98e1a801a2237bdca4fc6d5a2113c3041c4829820f18f163831b1ea0a00606f0c1c80e109038d941164234c0a513295388000640a8c0718288228a5e472110c293251c2065035e74989c20498f201e6c900181440bb0c0a28810f430a3903206179000003cf0987892399dd2235b10a140d0e9be34c524f4c4342665855d42cbcfd8d642011d0116504c00b2c5ce16374520a2c58314b249971d9ca3b13737f5595680b169e84843cce9943a0982bb918115acb562a225a23d6e3babb804598e301d875b04c8bd4917e95ebdd73c5bf6c8e7640dcb3367603d7306e599337a660dad47e3e9e9d9f47e1ec10eb143ac53ea1a922156884d5beae7a226347e30b6e59935b42273067d4a9f88f5b146c819d41eb1a98776888b3dd41bd28a50ad04986b4016f480a40b05ba9827e409d1180d4803dad4135a21db1a908b542ba244919f234b606d68d31fed102d8974a18f819a9086c4450d0a39836a299033e853259b6a2a902ef4721a9074a13f04c808394423a2f9481a563b62d3cf197d8da73e9d95ce9e7bc30a62bb5b1dd0636d05e1a4bf4794958a20842326245987e9b4b62c862d60b2a468b598ccbd26ece877916ed452706ecad18814a82d18eb68e8efb408124368a13d08fdd20ec48cfe7ea9674967a9880e6e277fbefc1f220b4416f8e7e9e0dcd9bb1172c8b4d18e71983f2b9b29eb72a6f7e6f5c27b7192c77a4ecf7bace930c7fcd10bf1e94d7fbb2daba8f3f03c0fe55d5003c7ba35ad35efbeea671ce5bd4a857a0d158e3bbcfb56fe62bd027e59c7fda843f35e357752286a7afc59eb7e9eb4d0393a9944049da37bbbe7097f97655e38daec8d9bfa4f60f71c37c399e33037f4242e66d9e6cd1d9e223d3b42b4cb6d5c98fd04b7ed66f3a74a2df4dc630a9bbe9c2ae068a166c353f4f8183f46849f21ce99c7bcd9311d68ceb038db7c2d0b94e00e0f9a429a6e28f784641963f49b4dabc432939a942fddcb7900d3ea538f4271a9540a8542a1b84fa552cfa154618efb2bd38fa97087efcbfad5497b2f1e85f2501eca4379a89fa128ef438163dd28ef55aa30c7fc173fe31f386e60e748fd8b7f0143f52855ea3d6eb64c96e962aeccc97a0e463856c066a7fe056a0a519670d42ec2f15b09c7ffc2515485e3cbeab9cf2870058e27d6676c6b2911d9340b9de3f496c5fdc9cbd97198940e8fe9e909543d0b3cbd099ccf81a65538aac2d34f204f3f957bfea0ead19c61fa13680abdbfa0fe19aaa7e7bd78865e3e00edec5b076ef8e8b6948e6e386f1c668635c9451d32ecc0000f9c96143d4aa2711ae062ad2cf4bce18cc16166386170182e1c6db6f7109080c3744fffb583903d4ea1712ecd25af1d7436fd99a442f142aeebae1db9b002361fbddf77b32509362d53379973a220caf8185f8b4ecd1cdab27f438a0dd9d65a6badb556ba7cb4cb478f52480b5f44f1fffba6918bd67fbe17fbf2b32f13afff28b968a710d6df8b2fef6281b6f6676866dd68db99e3f950ea52a2310b586bad9d93db723767e5b6dccd39ad5b241650f0167d0e9cc9ae26f4f8e25a81a63fbe6419285bf64dc160217dc17a63e9add91af59d608caf76aea06dab6dfa3354a38f5f36cd9cfb40bed9338b89fd9c73ce392b14dfe305b69499b17129d1f567e8ad610a18a594d68a84b1d6dff72f8a154ad52e8ee7c0217b8d2a946a2d466bb535ac46f571b898d0935628d6731148f66ff9d261c9ce32cb39e78f03619a66c371ee04d48b61169b40f3c7835c6822d1982dbf07d1cf2d2268faaf9d57901b76f66d7318ec62217d69b3c35b5b48d25d46e8512ed9f45d46d45aa70765e01121cca544dfe7c029c45bf4b78c7e11398714538af4d1773da1e923edf91e3489b4a1ce76b6eb72ceb9b3df650ff220ad81b42fd17afe389027d15a731c669fcec7f34fa699e79129348f4c241ee4411ee4f9fdf900ce766df9e229cad6669bede7dc3d95b7eb72ee2a5285d2a552dd57a3d4d7a3d4522ad575f9b9d9d5a4542a69731c46e73c4dd3d4d39bdc4c8563056c76770ab12753a1542815ca95c2c2582fbf1eb1306cc99592b08aa4aa46584dc230d68f15e962d8079e60036cf5d8ab50d774bd7beb7df11bebb57fc1fa16d6b3b0de05eb5758ff81ab5087cc565dacbf7d3f2e6b374b6d2bcf7cf8e0732ff63ef0f480b49dbc7a2872efbd0e74af2fb9b38673890f2571a13b7f3c49ce4239e7136c90b98bfa9afa7b3989528563f7525f7de711e9e216ead87676d2c21d3528b5dd292e447d09c618d398d3e370bc4ff19f52dd731e38916c0fe59d382e1cb11b8e3b2af699b6a37a90077990076da0da788ee5d0430f0f49f4fe0edff4c98b07242f1e8abc84285529a9a4924a9ac29e2f2f9ef2c78a14eea09462aafda5dfaf5ed29815177ffa96efb66f01594017e00af881381c318cc2a7d0147ae1288a346ba10e994db30aa54249a9fcfa80b10c3a3f6b9ec485341d64ed6fe00e1d14347f9082e68ccc6b8f234d3c37969e641e01a231abbfdb952e84b465a14441064c41a7bcb5e119dfb66ddbb62dfb6ddbb62dcbb60c447d9ea0ddaf3265d9c54237cb404fdc4993fb1bc6392bf2797ff426fbbe0bf761b8d9449a491eb3fa1bbeb8887d2b498f7ac332f0f413acbbfabd17e3257b9c77c31868d6b89f799289b72be4fdfc3cbad09efffae6f0df3efbec33ffd56f736f3ae6cde63bd09c714da0a3ba393bafd3df4ded7d9e9bf65be8417346f75ea7ffeea87ffa0caac014b84fe05c72b23568b7369390245137912eb6e9dfed5d601ddb12fe153893bc753fdf57812ed0d6fd14288b34e039db044aa4ad416c73a0f49ba57d7fcb409d48db044aa2adc1ba3d709c464ff6fdcd8382e68cdb81d783660dfafe1ee6fc77fb9bf1a6e1f913e441acd7909b2d6ef9daa168e37f7911454cb3ecb3ecab91c3e02ccb2cc620ce9ebecd5e5e4471fc2c938102c508a9072f0f1479e9b06487bc7440b25f428cf600b67c09f9d92f213b3b6fecb1c95a6b6d4d72982953a1681c0d568da4b55f9132ee86c5dc8d2bf3bdecbcd434aaefd3c7fdfaf5eb7729df9b25945943f577e57edfdd7de5286c7777cf2a709c3a64ee884f9f1db45b06ed5f3c5f5b9130fd0ede70aca306b65f21bea3635ffb6b9bb3af75776c63eed6ea6cfba32f714fb2ede63d309a06a3ad43c689fcc3e9c4c5fa2d2c747d593186bd44494d79580cd4a3b9a4596b649326f6598716497bdf2ce6bf8539b051878c110a4e6414c5206a19ba42bbd6bf98ccc62c86616fb37fc6d1a4404e46ef910215058e27709c46bbca6ae4a2dd64aab847995d656c6641d3cf97340673e188b5febe51dc1e9a300cc3300c33698f99be4299334c3fe3d904cecfba2ce03ddf7dfeab54d9445dab401ab9b1377137b090bb915285a3cd56fd4d00fed135845ef9ef574f3faf582c168bf5b1582b2c960b168b85c56a61b15eb0584740295d301068df104bb259acbb2b8bc5fa0d6c9663d8ea2587fdea1dc47ee5be72ffec6f0898ecc9cd3037cae70c17bc8f81d97dd40d0769e4be2e1f17025b7091be032579180f71a8307f7e8426916b045afbb6a552ae22747daa527d2a4c6117e794b5c33e0b5d4210f9d35fd19efece718e1c47e7e885f5fcc205daa244e10356c00ffcdec6c6ca7f210f23d8f3f87ea5c6c5affc4ac863e55dac2692285a1b259112cea6afd42293c2f7d83c82b11ec3b0d5538761fdea635a9e7e66dd70fec81cc156ab9f73de8b61feab573dcb66b354ab145ca440ab5086057b90055bf91a17cff2dfaf1c99402c20a6adec5d642b6fc3587abb2cd62625d1e967dc851a18c66fa346bd513fe28d423d0be8025c013f309f381ca86dba6aa3abadb236fb6dd8ca6a156659f659a64a811e7723c562b15c381afbf9abd5df7babea31d5afc05186bd7d0acc3f39eec6b66949348a264ed671db787278dbb5c3c28b8ddb6ee1054a9631a4eb871e3f17117a52fcf9573f4b1c1fdc773418f1a7617bef2ff7dde693e585edbdafd9def3d05aafeeeed66ea0f427aa580860cb570892b60cc65acb504a75d073fbcfa739c3e1adeaaef5e3bffa317e3d8f3ed67f5fc3faefc5b3582dcfa22fbee5c7f9e34a4b1e03a3beb030601cf93c7201e7c5b77c7611d193e53e0cac677918be5fa1c1484dcbaf3c0d2f4216fa2ccf7a96a7a125647981e5595fc3c2fa9aff7e25cc9fa9cd3ebd73374e9fa774e1e8ebe0b8c3da6cb7a6bfa6cfe028c336cd2324f7c9f121926e55ea25f7aacf7463bd8d0dff9ef535dfb358ff85352bfffd4a6863c3c37147cdae1f42171245a3fe682ab9c0d1c25fa0cd85384ca5dbd71ce3e2eb6ff5fda5e78c72c8755cdc6c329928fd7c7a39e3367b03756cfb14b6e062cd393466fed0fa7368f52e22f4387f66dcf356befe149234e8c77c5f7f12d118d6d723a44837e7f3f3081e1a23e9f4f1b086e1e459016578cbff638562a8b35f81dcfc5181a369a7c09cad73f9e8d173dc6f0c4e9d7a0843a6a00b2ed69c5b70b13e0e2ab7bb7e48dae2a1ad07380142cf7003cf1fd70fbd71276c8331ed481add9435e6d19c51b904cc2517c5faa6df42df912e26f128cf711e79e00c7e235deabbe7646e53baafa58bdd903286317dcff11cd7f118d6d7ffefbb976381aef3238afffee3f5a9e7f4681976380c0f87b9c199395387c5ff6f2a65846b08cdfaef4789f4a30b2ed68fc1c5faf34739545f86afcea1f9e30a811e3d27c7612e8fff05e7769d1d210ed3338488c35c175931dffc8f054af962ca00f847ff1ba65c9c9c962e9ec298bba1ddeb3a92892860acf5f7798e1ff19ccc5d3b9abe06d68b4d9fb5bb1b83d24597d3bd7637ac5b722b6cfb86385cf0185c08e53192b2d4bbbed0970f6b31e4585e40fde96b50e12994b4552369cba3ff0017e9bb6cd0f4b3d7a88f9f55600a3c815ef53ceb7998e7792f1d46569f32b6bcdc0dee4da6700670dc5c381e38eaed693a411ddbd60ee20de46ee0b7af5d1c91b29b2cb347df5501970dfa299ef835198c806ab78b437c19c0850cb89b0b47e3b79a04c71d5b4a0962709c4764d8b54e22205c3e5a46a6294a43ad69db6f97117a7c0de71c6ed7103d5d4180a0c80f421bc79d3e73600e2ec70c779b5e6ecc81a797dc0c779fc21cdccbfd197833cbddb8d99bc009eabf09d0cfddf05ee66e1b37b0e9cddbbdf43376e706d2bf9ab5b9a00bc8bd4fb38537c4d225df4fbd8d8ded862c2fa03ef53546eef3c035a84f7d2ae411dad8e85e72375c1cd09c7451ba98b9c7d2257be00ce56ee40ccc17cc61fa2c7b9306e59e1abce086b7e7fe82db73e08d6d6fdbdf7b6fc665d95f2f64b9df8154e33e5330c76b9ae45e721dc7fd8c6b207decb9cfbf3d05f36ff4396ab325f7d4855ca43b632f390dab5f692897d03ad7ea52b20268dffe8d39bd3f8d41bdcb2dd73fd590e585d49fbe26f5271ea74fd5b026f5a847853c509fcaae1ff4f83b941145677f7ad48f32a9c9f61d18e011c3033c46f5be9d38afceb7ddcfb80cb1cbee71e1e3185983a3cdd67f83e35c387a9c47be33bdf7d3667ba08e6d9ba896bb4aaee3dedf5f56d4890b451765f60c47ba73380660fbd0b67d885b8020e422fdc7dec6c6a461c8c3087d1ed8dfb006f3b88fa79c40764e219182325c9c3f279d22b3b0e02f9fc631a642a753a1d3a9d0e954e8742a743a153a5d5468709675f2ddc7093d4ee8e1faa13597d635c4a882c37cf493a131353538688c8ccc908c8cadff69daf2e9f487a7a1093f68171ee913fabe1fba0587193fecd9041e70bc455f2a6180c6cc28cdb848ab680fe5e7f4a3760757161ae38b6198a5eecaa252c7d2054b1721cd4ef77fc9e5ec3fa9f68a737e9bb37e0ee3be4687dcd77861c636ab1acddb66410eebece7908585ededd36c32872e1c3d5f03b1ff198a75c86c2cd4e0472b389a367d2aefbfb950cefc7de2fbd2f167d083e68f0379d00c0e155e688b7e26b3297dd78d07b96eac942c63648cb5febe7f5126058cfe29d3268fcb5ef6ac50aa513d823267cc108607c4e0227d09d0981fb1178eba0b47fdfdbfecd657a1a45a5534de74a027a8342dd6a639c9d4d00800005000f315000030140e8783229120caa24450e60e14000d7ba04a58461bc7e2a13088611406610c31ca18438c01c0184290523243360091c2b032b848390fa3868efe95687c66c407bc0e1b16d73d529ea1690d56e3c62415d9fc60808da85b2ab21f3f649b41274458cd80eb0502f618a976229b5ddcfdf801b6362e2ddb8c46625122ab4e09c5ba5733e3f71a9639d17ffd4ea0b9a01b42174deb8976d1c5119a4d3dcd0d6775e438980880e27d3ec66c14202c07c93fd9f7477f3735e10b10ff7035f46f70e408f757818a8e88977a41339c954e3548376ff358267181512c1ffe56b3b567e1056d3389d0e537259c98008f5a6e47b5d99aa8668a2192de0e11cfd55bf8a1577472cc33c538ca41bb1c95225706ec9b1abe112ae52cbf6db9443e97357050fc44570fee7d65fee5b516489c6cc7d9d4bbb678c987fe2ea6df693ffa9111f873313de282af13e2ba122226e570c7b09c19e9c32b2c2343b53b5238efc0f2da96572267714518c9f67d360b3839403527e7806f8fce174dbdcd818320fd83d9881074ac3b380bef3704ef3e106b7bb74a427fa1f9639a4ae2e2825667a77ec5f8085383dbe2484465d13353e99841096947f72ae9596eddba8cc4aa11402f4ba5fc0368dfa6991a32827f62af9eaab3d76fba7630fac37d5d882bf44730da6d3193cae91ad9087c9848731ca8450ea0f5448877bb5d49cae2770ebf525742f9723e540cb396085ffe15fb1eeea8e2f3201250d06cb0b788f05d3bc5920dd881a7510186a4a43ee9c4e9615bc2763b0335f61d614128f6b15685da680ca6eeb04ddc8d1587a8eb72bcec3aab3db95a32f1c4e7e5421c1f6bf44525de0b6e23ed643431a35e7ced22987f0ac923a4ed1733a1cb0120017de2306dbe7d7d11bf7ff6b9d95b39d77af029c2ad1bae78cb0123878a71be8ab76476ceb04635f5f6ebd2b25d56b79dfb595451cd852c1a61e4a5bb8084f798ab72ec3b7404042334329d6a708a7fb2fb8c6a99de2fcd707192c99170a4899e8204a4327c863a217f88f1a62938a455389a0dfaf728d5fe8b830fa6ae6a18585da82b222ea2a7201a0871e9a9b7c8838a91a11d8c57da1b1b2f9761c312c84f530213e79f4c9e01727e5e152dbde6d04687d41a699ecef24650344ade2a42ff86acb26265c72adf561050e897272ec09a2de9953294881e4f24c3b73993ce67fd5a7e28bd1106e7ce5ab0961a3143d4bd4e6ccde07f41d868de95563c46be99042092d117c358bfc0b72babd4053c200d25fa1bb61cce97ad313337a815da32f13b846a95247a9d08fcd8f1d36450b6d77f74d98790e1bdcf908bea28f6b990d429044f70082ba357a0efa6fa3d7335ebea9ca16d0a725a30ba5b47164a3003c7f5fa7199990257e8d3347e0bc0d1fac1b0b990c6e0967145a77e3977f520a2fae8375e69a26a3db3a82aedaf37da3c3052a5ba493256a631667b55c0b081226a0374f435568144aaa0bba87d6dda299e35f9f3f52722fb5f451470a9608b764924ea9a54053d3b764f1d82b957a58584775c5678c226e0fbb1430b5616ac285fd7a21f5a0cca6f3ab3b99f71f2e31c5b64bb21c11fbacc495c11f9a756cb5b54b874a0f0540542f4781de5a9b6fbd34e10f90ef4c21eda2e100cf9a5289aa892aed102a2275ef67b2f838e28d002e7ca0756e29b164d489cfce16f98761dce3ff07bc32c67d2481c7a1ea76946254d484c62ad5b2d886f703846ee527971768814ba585630e4bc9f4ca309a5dba198190bcdac95243cb000a31c71b2ff2d4697ec56dfc49ffced2c5ebcef84ec588b06d282bd5b9a7c56b04d428337fbd07861bb71102182ffc87390fedfc6b1a4b2828debe038148862e247b3efe6251a32d7dee8f833190f006b50fc99171c739b7a6e99641d083597faff341c44ff216437f382ad05bfd316c802ffd473ff401c6bbdce99f3928869bb6b64ec423ace3a6ff128e720f2a844f2122787782a61dbd825a71b5f2cc507b0a565caa0085b420873364c9e2554b19a9845b8727674ad17b445f762aef61653b47bb336b59986c36daa8ee5b3258f316a86aa19b7d1813ee5c3f9f5f833073e0b33f33d1297c3c7612b397c84deccbb229c8a091f124ed590de29d76ee38f8cbae42df1df36ae99196abfd96348e2cb2158f5d0e8a37482b8f3428f4a565855653b67cd17fed716d176837bdde6d93fe89c29f7863f365e5ac767fe8152300090379316b83ecbe5a1c43e60444f3b8e1e21d1a1bb9270647b4d5ea3e5036bd05da219fd230ac9f2a96bfa6dd32f53a77fe56f990c1398df98b9b6700860835a25cfa8e1ac2998c4f91546c3cd4ad227f908fe01df242d2214efcfb16e2b5ec257e46aed440bda075eba588abd08844aac726b586f53904f42f0b4db607f15c146bc8ece07a9a67ee6bfe14dbad03fc0b90a40335e4a71c984f822d2c7fa709c7be2989dccd0f67e8dc0762a7cde81ebd7cbbc8a3caf56ac290afe4768627cf9e686f95d8c6e05992f9c4e4be47bf53964f8c159e81156e5ffd6c4ecec872f1d339d62a85503164fadce43f134b90ff5afa07add9b6e09cc7888080e5ab52f0142d7f844916210693365e2c052c9ed3866195e02f046021d3e666aa86d0539c60b8b57e71061f5f203ae8f666ef1cd4808befeb61303fc4bf3781f5be80bf3c0c111f722ee729ab27e26f73879e0a8307eddce54de4102d04b3845f80db4ec3c31ba0ef9c813b81adff64674b66ea15eeb1931f85f89962137bebd0fc911c58f84d5d37d26cb7c30ae56a65906570a03571afaae4a6a85071d458f035b04c8b09792d0a44682a55934f229d5046fa2d4f4ccef12aba2e5a29937543ee8aba755e04c92e6fa3941bc0c2e216b0495401b72b8677f2034b93384c1e17a3d0500fa17a22bebbc3b0dfe28bf7a6602802108ccbebc65a17c7b945e8cf5d8a7cb0648a5ef3c46803816cb2127eb6bb80510058fcbae9a83b9bd3ce82fc792d3e0b71a497c1982824e2c6796df504420dded21742ceefb084ac35531056a1d559518f965cbd63612e235f2aeaded830dd74f5578bcb293a6e8419694b8b40ce825dea2d57434ad39840ca08a2b79c62966c1897b7e0bc863245318fc35d0d4b40e020be625a8372a3da46c9b179e7f1c295559b4fece85f9fe3f6521a2345f7dac172c6e73da9a4bdd1f52b0a0bd40e87376cc868c0b36d654cc2bd5ed28cc58f946a194b0b83b76bd056bbd900a5e03fe74acf33e31e2f581d742d272d96c109210727b4368b1a1a4e30a9ffc8aeb90ebcdfd05da5e754719ad79d7cf9e3da43cdc943edaab209a82ae7bca52a25f375368553cf3092741d5296688eb546b2d1defe09cc0ca93a709036f9b3fdbe9fb66b86706ab3257cec58950253a5a38367d9cd50bbb43c54e3114e90110d74de6d3e9fd85c17f30278d188848424f921ebb0cfa11fbd9c7982c3c2cadf34638f1d091d74ea3f1893c4786768220109c080eb6248d751ce8b6b7946e46fafd72ce4dc96ae046e474f5ac0950a50a0a5841ac6e281afac21abc7a1860f5e8d57fb43fcf4529803673c17b19711832f9febaeeb5252bb1898f088aa5fd88e8d74efb96b3e7dc935167a5675a9bfd28115c34734999585be39a37e598ea3830d2bd1aef982ede7ccad77faa2bb07e58658fd0cc2dbf525dad26ec636acd145b32bf6e0d6592deb5faaec988fb9e011a6613d0b2f914cfaab7d9f634ad000b113ac4ae930e95b9aac74fd2348f5dc9eee4114d801fbf08756189d8f11c6a5b5a17d7263c6c8b98946c4317ed4a0f418e65b619969c9dbdd71ec67db5ef59f3227c1bd5af73d08293cd609ee25de368423bfda605fbbf6202ec3c8544bf82ef30627dd30075e78da07f7be67d12361d99085c5f70fbe8712e47f6343d173a0ee636678d88f3b23c447696455c91f4e5224ce982e90213188c6224ce34f2e4e6f57559515437fef9d4a9cffd438d2af33af4762f1455a641629268c987a7870e1c90b4b88d5b0914c9756ea2abe8012dd958eb609f6d53cddc07b533764a19cb666ff486b2cfe2e2d5dc13012f55ef85319999973cc46740203ff43ee6b60bdc1219031853fa51020439db0f80863579055c5fa53dc00dcc6edc1dde8055a45658589fa29032faa17e3304458a4742e12199040a88f9b9d7d6ce12954b04ac5dcd53b126deaccb3d08ca5a1d7406ccf49f3da4f877a144ad76abe401b33a6a61d3e1c14eaa80df919b9c06c2babd4091504c205df1fdc0c45444512206cbb9fb2263aaa82433b5c99818e45d69ad1129b999abdec3ddf09178af03cc83b5cb11b4b908042dd0f5cceb69f0f5358bbc1b260616c977fadf5e691e5363b3aa4e3afc41b9aaaa971ec7f6bed81ec45f27a5f29a85b15e4c98ed7f74ac45e5374c0dd926307c18e1972169c7f95dede3f3137bca4f241b07ef34b0464d22b14121701cd30644712c10635d16dc035e36bf767930f872045371d8cb02a6c406b4596e02b136f4c912c01114a6971e9bdc549c822987a14db3cc40600f1c43c3a6f94fbc0a57278d206324725699f5f28c09633d48b39161e10a05c64f0143397581f2a22936c49381e9a531923cd609fdd8ef414fde931848449963192f70b07adbb76f18b18b78673b81b240ec342c768226f125d6840c26e446d3f5f2b6e0ce8d51ca3aa811510aadeba8eddc00f245c7b0d53bb91f5d736bd68ce2ab50846eca7c297209e04aa7243d213614b4099fb2b4b36cff8c1854d1b47744997dd1b4eaeb494e8b2b260ca22501db291fcdaa4e83c1acc96e2934621afe4443c834c5139d96182ecafc14f4083c857070b412569d0dde5b2c04d03430567cd73c58c0bd8366388301da140f67270745a625bfa19f293a94fb4d7ab3a0df690ed47b3b74eba310d008c1c50b0bb1142190d9ea41a2a4ed2457621dcc1019111cf8d41163b7de6237cf88b350c74764720915128132a8232d320983064dce67ffa85c37255d556b42c24935b79f69b1728bb1a71cdec60bec5656b8e2af8797d26423988dffeeb1c525b08778bf082e708712323efb765996309a18434dda9a2f4a967cdc11c94080893ab3cb0ddd3e088dd5fffe13d3ee06173da5547a301a1789223aecfabb6301b092b34f8b790f7600e0a91937f86596bbb12be1675c00f6c8776e6e3a0324f4959bb8aeb0210893665a73b05144f3d0279891ed64b471bda9751798b8d786808bac0058482f3791d319f667b11b29e0d6067ebfdbe12e965a5baffdf36b9f64b144595e8db33692dcd9e4026756a8a4eae7016ef4d98ae72dd5a4342d3f3a9057cb3aa2c08912114bca5a848abb86a5d4e5901126b8c4b01057c2dae2c3b9d9a1bb168a823613fb14929e2b3ffdc9ae601cbcb2882d80caa8283856eb3d2d2f87b059266bbfa91c1b93c8b18730dcbc7743d605171cf75e39983361fd6a71b9c0f0696ac3fcdae554983f3f86cbcf854f23aba7bcda47559d5f86d0b61552c8dae1071a10e5af486a5080b7eaa0c358cbf2c5776e0363768345f5fbc592f62cf98af11bcc6bbce8ad2c3739d64a70f1e035237a39994d86bc3b333f28b93b9fc7c3a804ac3aabd6061d6dd801d695b7051d01e5bf774f93b7ef376e4840bacb8188fb175941b248027d582d70ba050752ed7d57b5c8cc9f09ffd291d24e13cb83f703b2697b2aaeb0bbe509d1bfa8f4bc9ec78363e8cb1d78f71eccd6d4e29430e3131de483f26762958c0677e6b85cc3d4b4352056576c29ed866846a50c26b53300b119d4c105cb20acc520be40a66117ae1026b77f70a1ed0366293248b0917156bdefe715a4f0ec08ed612eb622835404a669df3f9c375345c3807f1b070db423bf3d2446c4dd98866b8cc89ad572b81abbcb2005a71a4a5f649bffe0f8e615d71ac5b23ae4195111180784b242113c793097a0b9f3a638904ee289145f924a327126f4ea96123a46f895eb8166d4928d307fd63ba15de285edee0eea59f0313dcc8f38e27e684f457b47cf77426cfdda37edc2c4c2da77d4bdaa651b3c66f3d4f71c74d21ad8d57e4a52509d8d5f0f748f7caa8156e8e4d09b7d534a8db70e72e04a7e1d42b3f49c20060eb89602060b4a00da8d193fd059f4cf9e50e01e87a23bbe93587295f18a0b47bc143ba55d6f5a75bfc4528dec2b86ac3608005e22d09562898d2c914381d9eb41d12dc9312236d052858a77dac9abaaae6f76e3cf1ff708b0e948da9712a5db51409b6ce08e37d51d9017b2f5f87e5c11fd6469a33868973f4c22a944332ea4c5a7d4edef662c0ac1ba609970394562e90d3fb672a06d940d14a6727d396093990f5b99615dcf823bf0e488ae1bdfcf371a2cc3536616c0b42c20a4f656cf77614a685b9251a0d6bfe8f40653de5de1d6b1eee39ec64a2f4f6ff2839129746bf3076a4cfef35cb3814ca88192d38358eb78a861b2b0a7eb6d58458ddd78cfad399e6bd5a8399e15a600b03220e74cf9962314a24c0756a592208f4b15553531dde7b446c062e23a7e6314b55aa6c444a206b4ed34d9d1ba23b21f1b0e351f215741e6e40bfedae83ad94c3a521e7fa98cf6754036cc7b4537b83347908077ee4d9b759c9386fc41abbec1aa5210f35f1de9031251cf5f155ac46c6cc835b7ce6a35a60e3408b9547def66fb283430a1c2c92e77aaf3b2db8ac1b4d531a822a6ce367cd71f8557d5467bee9546cf8c3cb674fe240f155b8ba235a420215830313d5033913349b8310207ad571d2f3b31da5125309248cec8344ac1d9369b3901f15407eee8260da52f0c583667893870f23cebe8d8615dbec8ff50450a09cf53d63ede7071475b2ea5731b9951f8206b98f5f037e1657903fae1bad2267c982b828d28cfd7f3c12c1532b7298438aabaa3b8dec69fec006b10729706eb46e8c611dca9bc6509cae1ed6364c30a77182733ed2ab7ca274044810c46774e089e4fca8448fcc0b81613e9074a605831bb22ce5fbe674a1ff795d68d75bd3d219d9dff28f4796c29a2a62a3b6b2004b105cfe5d150c2b9d5f41a714fc34b08a0e5e6a4505e5c496801d5153284d1d697b9024e0083339c465423442b603b3afcc56c21607a6ab76c31044c4ad7de23b4ea747157cf54d964d559b7e4edbadddad4f4c922a7f20d72441019727328d171ac82f597d479b22037c1d6ceaef735a4558a10f4daa26e9e4536f1fffbe5a385195e64b77f24175875c26aecf6d6bfc447054073ff35fdcb9f1aa9081dd362277d861c669ebe27805c3a036c94f90d851424cb5640a0922cf3bbdbd26f3ca06cf0367c6c714077d014a2d5be0aeb498f0ecb8d13a5f8dc8dcaaee55d917e5742b8cdb7e9f558ada1df406330e4c03ce90f5692c5c259ca2347c63c13f08ca9c85ff0980fd55f6de482982752dccd9176bde2475403e37731486a09163cd80a6784c7c7c5a7323eb8cb63b5ea81df1cb5f635d0e6bc686550523b9ce2b914c7eb3511d9cca76a84a598b7e3098fb8381ef59380ead5a5e4ae42007ad7cc9160c240748d0c56ab5f29edca8b088ca9f9d5f2af2ab0fc8e20c550109e76777da49b238cdd0ff749dabb1b91e850e418c22113b86fc42656fc44978eef44e3fd013ab0f80a32e697520345f3e54800d40b343dd8333b2d22b51bff7f0788320bf325ed9fc2c9a242eb90c30143095ed586e84d3a6482f6f01ea84f9489c12841215d8e5bc0f0186ec61359a95541c47351e176ae1548fc80cc8b427024858f7df009cf2a0484e927e7b6d28c18663f779c4b67252dcef4f0c67d97deec10380f02d2d463a090a3d496e0a099868ba0c7c5c431c077f76bb3740f8d831170b9e0e00ba8d109a6acfcdf59ad35d49040a3e0993226129a0264db9f7f415f98200d0a39f8858ea5184eb017e706e14dbacb84720ef72f844595b4506f3de62a58fc8aeb12ae706518f42f9558d048d02c3d715d3d24c2c10d31c3e7109c91fe45efdbca02b8f832b22b0b4d74b153d43807c070b7336c0a6286dc8a184360ad95d6dc1201f4df11321c85214c18d6342873a96398d3d46d78f687fe43d55228c7358f3b99e1ff42f9358c42cae5256609071d231fa6db3a142f7d5ccac9fe1667a4f83216da6d332a3da5580db4131f4b0c55d363e7e40a830a2e5d13278834d33aa7cf4267cc25059dd62e1e6e78d0f807da9026ebed1702f6b73803e10849945510ec911d8cb6ddb618e024cfd60c9ac47c77da6ca13095ab46f10267f426d32a15d83bce36e9974556e1f54b9c65981d935850cdd6f05892521fe62104d7982edf82c0a5d51253002e1b0938e0511a23d1243e0f3499dd27e6610f9ec96901da2b0f2f4083baf4e77883996814d8d532194675785f33937e5d3ddef39976cd60ea3ffaddb6bda320cac3c2a60bd48384c618e798715ea0da1e8126168fb8335a7874f4b85e8dee96fc1479c6bbde82142821f132c14d8512df3302fd5404bb261dca235e73f227b39c29abbab40e04ba79e205bade922895d0b6c99113f636a76ea59a9c3498bb07ce9fc4a21d4d12608f30fe5628978676d9f5163af38a57adb7949a050e1dbd399e699e91aa62c9254de11f51cbe61c8ea9a6ba0874a474701dc49811197061b5ccc44541cede508140cfcd99231f58d3cb8dc52dac6a1161d892584185b525c591b51336b9381a8c65d6e3fa2880b763e4cad3ebe79914fd3f2ef1c356e1684b84d8847a0b763a137582733a8d3ba8b784e99613a449f990b48aea1f05cb984c16c4c4934c5290bd517e37e14fdc67232bdad09c39e456559ba6d828e272d829304041c819f9a5591b92021578463e8dc5b47d0142189e5ced641efb3c7577387801abdd4d5589d6ecec92aadf3e9fb221a46ff842c7091e0f744e12da33d7baa3a4d6c0781e1e64a2ad868994348fc37bf2b5afbf8f0d04800263d5a7db1bd27f6f1236b27964ea0660e3a060e2afda34efc29eb0f683eca59090a2c3912cd943a7e77fabeb23deaa3be774c52a80e8e094b79afc25f6d2d6e45ea66cc5fea6c9e68978b61cf4ff95e6b109233ec372c5650d1f32b3100f08e123a323216ac88b4c6fb4e1d52e4e1c7e4a485eb9adcecde8c6714c586f038142cbe669562ce07919397169ee21609e0611ac04d4058435138d63aa5d9d638c836eca3c094a30dbbce346318d0a9a6b1b7769dba701417db7a1d91db94e4415b6e37c24078bb82c0b7635a668f22717c615b169147e9770887da3c710881ace1e5b003c35601d80ba43d908247299b139d3849817057bd8693374737a0e3e1e9e3dcee4fc888558d1e98e97d4b0cfa8d84579b7ee9233123d99909f2e5a300a0f04c19d0b3643041482176c8f2377f45ef8c4aa1f0525f01fb1994a62f06f1c2c1dda90905efe5d096beb708af3a7fe4359c85790941d12f68346982e7271bb6352190c2b4a3b835e815a2cd5b6c09009a81379c029745240dfde5786081b9825f04f7079ce441d508f072174f672e63ef44410a84963991093970517ac597d8e6f8bef255b8979e726548bd6035178ccb08d31fca73724b63ea7a010463528d45e185d1e51c04b8e8e62e674a5b1d41ec5f3c6a097bcfaf225f9f8b7ac0bd3b2a016f5a3e8c2a544d8da9ed683d9d979bfceaacacc1063f2d3a09c89b3d74425f2bad7144906ef643222e1c922191fc161e2d56c25ddc82fcca07735859bd1c3c05788c5d9be60180793f0b28ba117f1f12ebb1d1b6a889298445614cb7d95475d5e479fbd1f015521580bc4ec66e8aeb09eebe09124ae8efdb25b632a01e37eb0ac61f93cc953558e3fe182ae394bc0305227ce8202e6d88b288d26418dacb465e8e2e6fc89651c67853f3d3f2a94224b2d24a2f016d43a0b0d69edb416deb457c14a9b409e7da440cd8e225ade91dfb5f46984d26c8e914c1829f8d70b7f3c3e0b90e01081a024988580a51216026f66b1853f032c625828c67e50e10aeb16fa7d56100d1460097c90978dfc2807efb8e0e76fc1816c1b12a0c2fc3799189a5f19012a64d1e96426700ace8945a8df624f659de1b0b1402a809432ce09d5f0a38ea182017cc592fa4043ecdebbd860a4b993a15b098cdc26fcd9aaa77c883d84609617d9cde16f3d61be26d7dc300a3815dc8d6ac660f29798eadb1e647f439944fde4562fe075d43fb83f5f5c2fd3b845cdfb15cb301fe57b55c923009acdb987db7cf5877cee34cff08029987b648a2f2298fd514f2c721b137eb8d970b0c74426dc0537508653274064ff9e26b668f0858339655e26d31e8835ec8c0f69690a6235c2ed26b35cc19e02d207d077c171bd1ee6705531603d0af00abecc1d8c2032166cb83f8c7bb866541d927ed2b6d8cbb3600dfd7c203e07fa6f05ef7057c9bd53063fd372df3c06f07631ec325c5942194b67e551ccd4ff8e096c74f782f1230698bf5363b1756efb23a69a52d1e648b0768977efa5cf1a98f03647d76f28b5a41e8a0667b44d559878eacbb5cdc9f623fd309a66eb596e7b0549dbe182155f66233f250533e68aeabf7e9bb9c2fd52cc069600375499db2a17e7dc156f9b8351fe606dfea8c3e67b615bc2744cf652bac9b5c13361c093dbf124c8f919d24ce1904095edb892543988c41f285ecc94308b615ec55102aea660971180a0c2be8288095c3d99c3ad8b960cce4769777cb2b6dd44d062faeadde03f13bfbb4b48d603006d6b46aaca6283aedff164e65b255603c38057f550feb08fa3a3e732b2006c6f6f93cacafce75cbbe71f6eca188c2ca5e7c6935ea4a5527ff1ff9ffeaf307d9ca10b04a23ac4716c63fc5d8e44d4c4f42fa592e218103aab8f344d0257300d12577c69fa246ad039ac08011a3fec5730f0f253ebad73a6b9e990de62e63a369dcfd7894e02cd85b43b2e332022f825812488a849027e9e917f9648fb333e368e7d39202a2648889a6016c9bc3789a705444d743b842ed10b26a64b8500525e70f2e3662c06dc35c60223a2a62899bc5c220aa169209845b3cedf34ba4003f1f24df2d81d74f9ff34e9d8e9f1d27931bca1dd062af6d164a38c708dc4fc317c4793c272bd517884baa0080ba9dc54a3c1c758a91c51b428a53d35b8d1207e1516af68ebe5b45de5b6e33cefddd3ab066912a9b2f6c79b00ddff4cb4c726ce3cdb68d0954408666c24e01600e7e8a311add1039dae6cd8071274479376a4863e7018d2493f96e8e1f23a39e008d05f9215633a1d43b225ac931a28fe06ac749acc221d24b845621bd868a6837435c4713c452f16940b619e26c7a9b16a9a0fcadc34ff04fb081674204bcda0004b048cce931751add43702058ff406505350bb0dfc83dedc26187f35c1e3addd00a84453b22e122c7f2a363af09fc0a43ca9d17c6b2ba97102deb622a04556cb0e92209dc8eb3faad58faf92bc85480f39d2ba3190f8c6524c57610722d33982d45652b9667c2c3cfc2776d052b7fa8140b18a3b99acb5338285d49421c5f74d4874beed6b2b61801d535db749f068f321fe4d65c47a65619cb795244a05b83a7d5b412eedc494bdce81c2cde1568275a82077f411680904ae457736becf20c9e2b2479d98c4ce80c49601ba92cc42def25173d42d4dc4f7ee9523c029b6ec95a6759d2d9ed71113511a5edc8413c6f0404ae2371d92f75420c097fd19aec479774c44283847a495c75352dc5989a3a5cd2c9b12f8b338621b138376cfd6878441edf85b70ea4b6c5854a118f5cee3b812473522589e5bf689da2db91b2ffce520c5c96140732584a7263c681a3c0f5e4d2773cf3270aed9129cc9f84b32804de14a7884d1821e89d56db176f7fab09514774e4e6256a686d47425555d6c63ab2b8991e2b025986ab0a30daa90444d17055f6f765d09a8f550af64342e2542f48e1f8ed1731f48c0df1afb732bc96a9e3f71bbe359537c80da5a980bcf5b49588cbfb3b3398633a92c642b141b5b63ab09ebcc0c122d490851d3d64a7ef07ecc15e4329cb792188cfd26919314bc2b70c0bbd2cb47109e6d12b7e8b1843472acbc4f91caab8488367ba4b427267e889aa49f9847d8082d8052a67cc6a79046b1e1b121d7b8ad63d83b9f21f3570c1a323b1d592310fa31caae1e133fdb31b92ec7bc6e5636d923c20e4b091c02fb41359d9eedf9e865f15535527e5dee3debccc49e92231926c2ed511b53d99b24985bf0869081788d11913b9c882420b3532f23f2eedeb5c44f6a31318829b21fa9cfdfe6d0c2a812892432ce84cea84d0b74535802d3fcf9becabffe48c23c5dc3e8ad2b259801e3e1fd30520a17a16f637b5cdf7087e01a388b4cbee4bc1995f7bd93032001171cd80109c04852c499bac0d799e93c88039cb47ec1050640f32cfcd2c5d51f5049428cdb2fa251a25cac0e1544ee2c2fa9d329e31ad2fe3162ce61c38cb08d0ce3739655f85f51b63de31dba1849f005533603ada1bce0cd42c204ffd91fefacaf972292b8b88e4474d51fb6dc807aecccbc25624baac9fee02217b61fc366a2c7c6bbdb2f4b69fac3b0277f1a4a1859054b74ba12f7a0dde6cd4b38e7634d7e18e86ab75f48f40858e6148566aca4af76d393e7e5ef724dcfab3641e9f9b3fc4f719ad494ff8238f40144798321062830c46e70c4140004536455250917ed52242370b305528b35bee7c51b2db68923de6b585dfd25801a1e6163e0a617e8b07c44db047d34ac85c2f17ef8d148a0932229ea911a0a8efcffddd2405921c771272f4b827fb44e1068b22c490029319e6f345c5bec8eadf21359491ae8303a1d555d2c159625d91889872aa3c841284e6a2662cf82149a739fd9a7b7ef757d0dc2f5cc384746aa3fe49bf8ee124dfde377704bd36322f2c5247d4b62a018b7b11b21297cb60511ee5df24eb92d1e17cce88b82028be1d4f270fae8d3a9adcb2287c81e18d0635580d68541ef07defa10ce1c177ff81491c49fcbf290b57531f5a70c36fb924bfecb3c8fc8bc928b855d0990983f887d319000748419ab1e66a93e436c40261f14b9502c4cce8f8bfeaeb001be50c559400ab6e03e7a224ad1af16c2bb4b6ed40080ef3c7a166a92a7be8dfa327845bc20ed73539f082077336e57073adaaaac61feb1344a8eb6f8c874bb02e9b3644a1ef1bcd9092b8390f2643423fa3cc2d1785d8f6bf756c51f26c1711f64a967030ec1f55c099359478234caa6fa26d7483c360394639bc2831fb3e5861a2756333201677611bc732a663684e2110d1789800a3c0b499ddf2ad816fa8b90b061ddfd21b1751f2a6ffda61e3e3544ee0eeba1fad4757b9301e604dc2b4a577d6b13225c3464e851387a6025d41a8f3d8bfcc32a375677fb83ed5553a6ee6f9acc6e09d37d830624618f707262aee5faf35e17666c18b4a129fa41fb4e0e6c47b73ff05d700a25532ca0db1b0cb3f6679787881b6aafc173cd432f77cf87cf013dbce6d7c1f5b91439b23efefee52be10572221929fbbf5b593cf3e494b7cef7524625603e43957ef839a8f26df972189f4413a88593707ac6331af23921b4e58b228bcb97d81aa40227090fda5c3a1192d2192f12621c1fb0b570235b3c90db73efab1211eef2ada67fb75495325e84a570a3e55f83108222aa27b5a014b3c6064292f8d986047403211cadb6400cd41c25b5209ac7d8fabc92dde3d5c2e2a4fc856818e41df09ccf8786a4012155f7efc377081fb1e66c59f03cd52d8ea51cd5e4633f00c8bb23b7031ab01628e9e785848954fa03063a1c8cac509cb9c650a14c61e942880cfc873e64fac21087e1b5f02785f946ee1ded14023bbe8660dcebd3a35d00d1686c1944f4aa2bacdbcd1351acda5052051c6e63aa05bcee64cb203c158eef563afc7f0b91ed969420645b95b8b5e022dfc21cbbfd7347a64398a6fbaaab12de3e849d3b3c65ef83b788c8c700184482e8122c704fcc8f7523e8bd431c139a193aa84ac713068be0bff84cfc9f253a111eccccd283a279a33f566569089c7a1ff2b2f7d81898f2811012cc7eb5b80a08f36c9f6b7ea0bb7ba9e847c77c590f7f23fcdbf5bfce307c2d5762a0e9062fdb20dcab792f8c49252e573caa9734b05a01873fa745c172be13fa87c133816196ef79e84626e67cf78b454f0181f3cd4c9b192515f26022544f52c1de7fcab890b643034d6385defab23396c5fb8e96c38760445372b4fa5b2454ed7adc81daf8f05f7a90a88c06fd955111019e0744caea781b6418d0cae15109be1e77638a8f851cd191ac8f6d65f1c84e609b6d7444b5d0c44972e589145c518f2be78ab2cea144045e2ec03bef4ef527b728ae703e04df1357e8a429c340d888c1e70219712ee6248c217d5f499c62f0e4fe0291fa6c104fa43194c598b044c1b7b0d4c48290492686731b8070891843d945b2f2c5ef3d61c7a6f860b6b0d0a4d654f8429181327ca06824023194349063bbf1e38e39694f283e417674a249d67139179b61fdaa03aae0e530941f19fc02496fad87f241e251441bae9d918084540bb6345f2e5143093502dd12aab47aab0001679ab49c403e952c64558f06eb1d361b0f4dd30322a833bbb58503b4708a6f5a728de5af6d572474a06834092591a097d35d9100f804307aabb2084df66d815c624d6c5baabd2bccc6ce23f8d6beb4e0df13b981df4b6c1f7ca9a4238e07960c1d47bd3e99770c034824d602d3a8d677a017e5b919b0be6499278988374416ee6dcc095db1a475befe80347213b828be91f5142424c29cfb11412a5e26b24d32d74b1107a3fb46b7dc5a823070971472c4c974f95bf7befe9c7e302e5faf92151f559638ea7566ca3b4eb26460e1951c169c11bb630ae9b025a49a840478d39482ee91afb0c0fe212671e1d0a278d30b80a16e722d288980adb24538a35ed79a574d3fd317619472413c39e4d991692104ccd23a905c8c76b09e115b1c3118ab4bcb7a66affe96949cfc51ad91312d085c0b11e702c76b28898d3756aec4d4770d6d805f6a3a7914577d7c41e2836d681c47905af49ee422a8bce222fb93087d4c5612013d87fc7d0f6308ece3f16e21a18135e241068e4ad70241d18e5c0d46d4c94e8347860f535f0ee71c09ea161288df04d0be6813c3c298a4cdc9c990e81d8051481fafa5df30bf65a6b0b2163008e9c3fae87a292c072ef3bebc92cef734f95c74243766542330a0174c93dad3e42f498793c232a772ee08a9c29ab85b2183605b7e08d48448c4fd74389fb232a22300d83140460013067830028c8812066d3ec8fc4b7abdb342a0a884611475d0037a5003e5a006ed00657660caf4145166f44e1bcbd57b120d5bfaa7dca595804ccf4db452c874c0cdeb4ff57b19c781089e3247137baf804959a0bb87e444b19d0f96fe866ffa8f9cc4fc62d982132f6de4f2a4ffad9a61ed0953d4d2951486d6503839b980998d0fb2f387a3996295815a5178e503c67783b425d211f158049b2596cca97efb9291da578529c87650554246d1070ba05439a6a8fd39ce1c5885802e8aa6fc5e7182c3d4d2e5547b0b116a4519e90fb6f0c2ac2eca9547b9342ac1a29330b78e663b6c7d028335d9b0d53034a43aa4de964e934fd59dfbbab0e1ef8f1a2bbd47f6b23985878b50aaa5d84e62123db8deee4044293d653bc40974d8957602134a114669e71e39e876afc5d51324369bd73275a24cd69b01ade8b1e0ebed04224029732975b889523365bb892be0c6270b81ee5a99616959cd619ca06a08b0286fed645a3eb77fb6fcb5ffb7ff6ff36bf3ddfedbead3fabff5bfcd57cb7ffbdf964fdbffd6ff363e6d9fdb3fdb7eda7fdbfeb6f8b4f96fff6df169fddbfacf6d1f7ff97cc3a6edbf1474193878031eb6cec7c9d6388a91353c8a4afe636b6616b278a54aedf35658dd297869429d13ca07db100eba3582719422f5ac21f2458a7d44ff273a1f57a33715f186840eb58dd6ec2107eb51df5481f1c6c051fba01c6bca377267e97aa2df83aae5fcaeabea84c1de8131c0a8fe8c6986e91984df18d09c9a897a68c5421d24c228d9ee835a158ce9732d63ad17685e735c2d20964c1f75ed14a347a33fa0fd3c2c8bdf36ac008f85f79b22950a34921657bc8ff96022f7741f77308fff806ba4c164da342cab4712ce340d8f3866974ed70fbb26c236f2cd819c394d585866eba23fd1766ab7dc573b574d4b3361e9562f6966cb6881b7d49260bf7b9a256f7760fb606477d36512520ae750a4938391779e4220e6d8ca034e83a041fd9eee02c79a61ea3b0859e3297e98db7b5a69793d964144f9aae01e86e642c0f8b030f11543c29c53dbc6ef1a0048812e8e0076c6df79ea8969fc888bd97cc03c87d182fa87e667704b54c60319e297da3a2879e3befe3e3227b0b04c4c8b51b8a74864db1d76cea1387e05029d5eeb91d058a47c8a0884c513193e4b5f39f6eb221aff32c8454cc5b58022cbdd7c32d50cb92a640a5dda2e45446c01ba29487bb7a7df6936501f55406cfcf991189c419e6c17c010bfb10049d4398dea0fc89cb0569b84c2314e54cf4fccac0e7f40b0311f61d27c9d11df90d9a11461d1ba96ab6228964195c29c36c7921fc44535da599d99573ae85cd4c8c5656f20f3885ad5ebbc60810a8e9920b233ab7f22d44217c4036a9f9b886080b57954449d84018fcdb322046fdba7332a75e8d6b05a4c14b9bdf3171a78ce8458eea321a4ab2ca12ffb15d4f56a64fef04c6406b8c82cfd76d60f05f7f1a1469a8d088f05d1e7f4aa58d0c149b0889d2497f260150c3b4d4f07f246519c008712067ca38900f8ac09984d716e21cb3a3905a91983cc50042b99bd70d0ef48789d4609f1caa33cd3930bd6431eb026cf7b9dccae4b7cf4b77d634bb283ccbf6fd204563f4f7399df96e8c1617275c4812b3d92c4ff726be35e92f32cbc0fca2027d8acc37944f68d72026f80106c3b82cab5130d13e7fc3d45f48e5680f3f376e5403ac9b2f9c44161373f425f00258832d97cc43c3bdce29c2b351dd1973ac235c57103d69e890e81ba8171dd6c5f69ff477b186b8e0dcaa41ed1e5725aa649bc2cbee96ea510c5d76e4a21700bffb565d48ba162c649a11b52d43b322c0d08f7bd3fa2991141b000faa38ee445990761b06668018de48d770a802ec0751a59007e1480bae0b06ae6cf3c280375419ed69084f16e1545c129089937368b7ac13e30f69f155a1cfcae4f6a1feea025f1fec1f7aa830364a943e3e7378c09b6f4f899dd4545ec6b0b4c6b97fe836846c3da1316007e2ca1b9ba00b2f7bccc81fb0ab9d8ffea3a5222eff16befa56a25cc49c41f5c96b3b7dc6c10cdfd04bfa2e5d2d1e7839544be52e5a623f7c3fa09be92e5de4161508efb83515a5d5de62cd858ce5debe4b722d3451ad711b82b206ebf9f3e46394b3328d70f7e29000879c6af9f49816dde2ff23ba7e436dcee186b093a65cba1e3ff193b123fe5c871077256b919fd1abf8ab607d1c038c4a861f73ee56ad67f68850180f82d972b02e16a1259250713e4f98f0b5da6a2e9a6223994e853444e3bfe67b192c829bddc3a90a7cae1db8d31cd9ffb9edcf8da67db51751beefed17b147da5427388a04a49f20258c0981f44e62f109c2a07d13d33d1d5c51508de251613fe15960b76c6f3b55fe47d0994202eb3cae97af699750c418f48fde10a27258c041ca3484a220c4875b07b85b159e272b0dd413ece28a06849413a70502a4eaf7f24d40d2105ef0b55476099598204e0164e484420acb49a72ffaef25d7c9a0e9f9ed0c7743055538ed9cceaa79923580e4fac0e877add0d2b25654095952f93b4fee6af31bf8a9c4dd783985ac0889b8093082566ec0905c7a6229f0803eedd4c4f71e468c106d48348d82cf28c25ece41ea180bf7021ffdbd9aca54ba831ca2b6d1a1493c1641ca3c270e44b1d5e6c152aa8ee42336c694a5232315e0a843919692d242941bfb71530f1375c1469aab1e542cb51ccc2c440b48959c08e4dfc4206233c7d7281ae749d91cd0341a1342321dec016f54cb14373c6f3a9b3e32302d487567759346b20fd30fc3a9c5a02149548b04c0a4c26804432d09bbf3106155b5b1d447d12483d25277929ec811fa75de152153e666cc4f096f72dbab483d40b3212db953c398812d88e560df998d70b2a38db9c7d897c4068634a37ae54172603285dbd2ae1e2bc5cd82d589209519aef2e1ab0acfe10306a81d087bff9ee594a5a49ce35ac0930165f7fe0d8f3ff2982a08aad342b85486e186e3c6f360844c2478f3e64aa654411125c6cca04f1c1a2641e509a425dd307e8302944fa947c3cbff0878ff9ce27f9b3c4c0fe05df489f1d261acfc7642cdd834fd871ffa9ecff74018aaad783c39d993edf106f18ff8e1a6cdbd0b9abf7ae67b5c644703e9f6c2a5660c90879709773f89e446f5c6b8c316ab2b439b89b868316896a0f43e25a670394fbdaf4edb53aca078a02ed03eeb2c33f7c79eadb10f7fafe0d973686bf1d3ce8bf5d09c4b737a210fa9b9ebf528dc61502a0f53059a19f88e60084e8205eff334cf6fe974b081c9cc83a12bbf658faede0865defd037b1ef92093700395ebb5fd2fc765474ceb43368ec85d4ab0066b2fe2564cdc2c90c1841637d912c65e18925996c7f107d78a52dda671ff040e04002c5e30efb44b3e4a12797d8874e09655598528ff2d1b743b74a3214a94ee01516954055f2a8fef7e2eb10702879d0e53c0f7bc4790a0386a6ff481ed8bbda5b69f2330a94bde15cfe11e811f427d043809fe03f1232bc73c3c866bf6269a360cf9020db048befd49bcdbe833bb42541a127182dbd471ac745f0f9a256155c3ba98619c11d3b59d87f4a19f19cc36a5497c33f4f479bddd95f491ff50b7de5ea82cf569760790d5b8b171de54bbb2ead3ad7164807bc565d30625dcd3189e9f010f650a293a6bd8037b61f087ca10dec0bf3aa84c1dfac40fb240be1217c5977edae81b8bc94d7173913fb96d042e458ad2e493330a0d50b9e4435555d3619b6a231687d6981fe58c617050d4942961fbacb41027b8671f231ad3e381e2b1c36e06fb7ba59547a9f2cd44e8e03f7a8f2408fc15e00e03db56902e2577830bc4f076ca3e474174f1ff6b88a8badf0262d1ec8ef97a20be35d47051d4dfe556dc6ae1465a45fb59c83b05940b3fff211f88688e73829a64aef493de3924622f5938e5472010d8c47bf80170c93f7a88fa8d0dcc6d02da128782c52f114f5a9c2964ffcd74bab75d94d963048d08b25600c43ac06f81375c0942e5ccfdc958b4ff35758e3258ea90f06e5e6bd9ca4de8be55a5c4ecdac470e65f94322d202aae80a3e329aa8f5ed3906850112ac63ace3cd1ab71aa9433a380cb9c0764bfd479f8e15d3c6ecd84b18f3990fc9c9e649939e9a783a6e226cb4bb8b4f063ddc265a08d4abbc7a2120aaec50b61116db2c96a9b2860634c79b0c3e64a5e9eac6df80bc6d64e8b9628953a3d1a99ad125d2ea91d69a92d91e3c196fc2ac835d45e25680f752793295da5e12b153d262f3c837665237a3f400e039e61a775e7df40e050d0d98e9ec19cf9e89670aa5505181ec7eba3c4c62f41a146a9c12d8b5095eb8ee583097f6343f21d4ed0fa86956433b552073c895f31c73cc25478e73e73c772e72e594738eb9e6962bd7b9e8ab7f5afeda7f5bfcb4fdb7fc6ffff176877f9b07dc2f4d87b17018724074750da8562eead901f0414351ba3573d44a20c2ed70555a91291ef4b9dc19fe407e1ebefe305f7a38a6f726de43e270440d96c87c9bd6770b7a56d04688566f0502772e86d750b51c744f2c6ba6d668ff813618e9315491e3fabacccfe6d35b10a9f10c134cb5af8bc940ec494b62987b0e1d5b79919fef3702726e4f1ffbbad3d025a756ecfd6a6ecd1a6db01cfdca3bcef1a8a63a9df1307c627fdab25703b067fc061aa6cd2c2e80170d29d5af69bf4b66b800837687538b2c4a2e6b0f2584ea1319f841158cbde94b5a48b90486a7e479ece59b0a23a2a99a7405660bd322aba4e6a2f65f3aa4e304b61e997af14040f836d0e910e0f0d070787d209ed6e98a3f83437d74cde02a2352e2d9a178390b0ece258b2d18d773c611353ad4ba42a64141b1ded450855302abf945da18251860e6760aea05e3ce94462d5d3fd61d4da677cb2b8dfb3857176bb061898005fa3965f2fb4be9594cfc6850511c162576c64fd5490e0f088b12e7b75935940d040f585f7af5d611d90f533a690ae362a34f20b546d17fe484f8b80645a32803efb86a0aa34a354e35675488550319ca282a4629bb16f5e5317e8a62df90fddc467be9267572cad9e09b6da4c2a59286380928e0fc58db8d70d1d870ca195b88d812db4d49d9201acac5ca07e025b6d722d6365263a83ffabf8ce731a78251fd3d59684f42a9f2e4509f74dcc643f1e24f0ced439e1623bd0e81450c26ac25b134ad7409bd939183895befdcd9d3db8f692b8b86cdfadd169604adb6a4ed2e464be132bbe8b3d8cf46c6f9fc9bb4789951fdf4c947d8717e00e5c4d58fa2c8205f5aebe213f508b2a8e7b815392d083b7606f6d630634b9541d4e50c83e6eaf4b9e117ff141e3dc2431111d362e98a8d8c927532ec55ca6be352084de2bd2fb60ec0ac15f410da5af52ddb5b556405976268028d21ee611459a465e82dfe34fbe0ff9bd4683d458e234d5321fa79b9308380a35da09e004da11e2787e1bafc4923e6b53dc4446778d576d35b7043b524f63d7fcf6b9d65f1dc64a0920c752768021e1a8bf9ac45550fd799952229b7f94fbff525f8766ad646a58ef06c09f3eead8d0ac0120f56b96d7e51034cdb41aeee47225a5249dfda28d44062b6a05d86ff04172c11543b0076140268159a976c1d87a321e76f15d19b7e650ab45694fe96f5b936d9cec9ca8349fff91c7993b4814b802a136c7e887d9f3eb27308954f80a9bb90d3729e9ed486f2b3f19c9ed53e02fabe0bf19cbc04cdedf4e40357aed95778c99d5e151952b3593a9fb8c8f4afb1154e345a2941a8a8f93b7471ce41879ff2b83f61bec192b8fdb7c6c6019e93b63172936ec788aa8c0848e4e5d82a77e9ce1cbf1aca20884f7d0724b47823b188d1efa854c01ea3601315eebcc86fb10b17265a4c1b28e6e9be5fc586dc2d7178cc9f285df12a571be21ce19d1c2e51918814810bd03a849f57e20cf4fd3717aeabb55fd1cdfa7d20a20eb72708bb41f483a4ca4c5e3bccd7f20098e8a107dbd1a11b26b1aa00d8d59417ae9a5e0a9ce5888cfde66af97ffd4f2fbf741c414185a27b226d3ec7635bd7f4d4ea6b1176d302e70bb0969a606d9b1d147c7a8d8f5f1ad2b6e7480760ac79ef138dddbea8a1f046d4adf575ab2e79049ca0c42066867c7f3a6a056895d3e31cec877333a602b1a8197e11d57e6f1e9391cf151c69f5dae6197d155ce60734f366ea93fb96fae32a62963837e8808650b39da01b9089b42f86564d8d95f07636b8a01ced89a001eca8f052ef667594783728d0f1af465a231dab49a7ba514d4cbec4041b4e6ce5a19d8b866e7b4902c9ce6ee45fc0a9f53e061415dc6a959ecc19a85f4a29dc53303eec976bfc15041d175dccacaad9a5f7ef9e157d431cea5298040abb41970dcd4b86b9c12ddf19eb1cf2833c21e7c265432c30ac5e9e1c31c8e8e2fef63497ef7059401f13e87526982f8d95b294deabc446b71e673656c081572680329528e806169eb45f00c11323cd5395e809357e943a2b9f119c34406e63fece0db1ee31dd960a76eed5bbc6191b414ba8fa188237271fe2733e7a136e60e30bfdbf0a67d14bd00005438bec43e313f13feb9b0a27fe13e72dc7be1cabdece739972cf3a3b2315ec0e38e8864b2d0db490e670e021f870df5d3d1287f1460258f21970a0710cdf2583f4d58c6e6a38b7dcad391043fbedc88fa1f1a70483e531357309b8efb02147cc32394b25d9c76b6c66fecc82eff91127a79f59ecdd37d963a6e1e58327a3abf07db04684ac9358a0fd231aa00bae9441b9f445cd86711e770ee08b7d211d9cc6bdd6b2b410bdf2f9e2a6aae6b9f52b4e0b4557c49aa621fbd6c5f930552d6fd8e727de21fb1a087bd2074f05a11c403a872a6d8902bdae66a1a6f2d9ce82abdc9ed9a2613d76fef51b4b2c2582a9665ee46bc2649be0a9de00c843e7eed687120aaeab786ca1e7b5ac0c58db893d46edfeb0e03fbd034d604938d0c96c8fb8ac4325f8c3e06c34fe67d9bd755089e9bccc4ab541ad2bd1170f7a207721279870a6e6727ad0386a725efcd0ede1b3fe419de8a486d88933a0c38e444b2c6f530381e46213a2a69ca6493055670441285ac6531b13f336837f90f6825cc10d65d8da69cab3c77b96fe628ff4e05c946cc0bc6b389ecb56245ec28e411255bf992c3ca517c2e4c3656d3fa9b9d872ab2402e197cf4675d232b905b0c864654e9b1f4bc7cfea14df9651b29af52419988399a80a2ce7302d54f201b5d168c156b7a87f0ef572dfe5a3943c601da3b8cb66ac2ab10ad55bc52afb7b4db734e2e829a5731fbed789f9f9dd38638433013600c6fe2d64017d128f6c024bd3fc7ede0bbc41bf2be70d70bac88db45dd8bb43dc94eafb153da010251ec1e6a31a1062e85227be33e8d7e6b768bb2a12b5954fcc906f692f044cb8b0659ab2fb3a87f1bcf8aebea437e39454f62ad8aa9ed91ae1a3d6ced1c8821570b49859dcf4b361ad4ad1d66c76be4a2d5ae7505b2e7da5580a2d574e64d8a346384bae937eed4b84d89315f7b95be9b73971c5a5d5469f269a73946c49fdfdef3147104d4461b7e5df7d0e46daaf2b293c10d7ee7c35d4454a5c950d9bc204e1da4e6086398d3973e2d0c59f1d9c04e82d667bcc4670065909713e612f022eb19fa14f0fcec19e899ca965d2b5a0d9cf3877f6fc1041ace49d23f28e458d100abd313f482c20efcd1fa2a5f7b1efbb7d75d6b5de81eda3cb1fd0d9162d46c3ce228e974d0cf6d69a963cf73461a4ebd2d04d8f0e1f5c6e2f018bdbf2d5b43569ce34689490c6ee364ba80b73a94b72ddf1968270bd1d69de53daa137c2513e8fe2b10bb598b2e06550467124af56066539ac4fb0e0b1e1580afc737bd75954689819acb5080177e997713d97f795c6c0bead8404f1ab5b20467633144c727634f74622332bd0132fd64fa7d5b5e65ce1cbbe676edfac891b207c817f69517a1efcab336cb46873de1d58b80d6c3b1963798b64a010a43593c8a37fb7f886822feb02f0cbe7c664de65681b3c74edf5268ff64a9ef764bb33e1b9823adbdec6bbf060cee701df62b09bf32193d99299b10baac737516bd4b9df07ea7acbba96f4738e213025cf7cc241e6888fdb9c58f0a64cd8d43defb19e91f602452ca7ddee75e7531db33557d488ddfb914821561169e7ffbb8ea571db5662df42502696659a8e5873de61989236ea4064e44d26359b54f8e83e7e719c7416b4587b0f722ac540ea118acc4f3011987f573b53410b5763a4274afb21d7d9129962aaa969cd45d3cf45930ba6627bdc40736549b7039c7d8f19aeec035959cefba98347210e91a369bf8a474bc8ee2366c6a0873b7ab5d9ebfa464590c3a3950dad902e140a9f86039a812f4dd78b08e0afa6170c72e79c1a4bf13d8bd17e92e6661b0dc7c9c3273412a8ea66977313ecf8c9e4e2a673a21b9cc3f5be9153e23ed0208d48a5080c2dcd0dd9c6adb5b3640f9967d409f199e91edfebcf15acdc9ba43952eedbe43f81c5f924e049524ea018badaa93fc3416ab49648b10025b23a6f3d2823ec9c9c497b6201ac74eb33bf11db1b5f684e83f49216584e423cd5ae12a0cf442130210d1b749b88bdeb8f695fd1d4ad7ffeceed3a2c33adf14665257c86bd95d8cf02b3e500228e118c616d495fb63b58e8129fe95c98d4b572075f0f9022781ef82578ab09739f8de7703d09d1433021c84ea70ef42a6aa425b90bf9f13db8de7c4aaa9657f9f44f0620d229754bc18fbe8e142d8c7e75aec323209b9a141a2f95e3839a2be293f44ec601d031c0a9338438de200cc91261d24a4fc6e2082342b7acbde7d4ddc3a6b716f151be830040fdd09243efc283b96ba3ecc476e37f2242d5fb97fdd6b538fc9f2bedbdb26b8100ef75108bb4e011cc077469c0472b3de82baae50d6fed0609d41d547a30b80b368d27c40e807c0f6dc3b830c48ebc4df71de09671b8caf8c58bb7f39eee44ce37c9f93750e000fec2030125742e085017db480331f813cea1969d258d0e1d6cd237106bbc25e00e181c360b634ef1b0bafca9179c1323d4c6e502bf7ea80acef45cf26f87a20b24ef4c1a94e72e5bc756a7fdf4c182601f8f2c0ee3227d614aea7909c42d292ba75060e005ba2b3dd4b849398da624eef768fadb66842ee9152f561eec1b2da49f006c240a9f9403a948ca2c5815af7831366ea95829c0fd0fee55d82651a1abfdda5a37a5240954c50fcc367a2ca7b611c436e5304edb56d310844a87993ea24925becbd21eeadb826e743f457194be5fe928418a96d0948acb0c386a081fad36e440efc9c2b304b368efc426858c525b2951d017877d695a624b41cc9d324476bfc2f39f760d50afa9452a17faaead978886923cb08e721695d42bf41092a372612557b5c7374a5bea554bd7b1a5e9c502f1786c453ebb700b411c1e305057085ad630b2f50e6b1d20deb9a5e9e06354a72cd7659f26bb734a2485b97cb542b40196acd1581b3b0012980639f2afdf5005882cc88a44ac57c0a33cbb8a2fbea1d9cbe558dd01bc6041a212052df7808531d6382ed2c79006f9e7ecabff84ebd8604c6f34f3755fb1af7d9a43490fd5797e2e7b857f04ccfb0f5ccb3bea154f5a2a98325382528db48bab7a10e812f513036e7f2ca0eec9bf3a0028aa01b7538a7e6c0f52bc5dc240f802ec596cb918839942313a76df3fb087743f9ff802a1f11fd60a7d4d119b74c85539d0e467ab1dfa0091ff35da09173e1d47d89bdf2097b701aa49bd66ab917690e69053bae5bdbc52d93d3e7ae9745cde1692bd0f327b6e84905d00391c18b041309f09bbbb5e4ef4e68e1047f70ed3911ef038f461c244136708b7af88e9cc2be6c6de1af52e3df34ff9ff0f3289daea4e979529202529115ce82e5a864765220419cb71b85e0f02c3c25e86453c71ba610f8da1953eea08449b71e6a898e23b378c63c773a0d2f6b659c1ade62c96c8b61b9fefb5a1779fb0512276cdaad5f8c9b1a8c026ba29cbe6eb7b142874601f2915f867e6ff1b19688b9ba32b9a2311e8b135548a18066d8ea897334388f2c76b41949130b8e4ca801fd5a0e7d821889fc5bfaafe66cec8ed67460e2ac521bbf14bbb01ec84ba4a8f526132efa7e3d2d26912575329ad33a71263d7b5c740417e1f833e184e295876f498486147259c38cf2f6047e487ed60f7cf23cde4970e10b5c2a40b96069f486d432eb9c2b2fe1d98a2036e156c9baf7cfa93149e7e282447a766945e89f720d449681b5434ed571010af0a7eb8da71938f617ff371d7b2b5c252c2f6ac7f58a0530851bc06ac5da885cd480bf973302b4e03fc390a697161f9f10d41aedea849d6c5faa60fa3b46b3d5c07cc2b0801f9c162a77aa5b58c6201057386925fa96b69d5b5e784a7c434c1e7ce35a497edc55e18612fec7228e6b23f059ada4497132f2fc4819e1b5fdb515200eda594bc34b1ac3bf00d566c2ad490b8276589c61aec0d11237003f827b022ed2570037c17bc22f753f336db226d2afbc10e831e6785d738e07a2d970a3b589123bde7d9abb1c2d3873f66ee00b88ae8d2b801da59642b3735506cfcb8cccb02b8096e65a3f8ff23791241fc78234a6d03b00f96bc9ff1fd574928f0151f69ff05faf8e54f87d9ea2b97c62a41638788bfac69614f53c5f74b587c4cb12b8980ac79e14e6e7fb1f79bc5c668afbabc75be378bfe302d9dd488f42c781301ea854910bb30778a00b0814225fc1423a44a8899443450d51cc9304fed0260c41c2e4809bf85a8a17bf2f4322f229f4487b2e941410c619c65749c9bf9f1074411b430feec23900fb6643a6996abde09502f780bd8ed9bfb19acda7a071b369ddccaea088336c6ce8a9c7c7812ed037a251754475c42c56a13cad8906752f0a91a51332b6042fd34b7e9f8b125b514c950a193b4fb9cb4bea245f2e22153489efa1f35f9561e73b51724c70cf9cd7d57e1b8aa1478610a6c61d3c46435de7f3689fffcb1877b3278138aec2a6fffb4fcdc078df47b0c5ed9895d1441647443e6743eaf05479d24ceebc1d4d349e201ba99a0feb616c1e63be584e9c05c8053277fe4536c81bb4fae0c107d0de3d3e3a56c83faf8a96f8094166fb478e756612397c407fb8550020b20e2e6347ecfc8000cc37868023024fdce9671eae8f36e50864560a9bc82dcb2fc8cba283e183184f4efaf855f9d7838f8ebe34df5fe9d14b35bf8c490756553a8af22d584436fa8920d7f497c7ffe1486f09b4929185e3758805e54162826abe344971a988b9cc12fdff9784ca0e46c24730b2501603e3000c0413d944a32dced712d5f374b5e3002a8c98c3b2bdeeac27baa280fa7dab9367356fcbbc384377c8b474084fa41efbe73c96a44bef234e3020d54309901c5034c473fc4977ce4fb7ce607be083edaa584882f7023f8ec9b6833e613ef9952017ac57867561e6809b51f94cefb3ae9d74f7117f8b3a0796cfc2bcca1d39fbc853a42e875488b9e2f15ea80cd034883f1aeaa87813586cec7d3e12d72b03ddebdd42d8ee04e567b0df31b3caa831e5827c7c0abde1412df8f89ef6092e619541a001fd87d93a3255bf4b467ea6e52b3410ca4e8a3ba3d3ac66d2942f3ac5a29169b21e7c0e772a70bd374ada7332e832041ce30753def80e4f75dcb13119ece8d55394304b2a2d153f879cea9fd911cf11fd8fa352134f1cd4862e2e204862b80896fbb6b0a1dd8694be493d6904a151ee4d437483fe4e58dc949a4e1f9d6493dad93ffbbcdcb251c1e2967142e9ea3cb144628aff2d99225fbf57f91b16f776e31be53ca3534652f32241b99a4b661270fe31044c6b33ec53b0dc025245b227129602e0bbacdcd4b1e4096c38d969ab38d039746f1559979176e1a46cfc019eb82f0a097910bba46b10621c7d21466c3733729b95b332060f340544085a9d1df3c46f709b63b42862cfb1a8faf8ab448144e113ae4610b155202f464057e20c7ea1937101033a90398e8ae8e3aee6ccad7869b5a8e656feead63ac2a80a5675591957579971529ce11e7f806b2a54a1c8f01cdc836bbf79632a53618e019aa1a1f4429f8716f98d7de3dd6a7797ceac15bbf7ac6ed8a2e3cc860ccbf03f3869faede81ee8e73f35151e97edab3796f9b717e6673ded9755dfd6d94feaf3cea25b7c7b09f8e91aeebbac96d3cbac6a4ab35d2684c1e9f7ada755d576bd795d9ea02eafd6e8dfbddffb40ac6afd39d56c1f87dfa09fa75c5ffccc9ecd47bb78cd86a148c5d7fdb285d5bf3d6db7adcfa9dc8edef33bb7501f3865da75f57ac076f8fffe92718237776fa75c5f073abe7fee92718e7fdb4bebb56d7b7c71ee7fc463976281366c277e76d83f07de2c86e5c76e2708e21366d1072f17b10ebe9edf16f1cefce1bc7fbe4e2f7c00fe317c7e3466e41411b843b0e168c91b7de317e0bba0e7be1a7608c670ce33e8e253663209fc727e18ed33b86f137fcac51a58f28f5566ab97f2685d7f518a23143cdbc957b9a6e76c70835df9a4717d4ec6aee445b4fd3857bdfb7ea10c7a1780793d813752c8aad55b1765ff775f306e3a953a73cb929ec14ebc247b12efc13fb768bc4be93d8887d5b65c45f1827f6d895dadf00bff4d3e9bedf096f775ef8f8b739c36ff8f9eaa7eff7f5b7ad6b646670b76f320dc3cc0cbff54e32335865c4f0f3c2c7563257bbfbddaf3559bce177dedaf93b6f7fa1281ddeda998d46e4cecf2f0dbb4e2bd9512f6f8d244f9cf78b444dec7186bebbad6e2ce73e75b63e5dc6f1739f23799056e8f3452a974aa4f39873de48e797326f5d24d2ddc827e0bf71c243db3c4ecf79275966d3dbf8657ce66c34e6576fa39e718fc971dd77fdcddf60e386ff8211f91e7fbbda8e91c118deaf62ecf1fb234f4c20f6c41f5a62226ae2b7d813890cc6ca2a07db7eac37725b61a4f1e9dcbab17b8497dbfac24ee40b2737f28595806eec6e668677c32f2cf7fbb5ea0d6fbddf7a7fbd5f2fec34c21986619759e137acf7fbebb8a1dbe3f302348637fc8426c9deb2f0f6a755466cfdfdefebfc82f7c32fbcf5ed577534a2549265366bde647d628f3d3e8c91dbd5af12e932f7726ba6516bbd955a5b9d2ecc7cc5786975f7d705687cb4e68ddcc80cee13f0bf8e5a239def7ee46fdf5fbfe1fdfe86c6c7d7f097fed2cf0b50a8cb58fefb47e9fee6f78afb4b49f6e57eb9cf0bd0189aa19e58643076776be7d73f2f7886ea4d96d9dee3fea7d168f40cd5b3be3befa356469cf7f1cbf8843eadafce4fb2d737f2fe7f52f027fcfc0274e3df7e55f16f78e1ad991bf27ee311f975dc46a4f3ebf8ac60dceea6607ceac1328eff9d941b698461e63e6e23f379018a844e38ba2ff71713b993fb9dbe99c827e0d6cc0dae7e5e80b71b77d2f9857c5e80c6c7e7932d3ffb19a218574d1863a3b75e7e2d91fbcbaf2af6e7d1ef33289f80fe04fc573f27fc86bf7c1bb7fbe5cf0b507feabd6e8623244eec6636bddf2ed3afca392676b7d65b3301dffdbf22a4480c0b9912a4539cb712489cf8b5be5bcfb82b34636dde4ae57b99de466595f5dddb777f2b9f7a4f3de5ceeeb42ab7bb151285d88875fc4c39bfaa58b93768e6862c979d800ff8470a4ae3466edfc9ed3237c0dbf804fc58f9b4feabacfaaaf0d473f5b2fb7decf7717e26dfd5a2f4c0771b1fc5c60d7facf4c0771f83fcc95f17a031597c8cf59da6dfc75eeed64f3d781b37ccdcf0eee37e9915de4bbbdb9ab7bbf585776737cedbddb01c9c9f7af03e6ed769859917de7ddc30b302d3ef0133e0c7aff7db8fdf67f4ad9418244ef42f1c666591c5d925b3bafb3d26f576b5d5756eddf8ad61b172c34eeb88f8b85f3df6a5a9dccfac10161f3759fc7b2b233e6e68ec6f59bfaa18d08ddd185bb9b76e0c3fadd9faaf8e974ebde3f6d8f5374037d6cf77ff76ddaf970c2c169015e7b12e4deb9771bffbf9657cd825f3b2dfca87f5e0619cdca6dcf0619eeff307dec8e3711b8fc7a3f1787cb7fb27439f9fe7f97d9a59cb3fcc33e891e297222c62b8e54c9c3e8724e54e4c62e33e2291fbe1d8f7c7f93ab94db9fd7f23b712767eac3312b91f46228d1b69cc8731fcb42e95dbeac6c6edc7e336dae06235ee8cfce3711b91c67d4ceee473e718825e768145e1e640d4edb5b01124c763e01ec8b747a9acd5a88961e4ce5b0fe9c6c7ad77ecbaa09181893eb6c4f046c2eed1b98499158ef9a8df33bcdd187e5a61c4ef7390194899c86387a5441e361277944adc61c8531fa52be3ecba79c284441d6762df474f24541393897d2f1375d4c9a0267147a0c41d5b12772426eec893e9d0bb7fcef9f975010a7d24b03291c795d8137914c663b127ea508c8f3d7ac43bf6441e9662a5c620233e56088b957af9c8bcddb874f371ff7e61e784ccac10f6423f91479ed82af6441e6762e52fad3072bf635f9aeefe6e7723df0d8d8d1b7e9f17a0b11182cecc096f664ec8fbbfe0fdc21b1abbb16fab1b7f65a87ec7bc34adfffcaa90e37703aeb0ca88e3675680371cf5e0e717fcbc008ddf0d8dc1b41da55ec325ce61a56736bf0e32b6a4a9c4e71029403a3ac5e9dde18325296730616a5323545cdebec58efef6e5db05287d4c49d313739c897fc7c7cce68938eacc78ad954f224d9c099a449a385b7b9a38807e1f2adeea38ef238dc1d85f2b97441a431269a6a4b9e2fcd8a5a0b7bf7de9fdb17e22c19e91d2379ce107079d806eecdbe8acd08cfdab4252506cdcd9686c7cfa559d8aadf0ce1e0bc86cd937849dd963fcbaf11b2a76372bdd0827d688e3fe1fe7db47220d49b127d21814bb83bd0b68d489adcde3a0d833d4efe3bcdd695dba56cb0c3d26ce503c66e83ff5d1f5b22e4a07cb6df07e7796b16bdbc0b1e3921bb9df0d81c3eb868adf4d0285bb6fa3932caff986c98edbeddd7012f2e74fe410f27f209c2fdfc70d43908b078f33eee3f6b82f7f7ef00dc3f8f4674632d3fccd27cb409da87b2676a357626b5595bf15ce206cd38936d428df8f7377d3dd59d07f6db8d53a4f9bef7413699c89dd9de5662476dd641137c69e48e3e96e37f89beb65aefdd089d2c1c6089b9e38182a5e90c994555ef65b6b9017357159ec83ba7c510689dfadf47723a156d1006ecec330b405b1d168cd1b562a8df01bbbaeeb42d0d9af4236c6ee9c2bb7fb845f57fbdbfb9b1bf711ce6a360763a5d23960b9056cffdaeeb5bd6b3b17619042c32b5fce1c3ef7bb8db9eacc79bc6216759639c99caec39a7bcc29e6843ac39c099c6869db2d3e3e9fd604cea775efa7b5abc0d3da24f0b41ee364d93e8e41b7151a1fb7351a1fcb9ef0201d36c8b8e878e5180a39a8db0c6cb2014febf13826e0696d36c59e5d5d50afa775efb0279ce0198de1416ef1818db4fa2063e151eb693d369b5d584f6bd7864607b9c56e6ed12814baf71f8fcdae6d8c46e3a7463acf20edc4ef4e73828181816d34a70103060c806da5335d384fabc379f3c64d6cdcee65f08663e3d3ea6e2b3c287ef7d30a2186072d722565c577c3a1e0c1277cb731c813192a1a8d2e26d8d127215bdcd90e3b3b3bc3018daba14b0dc62578da7007e3c29e389271678409122448902041820441c2c2c2c2c2c2c2c20aa15028140a85420dc5c4c4c4c4c4c4c4ae8c8d8d8d8d8d8d8d7d21232323232323233b53565656565656b671b8c595edd7cccccccccccc6ce3708b33dbef46da71649dd70f1527312214bfdb8a448c3ebfc4ef3e7b1e930f1bb36be63496398d7574d8bbc99cc6431df6ee31a7f18c0e7bb798d3f84587bd1bea3486398d099cc6c2e4a04686d26dd0fd0e7a1b74bf5b49e86d09f67b74ddec26104b902041585858d8164b10f6e4e26ea858585818140a7dda806eb130e3a2f8dd38dce2a04f42b6b8044fe3201df64c127ad9bb8fa162ab5e5468946475adeeb6fac99061630b72e19060bb0e83afc41fe71a7ae9b9fb07dd9d4b1566b6e3e0e060fc6eb88fbfb9afa8749dc7ed056ff77874026aba1b16e402026c27d8067682a72017f709688c8f1b6cbfdbaa17b9575c45dd8660bfdb0da5db0eec176cbffbada3db0cecac4cbe366677bf83baed07bd67de2bf1fbbe85f1fbbe84f19b0b5fb74efcba7de2775bdd4105ac7ad1de5657521ea4dbb45b14badf2ee7663eabacb0b8deed85c0e91aeab0771f701a6eaea7550f8a5fada7d50dab70573daddbf9b436df0de64cf6d161ef36e0cc85ba4d2f4a06d161ef7ef7d3ea56e0698d12785aa1039ed62de069edf27a5a8fb15bd7d3ea16dd7a5aa350e8be7a5a775732885ee41aeab657ea45c9d78bf422a35e94f522f719877c5abdcebbb353322683c4ef4e06d16d1e06cfe8308fdf9deca3db3eeeddc941bacde30e0beb18f6b932e8cba233927498bf8a3accdfc138eb6c7c6ad962f7b23c46a36974f76b341a8d7be9688c213d9f2a19397429ce7adcf0561e6167d346ec2d62772f61bd5ce6b6a6d1dffc74dc8cad7dcaa60c02590293b11aef9758eb41c7454d495d8a3b87820e460975d853bb866ea1fbe5357cafb85ff2203f151f8fc7a70d1c3aeeb87130883b3eb9e4a3368cb52ed461eed39a9fee152fd3fb07c5d61f1c64f59331e86e27a0e6bbbfc3a9505cde27a031ce7b9090304890c24243c32b573c0c7ed1611ebb339815c60035b5b2492644528c0a21924a442445870d2229325f080b1149d950441c7508c9975fa42688987ca8e87dd4901ad56951cee29545378b858b67167b10c656779186a950a6f2983a94c7541a534cce98daa24c264d1db11e114d112296faf407b15426c4528f104be159fcb3c8c994a4454b8b8f4e3d3a45e8d49ed77543c5790e9b3388a7be209eaa8278ca06e2292588a78a208e5a84b8480ac662eca314cb540a8052574a49294558cab0542129c35235489522056a541e3147628ec44689893225464aac14e2283564321566ba92c946a6229814330d623a84c912a63a9806611a83290e26434c5f30f5c0c404538e04989ad6a51899ec5feefea7bf4f37435d12641e13b294c7d2a14b8a98062f0dba24e9d2e1a53e97ae5c3af3e892e1252496be58a263c9d0921c4b87994a215eea816809d152a70c75ddf60e214468509c3d6c8cc4f9a538a4f02c22d4044a4f9c6f77ea2ba0b4a4195566caa0218853e2c8d07247ca294975a69c9a22f668b189e5f0b67e214e198338258a5818a3d16814d3d364c68e28258c9ae15511314888527a1cc520e92c26862c76c4287fe265ec88520677287d2b5dac8e181e313c62786688d911b32366e717190bb5d61a1b8bb569fa166bd3146bd3ccdbb7a292dc3d7bf6ecd9b3bbe936b768140adddbedb069757363f2c86d6f28341af5c39c73cef95011bea374b0adffb86cd3d45bf9af33ce75663fceddc87733959ba6756ff8e9effe3cb1121abbcebcb715e38690ad3b86c64c0f39cef8db78b89b471931bc5fe30df8d9d5f5ba3a9984a9f4d6cda69f989b660c5786ce598ef6c766b8472fcb6fc4da34dddddda17a5b39f4461e0b04cbe90d77700fd3dbcac3f256c2f9ddd5304cd5f4dfcd67d3cbf26f6dd775ad5babb9b79c6e0e6b6e2d6713cbd9dc57ce66fe67b32a5365665ee628f2dd6e554bd7edddefaea2622e1f2eb3359f56b7e37e93bfad4d0959d76a65157f553e02510c2bb549d44d05647539134256fe864637d5d33a1753f5f977a3a2721af75e3ead5def9bdddc621780a6d5332d97c7a69899e6de7b278a25f99de485c50ac50a8f47b7b8ce93eaabfeff5b1c974be4b3cb088da99ea1706c391e91c7a775bf4f2b347e9fd668347edff88b24abd7d902763c369b49b038993c2691c96432b9e82d598f59028c92dee753ec4af33793268e6697eb4acaba2fe9778b4cf5c930838b5c312c4d6b5440fce657bb49e4f10f099964dd1c8d33fcb4fa9f68341a8d463fcbb884a3cdd81ac5d2ac8b1236adbee81082aecbd00cb781b332b36b6f63d7090931c4eed30a37dde2e3d2f955e1bf26e4189a3704e7344397ce7f94a184577458de62579aca37398870efaeae66f3251d8fcd6657d7de2f2933c961392ba7199a2164b6ac3c7c9fb9d0ea871032d42dc54aa7d5a7781df77193e536e63e6e35879dc6e3cec718362ae10d3fad1232f4370ce7c9d05c5898dd9dddbc9562639ad67cf8637258fe2fff255bfdd0ea8787127258d62e98152cfe386f652e74a51896e64358d2fc1d2b335518a558a30df88a4502ebc3054c13dec8e451a9542a954cedc7587bb9446eaa9db772cf6d09c10d6e4e9944269149641299442691492412b993492412894422914964129944269149643479542a954a241299442691496412998c2addf68642a351b12e4daa8d448a753122b77f69c5ea2c2988d56926c5ea349562789485735c9a99c4b68879a94284b225fedd443eb598cb25161616d6725bedab6655b3d9543aad75b132339bcd26722fb75289546edf26142671144a91d8b8c9dc923262ac5df5428893cd6653fba0eaa8542ab76fac445e616de54e2693cabab8b97d914d67d5fba5b9dcafefe53e1e8fcd2e24539bdcbe914fb13b4e313b46b124794b133e640e7a8c6672e79dd45a6bad95cf0ac89d77f2b895cbed4c3aad49b7b9586b0d8546f7516f7777cf3bf9b46659b9c5ccbdac6a5275716d25b17692b98fce6555936bebaaaa79d4c2c27a5ab3dc62a553cb69cdb2ca72eeb91d9f4aa58e1e9362599a5619415eb7bda1d068742eb973d2a9dcc7e68eb19e566896a675eed87c5a9b3a7a3ceeb95945a350a811466aa4466aa4466aa44ef62135522335522335f2f9d5dccc4d15f5417ddc8ec7bda1d06834cbf1b893fb0b561e93c9a4d66259dc8c5a6bad359c779fce3aebacb3ce7a1995b46850dcd5a78edbde5068f418cd2296a59914cbd23c26c5b264717bb33e4092addc7923372891cced715d9cdc48277267e7ae8bb5d654cca7de4a5f3e276464f269b5dac88d7c5aebe2ed1b7f73c34fe65e3aad75f1522b0b4bb98f75f17127ab94482412a9dc47e64e3a975a595854c9abaaaaa7d56ae7bd74ee58e9dcbe56abe686b7ef8e954badb515b9338458ef17b98f47ad7556beefabbb923bc31b8677d3a967dcbf955d5dc8edcfed1b1beb901ab9dcc79dd45ea70941b9999b6aebbdbf94faf9056fe5466e312d4daae54e6ee4d752e9a7f7f1a88f5a8b6969ea5df5dcbe75ba4d92a2d5437525eb74b945a149fdfc4a32f772e72e312d4de6f34bb9bfe07ddcfa0b3e6ee4fe523e931376f2e9f7a7901be9b47e21b72f8afdf00bf99ce08787b12f8a7d1f9d625a9aeedbaa543e934899f3ffff53cc49d3eac230ac63c4fa5df7cdfb9deeefac5d576b3ff75de8786c5a3d6178672177d5bb8fba4d0b6b2793fbe86f573bf96c229fd67f991b94f14bb595b92b2bcb2960cba9e5cc4b2cf732e35e3a8d1e1f9bca6d747f5729b7914ab9b552a9cc5bb99f29a7a4722e8f569acc7c786c2a95ef72b9541e9d3fc6fa6ae28ce62a2709291fc54b21968ccc0dcd6d346e2ce49ba4aa5a5b5b5b5bbb72ad92cfd76552506ee656ba92948a7919aaf714cbb9773c1e8fc7ad4c32e7981a964caa2ae6dc9595dbacd29d8c4766ce2fd359a5b97cba8a19fadbeac63ab3bdee768ddb1add615d4e57b9ddeac6ca8df436d7c3b4ab54ee573337bc5d47572e9973cce5532d73d552bb56cbf76a0963259f5e36a67cf35e3ad279a0715ecd6ff9e3b1d9dcdb173d5dc50cd5dbeb728ed27959de9f9944e3c4503571deefd3da656d8acd685a5d511d3a7f9b73bbd1dc56b7381b1ffea199ca8f1373d2b47a9f3add87833ea41f1da3cfe4f3a3cc332fe390a120f2d3daf5a87928d61b7916eb6d1510eb33011b0cfa7edce0dbe5656e8f73cdb4c2cc707e7665e8bbc338350fd5da965001f1eb716a62a3f1d5b071331f6ea37a2aa7841cf61a95fb3d1e8fcbe57267e38691c69d84a08fb0bb39ac4fa7ff3e4dcd42b72fecf4ff6e2e26b7addbe0369f73b3e439433f56bece67f286392c8b3969fe76e6178add70372b879181358d58c248351d4a165573838320610e0307102450d44df3f6387dd86233c7e53df7c6f749c1631475d33cd705dfedf1fbf56e3fba925c4cef74f7750ff3a3fb41f22822756267ec8844a6448913fbfe82443ef361861e9148f7025ea6f73e1e9b48311a4d6b8102fee6b176dd6412e9ca80dd33cbac3053cde4f67d6742c8ca24f2d8a5fca7b52e561ea1cde8eeca4d2d4debf6dd62689ad6e5d275fd2856a6d9d5d5d5d595c79594b56bc995a4dd43a56736e417dd2756566534f9cc1757e743b888a298172dae1d60c7cbe57269dc5714fe549c65ecc24ad3b4da57bb2eb6e2dabedb57cccbf68db1c4bc60616d5f2cf74780aeedfbb505bdc4bcecb82ebe22b0afb29a5c595acd2cae2681e700ada7f57814f06c36ad729f187ef756d2b4eef8dd755e5e59312b2b1b8981c9d2e2da322e8d4be3d2b8342e8d4ba3969696f6e3adadada7d899ae2dadad7db5b7b2c4c06c6d8981c9ca7a5ab79a4dae2e3130544c2a2615b38b8a8b292786440c89189232ca0a7937dda3062c105b6d105d3aec27bcc7a6764d2157381e8d1a86b3fbbaaffbbaaffbea1c23cb70b39ba84961932b4d08bb7680b9cfda7d61d8e9cc0a3b2b2b2b2b8b6bcb5d62bdcb2c78a965dccad0adfd50e4a6607c2e97190b0b2bcb4941eb99a544be1fbd0cb9b313b9032c99728fc4c27299725a4ca4f349a7d8ea8a2997f544767d7905e882b98c59cc39ade56f2d33d7520758be5e4bf80b0bebe9cea397c15bdbc8c58505c3585c5b6fdc5bd995f4f086e1596c9e036a082a1fdd342b65d1f757c181db1fdc1d55c4dbdb1d15f0ed4dba954ee50ca57b6c687f745b6db68ab787c5da6db5d516543aed9ef4baa2aadd5ea9d5beea1d354be5fbd352b37dd8ec344dc1df740f9ba7a566f3b6745a094ddc5dbb57956ea912faf8ee5a6cff364ca9d32bb54ffbf7416f83742b95b0a28a77c546a03a089b52574cab59bb180a774715a1a5d36aa9d915d72a1df58ffae74737cdd34ae7dedea6526a1edd9d1f1f9d1fdf94eaa2aacd3ad864d30ad2ac9403dc8a6b15bb62fb87a5ebe3cbe6d1f5f1d1f5f1fdd1a529f8a35ba1e50b13d7449b359bee55ffecd8ccd0d0ccd2cab078d76a19754f7aa7bdaea86ab5d2bcad94c31770f707ee3e2aa624e2429f3403959a05119723ee9b8001c299f8c195bab71dec69954fefaefae77796c26c4add6eab7c7cd8bb2761a67727b5c36637d56e2bcddb6ea9f62acd6ef795da87dd580dfe0fa8daeabea34ae0cd077fb6586c76535748b3d8ad36d97c50d8877c3075f76d82eb544a957270f732e7f3a683476774d4ad745add93029a6da9daeab6da82bae5aab80c4007703ec5ded151a7d86b35bbcddb4eab2ca65769dc94aa0d41dd4aa77d2122f4f165e71c4ca97d7dd5ec56fbc6a795b28053ac9b5ea97d7dd2baea5e564add53eabe52a9765b9bc09534805ea97c2ba85aba2975fab77777ad5effb657aa969aeddb54bb3deaf52acdbbdb7d7cd9bc3da566a57b77d4e9b6ca57dd83c3504892bbd37993411e07eede40d09dc1db0237b74dc91c7757e1cd373857aade9dd48e8e5acd6ef9caa85b2a60755be5ab66fbceecfeb4532af6eaeecc0fde5ce0c9dd3d78f36dcedda9e5b0af542a8b2dd56e53b5526af6ee5add817b7bd2bbea15bbc55eb17c59aa1ddfdf75ebdd61f7ecf62e3bd39e9de94db5655bec54aab787ed3bd362fba8d933bd2c968543c95b0b2ef807ea56bafdb0e25a5d21d56aa919b6d83c6d9ff4aaa5a36ea55b2d5da0748f9a7d7be3a36eb5815a3a6956da47b7a5eeed49fbe8b47f7b7f7c7f7711565cabd7aa948fea81fa47fdeb9077b795f669ab1202a57b540f97a8601d02f420ca244876ae10823ba105cb3892495a91e12364a77191af9cca08b8e1e8cc81aa1b1892388330d38c341933a66c53d791ae3d80b04888910862478344b0e73e62de7423e1bedfe078b3ad87075ea5fb2acddb6eafd42c150f8f0a28cddbd8edd64ea9d4ebcebbabe6b1d8641bbbbd56a752ecde94babdfbcb6eb557ecdd0edcbb62b7b66a26dd78d83ceddf0eb4db53eaa6daed2df6baafd23b77477377cba9de6c7377ea9e9d5df51a38a5fa6d06dbad744bb7d2e9d6064a59ec49f794aaade66df7f42add795a69de96d651fff6a422dedea6d42b8b0dd4e98a6b35ef4e7ab7a959e9a68e70b3a54bbdb956aaef4f0f8bdd5b9066162db39b9651abd9ad430d38ddbdeacdb53a0fa4ead1ed49efb05aaab8fb9d37d50eb99a199a195ad9de159bad025ea951f74c424dc256baa20a28bdbe5216d4ebdb0546928cac8183063bacc5b40adde25131bc79c86ed8e25131ecbd77f2c56e31add251574ca9747a77d2ec766310007fc14b440d1ce051f7de430de0f6f6fa87bddb63fb4adda3a39bee61b5a29bc9f5623cdb6aa7bb4183bbacd6ee1d6be0cd682977a74eb1d7bddfa853ecdda6eed949f3eea4d4ecf56f4fa959eaf64add6f7bd26b96babd56c57841db65787b54ed6ed0606ff35654a97966d415536a465202448508318738c286db2da6553f7727f4e6d9236dd62c30bbbd52cffaa47c13dc8d50dc9d8637cf38b86bb3667d523eaabbd7f0a6199aeb19959addda9d69afd8eaf68ebab787bd73b0afd4bdcf59677775f66756e92fcd66d0f531e86280c5f61b3dcd6856197cdfa51141a1192e1434976b39450bbc63d0c580dc4a0ae8aa31882ce19ad004945b78799c707483939a8116a2c1e399c12c1433906ddac92624a3c1b739c32bd0e072fb643388eca2ca4606efd95b84504bb9a58486db63b0ca59e5d4655667c72eab5334deb1a3dbeb405769b863a741b43338096f19d44ad8cb2553a2e977972e5972c23b662c017bc149d8bacc5a6621bb905bc612da140dd84b7fa1f1d6193c6075f936dd8101eedbb20ab6725f97e9082e8725179c8d238c5f460daf16d5c34afdba4bad75d6467dd4c8a400571b4318afaa3824ad8cb0f1b5d15573cfdc3f06d002661c0bbc5a06a9b6ccb082ddafa3041aae221a4fbaeda71603203408b18f9d3a7f2b3e08092217f7a0411bf69a09d3598266d5d178c2c4060da7f6fc49e4b3a7009068211208ae4491203e74da98f162e5cc0cc191bf2d106dd69326c54380fec8212323860a1426486cd040614201025c5b6ad264f0d225060cba0102b0d702548a12f9f10d9e5a04f509c509ae2d2b4174e6b86963a60c18203f74d0a928316283860a7cf6ccd1b3a670ce50213e74e4b46153650a8f1b3534290a02d4868d9a303606a9d30a72564c45488f14d9919306cd182c427c50a7742a509c1851418ec15b981593cf1e3b4d9608b1419daab05061821c0387f488cf9e3b73d2a0190306cb901f365258a8d080c15b9b1a5ad89595eba7203d4a74c7ce1c3969d080c13244c80f1f361ad1a540f1e0ccac14290c17aaa8100908d283078911d1283e7804b6e0823ca517b3a997541e75d4e266c9585c2b9f96d1dce89b29cbf498de5b05b280ff327ae900dfe572fd1612ebea4a37ddaa255593e9b50ca01490b4421a8fb031c3f0fbea77d8c6a84123121660747b937ac012c40c07d9253b42e1e4d1cd5d56bdbb84e95c169aa9addc4135940cc254d98874c99803dcba0c26452ca72e19d58cacf6f586701f867b33d8008304ab1ad94dba18c2400d2e9af1ee58a041b13e33fe7db32a00614676bd7459df3b1dbc63800661b800071b5a55713734851939060320472cb396592e2668f51db5c94f83705b24050c6366c0a306eb80348d48cd7cf55c1d3d661c5d2a78c05729981140946458201bc75048a8b2f28560655ce05ea09e9833f8f66506d60b4d4e48228051b862c60534e6e078034009051aef1220c9ad66d406f30ec38e3883ca3fbc25359869551f628066600cc03623695c00278f54baad02053d2039014e523dcb0c268d15981f8e735f721392c8b9e587291c00835c2e99802c3809bf6131e1a452eea9a2ca60f23847c06e403e9650bebaf93edc014ebe0c60310771ca3f6482e31c9c3406604a4082b91a905c590210786d891dc9da74d3439fc17c1ca011c0c9a399510153415b050ec6a56bf47adf341b72e926d8108c4863d23d7b2fb86e10fefdd2ce772b8a3cdee905720cba8ec92d64db8ca59ad6a0543b425d30170cce322846e54a78c75e0248305740159a1e4063d0ecec359e2e73f5fbe2a982482244d8ab972e7d0ebf78c93265870c182db47a78d4bb3a15284c901011e203070c16e6dedc1440111c30b0dd39724e65b214c00307079e5e018c867af258a9d241eec1db00ada5128ea3060d972b56a6488162d8240434c199d91225203e9c2ad5c9ce44264c6de8b056438054f11c30481aaf0809d286243408cb95b7056c5c59cae4d128e0cb4c191481f0cc8903c74d19203e7aeca04e3768b0506182dc9b1a5ad8951515d375f243478eab456b6bbc74c92263848836b6ae2c17b10f27110e1ab0218d30181c68c244394284c78b274e9c00d9a0c1018304cb27e58ecaa15cc58d294b7203c88cde455f280bca819080967f3262e693d56430da4bd673ad0ff6058e035e01cc00992b6b7d9600acf72a5b7dd3a5caca379991c763361adfecbefe87dd3de95e4d0424dcafd56c1f1e757a67275de0d6c6b6a6a6200d2d0a0b381087efefda3c30b8a7d73f2cde2edb7529d8146cb2b41375d54dadeeedadf68f6fbf6daf55ba16d5a9344b97dd6ae9f8b059bc1ce34add6b21e5cb26a272d128354a06ad01dc8e9ad1dd51a763c444f1ae550d520d6365d5bc32b932aa1c95ed936651b335aea6dd66a57d6a124413d86d073b45f404de9f5d9aa601ad3858e7463ea3e745d7dd06ef46c39fbe566ff4aa7fb79eea8f696e9beb222e01633e1e61fd3a5736f3ec59f91ddc07ef4606af6bbdf42af8fdb9f4fbaa6565f6ffd779eedff8f95fc32ef2e737e62d0ffff01b3d3fd34c67188626f7bb39bb41de7593ef293fd2dfa71ef3ff5bf37f3e86c85ff933ece6af943f7778ae7f9d8f2132d5bf76f57ffe87f34778b5914aeba8bfc9e787ddace93ebbc77fa45a5ebe83e3bf60bac11b7376d17432e70fab62fb172e9a7282bb21fb1bbb9ea9bcaba1ee9b5ffb6be41bbde7f7773f3fa63f66b1fffce6acff15fcd91f7f9973ce708407fb9cb39b3faac9fe95018e089e79e59591fc9b03bcfbfa3d73c83bf9aee72aecbbee7d6877c279873027eb87df353ef37561ce47b7f7dde0eceebc4422d06e32eaa215887e4ec247e3ffdbe76c48c38fccae06fc67fefbd7658f54e63f1a3f43c804f2002dc075ed5ff570cecf749bdacd0172ce0fbf8bf748b057bef9dfa76afbffffaf5cc1a844e6b73b2e8df93bfcf15fe7777fee07e4055980fecff9df7e405666a3fbfad5ff6daf1ffac85ffe3f83279093daf847f7f3ffdb3fbc95b3decdffbabf202b5f6702af75ce6e767f41ceef95938ffca39bffffed07e4a451bf7b74ffbf6d7f971892811e7b5f3ff2ddae4722df9427be08bc01f77386b391fa4dada872ee3f7ffeff32377a9fa790f18a2830f9462195d4e704a347964c381b75210165918f701672115010a922a47c3c84544d13108cb01b4048ad8a1f1849097880a206410323029c2c3012105dc0a8eb6c81944a4b1b2326589b33f96c8cde145bdd29276c7bd1cb16912240b6e84a26abab821d338c8a8d6db24c05eaf6b2c0e6ba7243ac145ef70af1edd670d76ec2dda13ee84d0296b45933e9563aa5a34eb177d5eb1ff58ad550b7afd8eab66f0355d563783c1b23dc9f857f96b97c65a08bcfa4debc68c1c201051c3d6b76c5ae9066a7ef0750748732ede974bd7468f0101d5021d44037514565e2ca13427b78770a04155c9c1f1303b4d8c0b8ccc1fb82208cdf15909141557c2c5cfbf412719873a575966310a12759367e729c2834137cf7ac61520104ba8a021901d4e8f952288e7be8e8878f274b06b68fceaab4dc4c6945499066461cbc776dd0931e88ea54c80a924b57b74bd336d602efee622ae38b4fdcd8926986bb1bc0b109eb4693d76176abf50aa2ad6ed89b5ed2a65789a69782a617d4eb361e76876de8ded469557bad6e6d756fab9b4160569a95e6dd6d69756f03edbc8ca002706a06805457b7575cab77d53d6dd86e00b7a10de0f6b5ba826a97c2ccccecc49829eefbad19804600bd00277cbf25f7db168fbab777b26e9bb7a29add7b8b47ddabd3521b381b3470773d8080665729f7adade66db5556ade568323dd03bdd9257529760f8f2eb03a3de3fbbb467703075bbadda34ea9812d600bd07784bbb3f026d78b6b96badd4afbceb25b6d8a1349b2b024140a63c34892255fecfdb6c9f68bbdf7deee0e75f704ee8ec0b9d8f69b9919578026d75558743bd8596ade161b55db705bbbadaea84eb1d707f4e6d6db8aaadd19dfdf35f9b6b7d23da5eadd55afd2beade65b53cb92efd949b77f7c5a88bedfa654bb1d389552b37bd20c596c362bc7029bcd62e3b498b8fb9837b5fcb450b8fbb5bad552a73bef6e2be50b8352efb27f58ad96ba7b0e6f66c5c962b57b7b523eedd9949a95e669cfb659acf6ac99d597a54eb3d8bd27dd62b75bba03f7b677d46c167bb7b7d8ebd652b1d3bbeb1fdebe62b5d5acb48f0f7bb7a7d46915109bed2bcb52b57feebec09b596478d89dc56aa53b6f5b65b1b3d4e9b52ae5a36637356fbba95be9dedfdd9ef4ae997574776c96ea6207da6deab40a589d6eec766ffbf8a8dbad148b12d61f9f5ea97bfb67b7f756bab54dac31d32bb5894503ab6fe76d575ca97b1b0fbba977d53dedce62f1b2d2ad7653575ca5d93c16dc73260deed951decb6c5901032577fcf5c4c8bdf0c8a057c541f0c761e89ea0e9ae25b9fb34d123fa43d0c06d1f1f954e5b35c3fbb3736e814ea7522e61502a1f564ba7ad9a8569ffae553eb329d4ee4f4b37a5eadd51f3eeccb65729846726bd84a1b16d38b88d06dd70635d3e80a840a182043a0a153ed0918833ec060e7618f44add33c3fbb3d3b2d797c5a3dbc1d6fe5dab58a2dbc1de5ea57c665318ee8ec39bcde69fb69a5d7116b882ba9566b7dab33bea346dbb8777c6f777c5e056553ad2e68a46110b4212b42727010c0d19e3e80b0b9c2ef447015713263dcec46afaf0c70a26672a249c0242a6a9b4713e82a0b7202a03d33c06255c50e1c20a9f1b0274df16e82664c7a05358960e1140730929284c964d969ac192e614489384a085bdab779f02999a5546d8202ba5611e5a7e642a03818957a75c290d20060c56a648685aca7d482d112434c58a04b847b9cc1542881f50381273e4505ed2c890cc212405a26f7ff28cc22d139c5e383f28ca93f1f2ec3d4bfca06841254ec640588a13d7a667dc484d463373a8cd071093d8ec1993b73ecd51929552f804c5962f4565c91b35430b7a1c98f28c124d78b22689219d23264fc788d81814a390188a29f25beaac7d9053e7488a063d7e088e1338869c5822e78d8d673106c423288188ba58083e8a4dc8162fc6c0d0bbb1fdb8287c529228c9c4c2c2de2728f498a65e7d3e284d9f39244395acca57002450f8a6382906888af31ba004840faa41e7f8c34b0bd510065ff32511d5ad471d2e572478944b7751d0fec4219500ce099f6c4880804bc9534ecdf90025ba4dd13269308fcc3f008991b6e70525147d60ee768864cf0b3b462d31ee04663c58d0225411a40d77cda54525395bec7c794a92a43f549aee9edac30442a9536210cd70916814804ad6e954921e6af220b11c08f3583a15430da4e374889557a547a7ee4ce520b3a986dfa13a74aa421630b02455ed103f7f4e993d42d18c2336c600ce732a2bc9834673fabc90b125cea2283d5f0e84a0a2a19551b3a868c75131549b2a2dbd318b710090d04704c895257cb62c620985858e0fe1164691298b40aa285af3e40ca43340982c6e15896201d61716634d9145134734dce821040d82103d161fd85173aa4ecd4df4838dc50339ece8de3d410b3c04179364c870b992e5d4e099ada94c9c1a852292088e26047ba60049d18247824957e8d3d4141a435bf6c060d851b181c2942111bd277bd21cb0730484a91b72104948e0e5470f1a0ca6f46cd4f9a32871ce0306124c7108e3b68294d85a981f70a6d632a9250bb9c4b6405233f56588838f1e246d90742233e582b637f01ca0f14607ac54a420472861dde60a37082885e74db3085b065222dab24a81a101771598a2cc9e11cb5247bae4a92004428b0f7ca7dc522f283179b2308089079e52a5a44dfcb600e152c50e994ea526f8e980028a1642490d4ba5c87cf429c025888c52708f4a59b111212453ac17687988d4a7532cc09462a3e6d0863fa40e69e95be4a2a364ce1d77f7c53ca4dc44f2e2a31b78c9297277476e41e08e9492c4e0eed4bfec96aadd93e2b9fbd3dddd29962f9a1f2c40db0e7636fb7727b6dfb4d2050bdc16b42d605bb0b6406d818205690bd01644172c7073736b7363735b73537353e096e686e616755bd0e6d6d6d6c6d6b6d6a6d6a6a02dad0dad2ddab680cd8dad8d8d8d6d8d4d8d4d015b1a1b1a5b946dc19adb5adb1adbdada9ada9a82b5b435b4b5e8da023537b5363536b535353535056a696a686a51b5050adc14b4296053b0a6404d810205690ad01444152c48734b6b4b634b5b4b534b539096968696164d5b80e686d686c686b686a686a6002d0d0d0d2d8ab620ea166d8bb245d7a26a5105d1b4285a341a6d11753c77d77af3d8c3ddeda2daac19dfdff56ccb8747cd62efbe7974d1024514c591cf1dc5164516c515c5f369e7ee48f713de348aca62eda4ee5ec0dd09b8fb007717e0ee5fee5ec1dd2de2e2f0720fe0ee595cae85e5ee578ef4d2342e9b46b0fda69d5effb0761b0fbbb77fd88dddd2b97bd3ddabdc9dca97bb01dcd666cddaccd0cab4d46de076ff2d4af73f74f714de84c1dca7d83bea14cd6ccd2c5ae6b6a6cd1afc21f9eff1cfe2ee76de7c07edaa7bee47dc7d8537dfa36bb366596c5f9a59d40cad6cca57d5d2d9a551f5a47bee06dc3dcf9b2e10d766cdd8d6d2a479daa8990234b36899969aa795e6d15dabd8bb6dd5ee0c0f2d1a5d4393dad9a5a54ddbd0f0d8cab055332d752bcdde990566b7daea0a6af60cbb222bbd1b6c1175f734f7bfbabb9f37dda35f03b567ee1fe6ee586fea1c59eadf9e1470d765b37275fb2add57ecae0b83f649b32cae7f6f6fdbbd3f2dd543dd9e52f7f6a477ee9edcfe6103a518badc7debcdac469b35bba302d2b19066adbc990ddd9d05760f2f4b05c4eec06df54eda27bdcb7dbeadeef56977dd565ab7e5cd97e4ee57decc12dcf7a480583e6ab6f98beecee5cd8ce5ee59defc53ee0d5a50a7d76a96aabd56c3b6b60add57eade86db54bb3dddfbc3e6697718d2dd8f4677a772cf31dcbdcf9baf61cb87b7c55ef7b43add7c526a76abdd2baed5c0bd2c757afddbd4bcedbe52f358ec2c369ba5eeab744fa9d7ecdf969add5ea97cd4bd3ebeeade56a5d9ed5e71ad6eb752be2c166f4bdd1d76f71fe35fc6ddb3de7410eedaacd95960569ab5abee9ddd65b55bed5ff6ccaeba77f6775d51d6e2ef5add2bbbb2c05ef5ae7f656a6c746c6e2dcaa87b76d2adf64c7bad4af3eef6b0d8ed59dfdf56fb97353bbb4aab5badd48eaa3da3f261f3cedc9de94d5f73772d6ffa769f52f7aa52bcada56e03edf6c6c3ee2bb6ba95de61f7f6a43b308be5a3f2b9fbabdddd75f7a5bb6777cf62b359b92e2f79947e383818bbee4a2349a97430eb7f416edf48bd7fe9b4b1dc38769cde48a78dbc09779c76075de4d6ce4177239f3670ec381aeece6e8681dcbf974e4119714be4fe0d43b905b980d0fb9f82bff516ccfbab8372e76d02b97f0b720191dccaa60e5b2e917bef8d7c463517a3bbdf8dd3fb370c77e76d42efdf1ee772583e053f4ebb4e8fcb34b273502f9dca9d99727a3f870cff84b1dcbf03f313061710cb671d12f9fc411df66e41e40feeb0778f0d6a1af58edbb83d6ef9b42a9332e204957be982606e77c3486ef729a8f76f417789740a72596e250c260c2ec60d23b97372e70d22f9643e21e8b0778c4f9c7330b9974c390ec927071df68ef5691ab7f383e830e353cfb8fd300e1f426a272b49583f0af594dd74997b361b946429b1dedb61a9b4291e9a1e4e8a3aae8f25d47c690da8bcc750e40a66605eac015472212a065e2357376bea7be25df8acbe46569abc298d12679203504e11698a6f08b24257fa9ae0db3d82720f4711de49c98dd660e6c71348d0c1b176b87c82873a5f3169c073d854f60844817237bd1f8f65121e9ffb10ea8b1cf1ca5cb0dc656341484f4833f89e0214e4f35a08c98e5efc7d8d0899320a48552ebd20e21504e3e965dcd8e1737b9c3f4a4b4af3c902f91e2d0e3d0a2524de8bc4964e1221eb8089d31f3326e621e96d476c337d4215369c911b24efc86d2e27ff147caea2c0ffa0f071229930389d619a77b3657dcd14f2942b35b183d53c52e302e83c7af9c840f05508305f4b6c7ccfe48b8d2ba866c3fd1af0d164d611cfe844e16bd94cf9b540566791cdf44b0a91712d7de2269cd45c2a08896f62e684cec3c5c6ab88b4a61dd9a83a01ae3d198a00235ec24fce1761127229499038152674f4dd4e64349464e5d716b0c9872824c9762cb4c05463005fc085d285f0c6c9e718e1e7624032f806ac471e0b00d887a063e2d72afbab3495bec4a7c667e8c3c1a953a64e88b5276bddc54e28c3836bf91c5daf02a57cea2bd17374e0a04d6162e4522c2f6e60edc0e7991ed022305c793072505881043087f146c42d5501cb235a33025652ea837f4973c39da81d6abe4f64790705449733c74ecea2e9d20f89bdfc14b0144f41d0f0eb70c9fb4aa1b24e03108d2b76926a243b42fd1501dacc7506fe416994f7a33dba9340834c83819dc31f1a6918a9e209fde0ca5ccab2b286024db7c01f9d33d810f19e0a539187b8f093dd0071e19f0c58727970d2e24c2070d051177b7ec4c1fc261b1f8f448e83b6e481d1a721b1c3e10899b9a5536e7e4681b06fb394a7df35882f08d194b780a6c3119970940997d079bf2d6e3c88094b4f27ce938cc565eebf5c01e563884a9ea18df53b91a978bbab2cd748fce3f9a4e0016bf86b93731469d39a1001ca735cf8f22303731e0b9b485f49f1cf978935dd851b010f760598790c0af43e7376b89c1aa33ccc06a6969403ebd35380394b0c0a2fe1c40bed6684d4635a2a7a3082027dda8ed7346a1078520a141f46013bb9d1e207374928ea3d31076943766f5a08e09ab78b1ce137b8b107964265f46d320eb84002a478b435355a2d86d6ff96a1ef8bc93c1a2d47799144f4af3e01ba01381c8e36e7ca43750dfa514e99998c09f00e6e24bd97c53f0faac4a20e5017c087809174b83c00fc92487bfe439901f9f3c4d0748010ea0844fa329d17426e878d91a70045928b2234e76d3460ce8118ad34030e707e0e1b25bfc44acbd55cabbc71879b7f24e3e93de23ebc5a283a1dc5117c8a1725f48f897ea8330b9c03993cefe4e27246660a7d18070178171448dc4f23f93484defc9a444d0f9785967d88faa417bd729f8d817c9b394ebc612130fd0243955341f3e28ef2434aefe8e3474fa092e4d33c2d7a9b20c67b8528a5b92e317fc4222db95301246ea5f3fc691290af911af56ed8bef81a0e47ba45182d1eaa7090d6cea9722b8a369a2b43a207000f001a8609a9fff0744387e97143bf5b40bc96be6a7e8b22fda41746dec84a282da6c2246d0046a27708f5c17ba0fc129270e9a387a5b4f1947f9c25374ee054986f114aebdf80b0b99596ef67f031e47ad4e2321a210c7ecb9413fe4ae8e16e9a2efd9039015cec48815c66411237452de4787e69bcd399a8662e09e5075506681a1812f98f0d67b98405e47bd283e6a6f951e9f186ec31968921fa2d3eed3258f4c379c8607b3c8b4edc8f1123b9ee18e53324aaf0889dbc5c41a7430e6630cf73919ba43b8061f080812832971b65dec11c03971347f82c1033eda942a2d3f810e2b592027019059e7911012b6ff485fac63844e78a4d4ab87e36a4c825a452f7cb44a04ff0038a8b22d2313f3d017a2bca435753818fd63a42c15f8400f3ba2aa363b7f47d970abe870931f840bfd8d334886537cb1b6f4809c6fba414f0ba1c639e111f215f6a8880ec5b63dc50212adec188746d94045ac9882bc3b15344eba97ec9284c097a13248ad30f0cddb8db2a2f9bb9c0ea6da1aabe01a2866e73c7e117a51ebec7abe63964c965095d213c45a1a52622438a3f1900e815b5c8f49a10ffb29e281b57224245ae24098e5bcdd469403ee0be90ce943d45d0f34f64ce2781927047169a5ac51fac47f1658a0b62081c97d106945b2a04492728f4c975a043fa6c5a24e9178214e408441eee03fbe04c222ddd4794402e88b8e3c5cab0bca93488fac3ddf2b598d1d125c2c4f91c0448b20d25563e791621071ab07c4a7f6e5e5708c6e7cd6191cf80f0e436a65c39579a221f84c7d72370b972a00d61ee5c00a59e33d2843f45886665a12ecd76e6bf0fa0c2f78302e93be100ba2ecfe0736a8bf308390cbd0e1484d720a28b0b5872e90871ddef403c3486bb34a7f2c92bbf68cb7b2a20e64b7af1f71dd8203e5722e66b40b21c008c1447a085896ea428c5d351a223eb41ff1d68e55e3e3d3db212c52e4db564670151129a00ac232382c8e19209eca2b9fc04f59b2045ded322a7bcb88d3e0150edf150f1f26fd3003a0bc9d1471092f0744d2f9f22a12ea8801e37a3e3cfd1dcc9bd6019259d97a593034111266381cbe168908fbe0f1f1fbf74a59ab787bf4fab54411fb9cb929d57a072232e9cbed3a530cd68ccdd7be96be4c24043f56c0770b85db60f3e8bcde89360520fc145260f60a289e33d61c61353e427ecd83218972b7f28e722e378b3f43c6a027d5628525fe80fcee9348ae45d1a5df82b89f43e069b06b94a9ddd6735437f97959133c105f4941867f49700b29c82c191cc64cb0fec4609c2c705d8e637561e3d968534599007e503ca90fb508964f8101a12f284b9c0b7524175c033393c54264ab9c89d202e01c614dd8503a0f3805423cf1985c62705bed05806b63ccb4b919ca4cae4ef1056caa10a21b812b90d39d0e2853c09915dc680e34e267c142aa7792be3796f26721d0850b25c004e9eecca9b7ce3fa47f7d1703eeef84153d9aef135192e7e0e53a02ff46188f7f8350f63f0d57e4ac20712abf27630f4f00d7d4e78200a767e288b953c85c4d9838101d140acf86b89d1f0465b94ee230a90ec24141efdce21f26e257abc881e33741814707e0d2717f0a30b6faf898ad843a10fb2155078f96a2a89f388e4ae25c01ed700a186ff7182c4052cd67835087a9c0cd2ccb9042179a3180a321a11448ee2020a3d8150c71fb306b80f3a15bec40b2cf9130744df01c5a2ac2de2e933bc9f74008d9868245d35e02c1c15396c500bd786852dafa2691116626693a63ae5fac05b5a4ecc722a235fecf100ec10d17fb4fcef0e4572b747a13b70a0237721c0fa39427e3458124b0e8827e4c99031e532e428724a5b89de459b1f3dd8dce3241ea5c808a02b9e80293e7e054b9e07c1f3cc7d3646e5017012641a1a02e807d12c58c6a2b7cfa265ea95f1a0e98b68f19bb11223475194d112629cf149c841396d4b00379405d423c2c0e6bb6c2d8fe6b0ccaff151fa194cccffa131f813463cfcac2ace0358407b327617be4a15a4633a63e246fcc0034209e1817a3dfcada4789327751eb0c9a63fcdf9e49a004be4ff82f29c08c5808fcc19cf292b93d14a01070dc18197cc020d8de7c836ca75561a9f3994d082e45cb896b8899e74808b1fbb8c654f2ecadc9282c43c8143d40d1d3dfd6ecde1435fa4fd11b9fd6b9d7b16ab2b6f24f1359f1b41af6e7df21ca3ca645287457498307abe00254a2e130d49beeec0a057391593dd4462e3bad8e6792d092fdfd269d1733271d41ff82cfa5e22397fa059e21f59f5b9803e3fbfe7caa74c4655c86bf031f916613cf8a08f30ddc2899e7752e5c89f1ca9e27baa6038dde09a1f914285de6109c14301842533b7d0e54930c6bc5fc950cf27470657cb86ea15542df9366e9a64153ce4b4080e95349f9544fa861c400ef84e7320a59fef3224c8b1069c8fa8064636245ce15f64cc3ec40ce4270af1977234f5493512f98d6a819b183cf5570270f24a207f9e4f4afc665af8fda3af0a3ea04a252f953d72091c30b2a11150f21c974f6f94492edece1f332ed721811c93e27a8b60489187cca1b946b2623c9728389a838708ce6c12c003d431e4133625d07aa2b2030240efa3bc395cf9a7d04b2bb8fd9717428d8494e9255525c8471448f2aa256a3cc12824cfa3ce81b6f1a5e0390032d21a74f8c820765cd15c3e8238a117c537d4210eda506f4a6611c35076133dd155c0ec79628b39b90cc181b71164908e1579f8f301917ce6cd01b7e350e763c33eaf681bc04717e57c4fb348bed0ccf3382534e5330c147d1c381779cbace3312101b9cf5001e744c52003b018e59720c6d01b06e764bd0338fed45489f3e96b92172d22fc4150705eec998e1c01c2db7f8863275fd863e5ffb24c3c4f9edd3b93f8bd8642cc67e4038847a92146070ac3f740f65479465f550f282df26f6756bc470018b2112fd2e79020a729cd01e0035420d08494703836c3056d36a7cb318095f21225c2fc213ecf6404beb205ba4eee22c1585f31052827c1c1e1e14cc757c559febe454d2e5660000e691325c70156e7573453de4882cb0f4cb9e276720efc562e725794c59f147ae3ba49878f9d84c965f2207236a5d8fe9415311e69c0d5053968e231beae74d6852da77367c8157575e541413cef82472232d36b2e1381b095ab1018d2409a63f20be8c41dcc7275934ed81fe1f31f38c352eeb023826fea22a4776c35cee7539e478801f85170061f6434f7735bcce8433a107c4813334e6947258771e83e24cc0c6f9489857e7208c1a7420ebd2824645fb735e771047564351748690c72b43c9a2c579e050faa3c2092570e80458573f212e025a32098658051e301282e78be197e4e4131ed5dc0638e23488a0b40b3fa43448dbe0ba4a41e035f7a1b898f72872b465f610e2f5358f0ba229a3bbd78e980531023e339a9719d8a81c59c089494c783b8c60b2df2c95342f5b991e244793a1ff2dc2b0501b2294a66af331e92ad62bc7089255e7a436012184b80b5afd2218a364448efff22a5398134433e062851eec692fb385ad8e9aa33e7cf19a0427f9802c3496c91682c7794dccfb08bdf3082e2419488a3ab4e55fac2b6badf2235c919ccf893f9ecd1e05faafe64116fbef80b06db178327bf27647c9213fd61e2805948573be5cea5681dba2d22c07d9fb6b00c0808957b4570ff0b033d0f88429f637dc9e1608e77720a37640e2380a67cc78e8d6398b4c88d6ec9ffb227c84fb425f8c32cdb9be2d2e1c70274f1e819271f43b5e06130bcf9aba2bd3700cbf89788144de08f889722c84e074843f05a98ae1a80a8190d5647c21b40a0d863536879b4867e009c887a2930947eb8b647732d31e0826e0cbc2600c21c4f06a9d620c78337abc67c9f3b2b5e8eda06b7945675a32343bfa3a5f854b118faaa42da233aa52197e591a1f3984ddfaa3e1219cdde8c47a03cd3783a99781239b09941a012ffa2911e8d6cc4e82959fa721a762efc49a3ad93f0b3e87d4497bee513e2dbe120e7c6bc7cab590757fb2be05cd3324fe20a4a3ed4a6caef1942e22dd415ba205380f6d37f7fc391810c03efea11d878e6137cfe642f1c4a5c288e6d1ecbaa3d9617d01f71572987b1793d1e59ec4a7a6a7912528c99c988af4f2008939e7204cf0b0ac08b0ec1a9c72bb380e91b3a34bc9423995fbe4d701b4a0db9d2904c0e6a308d0b5e01f581570d1e60d106571440f8544872ee89eec90b9970e0e150d83e66c9a87ff235705768cf1df6b67b5c52979fbc97b41024481ed0d2ceade1872def1dc233769149f153be27bfe494a5e7628ee9ac1a649e650c885f6813c911545fe84202691e3600ea36ac801ea6cb9227477972176192fc974153eea10c5ece2129fa4ce404d022ba88702f826c3c589c587e8f04ca7399ece4206453729d9102d989582717479442796ec5f3237d31903fcc28a391562aef626dfd6cd21ccfb4e2e958e6827c13380f398ac38333fab927b2b5e64a8c8e9cc8023c3f8547d2570264e85df028e289b424bcb40bc47be15d3da831fb4340ff3cd81a27afa698203b79d025ffa13429b72910e5de282346d75de9f19e606ae9431492bc55a52c3c1e4578f9d19f09f7a02090fbc1e0e4835035c868472c4f336344de8a4af43f3ba47c003948f998d740560cb4c835bc297258e0959fa140c4f174b1e38c72dcc94e42ce1d1d4968404ed0b891c00419462033efa9805726234598e1ac02c6332a4dff8e6d35922f49198f00466e214931b2930e8b5c027f5d4e8ac9a16fca4be13d666cf1409a960fc809dcebe972e6131351720c709df3e179d06a74e8f8b74352fcaa94a1679329c7cb2d393c833a07fe6740cf0db960f9e995015ea0c3008f30814d1613c0c2ed9b83e5e1a439f14e7178bd855191de21cfed4b0251969354c1c97eb6e81c4fc892873139b51904881e17c392931004e230a105daadc1a46764204bb3cdd8723e4006dc2b94e283c15874175c0777503797a9ca24b88c3e899e63139ab7f2a19733e5d1f122c286fc220109ef227af4788b5ade99a1d0d50f20e4a51383bbe5b8e0a73899a3dd5060e363acf4b9601ae4fc0103d715096417235b73d704283fa587a75d1f14de0728304dc440255f33632c57e9f27e229f217d84d495334741c80ba2a71e2a47fa7b22213f05568986d1c5813bd07420977294e1d78cd2e0eec03d076595c3d5b0e8ed05f078f3962dc1f05e344ebccf178fb2226496174b60885b10142a8f727f7c194026b4a4527d5cc8a61bcec2450107340500ad34faf0393cd4dcc0909a2f0e86e900b0687c13343d1c8e04ba6764dc931ddc35f1453146690c77123c291a6f72130f45b2a7d0f03e1104a40b75a870ad100cfa161a16b494461ebec717385d22d0f303d419a0cf54203a724eab5754597b0b7a28bddea10c1e4509070f9065fc9a40033c939b4e9f08aec5c72776788c5146321c30405e0174ef4385255f9141979c47408917345325bb90407915191c1c910ba1f71208c2ab451a5f0891396e128ea09b6aeab49a390ed9cb2473952d2bf2816c1c178c1ac40f216ae27f733afc221cdbac22fef36c6618f1c4103f7c4595500ef0088993552a92bd2442e46d56087848a048b899d64d36fbe2c46f48e2f16010ddfe8687bf3ce694244fc4e8804664e44de652c4e4caad05d2584196b296157879c086419de404e0df790de45253b87f832711f6b344c53d24b5f9ca03399ee146a81775a2c14bb108fc54940b47a00182270350f2883794fc0d507f7c4f0aac53b104c7d31838923f19dbbc8c444379d38213ce454222dff19cf3931204e06e8e6af90326245a2df02dcb65f8f7db6eda0b1389071344c28f280ce386da16d01ca0f86513676bbe041946598dc4d5e58a6c69029f22f9559ea75f23e5f3d4287832103a8d3c9405054e02cf752485d9cc2610f6dd380f1dfbc88047e58278923f079fa7474fffc130c43521153d1bba44996af19a3d71187444987ae4aa9f016f75e9d05ff134f65f88d9e71815f91d57b62641679347f042f15792a60fb8f5e3f97850fb0c0f10e84b1b4cb85b444f5f2a237cabb7cec38fe8389c1464b262033437138592ab3a71f938c438190a922b0fa542cd29a4d0e283005d7d960e2ade4c864eae12c7f401889dd086c8f8c9772e46bc14e208653163e6e0271542df16a1509f3119e04a624dffc6529c4fdcb29791cb1c5e462c2d37f221e7e3a8a0faa852a11c0660f6a308f1724a108664acbdc8dda836b461a0368733402a93f054c88dcc2cba001c8817f442500f512394c14634c9f0d71ea7f2e9c0bb47c1991382f37cc3e459ea365911f2cb634d072a31c31139107c4a312cfd1c43519e45e943de88c89c05174e390f1386bb857972222aa26e28eb7f464c14ff4bf3f78990d0bc14d69a6790c08e07207bfb3083373c092244df82caf0781064c9694e30df85c59287d4a89337ec597bc362ac0cc26cee453cfcf380985c72bd32d865246a60ae06296d3cced194c7a218c8e1ac82b9c3011bcec08d842c0acea07b3199ba2e4ae697490e33a50b7ede88109a7b3de2fa2612a99b6983b8dc07003e0576873b1d08f100c214f87371a261f498f2148c5c325ac9e03cd717256c486d2f97b0b206ef3111e173b0dc6b32c6cf000d22ade587f6545944e52362d2b81f11355ecc0d1fbfc64a993371dbeee006a6fc000912ff54aaeec568dcf01061a2b40330649c8de08adce2070a9f1ae6d020fc83ef28b1e0d9326df2ba2f939c422034990a579a31eb5a20237a11e5f584832cb7b12421afc5cf4ce00dd41b8288732f56ef5249b37f719ba63fad7d78397a691e9320a18f4928f2685a40f2b14291dcec429c2f8ef273c053487782c194d39160c2899080e17e916ab82107addb1975e0778831ea10696d7e46dc8ccfeb6af3866f11dc340224fc912839788213539f1c42fd2648be5e4a2649ae9597caff5cef7229e493cf335492358d2df1c242669e8d32c73719c2f0761c7a7c9351178d21cec84fe103e7fb0cd2e1591e89f0bf106b1e0307042eca47f32f045ae399326cf84c664cbd214b1ea7302acc4b25525f5209b707e00a952650f87caffc86ff15682ed2dafc1c12d2de2fc4a3df13bb72312189fea15e208d4589c35fadaffbc4bddfc08ae6865e2f4ec952a0cf7494e159c826fd121774df2590888cc76488675183a5adc80cfa6b5b960cd7c5753bedfb4e103f789544338f0174e5a7d12e3d2a47e2cbc10342674853fc40c69c617801ba983e3272993011f48253601ace4fd0ab91bb947528ce7132ca08cf0612a68f50a2872f5961f804a8229c08a040973043aa5d64c97bac4e6c3e0cc80cc7d0e98cbff15273203b90ba53244137dbf1ea40da284e15ff6908421ce4020eb65a4a830b8f61caa2770a06b4dc20ee8d7680a14c6e3b54f7700e7cd2609ad4bc3d1864bdcb7288bba5063c236a350f6270f2a40459f135cb3a5fabca70205d4d1e879dc44c65f8c5357377ab372ffcd14eb3521653aa7bc185b01681843bc255b3b0252bdd93de691598a199a995e951f7a4d3b205686b6b6954c0ecdf5dd5a953a70a98a25eb702d1565409227b7849b5da2a83a84bfeba7c04ba32101080894e03f7ac926080aca019590fda4668f990d18040d6179792aec99537330ce0b4466e40006b479c4857a2004f7e2eb9880b795ae9dcb52acd7370ad007747158187c566397c787ba356b35bba3eedb44a27dd4a25e45d2b4858a1e5db4ae9b657aa364dc11f20b68fae85946f2aa5e6d1d1699873037c7b936ea512a6d4adb6aacd523950b8e3eed30a58bc6b85bd3d6c8415d7ea9e5df503354b9da366b17774d7ea8a6a7603752b5d41cdae581153f9b01fa857ac06105329756e2aa5e669d0bbc3eec5e965a57c59ea56ca224dc1df9505764a37a56ab5d43b6cb6cf01758a8d2002ee8aadd2b1a05efbf8b2737bd2ed15eba21a4f9eac920f3f04c09e8ca479044e61679713976d7281107d7e89904bdac81ed90b81eba1992c687b150d8c68aa2d5ade28b08fdbc1b2c7dfec18d10c9a5ede869760d6d2f3f17c015865e7dc866742a0832fd9123f1f4edbbfe077e8708522bc5be9875382ebe44bb0d8f13148b6fc873f8e9ed3913319ec800d77a37c83456819f9489306bc618650596f43152da4849c1c63449d6b174980179ef8e2365162bfc1d9023f1449cdef308bf4534e10f82c66d3ef714bf19d1669c986d410391231fb9453817cc21f34d78308ed9101dae4167183bec8eaca4111127c29261669bfc5223fc791683074465e8c441cf7e980eae7bcf892e3c2c4651d4e36e50d56e4d7e88174172520c996a6588d6d62173e6c125c96ea10f2261c1dd1ae32c9ab4519e2543eb8f8317c669a8a163edf2767e6d79001e46cd50d99941bc07fa0c64ee3512efa8248634f67e3cead3411b51e426dbe8ed8226d37ca42c62af141a70d30a3b1788031badd75d2006839f3a00c7c8ec8a0cffb185a73d4cf0cefd44ce3ce238307544a910b8852482f5e85fc8947cc0e4a89f9195b78f20ab92f7fef70f0447b591c5419924c251afd126bbaf40eadb42773c04e0b82b4e6bf44fae2197228721f4ff07819adbf1cc40fc63b601157d6537566fcdb8293a7d859d30696607a098234b29781039f25449c3e0346c18dc0b1f4820984381c4b5632812e3acf8702ed038185704095c27e4e80fc547c3078a52f818f9582f67d43ac781874493673d2f0c44d893c8ccbc2af7002750b0b0efc010613aee9d28a3c03ce0a5cf5c54fb329b3e83e826bde9b46e8295e92644a786fb9cf9a98c643d20996a18983c7669ef20c08157ec3dd9cc690c2cbef6514d98c9314bf459496a7ba5974356c005f04a339b7d236211f3aeef044026bfe5282e4c93d03f29df11d8d73ebe35e6cf8a49d123a0f1091ecc6e8a5bf68487ced1400984c1720794bed8d36dc42ea33a141a3012844e83bbd10a4111dea78b13d61dff480e71551d8a1c3c8993a21284567a404f0cbf00a1f2ecddac769c9a3157ce8e3f195aa7f63e2880b52f4c12554d1be46a7c84d0607ffec09034dc00adad3d0afd661a849b6f281cfbd935c3edf5a0d4d64bb24b7b802d47ab657be50806816008726238e72751923652fa38f542348f0e59dc6fabc871d5e1e498c99ab29165f92a19976a31379232f47bd214af78bcc14f8832853bcc8a63df90836c9bd04107e87313817e103ef2b2198e3360e1df59d45ca4fa14391275a1420c38880295358a3f3163c3c781f3061cb7107ce349d9eaa9cd716e1e55c3df2ad5387396d8795fb45536424040d5fc3818e7f448acf4bd98374241667fccb4c5816756092eb40d39403a100723b2444bcaa0991df28cce469829afc8228047a2f9186e78270279f5a0ca0e3aab09b5662835671c70bfc6351d497d0ead19be64ab81b287b9a8ede96b7b2c3aa07f8b9e173d2d87ec19b92af7201f765d8787c12eca037dace71029da87814d7f478f200fa8209097c8190e93f038072aa9e3d1e05ca947f2e79e44d30b4b8811f7a9a06984e5f6071a9edae60644993b0dc4f6f67190036822f4791cf078044f03d29b092818c60ba825d1e5ed4e0bb68eae470162184388503a69c4c9e233e403ae4cd3038e275fe84722f833efe0519f3332c32941531b2fa258bd2feedee851f3a7ae05f69804e0680325a7103ec0e1ee8d096a0141c498723590c23003e0e94531ffa71e2dd5146de6d7cc8217da0ea175eaeb4dd99c43f9258f20e0a21791e7d067dc31533073221f1178850bda0b1fd6a801dfcd0888a47c4805176e421c72bf9c3e54dec587a25552359ae4f87bf319973ae3f3a5c0e9d956cb675bed5c61457c0a3ca25b801fe4d0312b97a0253ae32f6242360f1e57ff849d15898b646412952ce04b7e771cc616a2e2d14bda71e0f7e049c0b6d078883db558291fba898f9aebc079f6048030fac10e44f5c9972b43856323cb6e1690cca94db70d8e190dad47d15492447b305c51346ff78de34c7b708207e464187374144e2740c2db95b038cd9ededcfe5034bcc7a893cbc57f6d23486306aaf10bc26dfc550a6378f893ece6186a13604e2d12b4181d47803327d02062a7c13924c7e2789c941616d793e8b717461def4f5585192875478f3364e6c321505db39f49df902089e1e29ce46ceb369e95bceb0bd570b357ec40e15bd06410c0de7e3947b270de0e3308cf41620f397c13c4aa0f1040be40e4c3657ce9d4b5f05c75d9e6adae38ddc40d09c06297e0d08d1efb364c6c92c7ef049116ebc5505167a3347f81446991c510399974425c2fd88a23ea43b877cc18b3c3f8e9991ebf2307c85172b721c48a2727c444be630288f9b990671a573c472d81e34af18384abbb153e24dda48f05f584a7d851965ffd500cdb585147d812424ef0721c77f8a4343f319a2c599b05d7a25a4007d84d442eeea72f13938a9c95420723e2d6ecdd3d104bf8c1754af294c0b47337125930918e26ace90e93051c01e4a95a39b62ad2c1bcb8078414c00f265aa44b58f10595f9cf2e47de301e90971bc0ee5a9c75b6291a8b53aaa1c479f0efe4341032fa2d8295339ce70034556788cb1062f2686865732eae36108c9d11b3e25fd2c919cc622ee784f244cb8a20d28decf5ba28661b57d349c28682618c24c086209eb416f5ccc9983976c88022d48efe93fa8284ff361ed155182ca23df7c711b546377b264bb12487e9c461791eca24219a7114187d68216c0a370563894ad221e227bc7117d6c723b3346b8a73080df42c49bb9fca2de8092824ce345fc989488598c1a2d4e07879da7094c93937e4664b0b0079a6cb04326bc52fa0d46f0e00fa2e27cd455c040eec2f206bb42ae11ac0e4f6527c7dbe932e695685e7fe586ea916b827a069796a74165fa359c34f901431ee83f7b0af87608943ca82df63b2c373a1946f52642647d8f9614d7f267475f81e5789716a67e4d41a54c7525ce6b6404c9290119f2bea953e9a16c38e17661e9f269ac04b8a0a734ab193a7b9b3078f2263ea9c96e8620bc911e89bc891f4e6f07cdaa4d74d0e4893ab0c917e8e01f90604b473162f855841c34293788fe10528f8f8416e871e4e9a0e1e8ecfda7b7e9931191e473786a7b344298bc8eacc52b79c97e061a7bf485407cf20c5151d70b449a4c9db4e2cde10087f32821c41505010007c38af51916818f27909f1b48f4f710aeeabec628313f7167e93f60a0e0808a025c0fe2910f24e99246322a8e3b2938b9acefcba73165237fb083fc1a6e718ee5802697738dbf2f4a91cc83c4f395d891f8207fc4e42e893abc4e8f232d23ab9afd9e381cc9c9cc580602dd4c88613eea81a1ee93a6e8083c75f2c52e8d3e461021c74b4bbe2588f51c7ff04b39fce14ee8eafc8f4423341d2e69ae45ca0f5d638fc75f1175cc9bca70fc28c10439905af694fc56b8599c4499000e10ef61919147347196b9666cf1528fe86024135e681c6fc0d5e3224cee0a40c388be08f9447880e8d7cfa45f23d5c897d80df013850f720c6b06570c12c0d33970fe812d8ab4a234668e41aa46135810e6007071e5314478f8dd0d4379c113536fe299421fb152f264e21e9d55a143be50e5818be351a99c034b9e5b6a8a8a1c05550546d340980583c0e5036808bc03a53b9acd94b897b36af1190e0172158572590526b6d743e0ff66daf370780ce96cda91d71128f821dc8879335fb8b2da96275f077b712857d03f43292e93f2b1744ecd339f5267f8691604f051d853df444a7eb55c67be440e22c60505443d9c4c14603d44509e6f500038804000b41810672ea03e229c401f0a5f638381fb69eb5f8283ddeaca94e65495c8c36a3c7a1f522a7e0059c4f12431bd0816c12c89c0a0c714404d6b21153872cbc553152579142d6e6ed6a4c95f4923e8a3b860f407eaba5c497021fee30cb946bc28f213390eb85b3e270e0a003c07b3c91dd14d9adb044ac74554a5d035dce07945371e7452408aefd02853c6b381f95e71029fce20aea7438df3382c17dc0b9070246bdedc4c8f291aec2bcc932010cd11b018702ab552fa84114edea560e712357c3ce002bbbfd3ccef670a98b7cbadd3679122e6fd10638de6a38ce4a605f2f4372069710d2972f2ae1c3c1c8602f7ab6c6cb7c2098d635814a6cfb48067642253de5376e0d57038e04f485eded7494bfff5c1e47a3675bd21cfe3341c1d715139a81ee9c68d2be8f3f22293bc381e291632a33f515d86efeaef941992c96c503e1d24103786251e59921148c62a4263f2571fe3ab7738c1fbfed0c86b94a60fe8268b1ea275e90bb86993a101b6bca02a40ffd077ca170338f323a22b2fa0c24f4b62a3c59d65f8725799368f3b03a7eb64cd1c110d375d8758e54dd451d47ea2613401458bef01440ff28e1279dc3c7465b292809caf231597032fa5f13fa34cfd234c6eb41724105c43fa27b008825fc156df1a69925b20b49489e8d9f1392855de4c973bee0670501b0205e9ad5b34fe46fbe6d52762b2a00fff9912e52c07c2152fe105fd4360893f67e0809e71dc90650040caf545d8731883644e788a781f091b5e4a58d6721a293137919bcaa67c6cb51860d6e31172e7a39cb6be8d8a4a8f289218277481edfbb08b0e055a438f294bf198ace8710f3808bfc31a581e520a87270034c55f1ba6fe8d2b8c3bf000e2672ca6f11af0a82fb238275b413b920d5f46deab01e169902ae271ca207848681ec16c718a32db9610f7d04689acc5d40517899ed665a821a2afb8a24bedd83e051c1dcec585d4dbc234ff21ac3c1f0a2a7e8496f18a298e3c198325ee9403c40b152df135d34f6fe345036de58f95832235436b5be4f91c3342fec192c9dfa0f0ef282cafbf33c988aba650926cc98a13780f2fd32b62f9030fd9d44953a540e246caa3e4590cc21e4187474fa7809c7f63498bfb21f1f47336d9f9a0b1b44c2289f6d712a3b2a837395ff581c95fe979f0866ee65568c1e2a01424723837e078d61d09da0c9a42df60cfdc75c6270f4203b5231a9db45e81a50710d17a1df01b4da586826e10d64433505e792f5671798a204c9fe2c5943cc5b0cd53da23e2b14a3078d399e4a9d330cf2a83e3cf70c0f2480038a2b75e58722a34453a6f8ecbd39a58c92d8edcf8b5e9606e420af2012e59d02204649daa08608e323be5177e2c7d090a6fe6737129074293f447105b578c46d9c36903468ba968915fd44133a0b8342780a5f45f720c711a809af21977d16f188397dd981d7e0e4dee4ba984c3590ce1e4629ce6bc01347c1a071143a70278438ff142dfc34f34a740a3c7af5040f0013601f2a66286c754204eee1143c5abc12ac9d6305daf93b60139d324b42fc467c7b9007af45a7a1df9559b5bbed0458c0f1a85f78808bd7829043e656c5cc29dd26826f2527faf8984ff4bc1c7b90020e9a15ffc9e8ec215b741c3c59f11b270517d671e881c03371487c4e53c59a011dc2d7a2428d25fd4c7f767e664b7b00c850f7305e94d13a2502e838bb87356245fcca1a031e9e3c5a7f182c4b5a12f3c8d0d5a5713c6e1f300597a96ea703988727c20e7a32f94c1a7135f24f150897cbc0409355ec81d0c2790e0ed037900de82d297bfc900cabf50f1f2265e90c92cc0409d872233fa4c5fa9b774c522df81c7f2a2153fff06ba7a145484bec41506ffe2f5e12a5042296bc12bf39cdcf0f0298e1eafd7658d3b1fff7c78e3b90422e455ea0a1fa93c3e5b063b0f6a50ee3f9d80e4a5ccbe68217eb07c70c4367fca54c151b030957b8c48f1818e001d53d8a177c34472a6a8241fb7a6521e6441546e1a407b2724f9f075ac5c742747d6cce9e900ce8f067320057d2e8b294b1e5ae086439264c445f530cc4930587a0e574c9a6c4b05977204cee13c5b1ed1283f4d882a7d2b90324fc884014781b8e90bcd48fc0662aeafb74392a7b04ef02d210e3eb6fbe1630a38e5eba21d574321a8c752a8840e11fdf2660c9faf0b30755cc9a3bdb78b844d598ccd9e6b260426b711c9cdef6cadb98c2d8cfece1c13be26ce92e6b3ccfa4da6aa99c1169da790e1c3875de77c8d49a4f211532d5e1209387f12af3d9f4fd2782a49f2196a7c381b36025cc958d75b61907c3718ae34902f48f71065ee254bb3c8eb209ed288581ce43ed1166e5cda9317e3a5cb9b41d0d8a708e521abb191e4480ce5b20097d4e7a994f8684c2abe25d1227d45aac3b35245994ad99447040326230e027b45931eb92848355e3bbd3a9d43025e914b013d8186a9efe306c77d2ca0910f500aa57bd4a1f38bda6c7d9ed8989c64020ad7411b45baeb0601f8c597063900202def9724aa0f3126eb686282bc0dcb89ccc1d1f4f526d8c8648248f9941e5d59d000903781c98f763182c53ff110c6e14498e4802f967b4c92f27aa80ae9b26a985ff172f52bd80d6f208998fe3c4bfa4a8cbb69719c1c37caea5e5561a32704610063b993f255a68019bf1efa1e0e49c9cebfaa2f5537c6af828dfe830606ba8f4fa9af92849426b1647e2039144ff676e41120e2c89f5eb0f13f2d2abc1a1185ef0646030d06d2f31b8428a1ab1660f8742bd1689f74bc9c120b5f884f96bcc687275d81005f3e6e38f3cc5293b2a6c1fd0a72309a8118a3bc053b216bddf091976440e37234e6fc88d69c2b1124701e7a7ffe4be2078de92cc3832293e5ad7c48f70418456b2a23f7543fb0decea2135f2641217d46f8c99f18be1cc8da84d78294c1b192cabc942743fe508c2b2bb33ce83051007328362c6e9108689eb9a6c75857c7306370c2c9158060c59749f893c7a8297a422af2b2131a659e118dca742db238202ca5ec8768eb2311667d23eeec3fe19990532861f25d90b0fa1017423ec73ae969ac8971208989745aa5086e82509a466455e3fbfc9b6c2542a00ca9c29fbfcaf8f17efc065cc0d2009da2ba220bfa32a42978cd30a2ed89d00970d881632c1b6f5e2171432f683ed4164a1e00f7c3d5d04d710b9776b8082f4477e235e0df0a6afac88406af49c4d90bc04e9f6ad4d8cf5800e3c32402c97594b4f84f871cb8f2adc2fb75fad2055c0aba9a654f27d1327c9016747e12d2fa28e46471d7cac47f49f1d14f4971e6b707af5f534df3e8153f575308fa00b045d02de458711358d36c182b5fee29e15b14ce71159dea781a86475fb7c62aff9555f118012472b645b777e045c0374384fab32bd2cf44a8f0cb345dcad7022e320aaae6fff082f7956c48d2824631c85701a62e9c414932110468b94d96cf6bbd4d703d3039f3641d96daae4fa0bb31b4e15b283ab8123464198b1ae89361ca7aa2748d7b8171406330e0c6013844e8291847f9a740577f4aebe2abccc19a522345cf820a0867f0f4e23d4a34759b1a326b316fb8865aa7b2853bacf76d12226f34400f265c9b3a9ac12eae033217f2e0990f3985a8ab971140ea03f0c2f71f2ac17fb8c8c5016d087e8a2da83f40a351569391c93b44b97c12924e2e0883d82fc950c2a35db8f4823b775c71cae1337012e7035841a7537cf61110007ba9c7e5014b4c309c1822ffe29001cd6049f89402e7e8163e2ebd1e2718fab0cf88c7d001f1bdaa02e5735d7b74050a7cfe4e130a794d81505fc50f8f63cd00e16cac8cfa6c66ea37a4f9a233c971e16df6b0c837e6e85cd118937723a8c211c0b9a20d1c30e46676626f87417e3d8f4a653c3928f27312954c060dd0bf80b1ee5c8d505fa6a57d0369d6641658ec34da8d361e8852597e63c7c8dfbd90e6ab1696dc41a6333939e5929bb9f37a9d3fd9eff2f7438b505e1d8974cea725b1e07a849c3200757c1c8d5714779403fb1fc290c6b257e8711a9cfed246c98fe4d8a1edd45993bf6e5c61106e0c69e35b8b771939ca7fd65199ce753f1c1e44d9c5127e3380e8bc7e348c78c46d1b8de5908fc355c9d038482472b4b52f39c01c432f251ca4fb9a09dc2c09053f3146e19b6c29741e3eca7c9a62eb4f6ad870390ecdbf2142ea93748c7a1f1e165f821caa2b4a5ca28f677b72e01803ef030ea08e20e8edc5163981e51648c9240a33b9766c9465157022e80f7f834e4649f8474a7f7c5118a68fb4418d3be952ca0b1442f33800aa3946dc9767d38384cebb7bf34ee44d26d344cf030874f57d5d88fe04dfa6fcf5a4f0b540a56800a4289f0a8f51190c963a9fc491a72ce4c8c9435168a149d959c97d685ff420a44b990b94049d09ce528f2082e52e5e1df1b3b44b5a4c0c876f8932fa361192bc4887a656f3a2c67b6078f3c616d4cfe063866b7111f8b1360fb4192fed77b40a6ff0927a44158232214057af05479f6e9186d09358aad31ac0467c8326826fd440922765e6493b42dbfaaacba8cfe0a9c25378e0458f3a35e833e903c6177bc3c75020f9304ef0f8080a11de050f400e638a9617dad4e4210cf1f154d2fc3c001f3f8a4850dc86f2938e1286e9771ecc1b509d79179a00780d7456df30e6254bb13edd111847ffe9cbe21b713a723448f2fc034036dd24119fab8121bd070472190e860797c08229394920228de849cb3374c565ab99426ee94df13f8c28f0ab252e2783d2c81db5893d1952a2dc4aca84472078c6c7207991c38800e30148a8e18212697fc303918329d0c3e1e418d41df0c4f0111616fcd81c6bd6121ba2d1f4dc3e4d94026e8b2d06f2076a9f0e2250f98aa00d5eeacf875f0457c25dbecd7847790f5c6a7ce030fa323da9eaa19f9228c1e33823e63bfc21cc51aa555fe603fc679194f85c28065a8f48766902429a031c0f1773a4ed7d745d79324e21ce43c3893fa405cf2f19d0c04b30c0e08299519717e5439f00adc3c779d2f0071c81da5a2a871654422cfb8149e1e628c3c54d8851f17e37d0be4b1dcfcb357e5e891b22fe66d18e4fdac1722f6b0c3cca150cd98e80227f706694fb3122f4b71294a14049e37cd424faa6440efe265ae8c3b6d69c815c9e9c68059cacb6d5a29f2c8ed15110a139531ec447f3b5e58572e72a7725487437113ac83ab9e643a120e1432cf578b1241e5c8882166e48d1c8bb0931a0ddc12a0ee746497ec928fa92268fccf6ecf487ccab1cd593e4bb1c4af08a01fe3c4c28673a4c63eee58089fe61f5c30f2cf0a40f5d12cb742869653bb0afcc218ee2bba38ad0fbf951202b5a234a87d9720936c4a488ee81c982ebe971fefbe8c6d3599bf2921e60694a7b7dfc9121b3d7b227bd5b84385ea80aee4d6502c0e7f44cfd8c0330996dc19c0f0913e9178912f38b96a0d0670018f516d8d232da962d4ecd4aa0b196a8f21d4636f40ceb8767a266d075d307ff8d03776f9f2269b2883462dc330f6f7fe0c9d52fc5f087a304742b5cb6fc90284f8ed66575b80a22f41bc405cf698d14cf32f4f03ec6501e13008bb32930fa9c9aad572472ca432d2af2ea99200e684d20b7010a2d7361d3f292aa7664c4e3076fe2c3cfab15eca02ddcb1d2657b8c0f2553bd2caa9df22765997e613cf371e0035ad31633ef0310f6df90609d06169a756c72f31f3710b3b4ca8bb792a7c6e1b43a389a2b3ef98de1098fdbd4a7aff2940a9c24a8f44d53b5410c228410340220000000001315000038180c08c542f15896057a9ca80f14000b8a964a684a9c49e334886118838c21c81002000180004200cccc4cd506004f29c012e6b92cc7652bf8bd343092795fd3aba97bc963cf3195ed16bee2213fe59efc148263b3a1017b3f2539c783dfbb403d7cc6dd9097f6df66df040b11192e97f292222d30c8a0e251145cc3340221d0c900181eac4e34156e48cbf1462557e8a4ad479dc12621affd82a102dca98d26f56a4d0b8dadbab747b0bad5b106f6734ef62a4e5498dcbdfa9a178cc97469ea20d2f3308d8f8806b7be4f34b64156e529752be170f7b8d218ebf4814f8316c83d5ec28fe20414247b0ade4299f7e03836029cdb484fd97191d6cbb3d1cf8a19a240681ba93df156cb1acb2cd4669d0588230f33a89dd1cefdd03382708ddbc0ab73be23503f2470a66c8ce38a681852c973535cbbfc0f48ff74a0724683e30f6094922dfd0ce74833f74b7e345538ccf73a89b3272bea022cbfb3216430c086518197dc2d6906eb0c7259a80161cf055bf2f932624d5144f1011cb6a7757b351cfa4af825385d39c443ad261b315779dfe127af8a15367a1caa0b645efda0cf5546ff17ee9ccaa8d36eee42354088914d0ecc36e03617d0bca8bd0d102f10c69dfa0313e307aa9b22b453981689228d51f5371c101ce0f069ceba93de17d6ee7c7fcba9f386a33677d897f7ab35a6567fbf349e25d44ebfa1add7eaffeb39677972bf3033a5efbb7acb6ab0a35ec8bba084e7ae80c079585168074c391c5b3328df21ae1c028dd3137d8fdaf1b19cea5a2f3355ace7d6c95deabf16c303881d0045836cd6e126efa5c5b48953d416b96fd30103fa3dfbc015d38fa4d8dc422414cdb12337d1f14ce45831742efdfe532eb69b3777bee7fb1d787b81f5aede2ce01fdd3acc2f8cafeb10577cca1edc5214b175b3768a8be74d759bd72ae42c01cdb2f9f7d00850df67831b0db78367e7abd4030dd4071ebf5e80785cd9f073fb9b8a33de00193b9a9f46c453a6984effd29b43c9d3566fd0abfd5aa2efb1295c8fcb0d300cc0a7f41d086852637af9d837a632a81588a4bc1f6a8b51df309bd215a3a38bbdfa0cd84c0df7236452880689bea6f88d40f40970538ba1e0c50f4196ed016937393ae102471a8bc7cedf42e6a89083ab16ff8f85e1c8709263277372bf29a6d1bfdbb2b65ab6200d5e7cd286db62c482a380b78360b0eff600e4e7af4ead874bb0067024574fedf98749a875732d4db9540ba1faf7be5a96a7e815fc012e5feb8809bb5b07ad7ca96c77c21e5570d99d3de217162c7afadce31b23c67ff04dfe9f14ce99e9c56fd19292debf5fec251f99de6f09fa9f6726bbfae74699fa81b27a181913baf8ae311cf88617a7913ba3468e98b9dfa0a0aa9833dd18fb00cce07385910decfe7bc63ed15e9bf47ea9191b3f8323c66f32df5bde5137bbe6a5fc5f923fbd6968558a7e711ec90c3f37dabfb6b874ef4186233e137f876f63cb393c9fd616a8ffd98455d2f612f5db4277503646109e7aa7948e0b218455bf1ab3519700edaf46e6414c9b55be69cbc5f949796671994f27b96b0b288295a53625fb65edba3d04e6e43cf0e771d2b11413f8d6ef89aee6d3b3f3c51fb8c8203ff11063f3624f0ece980b7f9db8ffefa5a4a545ff4b8211113439f37039d8ee13ffa248a5393659cf6525ce15f9106285f336b8ba39cbf6fdd8f38fa6b8659cae286cf65246da5df96775e80f7dcec7f9a745fee552943fd38ce5a47e6ca14e0b9ddf1e10d5cce5d12bb7d3ba836d08b3ed1065f6fd311f6b4b9423dd5c731b1ba324390285adc268de8ebf3174580f847353f3ef80000c77b581f7af3250a4de4606988a27e68d7659836d427a379cdaf56e54f48a3b6b655fda6ae78a76bc1b5d095c4704dfc86fe204a97375faabe15f66f1fa7e5bfb6d00afbfcd6fb182c4f93aebb78ac6d78f18ec774b07abadd3d82aa48cc91b688b8c0dee0ad3f03f3f605e30611aa41590a6fdb5f4091bc860946f79ca1013a6e873e54487d409764a7a674a635f559ed5ad590bba087f89735a5dc3fd84e51096606ccc2266fa43ef4c521d920799667a369cc47f2ebb3e4f8765232b05edb1bdabcf4b5a590ce1a6a8dc9fb4bff1d0a98d0f608ae5178ebeaf9e2d60de1d58db46cc8f2612bb766aa042e8ac36e549f100c71aedddb739d27a7f0f871e88d8f02346e4d100bb8523ef097d8a9767112fb817a60e8df6f7371af697ec22a8f329b70c79b4e48bb593ede08498e50053f621b3e3f7aa860ab71b5ab833ff9991ab96e4a57026a746aa69acf6f643d8b1bca416121d8ed9099103c92b7d9b345881c2b76a49702a1d4d38f938a3b0b6be8ef8523744e1d8abef1e9b4d7cde2c60b355b6b9e98eec8aae3d8132abe1bc4d5d3fe8d19e61714d5b6cf161f2cef6bcf7da9e4d96761793546890e35cd110e19e882451d6c05ac7bed88de14227867c47eb89cceeb39f4e1a917937b7127284709d45734bccd35cf5f5d23976ff328ab0f8a3cf84c6ad8e18c9abe4e6ede4da66f05dc3846daff0c610d3516395789d51706b62380713a8a7c87e7f6471d921083b1a893f3b5d27263852dc58288f5822b97c4bc315ad60bb7fbc4b40fa07b0b1eafd85415f6e94122715530e8b853d25da2f360f42209df7ab1e683faff98902f47ca04abcb3047ccb6bf5bbd035bfb29048f4737dec2fa86f2e2bf9fa215fb33d232be326aa5d7f698e73e44bac1df3a7ae4aad135b7ffc5e974ad68ae133d74bac13fbafee955c19ab8fae94b22236dfba2bbf624c5fba945233d19303a087087c40603313fe6fb74b5f15dbefdd94bf624c5f5d96b66a0cdfb85366dd187dba596ad5987c70a79cb5b1eb036eb9556a9598fec303cdb53f19035bc476fbebf022386e4c0dfbb941fee259e346f6d9af2140c4147f42bf893c9dbe3af30e8e15bc7a05b7710f58fbdc08e81f03509d2c6bd2c16a6b1b54e12a50e689a305765310ef00e4a7c0310e6019023c6327f519f178538c25c0671e89b2c0605f96217dc6213303367a0e8c0c66e7d9791619cbaf509717a412f2a35484d71f5b97679eb9b633874e188cb9c786dd64f0f2b8ae99f725873f41be36c33f7c612be1087ebef86fa1861b466d8d7aaa7366e2c8fdf098fb99bf475261ac6e29a37f6a8de5faf5e311e1a45268995fd9fc8dab8f53ca786bed9c0bcc2f433bcaeb5e7659e93dd01ea5d37fb0cfb559d3f614f34de100627da93512f2545f0571f078f435cff55133b400c03b90e11ea4c485d5b19d93063c466cd4463519c412cb5e5cc0eaa77c80560de469d2ed32e6ad0d629dcf7e846e1fd52747fe63cc3a7ce3fb43e0a1171daeb447950ce06f5c82a8dc3e467d7abc552471c5f7a8a059f4e0564694ae8087963d181b5ed0a91e797220c3ff72488c485c02ec3c3f5c093de4cb02d9a3154f58ed3c0cff14600d12d0da544e71d0c4c578faf1e14dc3a5b6a4464a97a9d93f939d5c7553174b22675d75e0f2342c0c814637bb5a99085a0956a72bd69df405b814988611e7b5d8bae62081960dcbe4b0c913b2c2a5c42c9f3cd85d1940eaeda05b98c064f8638dcc6e113a60353beb6711f3b8d94f22090dec8f692f1728665a3550182ac65b248ab59590a19124e9544002a4650d5343e432aa8a9e8f924d2fef7387eefaccd14f338454fc613f6ce4519cf4c9f41841bd103b25c097c69ef6eed6e30c0431dd8f4fa97705debdf2d83cfea0959c344f7d3a66409be299ac7cbfc243d660adbd325d29c9b8044fa87fdb0f6df593b34cb5e75efcdc4ffaee947d2cd7a70d7f32478c0b93937ad08a0ae2dd54ef83ed414c97775b9ef7d30ee8ac891a0a0f38cab7516c1115c0efdc15138f0dd17e10251a1e63de8787c27f570f3d5e63c4039e9235a7e1207951d8b8bb1ff701694be4f2983d73636fe41362db95e52221869198d30af74ac66aa6c5b37a4ce844ff7723de6388f43465cfb16caacb4e8f8e86b718afe4d0e13289273542ce31d10276e61a60fe6ad9c84e01a4ce8314c51300325ecf3495a9d1136297c6dd283741a6e5055d47e530d5cdd65391cd3e860632621201e30fbae9e472d65ecf57ba977a2f413cd41623083af575aea73a916fb77457d3148b1f543cbdc1953fc45bf7750ac04493465d9c6e752150d6f249ae1c070590119688027a3e7e911e5d13cbdadb40406e50d074d72e8f5012422413185e6ab4781dc3ff7179b1d4ba67e925e2febbae18bcd4ccfc3dc998455f29db5485bdc8283b92942bc01919ad0e13578343b5c5d321d0241b199a2af3933522250925d142373c1ca269d3c2e48ac60a93ee12e576f0d4ba5b5c190e560cd2150d9809a521d030d9c3cc5c41820207d40a06b87029e61acbb4d7b9661ce6d3218efa26eaa50a0b310c3630c7a206de630a0c62888b4a75888728a1c7a5334ce9f85c87a9d9c72fbda2e3cd98b1b8ab22d383b1bac7b0f65b1f55405cfd4550cff9496322fe1cc18bc4b4160d1846f4555437c18eb2f737a6a1fa38687cd64f3a8a8dc0870a31f7fda62f268dcf6780ffd3a369a1fd94a20064ccf9f0f3b3e47d509fa49af84426dee9a284283838600f68c370d3b40bba5944cd182d2c864ed913dcfd37355f1e2a4ccdda29078558dc4135f5b11121424010ccbda0e3556263ee6798bcfe3303cd4b86176fffddf761d867ce659625e341f1a2ba01734148ceb19c3cde04e0c5afb6e1fab3049751972be53091fdb97c522b1244260f230fd9f13d0b818431824b2a7f14c5efd45da59aa8adadd1e8b11c5f728a4a6c0b62955e0cfb17eb8e358f5dff6004644f33218e974d1921048ce1b48ab35a52ebbab70d6a8aa3fd9baf89cd909642074b4f3a81cda8db1578c7aaebef3745bc231a7ab6d0e6b9cdd6d21cb1e3ebb612140a0f97cfc0501d257f62846744a995e00a16d691699060497785716035e225f51f9164331be10bf12956e51095c63966506ade705abcb121e4da4dcf66a17bb5985531cb16c46e92ca31eb483fbc901ad39b2f5a841025e52c9c6c00fdbf7cca7e62c254d4fb45ebb11da667d21c5699ef4bfc695e98a3d2561a1fc16f8621f032b0c31f05637354061aa4100a809b9bb65272925909969953e17765266016c7eda3962233c8405a7cd8ed754d0da054b672f1b3056b60d9dbd7832e431faa86bd11b88ed8dae93b631d5f35ca9cec3b8a773b75058d2e90042250f477719b3cc380abe07201cc1d331271da40f7138c08f69b44f4639f37e9c8462fda31ad550c5c254af6afec4774a243df952584db5742ff40ed9b6839758acce2ccc6fd25cabf39b588d7b834d88bca21f62045c033eb880b9f70f8f00f66c7d3bea6218b2d539827c67759912d301668961932e27a50904e369ce66c4dc2cb685a07f551d41837616833b681c36b08c1ca562042cf7f0706f7292e12c9f304b49e280194b496bec9669e69cc88dc80bbf674be0d16c69c4d211097498936810d050f258b1d602eb7c1965556c497bf1538a9e444d993fbb769e3ac95b0d578a8c2c839bbbeec370a98b32274f4f3923d0a08adc30ed2707d949d5b57ad86966ef5ca3974bbb23d4359e6dc596d7e7e814dd1f7f2fce56583b63497be631849b1d0d5428f601d48f06e7b1c6888b9cf01971731d0a49a5d5cc5241bc5f245445c4bc48ba889235c4758049d6e1ac326270e012ec88f6bc1b9f17dffec24218ec09f5bac317a1a8eb6bb0907486b8aaef2c4900cc7b9b919f6adbc9f42064e05aead815edd01d062c604375e0e7045d0634813f09a1b6c1995254fe34ef697ad8a918993f3b1fe40a2cfe044d34d4e9dab3a82beaef79e93e91cb326602a9366180e645bfda1672e7b3e3616633c537d076d7fd63e1adaf0b3249cb69c2edd3e91395238e0b61553be423cb19d373407837a3cce748b92df49d90d8763bed5d81a0c9841fa35ece6d7fe3dfc2bab392e713ece91aa3ef180e628cae7e94b0175d70c81fa82cf7ce7decd64e1ddb3523685719e7c29e1c8537f71e0f2a8d27525be8dbfdb5d5fd91c2299107eae6b0f8819f7ed39c07feed61589ad8a951b96fae0f1dd040916cfb85ab429038377f0c54dda99e55e4f4d967bc1351dd6ae8b22d0443084ae05839d2d4c1c96fe585c51012f8d495a0160e9f7719a7ea5997d39fd00f420be8b3c427dc21e7f157aa2a4c78b71a7d981ad069236df7cd3d96aa4d85a0bf3d84f2c90343c1d18dc78d4cc250cc785a5cc5446fa70e6195254d99133a713729ebb6ee54172a1fbba519170d765b8b79579e790f16c320d0e8acbee3f1347f1edc06c04f647f2364344072a67cda062b4848d366f21b82c966e5f563f28d988de975d416714be612b5ee208dcafb668dfb1fc5f15bf2ae9d24426d00b3be4305f438de6b15ad30df3b2f6b1c68de66b551e47eabcc9c5f30c5d09a1a9da4f67889e0b3f18edf65c6d2f7d69ddf98934d5d50d55b7a111c83538708a8513e491526503c9710dd644a5b62448beaa41583ef18e69efaff70305a70bdceae1c332251fe5878f7265f69ca90835815aa5c87eeb6a4823a351989b4ff8209f181df0d705c29ff558bf27d078fa62f039eb4b6a1edb98f5d238b6fe146ab86c5c66aabc88f2c0c7529f45ff597d265fb8de6b33bf048c89aa8c95938b0a081b29a2c3f6f83c1c65b4b20d356501201446b890c80295ef3ff3fa9fbc598f0c7f6138b35d727f310f28cd4f8747ffa31de7a2991794c011e4285026fc4149936b8e0a1c023c921008658293a7f27dc503e8b9e06007ce319cf9e4ab9390a5e5004f524716e959e86a5dbb19c1e5bc78568d32578a939300d6703047e7792e234d786396683cf660a61bc82cc43016a53d16caabab84612c83113f84195650679c82122bf8262e21bc1f40bb5c72df60f202da233a548ee6f0ea1820ba4ead746e5698fc6fcba6532223b2c52db51fbea53eeed78d58ca47cf8ab6a5d67ac6b98774b863127d3f359662755b43086e520b8f0046a63e11e949c33c34862e3d71ba6d3807161d724d05f15eb06b1529e532445e00ef5cc9d664800bad17bb58cdedff14e06c781a0631ae64e614bf0bf5d8ae1c51d8c8a5a82cb49cb5206a88aafb4c70f99026a5c60a4bee9c3a6894ae40c11a31d1dba2b08ff66a7be907bbefa101ef10a2668fb96aa6b135d15e1b211b8a46bc6f539e89f098461e0db47f1866cc511ed8cacf07f2886c28d6ba899656f773368791f8219dc94e7aa7b606458c3abbb1bd0c153dd7b4d47cd13fd23f25e80bfaa39770f19a90d01cb75554ce6c13916420942b9c6ca4ebe85e358c4b4092d59bc4360a600a97b2e8b42737580d40935bdda7039bcc2f5d62a54dcb2cbaebb552d9553c7644719683e4b6271783555ec38c2806615953f9f70645410141a085ffc0770b892cfea643156e774137e30ac39a74cd8b597f1d5746cc9ecc4bc8a45256edc8ea86997622846ca450577b91d8eab2bf6b6aa35fc6a9d7911373f6d536091f1366a13312efc08a82324d108a7012daddb446abb0ab3fa8ed4cc4321d5cf576ccb4c7ae0ef22b8cd2d3274919e301687a4235503590058c4c2c6c5c674d4808a0d78ff158970ab59b9f9a373dbd84187094631dc0cfcbc6555fe90946015e4f25c2ec1ac516d4e030efea0c2eefe832ebf1a034ce480823fbd9e70e9f765754adcfc9e1d4363be63564e8154d648760a43c859e45214076733402a06b153d87332d25890fd61eb2eae13413d6bdcdbc8595b1cca907e556fd27820673514bf936bf4932b773605dc71d0cb995115f37aa6d44b76be7fea0921644cc9447709308c1a06845f9d9da75a2acc3e251169b113627aa20b896314b0479ad0fb59b4b113c9dc30cde95f281865dfa09d90a5a3a0467ae21d87e47ca5b396cd3b6e633e5178c32ea584e7481930bb311805e9ae09a26ebe9e2aab9e43cf3a7f5040f5894a9e9d1f9216f8deacfa316e2171e4fe3b40526b86cc233150d8b5e7a1383faacefb2f3eba0c996cfb8dc408d267c96bc14cabb492fba4cde5611101cb655477dc42f6921bdaa78b6ee826724ebbb327462a334a9e3b7c47ad4e9c538c85ffc1656aeaa94651b7083e04c140c41c2089ae1b0b2a14e7a00e3f222de7bd461ab724b408b8fc9f7669fd593526f85785e8bddbe9ed4db19cd67bf4c1054b338ade741fc049510dbb2ae49196c828226c0191b1fa7f59b3d648a5171e14e1628434f4150bedc83eaa705855c749c8902f992ccdc245045964ed1a03acc2aaba36b76d5f0048b43016eb1f14bceba21ec6504ad14ced29ffeaf68aae5686543407e411981441d5965397be1b7754e3bdeb9c75b1dd4536b0c0fc1b18ca413f3394441d0044fc50aa50d10221ffa5c11492d6ba195ce138b7b30231b8d40e4f770dc768b5851a1758181f533b965b401165112013a5f9a1d4d4470487bd7d90bed65ee98bc190dc750ed06e057cf82c69247f844a6915e6e830cbabedd1d473b3b909462fec75f58d9c78d4896230d38d2ee09a546de1b0c80ed8ff6ec7d30c6258f595e92552c4c749745b0baea87be42dff7fc7c2c1548c019227bfea601580cec516d73ff233ae6143b61a852f094a8840e7dc4428b2f362a9227d26df06950bb8716717d691e36ad92b371c67587073a8d0d0442c2076ba4cbe23c66fbfda0f402c3a40e94d9d82ed39b3893d6d90a21b9d435f05fe928cfe744118780c2fc7e29c725731be2f9a24d7c79ee6cb6aa53a34df571085e5783f69365ce046bfec883099a73a88d38cd04d20478b80cce24630f4499870a69fa25b77957b13fd024c9df3dcfb108a861d9e6e0911e3ce2f45aeb5aac3870bf2f3794a9d5d2b40ceca179a3d9b10a1cc91c64bb92573714c48e04a86e56091f0e45ba996277d2f7fff00aa22aaa015f764b19eae853b27e68084720138590e5529dcb99f2add14617fe84c28f850d86aee353168753e80b91588ba68ea8dd6c5e81270e82d44a05b375cc29fe33886bc3fdcd41ef848249d3aa708ca3190f2ac4079221fc7d5bf32587175eecd55100838fe3e0b9ea3d187fc79f8f263187d5a14abf32be6e3ec3d41a33f6de77bbcb5c5e8094c47a3b05a5f6a79a8d360a968ee60b5086adca526fd99ddbafb1b0b235a94ae236c533026f4a4230e7db36965757854b091f5e139925fe9f5b1d00f2282de4dfd77aed16da35d78e6990b11cc68a84ef12a29cbc508f08b1dff8248ebd3c0393ea10435e53a99a5d46f3c4c4cf8305740c72141fc90e166201b014b05023f2a6e5c8ea372b0bc689d9173e872e903848924aa818f81c3681d6a2df87a63ff0b1f3abafedc11f186f7c9b66a27ae9e5d9101705be1f1c7460b204f09db5e09dcab7fdbbd456d70309d491041d6ea5b2975843aafbc5ac85efd3f655faf552d5506c52bf1ebac6055073ae83e305035e1b22b9502e8acce528d81b5f1ff2859055e581c0ac7e67aafee29861966e80b41d11058d07f7fc82e3060049a39b1e157b52a60a29faa601e5120b27eebc2d94b4c7b4dd64564cca81392502294f307938f94a9eb55165ea54460562c202a71f49af2e4b46d7bf8781f56c19b9a13b4fb2a5c63b6a381bd02695d505015f337c1bed7383704b49b198c1ae331dfd796c650924d1287935e684c2966bfad43fbc6fa2d8ffcfe031e47a99648d79053277136404375adfa46720339ff76ae958a06dc48406d1c8b3733d1fe093d036cf2eac11603f0d727cde689c2884e65b214ebbbd027d1c5840d3e2c67c2c872b5150b29aaa22a9bebbacec179369c08124467ba68af279d0cc10ae5691f8ba46880d2091cac2cba4719c878ac78b54f730c4e189dc17841f48d4bb0f801a6bdc622c53f8c6ea090deb4e809e9c1645fc0c91254b81cf7af476b3a9c4144d99c553eb0186744739aa015286c3cc9bd86c935cbb2fac4685369285dcd2d71f2403768a0c65d1e0df6f9f19335b5253a87a04a542584948cfa186cd8b7bf7de75b5e1ad334cd7a8d3b435cfd163507f45a8749ac148a834b43e2594976ba8b865e3f8db1f6da145689a993ae1412c62476ea7957bb9ef3036e582a9cf5faea52e72763f37e455bab76952805dd83a8e9af83c55612f4895a7f56a841bd12c66db37d1651e0e2c45cee45affc0da404a2cf0230b1a363ace89a6eef8ab615fbc30335c768dac4f8303b143e4d2a8cdaef1ed5a34f2d569619dafba33e631f5b15277e0bec9392415806470f5eebda02fb8c49419933ae8340fd092170c383d1e6660f52eeb09ba05344238eb2165646654c2b223c51170b9ff12ef595342d3a184064b5255129fdc7ac141de0a87933b0b6fc9a6511967fb78640fb58596d1a3910840afe287d31d3ca096370cfe66378602b0b5f0ec3563b4b302238dd0e8b6606d12d461ee0887f7674ff0b32c679bbe1bd1f8a9c92d6b3cc78f65dc88272e58593e6be3f21c1e8bc9c9c770d704cbe3607f60a7c0f2d7435b4e4a93492c3a7c72a0fed019953fdc22c967f53e89a8afdc7a15535c9435a10b3bdb6ca94a5c88235de82cb6ee9744c1b5961625ea92b5744d694cd2971055afe8a156556c1d06c3b54c6f357202ca2551c2cca7fc335da37faa88e0f2c7ad19eaa46ea1a8dc6c2842e1a8fab84ec179caa99b74cbf8c06ff9129bb5114a18e6aeaaf211a1c89fe0374bb0082bd47404bf8784a521a8d3a3924c1a702380bbd9d54f1da74d89091505f5c4ee7b714d8408cb505fb21f082ab8ea2e63038c2df8f2aac6d463fa531215bdbdad03d9f071d8c129efe106847522e7d778cdde8d33c46b35c264cafbf32465844faf4eb38d1b8fb26c8ab7524dc848d8a31144823b85f07b700e17c531c604cdb19a71528e374c762654281b362dcc0eec6f5b322170efa7c3d9f732b5e056456f8aff3ee577885d28432265b10ff8a287e212e4cf148bc7c4d88ba2834dd98671d721ec89919d4e8123cf9b676190e7589f59563d43f958210e52f42b56aadd880ca9196cdb45829553f2ffac011d39025150cd14843fb6602cf299e59f4b65e11ffe17267e4bf80085eeb82dce1b927b21b21229d36c633d9c3482e22dd2a7fc91c06f074396f80d7097bc48523c94de6a1570f1272db863c86d85e4b61463a8163c4009bb27dd730f1ad7acbd4bd4ed45e00e04f3ad14d6e40f1af5f61a2bfd721809afa77c59d06513af30467c1b3ab7f0e5dfc46fcb49acf8511dfc0caf9c669db03e2ec507bfea2d21aa22dda15538fbad3c9fcd9fc977d1905cfd5939f20ad65ca71e60ffdf82e4ae432723271874ccc50ad807ae0612e1d15c33a7fc049832d62401af033b472e630875e994724ffc85d141bccc66a9ff4c3d4377cb152147d379f97e6fd3209cb9f77aea014cfb80666d761d539c5f5bf104106dd936370188b56b1b08cc3f0f835c79af04f0670b6d9f4e77cb27e8fd6cd0aa76cff7a8e1949751eb9f2e1cdca083b8f946a8109352f5e4013f632198088e3084360c0ae4ef7fa4206b70092a1d410112941d1552cd13f29efc77c9a26aa41149160a2ee7a5c445d1045537f4a693620e522138c90f521b3683970ae70b3a44b3b492e0e023b2823caf0b11058c7f2cd4d447e6dbb3d2c1d07c1d3e42c1f4ccc0bd899ed88cdde905e53105cb32cff8958cb49a50347e393cff2d581f5d0034c12a57b509b37ee3c5dd42f4156734494cb8930e10b1b640b7e542742b2234c27c1143d3c25339b9069c45cdcad226aed206edb1cd5e5f8ffb70a516a2e189b10ae6269d70e4825be695703e03be0d5b50deb2c93033e044bdac3723f9fe101d4a8ee8fc04acaead51aa3ffd3308f10ac7512e478293ef36b3468d22d221065c197622e3deee958149c217c2320c8e63e85886f8b46f5af01e2389171999e3c5505105bd12164013ad5b9c96c2cb21a6b207a4f18da76c3aaef9e30a57e6211061068c70b3b4c4f8c4c4dcdc0c69b7d0da842361b8c0bb1f924ed8dde8a4ffbd7c4fd821e67981ca3399a8c0918a259cebc63e21ba71f07e0a126c4c324b2e205812813b38070379b47884fc5cf9ba0cf9d7e54410db70d24daaa8d5fe99d7e402b65ca25d17665ecee4c4d9f12b3c376783ed652027a99405c3bd2d74b75c5e7ea685046a8af12ee60ec67de53e267e057b2887dd26810ac94e616b43081ab40b2bc0117ee08585be082e9cb6c0c284c08f5a53cb4181e7e104b84ace1e8fc03e1550efec803c180e99439715ffbd1b43806018fe5d35e59f264ff40ecdb307621f754389d8caa1241b44d2fac1038a5b609ee49521f9d266ee0400cc6e465349213483d8317f12b6c280dbf2098596cb5db78c03b41ee36802cf6f417d0f554700054ea06d2c1b383fed0011326bb797f8be91101a0e8038663e53e480293f14d40a4a543013a38727e295b84f2b67a7b403540050a404ee6e8f91b2f8303aee92eb21252dd9d0d1535439672932e1a886b3095f6746e88d057209581acc106c50d219fa426e2800c6a4b29fbaa3f1153d74b6c8fd91f988084f789232fa93624d364c635aedc371cca480b2d9049698783ebc97e8eb5335cb66930bdbb174a950a4f1d530eb91361b3d02e98fb5a6d81ccc66d3d6e1351b0782d9f8b3c605b7d09acd2af79bcd52550f37462668b69e13fc20118ea0aae51a11cdfee4210e419ee13c5797f8ac136f36fccfc7bf36abcde6e32658ae50e92af987f3736e369bc697ad7f4360055039dc7d060d1e15dc41ebf6f51d1eb6b1dda4066870956597e726bc2f2693cbdf376d8fd76f9626d1faa3be803b0d3f37cc04ff93af265d9ac04a29c8fd35febc1369a2f6db7c4613d8629bc8f167f045a425ed678b8025ae3d70a894f8d103952e4284c1f2755dcf308977fa8e7412a6d6e1db8124d940de98a4f48f13192b817363eb6760df81e3c639eb2307d094df5b5d1beaa5d22802ef2c961624016ffcbb869092a3d1f936534175a7a99aecd1fb09a4347b0513cb12ed411d7de850bd8744f3f45c5262fba871c88b6d9e4eb324c4953950143e0ff0463cb86e75515463d141bd93ac3d458555adaf11db9c7e17a225f8db1807a4599afa54d4b7a62fe71ff67bffaaecfbbc93be08e80c67373a77a049b3227441f7aafafe442fea2ba4db6a3449ba7430d6b343db1f64575a182ef869d362ae37089db2fa44e6c591ce7b4a4d50503a62c046a5e851f27f51c85760de9ba77531d9ffbc84972b669ffe6ef0f8107c8893f5a20f87f3839d2bf1b6739c3ad8cd26cb1f65a8db767e7ffa00b7ad1c9fb401d7dbf3fe6942ae6d727d52c2bbdee7fba00b73dbccf5a11decbe9de18b2ee47637cb377dd035ee7db6af1d693bde59888c0b0bad9f43dfa812b2ba0ecdaff289487490d261c715fbca43b32957f2917f2cac123efe87d24aede3e88357bb4207321735f07b24a02a3e70e086bce2502a094761e2d392a5442f283fa8be91448fa504bbdf66f6410972db9be9471dec7e3fc78f2ac0a56e2efb2a97b613f050f6323ea9065c6fe77da708b9dae4f5490b77bd9fef8712e6b233d38f3ad8f57e8e1f1d05bdab3ecd2e1d37775668847b33267e2bfda53341f6d21fdeb8febd4bd423bc91b07aa53ac77cd887d70f7ffb905750ee6034a4a04d931c5cb6bd4f78881f182e53fa3e99e44342f6e0805afbcb611a67416bbd22310abc191fb8e04df88004dc3c0e24e8a67080026f86072e70133e20c137cf033afb5532515b3953bdaca40e5237f383355e88cc7decb01e780dc25abec5978d3466b0dcd7ddcc67c19865f72b3daa8aac0ba4d05e6035ff94b4732225e71e0c232ef60efb6a289b0c8a3f50e0a56fedbd7eeeb08b88f861ec84e1d1648f1b1137c7a45fe4008ab3e1bfc933d44b037a08c41178533c088137e28312bc413e24c80d21fb9f88e1dc3f2d43278dc7115d4cf750c66e1139e10cc72a7c372624590abe218efefec079e84010d7ec1edeb8cfb5293821d547bd6cb88e75dd1d018955e5980d8febc282c1a22c98528314aad0de217300e2d06baa5396c4ebbd2f56a2d88cad429670fb7255ac8e955fb830ac40213f9b92ea334089419b98a6d5675c5dd760beb122964ad4b1ba041579ebfee64a1952cf951badd05919e2ef0f2b2aba9f2b95b27f43c44a7db30be60e53f60299188ff9804f91129a32e339e4d88461b34fac42256a75c633e2df91e6e707d7175f608c4df377a39e833089f7d12473e043d939a62893f8a4dda52711be4eba3aa1efc48d5d03b9c14956e10ece6acec1190dc416a612ebd44dfff8e638d5b9462af2982c5673420becc06a31f51e08a8deda28f0c35d30c51037a3646012ef43d6015c306e6c09dc6f0de58b5c8062a5a6a9cb4d4a3996e463274601b22ebcbf10829b1b50c85a0480dce5125a670658c1a9d938039f110304e94f8a496d72c4074ff1095ae06da4c8cf38a0161d1a87455680230e22c0867c03bcd34657523d306ac68ab80d44e9e23b62b5ae0caf431776c88c2f88156ce514f77c76bfabc6eb322b7b0afa11a39a23af9e9e37ee67284cfdfede14a2b3bf33f6237edf1bc2b488a9e5472143007dcc15aa36093a85c857d20df3cc3b65012f573a70a9ea6d1dd096e221d04472453849e12bf39e15152b033304d48ceba57a7fdb531411f4f25fc6f66236749cac2a2f1e926ba55bbbcd12cda371e0500e035d352bbc1094aff8f7f70797c6aa3cc8e6e7e2fd0979418ae74b31df931434d1a54c85a142a76a7e11fbff510603e5d2932cbde622ceab2ff92b1908b37df2f382449a9962a8eb7b48431a37ba1984bbe8edfe3d94e70877b6bd5f61612a1be74b0f70188d7722ce3bc65c3b1cb1f3395e391e0ab0b0f8ba66a1cc60627dbec79cf704d5c09d0273bea815feb3391c96f8e68d10829a357f194dcd1671749dd2d66c14acc71ce01c3136030b1422b422472555331b259bc342133ab3017b0104717715c751fc4daee8ba68f8943fba1d639396dc3c6ff4f0d4626426c0ff07ace30644ada97295d3b41ac0c992ce10276a2bc1becedae5c4d35c540640fbea0fc3930b838223eb462895e726f5744e04443a0a31ade008d7647e68df9278d95764d12c3eb0f923e406c49bcb1d01a5ed97803c06f1e152f64614f9fc598f546c5586c286239008c4fd879200b87ab10edc04b5bcb7250b3f4d8dbd3ef25e233c3bfe05e75df2b8ee52e6aa538cbf021f1d3011c3a43061f367553c3ffe811306da0ed29014d7d907f3eee64f6bc19ebb1a38d520d67c546b22400792e5edca978907e3a39e2e47c29080e6cbe1dd88b35377b468fd00e7648f55b45115285925fdc6b396c5c2abcac539072e9453abc947c5202850d1dc6b4330391279a3412f5eeba5734961a22a7139eba3962595111735dbb1efceb0e40cf436f52686da4f82679afa85d023bb593d5c8636994813f859c33d4ad449e5a95d22271b034cb3a43eeb5d9fff6174a30d93f0112f108e8640c61c7d1318ca9a4fa1cb17ff1d495865aceef1184fdbb399366f8f8c07e3f43b283e20018b706a21612e2578201411b98a06f3b35012853419adc6f1759272693951bc24e52ba06fa56c05b17a13a821615b1596b36aa2818bd11261040833b5536e1f7347278f1259a9446b1656fd0712a80edb6a5bfb564fd41ed3e3fd8d867019d03cc1be22818573d933ab4cab0d69408d449a5cffb952c2388f67c9a60d835a805835ee93f278aae34b6f21722f4d492e11f6536fd2c697ec6dd2aa3d1a99c170f5e7c1416a0fd6a5ba7104f95b2628c14c876b015328e10eeab682503d7533c3630793426cfae0c5d2224113714170c482ed4357250e276fdd301306d5166d48cefdc4108f8cd321035dc3f60e0722eb0d6870cbfa7d0dc7012c9f6dc68950ce67f9e2d5d3f9e6b1a2625e7056c6ef467041386bb0626640b60bac962841074739c15c0ffc019b80781d7d27ea7387216c1ce4cac00a726a0328c8229a2eb40f9893848b25662547b716decf25133e5f204938d6399cb23523c87f7741fbf52d4d67dd0d8198f547108c8315ba5867635178f003c6a42000f307406aefa2693a1d1126874afee580727fa93ddda0202f9706d8b6e77fff7821ebbe0e0fbfe181a9acbf708a1f4dbf99e8dc9f4347e6c560886786f9e0e4c6a7c6adb1b6c5c269f87b9d58da9a6324ea8f720a94525e4851c497566d2e777e71769b2de42fee04c05e1229277b6b836c71039533da0a1cfa272a63925153a2d35877069ec740ef965820b1ac1bf564b42a4a1e83287b9dcbe3b9a64ad92c50fbc1654399bf0557d9544282afcba4aa4b8875f3dd42b2a56456efad34d60367c759705578976874c22aef4a56822596037dc23b2762414c94ff135ee18f2386165d344578542846997ae3d781788967aa594fc5220868193149f72b45b0cd560b89707e14def8a8853e7417b8f8147c2f6f79871fab3892e23b3f731fe5e73d56f1ea367f55febc9df7875e594b3c87cb657ffdb397a8a4dc9bfac8c624068b3e25ada94248aa51fc1522c444cd6a6aecf62b1f69f8e82c6911b47d8e987868b77da93b68cb980b46130ec88c50bae44bcef5b121cb2e4742525e838708b9c4dcdf6edfc3839e969947c321ec315a8c85afa4cd545528371b644e3639d4d4937680a20067132c2c8d5f6de1cc9b5a8c780371dabe68f1a34c7d731296f5374cf18053f6a6a6f58a94b2a921f0c0d493ead596c87a4aa8ca46a971ac97ff8f9099f089afebdcaa414c0f17c073fe348888858251dcd72d233b2a99b4f3fba5ed5d9bb09d3d2f8cdc984aa624bfb1210e445d6b6e4599f7a20d99bd3541f808dd477b181ff1feca495451722228c4b29cb046c00e149e7f0086518a210e4450797609d1f01674465a000061dee26bb8d8b4751eca1b147eb018165b0c5c1ea63b19e8e50b6c168e80b17f6e6467d4ca9129e89b0e12c0cf6358e13f5d8232735467b9004304331c5ff362cb692b1d226294497aa811dd1912dcae125e222381fe0d76bb5e616e501713c5556da5917023441f26fff94b888de61d747c873f79d0734d07fe3d7c3399ccea4c81746babc4add8319b3f6d789774b43687591928070a87566acd7080fc43da04e45a989d8e3184a00032b4d2f2694dba9e58234a54dc186941c36f0870212ef751ac2ade745450f8e69fda9e9706c9bc8423c775b8db6e293aadf118bb0c86005de324cf423d113b9f742e380ab0b711ff9d7712cd705cc4765715ba43f454a89e31388475fce38b763724c5f0cba26dee0e12532022640e0c87ee0bda38397200963463882abdd607264ea31f0c083f357a7c6e1783f5a79a70d603eef8b1c4b01d6390be0e61871f27a94d4c4ded05968dd89e8ad135cec8983f2321038067ac679ddcb2329a721bcffa191e01e3230a5785ff826d1be4d646b8cf07da3b701fe599e742f584144b2356fbd29f1bfdcf31260f7771384bc221a27023c5841b9a82cc0cb8edd91f320f24721cf4c4a84102cd4da0d7aa5afedcfe0551ab076367db305191446ec47d2fc5d6b2f99ce767734b4f8e1e998f4744131636fef28a02df505cfa0e1277176cee9fa93d7cf7700d50ca31b5565e205a7a36981738e420374ade9a0d2563b8ef22502dd59aaf1a3d50a922f8dac48093ad8ff09165d766d5627343e558f9153e21c0c47034f85d8775e7e902cd029696414648ae9294b5096de4fa5bc6826706a64c52dd3f922462f6bfee81c1e26efcc7d9e51b009c27411bfafe154c2c915a0fc014f83d0d0784ff90edcca89e53a75b436131f80f64c37fc465e23f9961fcf715f0f11fe7801bd42ce52b665831d3b8875df49f8dfba17c6f9d4eaaa91330eb51fda74fd38e98f178687dfaaf9c020283d6d4f1576773fefcd69bfbab7455984a77157bbdf5a62844bb2089634aca501d0d61e95822b6ebbb0c6bce3049d6b0614ed835547d138d5a2df39a7fbe9456acdc9a155b658f599c51dd13fa0ff2182faad26162a2de4204fe2702ac40b5f6081e8b96ce901a449e484abf855ed28c2a162dfdfcb23724f9e5462f7f312a6eafb44836f32659da04a31347db29f08637511e12ac82a0947159c80dcd5740e31ea71e63899e0ee37705f4d11b90dcb930a63001b72894ee65060d60e728da4ffd92de3d149f865261d572b7860622dadd35859506e896aaf71a30457d861e99d042f51e38dadfa25d5e5aa8ea3df24492fa87201a388896b0e52b30086af5daeffed383918b257479f9db862ebdc81df1c0c726edd27d95897919f53d3d848309dbf7605b083c2ecde489ff120684fbc881aeee7b761fbf3755fe43b5d68b9e45a889cbb693e749a17fc0a03e74d2ebac05cc3e68f2f7c66748a8ef2819fead65fbbabb3b9eda880dcd5f3e50eec467f3fddb2ecd75a322e010325b091d09c7e5de9614ddf7e8ef50051f5130ac937920dad73ca1a21f2ac99d324b7f7c3d15330a0d0a553ee9dc2c31a93767bf042953a3c958127a077fe37ba70f92eaa81fc5fef9483208dc8ffc09201e6ef66f8a3d7a2aa72e54f4b8b8dbde21fe48303ed3dec0246a01999c4ce0106a65e13644264b679a6643cd3cb6271e562be9c2cbd82e700ea98875974a14a5450e1fec197248e0769fd86b0f83f21da7f9b3de58fbe7597d752fa9bdad78406b5dc386fffef76b78187fdf038949f75d28f722491cf97f981e445ef1173f4514c7dca61aa359b6acad43a86b31177345ac389f6af6a83ccf425e048cadcde33a38efa2f35e95b8b3c2a863d32b7718466196a6da9d614ee30f011d1362a0832396a8be0b013c3f7c9bfddd72025badb136b057e991f04032907c2dc0012ae8016f68e2fe40fc4e0b9c0e40d1ad270614b82b0c3b83939634e0da9ba7596442da70140bd63a566cf53a7d9c929706e96b0e7243e4290d2141852880986f28bb7dcd928fff92923226a99e4cbb2ef682398316e7eaa019a824ebb21a381a03503408b650298dcab16f1a3d046eca71e8b0fae56d393e1f63f83e85163c8b00aabdeda68d204c5f1652d22ad8d12fa404fceb94227eaf87df7c68ae8234241f42848833980ae07f20588080686f83f61b40728eba9a6230e7b13a41607540035712f4d12738704586c19040b427f7382db871b814d50c45f6ca417d49a4164523f9681a2e0f54371a04443609c8955d418006efa6a9be694590d5a6cd67ed95fb685437c828c79a30f0b8aa66c0dc914ac3b79c98c6dcc9c3f72ab029a4cca52450e2343b587aed6dddd84098611a606c33b18846a1efd5e6f534f8ebe85015750749a62072827894fa07a139d0f8e138afa27916528f71ed8c7112314ba4191bc44e0ca1ace32bcaa84743628a2cecf7b0108af7049863a1adde3c1ac2f8afb8617d4b238467b4942c454e959aa4a08a743c4a7afcbd374f855cdb4d1f363652940f5c36fd77ee6e4318832084f33b61d857d96f4633bf8d3488f331ecc7e9d81d3ad7993c7373fc017062ce50ce9ccf1ced7eb35bd17fbd192b48bf09e8f6ec230a583bcf32d16d519a80596916247a1bc7c7c6b9909ba8d4f9f0ccf3d56a81a4a43aa4385100413fb4ca4eab0d012ac6a98aed8cf5408611f11fa9c3858b398ec6e5be51b209d47e222d1f11490d41891186873dd2cdb6889353dfc22088ebcca6449a25846b1d2ba99ccadd449615d714f2fa038308a75d356af3cf80b221ca5067351a3e06dff6d658e40f3deba83cb4b4d14b60facbbb9ca5bcc0cab9487170297a26d96ce9d5be52a063f76e1c339b54c457ae33195089417a4f38a1f2bfb15da942bdff4fb6cbc33655a54cdcb5b18040eacddd06b0b5c69d98c39b70efd08b3fbacfbd57c9e2ff0fb6469cf4b48f80592f572d60f481116671ae04bc2f1f541489ce46c3c9438efdd26b531914ef4e522bcebc46053e079c8601ae99b6835240fa7a83f9f23cd3750c9e3a9a40c3d7dd5851873d55dad963e5941b35a478d6cf28bc7a73f9e9e2c7942191c45748452fc7dfe6c1b87d03daf6d0f8c032e2507ec9613ee40413826dfa3377b70488525362e6d7e1fad24031d437fe14e86131503e19a64758a73f81e5c82aa07d38111a69d310aebff7664607ef38d915394259d0fa65d3e054d6442b182245d489a52db9832f84be521f7ea7ec66450238dfbf7b0b5b84c18b03a3c8832e849642dbc4330654931ac831d27b8992e7647e0c700c81147c8be0f64a328ed3748f6328e4e551b061f849025e19844e5f24cead20a252089d7a66780fe7a588347cb176ae3a888ff9b1d202de38d6e065d0f846865a06ad3669cda8f03a73b95610da3c7bd7d17ce45bec4276b3084c641f2f5fd11313b63b0a517438183590f62b7a56c39ce04bbcafe04857b97216de26caf36ec1d7816436c0a138ab7539e7dd20beb08755331b1da060a08b44d86255d676acc6b2bbbfb32ac0e3d25b8e23bafb5d7e6ba5193f740436c2412d3e872c429ea56915ac15c087f533ab616a6b87b360d748c3e80a770da049e5c96b4d86483c4368e2c5ffaf6aaa0a6682e788743f666fedccba8fa7d530a492db9b6502a43cbe2313ec9b657d864d560844578da39568f141730a8c92b0233ae4d3d398a180b94ab60e70c3235a78bafc373886f0ce8ed513ac2b638ec512354138470c00308b80f790ca98677f91ae09cb6d70040d768494f1ae42c7d9dbd72cf7b535d931df9a4111e911d07c2d08d4643b8a11bd9604a53942ee3fea4e4c8434395b154376e4cb0897abf00bf4c4fb05eafe9cda0ec7998d42ad708bd4c6f285abc2f68c33179218a7efa91902c4405a2d2619de28963c556e3a0188d24a6b2b379e2a40fe4599408428601a45cb26bbd0f64d5222d6aaa4a3e4e6c1bb28f8ea57e8d1c823140e2940c69ae92da3133a28730af5aa1265c5301bfa1dc56ea01f9650def9b95e4a4c0d0c69e10e9b80784a216b4f55492c9bc5ee63f493bcac5b1246f5d349155d19083dbc72b4b3907fca86405a316de29ecdc2dfdf48ad24f698312db5c2d82a70c3af2a27d7a4a75e996989e28ecdf01ebe5aa7f8d5822651e807cf1ccb9633c5787e22a829f467bf9e0bd0acbb343a1a5ee8e53ce084dd924d562d656b1a46d36620ade153cc8b9f60fb45c42d03341685bb7ac6467ae01e2f01feb70421ea318ae993a6e022a8d8ce658e52a67cac9b28752652d2a19ca11f2e1186f92655bd80e36b7f7adeef78c8be65caa20663bfd96d19b27bc964f2fd20e0b39a4050e48a08f785ba25ea7abf2acbf65d26bf0d312be3b554bb59350f08dc7571cbd72e4829e2bb910722eb776ed0b27c0c403906eda4b864e19041d47139eed622bff41daec472331edd1fe2d72c2c2c219875fb0fc1a43892606128984f7ca3821369f2637b6ecb1c2ec139da12929dc0b34a3fd9461593ce7d3ccf81ef1916935c03a2b5c465d25079f685ef31c252081e7d304712df1061b0718f990f36adab11b028aee1be52b0b22bff02d0bb1079f931c29397632585e987a8195114f8edb2b0980439cbea66457572d8d3db7c914c1be5a80bf42fe026c381f94879e4f0f5817b703e2398625c429e8e28582cf02d48d9074bb6dda0b40adfeab7cdbdcdc9faa163fe725203d78e34026d3285cfefb3925614ef85195e0a28d3d5610af996dc018f2fca3459aa0dc54d7c58c49139512f48f8e887757c6d81aa932f48183e0ec5f1bc62c1e019ad4a9840b80d30a96736e25b369c22d0afdb3db01d3853d0ea1178e34f636f286262ae41b515ad3b7469ea7942bb01c74358e4d520e8ab76a9c157d9cd599e473438d2e3709ce5ab2ed94edfd772f8ebc74fa56d95a5e81c3f5507560c1006a413466b6537375452a5c703a3e504038b49126ad9e2b2d14103d4ad8ec6541c3b2b080f34da046f94c544301f9bf9708b7a1ee87d04b0d9120a0d27b4420b58c768a31a4f31d21ef782b97319378adc462cf0387121049a7aa09238aa7d616de36d4f4779121aef4b980d7c1d3ddb86410f42dcd2d19673003dd062d4d9a712883210fb1c3adccf043ea72367dd715431f61ca7ecdbecdff8e8a8cc350f29917e5d088d9b0ca42c236c27641174b4bce80863ed97cce4bcf3d091e6db0af9283f1873cf1f617c8914363b0522c2fae6ae7d5607cdd0d876409765c0c749b8447b44ceb7a43ffd1afd387df1931037d566d201eb727a920220eafc8802fdb0d09ce573dc5bcc9bf608297f97cb94fa2f2c3002be5dbfff74b2a1f7556d80607a05e6a4c7a4ee971d8b35c6b9d9ab921986298dab9a9e4d5eff2de275d9c59de48bc601cf5473fa4649075fad269b306f2f399ca1782e5254e663dff4d266753932ffe4e7143864dce5b12a082762ec57165245d4e9e0b8cc30e78599399cfcd09f4a2ed8a14a642531aa935916ca75a91462b58277952ec51cd473fec743123c753210ff9846e69586996faa80451b0c537689d5d61328d0c421eb747ae478f473fa90ce20613502887ec8a1b2a057c217f09c6f63fc6c59c53fddc96be8a77acb513a3fa242a5a589d3d0fcbc446d4acc74123414f8f84895f919ebfa4e7de96113a3a090f11bb6afd45bd38c4505ce75f01cc6718367434bb57bdd8da016b3a3472b2a176c9197b5a3aa7d52fd77ac88f4565774171989e7e17cf61aac7566256369f72fcb18d95b8ff47c442c1a7a90beaaa4a657fea1d39e2bb4ddc19fd6c493187e732d532dd9950b72305404a3920726fb10a7c6c35367f7b13718f752c689dcb582ad55512110ccb58179c589f71cdaa672004f966fe6c2ba842f07890b263e7ea543363d7d851b201233b800bd87551426507421c57e1955d2bdee93010730fb8c6afcb07d6edb7c67c5d5082ba8d63f5a55cf55e6b512f6f07fc094cb287eb8b70062ea18a79e043917e7fe5c065961e6994d5fcad6c665acb2a78422fca2985785bf6a359ec4392c321fbe46d364e8eed2663a151711694d198a61496d48095c5dd2978ad009458c6baf9ca801d10253dfb90560063cb27b7013d34a769af988e8d90a09b586d4aa88e45d79d2cb26a5949efdb5469c749bc2c6f48af3a74c624379409863b14dcee98b115245fe94d3210abfe51deb8266f6aa6218d9cbd7d94f395e44a106ac3fc361c414454db080b7c273c0651e494fd318e1bf868f4129231942f25af6e4e0c44e4e11e85612ada7bce7caf156618c1266cc7a73af22e3ed94e58e4cced01410c8645b50d6d1d14a41c32f5027ccecf38ce8334a19a8b780f46a5b6d7ad3e6571e028bb47ceac837de589cf238b48256d5bb9517a866b67a0eb26a095f6dca7b4fe32bbab31db01713c5a032cdf7910a5295adfc92316eb15225971f6c5a58b6bdeef9667df7ba5f3db5087caefa8cdb78da3793368422bae786240c15db63457d9131632a29b3ba64c3606fec8c8cb0fda815df57339e96b48421492f8e21b14eb6b5567d4605a23d152ef582bd31251b7eaf3a39719063f0ced74fa79c6453292967daeaa557d27496a4bfdb869fcdf665f686a2441510fb915f4795a570264fadf481f6d4f6c2306f54057439ca5d7ed6476c7b1511d0540528b7c202c8a0cc378d53a6c7bc6ffc7c75410e78bfbd2501357e5ef4a1d15d331daacf7a848e5f6fa86f1c8c52bcdc7567428cab32da33b070f324addf9108cca3aa5ba2208d9d5fdc8984a952ba1097d262ff4d9e1929955f053f0ea93bd33add0b96255618f4e809b86010ca7f02c1eaca67ca1d4478667272eb2248e7765412669ffd66186a59a4be30a5ace978c404f9d30ee53c24005051f97ebdcf8d06ba45f35556892b23ee11c070a59c1dd8586b5617fecf62ed5b3401cdae35bbe871701348046aca71e28bdbaee517ba21ef5ae2a2b2ba05fec303cc85180cbdd61e6ab378c1b4025be23ff49360cbd0935b7d84e07c936e44503932937fbdc622684d8ba22e93646c99385d6d5d2f64db10ce3e88892e4b4d14bf740c185bcecd69b2254c8c9b2dc9fe76475b8acbac2565617f5fddc2bc03fd7762383a26149a1c0d96c2954da9be05b7adcb8b426135cbc2f0d0f28b2727727a58d46e3e54cf654c1f3027f784faddbd38fa22e26cf9f69c1b7144a651a211e90deb0f352399b37f707239f25ff41a2eb634e2707c2f7f988cccae11122c4ccd782f345f62cac8b094169d2143ee56874086db44f9f518156bc767fef583d331be496dec5aff468605da0563e527f2cd86fb314a9c222bf3718b492ff0bbf53d4c8efc960c911ab9089b29e3c006598f9cc41838f9a08092363db32c7990d98cd87c72c1705d7b8880edda038777d71e70ee04afb56bef8ccabbf6a8e6d65da575d624f8e7618b4e1c4330ce6cc4d928c110ca18ab3fbee3fdfb8382c676ad19f06cbc78375092ad170edfb47faee8be38a40953ca94d75362e640199ad0272c5da7bda4c0048d1715087802eb0eaf15f6782a3ee123e421f570867e7e349039e447147b2aec2b7e1549fb520c65378ef50a3b1d457ad9f45155386242d334faf00a654152f08aea3a55b0ba6e446cd6a56b6f1192b8ef9d5c6b8a2cd91e0780575e08769639dad1a9790d9be8e9e9eaab4a1a6451ae4ab3318100e9c30469cad30c21835e1aea05c0c2ba879f84d32e5bf4295d29f5399bdf5b27585e9df384b18944464d2b4574a3f0197f321acb19e59de250b01d4df3f5f7d7b867957a7efe2e73b33f218bb10817b09fa516f59bbad7c143107313300befc7be205d37b0b3618191736b6ebb4360d8c662bca9f1fc987399e59b1433b71c64e0a3d5364ad9b1fd805815b5143c91d2d561bbf1d8181268158258be0bc9ebf3c20e5b04da7023fd56985c1755feafa1484221879a9adb390c036c94065ef747a91c331010b7a603c000030ca83bea020924411a2dd977b5dd1d77f4896ceb1db263f97a2d703846b700cf28cde96b7caa818d6c9952331e351ec11a6a5e6eb9a51d78f29a7b29136a93e797008ac1f29270a6b0662cc8e68642c605d62638838e28b713e297d11eddf15c03da3c9431262e8b8696af0bd43eb2c8f615d208f8865e61ee670ad1bbc491f21e0a98f81b259ce85d1290ef5811c639c559fc6b4e4346914489dfb291c8ff8230bf8a5caf7710c14d46908152d6c522e70a6c767c2de9e3a253a6c81112d3f479136f5ea1808403d0bd0c7d4247984a7c0d231a322415a2fe0412f7011b2638a84f1d900001fe87d592ac40038cbf24860a4a6b150e9ff3e3475e6443e82e28f6015f643d1958717e5322b2cf14e6f80100d97e03209fbce107ad1fab02081583e2f1b90e6ccf3e85af642250f08c88363b388313a413014dee0b71048d650485f335f9fa042222fd8ea59bf79d88df0a4a052d3467c4f50c9fe81c2d407f084f855f432ac72b17b5426b7cd80f662b8063a093e95395c565079360390d54a15018507abcbbc283d37203f718dee6a065786cca717f62c2156c2e3c815b71b94609bb9c6aa90a4dffda8703064490541e42af6a38e86f89e9bdfa48fb0503610e254d25cf6323e97b20c8cb6433fe38964716fec98e070f634bf138a8a2bc083b477222384ffc969f21b981d3cca71ced381d4a3ddc2d28222b797df9023ce2a0b476adcc400d9b0b4dc19245d9f024448436f84e0dfc04d5a8c8e536da25da3460ea99e8e0e31bf294f2360f10e425241b9e474a5c062545cf69408a936f6d12f165c244795b9433a7813aca5a34309f0aad17d9c7fa7c61a939f7f009ca07c9922b935203e4a5e488f3a22830f05806600413413193d9f67ea0346067a655a60d4a6863e22d99094065e428f3686a2082171a99f246a9f6b21c114abc40a78caa5d0ae4a53c4441c9bc297e215685b2a363f6209252a17c30103d95988867602a84ebfa50e3077149e04eea72bc1375e26f0be7f3a4c8f5a622204009b105fe89f242361bc3cbc1406ac1d68fa2fc54b641bf7619caa0025541dbbc21fa239866e401676ab80799bee2cccfef396a70f7f28f5a48e46410f97876ec5286d2e0edc928bacb8e826872351f22d0464e56bd0f3c4f77559df939b6b11c820b2687e5e7f3971ded104e09c8b212b83946e5866e5235e35b3318d0066d9857b5c6c83f3281fa4780778491c26294835f0df44dd0e4757dd06fc045dd6b9a1203e560a3f8a6b0d840435889f545f2ca9eb963f8ae2952bc99c8c067b943f69672cdf929b712bf8455173f55a702956509f0c384128086b823e51f1c88e34c8a8c418bd0c510aeb961f494d22010e23871e23fac49820a0ac0b31304a350393f92de8f9d5942164d524e229612b440a72f97a4f6e0670c5f79a856d4672823c0c930b9cb7a0558385a006e6812e7ac0f400900f4d800ee3b401a93c55cd0e09f3c4042632a781e049a826ca091036fd208c2d7580de403b99a5fa99f1a1fc34d84b017a9426f2624530e80c5523e632242109101005e0a9515e5810bc9afca05e2bb9831e0980a304179f038e4798a19baff86c7f2a19609b05a3f7943901ff9d8f8a52d2bdf28f3c739d41185266132f85a6fd27800541efeddd3e69026249d88a3131a438e90ef7a43e3cb06995359c31c14dde2e6168af796264c6501c8d3197ba19e24bd4045dc2913ba90a0c551f06184eef204e74350ec79ad3cb07f9a3b6f6316c0a58820e55264d8782f7440503e2f4277e28a8817cfb47dfb635606d537e66f2b61de38387ca54317d0d591064713c6979b170ce461a316aee48fc43f47b1a12a8b2b972ad3230801020494108932c10e6810e43e63ccbe5026f5dd6480f07206e8f8b653031c42ab06af5a1ae58e1ab87da81c8050ef50e8952bcc3c0d154457d46b422e44e6809741f3278f5181e85d448a8316b973e57441caa045f66cf14a31cea0e88a2b4fc74a54d00c2348a8de4e802a181ec957f640fabad02bc8f30154234fc28528d7b88b83c6430eb98a252034c700316e65125866eb7b7d4c5912af90a4f8a1f2b8e8ac3f0caee20b88dc84469d4fcb84e48da408f47cd680f8e7a300ffe2cd1fca74c4c341f429e284cad479519d76a1b73804ca0b000f7c1d4e61fe8d9510041147ca8bccacf13e3a603df2511bf4c873146a648e5d50c29383a321a3822a68c5e5edd49cc9ef0ab1671b5e70382c2d47d2e702857407c02b20e49731d04971426aaa97426aed0f4529e28a2a917dae4b84d05405db2baa6bd120aa5a3ca4560bd02020887913c8135ca1800ec5133614666814f864a8ecaf0f6aa932a94ec69fc16a2d0f11b410e66549f52670bd2f4318eb7704a26f458e8c171154cb38fc567819248e9ff5b8de438011fe2470f8a428797a3335c63c0a10a4be696bed1538b7e41b3d40f99c8f0028280c145cc4ac54ff68920374273a137421638007ea3125478a90246b58e1263b7ac3c61ba16011bcd376e707bd59cbc421a9bc6ecf0c8a2c71c027d160f54524269cd65e1f4f56dbcfdde1fa0e75905e480b5c680a4b8e2f51f5e3ec88f57ffc28b93351194f60e0f8b430a8f93260303982a11edfa5860a1a3786f893c2e04047e57943d94089bf206458b306282cd058411aa07a4ce07c6d5064211ba36808d2c835e43d6051d12396d6b89d14c1974063e443321cf92017824e4b0c172a42f9c9bf5ab5e567a6275e8413af2c42931de790b4f3a8ca4479347d88a0498c855c54dc97952c18f3016f14fddd8f3068b3e921c7b260012d710a47f00c1f4be8812c31bed8d441c973e6843da10790503d4064fe11ead1337814e713a489de2e862b74ca84201f430906f44c73c7a71aeeb2a10e4abcd52c2a2826277d0e77c50efd7b85e80f55b18472aa91fa12971114802581bc49813354cf87ecae966f9ccc98895c22478f4ff5c6e6020402f039384a641db44a051318d1f5751a5009f3b69d8fb00a8f7b7aa5fa9f3a2c5eeb4971669c77180ef69ed6667b1492f47ca9190672830a9a7c950a2c3ee892d32795f8843af221eb572558fa174f65de8e4da21cc503a08bb1e2221be215801bc396642c4f315fe20805ac0b831e0f8b4d8aa09a3010baa6e24cf06f33ca5bc4b828a44c91f298571dbe5ce0899dce150cf78320cc57e23403f50124f8ac7849f8473b029dd103279fcbecd3a3af5aa06d862eef1677c2c3eef01ecd09e67e560d5f2045f05dbca05e0086323fe5c272b85815f2a537bcb287bb25afb668d51fc9f32657901bf5b650d1124212e52453c8a300550b3223775a14036d6068e8bcc09cf89d5a06fc409aecb96811f9288eda7cca2b446f6690d137ece11bd98ad03a0290ee814923749907e838aa78723a4a52fc1b1dc08f9228c7eb200504b5e362c04fa251c20b5ca2e2345841f83f2620650e86c2845f5c2c5d57a139b490163c0f26025dc6c4a382e3c915ca811a2e7c1b6726ef43c6ef955fdcfc8913554f81d62537b24ce2cd1e8b9cce84acbf1006f04719d0f21ad68c64a2021d7f8baed363b843c10749f8828af528e501fa6aa1708ed851a00450374283f200373282074c457a15c998af352630bc112ef94b4460861c440509636912959d4553e8a5b835cf07c78aa27540e463f87470498f967c032c951c8e3d3e998e23d905c3cb43e002e4a6c88c0ea7d519aaa03df391b2a0ca0efee8adfe9678100b1937dbe5c16d603a7e221c72fc481e02ffca4c2cf4af419cf3c037721c034f7217638860082b7bbe5697e46b8c449037b087c43fc59db9845596b3f934c49b38e980f65910f4646ca4c8812261faaf34927cae0c259f850606da83ec8193ad19404d04d6bd08213032982d3a1e0a9f34347829002f6368d7470853be9a93250a4002532fc5cc9fe0d91f367302bb822a52d3e757d12015d45e32e4662e228cb048efc1743d08ce3a92e777910a80de0ac0c097b964e717b4c8f0d743f737146972566fd2fdd64a3ca1331c0f16ead2e7d204e4fbf814b9065b9a7c4e17e0eb671c34431bfb4a6c08c938e0c8f92c5990dee352003e6cf3f496ccf05ecf822830363f790c3d4c0427657a9011c10244e52cb1cb03ae04006bbbe2e06b85d9426d0452e33c48b0ca44248d7050ac1ea18ceaacf8cae1c823e115cadd8405cafad3fb1e6628748d82e22bd00422ab5a133f901c4a72a93d4b7e935188ab2121f4a3228d713e379afec68c014f60ce972cd667c2979550637cd2260de89d2850cfc6b1c995c436fd1b5e8982343eb8703d926e78913c429ec0864a3953ec7e832d6cd018524c78a9508050b7b7baa71375e317c8c5705978af7ec801c88fb895e563c5720fa639227fb291ca91663dbc01012e9f44e904cd70474cce14d7e639fde9fb5ba04205a5bc35c95f21008373680df2a11139be78ddb8931df0e911367ab6f00153e0bc140a10bc445a0bcd16047c5c0908198c2fcee732e0e6997d6cde0f823b594032f957d248425f3da037583be5c328a49c48af256f0b004fafb667643f1402de0093b5bfa5424316d1e84bf644b97ecd76661d02546f74e72e588557a207a522280c33c026d7783423a8c5cf926f11a28313e104bede1a879ca54920076c26331b2faefcc02d28ff84afe9a802281f02ccc731280af5058ab0f22a5582bc31cd7e5b9752a04f6284f2a4ab3a289c80c2b37739505468673e0d13289440d3c1b3aee4be5cec7182eed84106a583240ebae3c4f005b47cb2d8183a8e490df319985b5e958146bf2ac6913fd5c5d4ffa85b739e1452be8f945e289f1b75cf248d25941504e283e93df131304c3fd5bcf3e08f11cee44d5bae3404f36a54a1c814e0767906133ffe0bd0d7e7a961bee00cb1321e031a4134f72c4bb11587b2d02423e788734728e9c8ad37f5e2c7c72250c4a7ac6540856f889cc99bc1f58821f3af2018df01a0166e96a1ef1d6d1bef42c89e4704293f5fa11d8fc9d42b7fce419dc223018f000039ef8355f6b47e0c415b04a0e0055c046e0349e68b621a05d73a71c82a48c865446fdebc8e2fa0d040b00ca04cb40c6f168b49c6d0e64c56f47ebcd5985a4e52a3ccfb01b428e30222e7b3a0a9fa1812e27c0907c257a924c5bf9a1e321e3044efa0022fe73f59de8081b2cce444a1a7d302e8aeebc5018d207f0e1702ae37b7278ba5cd411dece96008097c5fc243941c6bca5ac6e5e6210b7961e859a469409fb1aaa01a0a6509de4961c20380ab95218d4ae008163dc87b1c947d5992448631e685bb5181e0fb70d2f5510ec47813400878a00782e6b50cbc45215dff66009ed70570e2736b881ccb2e1a1fc31004f7b0470365e062785da7ce08d1581281225327c10f635664383f1b82acd098e5206c7d4124a644e55496cc7cd140f53cc211b52ff1009527d936e52985d4ef2b7afaa48ce3ff8531843ad080c3d1427e32dfdbe9ff30b442ab8cc9e4b056a42ea0eece53ca9506f5022a959789c8f04ef20d7f428750e61fca355a29859ab44cf8515b76804df832ce27e6ebebd91c722d9bde5026a0a563e8e382ee01b0eb3dbc39f33d1f5dfe6c4b5d264297e3d9204b3829b3579f46468b3732cbc0df7af100bd8428c8478aa1e87f9cbd1f7361f3075db9fe31cd4033310dbc21bc1e6e8589198f35400d0dec04c49b8a2c6531641cb44f8c12f4c9ac0a4fe7aa086a83178c1c08c010ef83a7cc33ffd6086bdd98f585f8debca4fde99bece5fda4ba3c97a301466180b9f35c13dea09deed4bd1eb323baa6857048a0c278701223872267885fe0e3c0cf34c2f1440e195ecfd09a7c60509e7bd9cb85d62a20e7dd60d9220452e491732971038b90cc83aeb97183bcd85078303776a06d8edacc258f906c61737233c4b4aca49586e795230c7a6057ab57a373ca974531cfa689a157d5e28dd70983e3a1f098e1a7d624f12e4070bc314dee9561801c0482be677f40fa167133ab2fe5c922993d022f30f2df2fc95efe126435592aa1828ce04187d8f084c6b295eb8bd8ddc8b90601ca6ba22440f7ccb0f23e494dafa18894cf73e1e8640665f9f58cd04fb1adbd0d41ed73a9d3c90f15817dc0970d9ef708499e03c5e9ec15073f29c2170fd5e2cbeb41d07345a160a0500ec078043488bec5c9eb59271a2a482dd2f3dd59be280fb3f2a166a3601b3d21de092e3b6016f6e0bd99661934492bb14f5b350b9d13bce3ad9c48749698adcf353c945b0da1fc1a8ca2535c497213a61e782060271fb0e6cc53bd047f605687dfd0baf84f70621403a235cf28d4286fe224961b68e3902d65da832a98532b58e6e82187a97227d81c0423179261251807f9baaa6614e1df260d7907a51dc137457f1ee08c2e9fe18be5977a98ca785074f829a94cb898036d1e11af164ea699f6001448e5665096ee8459239f7985f600089af06f85446f04a1bd5409549ec465f16629127d9003f2170870f13f08cd0961dc0a937d4c72852ff4d87392352b48a507a31c65c02d21810dcf5754602c884519c7996d2a500521b4785631c41574c8f1c658553ef0959c0ba34cf2274707df85548c8e9071e778428efc95259c07c975e257d43ae0808a08e510905eff34620fad622bd04bb88182a6526425b3500505c98014c82889643ec3e73fd72150420a5a1c3d860c2ff2ad43aadb7054ea8b5583e8ff0b0fbd94698c1b0071c7db40e0f03332f4fd1c2af7430c95f287b48a270af1221f6915e7dd3a7441fbae88700e6f543d9c19966f8581c9ef018af82b7a4cbca9668e0f41bbe11d0c70ca5b26e1fa321508062d6e99826a29d2e8a5384a132403e3efb7706981ea9923249f6863f2156ce2cecbc18a571a6afaa7a981a201e17c4282dea081e200bf19e08b1b39d3cb717c129205c1749c6ec11757f506cb4332f6423dd9b13910517a2ee5c6ac1f63d0ebd5509170bbb20befe7c30f87221728e8c14d09344c0122bfc34c9cdcc67627d8a21331dba96682884a14412f3cca4123830cfc892ff51ccea4f9a65887c3c9a0c03dcc8885d65924e7601ed9702b8460f819dddad74912e2ab5eccc823e8e4f848250051c05b6d7f6b519a8fb0e1f823b1d7bb7a3af00673d4721d9a5d7990a665b0481f08d725c2d2db19c992095ce112348417e6df075ff2d30b2f948c00853c29881067a0084e8e938881c3423f9731d1cac996951ed095559f06901354c82134de8a8d921c86bcf43f92917217b1487f684f558e612196af7a64f6352481f1568f0bc56596c1779dd8904951b8f20f8e2b8242fe00650b6b86d0584f0d99159c861effb099448f42c158adaeaceb1003548ea501cf46cd5b7e6526bf093d4f07a5d767a525c86b21dde3524544e1128c3c8409b35ce646a20f616ce2707bfe3cc38a5c28975377dc851f898c098c870b9ae3204b9063f3345b7d5f2550c2d75a52e6d334b4321e4c561e80520b5ed6193541471504652481496891b63bb9539136424601ccfcdba8f0bf39bdfe4b861ada86852db7c325cc6a14bc5fe39331878102e0b58462f22aba2cbd94a33d2011587ece9f304faa44f7003cf28496f083e14b25b1817eb882e77ad8247a2e74333e149b15e19a06267f088a913c474fc71bea14e52b964643954186044b84b0f3ac60050896c9e1790322653211648e1fcbb303156524888f4d09e08908319da5f1208709083e588e56b9001e125e008c2994948e4a4f01e9e127c0e1f174b25c40adf0eae45a880b9c462a0d6f66c4153f0285d21b2a532bf770c124c7259a82063192c057bbbba0a507a55c51063ce80fa7a117c0e7f98544cf06cfa7183d2837247c8fa55e282c22eab93488f90918c01cc9318c4f10a4e585141893ab08d5fc8f1e189caf81847f163bbd293d3cff179625bbe1a2e7789e5b1c561d2edec9910214cccc94cc434a9ce08b307ab90e8518411237b0fc872e82503e0601729e8e25425663e63c93158f6009b23a6fa88889cc46a8864b1255e33359a1e066fc022aab17156794074a36908197af21f4e889361c2ee453a88fb1c3e9677f5abc7194120fa0d50267f12694935dc8828a2ab4c65d40daa883312ed9c822c57b71150905e002110580d15aeee502003037587ade8f0585aa726326e3b956b29c2b1afe06eacdc7b724fe272a0e5af702c38fd540f11d8472bc0c112da817481ddc8f1a0714550f1e3fcc13cb746f2b9f15078086b0b2c59b04b17c0fbc1c8e24909f5f85e4cab381b2dd8ddd5e7e34b71f1615bb7764a6ca1771b9f575182441b12cd884c6f044050d2226081591828996a8a3e1d9fad0f1a11f1487c036f75f86b95e86902a8f66061f07891c548b22050f4219a3606aa81c83ab534e0870d2933a92068514c4f9a7ea04b99d1f1cbe4c953287c2a0ca675263807249b7e41e686efddd06284e49d0867ca6579b2b1dd1f2956c05e25ff485092ad8f1fa9a181742c003655c2ed3ab0caa1329dfd3c54d7ef3c4c681201982ae0578f352ac99a37ade797547981c8492a217056a150a4a439e37815b3f4c1028afeb8bc8c77f4e7778ce4f608f78a91513322d0e9e2129520456c08eaa7c83930674c489062fc28e155ae64bae7c264ef835084b8c4f92a54790d1934c2ff43225fb0d9ae22ab25cf10647d4fc4cae2bae67b9e547b1f1f047e0422f74a42bef61a2c091c425c873628df81d10a038963467ff02ce0f9ae74bee6f7432f4613a013a001878a131749b7c0980b08fd228d26f31442518d8a9495e568202c6e1009bbfa31705ad75c6e7cdcc8af171fa64f262fba271e25af984261732815b6efcc29439344cb1ecf5882df81f418e7c203c5228901921fc0eda0a34972614dfa38ced8720c0e57bca7041353d168f5f993d823b4e2f6b23e129bbea0d91b92e14f0e21165a09031457991ed8e93be866310d0b432bc501e53c6b8893a46ef0328c1ffe16105858348959fb9e2f111865e3c6dec0bca028825d73283cd139571ee51de9e101a246fc3d2195ff1c3ed097112e06d8a74f29721e4f10cf4f15b7a6265497c2cfc1c54a1be54dbf2d788caf4e55684ce1ff82a2434e561450914f1e44169543ed0d951c821098e9ce54326e18145b43e890807caeb09ebab0c17644212e65e061f822cea819ee7b3a989f642f3fe4ccc88cce602a29f43e255ee4587c5b379e39cc9ef82ffc882f4465b72784a8195a35232c217c528e30fe6bca07f5904a0a4d0e6328e195482694839af03d04390485c24540904535f44c09beb9cf10926c1f4fc704c60ae14689343dae186baeaa5eb9f8406b8ab96cdeb9a3187867113b8504d4bd6c48597b7487026e740f67035dac1c3c222e6e3370bda09cd2727e35ce50d0894f22e7c7950137d52e4362e367cf1a52af14eb9245a3661480e1b8429686613824741c6f8614bc01cd00754c1364e9e7c9d359a725a163c9f870c594e51ea9163f972c75bb0395fcff1c08b81fd7e4ca3422f8658c837754193c95cbae4a486ab7200853ebd2c09177229d79387188be237d4b870d511a457a304f7b92c444045f031fa2474347d9140220905808a26213a46175a42d51144630d7d9b1e13505045283d1f10419e888f93e7d2ca87b7a990c003d3c03cc0aa36bf23cd42e3a8e9f03136b95c050a994b51cfa08a0c3d9f1114351f44cde8751e1d71023ff87cdf9c235aab4a0e7fa1c92c87d004eb8d988a4321a0c0e1a250325f2e163c9d564be2cb842d4a1ea8571c301350ec6433211608498098f3547f17720d1e949cc9005d28a93a5b5fc599e616ac8687dd88731857247c9a10ee62f0b6bcabba2ae8dd9d04fe85d69ad7acb41e4814121fa6e5f8355f295f48c3e6fb5ab8f92e8698be630318b00c7c01fc992b2599968d03b9550859c2308204e5465ca804f58a588ee74e2e18c749e71dcd61f13d5b64bc6f9659468b44c89dacda816e42d3e1a9082081422ab57a9aa11b395048010ff2298c0b1ac2e6948cac4101a5c0f014a906a0585a197dd09402df276c86d7e9e2223f0539f8385acc5c925d8bfc6632198fa1befff4618e700a81bf0c1808011d8ad291f718a91192c8875e82273339ae65c3cdd01293fb48b9f92494366a218a82cf34de50324dba07b4a1c539a172e41954eb31d4f54b7851f5c726183e00427ea82706839e550b24da06d1d82b18a5e955dda9700cb88064464d54fc1a5d6650354e0b1982294fbf648ed817e992004c44051e7f65ef2c88a784f3150e48783d719c7e6748ce92a888fa388f2e391b0042be541840594f41146790e30bfdc1a2795b1b442d0851e548b7ba0765a4870b4b1541add04ae08df684ec200ef559d226f8143db25e52720dea44d8e1e32cf284f63176793727ccd03a280ce4555e62e19bdad1ffe24cfa62023bf049ada0bc664303e75465931b2909f14294623ca1218bdc1119b0ef25e08e2ff18444e76ad87a67c522837820e96925d1950fe4197a9d1f60681a1b6cfec386eb6e932ebd86c1e0b7cc58e6040e425837e1566662888296dab59d541f4e59889b7f2f3f6fd02f36aafe951a98e09f9b7b891e195043348ebea709d7c74863f8bbeb81b37103e764824372940f3afe6d4dd40fc304f04eda3b14b560c8e1bce57a5a554af85d980ee8040c09fc2bc1f25241f8cb24c9ce6500f1734939fe66132707dbecd041bcfa7e2bea82da0ab405dd03f2cfb1357c4e181aa18190923cda1b0a28a70040f82816213c86915d0e6b8a9667ebb5e51dc4c1944114a13c1df6cdbb3c11f2140da46436351ebd0126742831e6f178bca4a14237172e8088e103f029fa914d205048b5e06c824aa160abdff272042808dea5dae288722c834a44ad50518186c25799eebc885942d7b3e2eba99012e251f68878aa33217947020eae8405f45ca32c3d5bf3cc53b0521f24cd9eafc4a9fd222eea502adb8cbf0a50e76db5c571426b11b20d1405be0284b9bc804d89f2aab6b44f20c74aee10f379366229b4871e49b948a9c2870ad4e48f046af4858616790d2a2b5f6170f07c007fcee4460582785294a8bf6587872782534455bc11fe19bce23bed4afd4ad201baab03a20fe4030aba2a119987e0f0ea3dc5f5792854f8721b9fbb9c861368165683bbb6dc5c4df28acb49d4e067c92d7839b64fa6cbc1075583637d6dd8932813b592ac6a287439b87a7de600e5b78d214f03ef89cb2955c0595b99be541b060f44e2ce6be0b3f42047183c1adc1eb452a0309f3323563e112793ab72a2bd850faebe9802074aa384a71f53ab97a77625fe80ad3627a507cc8b9993275fe283226370f597232d793a263ccfdfb0bc92739c2995f31ff567456143319ca0f063a38ee4b2284abcc390491f664d95a3c95dcaa5ec3c71068094a002f2d9cf6508fb506656fc8b0d8be7030be56f9fe2d0be383c7eccf3b8f34cdd87e890067d4285957be25486a6da9be42a7065f94adbe3e3611e7d05533879935350c5e00431236ec941110c8591e40ccf5d199272d7c370ba792d5a769e879450998e92184fe428e9d1268df9a0602274c69e19ee3e20e3bc48bc57b121e76f6972398e0e2050960f82af15d6b890b51c6e454ed8c30a23e71b6615ca415a7fef069580a02d2b57d0b4e7956fd06ac34718a501ccc0582194840fbfa0aed7c377da6523bfb270c6af14e995ebf0d83887e4066754e2e95ae0acf13b14847e41d089cf87ae7c5df12e2b09f1c645dd49e56a98187943765f729db63aeee1c667b04c623cd2a6b36c2a048ed720d6960dcd6afb3875b0f0442d672ee2f90a867aa1e835717a95c1c4b9be392749d8ea54a9af020841def154dc872923ee46d6805f1a057823434c7e0f971317c2e1eb9f9034bc1405eebddeb4df47882b6f6b52c463c541e4955291c9676e257a204602332cb45cfe6ee89163087c1fc40c49a662a217ea0b84c23890f4e43103b4d02f1d90dea98e1a5a6a039077736052b0ce229d07042026380587096fb601f931c91c6ea453a54fd7155fc425fc170f9ac7d5e7c6ab3a61e51f209db98491849b5852cad33c947125485c78123338fc598a98ed68597b30719dbe92a25a7fa8121a975444f06a4b9a28a9164cf2010b69eee3d5e6b3f0e9126495a6c93f4a610b85c406c593505b43e758f8f42e98e93faac3e4625e16a073049c713181947c6ecaad8f158a0e6d5564c583e969fa025b013c05345db227daf1a43434794b206afd8c358b1c82a406ce836fd5db0a83c39f81fe3c52e7c85214c5c1bf2886fe8fa24228a63c6696d007fd3bcabf8c3c92a11a1824ca7a24c232a30b055e93ed40f72400f578b84cc9afb8f0f8519116b9925803fc996784fb2101e57d88d8f1bae6e070449c9ce83019c61fc5f9f0edae39afe6262bc70aae78a43d59fc6fd0d76f00bce01534a43d94275fc219bbaee4ba0020642a7e3c729aba48f8414aacdc44c188af577beaf2203531afa88c855fe0c3448988caf37cc0cca080ad3e7929b682e71580e2b8cc84ae2ac7fba4278c6ca80b990361f1e5aea4987d193e4fb2930f191e1000631e04ae1a5e2b4ad3efbcecf844970ee4c03f72f257290a289294a69cf2500ae1476be68517028dc0014cee80e5fd72dfda500832f8843960fd79369070fd9e3436de47ee0a3a25c51847a428ced77851e7effcea3c0c0987375224d6930aa2c4f58adc653d79909ed0922ee80301977e0024f8edeeca3ecd25f4c131245c09cac4fba0742a4f10b22af8a84a9b8713e04f30cfa83def59fcf210478afc400017e1969d08ddc31298a7a09af3412530b28723b8de2fcb12f40d160b5e6388f323c892731a4102eea6a9c613ed6540d5e6d079a10b362f4107e05034e178164c8e4e498573232342fe6b440754d187313f818f98710903f8456fec1eca061c4f68caac609a3197b29b003a5f7741146409850051240c86e41a739c6f850f1f571e69f26c0340fd26076e19cb972fef8c8097adec7d3d254c7b198c82abc730e1f90beaacf03d3c78b98f54633e55639129281af30149fa64b5504ca73375234f3152e5f7b214141088368f268895107ed244dbd2b840b5245843ff583c598ea822b9ed6028b8639428f4cde9f67507d62dc7a0a5f8bd908cdc068b30772e604f401400bfe5031cbfa0c6cb87b9c4fa1a4c6150252b1d1e27d033030234c0f3447af1492eb0ff45bfc887fe623d9951b4be4f499b8b0d43a16bb1f36bb141f1748534640bb98cb9c420e34b4a9040684657ea7bddd013ca7111f1bac858ca303ac4b53c4afb28b08e782b373ad04f75981fa61387acea479ebb52e52ab7e903eb8d384d65261025aec88cc8ab6d30f32b2e3193aaa4e76cc2f0798566dfc74d1ca14d6851780b53de9c8a12560f56020d5e2935c9edb89f50b2170f329b263a729e4f829c579b130c7650963f64e0f589de5e7745c8d6cf595fbd973b71fe78a6d31fd2cb858e2aa3c3e3f0155dd414e1fbf914fc07b19d2bfa4086362905e754e85ee5204b343c224b6a8e8621f033108284d212a1e8414060f42b74b1d90e2a2b5b22d2fa494a3ca1b022f4ca04405d00539442c81f19d22448cb8c8976c08226830193e42f244ab9efc9911713e2d6eb1064f6661410e5373621bec1ee45feb1a48c0b3b90ca07f262f88d4c5fd0e59ac03f81a69663548f9e490606e88426fa093824ca751a00f1263a02f887131cd0ba455afe1083b0ec84af44102f94838c40d7134c411630398386212c1b83e8e90cba15d461eb873180c69535b878163703be031ce72b99a3e57b3859f07ae638e5760e993f13742b4fe160e7b9d22cf11e6f021f9589bbec2a9cef47c986df0833f34036d96b2a03f3b3f4307f6d34229322d3e60bd7994adea88584600f3550a8daab26a8a20611be12830a42090900ddca90c6d7de0e11df646f0c5513b3f77dac8c7a48e8a63f7b800775c4458eaf40e202fd2d9d5e87dd8f976124923fdae8a9ecb9fd892991f2864b609e49a619fee343ad1790418b9ba194f70e221df3a1593c721117b9beccb0833b7a842aa8b7e9c96f69c225d8aa4cce8732100b2ff918f16ada3e0937e9d1e29a60d141c51ca37c8c439f9c54db1d475f1a6829b1c0cf9353e3afa82c703559e01e578d529fc668ec7905cae480e650f130a0e2fc98dc82c78241d40f7a05e8c348169e130068d03641a0de93063ec152913cbcdc1a43426283475f87c54af0510b0f9910a8178ef881eb57383a81325735de8ca0e347ddc0f4500424429d1428be6300f327ccceb8dd9d45a82c14645e098ea11ff50791df2901d12683164e0642847c43159d57c1da5e8a508e13d8acff0519f40a8060421b08d1850e79f48622298bf4488e685f1c6e2df23e548c04255c393a8f5463423f9234fcae3a7628a63903be4b8f1139c15a039fa28614da4bd10c173007eb9378d8e372137aa09f8c487a4d442728cc27c0b3893507d522a6f94ce4bc789222c29f83e5138a2ea2e43a9220bf0a960d4eeab8eb3b1dd083bed8414a284195f3624409097ea1925ecb92497088f02b63216540b87658663fb64842222a4dce20ae7d5aad78781eb13fe898b690137a91a8195905bec993b76c22cf8cdf8bbb9331e130f471c070f0b035d4c98c497fb1ca8dcbb17980ba1d49e06063213ec38ae14fb272c50ba1dd65538ff8a0efab2a285830131895076fde02435a30071be3ff14ea106c3343d557d99343c8c88d19870dec723537393f2bd2945c834d867705298de7fa837e6009a62fa973c9d9c4eca0c8317f1ccb22362723a095ef911020eb2138bea320355e98e3860329c6b98c3dbccf2556e9097cd0f36c20dcf83a910aee51e0b884f64104e84bf89012ba5dc4a0e8a83b605600d882b678f3e89bbc9f9c80840f685e1d279fa4c8a4c7646c7b49cf4b7907dc2c0f53620a45600b853399b3cc7446edb90a374d5097c8ddbf59aefaf682895fc0a8c06bf004e754eebaa0428ac0791f953aa044e0a8393680c479055094dd30bcf221d6cc43b2252ba3b9e1e69c7035408fa02a827e211af17a6210fdaa0c351c6c95d2f3947e0e80dc7f9c0326aa04439ba78228424e963ae57b1ee140d92b12dec19733de2a15a5675185cf07b8436f256a8cdbfac0e2d95645d03e77814f634c8eefa165d63fe2c3046537f8f728d6f93f3f5cd98095baa0914932a780e225f8e30bc59f9270083da2a893278295268b5aea706610b0e77bd4e1e920a57a0b475edea3019d5bda58dcee03a29c269ce56a4836e52300c87a3d6f47b4d58c340f4b811294570115cfa44f1d148f2941cf287e8246798a715453900421e4623307a186ef13a52dcf8231ca3f4079916f302211d4f3e9c42b92f3f2e52203227fb1d9a06e628479db853b345b28e05f30e4a1318e3b4f6a8cac2c36c3c44f5a5196b13c13bd9f06201e4e9d0fcf064192c7baa5e89fe8a0f1af702d780249e2f2010faa5ed41618ad628b0d3db3864401a7a0f8a422155f457c68fa3aabb2a0adde9019cfc5257cd162c7d341f39cc8568f0732b7e675edc9f021698838262b63efc58f2434003c421ed6a555a805378cff48cec85a5ad179900db3f2282179eff6c18a03b02175188711d40982836ff93428a73193e3bd5240e81041df9fe2a32b2799b0662f985465462802fd15251f82535474ca9f100141cdb695cfab500475e427c6e7809a92934cb8f15f7bd050256bc6b8153e84f2993855cfe0cc90ffbaa25d939c92df21abc933aac3e5415830f2258462e4af5134fe8e572dd454281a5e071bd1022dfcc8e111fdc02813dac34198276972ea03b0d14598c91384cc49f50236c749987ce40b543600b81f089a9cb0c411d6efc8bca339b3744546cabc19371f0f8021f5092c587b3f3161a898096a5cc533c4c1e2eede05d25106350ac29fba638492613b39a09a47994e1be7b8e698721dae9a5f01cfcc374860cc6aaa04a28ec282a00c2e541236e31c41d35e10f9520084fd5d6d9f60284660d9c957f61525102be7a384851af24be10a84b0a8942e333c061bb29fa4e8c15bd9f4741e752c3cdd092d2ec442e6197a1dcaa38ca4702d6400fc3395f61c6ace21e4cd3d12bd5e8ff6a7e709002272b935655fab06af3fbe35b2060913826f8de2fc4d9bcab97c84f12475c27c252a7524fbb9e2066c4a2227ff43ee44aee2248ff35981e78b504c3917bb0b3e22851f4f1f9dc9b326a53d1cb442a8816ff47b6268b294b5130fc05c2af740a1d4a76550f44c8a0bbe088148a88f18909f72d425c79e06e41577cc041d7c71f26972399cd30333fea900a12f148b40655263a2be52566deea32c1264b347e7537850e484746d7a3dea413e85e1cfd339e5cc2a6a20df4d1f11fdd0e7f8690c51fab9578ade2e10f337bd8af2481d47504281784f00fdcbb40257f85a1b5bcf225412972543110a4a45ac37f3e6107a19087733ea0b2c018ce7bdbc1a11540549cd3f1105ffb7d6fc4e0ed2be4a8582e5a444dce51a2dd24785a29fe9cb0da734e3550e3be5fc34b3bfcca58d90472b6e47b2f7e2ffe0721dd52b487f6a961c94012742af8b46a627953ce53b82ca8c87d6ac6fea50e0b14c48f93b54cc2cc3cf2cd4e8685136a235ca89e40009d25895c941791834396054eec00b07fa900afd2a3b7c9f0ab0c377205323cb3953f47a8034c8b7ba14f21b62343c13500307e1c3884a99b2e5d7fc24e51c9122b81881037955885b8f40410a9490134eff87cff089f0b9e57453c23e8a84cf66985209e7e0ea918f54b813821961e4b7bc6d79931ba16bc9230b75c2e9c33779337c180d27bc878036e8df51df541437682915c62793a0652977ebb7993d7a090c25d7f1e6004dc065ce6b9ae4042574a6c69382dbd01d7938b8708af6e7031afec88f924ce601145fb02bbc0c2c68df28d61ca193535f32db9b4f42595f7aa09340211d8fa037ce0ac909211f0e10500f9e26ec44658dfb3882e22da5a35e8c18541fc5079687f5e795fbd97be1678e78f9893d083e92983cb9012330ae6e39f2845050f00ab894e43c2ed03c8e74c9993068f4a1f4f07138c4210f23ca91ec778b929b82fb9113948142a19ce123ac900b92e7299002b5d18bcd3928b9134ad2b3fc30797ee80965eb59f27c643b5e267eca883be8a01b943ccb9d166f8080c70f1a3a3dd0578a477b3dff2fe9c8314892f3402d4ddec9408a7b7235c015b5317f439f1da795770a6524c2ec1df049d15153726540483a41130ed65c50033141292506e5b0740caa4ad283dcc2840a9682d4f1db02c0827e21113c9e4041aec18a9767c3101dd2a436deea2c763e1c567883176c9f26d6a9ef1340f967ae2dd7d0e52ce38912e09bbd2ee42c7ac41e8c0c096a64a41f0a8d36d938c7fcbbb83847d336c807cc706515219ee41cb1e0827482c4e546525a7d91f970e667556a20bcb226e74aa90204633969f5343206940227fd763ed86445ef25172206ce6bf9bbf273e2dc640765b2bc0e87a2076ad0c365b56abedac98cfb40a5078d7373fb5b4634f9d3a0112e8310226f7407ed6d25a0e057fa10e5a07249f02d97886c45ec181485844896726c2284eb24f9354333be6eecd9f1423838792335453c52ac4d9e622fc8abe291967f3402e2462d3b47b1fb7fb38a782f34b638001fa87c045485bc6c0a2427e243d2afa895cc8982d871b23e027e7c52c177813a9321f0aae49806b50e96c84c3eb5d2021b7ba37e1c77169c63b0e61b1d79fe1340837200169790430c4ff9479c0e610122549e499de5979902cb9b9c05c83e4878725476395053750bfe4ed128f41294364fe729ce3bafa0f0504d8d36672cf20a67f0b224314a3c0d1b001ecf30f12cc046e425632a38a82e301ec3802939804709be562502f42c1f12c2669c504f87d61958911553f2235f082623c0039e9a2124e5267252608c7e9492bbbf2137e96b0c5a73527279d0220ef22bf5fcbd2a56613ec34700fe9665efddae0c7a265f20f9d8aa20194d01acc7a343084ae7e4c0c3cdcdf9dbe3cf27e141c8671b02e5164c5cf0c80611fa95a54db62120041a6714f00504d19227d4c3d2674c68d9e837267f81d327458a15dae5928dcf1484912f1132e00f0869848a61537e0c4ab13ece9c19ee662f570692b7e3f3c8f8f14474ac725e6d427d16141dbe4d158a3298e5c659fca1f10dd8f6c5ea7ea09934289f7502277702d2f73b98b82826e6961c288d0034cf904c5e352248ee55654e46f4a1cd75c19dfe881b13f4d01e301f666c126a686e8ab33109cc56e6d0fa1510e872af0e39fec7ebe8e370387950330afc8a3f2c9c79c47334942db75565811f68a6f91a69604ee7d07894179c6f0c62f13bbea8429b0ca990fdb0a111be2ae0e0c19088f0a551a1fa3d96dad0b8b63857319504b5a24781d77207e4041284bf06080d77345fbe0a1546e8a909c7a712c6ddeeeffc923a2319ed0c93e3e913f55aac30bf012328af2e6bbc5f8b1caf01c9a437f5c72ae362e3f337f6b0fc020f26de489c2c21188ce4c722b0f7058412a80c220c9df047081deea11158908a1c148fc8c01ab4ce58fc4be42042d500a6f1200aeae4f539c2017d89e499063571b55d4437d1a3905f9ad5ba87bc0e9f47074416456ac1ab7195fc2a2492f891102e50046a2f8f350781735ad2f680c8c0a0c75ec13cc24e2921810c710e3801084a6acbc8625f02fc33409c8c8582535825cd939c7c7296ff467d702c0c2ebc98d2c247601d3894134a3e861b5cf9568d7f581bea729f0859df4ad65bb66b42e8d71d6f1c8808b3a70169c8474003e02f98117a104b503d8367a0233203f19e1e5dae9287bcab51895c66128b8e7da505ed9caccac12086847dae805c0555a7e05b07d0474992862a8a83e91baca9e515ea9a8fc5c12d9481273bbf400b19b4cb2a031fe9158f6c437371beafa78f9ae1c6c30cf9bdac2ece0795f4f14b2c64decb0bbbda8d421f27511155ebd3e4f528d985dab864095537ae4c6703d6a79b3605297029939b2b6a81d959d3269390154988a6c15056cb8e198b86404e6b1293cc6b0c8b9f92c9c5d760d1e273c582b30955947b391ba20eaa8c7a13724ae52214be7e1d53e385007c7050450c788d59937c2e7086c7a8f5c9e76cfd406bd992f595f21ee52b83e27e5180b24ca997816f6bf0e92bc127f43d48691356cab1e21b35f7c0d018d8411d5939f0f57720d6b74120cb253cdae56fa530fd940fa17c518a23fe2a117b331422dc0bfcc25dacf92ceb8e07f7e1a8960be2e2e68f9f16b801438e9cac8222f7742cf47ba494425ff150f52d9005329c3c81eeea3d0405bd1193952c16817dd9e1b92e0d8e1ca82b8317da2025370715fa1a042a6513970eb89624590e2186c3230921902b94c9f0b916ecf2e7a2e66e01096800f81fd2924968af4f8abc4eaa24cea2cd8edbe0a223bbd191d33982c8518d89e056d6a0ca1ec3f8438244fc5c862a996c51afaf1fc92e7e041717744f41a537a506d2d7083a96b29a2401b9c0a32d3903929030d514e4574a68994401a3e73557e44ba602bf559603282101a0be9486a73782d1e969f4e893bdc48bbe50d82b9f9587cd61c13a84fa29224f66c73b2a01adbe0f0007af20cfcf935176f156776db29e520bbe688c19929d2d48106d5d902bd8150aee4a82f656e464401bd819f27c3ebcc83a4a59f907b280bc9f2690bec02834cfb58b8f8fc244f43c1074bf6789a5cc078054deca881ed44595335e44f401ed7b30f65c8e2cc803d0147115c33b0e6ac40e0f0c85ebc100aae1615cbcb996527b1cd00f841cc9438c2c6b505ad04faa443f024d4a3691680dea622f0d866811ea71edf9e3b238bcef690497acaa898987d40b0d6d0be2e34951f1f2165819df40d8a49cc7b6f4e0931f6f478e967fe22940976390deda1d412321b0e434984d7c43a3302e806df89e68357a1575ee32233ea6be8f871dcf8e09448f7032f20456ada1246cb85febc9900c7ff9920da1621e2890dd178b0763bee68894cb02a3ba00154cd01281de385e8914afc54280972409057acb0e228f7bf5e287652dbe93203717b4c3ee634c71fb089b70f9030a69be69541737a56606f5802395f7fa479fc3c28f0f6468c1d7b093868a98f505f542c909ea85cfae6f65f43d51d7ad1ca3519cccc86d091a604edb3f0d5dfa427d3c3d874c790f81c6a75fd502e9474605e09a16a5c90122b072a31d012fa7d2ac6f96a8955914da73367b6d167285f92b8c9ca116dc4c7a15ef88ba29a1fb017d5fee680a33eb215a0ad74858c85fb2c0a06b28cabed60313a80f3ca9f2935a29be92b881f34e014e722d1d64bf640fc9dbb935e7af42c1f93714879f7254832eb25474549458e4313d2f2ea66dd13270ac3c90df59768229734518a0782e2e245e05b3801b59c15e2dccc6bfa1fdf917cd3a5445f0c38bdd51146cb117e2ff361761ab277196428289c221c00a7d90b64068640087ac1b0c419d6e2678b1cf1ff47920cf3f8400f2644e81f830ed9da70b1580870a409775d1c9e48130c4c8b69e043e7d530a85f0c0f8a85695784e5ee65c889d179f0a42f3785f5132192f6b5f2410139f2365441568f20b36dfd42b09d17d3d5806782170f87ca1163a9720b2cc4713a5f28a382c5f59e4387a3447b6b8a45d377e44a535cff288e01bd686cfe58fd3992c1280f28121f82780f4bc994f697ec9cca56fe31eb9112f9e9e05aa3cdf43c6077aa2e8c9d3a069b38328aafc0facc9c398183e8226a9b2998d08f9d3141c1f248e4f365375f6550981870c26c241b0c01448af44cd949b81c3f3ab0f0ba82911f1afc7670611d6cbe5c838fa5f1c3e9f25001334928e204f68cf150a00a6bf772087030d2349933358b5f82c3444ef8426514e2285c71789b1ea4d4c68e50184071c86d3ccd312120a5d5622850210eb12deeab4e2335522946f04811fcc2541412392163dcc2147b000843fcf655418b4145a8ec7f007882a480dbd0d429fd0bd22089e555e9cac6726c5434811cb29d0febc981356d02748d733bdd193997850e437c49ebc924c741c091fbcaca66891d735b0f1cf2194be565b18ca08c58d7c8008a4e0aa249cb2212db172a5528250031224e43d1a0b7ec30a35c8e68a7a06da4f5ea046e9cf30b2857ab82373039ef25ed613ee6df4e9a167b2949f60cd1c6aaa16251ff309963330ae3d1544b69c682995dfa2622753709ff812f9c8b188007ca31528f90bb920fb50cb848065ccbc9e4344614aa24e3e05f80445e2c38fe371a6023b618c3f44201da19db0e934d2533e1423e66f57843904183d0774c845af001a79516b94de5549fa346aa272de23197fe5c6decf1933e7bf3ef472222f27bfc549571e6096e67bc972952bf88637002757ae15ea154aa183a41ca90b857c634b93ccc0c85b96d3302a8b5101912db460856622eaca7bb4d8849e82b4fe2c5586f23978e2a9d4dca175ab80e7e4a6653f6be2fc441d537904a716cea252043401cbc377098564261188b8244195502477933ec68127d9b5c3e24d8d85c89c5238f058949c5fc1d09f2ca6d5a3208bb42d073a34e063f172f043943409a24a63f577d6d4a0b9b8986509a66e7d1969a4e42ff179f12a076e3d2aeb153a02d2966f73ebf55a9262ff2609c8dfc83af32b9e98a09292201d90813094ce30d33fb003849e49f3e299ace1bd95247b7c15142528284b467e6f090b457387d5a7cb24688f2343b21e34736043b6907ca1e921ebca35e8efd0a541438120e081f24a092985527b450b2ea021dc20f954b56abd1aa94deec648c19701dc09d598f26bf6bcf0593a6e7c19121f6e27868017e3ba5e4624356f4d91f8445b86643366239e860043a80d3a6a1ecf78d5ed6ed3e4d14def3fa3aaa647ad74913ad5714ca7897f2bacd9d4193b99ba5dd3b85d5326ac74b531deb051a76ed37d9b70aa8ded6ad4f0f118377789e4ca74e3d4ac75dbb23d4d8c37ecb66c99ab6a18261b030205c89abbb0dec8187632853efc71eb87991f793fd4dce177edd36a9bfa25573fc0dda67aff95ad3ef8f8d83ec2dc89f0330574dbb20da749bdfbd4ade3d44d13f7ebec5b977debb2af5ddbd6f9c2ab59ebb65b5d7b44e951a207ca630e8f1a47184e8d3b9a35dd185ed3659c128d80bb3d2add173cd01d7b76b0eeec9afeb14832e418593ab6b7c3818e473a803c57227c3caeecd15d021e55371d0d9e819eec532db053201377e207b54dcbcad4ddd7ae49f589d4ea51c3817581608082005de21186db2c72ed5b59b976ad3bc24f76c7cc55ab6aebbec11d89adabf7df8e33aaad8b5457236c84d7bf517f509e29f34e13e1e7f683ff9a4e5477bbba38fef0dcfec6f69c9e5af78974de515bf7cd090476f2c1764e106ece00aa9ac2f930bec3a6ce1c311227c67cf17ec6d16918316c0b06e30e7388dd387767e1435885bbbb861d6c967d3db9fb8b06702bdb1570b77803e1d796135bd6f9d7d2e936872327ee38cdc104dc763940b0b19b4c9b9b6d5da47e265375555b4097856b0a72984359d3d8ace02a3aae49fd4c99309bc6abfb743bb4badc8947381d3bdd0fed8a076fa613de79ed95d6d966703fee679beaa6fbaaef8e95291310930cd30853cd8fc423e06e61386daaac1bafef124e97ac2b22ac53ede2d5e5a9d0ad1bebc8897d2b7265b1b87abfec925d73bf544e84e17875f5fce8b8bbfb81c0110a47141caebb69a28bba0e4f76b32edce1c932e3183842e00840ec5b3db9af6556bdb58413e17823d5ddaee9db67b6db55a9f7ebd669e276e6489bae7ec6f14eba7bb9b7b4e5eec4a3881068c6a51ed8c9d480ae0a75c34ee3128a3b71f7a5cdbde51185bb1397dafbfe8ce9e3eb1ed5adbe69125e55ddc7c4fb3c285d99c5a98e57b7d56a9ba64a34c4764dfbda54c943895486b93b5165ddd86df1b6a5d8a9dc44886d9a546ea486e1ad5bb7cdb7b36ac9dd897dedfa7ce3fdc2fb8fdd309375cbd4d86d9749a75eeb548bfcbd1b7eb26bac572ceeedbeb4b9fbd26652963b9bc6b0ab755fb22ec986248524837c810c90c64ac1a442dc8964dac3d89d2ec26e72996cf7db463a8fda8cb8ae7af7a5cddd9736ffd6f74d35d37d57b575931a4ed5fdee655fda74dfe6ebbeaf7ebee9eb36997b8fe8feedb71907eeb6ad8dcdee75bac865dfba5be3534df7abb6bb2fc5db3a56388653b6ad6deb58f574d9d6b1ea35d3ad820d2ded851bb774ba6ccdd94cf772eb58f554b4edb1c55bef5846ac83e33b0a305a72b7514397b9463f46286ea38656574da306d1e9d6158b7b806e7ba3ce0d33376e086d88826283cd06811aaf6a84a9c1d66850233bf1186fd8f86e566dd3a5dec6d63d6abf342e16d535eea895ee987632cfb419d946c65b6fafbd3b8e699865d3e4b34dd3fdc6b0335d066e9dec6bd36572bf2960aaf79b26c2f1eed3f16a346a78d5dab85bd7ce68e3a8baebbbf1984ee6daae75c5e291c613a99bcc3486779a2ecb949a4e13dfdd7cb2eaf673ffda7533d7580f761af77e954cf755ba318d3334f8dc9d08c32eab63a7abdbbe762d938b9d48d85d02d2d03466388adb953983c7aaee3739234d86a7e63326b66e72c33a86dff58eebca802283cf9d28638d3894e180cf1291ec55f28139d21df9f88864afbbfea5cb8d845726df1a51dd80e932e60be0c418a6624071e45675d9f1b81783cc8dc7b4aa07c396ba5f3786f73a06030d8ca53b912c85b1e6ee0ef8014698fb6e1d69cceee10b435b555de60b30fe621998d6a99b99b62fc69c4de1f58de375b867cbcdf6db7cdb33e4c465dfbad42e8c3d247d7fda6d0f853bf1d8a6b2ae8a3d36e59dcabacbbd3077e2712e30ad3b6a75c35bc7deafd24eef90dba6a631bbd5bd5fa51170b7c5e29e5e300f519e9cbc1a44d55dc69b898165c64b225117e33605d44ef7a937738d4990f04b6dd048f5f2d65c787277625c06a781722e6eb818806708ef071e8aa453dd6ffb3a91c7b2cd22d7b45db75fcadc4c63fb3a91469d6ab77db1613655dbb4e97c9d6fee2ee7c3bb407756eef2ee84768e9cf8bac7639976590eafdaeefdce1d9771ba5523a0bb9d3956d68e8b5dd3897b7777793b894c5fd431aa0bacd3d0a2d1b0c59916802dfa5a3060e187451f8ba19b0f5738dace371ed3cdbdfdf48edbf44d9d7d819b6c2c4dea32385daaad53a9db7d64d9d478d43bddaceb9a1189c464bc75195c06bffbd9a64f6473bfcddd3add67d9eaa753d6ddd3c4175946b6ff56363536f7f63b8e69984dd7b8dd5add71ba8cb571b3c854eb778ddb3d5cd165c58de10a10ee721a03f198c6ecdfaad32712f94c01755f1bd3a5a2fbe3c463ecbaef51c36bdf7ee996740e5404a0e28b0a212a94ee44b2f6752e935ae9ae802ecbb66becb6acde31c6b40610673a76226338ddac8e53ad5cffd614d05daafb45deeb97745becfd2adbadc37d95705fca2a53b8ca4be188a89beb12e6e0c314605cbb144b7855ed52387027c271ba265d188639c4ab76615db6ff5676c3fab959cce59953e740c89d9283e34498e92637324edd8847f8b9fdf4e4c8e2300de316c5a189db83db0587062e106ece89ea0e5c951a5ef5916c0c5657e373fb158bf073b32816f78e5a2bdda49b26eae7f6233b1bbb3b6ab367bc06c2690c1888313c46f6a66dba9963f07e5535d53087383abdae6e7223771cb85b768d5ba78e935ba9dc2f3cf6dc7ecf36cd63d33d954e5d5d65bb1affb8178f6f60dcdf80345340b7e11b9ebbbbd6addbdb98bbbbdb5b7be76629a9e114d0cd2d70bfadabe1d56c8d592753bbb939d828fef4bdcea6fb6e1d66ed1e0a28481478eeed1ea208e0c41dafb059ebb61a4e975b5d93ab53ef84a8136098e9f00410d7cedddf7c7822c3b0ed943b5109e3e8eafdba702c9b265739629c4cdf38706eab6ed2ef7d6e166dcfcde2b9fddade611b1ff1f9eebfad9f480d471cb6a9b93b71d836c0449da189a6bb85e46e9aa5c9d6f9ead86d61e2117655d505dc6cbcd8e0b0b1ee4edce9eb4c26e1e7f6433a61d8f9ea1d4377e85094dbbbb3ebd08198b26cca46a044a11239862546144715a13851dd802ecba630cbba11b753ddcb24acddf8758ff1936d3653fd6455fd4c99cea43e6ed5858bb75e7b77d43087e68e23aa70ba6c9dedd62c5be697dc9ba8923ddfb45d91637af7a5cc75bf4dbca20aa51b6fbd6151bb3b91b9e395655716ee4ee64312a6e295b9fdde94b95f6dd60e497069a67ba9610efac922991b86dd903bc6ee4b9b5ae9ea916023e16b6ad6f4d6ea46cc8a5d378f658dc70d3b3593e926f71ba7cc56277713669bcc34703fe3ad4ce1d8e92653b6992ee1b498c28ece2ecf2d06f1dd71caaa7b659b4d277c3c3a63a7dbde56dde486d365b36dafe9c672f04eb66e9bc6695c1aa72afc2a775efacaed64ebda158b7b6d719baaed4ec25b6db6c1719bae6f0a83e9b48bdb55852e8bdb5545dcae4ba35f3245b26caa642603dbd8921bc6fe5bfb8cf18a634560ca346ebfe41ac76d0ab855170ef94ceb0253a6daae2cd476f5331a0353a671b34ed565be2e8e9499e48b6195ceceef7501e3ddb691e932b43435114e777d77dcd2c96d16e974e35c654be72adbd518c32ed318a7466632f0ddafdbae4ca3b15d99739b99b66cbac6acb38e4d2dc41f1b33c9572ca6fda95bed84bbcab6a9ac9ba6cb9d48166f78b7ae56ae637bc5e25e1a1e7722cc3ae1b440a2dad4700ab8977b69786e69617eae1beb1876e2d064c5e2980d3835baaa13a6a1ddd04cb91355279a1f27eabd8cb79ebb040c74df58364db6edb129ef5a00ee168d0e6dac4307e26e5dd5ac7512ff5c66dcee3665be1befec0c095175ea01b26c9a4cf3e159da1906108edc8946239bea810874f763ecba79c73d04910451c089cfed07b85bb223e06e8f635aa5738b9fdb4fbbaa13d671bb97b1d36d09a77131bcfb563576369770aa42c5bbd5742fdb02b7dada404bb301026d4874d5d7aecfb4d9668c6137b9845315cc249fba1a9949bed77ddf2d22049a8a259c2ee1bd95ea6a5c73b26c9abc2b1637d34dc64ed70c4b9a37349b61162c83e3c423992e53e974d9d8f12f5d3ad51247964de18e3addc8d8ddbd0ccd8328772233b9c629d38d9d699b2efb5675b937f400c543b18329d609c7bb4f757670d3818ff86459a712867732a96e385dea0eee44586d37594ca606b85bfd0ec73e8d61216b5f1739a6e3d56dddc6da3898727722ec26351cafadbbb6ab1b315eb5bb0484d3a5051f72b8c3741b7218c281b8c1921363a7abd5cd5ce3f8757519db74aa3a8d575df6eebfdd32d374b8a1cc06bc65bca67f2e53832db22333c9a7b65befa877ac74c75a78efb9a1064b4e8cdb0dbb6920e34e4c0135c01a2438d16de155efd7b8fdd2f8e897c6f0aad53675916153862319d43088c21005031b11e9be4d0dafedfe7b77dca6edbbffdc3ecda6ce36add3c4bd8c61a7fbeebe3655c9f4d38df5ebae6f534df79bea76d563ad93f86461a7bbfeedb7f944ea0b8d2e04fa1e5e9031bc10e6441876c24d37869d39f6bb630c2d64b260c40288a6d38dcb74d9cb74d5fdb7eee47edfedcc21a7796934aefbaa1a4e0153ada64bb7a16eba13db3499b24dbda15edbc96105576b0530cea58e57bd93ed0a9ff9b0c2b102bc47018cc3aa2e1b525812fd9870bae4e0430a6b4e7c77ccaeca099e62a76b369c506842d3dd95ae7ea6801a5ecbe01450ddefba379ca089ea8ef7db6491c73d09b69cc8c5dd7809af80fa49c6b2e9986e01dda1043e0901dcdfad543a91c9b4096ba5abfd9229ab530d37d3e5bbf188edaac9fada3576baafab6a37266ee23aa6b71386570da7807b11e0b83b3165935bd56ebc4cb6a9d97ee12204c21cf6223870f74bbaac66d93586f57ed358dd3b9974c27b102cbdfbaf5d8f47073e840007c29148a6becdc0bd12fb887b6c08618db8dfe1034fafab6cd3bde103241eefcd7cdd78d55b5dd3e6bbf7e0e84e7cc08098c6e9f64bbaac5b1b33c9d7d6c6b2295cb1d8a6e154efb1b131937c6c81ee5b9b4a8796e66c6b231b636326f96278ab6d6dbbf9dc630b74dfdae040f78d01df8250c3056d860bbc2c68e144f8a8cd885bd57dedba911a5e95eeda3add58c1588248eecec28709900c13d4481060281689879886a1d870a867981c0ef37a85b1198601091b1b227885208cbbd7f910c11e023d3676c6473686c6076badb526c26e93b96a7865ae659b45a62b2099934d06ee314d7684e154bbf17ef54eb67b39a689f00135076a10e178d56eacd5367dd7bd8cddd80f761b1ad03534c0c6c08ba10116056c1510e4c4ada64cb7f54b63cd7432d7c0148637abe175d5ed7a3cba76c427cba66bfca6cdd7d54f76c79b6d32dde4b10f661ef71250f7b56abbead68d58a6cb525d07c747800a01b601a2063c19c02660d55040230181eeaeb51bab6dfaba65ecbb06d0132099c28701246cbf3466d9b4ac753ae1bd95c40e1d886aba8f46a3ba8f4575c76972bfcddda1c3106cd0100c89bb138fbaccf9c6475d3cc26e9cc6b0ee8b37dc3af5ebea78eb0dc1845f9d865f48dcdd830fbf6c7c057027aa7b23f55e2e013f3c6378c780f00b4ddcef064ca6819b65d3e46edd67ebd6baaf53fd7363e56661679adc48dd6ca66f0c33d794851b0a9ffc50881c0a0bb83b51d56edcd7aeac33556e95990c3c6a33225973a7c9346e7772bf3a865de6baf546d6c1f1ed653cb69529ac531d6fbd61d0390c5e1806030c515043b4c9100d1ca27a98150d3312e68e8968692a9ddb46bebbdd7d5ae9c26eba68467463dd74eab2639cdc7f5b4d991a5ef5de734c171ee6b2e16f1abe99e15b197e9c3b71bf2bbc557823d73709239db07eb2806eac8fda8cd8ae4cd54d3f91ba4de13a383efd6cd537eddbaf869dfaf9eebed665b5dbbe29eb4cae695eaf1cbd22f01ac40be6e56197a6b05d6a76eded6ae0ee771ea6cb90ae66982e0eb936e58a92cb442e0a61b83ab93b9e87e17a826b04aeb05b7e6ed9b995de12606b8ebbabf0305b7eb61884d5d2e4ee2e3cacd6925aca5a4377e7f3305a78682569bda99a65256cd68e5963b22485c9cae2ee303c4c169ccb228b25c99db8e174997c9dcd3a38beb2679b6ae5aacbb4bac266664418deedca7c77bc55edc26c1ac329abc27b2bf7deed9d2e9a118fc73a383e98ecc9225718769b5a6dd3b1add47a2fe38d2c9a11dde47663ad530dc3ee9b4c35191991a8cbc888c431d809b71b6e5d383645ba6c8a315d86a68bf0987e5d5da6b61bb64146248ee9321a47bd91b166d93586262ee3c0ad8b66c43a383eddd7aa6daa749b69b24e178f476d467cf7327e9d4addeebfadfaadac4eaeb11bb8e3cd74e1b223998d1e5a9791918da93b6e9d2e1ccbba8da9ec1a4317e11d71342c24f7df1833c977d4ba08a71ad670ea849d9ad8dc31acd9b45d953ad570daba7ab7eebab66b1ab76ef2ddf166a66fda34b62ed38d616772b7aeaae155c3eb724f13f7327e265bf78dd325a07e26f55eee118fc77719c3fbdd30d10f5e5f1da72dcbae803ad6656d0aafafcbd44a3a4d3c3ed3a67663a2d28de195d5edfe5bfbd4bd2ad7e46ec27a2ffb9c6ebbf57e9db0de7e691df1a8aec755abfbddfae944ba31bcea63ebae724fe7db5197c14d77a99f6fbaaa9b09a79a6537a086535dd6de7dd07b48a70a1d6f1876d3f0ba6357379f7bba2d73d373d3fb7399da8d8f65646379ccbd8cb556db14e600af80e9ab2ee315506b3766dbd7898c231e8f5aab1b4e9166f10abbcdadc6edcad46eacebe0f8f4aa5c63f54d015f572bdd64aadbbe75bffbcf85b51b178f6c9a745b148bbbf9dc3b6a335dd4afabdc48edc6fa787c37cba6709a788ce1ad1eb51beb8d7c5dadf566a6f0f14884f7566ab54d75bc2657b619b8dd98e9be4a0debbd35b43367dc3a5d66da0607a675ba8c6c0dedcca9cbdaadd2c1a95b6d9dee1bfc6ea6136edde4bbfd922efbee16d0cd53374cb6e6d4656bce31b696755de4fe5be3646a84d777abaddb84f7dbf6eef5651a37f299325ba83b76ba9bb9c64a6ebc6a056be9eeb0fb6e1d9b55d3cd6a37d670bc22f5aa543a95eb128e93674411c43433b367bcbe69b38ded950c7757d93bb57583e3ddf7a67b71bbdfd709f784dfbd2ad7d8b5db7a7bf7a5b15edf5a07e3410057585cf5703526808fbb3f0935345d9e34b5bad48a88003c6abbe1353557ad32b03214204dab0923ced044b1b2c12a40802bccf4ed73dfa691048933344babd0aceab16a0c2cc42a2fabba04eeb875939b990c34ba46554d43a829520565c219da1f5520242970f75745b693ebdb443b5ba3932a4e250101883534a888800949704195c1dd3578d8a959a7c07cc972f7470581990c04b106e5d45898a955a6b0e83975e1d402786fe56e3e636632300d6d0411536361a684a5e07cedc5afdbdcec8e41a08928a50696622b3524b56783d15547846049b1858d7a348a8750082934529ad40352426632d0b86397b95f7535c27b2b77f3191bdbbd8c8d6a9b1a77f3191b8d20ced48ea0c2440949a4ed896222ca86a800c20beefe61a274b8bb91b9a66c52ed2c4d05965072eefec2c340b90aee72f70f0ba524148fbf507ea1b6bb91b9e3d5b8b7f2f9a66b7255ee76235d38de309c1adfad1c8176c60605540c4abfebee0f2a490c6f556d373c424418a800eefe619f7c7c623dcc932067e00044d8a71aeeeec0c33ead857912b5e6ee1ff609cf18983277ec4ceec06d642603d1ced28acc64a0d9076632f0838edbfdb73ded7177203edcbd070f341871bbd764eb7606236e37f399368d1b4e37bbf33a5d7277ba4e48c23a159d18c3bbafcf0933f56e3ee3742fe3b2bd8cdbcd74f6bda9decb78ab7ba9e174a935e0b6d303dc76619dc0dc95ae663adbad8f47bd977b30bc614ecb35b433e7a64e3b6ebf6b5cdc6e660c3b71a86e705fcacea56f1c28c7b26e4978addb7b0edecd675c2cc248b875e174e735376cc67455249bea36a9b9bafbda74996cba7a3bdb356edde4fac6dae9ca8812a66993f7a5ac52efa91b766aa72bc379bc4be30d4d0edc1d8d088278f627f77697b7a7777c7f340fbfc48d74df180431cdac5dd9773303cdc23251815fe2da4c8d3b4effd6b76934a211d58820ccfa5c36138afd3ae3742bf5f1cfefb8d7d7ecb9fd9cee1ebbfba7c214e8ee16f6ec5edcc119e3ec5edce519e78c2cdce0e0e458a8add37db51b0833bf3499dc7e011e089020400600710702c433104781781220be6489fb0017e0eeee4a80b8002040820001b204883b10254084bcfb844b63208820cce2dd87c2c32c79b260018677cb74d5367db586f7bb3a73ecf719af6cba61a77663ad6eb7bdb637867559728dd318e6c006e8c26d66dac6c9b4c974e18ac5d65de177ffa1a539e1678ab7b7d2083fd3661b0ca76cd2f8ee6660ca7c0353661b5b60cadcc60da7c836b43427dbbbf10253a6dbee312b59707757d9d26d357dfb9a2ff262386db1c66b4ba76365d3769d4bae70bbbe71a0dc936d36dd369c2ef15c654b17b7fbefdd78305c2cb6783a93f668e5ba9b815bc3abdecb3d5de2687c5de351dd4b786d57a57eb7caaece37f825c2f1ca74ff3d4017ce00a4490afe4848e2e11ec3bb35be3b5e8dc9dd843f24f79fa4a3a43bb5758645022052185d3c1e759c6aadee40104b385d46a2e1eef1eb2e61edba7171c3effedbaf6ee9e097b884d36572ab2e9cda3addb9d8b553375decdac146c0bdfe158b90b01021391ddef375e3546dd33a367d77f38e4d99af6b07c3290b073f533c362dbe4436fd50c3c31c292212891ce2cd96c5ae9d26c29a4dfbda15d065954576ff6dd65874ede02dc3ac58dccc356e9d2ffc123f84390ae0ee823cac519cbbeb62992e0a1020408080014475bf6edbb7c271bb5bb7c97493cd149ac8a6ce3899c629738de1fd4c991a4f13f7db7c779ceeb74fc3abd63a865d3ca5ebbecdcd5c63a372bf49f70079f1ca5c5bf825d3584f65f72a03f0dd7f77ea6e5fc44de7fbba70736afaf6baef2b87a7eebf77c33b6fef772e09afcc62116eb79f1b178b70b118bf6eb3e98461679cc67a3bd9a66cfa66634da59b03dc2b8cc055a974c236449ce9126b4e1a81ab72bfcd188be02c727048d7213a87742ba76e1699c26b5cebae70bbe3c06d4ce3544de3cd346e66fa2ab7ead619620915a2434857a12184541f74e69fe464f01ab87a3d95374b6fc2502f7f4b2872bc87cff3402290634422e1277080711b28509de813f70f26d87a0fa2c0bc2353684fe60a1ed48dd89aefb085283fd1e474516a61d9d09bd2e72af17825718a1c4d0f593f37c7cb0dd991a1bdf41cbdc99511e80c34c6675803e907a9117d2ff221fce107282bd0748786b243ea57a95191cf9aa37e0f006cd0af01abcc0a14949cc6a9cbb92089f26285383ddb960032991310fe6990870fc0ae800b1f80f95064f2bc58012f689549706e36ebcfcd04a0e0093c18cb194e317923aacc77c2f67c970b6c9ccd542007a42af0f64bf7369cf754ae4f35cd8bdbad37e443102dee6e743e8d6a0b84eca9a63b0fcf2fe9b620c22c9bc26922ac74351350c3aff38984e9f0dc88fbddcbed7c63edc67a471a75707c9a48c6b269bc6ae5aacfde753bc98e47fd2722049a7e6e169a08bfa926c24e17d06dfd5aa8ef8e5bb434e7511301ddd64fbbf1068489af6be3c84cf2e5bdee4eb6e956e10d3b59367dae7f6a4a87e7a699691d1cdf9d26aa4f7619bbc8310dd7c1f1c51be6a059d64d1f5fb7eca8eef645b178dc03dce37d6fba8413c0470c104b99003c1b00f7dcfd8a18c030f7d8696cd36480347efa68e1a3678fd81f91bd95da8df50b054cfecadc75d1e90a81173d4e2c75707c6013f20c91c5044fbef2b5979d34118bd1c07b2bc14288c1aedc5d0c76e4626e0a1773db5ccc25ba983b26e0abc25780353623d6885013228d1a9ab4336866cef8dc739977ab8899c9c0d7d5e1ee0132993cc6ddbf101c6f18966ba6efdedbc531937cef869def6e3a5b28deaa65ad7617c11425c6e4a28bafab341a8bafab64eead365340bd15622e64b6fc200c736c4f0033e8ba9877979727a72d58b0808200831af8e28505e37d3053ef4c17f6987bd46209f8a9725d8459f9d171f7c445ccafe9f7ba804e18e984e156ced1161ca298abdbd46efbb6af3376955f7db4e040e3eecf378efb1a94050b8e16ce4c06ea77b7edaa2f88e108e0444a57d63f1ec68ad81ab8dccab45585fb1eb15582bb6b87ca115ba6cb2488d7d5ea8eab524745583665a94296946501679d4a345514b13e45fe098a581f1567d934890a7a1214ebdb739febd3ee300ead7e6de1a5d4e4baf8ad9c4865d3dd37396922a674f0e6574c966c474c942409eed8dbf5dd0344b2c7dc3d3b5145a9705ce5e12ea68e89a90674516d573f5da68bf04b3c9264a2ee04468a8825d7dcfddd33912141a42a779753258684826cf680e1140f2d4ddd6d5fb16807bb1d15ac9e851815b9fbeb6d6564cf94dd79c5a291990c2c16e162910ddeba8c2d5d61c0baac0d2d4da5638b37bc5f3c986e8c2d5d61148b46f71c04c80f77311bb1ee6be1dc86580d53647d4ea4bae33d07bb35f6d4c0e22e5663cfddc29199e42b16b7ea64f7f1c84cf22d6b48388ad1884543902e96c910a3c1c3ddcbcceac4664872f8159bf1466c861866922f18434c86ab19cf197cae8b3a4ec9b6f3b9fdc6c464f8d171aafd8c71e06e65a8c16232823b6e37b3e9b2fb6fabf16e6378c74654c781007e2f5b222d3c221828e0c5071188034b56eee2e860946208811f5f6b4f6cc005037525986240d23822a296870b2c3681c9c1a3bf1604d022a46a2d28f952840d042c308c75ca2864127238a48703a4a4a6365c3a471a8db72e10a0a10f0fa20cc3ccde6820abd3e90d0d6586299f20bd3881414230d0461d1e47719457452b432f8394b0629ada3c25589d5dc941c252afba2029c06ccd78a5f7e17881c78f0b85e2bc3a9ad260e441295ba21ca41a93624d03f6209784c0321e637c7aa44ac242112f302a23c0281c303269af0cdf0718c611775a917adb82c76948a40c9823ad05955204dbf4c8b1791921f10120286900015ea91c849961eaed0d9b9763a0974077794488769e0b32d9e8c3c3551958737700592c024ce73068a547c09683b6b337481ccd68c60dd08333e323c1aed39ea73492a0e481b974c55301e39703625ad51399e01e5e5336314186392383945674e102db8f488b3eec01a4e471e78e1608034404b313345df804f72658b0d007e202af9d455580a111aa362231c6a0e1a2296dce0812521188a03a14af35f41a00a0a8c0018b4a0a351be470812276688a88f4489e2e0d3ec2f03ab421091f61b020f8c6490f31cc32a588c0d0126a518b227c45ca8450fa9226c80782825442a45d0b0a4d092129038c35f06bec5b952b9c0c341ab73285d5d6451a5d65abaec6dc7cff9c7113cef1e668baadbbffe312d323c34a2946195f676b53f94546ec6bdd1750c7ed06d4d34418e98497c9367ddfbed024402b04675960ba67162cc6b34d5537869d2bdcb39f7bc6b1bae7a5c711cb6393ee1770db91c96b6ea41fb13c07c4ed7c4ae9cf996157e7327e63572399ce37093b9b9a4927987d539dbe2edd565dbbb7b8bdbe7b5a8de16211c974be7087d835551e6327f3b84cc65bb9ff386cc02362786a2e245462777bc4ec5ce53ef7ac14b353f376cfea18b13a3cbbb908ee9b55dbddae6cbb7e9aeb780602fe3963f8cdd1745ba61f8e75d93743065f0c182ff6f4f25ce0d9d5b560b142458a39b938b837b70f44b3b25e1e3a908d71d8a02103860b167af5ea15a0d7d7106361ea871fd68b178bb8659ce2319df05a08582f99bead85d870faa6a66f03ceacc82046c7e3ed2055c8f034556ddd377855e9c452807287d1e0e766d1ba2dfcdc7ecfede79ed300622984b8fbd6677a2b53381fddfd8deefe29c65c17d3e6f434d9bd34fabd2ea07663edc6da3ddfc8365c590359a3468d0b35be0c04c0100084985c0c07a104b588c5794a3b2382209e99b1627171f04b8c9d4ca49a845766125e991fe0d0c08d89bd0d719675baff8ea57b7ee19ef7f4f2dcf3844ccc2e3cb9673c663230df65bb170bd678b3acf36dbf2edc9bba1a994eb9186ed24dba796abb6378c7489929ec64f16ea4dfebce3d9f6f752d9e918895459b2ef7f6ebd6b94df7c58be174b788dd986ebb55a6dbbe73f0bb91cc5db793ab0b23afa05331e7968c5d3bf79c62ceb57bdfd477e3b9766cbae35cbb40399575ba3196c93865c26bdd66a676309bcebd5f3350ce75f7e0bde7fadad52e30ad73ba6ffb227edda68e552f30ad83e554d655b15964cab2ceb9376e5fa8bb7d91cd101d90631097e1127da1fcf691dc509c5057386692cf3db799602be1ee45f74c22afe51159c39dbb1d734d59b82cc24ebbaa88b71ebcf7dc33c50bd146adcc5a86239606452c2d0642a9558a4a780007e572f78c5c4db8af424d41e5eea88c66de9a490a7ac572f7201a3169f012e83134c2ddff84141a77509274d9e3eebf245505b257c8b6c6dd730bb913a396705852cbddd1054f1cb1ba82650f2477ffd252c5d64b2af242e1ee8f288b212b494e9714b97b16352b0a0f5d57428d7077e19623589665221c9ddc3d6f03885e3196f85442a20daad124c7a6d7cc2c4c98471eff59e251b8bb87a38ba151593b2382308b5df715be12432bb0e33598a54d37d3a41170b741466efe7962662372b1582cb62e8cc3b8d577c319dc1dcc3d868b815805bfc4f4dd1ff2874ccc66f19b365f278be79ecb3c2ce19e6c7b97c6a9fadc2c58f7dc814ddf649bc6f073fb81407b6e16996c551311b8d5d60f2d6dccdd0378e69037640d6e6244179e33640ccfd709a7fbdd6bdd75dd716cba2657d5b962ffad71cac26bdf6eb14cee3db9c0addad97e6b1b2a5edb17696774172cb87b30eb0aee1ecc13d8f7954bba59c21ada99138cce0033310fa67208310f78390284070e1a64069c7ed382ace03125101b8621c8079e8481029980518cec455fabe9c4c6ca78897655d33778f7a578f0bbd7a7728de124df117f2237c4361470171b730e96dc5b772d8a71e0db3a563d3c95ce4da55b22b681c8861af07e1f621a72e8d9ddd1edc1d9bd5861e473ab735b6d74cf03dc3dc087107f1f922ffc6a8c0f5f75f1e12b2c5f7f22832577955d63b8ffa9b55d953bcefd4d9572f757deb1ac9bfb9372434b7ba6efeb26e26cd49a28b567fa860adc6a4bd7be7095a03e7972ff4e9c8c3b4edf4deeafe933b93f26f7bff4b7f6b9bfa54a94dc7f9224f78f94beee0fc9fd1fc1c1d6b573ff46eecfc8a95457f75fa4282349bab97fa278bfc9d685737f442becfe870cb9fbbbca96cefd0b111ae4fe820278bf40ee1e60335d3df70764e72a5bbad76dd7cd4cdbffe3c7fdfbc44a57ef4d55c070dad2bd3b4ea66fba84e3c31a5ff77db71b1b9b4ea3fbef69fb5636dd3a56f8f5e4717f3caeb2a583ddffcedb71ff3aee0f00cb3aedc426c070b2b131b0e64166d465f0d8061ebaccf8441a97c937ddb091180465c2847e9dc9e011a10831097beeeeb6c20262120a0479894588e4ee71bbf5e2dcc4204031aaed86c5200c95ecd6232ee315308eee848ea189afee6bd798dd2fd3d59b4d35318e371cafcb954ddfcddccbe65e99da7d9bda060cc06d77a4c174f58e1a5e59785ddf38deb08de391065edd0bad2a93add36d01db15769380bb0ddc36e4e2eee08a4523cb6ec062b109d3b0416303ea326de6f6c1fb6fed73d3441b473fd755e1c6b0faba80ea865b68e2aacd9c3936dcbac978c3c7a331dec723bc91b19b26a6ab2e2b7b77ba99ec4e89eafabefbcfd5f01ae72a372060bab5d2d5e96693c4f74d931a56f75faaa62e8b749ddb9943d544386ed734b99bf0869b7bfbb93f9d39bd8e47651aa7eaaaa69b07013ede8a116033132350c1bd697477132e36008fbb85136dfab7d99da78fb033de7d47bdbfa46ef797e3fe6b44dd6edde7b29af86e75bf6a9bc2f186ebd435c5db7b4e000222ecc6cd75659bcc74031e7593e944ead4d5d34478095882cc832ef1ee956dee39dd417bd07b2b8d63da846eaeb131de6c09b2e61a8f25d9346934a175bcd90f1f74590c3bdfe3f1a889485d46d65c63edb663daecc9be29bb3257e76b16b769f2c8a6cc176eddb5b9c63a4d91c7bfe3335e5f777d9b47d8752f34d7f85dff2ee81d3b9b4cf7787cf7ba95da4d8b09f1dc77ebf68909337851dd4f1d698be02c4b64cc241f9c8edd764cbb6f5c104db1e9dc255634fba0188a462c8841175dd469375677da5fb108bf4431948818caa7e13e98a9cbd63a50626816cb74b429b1acc0ddcdc4fe95d81f2ad345751301dd56976d55ec577ff76ab684d3a59998cf71d76d26986bb11808027edd393fd77d5bc2a90a186e9d73ea66e177b78077cfcd0276e19774d93775bf2e9cb678dd3899ceed3df77cf7dfcaee38f8b959c481db0e6ef79f5c2f43537afde8c5e7baf8a2f5e2d00b2dd3c5325d74228b45f8451aa7717e49f7c9ebe8ee696ef22a83d35db360a6b3d5264c309dad71d71d5ddcb5a6e3f46dea12ea7e775fdffac64ae556758a9ad065cbe3e474ed41eec1e9e2e1eaa12174e95ca1ecf4dc9cc562722d169bb0badb17ef2e1699c940f825bedb8c990cc4a5cb75115677e03a87ebcdb840a45b75e5fee1965dbb6a5d6c1118338b45d856135b0e6c052003a6969a612d28ba08ef358b052ab478b97be0364b5f676a41b3e986759ae774d36d6a54d7b4d9be80d395754bae4d37b936ddbd78eb6dd5ad83f79e8bb7de6691e98e5d3bbfa4dbe275d9147ef7dfdabe789ded8b66e0ea166f3d155b0f76b2cdd7a9a7b64ee5ce735504cae5c5a59b8563e1e2e64e26ddf2daddbc03dc764de6ab62c7b16c0aa7f6c74cf2a9c6cd229dae5a2cc6e2134b0e3319c84c061afbdab52f8d61a359aca0bba3716079c1d1aecc116969672bfc849770aa2270cf2fb997f1ebd66dd54d3eb79f99591c8b38156ddf0ac7b18853e1c6f17e6378cd7b5fb75d26f5f6e276c34837f78fe3eeef26a7ca9ce7b2491d18375d37868001f0ca26f59c8001708a44b64acda6ee9f23c3007491a9fea6bb7f1e8e87d0e01507f7efe0f6b7fc83990ca5a2f3b26baa9433356405e2371f83fd369fc87c60b82a4671992c3ed3dd83feecfbe568ba690f3f65a0bbcbf0a1aab33870178bc626bcd737865f621cb85321711daf8fc3fd5707dfe7feca571fe9fe69d8d1fd8d68dcffc68b19a2ba936c370c6f63c6427c5d6599baff5c669bbe3de37755efb45b9e3bc58408afe91b576b80bf8247a0cb94228ff787a451dd4f3786050c685dddbae50d4b79c28174370e4bc5b92f936972880b09a2c4dd591f92c202bfc477388ac890946e77f3ceb51b6a22e4434d787ca8298d0f3579f1a1a4593ed424c5879a8cf850930e1f6a6a7da8e986bb83857d15f8ba84cb879736f9f0520097def8f01297a125a50f2dc1f0a1a5371f5a42f3a1a5073eb454c087955af9b092241f56ea53e98d0f2b71f16125243eacc4c38795581f567ae1c34a716161062234081b4e08a374c98794f6f890921b1f52f2e2434a50084c5ae5c349a07c3809910f27ddf1e124393e9c24c68793b2f870d2141f4e42e2ee391f2060e0d09a0f0f69f0e1a1063e3c44e090fbd0d0291f1ad2e44343887c68c88e0f0d89f1a1212afed5c0900e1f1a8a7d68a8cf8786f07c68286e5820010442507c48e8870f09a93e24c4e74342743e2424c287841ef870502f1f0e72e5433e9b7cc887910ff9c0f1211f2b3ee413c5877c8af890cf0e1ff259fa904f0d1ff2c9f3211f361ff2f1e0433e137cc847cc877c02f8704f2e1fee61e5c33d9e7cb827930ff704e0c33d717cb8278d0ff778f1e19e29eeee808230c18021010307c4083868c060c1d7707f1aee3fc3fd65b83f5f8b329e22050a982ed1d49324875fa21b379f6fd2bdcbd0d371ff89209e9925f7dfb35de3bf4ebae097d8898bbb4e6ed54deef58d97f1deeaeb02c2708a97becb8f31e561bc70f7773fd316aedd9a327ec174df39f7dfdbab9eba63d72e76ddbcd65dd52dc7a6ee9f975ce3cd5cc6ebebe6fe2efcdc3df7c7835dbb3b770fa66fee6fb7ebdcbfcedd832d822c3635dd7d93dea63877bd69eca8a9972b7787ddf6756ad2a46991bb1f8f7a65aa7bb3ae9dcaba2a005d76bf3dd9f6ae7d01abad738e6553a69eebeebd0d3361196aaab0c782d0d010932b13bfc2dd1fcf2bfa47efc8dd6df810d357ecdac1c5b0abc22d76ed9e6feac683fbdab5d94cd977ffdd89bab4e6452e05708fdd56afc9dd6e3d87a53f778793305debbe01ba2d5c778fe9be7331bcb670f7e862d70e70cfb9ee9e084a9dccde5c770f4e55d3b70c9440b87b93990cfc007fa873184ee6ee30d40daf71fb6f855f6772e7e1bd78b2ab8ae7daedbe14cfb5cb8b5dbb1893c6ccd49d7cddb9bdb9f685bafd926e0b75abed9a84771e9d9af756a7ee259cb27a31d4386dee3c35de31ecb68861679cba015db5959364e61e6997bb1323994997fa4fa770747b2c9bc2451a1269873bfcb755621c9ddecb3da2565977f9a6effe73894a1d98d6115b57c71676ebfaa55ac96ed88dd3c5ddaeac66ba71ecbe69e2aa5f67bcfb9e291356ba709ad473e3f4ebe2683a75bb9b6eb1057cea38d5effedb80ae0a4d54b7d17db70ee37e9dc90db7eb51b769b2cc7db70edde1c9b2e97e3b28e9b485bb3cb919dace4dc59ece93db7393cb4ba1e5def49ede8b3a4d6c77d3158ad1bd0aa1844fc1c475acd5b4510dd7c5776d04c275117ed32618234cee0ea7fad863c7516fb5c78eec8c94309dad26a6311c3b5dad74fdf65b86d47bb66e9aa8894fb6758f3a3dba71dcbac9bed665d3e351c34aa5bbd5f4ddeb9b261e8f4e57863e1e8fba87d6699cc6e9b2b758d4656ccc75a9d74cebb409adb5dea1b576dbe3f1a83551e91e3f9c85208176f681659dcd6572c74c3749443a97f1daf7e143116ec6f1f2a8f7d6d344a7fb972a75bb6aa5ebda69221cafad736f7888c921377722070ebaa8aec63258b95fedbe7b461ab33b2e0e8655d655a1a63b4eafaf5d53b5ddcd40b9962eafc513d70e7e6e16aedd73b350e3543a37d78ec2a0163e2c64a5901077f7013b868472b9c3ef934dd926bcc6e9d4fdd3dcfd5fcefde3da17aa6b7707d7ad31ebac53b7fbee19ad6b07d7ba49778fcedd83d5bd93bba9b799a95d7237f5d0bf4156868202697f098236b24836e6e7f6d06463c5621c91a8cb7668adb576978063c5e27edd58afc78e0f1f3e7cc81df2c4015c717762bb6a5775eacd05a0e6aeea8403d00eef55a57b129f3131b6717401f78e34f4869d71aabe29e0ebceb57febcab22bb3ac751a5bf748d4046869c19d935b605a572ceee9d8fde1dc3df84714d16dfbe8d2d7990effb8f9c3c43dd93adf58973d94a11f41ee7e8c8339a4afd32d6d32d7adbaedebdc7e2b7b647e328f2677e790adb87bea433f201c8d28c2ccec99be6fea4f867dd8f856cd867da20cfb48e853c09d08036e3b5d06ca1757742f36fca2a5f34bba2de25d17bb76f0de737a31ec97745b00ba2d62e79d9e9b9e6b97bea56fcf36ad73ddbd9df78c9b4c39bad8b58b639169fb42ddfb75b26b3aa7b65bef858e15deefbfbd5b2ea047937bfb3a9146d8c8b269faa6af331de6f1a35fb7081750398085b33c1767c28fdbfd37c443004f1000037776dd5165a7c9f00ea63b90ee0cba53e70e1c7766922fbdc3e7b1b3797c616797efd62d9bb3b3c7ce14788d53a56eddb64c279bafab3ad3d799066e63fa3a536632d055b6743bcf559d7a6ee9eb748b03e5d2d7e9060284fb7f70fff475a61f8875f0f1a8e3d4a8b556db55a9dd58db38c27a471aebdf91b85f178ea877dcaf0bb712b7ea32f5fed3c4b5e9c6b2291cf1b8f79cbb77d4ce66ecdc5be92a895b59e686b7b7d2e8c646e3de4aa3ab6c371b073ad7a61b712ff7884a57ef1470ae91d8ba2b9c26beae521fd7a69bde8bd865f58e3a3d1eb5ab8b6830b4992ec2705ae9aecb3e97f54b96c5afbb84d574272f5cd0ef9abe4e373a3cb7964ed3e1b9b56ed3696cd3640cbb4ca61386535da6f66d56c96e385efb5a97d570aad3b2639c6a1326f45197e9189a086f7575ffd2be16deb033b9f6b96cecb27099199cbeae723bb7d3c59ebafbfad23da226eee7aab6eb66beaef2ddcd657c3cc2ed53b9befb4fbb313376bac854abba7dd3cdba6e53b7ee1a18bfc9d48d892fbcbea9db6a259d8d63b1f8ee238dd818ef3e7d3cb67bb9379988b5b41149e53ba6d5ddf76e66ba84b58e358edf356d6a32fd64dde618bcbe4da69b241b53baf0f1a8d5bd4c3a61ad5c8fea1aaf6631bb3a91f00ab85f753daaeb51abab516557a7daa6cf368ddd36855576af2d8ba789ec9a6ab58563a7dd9dde8a142cab6365d3f5ddf056e5eadcf2e6744aa789ad0be3589b6ee9eb7423a6af336dae4bd885e19ddc2d11de6b6c8c5d1626a6afd34dbfae53d5b1cbc2ea869d2b1ca7db5906a7897e4976d56b33d5c7230c07139f6ffa479cd3444d8cdd165ee13685e9f0dc341170af7f5ac7ce66bbae4db71877c4b599ea77fbbd2ea052e912b51f9cc64aa59e869f9b05716da67a9a18a7891e3460fac2cfed67dc3151dd1b7637ac53bde3149ad8946be106a7d7ee384dc2799ad8d7ae6f0cebe39a32761ef546ea74fd0bdcfab9fdd4bde11e20865b8e432c0e86577c68c5cf3d6ef75fdceebfd8081b5dd509b7ed38659bccbd07c74cf2359949beada73af56057d9d2b5e9323db6d79d63d9148e4de18ac5014623bc5563bb55755d1ad7666a6cc2c5a292dd70b1d8965c59a413afd97473f78ac50c1a4e75fa3addd8d2d7991a7330d5b6259caa60e2493341e34ed4ba65a2c25de19449d812476cb3b9040a71095f0cbb4b2560d6a5fb36951cdd89ea938557d74e895b1257c4d6f96a375e01e155e3f5bd29ab912e8bd4ecda4c02a6d9d7ae499aeeda25a1806c9d6f1aa77148a020518144c1115847c41c11e2ee1a4e976fd37d9bcd5485dd8ec718b075d736a451ddb0b34d45faa6cd3635dd4b373785514df73235ba7dc6adba755b75997a46d81881e1c427b26c6fa53e36d7f85876dc5b7974db5b69dc5bb9b7d2986eb6b9c66d6d6c7bcfb5eede4a63ebae30b2081a77a24e35a0fb328bc01159e54e74e3cdf6b52bacd3b86d8fed75e7888021c270bb37ecd43b0691a6bbffad71737d9330910e44a633e9aa9a752a9bec5ebac8214a868c10124ac8122121829c0a2225085b900040f638f1b88cd767bb06a52da8547108f7c19e854c211a01040080820ec31000303824180e488462d170446f0b0014000161c4d848a53095875996c31432c418030000000000604066300c00851be8903c5653febe17452f432bc2628981141d5394901b58fbf31d21b18f9f306c111e56d26b4747361019499a02f5c15968194d87a2bda47baab470fb115de9ffc229f67005f338684b3f4e6e8aa743b6cf592b46a482cd33672fffd90a7eb60887219f8d77aa5f2d68d782f167cb07839bc569c267ba096cd21b49f9b42efa4e5c7afe9c74837780df68c3340f5911f262d41c30faa794deaf59207360471dbae14d3343b4e44275e22e1e300db1d03d0b95d29268799f5923cc460bf9a0c490c407ab2bc7920e586890f34f1c47194fc43bd008cf367af8d27ad275bfd8c16f553c429bcbad9e922520260ed2d956d4ee3ac2e814cb6b849ea185af92bedf0d1107a90ae243c4c69a123ab61b14e165b8f2b499a8c8037b391eedb1ab5bc5446024285ed346506352b772a9c779af344c524a83698ca428b310f43645c3cbdb262f71f804e451980e2cbdc5a4f029e287c5216827e62c8d31ba5f3fa0fd0a378974d73e99bccb1315be00ce422bf69a2c27a39a473a92bc61ed03b7b0d1f414eac2504677960228d20e7561dabba8d52da260b4b9552694ebbfeec2037db8f24e6096405589269c5c80cee3532d0d0ddf2a8c6965c039ccb295c551201b18d8c0af55eb5b01469fa0ac18281fe5c2306d59cc130e286ffd638e4b2895e22e30ae522b25be0d610c21b70b305981f9e1aa9b329109538018dc3832a1e8d3fbded954f6399f1229af003a9ea4ece8db50dd3e1af1d3cfa544e073aa4264a8139d96e51bcfc107916771728ab15405d0bd984eb228dec106a2556b451403cdc1f00daafd43a305d93c3bb1b7b6b210db26c5c33b53a45ea77278005ea4ccb8125f536ca7a26f5ed738225129c05f504f1542a888c21df3dd24a680fd0b4307a020ee2908827cd8be33dee9c911958984dc0e996f208b394e7965a88e9ae22fe6d126ab612bdda7e9762b494f4924e504d4c9f0db896a2b3df95621b03ca0e545d6c42d2650dbe1b34c9643f437b1cc0776e6a2565f91a99a55916d9a56bccd2dcedeebea70f2d03375ffcbc729ca3bc7f3e4a30f504bec97923f8856307e5eed7bc76c4cb7d794a4e685963f1958ec04e1f3b709a83dd2084c3516b3dafb4cfc56dd346f81d9db7d1a8d647391687873161b81c16b8674ca33c44e0ece8f165b8ec14fb70be1f50db568946d10d2b61b5b15dccfa5b23a595caf93d096fe975a5344f7a10f3e1c87a698ef7c90560fec1c3a6a21990378749da30b33572fdd3a6fce3b372e330761f0227166843bac1565d39cecc91c1b2a6321c3005f0a232c5fe068799536a228f50c1807897423d763b06c603c34ab97573c0068741d18a9c93f0346ac6560c40a068e58c500106b1810621d0343ac63c074c0f6b624d9a6b983cece53290466303bbc4cf8b94cc37e601d84ac9fbed0bdb6dacdd3f9eef6fbeff9ada89aa951a712b2bb5138d3c440f1d287ae86c2785ee9f0ea70f1e4b74a0fdf6ff13bf12bb04911fce5619b51178522100977526c8125562fca9952f7dcfe003998825f0cb215240910c703676e23b7cc1c60ad8bdae496448e6522b282e4421cd6e8de9ff893189b50ca9faa836d9c04e1bb96c4d6dd6359b332b3f420860f32e7f113e16c22678a62867013451537b71c8e5eb56faa68873f84f849f0dd0c7e0b227086eea336cb2ee01212ed147f8b8a3282e0f3bf64f0e277be32d2ebcb548ec917df4c9bb03c0f3d5a8b790bc907885d8a39a3ec19e534ff7f4aa264ac374b11ba044cef8fd50f5b90ce584e96be29646b0887d08185f5a8843e0301ed680caaa45c72c44be2c5b783a53cea5effb0d4383c85648c9c2d704db763a3eb25b2fc36be0b3a974e024316007a822fb4c4aa52564a29f0e447db128c93afaaba1dddb5de8d7f2a6ac9bf37b9eeaf8f0ffa6e1a2c23fa2db84d5a3c80540524bdbe19f8d5323bb7eceab6733301d480f4b79d6f22e8f07e88b666ffc09b850a16ab7b104cfd768c69e0028df714f9ef48164b73c2fe0460027f478319f8f9cf4bab7aa9124ce508600ebeb24f14da05e1a59c82e63ee972ee94c686fb93e0c36986a3d5c065fed500e056e81c83436ef2b48e51ec3462ac6d172fc7fdda48dd8dcc82dff2bf3ffd4d1d9e032e11034a18378a9df73044feb2bbcd73b0a0a7c473db5da3b4e5c137831d06c35ff398a0f5399a63ecd8cc87dca8e772605bb57d11fc7066c5914cb09deacf2a6e8e19c1bade2fd3661215e04b8cfd2dfc753120a3feb333cf57cdf841a77135ab989c7578581d89bd5492fa88396f88bc0165b6ff64f0fe6c81c7b3813ae549e5cc0fffd5917689568f546fed3b3d748f4d88fd343a8006bcda7c67c88dd80a53262ac11bf28289bd1886557fc8358b8cf65cf0208eb1ce5e52c0495cfd22609eda8d3dd62ae607f4dfffae9af73368cbc9ea9473fe974f656edda0cbffe74d744f6c62e3bf70b57ceb479e3801c1aedaeb82d238363643aedeec3a93a1f2636a7cfd8233e60cf77a64b1bda5876fd53adb303d99f8fe0021e7930c656fe8f60a4de6de887daaff697f45425e7fe69ad574ee77ac5dc2cd7f387fd95664982ce6826ffe04b4b8d3152762fc74e1f92748eaf337de890a4906bf414a3c118a8d8ba08aeecfd8800bd5f22bfc108ab65f27349da524aaf62859f94b2579cfeefbaddadf3dbc7fe9b3486d0bca9d3affd981c20621cf3e7034504434d2076c193b0fb24e5e57dc61dd68833d929fdb94920fb35ae11009556663419e44b1a7462a8ce35fc9b6f4e5b136f7940eeb2703abbc95f81502261871a163b9379e3313d68604f7f5a4a732619301b7701f3e5a90eb53aa082bf240f9509d25c855c937b092f9ac47a9f521731ac3657d6897d5cb28711a003238efd15f13231891215cacdefee46831e93b7468ef63b2803984e36cc78503bdcfc467acd3dcd2d4256bd11e724064e983e83a5ce157f64e7dc0dcaebed8fc647e5f40b3cc9898fdf6fcbfac97ac12d5531cdb6e345bbbcc9ec490091834acfce548c2f2e52a7707141e570d0a394baaa28cda09198dba2dadc9e5a7f8e0fd2969653db9b1da61db9826f82da57013c7e8f2e031d4bdfda27d4fa6223fc14272832154fd863a06e9636e3555bb53119be3ee07446e5b1eb9ef497f75c59a6131c90e02604c1c0e805fd7a4f6120aaf182a8f3833fc22b58cf1c110b820c18340bf397789b882bef8c30a828c5990735468c8ec82ee9bae74f606411e3dc79f5d13122eabbd3783d1f5f6a375d3b0abbd8ef507664152f603ebd9174bdc8b77992462e022004733608d1a311673f5ec4bfff4398552fc2ffede63f90dade02190bf1b12c226042c35c2d806168d7dd266050f6c983f8b23e70bfcc8fd4207ffff1e2a5f3c226e80aed96e6bdf7bb594f3f7e7887c5bda478a463e372c230ced57883e3730e570a49b893578f565761c4055e958a8d317226f826b34abbc6ac426aad58885e0e95e1325fbc6c9bcc091fe4e33e9999563e4fa33a9000ad23580879eed49942f87afbe077e5cbee705eb99fcfe8dc860186593c5e68a90f4c1bada217a020387eae5b2763684773587432e373692b9c07938a1ebbc86e82469da2e16df4d860b260726da2cb72b9fd0dde154bf9c0b7d96d37fdf0206add84ec54c250933a2b7a745e3ca3e369409b8c1b4950a87579d2e20cb1270253d6aa8df1db3d060e6bbe465a86bbfe578635e56c7212a68a0a0e24aac230d0cc4d7e40021ddaf57f3079f51d7962174e9cefcc066be3eb17a09448a7b1630acc9c3f1c2702e7bc7e6c1dec852a6d70710bcedf4e3e47fc5acb50eb827f4fe24b629d0824ab285280591afdf8d9bce91b3833ce7f7c19b103286bbf6c92a54e7d4fdebf89a3e7e86e87fc2772277099010f9d9767666e2ca66c8e02bfe6f2c13ebdd639d5de87ea26df861e9382a045ef4ea422bae87e86d8d63e716f4cc2267d5cab959121e2c0bfdf73eb201226dd29ea7e38fa689ae1334d1933e5ad399e82d90d21fe4c86fb224b1e4533344afaf4baf0b0cf1c8378d35fbc53ae1cda9fe8af8be00ed4f98038d43a69e15b9c503d490a67265e816237ce6e63196667fa663f78882935b5ca5efeae4c51623046f9667fbb9df70afb23539036939aee16178f2815b795994a676059635eeeedc7bf8e381e9ac6c99cdccca68d09906d5df0805189f9dee7d8985bfdbb749f1ef476141e0e69d0d39323afbe1cd92c472a4b0fe603c59f23b26edd73bc8095428c6fb6098e08228a029fdc7fd3b65a334526236690b2298645578a7c902431855862eeb330bfcfa9dc4cf137bce43ba35249822a6701138b33b299025ba8eaba27da05330b8f3d6e0164b945ee304612f690d3ff05bdc2fe9273e1d0cb13d2a2375f417cc10f26c2b1ddd156f13179eecabd95f175849dc7ab727dafd7d1e5ddffbff94cf5cfdb3f1d9822fe313a2c5c07a7a1c2cf970f347b9cf8f3e46b368be9af056d216b97f414c839db60317f2b705c5d011793827b84b4bdbf130a5b6bab6f0de3abda6cc673abb4f003db3bc316fe4f0865c623c5ee7cb1f47af7ebcaeee024eebbbe4a06acee74fbcf791b60afb4416c49ebf8ce28113323ff92b23a5b1e688bfe795763d37da91b98bb769d135fd24cde412daee4bffb985e7b0034697f684934f5fc81863c7db8a8d5fbd9efd068ac6718023b88e5ef1a86154e4704518c8653bff2e702a4256f40f43c0aca72e275e022be6e38f3b258a9cc08143f4bd12f8e175ef54596738f66a092337c1b65166ce9fcc8f7b4b1da5b06894fc780649b969fe6fb3b38308db5bcf10ed25957dbcb10a46d7dc0131c6888b4092f733fad4452a5dfa737d43f0179a156ed4f6743dd2bff67359dbad331b6f73f69ac481fa472c066fca7f80c08c6f5ac3fc63fc3bccc6efcc4204aa18bfbad792f92b7679a467fa9e8fe354e07b697e59c9aa1ed6ff991d15119eccab84b6eb0561d01e2719d6e6ad5aec1b295003655e62cf1772b973106e74e2938e713fd56e26166f67e14af969dce72a9120bb2229a1daa94f603c311555375abba6c3b3e5474e1ee005b0a54b616ee741c21e51f331cdb441cff81dc2df5c0e1f9be768deb07ff6687df863c3378ee72f75b03de4d3d40cba98025e081c780369fd1989a3c673cf9a75d8e6af286a68b36ee75098235de4afcab83f725c95be1a5df3c6bf1a88b1af0868c86d8117f69f4deb0c9c68687e3276083851a295fd9d9cdeeac92a166f58eb171c50fd25697a74a4806b41b1d429bb1d05b08af7730ab9f0db396145f476439781caf257f976ac07ea95c21f1db5553eb79594d91a133ce983fc6a0d462bdeae1d84b9731281c69398b52ee4cf688d30e618bea0b72023e1cbaed7f57613ea8d7f572aa6f1c2bf8b1646d49f8e8446f6191168468a38dc797967057845f9c9b1bae67a664cd37e51ac7732f9526bbc2c5301bacdfce3f8e363808efc6c5df7f357a7e14356d499aa57e5f5ba8f771fd6ed6470a730fa1b72591e0c22e7531d0cc9f3a7f1824ae96e6bbc0be69842232ec9fc0169db234849aa244e5fff67e39f65c6190c784f1ff1e097129d46aca9c5c9db614154cf178773dfac841b44bdff02371392b43ba2e7119f2334987f6cedefac187a62e5eafd31401ec08c72bc92e9e0624b091906f9d9f5534f54ae72a2e2bf74347d1c78de23bac435c0678c6367e78425e6e716963c6dded5973d794395e885229b7c0cf397624070b36d060aab06e3a1998ab5881d7c5bfba360ffdd66dd1bcb3b6194549fa8cd883028cabdf32f45c341c8fb830eeb74a0f9eafaa3a94f95c8ecd3fca8704fde12b6aead84cab3615fe62cb5e06d1f82a5fe5eef77081b68a8b060466d8147554d60aa48417a6507845525145684a0be32c0e9aa0e948d9d3634b1652b9d1c1b6fa94d39fe5efc5bc8a8e6b5a7629e51f374176cb0465bdef61453115b7abc708d2991b1f8fe6353c096a444b7ccf9e2bdda7dd8279106d24040c0c3a11458b614e58dd5ce3c556ea60089c6ba0ed74b46fd1dce80ed4807cc343f9aa075737a18e17f07488d2e29c57740e46708ac708770f971df5047d4da80517cb4d034a83105ca48e96538e2b130320dd24c7b58797e5541e448b5ec9508be3393ddc437628ee4f516a77cdefb06be8ddda3d3e8179f43cf784fa2e4af99d687448befc0665736fd559728f81d622e23bc129ab0c876c9a9d4a791b3f1b088be06b1c3f00d28bb0eac796d9ddc86709f03469099c124a635bb5b700bf795fbdc389e72abc8d189d9de0b45651d0413bf8b3d1a5b8b233dca351deeb7ab27e61ac5c0641f0731afd62d6133fa2eac15eb10b711897afab55786c239e76f90cd63f0a4ad123d1bd9f58bcc4055a4b8cfef162bd9deff6bd43cf1d86f03306e4a9907f7c989c88e90c9b699c7ef7dc305ddccc3830a7384e0c388d6dd8e2a6f4a672e43d15e026fc3ded8913d6866d733be6af0193614026ccb737c5d1d081ad296a8ec34c85effc2b6650364ca0f7d964e5873e930bd17b5fa2eed9b1f6ca87c9e75bd1c371c01d8b8cd560f3d8149f5c415f9d77376a5b0f6cab4267524bfb3f180b82b19980aa28c42701be615eae9d9752274dd15cad22c17019a41307e8cfd0ae8c7623993ec770a23f5bb6128f6f99fc979f0ebed1bc74817465b31e891e1342e66d39f9c4503953d2f463dee1ff255c056b1e3b5fdd3aaf3f2defd07a9fd9bddfeb4232e029a980874fba3c71cbcff0386d27f07de8731d3960274dbd1e54f325d8fb12a73d662ef2128540f4b78467ffe71e91e3be68c37f618e8f1105e77c95ae2bc4e134ebb43e0f58c8ce0b602b2cbedacd1985dbdd1c4bfeb901d1d3f875718ea3115b025a694cb3b41b631a09918dc27bc3fa972f7a023ad2f28077cadcf89a8515f4077f07fe813f773c975f90eb264247fe7cfff8e221eb034ac2db4093e60d4ab80bec3ec9ea308d27f29a242bfb4912cc94c1846d462d20e2d65bb049095e19978cae3bc46ff36bd985667410d80a68c8f818595d2be4b828cff190984c2fa082259974682a5f174a4a16e5a9b01f3c139b74a244f6e06e0c1a5a6386ec010ba66a9b2bf60ca67d7fcfd6aa122eb245a53993c89243bff5f81c6bd4547d0445f17728932315a68958c542a8f2f3682af43bc08707395a74f337878f8b579406c2f8a7efd3890b850c3301a328d13d6d81de016a0125b3dc356b83aec3e4a81970100c872a52a812a31c0f71af56a9b39bd0faf43bcb5105b71e7dab2d1a152a54077403d543338f45464dc7612674091540cbd76e4ad680a5cbc06f9271805d46de84ae8453012063bbc4cafee223dd3e99246b0c8951d3d789304789e00c5e10cbad74d24ef456c9ef4b64449c405ad16665498c4c2ede94c57f89383c44961f4474bb74c96ec04c361d2e8179a2131cda1df88cd1389c8cf4e2673ce2a3511dffc06b81e9408ada00d264adef82946f1548a15f1a6595924e78bf2ba9fa837e8ba2ae8b9089bb8a19c2c9d7c5e6f64471b963c40a2b78fc976ae53096aa0ae6a9bc819cb3fe52539583184894ffadfb8710cf10cbf5cb0a0b9017f97a7b814330d96c61184c48fd641205b7961af7a669b3b76187cef638fbaa7f8f6b582c70c5b292f7c8cfec712c3697365035082df34d6047495091ba30a8d3fb686552615c21a24d48a2a54e72e66ca0ecf4e311958d9c07a790f2133b14e1508ee83d2a7419161081c400bc0a06d065ff873aa8d75d59b73970ad4d3e9ef8fa1053add4d9ddc70f8efc4547b4fa32ee361a93511399ee85d34ea18048275f7af969a4cf7c1f933865f34c20d1a12736f5a41a2b38d55caff5ad9882109d15c451dac85d11c4b37c9f26855a39b9cd20c54db0b4f2180ce5fe4648fd63f1d1e04c6cfef3c1ef2e3e5af2ca243515a66b4556455f1a406d0db8c6cef33f19937a7e0c49fdc67a5cdad7f0678f1d6fa70562cce761b1ab192d53a4c016515a96eb073c5d4ee222518ecdc55af6174e5c69e5cf499c5fc7d83ab145b11b63eb7331e0beb9e7c1b56d7eea3c561a173cede4e5422ca126faf717d08bdb87d81ac05855bac2fb185a5bab1f6ebc5ee5c9461939c4f50788c7cea702247e88857e5fcc09bc1362e3ed2da1f3497392d71cc3e4075239814694d88b75c58cd67d27728c2da8b13e24c3ea3de3b955ac55122e60e9adccf5b7cab2c983d7195858ac2cfa7482f57e0df96867931acb47ee12993b0cb2cd02883e3c800f3a48506a3380e306528d07f6cb4659840b476f45733d858656cee48b62a38be03f8b0fc1d03100e596ed5afb51cec811e222db5cdc415307550b52fb45b08bc90f01b0d03cc084da90629c022b72a828e0f71276584b85af53057d182afaa17c429b8bdc03562195d99cd023e1428c5defe554d9abeef06e3d3078ebefdd288b86b0253cd44c3af1458a3f3156a96173e31d97541e326ef9e8f01684f5016079326547567451f72b04e225c44353f610ef6770fe7e976c8577838054be7d370edc45f5df6d8243277f321cc5c6616ad9f5f99e6c4c066a2e753926e09ecc928a4efe5081b1fc0fb532d4c028d45e398e8085fbb69a30bc54018eca3ac6c3c7240bd2fb0446e0f06a9419b38961aac9bc2c7af7246bbe60e7ea34fdacc397905762a6f6c225f262a2eae78c74c797089e03564d866411f86778b51dfc4770ed60c470cf4c5e79d4dcef34039be1ab6b1c65fe7a344b69a5379fd10f7f9615e53234e7ddbe15398dd93831cc6c216799bb0802c903ffebf20ab2ca74d135bb13d22aab4c3dfd4acf131f49cb459680f06a46e429c71b40d071db842b9871bcc79149c3b93b047638e1c6e1d8a6b1433f1f1829a8d8c3600da2d14b67f9bdb70761fc48934f63ff29ec807b21b624f8719ff56cc4b40fd3bb04ad7049d6f9d0c848b06b39294d90d815dc7263ed92f166948625b8b736361540b4f6988857d87551838ae919b4a4e6ad6c7a0a425ad94cd62f1eab25f92bc76bbda9f55f119240d6e5e5a82c07027f2fade8497dd6c06131f0f3a9b1457a2f01e718d075161ae83f98f889a8b696f12361e63df332f58555e48685615b839e45a7ca9b8009c86df1977263644fc68547c1fcef493c66665b088af98c2bf974464a6a8bf045fbc16d6b10e862b34569d23ab135967589ed5d0b382ffe15c62ec20bf5b6fc2e15e71faf991fecbff08d58b8c7d7d381cd766a913008e63d8afc1122093ffaa3df15ceac9a94e41befd0691332536618e7bed5b7ae91e184e5fded683f7ba59f5759c059a9d3e3363443d0b61f4dc8a4eb44133e374ec349cb77a556ab7aae59f27fa8b07eaf8470914638e3ee85f2ade6ab23d73a99f23da6a1f58e71662cc778cbdf56921f640d7b2a89b39d5b688b82b833963f17c1b808c21a53b9bfe32e1efac68c19cd81793f2024303d0e77f8224227ac877bc80647f68515fbd59bd0aebfdc91240ea692f5c5231edcf47e551e72f7a174f20838de8164ed9398c65193493ba6fa8e731d7a4bf5ce8af43dbb10cb3bc3b671a64741366373e24839b92cc20123680db8ab109ee245739f92c59a1a3a0d83cd032854472051902e0e5c981a9b786f0475c6c516be562b6cdb1d4d27f60ded8928bc49d0ff7bbf325750635b9198ea1fc633de0482f2ef798c28d9742f50588e3e2632bda49181da69a97488cb7d80eda65a3732889ec2f4d55dfb90ddb4f35521d6a22dc377ff9a1c03dcfa412ebdd5b3532c3eafca2f93dea437903eadc477cacc1633bef5ff68d1e63a8e344fa45a220e0ee2897d12bb8988008e0f412bf501206ea277ef5a7922a64d39c185e9979d4788df85ec65af6598c510aa070cc057a1d0e86e83f1b33c01f4e077ed9bfc1abfdc49b63c5840afae13bd484da61f7fbd61c89b4e57222158f46a3177b8923d564f54d44ecd2513ec0b14fd83a0e30adcf5751aa70a2de4f0dc13c2866c002aeee8d4e02a6aa74fdedda2b18512f583b0386fc12846bfb7751e91927706a73c0adc4d0ccac44cdcf473fd6bcc4729ae069c495f75a3103155bb3b5f0a5d5c0b395daa85b566872166d88894063256ee19943624e98820414bea4523341ec65a447d0747eced86e4a18a9efddd5743681b0179f4b84b44411de20201edc1541072f6310d77c0b8251c88d982073d946aa582b357bc4381871a4260fd631f221cb0a3e2bfc6702eeacb7f8a6fbeb7dbffe2f48d73cf0e7418c47bf59478515603b56f3a6829009bc7e3df8f16e8417dc70e80ba049a86a4e0778417bb4d287388697257138a8c67f007284a0861ae6022c4bcd70dbabcd537c5767c624e864ca9c0625b5a45dba62bf836d81091180d914e0c31b69d63f59d6f14d09f150216a450da6557d66438ddafaa2fdbdf535d1c46c67246953dc1fb459faecca6418ebe40ef81e8174ca81697b1b9ed552d049d084cfd77596ba42367409ed688826f51f77a09735f27b7b5f6cf22945f3ebefa174fa09fb7601f644395378192b73f03561131cc242f12973d302777acf2b40b7147b2ffacfe3de4758d6eefb36696afc10733ecb4960bf5ebc0def216da9df5b23702a9a39cce55de6db71c26619dc5e4cad2527ce2f7e2dec77a7b2b00a51a5f32f9c1052b7842f1f12ae743266d7523436050709147d568785bdd47f2bd323a30680ebff651b2e875b7ca77d813b8c903d2b9002219c249ae178783099037563a40764ba74be385addf44683fc46e945ff95229bed62705b3425153d2992e450d5162a85d71b5cd2c935dba1efca1ec7f58eb17bfdd11996be8b4b4a84865fc0bce63ef7057f2b3c52eed713d80c57ff5ee1eebe34349e06348d2f451d4c642c71c002f9fe533e6672f8d19776cf5301ab2d7f73132896b894975fc9ff21372858d39e1e3f0349a3c1bef8c4de23264c16a832acbcbeaba7fa637fe3e00eaebe6b5e9b4d14aaaa064e500a325bf4e438ff219d52a57ded04bc8dc597c75eed7be657eaaefde5d8559bec36ce2eeae0037403b9b7df73321ee8ba24b4032fc499fa57ce02c3dcf7036f3375258bc1b7940992cccba5fdc559f4fb58f0dfa1398c73ab6faa65b1203dbcb0506beaafa41bb8d7bbf3956d0ae6151aaea7e9754b8165bdc5603a024964a811148e83efa2eb3940ec891ea89b1617047fba520e369be47a71e6895d48575b82171d399f7bfcc114138c2b5b2c951f372e76a313b1aa4315e991d68dd8392cb1c59fb30b7d50dc2606415ba45d6d9c6d3fa6c0bef1a911dea65791cff545775d8b447dcbcbf6e7666f880b04ddec8fdbf286b3e6dadf206905fac4e89edd2936733669c677353605b741c0c0736ad2444d8ca1d00a26e0c754d19223fe7c22c490d0e8f522201151cb5899be1910af4f01e44746e2a08eed5232f6282dbf06f63a9d65966a6c01977d0cb5f5417f8505a1ebdd004b3637be98cc5ba69c03af5a865635abe079ed7b32a7d14a79baaa5a242ce4e12a410e93904cb5ec11dd527df0f30170db9a068f8d8c5067c2d41fbac6cf764459b30b8c1090d6a9df87ad7417ac2519f86cc7923bb67f9dc726aaa9af80bf2070899a7be488e5569a69e59d71bc4bb8a39b22b572300a2c4db7e6c64af41ec705e8900e53a7083dbbf32d6e1589ddcc84a18665bf8939878f3aa92eb04dac854f187de5e4f1c7a9f01e14d58682d9ee5ad00436ba83a7712f0b04bf9305ddba1e59b3190fddc9d9836845c0edf68f782747043ed13c59300f786c2c955d00bd8ff84cca13bbe7534db7097c81ffff3c572afc7b921dbb04fb881bdd2f645e11adfc39f0ed834fc70fc1f7bf9786fe029985fc87ff2cbb44e5677b8f8f39b3ad58b586d188fedace7f1458750a0693cdb370916e4959db7a9eef9760fdf6bda5cda17b6fd189f2ba05fe66243257f9b2b3ecdd577f0b3e1657dd95c1d92f94875ff11bd21a13e0ee27b7d3f46b5970e2eb0165488f23120a5c3fa809c71013ba6e6384f4d37709717c88db5aba93b83784321bb184895b5f14ae714c0406a8dbe03167f31ff0d8e2aafec04c69f5c3a11c84984ba2cb2f3ce732678030932159997e5b74a84da16f89891dbd83cd515738c6f4c06ea1db4ca38ee98829eee990c538164188830b97e66da023dcd73719033b3ae8091053e2bb3f6adce308dc3376d63f04c7bc732a83ad1c0ddd007ecaa265967f75df4bb58fcb820f166655a9ad192ff32925656ae4f0a6b67eab207ce156c3537f7b33efa3bef2055f9f86cc580e0a503f6df899dbc2bcb9bd7ea0efc4e10fe185c2e44ebad3f16eefd31af894f1bb8711f6b8d19b11c8b107d0449b678ad93212c759f3e628ea0d1e397f1e1ee53d671a13830eccd6fff880df5897bbe5df03f38e8deaa39b7e11c209c49b2892117797bf7f5409e6429498b5735c93e99dd551bc6a7406c5e6765bf44543bc619b67d205d9f813f7dd38a13fcf693e322dda7d6f80da4277bd6fe9f3d8b4e3693b26a545ad677847b77c5a2da9f3b77b0242f408a1ab201cfe3afab049f7f64556e74146fc3b15716deebe00bb4b07f68c3edbae60c55c88f2a29fd33760263ed58ac82ea0ac279d3d12ad3ebb918a046e3b6ce4513064eb7903d558398bf4a6ad4b5bdd510735e7df137bccd4611e84ceb88a6e356f1eb80f3b92a09e9888e5caba07b6ee652818041d74a81e1ba9164bc848d94108bc9b5c31e8609b513c2b81e3317842ab601034d6f0cd4a53f916d2bc21af606ffe66b9192e2ede85b2bd1e753bc95025408f85c1716c74da79cf9a079e3e6297b79e8bfafa5f04b603013f027a57f91e3917821b2bd1b906c197dd03f3467bdc46dea9826f77a7b35092c3bd169a8ffc5c2268cb7ae12a50847a382129803ce5de32a7b2fe9621befc68a0195eba7e5f6230ae0b3321f7e9aef4c55fd5f22fa319dbc8f0fcd28c89811ba49b790035c83e523eeeadf304a8de0400e191f42ffed820a530fc75e7f06080b24bedbb1f13058b943a5f50a3fc98463b9f3e916688af7a2986c36de6a970524f714a6a26a291513fb485c377e3cce3249c3216f70dec764cc389039ddb3a180b7b419482b9d1c1952a7f75996e16632654db0cd0067b78a94349e4edd674bd54055b6857b0e566535fbcc43513a001ef18c06c213c1fd992f35dbbd0287fa4e3673ee0fe0f1626dbf804ac5d952cea8a9cb3567ba78c00c4978a509a43b58356fc058de4ecd263a3acd5e41f20cad556bda361895ce3a4da12dbcffb41750305b7038104188c080ae3bfaa923d243904fc083b2c3fbc7ee199751863eb43c2a2f853afe7fdb69b94d02425d15be01da155a09184caef3ee7da45e1f3174a3262fbd3d71557ab508f16e4236b7de16b8d4d5c5d3fe10ff79220570cbb644bd50b85d492f0b1615e27e3c3180ef4394fdc95a4439825fdc86777de8308a75c6dc0f4d7b5e68c9766089167773cd28bc6b5a6ee4a6f0b4ea3041940de16e00918128616eded810804008cdccd09bf5c76bbcb4ecfa6f660daee46a73d1db9887fd4ab6cd0aabd7699ee466edd5f339cca2c11cb47da265c145578198f2183552fb6b74473ee69ec9e3dabddf7a11b9af7be455bd9a306b8dd6738fb070e75198d34b597603c21f239b2b76e2ddaa5d51cf8811d6df72633dbe005dd435cf00d07690462b296fcd7b8606951610e88d257eea3152a3d09df80abdb72a0a87d25b1a411159773ef8d555221f30c9f51bfb5c99632d730615b02c3624d490f4738343d27c8f6d1ff33eb212852421555840fa602a8c3cd41e30b637ad1a3f85dcf54d2832a5e221a6e5608880326674f0da122165238b233e07b058e69839e8d810db4191ec8bf9efcfb49411f7fbb8e9096360d421f755901c2ab00f071a6a44cde886bf31a88415988d088eca3ae8b6f9ef6bea99006d6565eaba684a51d3dc876648579348f283f069a11b2d5341a28605828c4fc3a477e3ffd8214af81dacb59c5717af722873ca2e3a64e23743a5c1311e1cdb538cf8272759af9df0f7efa0023efe440cb950522858ee0606281d33a2623a785b2b4b610193cdd9c59374724adf23c17ba90fd75faf4c5167a03900fa8cc0910a9753f6f575c66f88162aa89f33991ce0998847cfedb4209037742c154ab6a70ea718a174dc8b597d1b8f864be108e834596ebfb8c97b0cf641b333680d2f1821f17824ea0be3ac32e171002039785cd8dd931b960c0ea04d9e7761f350f7cd0cc21fd441a80cc3ad56a081fb3993ae052a2a4ddfd3e3f2ea3118205fd59dd6dd8fcbc499fdaaa4e8624c4add9bcbd071061061d4d608f8c88a946232a6f46bea0802f48f55cbb35c063a18fa3f953e421ae25aa9d7b101df3055c9231b07dd4a563bbb489cf8a5bc0a93d3697583e4f3968b4aa9ab81e434c4a900303804c7e1fd9aec6769845a47c2ca657a02bef0edd3c8b143e70e273772e09c57ada18eb7b5d3adfc2891f00c97108035e14562f7957a0cbeb99e1dcf3558f0bfae90a4ff3063543d91bb9bc15f6eb85f2022671727ec4f6bf14e516559272bec5a59609422018720c9aa3a597c1ebcfa5ad882a0f944f214f58a7e1139ddaa43513429822e1ff77f176df32778ef6ef92df30fcd4c2dc760e14042a36a872213a5e68b5d1eafed20e58cb65bc46a211302c8ec2fed6b417405f73461042c8b1427fe17df383b0e50139b12329c864064b24714f557da11f2262ac917ad045317faf97cc26c79e354d89c7e88bf43cf51349968d72cbd5c0d887176174b54c6314ff02ed6a3989f4ff183ddf13d4f62f79b7ed1b82fdb480aae21bd32e141f6e102da179399c2e1b51b57284b9469545de8f3d598fa71d3f822b90cd5504455c10e5e243e9e4206b13b4f42d5f0e2bc569dfbed332961a912dfee73fd1bbf60c66e8915573dcd32efe86c8dad8c7914f0146dceca1b1a264454ca3f160aaef92132786c85734c57eb5b44216e08f8633a1c0e1143471a4589842879d02975190db128461d04109137a55b30bebee828e965dd52383f49aaef495da896739aacfb38d301246bf63220fbb47b10e74acbbdf1b23bb57bf80fb9d38d82a94250430a9e020399a166486019d4be8b6d985fca370e2b8412ed5d5e50998ef6a5ec8b7e0a27c47843a739b7b592de5c1d4ce5892c64b7388c5d387acdc6dadaf9342ce366c837a2d193fde18418e766042bf63296a1d20e88178b50544294d9e7b49a683a220bf0d69fe54a7e45260c90b3b1f4b2f17e86d74768316773fd5e37572ff93eebce607e9ab96eac004a1ef64446da7ee39ffa883126ee6fae5d5bcd29dbade4bbabb23efa76ea07b38f883b3969360881089bce3cc9c8df0c75747f663636ccf76d35535cf4671729fdcd1240e0a9d7a37f862283df0899273face7f4b9bdf2a21d388abbe90d9beb188e72cf8b2b3ededffe0bfae9bda0edc732884fd0106058e833c3b6c51f2f28c7484c48c53e0908a1e191f7955423af85a1426ce7619d6c56b74742e08f8b67398af0143e189ca926d72c8c714106528d2e4524acd5f046428fe9997f845189c3fffc43491d39ed5557cb0856a52e3f156188ba859630e1112a3458bc0679e1416b2afb664bd4b0f7bdee6ed48ab0aa8488a0e31c49a69c5be6b2bfed48ad5c28de319355ff155f8fa251811114cff35708b30e0599f9b1358c84a7c04307d62d8c355f67de63c6a9e323d21bac18931382cf6a344238a554a4d5e75d742cea01d1f9dd1ff57e40b24c2eebf1daba8ac70e2e9340ae340f642c6ce5b2528b2c6153be962a231eee90c359d1febf54f6030b0a7ca942e58d60bc99fa495324f41c10530c6a4ca9b166ac83680086f7f66223708b6d15eccc8313dbab5cd6e4d9f7100ad7f35a9ce0c44eb577a682b5331051c648ef89e42d9e9d79246086a2a9a9dc5e2b9502ebd51da8a375fc2111624d50e641d7e9f238aba8178c30919417c2b1e6a2002c0fb4dbdf9ec2129f5fe4ebea26952a8aba46d91a67bec1f33bdec36cd20a792f565c1108d24ccbed694f8941994dfee635be540899f1bc7a1a989bd9f7908b19150dbf1597072fc662cfb0442acced2366f7b60939b395afcb12027373121c391c2e17ea03a538651e4e4e22f3b89e9e500291619b7194413282410c6ec139298b3ad4e5838a5429d7c7d9100c94bc6067a36b08b2dc78904158cdcd4fa1ec05efdb7bae121b58a89ec17c2fb2dcece12e4b1b833f76f01f4ad24c9dc92c46ec3c7337689b97e11f0e70cff7ddd3ffa06fb783243a32f10f1dc54de2ec72c139d4c16ae65d798190033ee0c96e5c0e0985cbfbbecb357db28ac04b00f6aa5ab8749156fd2b0f878b65d4ef94d6fc4c3fa6341bd38a2f7e236651516d24a772e2d42f50b9b92147aaf19fd997a742427b79df27babae916d6b848572ebc717adc29dbafa2d4f9f44228e3ea67878334205b808dda1c0e46f47270475cda73852f857683f390e931528b7ac13c62c4f4492693834c0b33f0cee612b5285e043fd43ce7d2d111aab4064c159b7a848ab5abb596681d3519810f89b901a6b0d5af6b09f532b36663f7a99622457741bec61e71a0132e17a6b27991f7c57fcbab6e23fb016bac21010c6e873fbf06f98bc895e83105c8e7f763912d140d1eac0a66366ea3dd649acf26a3f897ff1b550ae61a60a919633c4ed02f10f883743373c89b346a52b17aaccdfffec0420d808618a4f98035f60e0081ef560733f0658f41f90333fe29793350a296318103937f140732f48695bc63575284fbdff9e2ab8f0eb734751a76d7f54a2747d0d1119da326f1e7c65a6856c878f9ab99f35d5afc90bebf646c7b17156ab08e9213bf23a6cb6e4eb37803a69f689798f11e100db10805e6f7c6a292db6c206a547282e64668365801a4067c790866a64a106dd1ad5ec2270e143e1a13ee228afa28a973ec49806d3715678df3e870a81865fd700b84673c3c888d13fde37652330c9b59dbea3add3c481134dad76f621322df8b1de9574515d26c223e8a0a96ac8a0970748cc5827f2eb1d53e23029f2cc5e895b03492a551dcb705bd38c0a06b8b864c68d8d8ff1dce21a1c8954ec508a0dc097fe3d181730c2599b54cec5a3a56485e3831f19050ac13f56d8a8b5484ce1f845521a46f627cc339437bb4e033435cb3234070e1ad0a5b4d351f5ce09fc42f6b8dd1a0d811c42baf9a71c3a98fdce7693cd48980094ee03c5ad83d2bcf6b63c5ac604c0dafe5ecc4aa9cb7c40492916f6f5e228d240ae565e2ff4e4c41a7abcaf2bb167b248963799eb5374c02793d865383c2eff342cb6ec17e13598294240b96e1014a78a9721fd4b9b007ceb08b5559843bba82e4cda9e8716cbaa5de5471096d0283a759841eb9e41b0c082f29f2bdc1e341b9ba6d5ca93aad7e0524b71a4a6c5a82478afd992e0b3a2101d2eafd9483a21432db7efbd1c895137602aeaf08d4d869b1b5ee5360b0504753b08744a1e3c51858e3a97bd87381fa09bcc5bad5d8464366e8ad485d7d785178cc7e2eaa4490af52d3a0dd6292b5d7520b4d9b1c0263641f3f2855a31f8b496f31c8224723747cb211a460620028b66bb8d42aba96297addf740535e497ec01bf0212db196dfcc0caefd70b42016c8015140a204edc14075826a4026b49361f380162a5ec36fd5ab6dfb2a001b524434dc62b0525e982790b023ed1e46a902110f20bca4b02c53a51ae1f7f113b987f3e4a0781822112aae7f9d1f0f0e017245708367532569eed0c2ee88380401ecbf36cdbaffc452f4f8eeab00d223c9a5a5236f92df4684128aef8d3c6d5981eda8e6ccd30af2aa79a1eef3f604dca069ee04c9e630c43a78853cab92c2a4f4889f34bbba657213c991442a06f017e378c4b837fbd9bbfe98806cf0cfeb9e0b6d0839c1fcc8804ace5857651822c7982d61fa4c63027f651c782f348f829a9680b2a70ea33fba1f3a54b1252f971e4a3cb322f9aa21706c5da7822620eb3099c03bb53c932bec11bef1b2bec430393a4203b02023a371cc363b17b2734f0e05a259e86e545c1c376ddd022dc37d4e60ece69f750968282c3041488a800df636a61242daef4d5ab2b990c031561759fca2c2e32aede4954953090827e1148c61f5b21b156f20ed6bb787f747da58101fc849bb3f497e5b58db7cb18eebd955d01f8f6a8d62e1e245eb5c71581a071903a5d8a660c81e953a4df67e67c22366754be4e6323c15f18e2393ae4541e4c43fc1667553826e254050c55dc1fb18403441cd0e5625c908a60631d64cbd6eadeefb3d41bb0e158d58f4ae78191d4bd3cc7c9af1f679ee12466cf0cffa1271af8ac25c233a70bf2938f8bc6f5609b1840d66a3e2260c4006071f596fd01a9523f4e144598cdb8b479a548a8451219239d710596599bf9f815563af8d349ed9f3a4c64956e9dd65954c564e33edd70a684017c518bcaec07480b7a798fc5e14422ca13b6d1493c6da7c5199ad2ecdc73e07b77641e33db869600dd20c6ad0b483208457e592c4b1ca998a3a5c693227eb13a2427f1466cee8e0c71eb0bc36c49988b38b2bef7024e0567fb0851a7de2a43f542e01bddd0df021041d704ff54adbbc91c7a786fd4ccd92c93ea91fef2aa2a0acaf1f193e44bbe67ccaef4b91760fee22287cc8743153ca2fc73bb8da649e06ef4ac7fbc4152084b95895244145fc1a3030e5598a9b9bb508aeedc78ecfd1e592966c4ff94debc3d8f1d29edc2f504a3c615bb3b2da24b21658853a8ef3d85891882fdad012c017e21d4a048b4d465aec105b4ff1049bb011a367bccf3f0cdac3b87ed2214235acc9e79085f63412d1b77b6c24fc4b8ed996e58a9e569db467aa4cdf0c452107df29e48c1423ece6479e25b59b374aaccdc0851beb1af9657e9f8fe84ccda5037230910e61655561b7d7681dd5f9bd9577de2ef49975768857e70c33396cfa440911ba38b96ce2b631ba699d78d4136da79a35cb0060366a56472c6063677f7de1def6d3b719bde9f3a46e2089c6b17d4b12b7c646c83b9fddb6cca63ef133202262b51efbf8f77e84419e1a91cbb5b5bf5f7696d40857c5f59a68b9bf02711fb7cd2fd96e72df65b4394afa2185930b3a6008a07514d1e49d30f5c963b1c5580da321796091b96350bf4c3456158baf4e4fe07d7a4e2053bb459e2b2a2acc25db64638f13af2c301282c803f0ae1767221e61f6b4082dd48d2338724301ec77f2e70347d2ab07e625d01c902722bd1c7a3addb77c96ff522c84e902d08a5318b7933ffc7597f0ba22d160c045fb23d68fa1a1276dfa756630de43134ef5606192e3cd8e554860aa254b5ff762a75936ae9e8b54332f66d0db3b84bf42ce112c449e193cd6228ce52237e9d2bd97bb0338e5c01bbae8476494769587666c1b464f7362749cefee9cc52e88546c60212837966a90e538cd33d6f1203765042a83f220ec3437937720eda0805630cddd0f39d2b75a14d653e7f0b9ce159ebe9111c13b2494968d61f7f2371fcfe73906790095b65d69080095c2e9cbeba469b57b0cb1184d71f74d59ca1fb85c555ce7e65c7b29dd7bc8cf1460e33c0ad64f9ff3afde228fe2848221483aa894a3f73b8347172c8a1419413dc43e17bf897f702e4e496a1148bd22f292dc99ad7af882ff89369347290907811e843e8815269cb4486b844260327b869c9724ce37a0def02df3faa488a7c350f42f723053647b1300399de78a948b21e935dba703c873c8961b9cd468c0253cf1324650070efda0149b5c1614f2007a3e9236118a8aa416eba7fee29ef0b0589143e2d14d0e34d7010e110eed63273919aa68bea30da711a89c9e36d3e6e18a48d105a9bf094fbbfa30cee8dc7794ed6e8c57c39962bc26e8bdc5b6b735c83c5209bfc11830e92ea8a04703a4ed70038fec71e953f556816f0e8e30ba5bfa09d5af80a00c1af37d4ffc26cae5e2b00e0c026086cc089ff6f92e08037001d91540ab87bf2b15cf3e8fbe04c2fb352ffe41112ad184625091855ed0c602fd7489dae585d2a1aae8ad0600240da4a8c65e716e665d6150be607002853877cb4e230a66b41ff6eb12be3b0aca0174de4a73945cb1fd3ab19deccd0ab6830f3e1b744509ef6bcc55f8ee27dd277119e0b108f614c64ac19c69ad7ddf526db9d51fa37855b1126270b641daba39dd27b4c5d96020a8a71ff9f6b18380f938bb40c17ad685c67f6c2f8f108f0179c118bc5741fb3418d8e1f85f831bfff95eecfc7425f3df64af5d64535b9f6203b3771c905c9f8db77025cdc4d8d22acc5c30a6e765a00f8954df36f060dd22cff9285ee11b975fb2a2f137b8bf09d58f947e8e79ceb671116f3000ad97b64568da12f3f54d566a668d35db4f97aa3909c9ef215f3522a8499d5b60ff97b924cbf14acfbcec26bf6bad1c6efe60d0fd8f3c26fb097fd3453151ac3a9228b9e26721a556c90c9be3b8deee681eb5598ba610e26c95d6c9c1fa309e3653474231f04f908681c527b6619877cc469ad72cc3b4702619034528e38131e038c71022f6ee766fae037ec493e34e70e8f86754ebdad6f3499f76dab1f2163f9f5fd87f33aecab95be45e193afc07b69a77ad9991a644b48d4d075961af4d5e505fa606b7e83f0fe95c19410f8547526d247294a21ac1f1cc12c851329cb59c2d0223e267ec5b8779ddb1f0e2991fa2969ec8eb8c949495358ae642543de9959c301c8c0d1a771b17d3d443060906721175da92d1ab20edec4af500a244c24666f40ea524d70ce4ec24793f9865f536789417fd055e3ea53844e958f55c98361fdf667f133d09c3f8e201849e60f6cbce4bb339e81e9ee9389be58185599d8447c4f27228e2fe900792d3b925a184abad9c33d7c31123cbd48141ed608ede0e1dfe1c033a61ef0cbd06e66a220dc30807e5f5e372bb57695b59830937ab4675758ae24d9539679dfb3c8356a8ce67dcd1f7ee00971d0c26a1ce7896841e2ef46805f41dfde99df53c27c999406729a6f801dae0a4c05b0ca00329cec69edc09a09566b534fba809e538f9522f54f167fa5bb497cff88187bad67fd581fca1e448f495b9fc846afbb41a43ca19e0d8f8fe1ee34f7e83c508d1f22d6e5d350b5c2ce90cfa74e59821f8f67b13a36fb2f983fc86cfbf5159d628d23eb98926554d89b18a238d3729666f37dbe42cc5ab4b56b6c195e567a95d59b9e53cae0836de93b4280f0d5a0cac23c60027b2e28d78b0e8fedeef2979e627440553fe0a22ee0f4815e202aa48e19cb3863b8dffe28b1ef056f39d8b446a8726f02c04cf28da56b9a52978b9138fb4deafba00869e5ae6fb9ebf593f95506d1a7ed5c86d051c108e57469f04d555da20c8a6f745229a7016412abce3e8b933eb1d7ef9f2428f39d98d58bbd83be2110c6251a7ac23564971ecd8084bc8a5d1a0a1e51a9aadb82ea04a79c364880a5309e0647d84edead25bd051c744c213266abbbb6058d63102b61549e6b2b6c56f1b9fca59d3a26dcdd1323d660196e9851a0313305410b76e0515a9ec519032f821af46749295fe9c4ca12c1c5974a66cb64e010a5ca8a4522a86a965ff4474bb640bd48170983e242e9fe2c79a80379394322000cd199254d946deba1d61a3e80db37b0cd9c482b463bca01fe1fb22fcd4685e2c35a38c5e954f9925a8079f488afe83417f104c70c079015508cac8a65f546ae00d375822b3fd245d4ea677654ddba98189b566a68502c4e349026a53c5b321f2bd7bce9802ff2b96ebd808ec62f709c3aa2d971c62ac29320c4ecf4d25161636efa009537cd7e424d92252dce1d1c4260b2b7e132f885b0a4a60a7dd1a939e10fb528214a458b190e2f4c33a273d1c89d05098ec9a9e8cd52658f76f14afb9cd59110209b8997dcc59893f852a6c7480153fbeb0004801ed98569e6f6e46ef3c1a9114c9f6af8ab266773ee3d6b666356d1ec7351484c84897c4a6c4d0ed50f79c655fe9d04938aaac492323467c6a8d9f7e670cb5244d114739c1d2bd1273276d5023826340ed0c75696cff2827808d6bb1cc0c0791fead5fd5f1bf5201ac64ce85ab37a16dcf80ce12d1c44079a5d1291686916875d6aed158f2550aa6b1067fec21a96aaccee1a520728d72ce5cc3eb350bd7165973af664e367c294af0e7597105d0f28090a212c4bff467601f98342d36de1281aa6884d76f98bb1ffe942b30fff0d6257f56276dd086d886c832987b0a556bd18b324770c54672d679633afbe14c6f1b5817ab6ad11a8f7f25860ff1d15ec63086eb935692f0651d74d0cb48ad5b94c6e767832836426e84e717606dc238e9f162d67237b2508c0f1e8e24cee0813647ec2300cf49157b63e7f26041cf7ec2ad3871cf556211c8d2e62730f353a4b3e4841b17bf4e01a2b05c37528bb1553206cac4f4a6950be3d608aacebe75083797aaef9d115c41afbab647fdc416291bb706b93b5ad261e74e4f1bdc79a17ec7561314f9954c4d2ee604b77ce02212112eb580c155b3d4a9c2aa7ae356e7c3887b52d9b738f054a974a196cbbcf5e82e28380f3bf93d3b99f2893eea2622617bdd90b9285cbbd12cfe6732345925bdc068a951ec60652c3b275aa36b5e1481f68bec32e7aaafa0f6fec091c070de3b5d92cf9bca28296b706fb1c5c20908e42a594d518f28503b5ad47d82a4df58e4f6c35cb45017ed999009183cf41dfc6acab7be3baedd2e51e152efa2da627ac568ef59a98b3ded35e2a84537c6be4ebe22195784c3025a6b26729242aa181bae895574eedbe8c39a2a3a82b1d50586e6004af5855c65286dcc6179fd346e5e7e84004c3900bb71ffe8282a9c0587f547d218ab1d09b93ce870ddd329e934043be66a7fb42f36a947b430286ecbf358ae642ae45736551cd338680b19fef13faace055c6104a487737d5822c9a039fdd959f4289f3ae8fccac214cafb37036eabd3539747df9edb1086a9c1516fe379aabc29e0ee411ed0a44186d2ff25731410d1b70be8426ae27dc450b4a310a22e1cc8bd3cce361bd8f37d6d9d4a7b0117ec03c2e1bc64710fa54701b3b45c0ea4760622ea0eb498f95f200657a31a8f9bf905f5274fadf0f876e5052411c98feaeab91665480720a429e80b9934723d87758612cac0bc1d62d8cbd1368429a7c94283181080fde0bf525501d8c204a15d296b617a31249d62e7f7db0468d9d77055a94d0004618866ca90dde253abef55b01d3d950d260b9c2bec211bb1818a91e5bcb4010df70379ed5e0e8d789bd45eb7d696922d913725542db386fe52c107942f65c316a3c7d62b9ec2d6a10c902bf70018890174eaee27c9138ea3c81f90624b713f0c35715ee6a5706b01b976dc6e9e9816905ef26ae65ba8611fa433c58a7dfca5b8977a1ae07bf20701f0c4d89918af11142be6978b575b1a2c1a909628037c6dd1eab6a02029d1545d49e627ee50e00d2c83ab005e0cdd0d6ae8bda4b9098dd66aef9a95c2aef2946173ee029696eaf0141491ca7c1a6a3d823bb12f5b35cf1b8aee78f28f0a2331123e9f3edc708fcaed175a85a86716fef1295c4c09acd293056cd4f62265680c42129dbd6b63f76ba867999435109e1d727f92650d8a5eadb23acd58c2b1ed44b7520f5323e8bc2b8e35b1fc92e7949cce8605b08b12a3a83f0234dbbac2734130d9e90a6b834003abf271a752c6c2e6526dfd56b435b98518900ec4a4fd6c4a713583fa91edbde6def74041e7538e21660c5bdd1abc08dee01c04bdc25f7ebe0a622fb3ec5cb32919589a089aec904dd045c7b5c9f8d58c4a4c93f4a01eb3cd7cd10f88a685ce4eb8ab619bbc9a22b8338521c8765433c53daca0416b8932b169b57d018d7149f9e86d6c15a3e57e24c00950260f8856275ccc2763aff590c9c57b6aeb7ac90468feabf3e094a7a0082028b4ef9befc1f582a3d2e0663a3826b2d652be35a5bdc4d57f2139947dc321d5564ab1052ce5bc4e66a908efd238a13cd263d47b1f31041ed9b7e1ea5be1d0b9f0fefb0a1ae2ad57c70d534ac2aeb3ce1fcfce4fc0e2f8ed1bc46e6747d028ad5334dc434b6e079a2a18f632cf21e5b0fe314f2d45b0c400d98b30044b99c32cda8cfaed2c13a210b730d6691e46ba27700addab607d5c3b8780133f1513b6767028dd60bcb6ccfdf0ffef355e56a592f2a9a47410e8c75761687d71be0e3714e57f2e281986213cdd11c53c4da1d5e92cb9f086fe71d0c016c1e153ea04c22d534d21ec4b25e185064940c8ae6bd2a68018382d407d820f2f9e37e4b65551f2f97724597500aa8e3f612b4355cc8ed82713dcf9de5f0fe8008715d00bc5d1e2b7f59c0bf987bb50213164e9f8a5f6f368a329311a6dfc195749b2f45415602b533316d53f7a5267e4d1e7b8eb5139d3951dcf3b82a381adfadc9d082ecca9588a078f28006d8205b0bfcf70785a38de1c20e474b48e21c40c215f326ae32483788eba7442f973b8d8c09552b242d1e15fd719f67bf2e715e93c1ecec90ecf2ec95977514088d0e82879de6a97ca13d4425d25d3415bd17c5b5c00734e98050891b59b17605a90241cfa364c0fd340e741def9b586089d1a08086237e79c44e6585f7018505c770fde75a2f245f66e24d7d3760e3f3d5ec9b17801325452a273e89303ce5ea402948b38310ec8c921a2dd73c95d45da6dbba9f80b0372097b972b1d3b2205b2b977ebf5747e832c44741c86381e801eb31c42c0b18a024f01615c0b155ac41f3aada0360519a5208ae6787885a0406e047dff5dd2a593a4b30ec06fd39715bb7ba1ace952019d96122c7d8c6257389994f533c9bc9f675495eeb7bb8f4205c295c414f3fdbca23ea73bab917f823c08fda70863722fe3181b8a44e742ad16a4705da7729022861d5f7557d6b045498294bf8c4051a1cd8475deed8da1b383f48ab66055873170d5ac85587c5ad0e091f67f1c8e64b98bac3fa0bffc850a65edf3f0732b63d1e9c475d00180a57a9aa78d2301be6bf8aa936afd2e45e4d1e4047000898d80500d81699427e31098235f44ea5539f602e4ef225f51061be585478c9c424bfe2a1a80c73280293bea6ab299b03ff2273091c157f556d8e25154e071c93dcd4fc87e337bca5172612a412ac791caee2a5cdb464ff6652cd0c0674728ed0b05cd477b0aa66f2f2725408cdb58165135f9ea259f0199bd19e5cd552f6771f5a0822460dee1b765cc63676cfaaf005c39b124beffafeb814eb0af78bd6913eed166d140944f022cb06fb44e270631c9c841a1962e73c02e6b9ef3942a2be63fea8e9fccccc80e571c663b0039b1fe8cbf57c9af3af133ee03da30946cf7b5c5a0f3518bc492fee07938de7992587e69219f7f6f45daaba4a67a861d1664988d4cece444dab0487de3fc360d2cbb6d9a6d8a3007510c1612cbc490e140c09043b9a8043145d8a92e8220598c061df048ed64726b2b6942e966a2c8f812185861b611fd536cd979023e308299a9e6414a2d7173925930f9e3859143d16691d6c413d80d08f108ba1ffae88aba651e323aa1591b281d26b5c95f2101a98b647b1b6afa7f0b356254db76d4ad4381081403bfe445fbdaef10ed0e31253d4934f6707ee7baad8a9eae74462bc42229fcf6b932acdcd129c3f29e6d561c7f2f88df859d73503b368af5140a0b3de0ae96fe1ecbadd8e07fb1ac7868ea144120ccd005f64007ccef7b0abc6cc3e9cc021b4cbdcf237feafc3dffd6c007d236d48faeba32a9df69c7beb7b3d516aba316196c93bc3702841daa7b0793694fa4d30721823e0ca0c33088df17b04e6053e90ecff1f5e89e90f6b8de38b1e8c94058daa92a327b06720502436289897cb2ff5b304a10c2e32893a8d5844b16413abc2c2a34568555757b8927103219eeed12c15d498e8ed62200ee2b0de71ecdfe3741daea4e749ca89a21307e35db9dde1b732372828765929add7ac245014681e433fd6dc208f19a5e4580ac6b49b01e3e3ee0acd2bb1dff6b93b08535c8fa6108ab1a1a88410dff1a53b54efbdeca1eb57211109bf592380c41cf1d78b8a853e0afa78539d827f923678b33126ab3f9987874bc59d11672532f6ef00ba7f2271655b2da0243b2aadcc5bd1d9daf0646c436f81b70a20102425f87ae079fdfb0f238fffdb7497058f6316b19c357f9f149e465d5ad8edb2fb304458a4b09ca0d19925fb6406d1f7d95b7d0c7c9c9c5be1dff6bc51c916c5554c9a100bea9d59219707e2130e976104db37fe69ff6d7f1bfece45e9cf343734089caf6708d522a876a237a28b7b7ed85781597b13f0ce836fdfe1dab9dcb23b7b146a4f77cdafd93c8bab4e6206cff6ab403c7dc2ce43f96e50e7c3ce6d260c0d4e10bf098b5504ac0ea977b8fef19cc52ef0508dc787172147c9fd5f31c327a326e5e3d6995af50bdbfda45c7cfe559ca8ff4ae6b9298abc82744a6c82ebae545838e48e0c9e6815e9654b1e2edecdc509e01f73f1b1691cb8a9043e7abe3af0003848acde906024b94a8deeb7e52155081f57e7454475260e5504c6d19ba6291a6559c010a733890d0bc5c873d24affe49fab3eff2f42606022f33c3ff023a48edefdd8466019ae2c926c2b6a60c4780ed163e790aaa7e3545f823bbc8979455c861645f021e01a29fca9fe1ebe5f60d86e2589b6bc83a4cd8ad531ce12f9b4689a0f1d51dd6e59f141760a01f490744c547c86618a637db477ec8b122e8fa4952b4d174d03bc7112039b0d394074f1a50a2f3c9c9bbc8522a5e88c9e9ceff28b07981d27356548f5a65a16a2d18c3842abbe2db9f3389d1107e4876d54a315b314f559f4bf2de8772ae2a614167d13c2ca99e9809b19e25999c7fafc934a7024340ee8e9854251cdf621c123aaa84653131a4849f4958c46a3f32fddd3ddd37d849c6425e8bdc36052e0da887272221b9401d0e18b73444ca37e145659676dd13a98fdeabbeec9f5b52f76572cc246e37f401283a149206f7afc15bfc6ad0f39d5c3c2f8815010b5b5c5d1f8a78e1864662bee2d52d80519e1f04ac19c4b5b14d6c89f901dc0d617be5433185edeb3e59f3e05bd57da0198ab79794cd2fd241cee624e58a80fc086e9d7362fa21a1e7b29e080ae847a1e37b74ca1e17bf81a67446a6d307494a52c9d43d57e7504f43b903bf612bcb9467747bdf6a5c73c34fe761048238db1b88bdde08ec1c0d7288d299f6c0ac23aa14f6c11d5706eb8331c15ef6da96da7e9d589d7becd758e324c440f8cfa6fcb0cc347373255e1c488ee0c09a76e8ccfbdccbb99e465ea1af4284a03e151a13d380c28abb7da0a9f9de64d3511e8fbb54ac51991a9e8a3832d73ac84fe491724c3d5c981684b8109fa3398653b6be36800d0d9062634b1fe229d4b1cc8b428a9644c4963ae6549f2d84aa7f6cf743cc5b56c847578282c0d347bae1482fec4ced8bc79957f86ead59a526f362da7534f8cdb50cbd54b5acd3a71bb9a8d46061b640f50b4a06adaa0134467baab9d1bcfcf05194653d91cdd2799895d08b419a74839f87e3f58067cfe89da295b471719482a6bdca2535662819dc1d9b778dc1d80fe8c9f4f7eebfd043cd0ec2c47781910ae77856614a38889a5ef4dc057ef8a674498a408a0457f3b6348b71d968bf0af44815f479d5885991d70e5ba0577d67c3f17a93a69b40ed316fa9fce8b16036482ae6d4b91ce15c0083d915328e4fadab2e27ff78ec9b9a6726895fac739606e08b3823dc2e4d1c9a153dd83c4e04ce457ab46a46f76a92d5d87f227ce2732119d423ad40c595d4704a094a5e6a01a4f8f6f01fe8cb39cfe3b583f77a66919be63f519baf94b6ce700f9545f6e1d8442d66e3ae65e8e2bf7117c134aaea52311595cd433ccc538bfbfb6f91946bf95a15c6ab26d93a765961fdabc2b5b9d504f320087852cfd4e57afe9a79e93176fbecaad9db090cf2dd3c6275578cd67a2733634f7d48939f57b370aabc343a3766423cc3b2fedddf0801c157876c421822929e276383aab6d83d12e3b3768d01857552f21e8bdce9c9e547bac7d68381a887a933e75594c07763379947642cdbe19b8f6efb122e8aa533e691801a9633743365ae07732b1d67954dde0d8287b74f38857d2bc1fe28272c4b0f51ead1a6bd6cd981b9c03f5ce8900afb49811cada8b1695d697a4dfa2738427518be4ea60d2656a50870811848e447b9b3caaed3edaaeceb13a5e9e950d19e4f4797e132b79f1a8cd811de8003a33f3053700eb8b44b2aae68072ddf92d18ed5ccd815f857715c3199ced20d7b85689f10794b741e5d42ff25a22107e8d0a0718ef83d8d3456a48b620bff5be9fca225d81d8217d92c20c015368111d62ed07348c12f330c64cea58ab0b89b6d5004d6071aba750410984b67257b58f832f4b0f38c155bbca962e1b65a86426c053c4b37c75f3a5e176fd740e4360a4aa12c9203cea663f281626f374a5997349f342731c0f82e63b256c036808735d805613023173a39e618ab6dac2cd1b489756e1a61c3a6c988dbf6d9fe4686b019057624b7618eafe90c40b4f89faaf1e10826a0695e01372b367370ad82b8f26c0f88d6553870d002e46a583d61fad3bd9beb4568028c57e4f23fc4fda5a19983d6c906ca00f0eb83d336b4c4231f47f28a8bcc9bcc6317eb1dd95c1ed9fc9850f02bdc60556fec8dbba7c19ab0e925e678209f8c7654df9b119a476a7da5d7f8ca90fd5ff92eb879d6023c9488024da59e202158fb9aee723895e404112e76efc95e1ebd86902a3b13f7afda78f870fb6ec9dae12f98e7184ae5dcd8348512a3c056ba9d16c02ce11604b38d222fb389d523da9cd5f5406d983e5a93ab99b33186f83cb2531d2dfc0fc6c513a8ca0cad169eaa125ab7cb0ac6718d02f5c98f1e33e93fa217c931ffcc59cad8c53e3e59da8e06653de634fc504c6be4be1eb43ef414a11ba2b6cb522b3064a912a7bb24ffa3fe31fdb0dfb01830de749152a50a23fd3c881bcd5995d3506383e385dec95c4e6601e92be08c38bebd0e32fb58479e0783fb2aed76a8b552bdac149b4976fb867f79952683ccadee7202daa94408bc19e1017cd4a5a5007843710e44921a8e25f6355a0307ac320a9b5722d2586a00b261643ca471207d50434296866cd360177d5330e3f1d59dea1979abf96b4fb63102456660ff397888e64e1274286f0e9568dea69a1551920ed64c2c81b5c70301329dd0c08b512f0ea0e0a4f81a9b719ea3716a30b419fafb8e9fa1e47edd3bf169ec062521630a0038bdfb725022cc5d0f7575863607e5cda95ac645e85ec3500053d2ddfb735e505150903f88149e35578523f3446cd39c4caf34c1b77590c7f295949e091a2bdb2a75e5f043f2f22b925d9508d5563d3e485827956304f3a26699381df3551a5e46e63c1943758e4d4e363ddd0f747ca21b2408d6c1d215d0fc915fce3335b38db0949155a2768324ff97cfee4c18bb90690147978a1579ea947fc7cb65c57f0b2fbeaaeb5fec88528f660a27e8c701dfdbe2ecf8282d3f8b8e9513764911baa3340965c52fcbd8c0242ace489a45c1016220ce01e08fa895984dbcffd8df4d4c73d74eaf74d0553dba2a040c3765ba12ca2ec0f01a311184cfb50f5bc7aade6af3da0e22eb9c2163d28ff475d279f7170bd9d01aee0425c93c154dedf0e20e1b7ce8223fa363079cdb83c8778c405b42bb2ceb8723796acf94ca9985d1b31d94d3e4a03f4c0c7e40dcedcd6d080b7227647435c8d01723be09b4fd7b930d584f95dd346edc6e8ccbce2c3ad8bab4b67273ee1f74ac820146ba6784b902b40c5d3e1d5846e16624d9c3aa54eee90c9b667e8adad3209e94846a694386fdc5a9a775f79dbade7570364237ea8859aa23b926ce39965d5427bbeba79a5ffe1fd6d23c64c014ae6a30cd88c19be662885cdeaa3a227f4ca6380bc7715fdce8bc969418149e93d5030f29266f4a23855021a84f14e42076b9f4b1b48232094223267c9aca11326dcd0e40be85930bb0bd30506c59e52919ce9e0ae97b765a34537a7f25699668fed400c41ed0b7689ea1856213ff0c8223e7db57032125e01ca3947e39804189f035cd018e7ba6f33467b424a31a5d27ee6e31049948b385ab01adca069b1416ff0ea1824abe9646c48855d0ce873dfad17b8372e71efcd30542957c1d41590210dd6f2062b8e74e466733f6ded9ef9d3d8776021236af2d2c0bf853716986c60c877298f9fe8fd407ecf70405c9d3ce2cc0032aa134f42168f20b8e29d2ec58e8e7f8ef32884e8511d9f20a091a5c0666696601003032a34ce99914a65eb94a7566ee1228e19867ef1b2b3aa658b0dcef94937dd046e686b753858b896704e8c11c9f20bf143f418a49479977c4b8c7d07d23cd348c51fe6e48f356fd88f54fe888e7bd139073b3799b9b7da97b2927a94a542d79ab28db439f11d4bd1fc75378a325c715ef10c16a6827e181e25f6c6aa0b0316d26190ba203cf5ed056fbd0a49e7926ba35f315d4f64fccd0d17aecf001bdac42507443ef74f889555625f2d7447c3fbe4c026d2c339097988a0421cd016f09832288b0edf5c14a2ae4ba0d8ebc6d1ff2d2e90daf72556cf83c48425eb2501e144f072c33da3e351bc620975adb5f5c53d07ebc2ef510c5fc4a28d427bad1f29e1b467cb58e1ebdf29c32e2ee70eefc937af93fa31ffefcd6492144fb367ff10c036e78c1bcd2e24014950204293f16d80ed2370a2753c3e466a5e6d7a9948e4127c1349699057a07caccb79fcdc13035531e14d8d97ef4d7de308adb07f0ac9f6e6162b64b82b3a3fd44bb46b3c60186999f02c5e216c0e26d7717098e48e8e2de90438a2858a1fa67f0601189b5b937b005706c3cab877531f8b7c7520fd6ff6005a60ba3f82a6e9693e9e15040df5281a346dba42081b0ebe215485ae4f1da44a1db01b7653f9329410e0ec8a76f13958583f188858e28aceab89f3bae91d397a61eeeaf69fbcc6218093a3b9cb1a7fcc89ff7b4cf67a00223c796e91ece71c87265eb4810ec0653fe6495132b406ff803d40445da6fc500b9e4e15739527820a2bd205fd5792ee1f16d8471889088bacabda07898790dbd9ec2e6497c8a271856108e3fb221ff989397ce55397c11ef2fbe31e74fb0e953fd90e5d06fe19f2496350e3ea1b8c3129ccc4cef34507e07e7889efca36d851ef3e2ac7738de2d6da02dafc11b9aa1bc1374c158f3cd343e2863857709bc76923ccf4716540dd39cb86814fbc2323972a55430cec8147d360aeb25bd49c933747a8d80e05472085ca592db07e1cb9d784a9f0fc72f9250cfcd00602a62a0edb211f3083de0ab49a7999404653f5d138af7c2c58fea391f4800159dd564dcba1e126e3df701afa228ab9c87c18283b19d1afc2d7e0e864a6d290ed17a60bb3b712e2ed1f31c5cce9bc0990e4336b30e40d39cc8b935c23e71860db8e606820f522607db13843f7ba6722b4b8113ff4c84ac4cd8e928a97ae1c43f620e9fab48c1c4077794cedf45bfe3d2518054c4ac8d3ba38913601b451de40c7f6f141de2175736b10c6b23394ae945da3a892d35691fc855a2a3f27d3a2f5b6d6c14a47013fa86b1da7cd2eb08e4081de371d24dc385b2fc170c4a7d68a5b6f42e2a0b90535f5b5ed72e6278b1f17fae63cfee3dc380ae02c31965e18e1ebbcc48970cdb0c5ad0614f0f63da4376daecc82d704e91eccb60de252ea455c3fad417c90badba32d591462c05c1b55ccd3b39a0ba60eb7b9c2d78a50456409839ff8691892f5d69ef6d076e700dd23e9c4a03c61ee35557b3b04d46b914f182d56baf19aa28d494327333c50f276ac3cbc54e3dea02f3c0ce24a573e42dcefe880a9fc3f2a108469d4f6f42810c7c5b710cee10e408afa8d71c7c8c3cfa257fc723aae5f194b2ccfc3a293e3ff2e033300fb333237d00dd8ec78a7238f4908829b122516c1def706ea41dd477f58da3202d50e8a99028d475c19a3b823d7a2e3056d89a9f167e002d8f8d790360dcdc41c59ca8103252b563544946d06f8c642b3a75f0f7a4931b432afc7a30f4d245f3dbf30cb1ded2161eb5502ba32e43a08a3453390df7c476a0ed4cc0978bc93a19a0d375b704870f2a1fc159a53500b6f391d8db4e82c23e2dcf68996161e36f489f3b14a6ea0f77b0d809ad35947cd543462985fb0b05af542491ba5504408ce7c69681a9e05cf5ce939acaa0d5e2917e0eb5e4dd0debc5ef9ed969b8a0397e4c10051c901c010f0f4eacaacfb914cc1b72024b8691f36752060d59554a68f1df98817d9bb93afa0e7fa7557cf6de6929b1d0e9a794a06afed0a6e157dc5606c33ac2357880619e3fd8ad2d013d2728a077e924c400e4a42222872cc7ce325cf10499ff351c8dbfe6fcde1be7a9b7cba2b321b064e0e5ca52b44bd12fb56d623f6a685a771330ed91f6f5fb188fad32eb7c64540ef46ec9f8ba84f455658439d564a5377e073941796b9d006ba24c5f1fe80daee7def3b461d6f6520df8da957b732f27a37e182bae2337e6e2c3792939905bd2a01d1dff4c8c2471c747f85bb9a72fab70efcb03b69ea6528eb2c8b67d43e8c008335e8bc1b1b8d9167b46e7d9d2bf80957afbd0c9fe94defa8e0f8a32e184d2b0d33c05834cb046b41e3c8e97e55007c38b385870f052d55fd2d4cc6769ab791bc6571a1b27293a9f5e5910b1e6585789adaef9aa2f19e95dec4ee873334dfd1bbcbf63baad0ea3e6e82f18d95fb199fae5dd8cee28b01014dea241aac787877cb59a1b61b4798d3f562218070b55b3b2f64640efc6f9b7f8ae0eef0291a3a9b67acbe52c4ddea2b92a203b97c7f1439e0847775b8f162eeaeb54da58f90f9dcf1bcbe1e0cc494450219677c5577887337efba34b6c822050ce17218a7dae0fdcaf0afca553ef652fb576d36198d553994a41f28bb919c4d4f39c901e7648da377e58203a26ee340ad3afd00dfe07a739ffa49739775e0bfa79e444c2281321950006adcffe85e1441bbb9ddeb55caa59343fe2235fafa0cf3e0e947610071dd05ff0741ea7a0bda3008b3feb1688f443f7ce174f61090645cfc6f7721a329c6bb9b8cea45645fa91ee1e3edc3914f469bc198e2705b46bab3c3a96caefabb56b0f268a63b3018cd6d81c9ef67891936861b050668347253aaf424d07b46995dc78f83cb5d228772831d43979644269fe8746790c09726187fa09d017980f362651334e80baae8c898be7e450519acbad8c894d688e910decde71c78bc91b4fbf2e014e157a8e4bc83fd946ceb38f5d110b5f58a77365a2bc5b74263cd9d90ce28c01d30c7f49fdd2448411ed67dc324ce4c6117447359ea5cee82963e05baf307afefd29a97cd814ce45835f99014fb875638cdca985bd369632df1481596b8551eff29e9ac8d89bad110213699a4b872caf9a4f70df76a3e1feb2b04a84c03d79338995abe50f4314b5137ec55f451db9e93b885323cee4896efa3837ce208a12c07ce56c60ce193a9d5857c87bd59087a055b5f5c7f3a4c7a0fd331fa541dc632d19b549f8af428818e5bd547f9019114909bb6b7741f0f9db96262c71ad1f936f1df055070f2390a094a024b19d1cc81e6f68159913a644f6e42fe2ad5b93c3dc8984ac76c07c3ff92623665a39e8ec17ed9514644dfbb49c0e9c29d1a4b5e747202b85d4308aed5251c5238ae4723d6a24891b01d08924dfdd035bc4a0729a63b2789be9b5e3300271266ece585033b46aaca3c1bf8acbe06a12607ff7b7a8d1aa7e23472ca639c8b2869213f9549f04a9e0c036f748aefa7ee44537f499d3dc7a1f91c476f0e614baabc416644d9fd1eff8d4f52c7c1076b6e70e55e84e1c66e386abc841c8de64e0610b4ad64534699267f5b6ed6d1f3bc6e52866347f212b3f83d464349397011654eac222f2e72e8055f53dd6c2e99160521cdb6bb2ff285701c1fe5c308e228b2941c6a20f94221ad258ceea17c91b78b83f59322a69722a30fe8026d7d31cc1b05566e29acbe1cc3264185206d43520ef747d12eb6ea23e83a4c7bfd5e9716dd7640a5878ab220c4395921e539192e9627ad291330f479104b1a14a20e52722ed6bd52e5777ab019e60a2942db6dfe8fec7f62026ecb6d6bbed248dbdec652e1cb7f5766b30a087770908abfe97e7945e6c4038f505627d6aa5c4697949bb9d8b3180d52dac3de9efc35933c9f882782bc2e44ff53ef61aa7537873c84d8fa82369b303284fa20f37d4d78e6bf2cfe45929873aeca3a0f863de2a8445fa8f137007cc148e5a89253313813cc373a4fe2911123c5302461f3083d1e8ef81ad3ec0de5366fd29b9b3efbc94c7f2177e5e0d6f91b1a14ed6206ddaf48cec998ce905df4d63d37a57128f0a7429cd0b380846604d045ba607df9377cec823026c9bdc5cc71330ffbbbe937d91c2496774aaff4b9ad2430878e0c808e37452f2392e5381ae280fa08e89dd4edf04485dbc361e27c51f2a6adb237f9bd514a83b94f419d7e2c55ece68bacef2cabf0a06709fc7e0411d7d7edd3e7451710c3ef0758c1e71bd20ffcfa05ae4a87ec1a351010f6e6ff5ff55ff5ffffffbf59ff67212444a6e46592625b122149e40ab27e3eedcf13de13915eff46dfa9eadfcba481f1b596020817f618d61e3b6b75b73cdd3addeaeeca68536db3d2bfcddfdf66b4f7b7a957b5bfcddfbecd6867b66f53d55d6ddf66e7ecdb6cb6997d9b9af936956fb3bfbcb9eacf9bdff3a6e74ded3b6f76de3b6fb69d37b5cb9b2ae7cda86e7953b3bcd98c6675afbca957de5457de8c6a67ca9b51a59237a3baefa6bb9bbfddcd75ddcd26733779d7cd5637dd5537bf6657dde4ebaa9b4d266f6aa6aa9bd167b3f9d7ac9b6ad64db5e7c4dc744273533f73533f7b6e367dcf4db5e766e7ca9e9b51d7cd4db5cdcdaebf6773b36b96cdcde59a9b7de7e6dfcadc64a3ccf665f6fcf7cbfceb7e99deeb97a9f6fc327ffb76269477a6fbf2ce8c769df2cefcbb33977a77a6ba3bb3d5ba33a37f3f73677a9f3b53bbb9337f9b3b53a7b93395b9335b2867badb7bce5cb5eb3933afebee9ca93de74c9573a6ba72a6f75a5539f367ced4efca84f295a99f7c65463b5f992ce72b532bf9cad4de65f7cad4ea5e99dee795a97b5e994c35af4cfddcccb56fa66632f5ca646ee65f6ee66ff3667ecf9b5e3375bbdf5633f5fa5bcdd4bdd54cffee5633579d98999af9662653ffcc747d66faccfcad667b66a67bed99d96a55d933533373cf4c3733359b9951661431af99d9eeccfc9aa96666b4bf4b9de6b6bfcb68dbbecbf65daefa5dfefdf6650be57df93defcbdff2be64f2bed4cc76f7a5daeadd974daffbf2b7cb7533735f22f265d7dff3e5babde74bf6ed7ca9dbf777be7476befc9ad9f9f2fbb4f3e5e77ca972be84f275e54b75e5cb75f325932ffd9bf2259bf932ba2e9bfe5d97ea7ed765d79caf4b67cad7a5bbd7e552eb75d9f933afcb9fd765d3e775a9d9bc2e99795d22eee55efebd6cfabd5c73eaf792ed7ba9fb5e76cd6cf752b77ba9b67bc9ae7ba9d7bdd4fd65eee55e76addc4ba85e76fdd4cb353ff7f77aa9d3562ff59a59bd5cb55eaa5a2fb55eaeb96b552fa33dbf5da997faefce9f79f932f7cfcbae9b3f2f7f5ee625dbf332eaf36ff3329ab679d9e6a57f399b97d175b379a9d9bc5cd7bc6cfe9d97bfdd79a9d5bc8cfef54df352a77999eeaecc4b28ef4a1dd53aaa73ff8888edceab8ba875df2ea2da661751ff8da8f5ba1111b5f63bed1a51fb3745d45ad57fa7885a7baf5344ad9f2b7f6aede44fbdeea7d669abd5fdd43eddcdafb5d669347bafb59b53afbffb76ddf2ed79d75ae55d6b9fbbce5dbbfb6da1b5cafd76b56e75b4ff56eb5637d3dd5bdd64be7c6d7594b368b54edbdc6cb56e37b3d59a9999add65166d7ad8eb2bad5da77aeb6ba4d73aba3df6575d750eeb23aca5797d52ddf9fb35aeb347725aba32a57b2dad9b392d5daaf5affbdeace7f7e365dbdeadf66a65e75ba7bd7eaaaa15cb96a2653ffce974bad7f4e5f55ffad6acd547534d5bc99eaa8cffafbaca3ebf659377fcfbaed5947d79eb55e995977cdcc7ad933548dfe576da6ff55bf7f55ddbeaa927d5567faaad1aeb26f575dde557777d5d9eeaeaeebeeea5feeaeb25977159abb9aeeef7357339bbbfa97b9abfac955edb9da39573b6fb91ad5ce9673aeb6bbe9ae5c5d57ae32b9daf94fb91a4d4cdccfadeadff573ab7aabaadfaaf79bf55b6dfaedb7aafaadfebed5fe66cfdbadaa9965f5bad5e8df2d73ab6bfe7aababf67aab3addaada72366f75cd5b657367e6adeacf9f5ad5e97e6a35cafbf75aed3bbb5eab4eafd596b9bd56bf5646ffeb6ab5f95dadfe9e5dad465bad7ebfe6dd6a55fbcd6a556d33abd5685eb5aa75676a35bad4ba6bdd79aa55ddee75a75a4db5aad59c6ad5efaed4aafe59a9d5356b359ad5169ad5aed5a6cf2ab3dd3dab3a6db3eab259d5cccc6655cdaafe6fdaf46faa9ffd7d53fff2dddfd47d53f74d757ffffaa65af9a66bfe3edad3684f9bfeed69336ddf9eea55fbfdf674d56f4fd7bcd3b7a72a94f79ebabca7e9febba7aedf3dd5ecee694fa1baa74ead7bca66ddd36862eee90acd3dedfae79e367deea96e734fd9dcd3bfcc3dd5ab9a7bea4c734ff5e7519eb6dbbf3cd5bebf3cd5abfbf234da9be9cbd396ffcfd3ef79cad335779e465d9e76edba3c5d394f9d9ca73a6df7b3e569d7eaf6ba6d79daf294ed3f7dd596a7bfebb4e569b4cd9c65799a6e96a7bff325cbd3762b599eb6ecbbf2b4f395a7ede6e9ba79aaf572c9ffdbf294a7df679e36d3ffae69d7dfbf6beab2ef9a2adf356da17c4dd597af69f3f33565f23575a67c4dddbda6e96ef79a2ad9bda6cbe55e5367bad7347576bda66dd66b1acd6b0acd6b1a5dee9ed7d4cd6bbaeee74ea37fa7ad4edc7fa77a4dfb4e5bcee6b6dd69cfcc9d3adbb799ead599becd34dd2defcd547bce9ba94e376fa651ddb2bb992ef56ea6ad76a6bb997eaf9b69b477dd4c97ba996aaf75337573336da69ee766cab7cbe666ea5c7333ed3b37bb4ed7acbb4ea3fdfdad4ed334daf5aa539dea674e5bbeff9bd3df64be394da39d33f5cf6933fd3965f235ff9cfe9caef9f539d5ebf739e5edf6396dfa9c6a9fd3df731aed3da75fbb3da79cd973aaf69cb65cd973da73daeefcdd9caef96f37a72d8fb639f5f9d9e654f336a76d546d73baeab4cde99adb9cb63975d99ce6aed99cb26b4e9da97f7f9ad3762b73aa9959a9cc6962e2abec3afabecaa87f95deeb76fb57e95fe5f7ccfe2a5badf657d9b5b37d957a55db57a974aeaf52b9be4abee6e5f2554655f555ea55a97c954dff76650be55dd9952ce75da9135bde95ed5e799af2ae74fadd95caa5de5de94c77572ad5acbb523f73577a9fbb526d7357b63b77e55746b912912b954aefb992d9eece954a27e74affb65ca95bae54b25cb96eae8caa5cf93357aa3d7365d3bfabb2bfab52bfab52fb97af4a967bcf57a5caf9aa54dbbd2abdd7abd299f5aafc3eafcaaf9d6d5e959acdab52ab79553ad3bc6e65f3f7ad54fb5646997ce55ba9b65ba99d5ba96ea55ed368ba956acba35ad9f5ff5a19fd5e2bbff2af5a09e5ab56eaa7deab56ea676e6ae5526ba58efe376b659bb5b29966add4ebff59f9b5d36765bab372d5bd6765bb33b3676574d53d2b7b5676ddb65999dbdc6625e74a362bd7352ba32d4fd7ac6466a566aa59d9f2342b3b5f7533cdcaa8322bfd46ccd0bcbe4b68d62cf71a9aa3199ab53343335773ca9f39b7ecfbdfccff9bdffcfdcb7cf3dfea9b7fd6eafbf7ff5975a6f967fdf5dafc39b3cdeff3f7dbfbfcd7377b9fb3d36767e7d0fd7bfe695eeadff3ef19ca7bcfdfebdeb366b6b9f79ca36ccf9db33dab9aed99ed59bfcc9e73ab7bcebae774ffb4e766daf3babb9bf553afae9b7bd6ae9ba34cdeb39ba36d8e7ebd11dbacdf16fbb739b7ad86fa36aff96ddb9cf5ea6cf39ad9dde66867b659afcc3677cd6c73e7cde89adbac6affb2f9b72f6733b3dd8999cdfdd53fb3b9ebbf66eed79c9bee9a75cbd7fc3d67d71cd5eb9ad735b77aaff977bde6953779ba66f655ae99ed79cd7af5bbefdc776677d6ba33f36f35336b665677eecbac76be5ce6bef37299d3ade45d679deea79a75dae6a79afffaaaf96f56cd3fddaa9a5535aff9d5fda7b9f39fe69f669fe6747ffff234ab3bcdfaa977334d739a66ed5f6556fbeb95f9a759d9b95766bd2a3357dbaccc18630b4a7cbc6007afa5b5a1617073b7120df0f35590b360d62c0f473324cecbd22e929c19e5ca96e297ac1e188bc0470a3370f28cfbd93852202b3a384e408297ed9e53b0e57750ed07d57eaaaa55d50eaafd22fc7deea67137b96a10c94167ba45f0265477419dfcc9b4bdcf01d354c0e4f181176edf9eccb0218998d9b47d1655267de64ba6a9d1f5f02cfa2b6465f430e93b4f93693fd5bdab384c6aa59a6cc004c8b1c10cac9de9cf875a2f331ceac3c3438cb3781c1934c2f8bb0c661c19b0ea5e5a52c0b10cd5806359deb16c08c67e8386761fcbd030c666f858a6853184e4cfc996d5de67324a473248f848f6a6ede5ed257dd2ee42f250ddd36e7430aa451ca645b533b787862d3ff45f3393febbda99eae792ef253d05bf9b3add2c6f79aa8f6289f8f37e0cab8347c2cdba49d775cb5b9ca5e018f68631f609bc7401e0c83578049372040b00e3a876ea96e7793baebe82aa7e6a11512d42ddea2b08a67704fbe2ea1bd54e9fb5e7eaeb8f5f4370daba2a335a32ede86505fba876260fbb66e636f71d26a34a3f3f0a48618c8b5c0c8f48bfe351d1f1b807ff56ffac57fd7d3634fcdafbaf7dd72760609c05654b514b8d245aadb27e841d8d671a43310b16adad07c7ae21185f39726df13dadb347052ac6f828400a3e0a30828f0270e0a300447c1490e2a3003e7c1450878f02d4f05100047c1410868f020ee0e3162a7cdcba848f5b8730c6061080194072d999a2848da6a860a3a98c96014f00c360ea02369672858da5306163a929d8586a898da5406063a9326c24750a1b4925c2465273b09114136c2495b191941d56b3d6cb3d03628c05c483cb763d44adeeb96cd753b30e8cf6df7a50f31123c5224486e0a29020181781dcfd28faf05a7fc0c3b8d803e3228fac44c51d451d7fc51c02e0b851b451ac21018b515791467146514631461146f105560c175966128bd12c0788d0e7fb7d6f313804c39d3812a87b7bf2c3432c178d0c183a0ed8f1219d2b215722ae045c89b7126e25da4a605c748b0738c67800c6b8d816d9e2eafc9c0706367dd6d32af7d3229a3eeb691176793fffe356db710b99a4d3ff2c4957410b1eb7b28e5a9cb059857c4747c76cf7aab659afc8626775c0388bc352f3619cf5e0f35570c0da11179b788a4c2c404b8de59c847151c5b898625c54160f312e1a625c5c81715105c6c514181751605c3c8171d104c6c51218170b312e12625c2481717110e3a220c6c5408c8b23302e02625cfcc3b8e857e4c3b82802e362088c8b7b1817f5302e82287ac0b8988771110fe3e21dc6453b8c8b1ddc04628c0f613ebb41bfbf137b817f7a490e1b30215758877d24fc0c3d80b01314f4d067981768570848c2b0845ddf61b14e03c6b885282fad2838480e0ac67dbe625ccc80a783d50b561a303eab4b9ed17dbe7a12acb2566532ae1253f74caafa8caee76592f3af61951ec6be1bae7ab00a638ceb3e5f9367759fafde50d5745eed19fae46854595133aa1af01609624c35a8539da5a9ea6a974a0ba7a14a843146eb1a1515544a30c6c9a49a37a2023ba50ae3e48664928ed91ab229a2e1a97caaf0d41ec60e92746c8aa8e108df08dd084f859d4280d914b1f0e9db176f50d5ccedd3d40c693e6b655e933e43ed9abfb739d92acda05eeb65bbd7bb07e79f87c1513b4609c0388df5199ae6259a3153036ccc04868d99120cc012c5152a124ed2851293a4fb3849670c35879374a1b492747e9274a08c24e940a5c0384907ea0c27e93ea1c23849f7494e92eed30d8c93749f009374c64fc848493a4f5a9274de93068cb1a701493a63273f1827e93a1d76aa90a4e36487d30fcca904c649ba4da430de84d4844a931d9ca4d39402638c85f11f360ec00afb9ee6b79b073092e65b3a35df618c55a24fd142d1ec4c8534450a5885269c88deb57cfbfddc794509118a10301d5e52b325869b3e3793b967774b42f22c435dafb6f94cc5218a64d287a537bc00634c021b2b0dc1bfd52cc6c50768954a64a84496e6fc4b7ede56e2c2d8c995464a408c94c230a6b485f124b54911268d4d2a60947407639c96a44bd2b57a354cd2b5685ae57e819a99013d441a00779db805d3dcac9b6a9a99019351ddfcebbbd49e4432ed50afeade88b94fafeaded7fed0eb948ece27d7756b9fa3eb66ea55ed7c196d7372b92b24f59abf2062ee4b5375f42cddcdfe977c53b3254f5371b8fc6b35df5ef3e69c99b44ba6b15b33cd2af0cffc3969644486f1a24a182f128371daa21dbb75061a17fdad99d9ed13144191208cf1e1a1222618af4daffb0745878ad654ba44611249c0181121acf574ba9f5d0baadaeb764f55f7548e17edfac953bff3365f05a35a849a96f07f2e9bf711b59fcb763d5fe8b25deffbcde75bb079df673e28f7d3abbbfb60548b68359f67d312f9e7bc3cc1ae558ef7b5a0baf3dadc48f04115af6b403bcdf46ad67a698bbecce75d362d416768e8f7b72718e881d0d00308bbc0bf41414343ba414228065d1a7468d084a6cf7a776b6d6d6ed01ca8ee216ab5cdfbaf6f9f9a022400602392ac23a3b0f188266c3cc20a1be97c6ca4b3c4463a84d84847cfa8e40d1bf7f8c1c63d6eb0710f9a2cacacd4306b0302247e64e9cf20a018d82f49176d312e86618c0714c130c658c52f8c8b5e078a488c8b478c8b468c8b5d1817b9302e2ac0b89800e32202ac48587db23a140f140d64218b050864a91507f02902501450dcd22aaa7a10e36216c658ce2216c65879b214bdcaa4ea3c8f31562557adb2587d3d6dbea7a175ed4c731fd433b4cb53288f198c931a92c934bdaadb7079294f8b31e6cb764feb0f86dabf3935e42a9e6dc4d365bcd3c678478937f864febc6dd37c7ff0339bf4ba39f857651654b51d503ddb01b4f360039ada66b40d2bfb9b69fdfface6794f336bb801c2cafea6a1617f7954cd6b75bf4c359f72d5d0a97ac3aebfcf2cdf691a2818b67cff560bd22162a453068898fbd2fabbbb7ef2d527fdd6be73289ada73745df3d7bef3e59a1173dfcfc968764124d35c420ee8f3ca53fe7977932bf79ad9f23376ab38e4cb760f4fd5cd6852ed88b92f2df9551c0a2e971c4dab19a2d9c9d7d6d6d82a2479132f99a6d3fd79fb35d3affee5bacd7f7dd9ed93695de7338db6e49c1f26b99af91acd6efecbbd72ae4c6ab4cc33e896277f4e26d33c9c1b1c5c1c947766d2b36f6132edf03079e8fc3bccbdcd2987fe25f73e99a1e966731b5579ffad1a448cf1bae60c6ade30c64cffa76640318d9f24ff8ed2cc30a6e1c3382d430634a430c619d0e44123268dd9ee0cebfaa24944b3867186649ba44373468ff73ba30493309e69be5ec9d73be3990a388336038a847e7131006392349cd66a27ef19b0d1cc205fb6db0c19c6182db99389dc58e6115e961153c608c6becc0b0764566132713026e480c9dcfd86faa4867eddf34ee6a4d7cfae05936959c5a1a1a6a38bfe9df255131ea248b63b6737f9b537a4a3fb5a700d0d2d0cab308992dae5a94fb65b30d54f4367d65067d6855ffbb4c1649a6ff959e71fdacea1daf3669aec2f37914cf3fefdb967d7cd162cf8ed5d27e7cd64bb974c2a5f9fe49fcfcb9b83e48b17495527eb36bc789134abe0779ad67da966f43200a72d754f667615c659aa30ce4a8571162a8cb34e619c650ae3ac522d76fbaa3a5084df2bd8650f639cc6e5eddd031708696669cbdb0a499d7fce4b76ae77ffba1fee31db6dd6a69d79bd33e3cc35379b8369c94366bb9b3eeb1d66aff31c9ca020776656999369d1071fe6e0bc7f90d4cd3f0727c84c53e6a5e594e3357dd6fbbeef57ab2bafe0d9645f322dcdd3f909c9249bdbc334dfee34b3ef29b015927ac9b4eff9cadb36ddeee1e1d986410d9d7fa870e8f5926fd6ef363753ed35533ff5ba26bd9aeeef77ba5dbb3579b861c3a0060d8779b0423299fb9267eb9a0fb51b6d7ebe4ccbdb7b0f059369aa9b4c3b34e4ed61b2dd49bf53dd5ddd7499fc27ffeb26bd59bb2b24d35835ebde72cd72bfe4684c447e974c8b76ce6a16addd49420e985cb67b2fd95f3a0f837fc9b46f5621994c3b7cfb60d2638cf7b03100236c9ee4c44f9c375c9c3c7182c4091027884e9e4e5e9727cd2454504b9a494826cf2424e95c9e3c9390ac903c4baa40318893744ee430363a393649857192ceac427679ffad36ecbfdd7474742ac71bf4b0c50415969b514903254823922e4624714826783ceeb7aeef87233b30c6132868c018ab18678daa33e266cdcddfb3fbab86ebba9dffe55ae586ae1f8231de81f156872c37ac0046618cab608c054be0ad0e18e341820201fae3a70f1f8cb1d61e3d09f2609c85e70cc67880aafd9b27eb0ea41476b0e684000aa98031360ae162859374bc095583040a820827e9bed7ea199e9bd56cb834061100c4159048493afe936749bab3249d211e8980d07003c287b1f85fe25e0febec39c428ab8e215d268c99add6bd93d1c70feceadf6eaf0e629c452799db923a717bf7fdc9dca3510f277bde8ed9ee75e73e48011b7b04628cb9f070c2e3070fdfb5cb7bf22c49e7cf366c98d3d0e646e2fb96e3d1d119aafa4c37ff2ec473e6c10dbeff217ac89183531fceaa31e7869c1d3910ed8c3908b01a58de3f00aefaa9f95c3e4847e795461c5f461c026e74c27e6740aff5879644605f77fea0ea01a0a5f51328dc4c49a46303b661ecc89534a812138012d5654fa23dcd2708b89ee828b28a6f8f30499715146048525640da1900caa6010a2f7548e0c6a830c1868c9829080268c9d296846f559d323362cc0cb9301cd23c9a32a00c2933216a88273146483d11ae36d18992e32d82180e67262550ecc40a5758ca8060ce416be423eb0f603610630a0ee0a198dd98a8e0973a5d05661c01318913a541c19e049b0cf12dd1846548189d0e76c0f439b609c4b2c7508e067c63204a50a945301271a100e8228d981856ec8e857496680992854589227d8180fe266c09432bd3c14866449e273491b2d098044a9001862417d80a4b482ca84a06295178691a29992990a0c91f8c453120d57014153107ccc9940345ee20a818c120496a041194316536f6fca121e4e5edcab24e4322821c2a8c5dc52042785da46032bce4c18f9e570596a0d4870f8690f07020070911871343529111229324110f3717360e447f14b0c1c9198b61a06022f46ae2601496486631e6e07ddd689263ca8526589adc214adc1eb508804c029de6de93061d7dc00c9c0e8710a0ea4ab284069aa62e3119144099ca84434f1baf56322445d523868f42757aa392854ed382179014217ac326cd21304d1a7d4610b0d2956620d3844346c85c42c31ad1c0880500af6890496b3f30408aa2c6eeca12d1df8e3144a298b809a357a8034b6002394020b0e0c2734aca994e40e2cce419b5375722ee0112d5991d949aa06ee454a016e468f1ba8cc54dda448677762511717dd02460080997b28f50a82dab30ad3ef08ed01010e11132511208305e624b9630494a191407d7a66788b876e528e56d73d7502ded5e2d1fa570e563941f4728a48e5016613a3a160268696a03c507c505d5cdfad0c685a8425e75877d0e394a6c5287a954073946a058d210c44b2f9029ce933b5c06d8f924a3efc0a24f70466d08f4431ad575253f4ea5493967ee1e1b1ee0f032b50562ff85507a26f200b8e3e56cb5381b23a694985c591d16202677b03829e4d0f6a8f18aef10cd0ba5a8215ba9963937c72557524841c0624303432636e252cd31d40051ae543848550012ce12b848aeb51c961a052aca4896aaf3cc7b64a9eeef559044667dd424685860644aa2dd043f8e028b5dd2deac1968f1e777aeb46b55a5dddc5303d303dea56dd4db7996d9eeb48dfa0ce5eaca796a68e8b2bdd9b56bc8bead5e0da33d1baabacded3564b208b7b9bdea9e5639de71c92a8df70563ecc4c7251f67111e976861259d8e4afc608c93751a9249bac3efb39b4c7edeb665c8ecbba8cbefd4ce0bdb97e3a99d17aaf90ee3e2183efff297b995ac1dc64531591cc264fd65eda5bbe5ac6ed9ac423a810e196ac16ed5f04461e188bebd3c0e74856e6916242417801d15141a28dc2ac4ac4a85ea84899223448502f5b943070e1b3463be60a1f2648911213e72d89081e857ad4441628408420f84771b3010bead9d4970403846f845c8756000a1d6ab55a5426daa1489d1a1417ef0cc79a3664c172b4f961801924346b4afcd8ca2305084070e736e24d4485480504662cc8b84820224b65ea512d5e952a4468a0c09ea8367ce9b3462b85879a2a4880f1b32a2dda90d5110fe85c0ab1b84631bb4306110c22083c1b1412f058304068baf528dfa34c0a4478c0e0de273678e9b3361ba6491d20409911f3b6cc8887eb799aa201cc1b7e7a1039d5b9aa005c107820bbe04b90c080e102cbe4225cad3a5488c0408fcc3a70e9c3464be64a112a54912224076dc8801ed2c33501988a230d06f0f8f035d1c1b9a9904070b02bd028d090a046e0562ad32258a53a64a91161d2af4470f9d3768c474b922c54992224076dc9081d882859a62c4e09f5e5e9d5cdb19851111188c181b711c9160c0882c57a7426daa042951213f76e0a821c3e58a94264884f4c031c3c5db826da6862748008af0d021c35b1ae004c00662805f5c800500b700b1589d02b5e952a4468806f9c133c74d1a315db044617264488f1c346044bfbbeabfc3bf12827f7c20f038648053bb40e1c11f0331e45f02027f5aaf54950ad509132547890af9c953270e9b3363bc6ca902854992213d70d078f1e45b3d3c4138824f2fafce8fcecfcd2fcdaf0204bf055f46047e04fcb45ca92a054a13a5478b0400b4a70e9c3565bc5c8992a4c80f1c345c7c775555148ee8eb03d167d7b701831b5a853e080bfa8e7d0704f4e155a43e6dba440952a2427eeecc699366cc172d549e2c391264078e198950cfe7aecb9ca230904f2f6f031d9f1b1a85076562483e057c04f8b65ead3a25aa53264a9018211a2402901e3a6ed084d942c509922039662076a75e5122904f0faf4e8e4d841904110d448889308a40200200115815294f992431320448cf9c3666c26cb922a54908250100e18163868bd75d99ca15274800f2e985b00b9121ae2d445a08b3100ec68e07426cedbdda63856a14a74b8f14190aa4a74e9cbd3666c064a1d2c4c80f1d33a27dd52b0a034578d8ab9b633bdba3901c3bee1dd813f02a55284e9720252204080f9c3462bc68b10285c991213f76d48811f5ec56551406f6e9dd6d90734bd3b31041cf811e999e979e02bd027a59ac4e89fa3400a5468704f1a923670d19305aaa385112c08f1c325c3c3bcb4c5514068210f1c14ec35c5b9a8508c9055e2014802800020010c557ab48791a6092a34382f4d079f3e18c982d56a02829e223478d1888de5d9b39850912817d20ee3e70f890e14ded830508655f1f1410f8507cc52a15294f982a41524408509e3a70d490e982658a13254686f8b801c343e2b3855355e181c488be3dbcbab9b6b30a101a7808337a38e0618087e2aa529f305172a4c890a03e75e0a821c3a54a14264888f4b80103fadb9da628cc1becdbc3ab8b5bbb102199b7200f99c79537202f8bd529509c304d7294c8d09f3c73dea421f3e5ca14264886fcc02123fab24de58a1378817c1f3a64805bb300018f011e58175e02bc01785aaf569d1ad529d39da5478908fdd143a70d9a315fb25471a2c448101e386644df164e66565128f817e2c35d1d06b8340a49b23bb0ae3b03775a775895a9509a2a416a9468909f3c75deac31f3650b162a4d9010f9a183865df46dc132952a4e10da8db0e3d3cbdb40e7b67626c181dd8230a45d975d01017659aa4c89e2746992a3440200e283a70e9c3566be74d8d2018b14264788fcc021c3c56f9b1dd414847f7a771ae2d42c7478d0a10cac435707031db45a9d0aa5a952a34380f6cc696346cc162a4e900ce15103c693af4b25871384817f7b771b30b8a9717850c601cc988083010e023864b54a158ad3a5498f160930a88f1d396ed08ce182a54a9426498800e99163868b7703db4c559810fc13a167a761ae0d6d83d98607641bc23620372838b081c086a2ab54a43e69ba2469d1a1417ff4d4719386cc172d55a234392284470d18d1b765b154aa2821e807e2ae6eae2dcdc284ba066275c73a0505eab65c9d0ac5e91224468704f9d173078e1a325dae5081928408101d34603c5bb42cb4e10912801af83e74d09041835b1a050d111a8869381ed0008006ccca14a84d982839522400a13f7bf0cc7183668c972c559e2c0940480f1c346240bfcb4267158523faf6f236d06588cbb0762143840619c8c08c190a64d87ab5ea14a94e961e1d1ac4c74e1c3767c670b942c50992224078dc90e1e2bb2c52ba431424fcf4ec32c0a9d199d14948d22d40d221a0db72852ad4264a8e0e0dea8307031d3666be6491d2e4c8101f37646048c400ed2c862586152604fdf4ee34c4ad5d88c0200c431706031804bc42550a94264b8f120dea63078e1a3361b2445142648ec70d19d13fd7c2a91ea620e117e2c39d0639b734b30873656173c8390506e6b6e6b05aa53225cad3009622313a34c88f9e396ed08cf992a54a14264682eca001432eb1af72ccc313837c1eeae2dae42e40582007d6254740aec8aa94a74c951e2d1200109f3a6fd288e162e50992223f72c440ececf2f004e1df1e5e5d5c1cdb050a710ee2c6e2be12c40978952ad4264b90182532e4470f1d3769ca7ce172654a13234276d04884ebbca9aa803b41e24fefae2e8eedc28407706460704638037000c065b13a25aa13a6498e141902b4a70e1c3564bc5c91c20489101f3a6ac440fc6e339b087c0b81a7012ead0204b2b7b0b7ae37036f025ead3a15aad325498d0e05e283678e9b3464c06cb91285c911213d6ec8487c762753a9c2cd44a01b9f5b1e073ab8340a0edc162015b815702bba4245cad3009522311200d09e3a6dd08ce162e54912223e6ecc688bb6fdb6b6add97688627084080f1c32c8b9a5b5556883d0d6a04daced4bc18036ac55a54069b2046911a2427ff6dc99f3260d992f58a83c4912800fb61d3660405b38756653516284880f1d32c4b1a95988c080edabeb009b0036ac55a6406dba24a91122417ff8d881c3c60c182d55a230415224488f1c345e20fe96a9545142d00fc45ddd5cdb1a9ad903066b636b605c6b05d68aad4e8de28489d2234483fae091e3064d982d57a4303122c4078e18882fdf6aa96189116a7e7b796a1ae6ded02a38502b0b533baa2500400dab32058ad325498b0af5b913a78d19305aa83c413204485a8eb4196988afcb42555128e8b7f7c14ec35c5b5a9ad983b23430ae34036903d2b0548dea74092d125aa2427ff4d48193660c172b509614f181036d06da8bd775ea43142504fd40dcd5cda1b1a55d98e0800c4d0c0d9960005ad6aa529e06a8f408d120407beab84933e60c8c96294b8e04d94123eadbe6f1ecf0c4f16cf0ef2cc4f1ec0387e3d91ce78989b92b7562f3bf3cca6c5f1e7d7914cad755477bd651b5e7e8f7bb43f5fabdee5067aa3bd4cd1ddafc9d43a3bd73a8ba760e75760e553b87ae9c4355cea1d036b31cba5c3914daf41baafd86b25cf51baafb8642a1ce764399ed86ea7643a15c6d37b4ddd075dd5075dd50bddcd0e6573754ab1bdab5eb7713eaee26b4d54de8aa7513fa7313aad7dc847ea86679ba6aa8dab786aaad766a0dd550a5866ae8aa7dd6d09e35b4e56ed650683443f53343bbfe19aabfcf50d76768d36768e7bbf70c65f3b267e86f33f4bfed9aa1eb9aa1ce3543ffced09643353347f9937d57fee46d4e57fe54377fea74f3e79a53fe54f7733fd7fcf773cdafdfcfbffd7e66bf9ffeedfbd9ee95efa766e6dfeea77e42f57e463bffe94ef7f3b7b92bf7f3d9e6aebfd7cf68d7cf9647955d3ff5fbfcfab9eea67efef5cdcfeff3b373373f9b7eb7f9d9e6a77eaef9f9d42f333fd9f74df3f3b739cdcfefbd5eb57f5fff6a667fdbacecefd7de7dbb76ddb7e5eeabaebce9beebd6cff66d5ffdfeddbe6ce7cbddbeedabae7cd9be7de765fb72b57d5fbda6eddbbe6f5e57dd95ec1b5d99af76a39f43fff71bfadb0dfd3addd01ffdad867efd5c35f4ebf5f7f7b7fdfd51edecef5f75dbbe3fb7ef7fbf56be3fda7ff3bffd7fedb26fffd1f5ed5fbffd3bd3b7fffea34d97f7efeefed9ddbf33ddfd6be5ee7fcdbb7fb5d53d9afb5ff533f7dff4b97f37f7cfccfda77bb9ccfd47f96fa1fcab3d43f9ff7ef797ff357ffebde75ffbcd7fe79fabb9edfcebd575f977f96f7eceffcaf9e75fbfcc967fddf2cff2cf5bede4ffeb75f3aff9ef7a5555fea359e59fa76956f2ff7de65faf7fffafeabebfbb7fb4dd7fffbfeedf35737fadeedffc4af66d7e28efcdaf9fbb37ff6f325fdefc7e37bf6e7edd75f3473bd74dcdeae6ffb9f99d6d6efe8fa8fff7fab7adfebfcd7f5df567b3fecd34ebbf11f3e7fcfffcf5f7f93b7dfedacddfd9e6ef5cf3ffad5ef35f77feccfcf5ea4cf377df1ef52cff2e1bf52b57b251cf6c37d4b31beaff7243fdd71aea7bd650cff60cf56e867a97cd50a87ffd4fa3fad95fdfdffe7acdecaf7fbdeeafd7aceeeeeba35dbbaff7d1b67d7dfbfaae59f6f57fbfbe67e6ebbbd6aafafa66fafa0c55befebf5eafd1efbf5f2edfef7fabd5f77bbd32996fff9ed93ab7eedf47995a3ff9f72be7dfeb967fdf4c33cbbf77a6fb7baebbfeded5dfb3fa7b67d6df47f3f76a9bbff77de7ef35337fbf5ce6efd977abf9fb55f7bedf165e276afdb6f0bae7b7858fba9ed9eeee7a35ebeefa68eeaeffdcf59cbbbef37573d7ffed7aeddcaeef5addaed7e96eba7e5db5eb55ad5dbf6667d6ae6fa1d9f56bde3fbb5ef7ecfae67fb9775feed5f6e57e7db9ff9dfb68efdcb79c7b66cbfdcabdba57eebbdeeaca7dcf2bf77fc97d56b977a6dcaf79a7dc779da6dcbb997b286ffd72b95befe6d66b676ebd33cdad6f7ece59af9d9cf57addacff3db3bee9dfd543f9ea3f5f7d9b997cf5ec5ebd56f7ea57ef6abd7a36af5e9957bfaeafd3ffbe9dbedd4ebfaedbe9b7d37bfdb3d3ebc4ed11b7d73fbf7ffbaefbf6cc767bbf6e1f5dd7ed9debf6bfd5ebf62d737bcdd4db6b757b67ba7db4e9f5ba5cbe4dcf7c7bd3bbecee4daf9f2e6ffacf79d36bdef4ce94377dd7cfddf4ee6e7addeea6ffcbdd6cfae57277ddf4ebaa9b5ed54daffb5fe6a687723537bdfb7eedf5fabff6adf69def56fb9edbcd6abfaeda3bb5f6aad63efa37ffbaa7fa67edb3f6cab7a7bed5baa7decd3df5ffe5a96ff9763b4fbdefdcfb9d7a9db67aa77ee5bc997acdea66ea75ab539f7add73eadb9cfa68f6fa99dfec75fa66bf9b9effeca34bbf7ff66a9bbdd76cf6fabf6bf67fcdbee5ec9abd9ad7ecd79dbd5e66efbd6ed5ecbd9afd9afbdba319dabebd7dbb5edfce7cbb56dfdeb552f9f63547d5f6e55d6bcf3bcb79d7dbc9795f72de79ffda99f2fefdabe4fdf3ccbb9a79effab9fb9adfbfbbd3efae57be3bb3dd5dddccdd7f93b9bb5e97bb6b75f766babb4e776fb952b9bb7277b6f9a3cdaef60cd51daaf7f3d9bebaffacfbfeba7bddf5aa64dfd4ebfeb37675efad76b9eebfd51daa5bddbbda6e5677dddb9d59dda3abee4bbd57dd7547ccabee5f77a6ee2df7ef5277f6a77a5deade55dd755fb552f7967bdd3b4fcc1d9a7bab9fb9eb9ebbbadddc9b699ba3eb9a7bbb735f77ee7cabb93bd3dc759a7bcb799ae6feb75299bbfefc6d91b8df167fbf2d5abebbfe3dbf2dd8f7b7f96df1b650379b7bd4d56b62e2ebfed76dfad7d5bebfaef6dcedaf1bfdbbbf6ed4755f77ddeeeb36d3f675dbed74d9d775d7d75dd7d765b65b555f577d3fef6ed7aee7dd8deacf59dedd9f6a16bcbb6cfe7bc9bbcbea55c9bbab137777dddfeeee467b667777b5babbfbdbaed3adeaee6abf737775ea76ad42b91bfd5d3fb9ebf29f3f77bfe76ecbf7efafcbdd957337da72576db9abd3bd7257afdced79e5eed7dc65357735b37d5797f9aeae337d57573355bdbad1bcbaabfb759b573727266eb799feedaefcfbed6a77bb5deb966fd7d96ef7f375bbebbadd966be67699dbd5a9deee76d3dda6dbe56ddeee9ad3eda34d57fbdc9b2effbce9ea9637ddafdd96fbaeddbfd9aedd9fea65d76ed7aeab5dbdba5cbbeb4e5bed46ff9a5bedb6da6d73ba57edfe36fbacdd9eb5fbdf366b57a759bbfa99ddd65d79fffb67b7f9b3ebb31bfd3dbb9ff79e5d67cfee6f75eed9eddacd6ed7cddf6677d56d76b3da66975db3abd3bc66b7efecaeaa9add9f6657b73c91f35633a388bc85f2fee46b7e72ad6eff5fdef57f79e75cfd2f6ff23637ddced7dceadd799b999dab9dabfc6f65e75c7beebadbe5ad7679746d396ff96eb96eb94e5bfe37cbd3edb2d195ebe75eb9baf26876f275739deee59277bd5cf2e59277aef2ae95fca7bccd3ae5fd4d53aee4babfa95772cddcab92ff54b350f2a8567267e6ff6db5ef6f9bbe2d94b7ab7ef2b6d59fb7bcd59eb7cddf79ab57957396b7da6fdeea55c95b9deef623ead64375bbe6fe5fddb650dd7475dbfe54af4cdd3275ab6add3ad3b68d7e9fdbb6dd4e37b79acdad7eeedc367f948d76fd7d945daeda47d9ef5f36ddfe6559ce7bd3bf2cfb6affb27a4dfdcb465757af2fdbeee5f2659be9cbeafde4ac7f39fb7296e57fbf2d3c6739ab3b67d7dc39db72ce367fcbd9aebf6f39cb76fe77cb5996e56c74d52a67f5ba959cd5fdfd889b5535e2661137ab9df9fbcd7abfd968d77eb37a4d73dfacfe6fbb59b5dd6cbad9cdb6dcb9ee56ddac5e5575b32acf5fb34dafd968ef9afdbb6b369a76cdbefbb79afdab66a32a5f35bb6655b3e9cf9ad56c9b350be56ad6ac4ecceccf2ce2ee3fb3cd9fd966fa33eb7d669d7ef79ed9af9d3db3badd3db3ed662a7b66f5ea66b6e5dbb799e5cc36b39a6d33bb6696cdac76e6766776dd99557766bf6e99994d3733b36a667dba7b748df617f15d9b69fbae3db7efba6a666632df35ea4cdf75cd51beea275f35b37df9aabe7c8d76fd3f5f5dce5766cbd7e8aa5bbea69bafebf74abeb699af6ae6abda73e25ed7fff7fafd5e5bbe5767bb5725bbff72af7ab957ed5b9dee35fabb56eeb5e7bdae2defd9e57af5ad5e9b9fd9ae2d67fdd6abcad4eb5fea55f7f7a77a5d66bd76ad66bd4613f3da7534af7fbf1e9ad7169a57685ef333afd1aeb66f5e9bcc37afedfe79edfae7d5e5dfcdab66e697d9e6d565f3aa9d798daa79ed5a55f3dab9322bf30ae5add399f2d6a997bb756add3a37743b5bfdff76eabf9dad6ea67f3bff767abf9d2c5799ed76aaed764675ab6ea7ba9dce743ba3dae9becdf46ba7abb5b3d5dac979cfcc363bbf7f5938db9745e7bb7d59e895d9be2c5cf665a1d3fdb2d04cf56511e52ca2baed2f67a19d9c45bb390b2567b16aa866115d57cdc2b759b3f02f5fb36691989859f4cca2e79799597ced4c338b68e7cfcdeabff5cf2bf75b6df3ea77cbfb6eb7fefbd96efedbfd7dbbd7357fdf6eddb7ebdbbdbf6eb36f77b4efb745bb7fab53deb6bbeb966d77b4bf2cdafdb75e73b3dd3fddebb2ddbfcd4bffaaedee9cabedd63f6b9f35cbd376b7bb99b65bfbf575d9cdeebd75fbb2ecd6bed52cbbb5f7ba5dd7bdee75dd7a55777419af2a19d2107201ce0112298b2c986905b6c30f1a32800e3c1882a94b19496deab432163a844a88010d993c271e29cc20895319348073220662f69cbe68313208a1075d9898f6624b854908a81e9df09e350cad3a82b8c1452a0f273f41801e4e5604e2dac3205121bf417fdcd482049700f854c2a425eccb9b084f08de83395d24f006a469c0e6f8e654a4b803706798765d59ac219f9106484c2cdd4422f1c940133f167a4a127588794006ae95818ae2615a7892125d15052987f747d1c183e2c70f1412fad29497b8cee04e9935a184a952e54519a2127f0cc4221196b8ebd0ca12a12867ac7cc88991045906f1431326db0d2d320ad7f89f36239790009c6170cc89ebd4e665421c4428eec664047ab04405101cbd11c7166da22e3cf16ad322a729d3152d20cb9d9c52417884e02a2568f829790390508326931506a60c58f080c12b4bb890191bfa5b583336e9e065c6d2921b788b0a384d750647dd79fde95271235110d601c34e9b405033ac2e0516e82974aacc9b01566c2a11a118c13d827ed1e19d09497128f581760885979d31a9baf4c0bde10003f18f8a8fae495041410ec93c8fb43eab469179d2e54f501c3360585f740c49e0ace8940af1c923589a79c132c23d6f984892a542801f290aa87140c82c7b50485721d413e5a70fa9b8c8812b3400e6e7254d0785310b4445497be0a6029206e315421f5102497da120e3c34f480cbeb532010a3df449c3095491341e42c8588b62027304c949c010949cd790c59457265635388259fa445786025661c913a6572ed4f818fca812a662530b266a87441ce8834ac49730b746b4929b1392e23ca2e25641235078040297068824ccd82b4b7e726af4602135d023f185a9300691256d25a61cdea4576202b820ae31f6c9f2451460601127679420b748a01d323ad4000e0affde7d9dfac2a59517a1ef45173e257b66169a7828124a4c0a2b6052362227307ab950f1113490330ae7ce8cfd469b26d94110c00fbb37aea517341560ea50fa94c909a22d75f8d4585d24bd2395d628973aa812a52537898074d527e01120e1a5117f8e04e93436c906571f9790088fa8c6ae455e2fd43b133706694c9331f0849ce6193a401f5976107ac9d06b63c7c8c59fe490559e0a27d6d8d526e508a03d35447d1df698fd41e8f12eb8f1f68092163e1f600025d012230a9ea7af628a4c6892751a7c2432b0c695a540a1ba9c8410b47329495ae5a8c1489f4d07e690a1e1adc950c007212838d0d8407a9418e8ab8713236a19aa24b02457a8a74c98928371000cbc12ac6a74c0544701a5be2cd0648b945b28d09ed83033478d8107608a6800f35a20f722428cac5358870332f9d0b26684eaa55a2b636b82eacf2536c7a1e484321f594a89e9f93324f5a2caa416844b108151e164072985830c537cc8ce5040747134667ab3b988f9591a0ef83a1588474f2306766a0a9e42beb84a0e84f291c6ca0f20ec4dc215543dd48448054e1c3ab331e43da6d0b409ad829c4d97da305d6fe2105c60b0aa0b51cfeecd4b954a22fe8e40d0cb0bd3b3088f94370b10d0006ae0c0a58614b963a1497333ccdafcdd39c0ea559b26650c1bacd9a4f0dd1dbed6459a46958a812bb1ec6008866351c5c7113869541d5a5282ec33e3dd54781a4003b40f9e8c89c1916b8359293a637c74da938a0fc2c4294c81582b059f9e648234a9111d3e1b07bc8ce243f2f113c03ac9c824a689db3c048a4e15ae29a5d41c232c05e5bc30d109514e1334634edc9850435717f827803a5e41702a085e21d640e031d28a11a22dcd4706dc54d5e81a30210a21ae3e5f1f1c24c75011b2aac9820e757e6cf875bda9c3fa3380965891225e7e5cd5c1254ab0d6aa8981a420e47bd7e5f6512f1c3700491246c358072e15801660ea520891019f17122c9d99f27389158cafc04f8d0ec3a6b0da54f6a6481d0e247cba188dfa2af30153ab1d9592686193eb220059000c7aa869e1d5ecd8389e86282f3bbe1a85b5a948a590f0279436851504146bdcfb22c1489d179b0c50b861079081513dcaeec050d111252defd1952974943e0442c19a3ece60e09350b434a24fcf99418c8a18d9105091c72d7392e66fa0bb9060efaeccd4ab4c544669a4c49a56668f60dc15c150a9c8f425859fa3639e566dc2d4b7404734b04e85300c545250884d191da08e2206607e801195bd48111b91e9899046ab90301f55e254f0835006c4670386650f543f521940af494426645591bde000605490064e0504cc4ce41111e9c8460e38a0a692d883ceb2018381c00ca80e3c0c55f2942117048193162a0fdd9fb3152e0f9ab94a5c5f06fa9498b3aa15e001ea82800b8768c4dc40ea32072e5ac9d196197987bafc01854c2246f866218fa6109eb09c1182010a5c8892baea9058dbf0087e5031fad3d0600c05169a2d128977624c0141aa48d8619b971713545a794a39253404a8b0fb223687eb915700714f16187e79db0263be01f336c6ead30850ab56bc7291a3f5a1480d46d22b89044614d464b4ed992bc12389e233a3cb439a4938e22829c5e2f932a14fc880e5022a710409f00ac583bd3a498726c5f088be16f8c9d2b5c4eb0c00aa992e99b459b42bcc214e09905d2aa2d8a8e3668d261d46c8f87c1cf7d69c512a2144288f104757d87c55a1f21a324264c197f75d3d581a3d46321aa71ce165d92b2462e14d0548783090a9da3f8e6030a0e5c702e891046d87e880a5b139e4288f861c875e18726941c743d3e8434f974a51d2285dadc4485000f4a4539997ff814e4914750023a5481c80b1c705d81bb3417a12c5ca747051e1a84a12434a63ab360930ac02118290a73131c8a2cf330c9476280941d5bb46c0c8b4274f85379f8e7deb58e6216038457bc0092054996e50f65e719d8c8d494cd1b5c6c9ccaa43619556948d12e37542cf5e961384a7d41e1d07a85489cea83c3d29749cf43c14f941a641a329ad961ad60eaff8b06880a644346230fa423d392c64bac588822ce4494f11a4bae144a53ea39a52ae2c71c193c0da7101b24d02acd312c0a9570c1c041a11e16d4c6c001662ac3a708ae30a899318993074424ad2b103b9e74f0fb736e3571f4eab227099595747ed8601154831f2c041e9d134c60604f2088c350409068b0c2833c688cb2b137a3a6a25a7400b47765284e885e9d0b520c19d18ea9229a4c660f571604de0052b620ce0432764eba0d1044c9f4915b09725362953f4743684007d49e09992b8eb06853266a4a0d0a3c5caa31b2672ccc06402ae701a74c38360d1145540292b187f39d380c24b01a5850b33805b440031eefa84c74420182280b01ad241eb77c0988ccc2153617a1029a1955922850dc6f8ab14a29d48520ecfc0310351468f0a55726362974ef519c490420ac6b82c350b55278595385dd694ca603574907212a26cf9609505334640852c7c4d19c3a08672c710303578857b815a14b468863155a06872129aed27dde59ea7afc6051d42323110d44453a21745c444973a8461a1f4e0c31e27875f701cd59c39b3d57e9581a3d500c8a71d03c44408dc236583090c527e0cc0c8d00cb648aa2e2172f0820b054c6a0d8c34d67688296a51c9d50d2c4c1d905f48a5692bbeadf161e1ac42d6102363887851454fcc24d1b2f2480a616a0617a84002fa04283256e9d0a44f805e61ca10cffce850a2d22191ba057358a69f9eb7421c89a474d589ca459a41e62c35e1edcb8d1d0643d69c58ea3066848ade3393518a61b2ec8f064374c328e8c60c16c71d1db01846628c31c618638c31c6c62e5f3feaac5ee21028914ac4db0d2553c048345223050291a73e61e4a0605d81c3a7ec8260865026fe688ad1640b470d05692f8c19905bcf4449324292947c8b3d1809bef6281260284805486d039001f635693482ecc59f1e8f3165be5e5549d59c554877fd1903845081024f867818307033c54e832fbb32505d8a141ae0549a2b589c7ce0282c18a4d743d01d95de2b42b804b8a1d3a24b09491550e04c903d3aa22cb4e052e9f06a93a40e00204a512e0628b483030f9a6981051807f6dc3661c6287d3983c50889495caa8250f872e9ed7301f111d94176068c1706b6314b0e8d52fe60413aa3090225b1311d31ca5ea901dbc3778555542f8c2071190143284ea10440a4983df130e044c0895cb34807cf43886d809b2128962c06f088651a6126620d9e37213aec39320410901a2eb6b6358106c9e2fc9a305a25b6d17043d6c968e29941c09b94f5e445a2380e6688f141ba131cb52217d9c86b94c0d300901a48013366020562ac2bc2d7d1c8c54ae1d14e02e72024676e083440fa6ce282254dd819a3803babd2fc50a1b26db8740450653089700734f10aff6fea8248a1b302e3d8f7f40ae1258bd662ea433442042c80c29285983c291cc4e1e896088c4513548381d9001a795fee0449840195e945f3a818155d01e4c3a94914049e41a84f049f4b604312586995854ea1123953044482f2264ad937fad57591e91403d41e3d25785801c6a60ff7d205058638218c3f862fb422806581e96b70a6d01e1f67651dd2a0d84223ab632212b38a5e9b4ea7220cb1c48607b14b55d859073c08decfe6b948080732035f8850e4004f0d213468002411b7049412907dddb92301ee0520476ae28c0c424d067505c9d044ce6e4728e32aac8b539a927a85e25363abab0e1ba91514af3e8d78b859d0d63dc841f8b667a26eabc986425e2e7445b8041740a9485f10e1814003803c114dbcda0674508d2aa1a82f8d97bce7b582c6d89e2c65d2aca92998222149b4c909340fb8e00c101418a36cdb4913c30b56d81801909d7c6831cbacd881b3b4a2106bc5a31063153add9961094129bc156738cd4173c4119709234d5c2115d68458c0562695b18c0b92a7a2c34746142627535c254f115ef112f381aa0d12a430536cf081b105eeccef44034fa6382441d48447a53765c71ad00cea58ca04263897e6c4a5996a3b63ebf1242e4c94980c464a0b1b6ccac04953d729cf4603b51489637a402a6d3904a311348f5839c258e207902d01668046ebab0a59858e30159883ba03cc222b823b36888a9ac9c4e077f8abe3b288485f93855f98b0070f8e03b4b0e5e8a18789a07cd7028d7b1182f1215497092d71ce8d68000810f92cea52f626c71fe59ca21696929c1274a81511422392df4145aa03935a0c559372ac483c04a6a10bf0bbd99156ad58d3848229311f6506bcac10d974c3045d5c132bd4a8289e8c133ae560e4d696c68e120b4b6e0eafd497182d9988bc7aa5cf24d2b0c321605014598a420fd0c878c5e1812207442e81d094d6c5a6588a8c82573ade3c6656a97112a5e2abc28d510c0278b5053150c1b02a531aa90564b0a85d9a7b85a76540013d8993e8c674fd6571f48952941e7b5b02def0fd51c37855212280b3918e95d107bd550a7eb368c18167083c85b6e819c116e9d0833b8de0c2b4c7939bbcbd3f06fc321971848d087a3970c3c249224507bf0754d8203bac618eb1b8804380853280b98b88e612404c73b86aa07083b0488cb1ce80020786848628425209f58ad3a0145f7efa080d90260f9c02b13e606464da2a43262383b022614d562057833e05a18a42420572e2074f9200a67c2485a460a73cef09cfc62b5475883c0689ad656a663a32640043ea2b537c87bc786800e3818d076c4a45d88bc16154a4038584473070444a995114f7c51326542b006890842da163ca3f5070c3048b29a67410b09281811c37330a3405a0f99d10bf821f04218e7349401ea29c34d08cfc762c91b1c32f4c4005d50bc7a3c021f08185389058281900400606221fc7500a267039c311e5a932da0914040b1a4ecf2d8816c6e84b3ec8c09ec50ea866312278084e459c43344a658237fc2ac118146df6a173466d0e430ae360db183f405436499261624c9d0d088bbe06e0a0824a0d115814415a2bfb41899320b22a42e00c3c7834640821ab08a0c83269755dc2406342a93e6327e25424f9327615bf0cf34872cbd445025587142b46488ee02d38b546919f48084c9c9112a5c1f882ce4857a2a10ac903030add8881691f40ac3cf152c4a3ad8282026c97062a36786a81c0ce82bf4d31c818ff10f0c2f416840b82116f5d5da3d4d444c891f045cc0c4516f402e778117255ab18885113239ba2e02f62b618f36220d59a4b29e820a57b0403bbb0fab8bae87881544b65a50f1415868e21a408421eda28c432a042e00a47a9bdb0b23dadb103c531907a98ea8a41a1375911a189072e1035fe2ea051c4c753a22c53c60e493a8034a19c64caca903a2e4106f1c83f96f889f1364dccf499e9f36ac3b169cda738541af4e152634a767078420685a51667981e47482188586964a6d19c10442966787d68c21095c525384e3a7e2843a8c7cd8883080d0e54b24144c92225618767891da266ecb1998010ddab1d51146858e0a729624da5b03b638e3d7158e02964e0419c1a2bb4a8601098a4c20b350f883afe6ce24a5381df380a4ab4ef890fe760a432129e281ac5034c4c0eb0295a9e3e580883f4690bd0759639c9f284c707334466a28069c263e5470e238d4c74de3e8b2608a2d48a7233019121b007ca51c70d82c4e0200b11c6b906440f99a655611225b8d1084baa0285075663e88c46477d98081c0960723566c2c01b4f77be92189972d8a7d04f6e25e593df17164fb2bae81e35aed0e224c22070e141893bc72e2c2b8323944649bc0491c0a614d4c5d91717001294e408e04d923161ccc80860e2d40223033cb9d232e7a5159431520d7a8879bb34e0386268066165504350a200d080d9f3f28145159a512b88091070245063c504a3314f43d6a8624094f8e46519b8fce306720930e61f793a4b72a44f9c51333a2cddbc0a64ae435bd2bc71b1210ca843401972c6f85291383028c1cba204283821aa51c470b90b04a06026c98f017aa97c9f0d9400217f3ce0d362ca1b5e00859c2038099cd0110b7301468202677cfc88dab2d3a9089e282e042ed22ae041e14a0e185e13a40b16502497a254644e8972e59621692862e2c14bcc8b0bb1c1994f700e44304105101f3ad1e0c420120a559c5f84a0b9052a6119087554f21d25c203812ffa622900d08c2cd0b01845bcfc4e79699084918c1d359283061940896342e54c120a300819b2a0b2656bcbf1c1a4e495313110c1547141e5ca962a3dc03631d112a8ecd1d722be133efe9007d6b24b3404b32c91703204528bb4078a14e8308ae12a242910091a8b7c607123409e2d67c052780d58846761d288b421ab010c461e94b98d89e02a548a89a5c4371d09004865c1c80154abe9467446a0f5d050d3ce2a365f8138f5b8222189a4228828811aa6e8b690d9c0f4c5af6da5284fac5004a5327b04bb08b97e466cadc8c247c821212da00a435f200ebcd21fd08c78e3e6c76dafd2bbb72091200e1b94a497ce66c4e940a6a248932e660d0a3a1a6ce08c04417774b17131c56b8e724c1353020384ec1c61f16536c663015b1b1575928382e479d9d86952265fe07ae535b684548d541ab61861230990ac8dd78645b9438b2a697c144a35c0122b10348d0519926a489003575a3da8548ce0ac12d792b126aa4ae4c1a4eb9a6c9831408302649c7c87ca532a491b8064254816107114fb8421803416d49808b2764744cb014788b8e06cb00a4c2c2387ea91591302030a6441de555ac5143bdc3ae56506ab4f080480628250e83a405203c067e4206b03d9102b0db4e0d033080c0b81c0ae01eefe5431f3e7b847f0490d3079ee1412c1b6474e8e1138ac8d961b944e44d3e895b9d2b096c55207069a8a6021630b93302601461f0d831e0d390636c932084a18b0b5c2368a80e285b1300a7744f00838d188151be2431e1ba52431603bc6c9e9086524c30e2789a2ea2813c6475eb0269931c5ea0a9c12001190c2c2c0901466a150beb50154830d0f06871e9595b9e0444714dd1c4d7420ec0bcb1f47ae18599f0a91baa66d0da183364930473ac0060842d557874906b30b17b34c65860620ebb3157708241bda21316246292104842e5794ec589548c168872b32506f0afd08bf623831ba68bfd15967e58cd317079bc818e0818d85e802138000c11c85442c965d4506f0e4b621c0a47a2ae08561ba9be175ca0a8b033c1c9960c5a64d1092836372c10be486102f83625c648293e9d0008599bacc10bba23e663cf5b5808ec831e250282f7f48c8900d54cc22fd114002a64b7c5fc604f971fb7e21cc98c00ac133244889b8e8c89052418c273169a400c2f1e4c2264cc8510d76b439b290c2128f2c0a5acf4b92c6d430b1e060e49362b0e94ecc1d23529670a9004585e9664f58008204c0b87851e910f9ae7db0baac5aa186829fb1b11465886245f2b4a2f3a52a6ec9162729655484430d4e455bb5395153e7159cb44c7bd43c1938aaf2b281c3945189320e391a01e30da93c61a90afb02f5704d34f063e48a23b416a91ac87d7180c71ee0cc386b020d2202821e6bf879e31381c21d29880c3930d2874681b054861dab2f6c690820d86396ca55ee63f0c2d0e822518c087d4664f888305249392268e304c2f43bf4ca78a7421f3f375a60832c7c70e73cf80107d1b3bb7ae0dc2abbf3131d08e554f3046450c19b2e5b788c4d360003be26b52a1536c8e3500f4a4ec0eef0f4f8903579d3576c2f7c684e6c94190d8db1aa42c70b20535a6086188a558c17ec0c7174c984172c13748234b141e5c3179a3367bc0c41816189716bbb537b242253d30727d27022a343c6c115a1565f8274c179530a91cc2822a946647985f7e847f42b8ded8720897942b174bd421e524bb280cd80403f923831e22504498c4506dabce81af44023cda3398d8044e128d0034122cd6b0be1240987baa0984468018c99b0105d70f4c2240c5f824c4f12cc9d8af4e905e3e22422d217213c46282b5062c2e9c816352f0a2b12251ae5bcc2a60c198d2c6d8e89632de2842858fb20c4cc901295ae2d894c70e5a023b6639c89451979f220a2008539a4961ea58ea3340d12050e70e8899f3102c408090161468008980031adf079e0e008041784253f066dc97149c278c27401a1890f792603d4d6871b0288754085028958254862725138095032a1802191b8ee42ca0ab0063874601ab041edc7a9f78682b11def9363990f4a4f70a4666c4be7e11ed9ab112625f02c867b648203c14017fcb0694289819e651a2807d8f02d5ae8988a33c01da3635d87363a7948e1e04320ba482ed49e3d61078670f0d1505934f8480478c793860c0c1498f9032cd176190003483db5fb8430ee1134a6885c1e9f2c7d1d5e8d51699000ec459e235377bc5a8d4812d92029041642652808bdfe13c58b2bcd3341963c01cc6134e1f5a7b927151aa6dc229acc0a1cfcfa84a2031d56d068c6f0075133ebd200645ddab846b53952b866875ddf5d514a952e4daf422821514758a85405417b7779cb2f1da76c038b1f5e7688f25a288a083063c1abb44a41b6d41075515370a7437b40ea9201c32f519dba4b7c5a6d46cc1e68fc78414a41250829048730dcd809b46355190b0addfab48de152f3e442a9e5203d6fa0747dcd58f10a0c17afcc103dc42b7bdaf04a917cc66142828b8e4fa11ac14a86228c95a96084cfd034b8f7a21396e62302675c6152a5b823a6c8ffe209b903abc71d374846a7ca9c224bd3a5682fe182d5097a61cc584a0a294a950efdd9c1c81a4d43a5b84428bab12401df0ab568c6814134708c215704b21427b0409e7644926b4bd2a543b1a70d486a138044f72c3591009c3044d5c0508443aa40ad2172b2828e1881b553a68e959208487188418e396d30fc5d81c34455982337794819c052a15b00a08a90343b350dbc2ea40a95400899206678fce8a9084d38b2195ec46d110bb4644d8053791a412811a6d703459ee0219e0c1806de3585ced2189cf022caab39376898c24fb0028853188ca8bc80f565086f6d96881995ea4cd50d303488ca926b562c4d33cad64e2162905066e547a526a63c593a1901061c2188d69823518239431a65196f5f80ec4870ba02562188b145a963141216198d415d9880c8448d4992a09728413827a5f2e1cb6e8e110c8cab0d00542e6eee9107e79f01c4be9e308153dc23b155cce37508cf9cd490cc03167b6301970f796a18f121b67023d7d52559a91309e1d4348a87823e20bca87c790d502604ee89004b629c8270c2181958d024554715b5f4a290e5a8f0254ad79f2e3b060dc0244dfa92b628a468b5e14c7a11d1581c2d4251c28d9f5ea03c563c641a2b1587eb08a0a8b44d9951710d90422597a2242c540426512158566192202a42285e0a5ae591ca52f796a5921fcb646af53026c80a09dba0033406391222a9ca1b00845c1f8623480fb20c826021da4900be810449e40909c24d23ee384b853541ccb8d2460c8d16172f5826c4e111b5a28689c34016b8bae868ea8209d1240d852ebaa08d68b8407eb95d2194f467511fd6840002149aa2486c819c205e98d88d88a127468408bd1e7f0d9462c814ca1974c5d1a2462b188c79a1747c02863f13d900808b963d6c0809f292200cc79881c12055f61c096465a6e306a22e06580e839891e16ba32a4b1bb70196070e1d29b02ab148012ff5428b00b805243d02c042ade25c018810c5a850810e410ad90050e629318421350c3e15c9e347d0984e5a7818cf1c68ed8c3a9268e32652167fe34108a6fcebf1544b74c18297b0a201ac2e5dcae828b1c73680e04a153228fea1f375c4980728c2198943496b083b9dc3257e0cbe0e617d9163b1668c8217051d559c2957c87cd408c3e181793826c9f10fcda71e09ba10b1fd098a3874d2ba5abb089140b3f7c5d7aa4a050673757ac001e0ebc326088c1644aa33204a021e522cbb8351a22b9c0875ad1328400b9d94b0a3be3c984c3345af3c6a6348a0d9684bc128b2698edd14ad0573ab9e7041ac14824ca35358c61421e0a1abf8e4ae878f2060c2f019d393b6ca431fafbc1b01586f9036007d4f5b859135f870dae1211d9d77c07c95c99c66075effedd735e31d2673520b49c3909bee3c4563b63bcdfd6fbd6db561bcc586f1d69a1ac65b69186fa161bc75b66501e32d338cb72a60bc45618284321a6418d72531de8a80f116048cb71e60bce500e3ad24c65b0d30de6280f156d916d982b12db130308cf180ad2f8cf1d671cbb8d5b5c5b5a5e0d45602045b07b60c6c1548b54580d5d6802d008c44f9102fc1d891a8bf18dc6ea2ae0eee12893adfe0ee90a8bf0dee0a893a59540f323ab891883f10558c44e4c35f655c886f8808a02ad8a26ae0d6e0dad8b60460bcb585318e7100898886480131893156dbeda4dbd2da2a6e656d616de157ae5ab15aa52a15aa53a64a911a55a6f5267affa9b70f769b9343857c0d7c3318638cf52627c7c6e9ff79549130c658da997f5c24afc577c002eef824decdcd10a8be034e87d40dd5b836393d7dae3768a1a709c618cb90ab6c18e2dcb4705b8070414d797b13e34a71cfb6fa5c22ae0decb55ecac1b9b159e185f88badbcb9373736253c02c6980246b6ab5a2b5b6e74746e6e6c3fda1410fc6c9db51b30c62d8fbe4ac3761bd2d175fed6e6c636837dc1a260b5b4f858bfb6c6c6f6572b6b07ad076b9239b82628e78e2229a41392dae636b635b614ce39168936219d6a7cd96eb7b5353640163b58ac4972c380812c6f27daffd0e6d33637b72334f5d8d90cd635a76f7167cd3537701892482620262256dc1b063224b30233811ac339b739b201cbe41adb1c2b2d4743d17a45049a4b37649b9303a56652f9a8582a224338b94a2a19c6b80c235357a99620fcd3d175fe0697282d912a61a41d7e9ba186726e717e945fc98531d6c2522e0de3e6e4643d7950c3028ccc5c30c6be4dce8c9bb8b838382d87eae181b343a58e837362c7b0c403433038ee6d8821d70a2bc815aa7034bb86fc1bbadd58a161c5980a3b590456b0ada0b002825639bbd4dd50eba5d77ac9d686a8e2858a08586b6c706b8a46296e7cc21863c161384c1101c52514431ca540a610904ad572726f8328e690274c9d908231c658282c205120d9ddead550fb9c1a7edf39d4b36f9b53c3b837bd131d4e3c30e127cb090c27d24e5c607ad6aded4d8389d5c4801f2656c461705b2ba1a5445b220c638cb190259094108231e6c2c81232d69c1a1a7ecf5d39b708c8423d852bc6186315d281930b2bd422f4220787244c22090f2c388024c189042124891718638c8524f128cead8dae52223b3f8379828730ee430a222205f93052f00d7f8dc911d40a74830c2481b1908375584ece3014c65aa030c63158890acc840c6c840c3c840c0c845dbfe3e846c4c9d36e7410d00da016a00fe4df21d20f0dc65f7bff6908d28f02365c73d7f2a4d529ebab4f0392cf08728f0fa9f78604110573daa469804c982e59c2186bb5b911d2aa4409bf059a24492b92d62148186b09f2f3c851238cb5046064b844e60941e6bd48d22d529408d121010c152234485020406abb45b8b9d961b04bd3e2b3474f1e3c5a6ff48e9d3a8874e6782d3971e00c40d6fdc1588b4917367b1bc0361c78e3a68daac5668d86a5061468ce982983b116190c4430e46053448cb55ead315a4f315a62c280f9e2a50b97b737b854c8b8191863382c57ac54a132454a1455afab1614ad274e9a6095c9123aba36b7a79612ad245a3f2a3898eae76fb71ee1babe7e705a3fe030d6f2e1a6d583c78e57abc50601342860e8c3240babcd8c32890608a0430549095174824376407072470efa6880bae16ed431ebcdabd5d99f39715c9a657e50000d3a32e1122a539900bd14e744e149c258abd3d1bd69e9d0caa18543eb86960dad1a5a34b466c03de9e8b46468c5a0a37bd382a1f542cb8556a256540b510baaf5747bd2d121d1da906814b0d6abf58d480b0830d6f25a5dab85f7704f3abab7271d9d1bdcdb938ece0deeeda9eed1d1b93d55ccc9c5c1bdb9b56d50c196cc804243daed36a87b1bf8928e6e43abf936b49a4fb3d92fb75e5d77e1060da9267c97aaf7762ae67ecf805195dffd9e5d752faaf2bbb936b677ee55b1d616d54e756f50f7dadc5e156fea367c8b7b37486083f5df1daa66dd956f716fdbd3d0bb1e29e10f29c10e2961cd2c495721021b8cf1dc9b6a42bf5d3bbfddcc6cb766736bb8baec464258e3fa4128c7434210e07a9c95857cb0438f03f2c15103c6b80f83403aa081311efc5a10991485f18c17d845b2c2cfdf37180209069b537d68665841b35cf0f0a9bb8b5480550059a60649a6862c89910b1260ad382d38ad372d37e458581429e60763ec22c5de9061a43046545ba4971724321312d98731b36dfaace7ff8e836be3d041ad368cb5d830d65ac31863a961ac958686113dac39e57c7b827ffb9604f763f7f4cfed5e57f39d9aef7cf3f77d67a7e63bbde62fa8fbfbdf0feb9af1a27f0fc002b672d7b97b808383838383837b7b7b7b7b7b7b7b7b7b737373737373737373736b6b6b6b6b6b6b6b6b6b636363636363636363635b6b5b6b5b6b5b6b5b6b5b6b5b6b5b6b5b6b5b6bc3800103060c183060c080616e6e6e6e6e6e6e6e6e4e4e4e4e4e4e4e4e4e4e2e2e2e2e2e2e2e2e2e2e0e0e0e0e0e0e0e0e0e0eeeedededededededededcdcdcdcdcdcdcdcdcdcdadadadadadadadadadad8d8d8d8d8d8d8d8d6d6d6d6d6d6d6d6d6d6d8d0d03060c183060c080010386b9b9b9b9b9b9b9b9b939393939393939393939b9b8b8b8b8b8b8b8b8b838383838383838383838b8b7b7b7b7b7b7b7b7b737373737373737373737b7b6b6b6b6b6b6b6b6b6363636363636363636b635360c737271706f6e6d6c7d6bfe9db3ec9e09e40016186375cd5a5077401523b75260e49619466e7561a416278cd48283915a433052cb89915a2030524b024616556164f1104616a56064f189914540ec2601a7e10817701c322b094666cdc0c8ac6618466681c0c82c328cc4ba849158713012eb0a4662e1c048ac1523b1e030120b8991f8d5050a18e33131073ebab67f5ae57d7af7c1ecd5d483a087b4e6a067fd6ea65dabbc4d6aaf5b6d97a66a34fda34abbb4e667f5df7669eeab0355dd42b3eb936b6eed5a3bbf33ebf7dfab545365f61b516ff5e7e66fdfa4eef983f74be63b2d338cb52a60ac45416b82de7d70cd2a3c9cd81334ccf390f787e7e7c130f02f30d083a1073e12797f7d8625ecfab257534d47a7f23d3730f3a0865413cebd1b58fdf7987c55f774bb99ad07575e481d5db938b64a91caf7343838438f971c5905beb13d37da1b1b61f2b8ca489954667c4f534b9534ab8057dd0f18c058ab8016012da8c89486de6737b79bdd9d7d5bcdfa0c4d723d8cb5f2cf79dec93724cf34e49fd55308bcebf3cf79104c6d66bbf977a35d377fba574196f70fd14b968ea5a6605cac44e94fb35c50337a4b4b4b537b6e9222310a51a422245c7ce408e36223466d6eaa73cdd0e4dfcb6452a7b92793edcedf99d764542b79523f7757932cff9f2b45013a8af263969696562189b33c04a6088504e3e2a1232827388c9a9a1a90232807bbbf866f71efe7abe0a71dd8d07573f79ed6e03f4f737f2be7dad80c7dd7eeaa9b6f27311880438cb1097cec8401e33409cc7637bf61d72e89016c38fd618ce9e8929d2f396d3174bd218c8b8508618c19609c05e6b8a9a96548f2330ac7263d52647871d1408397ef26e3a9c7121f0843cc64dcd18d686b2862230381850595b4840c898168901299a0be2806152e7f213aa09814837524820b0ea01843ae92861df87512a348d60ac3925362600032a22785d90f3e184aa002c438a82b00232de294339624030c35402fcb21a150bd488580508d2795e7859d025df0d4b130f762c8001ece4083aa5e98c872f7214c87a917117000829228c0d00528a78131abe6f85cb0c98364e302900f2e70142f65f1a823e40230d02638ba248c5c8c5df2e0e0948915899670682d38032123718c5cdc0b08ab4e74e1a3c7e1dc179ef88140861968853f12bba4b05af6f0e2461bbde529004dec8b6219122543113d75d18e804f4d8b14b6a886494719dfad46148005777e5298c24224f402ce0db18289f824801d65b8ac5d41646ea1331b1ca506b1ad931e075c7452415ded7578c3042505540fdd923a9c62888106a0443a79d336016a581c445b65c3855608f4f4a1e6e4c47394a20b547ec0f07ac699038945626ef3e4c1b4e4498f9fda7350904109291b7e3c937731bef0b93af46a2ab69a84e413ea3513c8951f74809c7706166da008cb7c4354310409308c81d7ebcf910c1f47c39774604c1b9d57e9ef028286a6414aa0fc971020123f31ecdbbd2d1c99d283fc063e912129c492c31f2a41a94b3450cb4f8984e6419e2fc8af4cde68f5411a3e6ed29a2014cf3f3ecb0f887f6168a0ff09e162932ab62e3d49bb878711523cba320e0053f04c19ea68ae7a9328a1045b9c7245e74b0c48a31675dade1e2522a2d422081a36ad889870b62851448dcd0e49d80282160973b0a32ef793e74dde8c0ce0ae319be05587cba07b23b929cfc90e3c17d015abe366869e143278252748feb05f7eb818181e5a4430d6f144e58033026c18e11e16d059703a7972ae49463cb98171d632d27200435586d45e718229c92a1a32da16210221b1622e69337061e086d685b4021c8ca1d383ce017690cb3a19fc6a5384d22576b9a5cb9ebbbf4d6c9b0342ba261ec2da2a0bc210546ae4d63c78d62243d83099cb3368556146459d20076aac14eac488335007e71c95d56705572d38e138779090c1d6e66ce314842a21558170cdc922d326ac391c400ab028f3e90d4dceca0016322c25f54c08f02cf6582037983b3d840776a4411f4d29798736972424047fe842ed8f290c1122e589dd414d242f5efcc2ec027398895f428c690ac0c4b1ea8d00279a531a4051bacad36b3a9b709b069cf13182a889b5a350e100e891e92701835059226c62226941e604a7321ecc4c2a481808210c31cfd8c0b0b4959763696a55124d2c9ecc2de92821796a2326d512088b57950c69085916eef083860ca003cb07850ea11262a04e7b6a00e7440cc4acd588692fb65499b40d1037b848e5e1a4fd1215f21bf4481df6e54d8427044fa5f4e654a4b803716a182426966e2211aa510fc8c0b532886a9eca750677caac1925551489b0c45d0757a99532881f9a30db52574800ce3038e6a47432023d58a21228dd6ad322a729d315a5206593070c5e59c28694da8ca52537f016255b5ea5a7d0a9326f07321e3abc3321290e65227ae0de708081985390ca13e81892c059d5391405f7bc612249d6e19b431d7e5ed274501873187885d047944052876502147ae893a693212647909c040c43199601b3f489ae0c05c3183faa84a9d8d40df5dc1ad14a6e5018ae80a447e20b53a18c155b0470415c63f4b3e26f91403b64746845871504a4b0022665a30a43330ae7ce8cbd2aa42cbda0a9006347058bba487a472ab12ade0a55e03e2e21113e9a820fa4314dc64014298ec8d06b63c7e8458adc26e508a0bdb51417fa50982aa6c884265987628e931082762e2541f1030d6f4d86023f5010a2787082d322e5160a342827d2782d907b1121c6891a6d27fa4e8051e16407298583894926c09840348137c74402b812894a5429c14b607096d0fa5428e847e1924885ea8cc2354255847742ac81c063c415211142144642097e5cd5c1254a402294db47bd70e440a20d891c819f1a1d8651213182d1a8af321f329118bcd428ac4d452ac52099bd2f128cd4813108631044d3c7190c7c12068d6c08a8c8e332107464ea55262a930a66f913f407043780f9014654fe2238204260a1b2c028813bf02d108fd89338c2889e1187ec080b28b0d06c917001580a500e600f434012800e96fc6dfa43f3f547e38fefcf6f929f97037ed03abf3bd50f411fa23e2a7d6ddfdc5f71000ea94af515fbd6b1cc44f80295bd575c270bf894f0a57c6a225289b0731431648b8813762222000a012a049b1038428c5890e04e0c9549883d4b7e6f4c8abd177b1ff6f8f41a45f5b064bd8e49afee8a1e002008818002a2490984db07571ff47c0800ec83e107334d1e487990e38147968741380f491f16ce2a6411c9d39477266f469e883c3c49785df09e78767807ee0edd51b963c78c50c118dfc9e93d33618cefb2a4182631c6767ffe68bb24886ed8a54641766937667440c5a2439d1d1d8474e860a243040ea0700afc00e3b72fdff62bdfa5565365c6a070242c08cbc162b09421780676f12106c41df01a4e622e8cb1029c0023c007b0015c0013c00330005800dec25ab888b33016c659cd2cc22c025945ac57184bd518c6585fea30c6ba8225859198ac7b9602035959ab4e1d17b1f23dad5d546991218cf1e1719119bc08c971d10e8cb11bfd8bd445270217f1618ccd92746749bab30a8bcc162593c99f932d7f7d66599e263fa26e3275cb57b365bbd1d42e243b4ffa65bfe4e7cc0ac9a44f46b5d3ec03dbdada9b026d6d6d6ded4d5121c96cf37bf800868ab343bac364fbfd5ef5ba9bd0e4873f0f52b6e460b3b6425469d8733335f43b6db9eaa38006871a1d0f150e2a0ac2b81808e322a03f18630278898f02c8c07c2fdb8db66c779bdbbb968631c66786f8066c3a16ea83d537b6b6b4b5343634ad76fddbbc3bfbb6dacd2c54b7ef6edf42793859a8023e4ca685061c32dbcd09637c98ec9aa97fbb09313a1222747818cdbde78c71310fc6453c1817ef600229f09110068c315c5a1b9a5ebff2f5581817dfa088f447ec18c341b4810d455d56d9bd7136d96afeb8b0616d302241a08c2f976a0cbaf2578aceb02c2e94867654776504d585364c30386ef0c9928105814bcc516ef60cc0bc75fadd6ed647b508410f827d430635713f71143409fb9ed6fcd9558bfec064f36737e90663ac45478771b14d2043c7401630c610fa11907bfc93081ffd7c7cecc308a7ad859929e0c709ef4520a224b6f6d08a0dae639d0c9dd049faa2cd2055a20fb0b9a801943b36dee4d9daa10748508e8b328b4c89891814c7b66ab1001878ba213173810aa921cb0a20a08a3d56021752203a5053c5b586c3d206134e5a37861e88391cfba1470c938629ad52a0c150d549ab6f39445207a49a567eeade1b57cac2382b81086860ae005a2502a473a51720a2b2f11131598ee5508e2a4324c9800ba4e4101afc61a1ce6beecf2cc5472c44a88299800b81362a57aa449d280d39dcd25529b03b98a244b3c00cc5d71c26ac0436046802840ba455e8c5264c9eaa40e68640736dfc0a0e715eba941204e9b1e3d4c6e1f048a94aaf56805a2048038d0e3b3ac02bfce993a13e7dc6be3aac31976cf278d24c4cfce0a2818a8b2e3fa3706cd2132594264992ea065bf9ed2173d1408397ef46d6a588b5aa4d5aa5ffa5c7121f08432a507293c56475244e990523dd88b68622367f7b9ae448b9bc0ab1a3ccc2824a5a4286c8d0820ad1d6239d87006c901299a0aee8159b432f5a6334394164e4f217a2030a494bf22550c5393b6044cb1c89e08203c81252342016c509822341c02a69d881df26579c0c90c4f70211974447b25618969c0a93460c00635592183f1d1918d193c2ec079f09312ba7d6089bc21a84410588715047209224c03ba0ca7644123b1671ca194b9261ac6f91dca810852e253600f4b21c120a95852fb3510c1e354064410c01a11a4f0acf8eae36152cc59001691059a00b9e3a16e6d645ac9269942cf9f0b806f070061a4c052accdad85974931b2796e5ee43980e537d96c4ea24a6e872e90d1207202889025658490322d091af4f9bf870390d8c593527024d2a011cb820c6f924c0581e241b1780780815c4d58e80bcbaf4c0ab78298b47dda0200680300881e8d5263fae409be0e8922c4a44a06e8c00d1253c0c8c5df2e0e0948915135eb51a9f2a94d262f4c2a1b5e00c440c1c167e34e3089e5aa3a54b2eee058455cb91a84b2e51902a0b2ef0d1e370ee4b0bc7939eb70a6242b21a7c11c83003add0471f5118ea0882b8d284af4b0aab650f2ffc108abc15ac375ed491bde529004de4eb71215002194800d0d2be8644c950444f5d06420e1bfc706dbd816344c0a7a645ca1aabbc57da3d3048554236e928e3bbd108608a122a7c92fe003801b6e0ce4f0a53587798bef855c1d4573de30b3837c40a66734d61275b5381504a59003bca7059bbf251c421533567510437b02d746683a3d20cd9d362f434410e50c7d8498f032e3aa93ad0a59123e505579b2c067b1dde304141b1e4d40f26f30c13912761744bea708a11068c61151c9c2070fa318e4aa493376d132488fd4121b4016188daa03888b6ca869b01051924a006119a31252cd0d3879a13137bbe2a20cac9c288c9d851d1052a3f6020a53cca9107e7d8d3f36a3007128bc4cc86492b2b2d98b86f8707624c4b9ef4f8a54d526d04f19a60c7cd0f29c8a084940d3e3201ee0dd0c038212db8ee627ce1737548d0ebd06776773804192bb69a84e4030a078e2bed97b8015a0c32902b3fe800392c068d9050b8826530810b8b3650845db659946584710ca84a9bc6aa18820418a6001e0b57fc6efc6132e4c5ebcf910c1f27c3a036697ad1377044d875604c1b9d576902b53ba40209e11b635c008286a6414aa0c010d3c0c61219a49f0d2f428048fcc43015b976e44690e795b8aeb78523537a8e36f04e74c5255aa189c8824f64480ab1e08042c8ec4c04202a971a5f25287589066ac948a0c34e599da607595d91d03cc8f305e92b18b618578399b0c898bcd1ea8333a84c29f5626a3588657f4d5a1384e2f9c70fd3292239543c3583463f20fe8561812b390cb34041e32480675908179b54b171a1e22e39c016014dcd1bb0760f0f23a476d018f5a5ca091b85785c19e3003005cf54a12666856726657989c256e6aa3789122a9008a3383cf69348aed080b9a2f3250684519649afa6381031a6571cdbde1e25229ac4e9cc923e331abcca2c3140c3a61511134e24093a5e9dce3c21c91056448dcd0e4962cba3b747858512f2581db54898831d750d8ea963c9e8a54cd09e069e3779339249478d4203ca22a999798a994df0aac345304a93460262f08932650799dc94e764c7dda5af3d287d5c3a8645ae311282606008c40091ce1207d2e42b8ad57133434f8a184926d8a1c2e7e5bd0c423a41f287fdeae3a541f10c012e744065e182e1a14504a3061e64b68a29249a72728c29079c1160c388021b8cf6643db07b2be0b580ce82d3c9b307a204c05ba637b3295c938c787203e382900367a2a8c831c481df022d07305465482240ec70c5aac00cb83d2f279892aca22183afac923d54b085295d210221b1622e9100aaf04bbbc08d44df022e0cdcd07a902a631226eddd61e089d2978331747ad0317006cc8d330008b2e42353979920701900713b3e9ea888b26884063664835f6d8a50ba0480073d47fc0ca1a1aaced7962e7beefe3661d092023db408ebc8363a20a46be21f18299609c0a887953758960561082a357282181a8c40a3a889941c606f0374c093ea4e23343259ee244eba44c838840d93b93c835e8442b186859e3338de32332aea04395023d73843f108c1a70c9ec0eac48833500737068807a5300312f6f83866f559c1550b2e12b57f1ff888960003168f5ac910c0c5508e981888c26aec6909232183adcdd946c61f13af8c895886721ca14a485520545bd202e927811eac27a10612e6e4c0028aaf82194fc7108a9a84020cdb84358703080136164a28e0c81773101c3fbda1c95901408f8348074a385a63e236b094d43321a02b0ae4275290343316fcc46e88154a740a4162a99bd1028ea91d1b901bcc9d1ec2035c375ce113af2e4869e31af4d1949277c83f5182f5fc3cb814642c0909c11f3a506a584d582e8a248728041253182244ca1368487034f09a71e62503979a485ebcf881e9f14890252e7e40f1d833368799f8258498476c7e1af25c8c3d13783171ac7a23c0091127acb42a1e016327515703284a57797a1af46cb472028d538cb440f3916b458700ad4321b5c3384a04b8796d1a70c6c708a242a60213636d91b44c75ed285438006af412d8bf801122f68408590206a1b244d0f40530cd8b103184286b7cb520738253d98e1e5852ad6550d2cfc075910a1206428842541aa0c951fb5261c8293236302c6de5e110c436e98f9817023371be5625d1c4e2899ca23935eabe7069a1421b95903cb51193ca05d69bab083b4e8c6150c622a272a8640cb55735cb31848c31333023180d0228e312009078481e8b054291684c90363b1480014e96187d361407b3240a520a19438c01c000000800001098a1997500bd28bac420ef847fa3f4f7f3c5b2f11ba37f12539efae84678a637c9c5ccf4bebac18e4925c8d80bac55c8dedd8ab31746b11c2dc2639c21e57ed8cb8c2ce42f58a24d617aaa91507028809b7b84044acaf08313db06c8840ac539d78241450df355a7a47c4bcdb5275078710f0b318816138e70a9099161445be560b15a0acef40f0a3d61e0eac47facf66fda3c20ca18233f43fc4f780ff5bafa1306fb3bd0fca690f7023b4ec140edb82dfad542a5ebfcf99dacf9612b2277283fde3af98e3e31e5ead2e409571ffa9b95a6a4fd76a2dcff6a0d6f9c972765f303dea1440dbfb1b3039d5f9538b6fb3cf55d9fa2671beb275f0efef6ffc7ad3ff6c5f8f269ba6e07998b5e66e60e9b661bd92bbe260c61272673373838edf7a03cae1fb5b2d9203a2fffc90bfd40a0669415a85eca1d382f650c9487b205b2453905f64d790275a48c81f251bec0bba4cc80a21b501c2c5bf970fe878b5d4f5258d19146788bd5f73be7056211079b8f4c0dafed0f1edd56ef7f419e9af13e2e6b6f242cff992b7d1df4bc09125335e073a34818ae2d21c8c0bb13f37f65911e650455d9e71cd4757581d8e4e1d27e59438ccb8090520d281dd6413a88e3345e771a6a3f65f85d78ff04ce6bc6bf20bd3f9f10c286a73cc3705ab009da452fcff76b6c9e3afb65c84b35efb69493f8b3ba4ae0092c6eade80df4c5ef7bdf49b4efa663dff70e2f4737254abc977dcd2f0adc55b7c2d279efc57728eeed493bdbbdbb49ef64971f1ffd222eb953503e77552d95aa41dc7566ef6ed252f097755d33406f1926265320344138933cd3d113a18f787ac3137af9bfe08998dd8f2464b974aedbee13fbb0fdb3f47234e091766619b9ab307c55c6e1d326cfaefa6f1dfbfff0c324c60ccea43ee98705da6f20f7cc9ae9c2739eeae5ec71950198878f0bf3fea0bdc0ac35fc091760c9f49a7fa7c92fdd76c319bd240974064718b260a1ceac4f3b1eda21153a75e92a7be583976bd3927b2b1e9b29ecf464677011fe15280d8cebdabab7457d92e363fd2681373bd3f05de37fbff20610208cd73f85db5099632762254f6f74e80604c085373842b1ecbde0fad6c5c70af909e2b1628d06cc30ed577272c59311ca8f05330ff2acc2d44eee72f4a7ce49fdbb901e411b8332f0f34c766691fd377d2d6eece4c14cfa3cff7e62e8bae174984fa89915b137b1ae407076ccff798a736479a143b46d0c14a45daa58d3a959fec0e561c083feffb7bb3d8c6de04abee6c443557799400f106b7113ee2c9c970db741db1b85940d3d1cfa797dc6ff5bfbe38c30036ddc868bbcdd30054ede3a95cfb8a6b98e870f4d174bf4efcf8329d67f7abc5b484d42505196a967fd77b32a292fbe6569465ec1ef1c60f7de6a2f53ed1f6b24f4c1f5ac84e797f1ad04f12083f7dd52dfc33468d5b765723bbf8f1594811207b4b106c325e8571103ced1efe98fffbfca7778460ea4b44058b28c0c15ab6467175aa6586fe1ca6a5a21ae22851a163da91b43bec514aef15f329e9c1d2b372a710681434e0ce1922c6c2dcdfcb94122c8f198667e5d9e42b7b0f919225d27008b2d45bc3af0b7a8001bb4ce417140086b3de0b5e3e939f313cf4fdbc652226854132ad65bc6fdb8ccc01cd5136288b88c6ce1bb2c594ceb128cd1dbde4742bfef437373adca1c770e99e5570e71b44b9e6feb3dd7fc8d0f7a2d4dc688f541a0f9b1f6ea6bb17abe7ed8da8b829314fbd5cff122e1051de21f05bea3bcb63d357af20ccda8549af60461b4c36d43408c3e378de59dcde38c27c806ed8b5cf87db8d08cfb0a66f2c17efa8f773493da3e968c3c0a4c7a4c608b6c3b28a423764ca12c5c767ff1e6710e6873e8d83cddfffbde78621a239f6c917ed31e42f6e54dbc3b23763c90555b0fbc5ec6df2849dc7ce15bf4441df3b8f5bd3004c06cf8c9317543191011da1df176c5de8f65620d905a165248ccccadcbd25a718336373313475fc3b7fbfef6e27a9cdf0b6d85cfaa2db58bcded75e2efdbfed5961e0db3fb23e9962a3e6833532f953e993e0caa02f2b0e9a90339608a6cbe42a55d72ee06bf97ef1fe776ffa25c22137cc4cb7449171b3ddc9121ad5c344605e1a70f92eb47154ff23618eb01fb0a8f750578bcc68676c8c53025ee598add56c7ed5d69adf166ba39ebad8332ff5476447b1119c9c70f5b0a7809a1b229aa6236a163b7df90040207ee716f67c91d309f1d10d8bb19b4d46f92c1489f62c7253bc77215cc805c5890f52487ffb1baca49843570358248cd3fa98d723c0c66f0f6dbbb22bce1748316b48a7750c905b48a654789ea061df7cda00c3883989b5a166be73918f1d90b0d87a2f611bac4f2028a147786cf9b38d4273824a003be3f27fde6363a7208c5dff2f8e5d4719b1e3df0a2f0ce841f40082ce6212804c84aee400e8899cb5037e1f74ed48eb231222ebfb641ac8dae95ca1d7999b38e351ad57f5dc13022b0caea90ecf6d285d031c2f88833ae3d53933e301d7f8b70b453d41b9ef11ee7b0dd4d176723c922c53a0f1043c1de9b58674bbe25f700920c3ad81b21e87c6f0b23af6835b81b1adb5d8d59d7ce46c2a2eed9cbb81ea4e55644b8ddbedc4a3d7e17e1a1a25341f9e36bbf7fb1477811270e1ee96296dde6d8dcfce4d746ac0708b2ae2ddbb913eb57ef9cc3d2584aabe5c1afc7c49d73548f77457e5dec2ad752ad9f045e575a8bc465b07ff703f88c29147555b5c9e84db11441356a57b09485962f6fd58ff9de451d40d99809061b221e7aafcae75dfc2d8a57814220fb04fe0d7b340310fd1a5606fdf5bd75fbbe6944601ae50b3a3cc7862e431e1eb67e57561b3547f8624b3930210377250639dc956888b88bb67c15dc190a43f9d344763692d6953c6e6317272364713cf8e635ca9cb4398933759c2c3eefe6a12fa5153b3ad59f77c5a9ae69725b6e00cacde0aeffedf8356e1f0ca3ed34e389959f1c32885dd9f8c14818b9bac411004bcfd2ad0ca7f582b767a2e408924eb49aaddb952690c0839f81a38d312f62c8695f77d6166a7866bdeba785fcc7eccbc80ea6207e88d5e258ce2314780f61c51a5026be00138197867b964875490edd027585831edee15030731032c621208508cf28fc2d2030b4b0dc1c3f6315ede8957b8e806f5d493afc82d36d62e464b0ec05a653e3b046791dac8ea77e1953fcce3f1c6b7d3f730c7af61b60e28fd31b9ca0c39fc16f0a423098a53f660e4cedeed41a63395486db9ec0f0be48c8bee8942f29c6acdfb4e233ff1a0f4a692466fb9718f67336bdf7387636578010a37d49dfa096b542f33b982d74400cd5c6cd15a6d25f9622bea63e750b18d4f73b7fef875b8fa8fec5e084e027b1bdcc95f709e702ecdf5d68d02e356477d2f8a0e9775c9730f69b0fe32c0ada450520a4c27bb06e6854288274f22306ee14f668661c7082a4674228658a7614b2470f709fdb06c38bc1adb078f106472c2de9265a741fd4b1a73d3c9468a10daa6fa44918c50251cca32052fec5cad30f9abd72e206aa935e1e9952bec60a3ee3180a4c73f5777d3a591dacbb04ddd6393f5447eddc560afca75dc881b752fa22065b91b4e2343e8b28fddb67ff5185b36b2009a48a64214423ca9d26a89da638208d8861d90c8306e1f718fb006e108df3a9acfc1840fc57d2b6316ba79f528774c43c809ed5f7d7eb7a5523ee550eccd3af2c0aa12d3299203344ed253454979012520ec5a1fc9773b25d5ad64d9ab81711ddc4063169260946f6e6823c724ba9f902e005ca90d7639c65d475c39ce76dce160860eeb4f10ee5a3f7a1ec9a686c2f5df90cf6b96393697dcb824bca8d37f9b9753a2f34e333ba531112a1d589705de900be045b54bef557ea919f806f434fcb2fb476d975aab3dded7d857445fd507effd3c4c4a40e45fa764b8e94bc0bad1160287c12c03f0dd236b908593f42e25a31ade3828098fcf8ed06e9488ff197d391aebfd66b56c37fe6a9ccbfe06c5d879edcb152312480669b92da0c07da4f5e9c35c5213a546d2d08a2fef4873fe95faa5330c8aeb5935f5fb9b1c6538af87c41ac670db9c119fc40210556e58840dee16d82a5428169c3a7df1b5ea49864f082adb6a319c92b70236159dd2931542098ef0701483db31a0999586ed7161afce8e2d07bc46b94d595dc568ebb8886676cec02bd15a9d58a17a8f63e44ec9791b832e5ad58bd790f3b78ebf302fdd2b83d887934413afb01a2a4623443d8ea85ee0c18c59e990861a429eae6409e9b036d89833853173ea1bb082f30747a95b4d26f6131ef1879ed84575651f6f9f69e6201d0bf7fe76048b8e056b1f533433506ab4d7353a0b496cee29200e000de190994a3545bfacbdb451b0bb8f0a832797cbed4c9bbed9d585d592297aaa8fac1f7c0195fd97fa1a2d6c8b52e1bf63e3ce887c76c45d1587775b0d88ea7d0ec5a4576d71a50abecbed633024a1f1147ac1d420a19e09b7a936c31a13ec8bbe38bf0a37814a6eac7a6b232a692c2e29c4c32bfa3658efaf9edd13316c91b3108340c5527422eab50099eb6fdf4a82489802e8f26ad9a3fd7c1c4e38c938dce58fb99c3af86dde89f1b7819b34b0adedf1b75f0b213be6e684a065f1d6ec6afe72f5167af01f1dce8cf9fa18b2d847c60b4b16663a8db344a6dd98839e19244a8b402dad55c85ce2f87bc81303438a1f92e0409980371b02db44ed4f78919a09d7ea7419d47244fc3973b7df740eb4f54d0e7841a744b2ed4771e5e51ce378a03ea283aaf4f9dcb881fafdd8eff15f6ab753e853cb97b0f12363dca5da68cf06bc1d1c15fa15a0f1db3e21541989dfb6e3ef738985e6aad1c6f0c70689c10826f99caa4943b0944b88baeca31a1c0a48ebac1d50f6a2e83fe14069cd60abf07334061dc492e8b870558de7c8a3363247015a663c6dba56f020708d30bc7a077a69bf5c074ea96e1dc9f986efa667b9c52df9b56fe46882c9a254fb88b05949899b27c77c8f5ea90e700bde57ecd654dc47c3c252d6d683544b9b8452910735f5b563e88b36507475da93151a6c0fdeae09fb526683c610ce0eab03b20dae7f87e5153d19b749ce8dc279e36a09817c9ae757a5d490f69f4be591029dec0fd0b904177d8b3a9145f8c5b49e37623cf19e4999670bbf342b9fd62e744b875923b07a14cb6b032d87e436600eed1ddab4375cc3ae4ef1ab39efc04cb76b9fe94baf8b03515dbbf8f572293b0f5f1564131222e7879f8ee2822eeb8409d662ab838d0d57b7da032999b1e6d1492e20ed06621256c6c54d17c964ca34a1cd4ef75f51233bcd322674b938142d19fd7f791c2916d5dd471468b0c09dc7ebf279699b22d323731192e0a797ddcbe9c0c6eadc61aa635b041cce7757751b1dc8b2e733211e1e2a0bc0e3d9782b48c8f1b4adbdcd5467fb6f5b089772dbe35c4aa39961a596b4ba07b4861b2b95f0ba1f692c663e97e6a94eaa66d4f20731a089a8bd78d80ca75d6ab036c4d0eea76ae360e56b4291e07a9aa5aa8a4d974da2413a7b41ce942d80fdc716978997dd1f6c0abacd141425379a773490efc0f6df07a3be0b5dac3b1e91409a429f244af09863261078cb24e0adf2f98eff876bb71756115c70d8bf444ed87c3907685357654f93e582b75e401b562a2e58bb841308fefe281bc8c701bd62ce25f6f8038ff765777efe6a9ec60422a994fe51f5b398742f73d2a7af773910a1ee31aee8d8af527e3d416ba274e095e0790bdb0d924e5f8137789eadaa0e30328a8b44d5cdc8672192cd2005fbc612e272c9ad8998594d2a076ab04490d6a8c7294f7c6290ec7ee3b93dc42ae5008c8414d4530a6c4884653ef3ee3ffe26177eb8faa407710f44d462e06a0f960a5b839a59f2408fc18278f1a6c0a5ef0264ee2f207cef81e68b49da6ff517d845fd0cba52b7d10676e381c9356a5ba006757b6319212d14e81be430024db8a54d574e56ae25e71c1563e17e511534fc81c632acce87c488ee772417e9bee504f941dd837603f2c1bc34a260c4803d0b9f35d9941a4d133b6bc2f4a3894c7d2bf19093243527d4e29f18de3a55ad7a0bc85da485cea924739c8c7968030e93404bd6f2fdcd87b5aa2fbef9ec6c6e8e44309732a9e9d4ecc2024284988be368c212bb48fd1e061c65a4533489c59829c43293953a822ef2904c06a5188ed1e3f33d1ad29d622ee1827c84f73c5aea2bf645cdc54175239e6eede58983108e36a7a06d4398ed36d79131dbad82e4e9ee8d7e45168d57d897c3d1e22299a65190306e8eddf04736d03050e8f44af7e01045d60dba449c4dddd581f5f4e4e6640e9b6e5ca09ef85b07c6077195260d17ce2a0c14d143ec37b233f00b4c0bd9bcac23ef3ae72311906e44400555518276a8d933ce939c729bcf2f91bf253149447cc3b34e631dd8bf597ed5c670b885e84391c2988bb36f0230aba2284aba621c4f7393257fef4165228f748a2bf3267e56fb284d64440513d0e5d59c6217955613dd64fef4be597b8f4668bfacdd95f2b9f8d35ee88f3a049a586e9638baf9fd396ad320e34a97e2fb9dc69b88eabbe735dc828991d0c665519f52a8d3acd901bdd677bf6415cf11c16ba0992dca74727035cd12d9a76f646da7eddccd48c553c6b21b3fa8175e30fdecde9c3662c93347f6a770df8bd9b8ad7687f70f474f200b615b164db4db33730e212ce946ff1bd8a2b02570cf68e0b524c721571e2d05d73782da6e024144e6544c4b57a9672c8a5ce35b27c6e98ac8f877ff1b99718397fd6715638f99a2b48d6d72f6e8272afdb4ba119c98834431641e2a423f2b7dc4c2c67c9aa18f60cb72c4cc27fdef8e8e466770ede9e6a96563a8a9a7b6178937b711751b1007170f71e1fd674fc30aa8fdc5aa977fb2c98b6104dc635d26dd91a565af61c8d921f2c225270b653dd2951ed7c1b46571ce0cce800b82dd95bc1a9e3cb81367fe56ead676082879d74ca43ac8a18403b9c2f7a6e18f6e89efb0f2da6c5ceb727353cf8d545c300731ace93800f0316ac320638decf307684c6d0850a9cff8556ab4f572642abf3983d743c823a082d702729f471ec3dddabda875fc297cf157f36d5aa7bdbae4cecd45fc24cca09dd80c3f42f20b9cb526a3fb69e4d75e93f541faa9f7dad625fe7a395fedd305bca7b5b2553579a31cc83db634b4bd5e159eb3ece772a48a13ff17f1e686a146f8811dadcb4f06c3a09af7f99730b1f9f0ee3c1934e934a326ade03e3e6397d5025b962769d3bac1d8e685fdc4742f9e36739d5b40e8e52f48124dd1f844674f25c27fe288ff3f6a5887e0ce3c50e69116fff0603835ab5117898e107dc544deb59fc4bb0c097ba9d4ac7aa618120ce0c7dfdcf86cb47c38486220ba48ddcd40ef5cc33e7df970d30c9106f25c341631c30530a34ae38a67088811e4467ea44f0ef0085ddd96dc079fb84e3cc9c8c88ea3c1810a979ba12820c82bbac5f1d7c7c36901408fe81c57dfa78536975e118831a8f40f721537fe9c98598414cb5e4ee65f935e1d1e49f08397a532211bd7244165391a8630baa84c95f234fdcfd2259de5eca2550aa7811b91530aa52a96158af5ac6ef263d73dc4cd4c46f5636a2d58d3e92bc611585e3a191389722277a9523b0cc513d9dc30aa1e3a3d2b9247522d03ac2247654523b6c2b77fc51effc153cc1563c7202c9a3a2e8e19e573d7e69e1f33f689f58a9f247e2124869d6401ca5829c5a06fdd4419184901c4a481f29c47a5ac81d31f419aba1b8f490848248218a881949e4b09ae890288a912a924d16e9eb229e849197cae88c340a5d6d24cde2483175c4451ef9af8ffe600552c822491a95a45e2631ac935c58283dab94e22695a4502be9279678514bce532e7d08a6c0544c62249954d24c2ca2c91daae9bbb22992759338c2496d94131fd2c957ed742c9ec24c3d49239fb4d64ffc0594bb29a83b122af635943811a5888ae25f19e5a0d151f74a2a30292597965211531cd5942772ea909e8a475089a4a8b490546c3495e319a26a09ea21af21c250d84427693b062157c9ae477ffc518fafac4c5220feba4fd2e61ef57618b7f63fc0fcc6e960bd45e9e90037ddbf1d6c230788eef78de782e4242ed7c630d0c2edf012a7b97428b63fcb45a73b3fcf8d20af9e439ee38a8d6b4b8c4099147863a5d700714cb842da7d45dd2333beda659fd5769d33bb96aecb02d105eccb7b6a7693319e391f26401375fa217b9e7a80d0ea32084ef9c167ef277095436a59f8db26f22870531d3ffcf407cfaa524d69bbea5e3ec43ef6a37e031031e9484223c58070fea39cb1f73f27f002b16c8425e8a1d79cd348659ec29ae2aa8d716e2192cde138a7b1a845f028dece6f420f6107410de51503c851aa10e4eced86f1ad7371c7f58fdf6744981fed2fc6eed85dcd3142daf06834acbd3e43af10721c9905db86f8b56458d8453eb7ae035e1a510970723fc2f6460704d6ec29217fefdfa3185b3c5d3ae27a33244cc86e3b7d46c5fd45b07eb2075a25dc341ee5076ca63adaa48ea58c233261457691f721191897ea91c084b7af1e0bbf3a784da704ec829235a7af07b48d751cbdbb0aee7fc1874f23d8e568d548458c0751c88f1ce91d70b72f95db603de11defba01b748d8514d2bda2f5aae35797aa1e9345aed328d43e756e7353f60c65031edd77c2a7b9ecc8965b69fca69838c00a8dfe2474d0000e38cd1acfd5fe81965b77d20a4458e9a776c2a9e3adab95a1361a0bca40a2d71dbc2de6fe75fda39096df8a7c1878d27fdac24d905acb8df7ce863f257b2e90b35915928177a0350db0b56fe74cbb10ce9e7720a327693235190dfcd278b40826ef462c55f533fd5ad68f27f856ffae9cda503ff151da5d75006537fef34426874856fb52de763d93baf4ce1eda54462ac25fc04ebe2a152215cd70b69008134886e016d0e3e8ddc69fc9e04ba4e6f1a38e359f19fb9aee00ddbe10e7d37a2e61f416ae9f7ee192db6effafcae2678c66f5383f35d5d05e9d0deb015eec9e86a93a925ea33af6a59d9fd185cd2f03fbff01d38393ac8ac44673335ae64c7c6d2c189b3f74e8128d7bcb525ed0b8abbe9a2e2f737c3c511b4154174a57e7bdfec85ee0e0a8afdc15dc7df05f359a7fa3b14cb216806dd9566600814957ca00be4c0e63332b4cefbe43d8e136f656c9be614d29423fc9dfdc7e9e57f97d02e41dfa5ed3f64ac72730ed41c8ac17012828256df8aa224f7196f0cb28140049f1299da1f0fd59086f6f4401340384e3c7fdea509d9a61528c0cd3289586563e5b2b6fc339701c51e2e79723016a5a67e68c21fac76b13568a13978dcc8116e57642ce702e3ffe579fd39d3f579d328f694a5a72fcf82386afc0629cb51b8c9864da0e5c3c8f907580bf7e2d307066e51402b3f02ca6a0d38922d79ddbaeba464cac5cf67ee22632afaba2d3f74d8e30497080900144c8c4f5ca4b8927d5084f2f00bcaea67fc3a137c1938f96af884bc9ac4d4b4d37b5bd5b5351e38391a1696cd63fa62a93dc884e4d53db09a2858cf05c25ba077bbb4440029dd1f64f2d3e963dee7d4c1b4cbb391efcc50f48d8a035e9e1cedca2ae094a97fe6d4c7ffc95c82728750eb06e5f126c79ec6c4d118976c2ec38852f07a4d88bfa389fceeb89b7acea75c579b0f6bdcb25b988832ec6a91b2e0ddd5cc7fd2ff047763c121bacefeef91c58495639a9f9dfecc38c9aabf32abfcdfb974c30c87463b44d6560db53b8d93456cc5367f36c3acff8aaa132bb439faeaf232eff50230df1d6f53c61ec918520db3a55c61f209d776f30f5832396e7db7d91af84ad4b0c06ec9572f51d8d958dfeefef2e33038b4d3f46c4ed141b2043e4c15e06f58ab86f35634fbb436cee6a94e8b710b1393e54f83d04dce6064b773d7f063b1e71263ecf3b795eb9d9649a92eb0a85e20680446f3748634def5deef6c66aa412d396ade80893cc8c80a59fe207b31025373d03df50df8e62399ad2b7730c78ce1c2b74bb6c5c6f384657fc91d575df9946d60ee067b1eb3e0a76f39afbb607c568ccf66e003596a73b1a7601e74cff6e6988d32a8691c59a547bdac3546b6f4922c88d966c06dcfc7f647c663b7371afb1f4c636a902cc34bbd5e8f43c5b08d8d0318dd08a336ddb553c39a3866de91f81ad8068e159d50d67cec757accf9d84fde8c0fb4215d86b9fa37c85d3a6ec46789145cf8ccbabc6b42b6fdb6f3dcdcf206b33cf3382e592c6c148f64746ecba86f2597990496b9db208bc48ef442ddc68fb8135db19388ec6e72442fd8b581c108f2d6c63b4503fc0864316b8432987a97ac60a35ed03b3ea08c8f0fd49e5266c015835ef5cd66caf53af1ad4d1bc48eabe98dfba66a4897e04262bb69c0bd85d5b8a08d2c63c888c5d3da101f6b9c8ff979c05acb9de6c7cabd174fbf73cc04e31ce250b451dae3bd31933bb1d20666aa47c5f9529e86b1876222ddf1f35397c552b0dc9acdaef2716bc3d59baff52e3c1d7c0c322743571e22ac419a615e10d6dea8c33dded4c41904971d577b4bfa630f7419b1328c2eb09e384b5b8435a22cd89df9e001184abb5ad4a71dd34ed6958431fc3cf11b6c718ab16657465cbbf800561671b3cc4f12bc51968af0447483c779fc2653c9a27393d88d70ee201a2a76b34f3005eef406e9f0947678199b786983d9cb4ea06c1134fba78caf5dcec142e3239fcd56a9e35a979b1e61b9e6bd0ae7293c52ab6ba54ee6dcf2ceb4313bc009639be37a3aa7db0a5f7e922d75dbcc8dd73ebd8f73c918318a5cd849c56374a1f6f6f8e7e780dcb761544764271f92a94358ea266671452f7bd8cf2933dc40d355d6393f06fe0c5712988b2f3188583e9997ec2baf8bbefb393d085c819eeadb50be956d03ac05134fa901dfe67831f16d92890f23b3be9156c4f497605447bcdaa7710898365e8bbe46cb7409d643f1c2ec4eae502cd9eda2bfc5c735e4159b2d4f938c3b4f8d3f84a3c606cc42f62226d3ee9dd300b2ec6de136483bf48872333feae6c447431435d3adcd465db35efb3c216bcd5be0eb6d2c39e31a8d498bfd73ad055b1522d9e13defedcb4f9e9e5c82515bdc3657178c610f7273c3d22799e7d56ded2dbb882d33a847367e296cbac24b5d841dafe9410d59c8f7b3155e4ca12ca096ebe6b7b3ad4d984c924df2d0f99eee79b39c663e9dbec7f929367a2a360631c64c3aa22e6309e69d62da53f914fbbae1fe9cad90d9dbca25d9fe71b746716895acb8bb77e645dcc11a2d7353f10e23279767d19d0e324016f4ed8d611d8d73de797fa02b11385447e7b619c9dcee353ea507b235e636023d358c468c9a577615ed4696f5cea067b633fac05bc6b8924d7bda46e046c6a6bb70abcc8efda79c658de8403dadd123df80a544a7ab1bd88515caa4731b7c8bd04b67e311da88295dd07955f7f4767e6e56239969c117335e6d2367907bba434d293748e6165724e286ab74a958a90636e46d9c57d60235bdb6769ec7eb580cb0c3fdf5c8c06c659e4527b4b6887677d03f7b0cfda7c53544d631c98caa98f90526ba0486d152bfd35963a06b961fe497993473619bed0a7bf5b92926ca2d31f075dce34fe81886cb8d0cd591cccd69a68c998dc04f44d5dc8163d1ecbaa73b6e287b89d92651d38fa7899dcd09615d590afc90ccf5bb9b6d63e24e63be0fcf4b9b7b641be4f44bda8fd730f67c3dbc3e796b1ab34643b385cfac0293f3b2ede2927193a7b0adf5a23bbb69efd7e9d358c7db54b903ff54d181de02ebe6a398d7f434395476bf6bdcb6c5189637f48664e5a361069fca67287bec5b80999e86b042333bef9ae3b2d0e6f8643fdd0e5dfe22d7781d9d9d812d2fca89a0f60b2ee4838ecc4506b125db307aa24b669ef6566589d59e1dfc903cc81450ebe8658d416110fa4d7537b543744a167e2906f508bd01037ae7ce6e049dda08ddf5c03da826eabe0b5ca94279cd1b7105d2867de35dc1f27dbc255b0a36199a01c2142fee17bde1251ac8a9d80b0ffc0ee29e3035722fa1f0bec6400b34db1db820ac3951461eb0b365ce1bcc9631867d4366505ff3f032d4513e90bf1e305ad3dec6578063f9a538d11c70080185bb1fc6e806ef1aaff93762d8bab1b81fd3813fc0c5b84cdf785f88cfdc535a816c1aa1f15df7ec8107cc8a38ee72382ba6cac4651068d1ec95ab4e8a8d2fb18199fa5e35fab548b21cb7d6c955fbae119e352bb99ab79105cff0d16946ee8df90672256175d0bde3cd6abc793af63aa2a39ebb2226e859b111507b578fb51d8fb86cdcb38df0237c22eeab1eb41935f1d1af89c3c886fd43ea60b7ae2833c725ce5a397c17b79be3a00297cab1f037bc5bc097dda4963919c3b52edc836ca01cd0001db093b4373d70d4eab50e98db01cbe412778f6bdcb6dab033870fb24a1a97e3d8d8e33c55732c6dc28ddee0acca8db7cad9dbf14b0fd6189da2690dcedc6a6f67b66387baebd8e20c3d3d97b672f3ddc6b436f837daf5a61b3f6eec92da2c68b099061363406f30471caa76b2ea6de82d2bf24183bfb0d1dea7d55eae2ceae6b39bcd6bb5702e7e105cb779842e0293f17958edaa1bade89283f8b216bbc616ec4c0db6a29a6eb793116623ef4623a6bd54c78a89f62013d425601c35642665281fdd4090d6cbb1c31bfd16d711b3b863a7ecd9afdded79806ff54a3cc63e767253603dc678340c3599311fee19c85ff3669ecbc822ea721ad83ec6970e30f77670c7cc96d284f281cdc45b7021f15532100ded899b17238e291ef762cdb571980cfa1cd1c2da03729fe62b7af941b0c83ce288eab12ef799ec38d6db72b57cf8c4b6cc40d3c8193d61d77e0dc7315c3424e21433b761fb1826bf656dafce7e8b8c3bdddfe028e34dbe9baac12ee7b6818f81bfd0721c010ea3cde28eeb4b6fcb1d70316fbf76ad813e2fb389ec18b6755da77b1d1b7f9e16d271104bc51fafbd2d60b23b82c984596583a96212ecb89fee78bfdface11addeacf2db77e1d10c335b7b3311f4bccb52d6ab8e55a0cf7fedc6d4c1e641c9e908f31c41be9b55ad30979c7283e400ddfb18d375cad5ce54d6b293794721a6eb1318b4e0d8ca276bd3de32ee7c8002d18d31f300cdab3d9a8d80e3c133ce04ffff5bc1213836bfc4be4e438324eed081c7eedd23943a7b2cd7bc50d3403c7ac7035dbf92c873b58a7c2eb23c94efb326fbb9b8ce298f02933bc91a5c2197f29467516eff2916f34830cb81d7b3a0bb63b59f5eb1a176bd96061772c63ab858539450db476f2ccabb0b6771d1a6b6857d12e46edd7cf2723d57da1b319cf386acca5e56df70d34d28ddab6e159b3bebe706e899eed5bd426249fecf8eacb4f024b2fd28e3278d861cbd352aab1c9c83a9df15e18663b1583fa826da8096365c84e3ff8347a7ac428f366bec2a6ba62fa41af5e7ede6819dc9147ce75604bc41dc3384e7c771631677813465b4fc09818225858bd864e04bf9c074ac7a25773535db6b93af2ec81d546970e71b9ae64b86369057e2c7c098bb89c5e092b333b7fe365dfc008733a69d46c7e543c2db44201f675e3ade7e9aa91d0e54d0b66cfa91c912a8bb9766ce35bef115bdd6d3a1c83411708df151b9a4b36ea9460fe9cc12bb1cbb4d99f62806a90df54c7ebdab5f07a2463c4d829b007718a6d5a89d19c898d3ae4b7f4c107b25563457316b15b58af6b38d612acc5036920b66a4f771eb9d137223befac3bc4ed5f4b0d6b3771b294419f1c755db5d5bee75a4e10ccbe139969e4c881c16f779b5ed57361e5f313dbc0c41be752879ed9fae3375362d7c685784a160adb0b03d1142f32642c5a66102764c97c8e3f72f11a1bd52cee18b6e632e6ed2df39e9379f106dc4696887ddcf3864c865a7760b49cc6b0cf6c83876f168a010e988dc9d217ed4068d6581ff46e1dbe826c3442033bcded37c60626dec1f5e64000170ae25b73657e13761e08c7d1d6e10e50abb5355b87a6b95e6c9ff107aece0c7b81f96e1887df83719fd258beb85433e6cb2e721d2ae83a0c344108ae4ddaeb3c268678e0f2155a4e01bbfeb26f32b38f023b11a38fb59596b8b3a48755aaf56bdf084c24a4ff67026b7ef4be3ac59c032d4fa0ae1e0f1f84de8e753d030f085fd43dbefa2343c401fc2dabc495e5dd60ac9665b1704fafe022fb97046f5fe4e69b2e794d6c5051ffa7fbc53c0597d15276328508f94d31d6f38e075379f1335254cac4902183ffd0966f324cc9abf076532b0b00417022e1b03c9ece3c1b63af78fe9262015ffe602b372cfe936c2344f0266d13fed721ef7a6066946fab3ff571c43b08c1a28d61a5b51be1629d909012106740bd0f8198d8faa55c14a198f489cbd27358ff40fb9e590117a25053cb27ef886c123f8e1b174e630890fe4c703af191e386ddfcf86cdd8dce7de0a5a7cddc42ef2288352583e50d99d1714960689206fd16071b4b21f67117e6ecb95196512e292bc5816811a5232ba16264456e11df47ff0f45b0f230ab4519db2ce9deb057b4021a65bd0e368392fe1b40cdbe1085ddc7e8793152ce799997113f0cd992ebd38887a9f48366ee735a00120853964027dee1c679e57f36d2f1371aa9300ed18b4e46beb1b3d1caf3e8bb94119381c1391fc920af83cd151567320fbc7414f25a8b40d50a14d3eb1b0ee09f061954bc03030ba5a8bb1fad3be8ea1c7c30b32704dbcbee69403ae7dc7c6e4ca47e562c9e1a28d0008b8e651da48024f7b2b51c6d0e484a110ddeddce65d928e4d1fb2cddbd8bc6448dd2aa966d29fd68e7a7f68df33e0cff7938d4f52ff4c1722d94f3ab7dab10e7a1181b2c9d3e40aa9e9e48306729cd3e0524f01436c069dc2d24f3b514b2364a7f35439f51da3644a79a260419dd69685c9b400b4db34ea62c1f5c345503c9c44e943f10c5b58fbf8d61c94a4de76b59ba317009f5a425f6bdd020c4e1f7f2899cb5a612f3b7aaf3110ab355facc0d011a1ffda12871f8dfd07af315b1306abe2dfef8ef4fe2797262eff1976b61508952bafde29f314d13e12587794017877b5e3cefb7aa75cbb98ddd2b2ad742b215a4320f0063f5235aedaeefa094e82283935e68dd9f7a414b93671dff27f0409fc86c2ffac8cfdf50e56ec6a51282ab8011d4f997b91504718a61affec7668bf3ce0018a363857a9bd827fc3c71b490d6482e700b1abe709a72dfdc8f7ff6f00c61daa2a65e733ba2eb0ffafef9b95f6f5e80401d21760e8cfed2fc8bf697c8db2688e087a6b3fabb156d26f5b9bae770903c9ba07ca14b27bec582f7921d3d73414483bed35977272bd6e88e332df7dc973acb31b6e206f7c37fd38bbe96a7e6bcfb0210fea48f725b3882cfa159ad7b9e35199e9c9d3549f7a91f7f458e2411f52a74baea0e4cd12561e3687cf158cee3798662ebfeea509ba434ab3df7528424e95723a8cb9959710e77ae2781de96f6ca5ffa2fd48571c697626d64beff6d4127ac590a6edb3821ffc735b6ed8355ffc7fab0a3517a343f144a25bfa1e31ec8bbd5a3884d09721612f5fdef17b476234ea45c08efdd447632812c8cc59647572d4e9c5268b0773293ec6569c07b83f9be8cfbcb859ce2566fc7f87a90118323ac4ed3d747efd8bef5ada6acf7a0b4219b86063615979e884d499f0d07aed49112120b238c9128114107e3de3c186d45c08af8f68cbcbd8bf8493801d6e44d2a88279cd4b80e97d6dee8901b4bfa2ff7dab977837871fae1a0530a362cc2bfc08452304ab19115672aff38d35bbd04eaf78fa13e9cd8a963e8e31faf5007a0fdb2fcb99240803ea542dc3c28a4277be9a73fe303c907a477c6f81cf0668e45e0b57c9e45b0917b189b9baaf9b95e3ac02d8e2db2c484edbcdf309744fe677e44dd89cd0d9e59834de7c0477622540165ccff9b7d01fd616a6adde3c26bfc822e1c25e9bc1194c070663c123cd0f6bfd3d87c1760ecf3b1eb8fde68cfc0707438b190bd6432cb79cb44bf8918d6db28b70d5921300739b350b83aedc4423ad1d8b47f791d6b91e76eceafa4a46f4b52f05dd3b81adcd72d172e8b007997ce4971b3b01bdd4d2793822b28e2d0570ad49dc092eb2447fd597d70fe19c91738fd94fe4cf40423a07f73a495f7e5b332b391f0d187b05508190a188ddc7ec0cc627225869e9ec99e271a4b41b82394a66ff671bb01928501844d7ee31799a9ccb905205760243078dc94f42152ee2a2384cb5d2b86a47329e7fd58b1694960fa5341c4427b3602e3ac14e55a0e9a8380724fc16d9294993b546f05c018ea855d2ba18a40472dd341f6e5a053383a37e7a658e19eb53fd531943fe20c0a7008ae685641699a967f2fb39dddca1288ff48669341d70daf140d4292143ecc6ff6b46b3fc238d747dfc91f73c2c4ba532eee03ecfe150a19742b04e12326c44f3f6b68b9b171ba7b138353fa012c977da889cc40fe9dc4af2f924953787f21c6f31a5a23ba224fbc89faa96f192ba8318c36f8612d31e849a7bd06b8a8d3bd4d98a0cf57a211d1bbd53f33aef421bf3bed4601f415a6be4cef5d15105fd708ad4b7ac69eb3313738868a2adf6eaa515f6684b7c6256c12d2ac7eab60f80b677df4863ef6904feeb56565f37253bc5c3f1675062a24819ee9bb5d170c637a65f3d2ef95b2f6f44868584246738b08420654829129c16aacad0093fa3a6285c1fdb62c0a507195e8d5cc0f24298efefdde77a85f0161be4c8cc2295daf63a9829bde72c0c180f7eddf36baae3934d761b1ddacc7e9c90c506c615f3e6666bc1fef97846f1d28b42f466b052a03ff1e71cce1b84d5ccb93b1c46d80616d42d15f3f5b258b0320c1071b033fe5ee45b048db60dee82e6c1d6496a0aaf8be495c37152d6ac0f79eebedc8a2ac4fbf9133e73cfeb6a980107dc832471a0d75e9f5d362f7b98ba121418ce3e3271afd67ccb28e0cff7645f13c90836ff31be276d9802bb4e9fdb68e0f4c8c5e9fc00c88649e383fbc1e25e01ea17d6a35328ae03ded8882d102c1096546293a5cb9bbb7d9ffff52739e359d292e985e66233e5f3285fdf024b40e59c0ab1c408c99e8055ea72facf52397a20ef67b35d25f2af8678936c079f1b689119085b3045d1ae500a12547cf44d42e6b09fe41960d015e0fec451d02c56503b11e2e15da13103cbad7002ee3f9033ca91375d6cd60af03eb7655e4b70985c4f0fac45ffb0370be4ba9e3160f5d34134c5013c08f2a3d9a6cd93b983c945f584580f9174d1a7f7cad9922f67ad3778e40301451d77ecde3a629d39409d23982585e98b1465cd2deaadae1a1e327a1942fa6d0325aa6745d84b54b7fc072e5d071458770ed6f35c09fc20abbc0ed82a89e39a5c4d3612b24a63a5c776b043f4c625c9a9b80b1396e83eba6b3523f451cd36c225bb96c622fcaedf0a45521d778af8c82364f4e90b0087035d798c850c172ee5308bf5cdfe82d3d813138096a9ae4b242cc642061419423daae0701750e13308fb7225f93d7071d59189defaa3b1baed434ac1d6df3c51c14028b11a9d9304dc541042d04b56be878160704b0155a26d76b1c3c0336a8f4311cd07d1e547f4805b655652b3480a4bb2d438e98e9cef6413572d8a698482252c861699ee8a16fed33745db7534179fa793be8f783983dd9ca9e7a080bb6d3f444307e8dcf56b301fe92b5e77f92a7d8208c7790611318357ef721bc0031a667d0cc4f4f187aaab3df3c9c22f212a26a666795ad52954fc1c6d8aba3165ac68b2a7310b99d245a17ae8dbb1b3b86a13e4c02f74dd324fae44c4d048b68d7211f8c5426648259e63a23f841e725b46fd51549a9a4cd1ec79d2e4e755a98d7d0b904257cd3db2e658cbbf59eafff2cf69f0ec8440648524ec1357ce356359bfe8d6ed4ce74c620501e95723117b6dbd66b39b6ca271c29c7a287012e83ed97f269aba9a4d900985d1b9bf1c6ea505c4e839eb35cdf9de52d05fefd0e7675a325c4ebd35cdd78d889c32bd438c2ef7cb22c95920c70be9e2f7379c5d42f17f08847ac6725d6649e7190802b187f585b2e793b7352ef81d26ca9e1d4829a02d992a984712ff93b8284a2dab17d515516368af6f0424763b2af8ee603b736209fec12daf6a0ad39422a9e1dc044b30e2e89e36dfc8edc976884a37e1d924059926a735dfee736e74a76e2a1942562999c59830dac77df6e7976cf08f58ec7325e7700e1b812949ad33c9059a625d0d76ee400975f54e77fec1c5a8ee0118f87f62a0e90258938b6e2525f2fe24a4d0e952b43ad62b071905065fcd0025792d36e0aaf0b0de1ee6ea60ca506710226f903c3f31f9a3a3c3bdbb2736ba9b383de3e13ee0445512be6be3ece59c412ea6f58035d7f642e1a0b46c578f3d2214c570f478bb78327317023dbc23f8a9ccb558c6584022919f162b702ff57c538ca51d3826fa031c73d0e780a3760357a8b29b8f2c8d9785890160e3ff72d67ee1f2560e1537fc28d2aace3576f8486f0e8a0571316b9a26cceae7ecf7281eb25cdf5015c873a86e18741259d1fbd86c60d4475a39e77b079b67297d24b7a699e273f9b69df025f89b2f33cede766a79f6e3082ca03fc9d8b3d8ad7fa8898655eba2aaa49423fe2303c866cff3ab5e6dc725c44237bc8a42c7a72635f84a74786712f8fd908221d7f74aee82aa59aa58a5afabaec027645c6ed10f11d39d05d4d4a13bdbde4e6b19a7dc5d33f1ff50cf1ecab6e6af4c4b84bb4dcbcec83b921deef9c2a612ecb9a5f82a72ecb0b5de249d4fe538891a52e94dd4c309aafe2f250f3a74fb8db252f457cbc3bc51a12ca599e80e496808ec6ca7418f92833d2d414cb39edb38cb1dec5c0b45772f9f819bb9397bb01e9d0853105106434cc1b3260ba9080dfc745256d8f9e7170f3fbd93f1df6dfb4836a90e5abe0555de0e947c2365d2e670a16ff27cc3accc1c0b6db08df3a1bfd646cd2b5a1724cc364ca1bea2a4922220506abf76da1dfc5f398d2bbc30beee8ea838e1cb7c75292a30eb42015c6a5d54cd48b13db9f4371df599fe2886663686921fb05c0552cbc6169bf572377bfeb4114a413c79c6d0c8879bc9ccf4a54cb63751df4770615430518ddab4a24301f626fe1d611bea097a52c22dfbce87230c57499e3d459cf591a1c28c2419eacc395a84b95df1fd4da6d3805bc56f9f4e82ede88d0eb926eee43a83d195fe4382d46dc6cdcc3bc78d07daab54e9a81a267149d334b4c73bea8118720c1a8f695ccd7cee2c482fe6c732abba2760097fef22a31ce46de8f62ce9cf00ec1f214910ce97c06e555cbec9195b8b885c8450b16436a21ac65b1d1fab15466d0ecbe4f2dc7169c5518fa8a5780bb5814528dbaefc2ddf217ad9dc98291d621bde90a7333aad993b0d54d7c06f95512f3609a2a953ed4bccd18460113100302480109b00dfd396e91b2b8c86a987a334275eae3e2932d3dc550c950d237b1de8644e185ad0a6b5196dca97bf1965e503ed9630f9538160b5f0896b667bd534c770ba4559b46f42410316e094fe0190fd9eb06e9584d0b30c9ea2dfcf1aa474b4f7c56e28fe6f6de0600beca20e7f6ab13776ad2a8a3e2386e2b797b87805df3646c489df83f64b0f8f9f31b711cbbe67c162cf3d0e8dfebbba7499538a43e15ff35d0f378cdec75b19f4338fc555b6ea9d671ce814ae4c626a03eca162a3c4212adb98eff79348bc8bec47203e726a2798e2af63916402fa96f2d01db72c17ef2c3ac68d15b9fdfe4843a68ab28f940366da316fbe0028efaf2e0cb9fe0d28756703256d4244b9b8330048b7027e5bfde3ea48612cd857d8906cff2fba8858a8e6c0c7fd5dadb12ff5ed4a1a6b624bd47258feec503133d503a3d0cecde8f2f8a0d7aa7787949a28a3913f2b471d7035e4686d6d7cfc24b7babaf817ef5f049275c272238f9ed0c399f1b301d208757600c3823bd8027f1c14cd13396acf1c8d38ebe9172a6eef03755cefe0d6002826fb0cfb6de351d4671680caba6f4bd1721e7c866bcbf7ec7b90b83ab82cf7cdf9a4c9affc85b2120bff827d221cc247d251a81a5cba60eaca8d1e09fb9757b5500975b4f04b188e3e12754aaef70add1ebb5ceccebf33645aa3d1a3ba0bd088caec61e6e3ecf616e179ba212dc186e0b3d48b94b2efbaf1a92cf5e4ef489c5524b468d1e3c2500a5eae245de07ef53ca60b3ff5141d7443885cb6a25dd57958357b7223b3f687467319e15240f53cea1bd1a6809d068f398e55a79db623785d00627fcc55984d852ee2c1f50ce9891a59f2735727bd5727729db6b435838437a13c1896e0ff0b9ed1817e6531eeb21aeefe54e75f5fb2162678d819ea6c41dacec793ec4826eee0faa5e85701bfa002647a16595d8ba6b6f587c26dfe3deb6416f93d812ffa2408f7fef610bcdf788451ab72eae25e5422b755a9abc6e12d23f2e0af671b2ee1b0815113c59984673adf513493f04dcb8fe6c795bc5ac5ce7bf882d8ce994b1ef7d29346b0afffd0f9a52b0f817bd62311096c8a31f6bc190fc4610f10264bc4198b2682680409a783bf62bdfb0deebaa0a0d6d6827a5a553772d27e3c11c43630289f8e9ebbba09f85fafe7c9c1f8a2566e4de7ddcefb0ef47c81aa88e1ec99d25e4bfdca7f218577c361fd3a93940f8d13379146464039aa01be4b295ca7fc812fc728f960d779dd764dc1488b2aa5cc6a88677f72d4822772c7ab70e0573bda0f5c1ce94c20432fc5ed78f640a3806e8a76e196dfaa715e2da15ad58a3528c956baa61ed7782875fcf2fc2bf1bb289c65a05fcdf0d0553b8417877edaa1f1c837a7ce836a39dc6f8763e0af58473d6b1641f31afd72e377c82d2201cdfd16151538057e1fa7c420c7e7954475711a8dac81f6d6e5706b0469ef06b7a7dc77d2ea4c2c18f2c21832132b44a79b42e2c95923187a846b852e8a9aa9b6ac39440a0dc80ca4330aa6eba272034d65f5dcace0acaef59db6d5d5774ef1d3947db8d5db611a560b323e6024e4784b4df4511f2388b22768cf8a28f196fe7e1e94aceb963602276f54c4a2ac51def36998625b2f9f2ee20da9472895efe7ffc0d0815eb31eb4da944a7ffb3c10648a452b7ca0b00191abe4f1409a8aec72bf3528012e59de2ed55d1210035a2079eb25de624fe4355d4462b07ffd328d106f397923a5d9c5de7fb2815d28ea5572e6aac045980ad30b7396adcba2c364c443e392ff95be0213b11acc5a0e676ce398af659bd5d7cadb089e39a444f50ba9ffec29937daf4bb5330f994b1ab3b5ae2538a77c0ffadfd13906745b9f175ebcd7bff9f46c21e39bfa073be6f488661eadae85adf6ceb2e283ee8ac2f3c6b578a5e8dbef80c91ce2f7162fa928127de0533fb75ff33d3deee4199edb7e9d0075379cd0e6fb7c2d93d6639afc6a888788ee61a9557243cdf245b3d7880eb12b3e4ff6c06aa31b963121ae72d563b2aa6eebe3b3b747baede9ab931387af650c9df9da8cfae3e93ea3f261299d1236f007080f71ba4ed175a71a8ef601ed1b82ac21d74e33478c619b873f8cfb9ee1d868c2b22cfab66214bd65cec76a9ef10b1fd6a915abad2fd73c92bbbabcfce7d84c0589e566b8b9793a09adbc22ee526565406b4d606ca3f9dc1470a91585770427b08f966e4f44892becc0e990f904d945010b8c00850b5848b44bf8758eeae7bf5128580db7ea029b8ade9bbcc2bbc4cab5f6a2215822337d15b77b7ff20d15f8a3162a7eca0e6e7af0b125ee5a196dde48459b4b9797b1f964194cb208215841fca863a66dbae824616346fc162a83dd5592ffb442425d3738d432c58c309a9ac5bce3468865a1a5bbca3a38c9c3fc7a36da77a3f976b06d89e90d5ac435fe942a7be18e51a54595f728d9ad7bf327944e60a45b37798b1e320d3ce003c2625c80cdc4d3f038e64e64607b8c9d0b1d156422fc8828ae5b99fc4c9c6e98bd10ef56b6a2b2d36dfb37dc3fcedf7ef7661621aef2b895964e08e77311a7b29488c03701ec8eac385ec35ac1e2f292fe6c1900e80d1f92149597720509c8f5cf5097c82a4228bd8a288afa4b3c485f6fc3cc08225ca2da31d246aaca0580376fe2a76fb4052544cc480255ce2b0288728e77f4edb7572e152d7044691fa78d6f0aeafbfae5bce4c5a5e5d8628d25f83b91c395097fad4f12f6529fb134b7d335a96a650512dedbb456af093f7ce351952319d43daa8572c5cf2bb199da165758bef0dcbd52b6066686582788fc988dc8452c371552ae13b7bf8491b7d0a9dd86a1fd44b169e85d6c701ddd0150753f893555dc0cabe618e76c8955dbe86a2140b339daa4774119f1571fd2f42ce46566837843d36f34f8644beb30e357908a24cf3d196f898d0a2dd72644c867ead1745c159c7ce52049e9cacdada092a3a6500dfad8f11791b1179af027cf4a8644dc69398a38a262e8ebdfc6f961529949b79b4c3d68ff1079def7cdca42d5a456c1645c4b4e0d7d33d3bc117bbdde04ca64a7fcec9702638604b9731946e6b70fc45e1b2a59b0b989bcd2cbb061268ba0081b473d5d4674eb027166989f6fd82cde425bbb3b9b2ff246b964ed119613769890836916dfb8d2ce9125965ae443cb71869b4a59aaba597a69f3a994bdd52acefaeba69862c9232ca169e119f1e100937c0f1c666a84ad48d69835371cc984dcfe404b71d2fd4af020ad12f1a3f0ab1c01eeac83f4e7d4deb4278afcb522aee08449b6ccfc998b91da74a1050e193f19884931d4ec81507c330b09f995a31c97edb9caf83108302944fe063b9869873682858ac2d52fdba71aabe1edd9ff34f27e31b952c565daefd36f42e02f1918ca06774f03b2627b589567f125ed9319ad02b19d62b06557f3dc34b02d7579b4d6158ad5caba705c5a522f85a03f41430e521166e894ba673e916b95c0e29f67c1acfc0b44f309fd9426d915a9bc63939d7cc1c18a33de355af713b16d9dbf2240489321c0bea05f5f36910cb2215e2969e314196a3f454c3a0e6a0313f9f3af3b9489822db4a5b2f77027d1152b3caf5b5a17600a3109076cf0c60e8ea2a07362c09ab2b8f972c20b1ef341ce10b808b37a0df7607457595113bbae00ca2000d39c4c0aad83db67252d925061ec67a721b0d5f1905b9b3af42d44f5f7cd862a3027a0e9e3b5ce7c571136f74fe302d7031dd0cfc80566a1c4dcaa63f9c371aec25306b406c245a29a943735169ffb0fb9be8b77ba5a50168be3cbbeac5bcc68a87b718ca5e1f11edbd6b8e8efecd1bf7f93754aa31878d1fe64fc1b7a8836dda05d336a7d299cc0d5eb66e137e6c14cf390f337a4282dc03ac63f5a076f70b84c04e31426f814bdf0bfd185aac69915e6ac13c1db5f71c39e30471abc48b1ccc18b2d276a1770db53d89e3b2c9f3fc3ee3d2451894f717decebf51c4a45d050536f10e6e6de58ef14d8af5e2ea9b524cde14b9f93a408b5c6bdf5bdbf37e964ec1a2effc8b72330d7ede3c7a836c1648155845284c745cc6829a4c9464be48db0328f236725c2ea623061ae22822630cca7f2ca9d92d97692f8b44f344fb573d42ef56baadce99ce26a4531d1f325864c193784524075f75aed40bdde6da4fade9716eafeaa004f6f7cafa26f42757f0be9a6a167598c7a9958417ba21b4c19845860fde349997d5989a394038d64d557e6921b0f8c3ce431494650c705a21fdfa8f30cd99a7687aafae5b0f664a9437d9d8836b35bdc0adc50de67ca9bf87ce506d62836559f102f19850e3ea9fc5ef6cb7732ee00be0e2f1ddfc42dc1c5f332e237fdfc9730489e9e8a28ef817651fc7c33c8270a053769b32cf8db225426e135e8637a350604c53b417b5f6ed209ff53c1d1887f0c536eec8e0333b8ad4573a2b6a15be3c1291a36233e7ecae79e311cdadb64197830536f1ce5b52d67fd3ef1df400e17719eb7d979eea86284bef34a2632ae5bba9cdfd31490775a0970566f6aea618a51fbe1688ed3304ada78cf9992fc69c2dc2c4367f9ee0722f1382bf45e4ec1f8585ba3f86aa9efa66267696b7cd2252aee2272470b64111a6eddcce64d28ad41cd83f4895251733ab7b16e96356018fa9d902c544221021bbc5a8872002a0e7da7fb2f15dcb42dee017fde32427aed959e8c54f1278829f0bb1b868beba7ca8a30adcc16464023b5747f38ed04715006f446d4b6aad0caf8dd04a3186baa8ed3d4ae735fe478a9bb56e055d5e4a575ef8897d6aca4932d32bc1a602f083d2a253107070c8a529a7a13e11968a613c14d4f59d82d497f9714751ed749ef2353c3cadacf55ecc9b5ac36171f709e7f26fabfbad4d57affb4b9a3e2eac8bf2f3ee9759fef763afd6156a2294f973ed81845f31fe698c2b5d20c7788dacc884215a18c48a90681fbf07b94bc92ce361ee8e5c5327488541280f21cdea5afc3b0a59fc05f5c18ed8f1a5ccb396d8b8b58b0fd762ea59578a0dbc029109ad2bbbe38b90d95f1bf02b5aecea69e223f58d4060be80a91ccbe21e09080af8ca13995cd779472bb73f8a146c027c85229516267f8657d7408f36eadbf8fb72f74802735407c17f80ab582202256f5989fc72ba986318f23f456fa2b36b39a5ec90b727aad90ea5b6cff9bcce06ba3ceafd46c87295ac390b41936eaaa1e432b6af157eae71fcf6ddee7ad53b63c43d637d0630f99393bd155279e7078156371af2c94f2c24176cab731f73a5f39d97ea5e4e4e146b464b650527b80827860e6b401ff1291024746550ec6c3d7e1a0d2cc10f141bad465c2b7e0c7abe84053a47b68d5d5caf15799e24bad1f6cea89b51168419b86990c4b52f1c95abbd97acdbc5c20f0a6e9047f99b92e2351964a08416ba809149a4af4dfe4adf4e83a79872846088134a05e8fa660e58e4a4f2b55dc6ce6702f0b794e47fcc10bf3ee52c2237a3bfa26959c3f3a209a7ebe2649155e1c8e461f8d5621c8da12f0ee29aea56e4a81b066c772aa41d5c02c2c36c397904e07b8011e4107b12a68462b605accbec13a4513bdcb08062fc2e22360186609356ec8af05ff16b665ba2390e33f50d35fca71dfa6f33420d0251a721c0355379add263ba5502ff966db23c2c4b3810202aad506aa1867a830ac902b838b6875f54a2ed60c926cd60c3df59eaf870aa953155ad526835c463777508ceb4374fe65e207dadfe43e341f1b3f0fd40847b44a7dd3a2efad167fb13c32fdb837731ebcdbbc47a458ecaf998d9a2fe81bce2ee19ff8ae617e872f85c2b01d7f41c1f5a8045ae9bc5488176c1c8b1414750a2f579cbf90da4f978ed82252279559f423a9589ed064a1112e56e42a02fee438e656d077974e9a19483d44aa52b1a27b73a0e2deeb3b7a77f1aae8f5fe796de110aae6cda31189a2cfda1ef293f07c7ba5d99948a6b5f0a0fd884259cb4a28024b2e5ed2c853915342926718b50bc355b650fc462566c6b4e8c8060e0b9f6aece0378f24ab2e6e14fa692c623ec94e1565440d0832b50bb2b464df3b4d2c1acab0cf7e4b60cb4fec359553246dfb805042805d44e49064cc100a64eb3f891cc65b220a59be90327b84874729a2baa28288afd398f1eed0f42d22e7267e5ef853850d7ac42341009306bedaa51abc109739bbe22a48be3dce6e503c95f3feff930f108de30dfc082fcd56c4b56486c412631e020235c58fb6fb0904db67c0d657689a6610381ba8d20c408d4546b3b91f69efb50ade24d85c85fa4d56ff8159373285c1e726cb11422d22738554cf8b48eb8faadc1471dc238a42ba5a67b581089e24fe9a94477d32ac0478c22d3fd761b89fb6d3917d3f1030d275f0f59f90d10b2b0bbd56d4aa21a7f68125415473bc31326457b46ce5786e7fd98e4bd911b177d6f115757c1b1ec19c6d0818760464108c19a975942b727c44f7964d9a191781421574e051d2346a83d5dd8661747f742cb5d7d23b3c4d83f13b77b22e1a255f8c8199d1af242fbc6e7c143df1a1d4b00dde8deff6714d5979c2e2844cd315105fbd7b252d6852746000a76876db76a216e04f08294cc16b7bc8ca5f5240a194cf978216fb5dd3a9d80dd0e3e950c25579438e55a7c1c1f7b8ee265bc9ffdd1734940c52482e8ebc6b736e05e7e8d96e79497a065d56157502c276d3de1bb96463971a672bf67cae246b185072ef29c2848787875835553cc7b142602f5e726af35c24d77014947bcdda2a706d5b62ea04eb994425f800fe0e4d8c3db3aef792ab3103f702dfc415dbb47bbf87f125bad5fa632c85b2feb68a21bef2903d5d6a2a42c104ac8c40f652c8231c2ce435ad9d8a0d836c6c01d3eb41f5929efe0146d379572c28e64777edf347658993035bd10c222584351559bf43a0ed278539156753fac9d59f3ba14489b57220da0f23ecd54f9ba9e97fe50561d4a6112edcc5181b80ed62153867598e564dfa8d858551d7a3eeeec37c696a78e43bb37cd6e895d23c7cedbb94904b5da043adc1d868980aeefe1a33803b58e1a5596e8f87d836fe2c3b6c8feff27897d78885a1c336151ebfdcbd37a1c68ddf07931200e7170cda294e56f908168e595a69b197536b5859f3163ebdf4e54288f831100aaab9ecf12a59ea6143648b4358e3a7ec92ecba01dfb5f7073f1811f67b46b364b70384c950bb4237868e99502f60cd7d86dad670b1612529298d5eb2a95d94a1ae4aa0ba26af15a4dfbd9b82275b267abaab0b4bfbe45cfa8bc2f1f06186039b3e55edf47db039dd6eb2dd4effa131cc1b049d41f8c7823416e50cfdb307c511a3dced393b448c4bde575dd8106dc1098117889c1b115ae49004cc54f3b7cb7a3893306975436ec30a410402500e264295e94045a8a58f491816d37ee5d477ee4bff661c3b812d0b62c3cbe31f4c0ba71658217745236152a820314e87015b8b5c1d7206ba6e8a56e457ff2da966d7ad7fe455e7eb62dcf41a0669ccc6580387c80dd08e0174c3bbd11f7bbc38810ea9efd3fad0088b15b75bdbe39e840bf44dcc803a8d0c8719fce300b9c1fd29a3ebdcd1963dd17ba4a8ea661bf5568952c61b2ccf49e51fe098dd5db2fafd08580294e407a4cd29f5698e49cdf86b687b1a604ba76caee4590b461f12a9ab85c46a0bf82003ae5cd5634c6c9d7a091025227f5e9045a1c9479b51927f0cd0f918d02f971430450afe2ba2fc68d848e0382d99a8a4068c826e34766ca9808668cc04882eae2c2b4842e6db94747057540bd29bd95cbba1d6548d1c8c4a7691413641d8a0f6cf9769ba6036a391b49161aac2c3a77260e436b6fe307886741ff7e5562d1bec181ef6bc178b6f7533c978b7564b9f8b0353370887cf53858bba5fc49eccb6b776fe45f139f9e8be1572257447b68b41833bb9b543a69c1fe2a0a0371d181d2e6cb5b4cead2c5ea8bde6bb81e93a5aca1261853d062260ae1e127c4906ca2b6c161b149baddc6e6292322a5cba95076db712745d97cda82766aba171dd514f2f1040979cb9ac0bb54d6e095e8e27d33b525d706a9fd077dbec35e14eb5c91ea60fc234e33cbf32c4f97f00af9d57988197984d171583765d79078a163596ac84877396f7fea9f3715e5b2ba3303b1484333ac0827c4416a4c02ad6e8196ad818d40693e8949d7325e0ec93be62a3581e585e0cf29036e40c5bc58e5d080087058fa94f21695340b1c24432c7aab9e2b84525f95c8470a4901a10aeede02f1f693f87bf9803ccaaf15ede001c17b78fd619e543edaa439655266f55d8d6f0fbc48490528a0b274eaa67a93efca34a82816e38d044198455f304204252f04adbd28821e26b33302fd24eed8df1e7e4d6d988c8a8757a3efb37c346f6e56b140a772719392fde3234ba9cfb09d753db360266bd2ba60c4d1b0b1af229cc5af01c85aac129417c88c042c77f25dd3d9e4e789826b002c5b852cc50b518121362ed7fe3898df7b3db054a3808d7fe53a4236bab0a873bcefea4d2f9dffc4fd9ef751ab504ca0670493f25d38083e13601a3865b26d244865a25d4e0a16deb0c529f0a905468283e8e614f2e54517f0190c8f1029348cfc8d016172fdb2114745812eeea41536317e6eacb45aa7308cb9a002c9307a6cb990640f9a2aa682c90491c60c620a1b4b5b77ef9c11e79ccbc223df6de3a45b6ad03c2d877cb79872714c8351b7618c7789112334785bebeb1d7c67ccd6c447096b2350333731707f484625f5cbb8b0308c7b8e02645c47e22f8bbd944744d6653ab08b12969d22c69fdb5f014268aa2b448db0fbe9d1cc6c0c1609d6cf53e56b0eccb8402a53f488a38f59b8686943b9cc3c469409ccfb40d4945884abbd0864bd693f59754398b4e8a53a52e2ded1d55b2216a20ce7df0de77b0898723e225c01569dc65259f1d4011cb59fc2329820f33ddcf1f132f4b62cec987bbeaf295b94ce698af182de68fe93eba11a4948025e3cf03b427f23d53a17c93d5a1cd690612a3871dd4d73d70cadad397a0ce7be90834cce935a41aab7d76cf4f016b70125580926b6c6d9beba1b9de6fabf9d4dcc12611f2b778e5f6835bb1dcfd6af1c968483fc76f97dc09aaba75f2a0eaf68f42c471f0beadd3ee3308211151d2b17c565719fd98d9c4c106ecb279bf5120fc5c8ca02d0d60b0da2cb192a0f348f0366c1149dbe3474b3f6be3ba8f110c32e45b13f2ef82cc161af4a1474014e9f6a1d9d12df8add3a41d4d2ce51175a67d897586947e7d678fd76cc71d844504c68bc07a77cdebee8eedfa87db17e0e584733cc86bdccfc86f97fca2ff7a3077e5c7135becaa5436dc51e7de48129135f457a08de6b3badd8c20593f6f9f00cdad3ff433bb012ed8cac348f84a80b0e26c319fb02153833203bb3925904168049578f412fe1743bf627a7681c1734f1987182595b552d98bbd14d1cd8d08a5801f57877493d0be262b7cdf3246f4d482f44f4566c36bec2f97c2ee7912b24f4e0833f889459989ea7a92a77ba1406a89eb4d32b69ad646bee412a26dd01aa27b101e0669e81982eb97edc1741539e89915d046ae27c013d51139f885b22a08a5f2d6842bd0029f1c65c7378f89e1ef08c47d62f4fd2c4ea0bee1dc5831fd5f578215be4cf158e3b23aad9058d759b06754b0d61fce9c281f22f807c29bd1bab9fbd051031e800740e25ebeded9461a547308e2cb1bc3bc97775d0e410e7a4e5e46d27c38f25f2b9e0a97862df8583091d0f29613071266a574f24c5b35d25b259a08aa38247ef383db17a7f4d63dcf57904c9fba7eba103d1f346ccbb47bf9978c970f075051b5bcb0dec9bc319a277f97df0546188e44d6ffc8e7c7f36864f948b43c4b682c2db9a2fe8089ffae2d2161c8a72f9fecdbede28f1d4d4b31b6d0ee6067ae720d9ff3b2246ee88d2d7d18d013667288d5c491007bbe29f87a5e1b06c4b5cf2fed48caaa97c5eec529714991fe3c2569765bfaef164e93efedb07e12e0e1b5d8596c134d20053adb464de4ca3a7c88a4aeb40f86ffd83b16b58b0f84dabb3c3134debc97cd93914bd1bd9bfd2e5ab00f142c1252253abdff619c4d9d36f8679637e776888086d24d4b0a82e3143a93b4033ef331a13198fc103ce996b6ba6b030dd8e08b3a7f65ea573f09f00803632f8e2a4fc579d477c757c24ead803ef8824aa91b407401c94c4776b744158caf9a00c7299a3f7f0704b4b787fe06673a6d7a136c9e6ae431d8df4a85b5a94b3fe99fbcc90f8923c83ff8864a83055e7a4fc2f2398221207505947f1bb9f5ecf2815b564404c467c2ea50d30ed003606316e87fc50f49dc04162f890cea0dca499632658be10d96cd2328b26c19feaa042989708d219bcc7e695d0806a4913ad95dd7d688a424acc330ced1e55d84abb8e3568f70f0cede3e3e886d652449e5e793d79be7fdabba0eb1289b7207b352eaf7820a6048d0ea1db9c2514494ad06189d5e9a0fcfd70fc14e0e9d28fdf695b62fd5c674b94078ef94df6989175da14a64fcbfbfa0ab82b0f6844b955a82d7cdda9f6b739921ac2f447c0e41f24eb622ea125442b57d6b939b11f361335de13921641bc13848adcb818efd14a6f0bdde7f1187c376690c58611280ca6070e11100d2f4110805695e1db36e92642c064b1b615a8aaaaaaaaaaaaaaaaaa5a96686408000360dbbd8e03a22ce0302000f3f07ddff753e6856892802392c47662dbb6ad255ba6982d8c2dcb2b0f215dbe00f821dead19f14c2addd9054f95c2adddf04c7a7069743ca788b833209eaa8d1babf349dc9d3fa529f19c627365543e397c7efcaf6e6d80e7d423972fa21ffa5d5a04cfa9db735a7d4d825b23e199a4e0b26fbe732e5f3efcd0075736c027a95c1a13cfa936cfd6222ff4c5b3bce2851478c224f9a1472e5d08bc909c6739e6855e972fa51fc2e039a59eb6e5d923bec91b53e493b3cbd6d40b957165c24f66f07c85ce7e782a369e73496bafe7d4d3a5ed9e53f349c8ad49f04c06f08c1dfd9313eeece8a9969e2f307ee8cdb3437c2379c684f8dc085796f554095c19119f1ce3d602798af19c92e1d6983ca71479c2d8f8a13d2e2d83e7d4015746c327a7b8a4e1ae1c0fae6ce993383c5fe3db7bc6e60f25af0ceba90a78c266f821302e6dcb73aac9b3a4fdce0477d6e4a9b03c5f52fc1008cf1803ff04844b171a3f647b965bbc5094a7d3ddf93da95ecf98ed9d287065749e0ae8ce5078aa2aee4e01cfa4245716c853fd7c353021794e559aef39e57a964bde46c195297db2862b7be1934e5c19139f5ce3d9387eee5c1a17cf29169e650d2fc4e419e3e173213cbbc68419f1436d3caff3bde0595af04caa3cdb436b563c9326dcda13cfe49be7bd7fceb37cf23633972eac1f4ae0ce644fd5bbb2003e09bc7c35f1434ab736c73339c4add9f04c22dd599f0acab3d4e3851c78f681ee049f54b1cbd7cf0fed9e312e3e57c673aa99f3c997355c5a9be7d4d1a56df19c5ae1cea2782aa84b97113f543e5d55fc50ec5936f142055cd99c4f665d19934f2ef09c5cbe55bbb50f9ec9056eede7d41d4f57103fd4a78be885e878ce1c4a23e23995e6caae9e8a80cbd69c17dae2d66acfa9a8e78c8caf32ba744d79a13d2e5f3b3f647467569e0a842bdbe29379dc5a966752805b1be499d4e2ced63c1511cfd94567003c15954b13e43995c5a56bf7424dcf17153fb4746b5e3c932e5cba2c78a13faecc824f2a5d99eb93454f9aedca41ba331e9e2a8d4bab7a4ec971d922f34222dc5ad63369c7f338b3ace28512b8b3e153d57065607c528f67ec827f52c5ad099f49d9b34ce06d6f9e31399f8b7ace375e26e6d2a63ca770b726c23339c17366c5570d5ddad5738a8ebba3c03359756b413c931f5cda22cfa931deb8b53f9ec92aee0e044f2adba5b9f19cf2e1ce86782a38ee8c89a7c2e3d99eaff1d215c80f053de7224f9be0d696782699ae4cf6c9039e65062f545e99244fb5e4592ef0b702eeec81a732f38cd1f039102e69095c3966dcd9064ff5c22d18013f14c4a5d9f19c32e2c61cf9a4ed72fabebce2d68a9e53903c678d7c150537c6c8276b97ad065ea8ccad4df24cbaf1ec0f5f472e4d86e7d406cf79c3b70cb92c9a6f1f9796f49cda5dda15cfa9139e313b3ec7c765d9c50b4979c680de4915cf7bfe382e2dcb734a804b5a942be78ce716fc8d5c99204fd5e7cc8cafca5dba98f821d7a5413da79cb834129e5314dc5ad53329c795a5f1c9406e6d826792c9b3e5e585966e4d86677283e74b8c1f82f39c167c6be7d67ccfa4ebc6684ff49525f149349e7de367edd208794e6d71676e9e4a892b03e4935877a6e4a9a65cd9fca4934bd33da7fa8455fd9024cf58977f32c573b6f1320d9eb1103e17e6d6da3c9347cf52cadb74b8b2dc272bb8b5a1e754239796c5732a853be3f254223c6170fc501fb726e6994ce0d686cfa4eeee103d938e3c9bc1b7e9198bf24fb2dcda22cfe418cfb9c5bf08b874055fe8e9ee487926b1aeac804f1e3ddfe10bc0952df14935ae8c834f8a70e92ae387782e6be6cbc79539f1c936ee0ecf33f9c79d45f054672e5b422fc4c1a54b8f1f5af28c397d0e92bb93c03349f58475f143729e4d63b69a7821216ebde4f8a114eeac82a71ae11963e173c667e7b4467b4ef5716b4d9e538bdc19eea91a784ea5b2043e99e559ae79219e5b9b7a26dfb83bc22795ecd62bf94335dc98205fc453c9f18c51f04f5eb86c81f1424e5cd2965c39c4e75395edf1c9a95b13e2993cf374e3d9265f34b76008fc9010cf18169f0be339f3e3abaa5cb6782f647cc660f89c993c9ebf50da99e714035716c127912e0dcb730a801b43e493b11b1be493f3ce2478aa36b7867b4e0572490bba728ab796c63399c37372f0ad2fcf73f82ab934109e53539ee5102fe4e4d982e485c6b8321f3ed9c5f332be526e8d8d679287e79c62cefaf8aa2997d6c873ca8ce7924c9792177ae3d6e43c9348dcda18cfe40c9716e739a5e5b204e3858c2e6d8ae7d408cf99c4b7ea3c630afc132c5736fb240297af187ec8f82c6778a125cf12f94256aeec8a4fdaf16cc579a1159e319f7722c4738e304b3e5ee88167a57cdb3ccb235e68804b13e23975e6d90af3424ccfb2e985187836f88d7367463cd51c77f6e5a94eb833354f25c4b37ce18502b88445f043483c5d2fbc509de77f7caf3c67687c95eeb21d7456c3538971770078260db9b5439e277cd288cbe25099d5533d79c296f8a1379e93909f89b9359fe7d4209785e4670297f6c373aaccad571f3fd4c225ade8ca21e3d6e6730a8f671df979c0952df9a4f0d2e43ca79078cea8970172e9da792136ee6c89a7927369569e533f77563e95944b437a4e193d5d3dbc50f2f2a5c10f517069833ca7b4b8b43a9e53455c59d3271f791efc0579b62c7821109ef3e965733c678a7cd504cff27c895706c3279fb87c2df9a1de73e2beb4726b383c93c3278c871f42e3cea23c5506cf560b2f14c3adb5f14cf670d9e3778f3beb792a076ec18c3f24c5ad95f04c72b933314fe5c2b384f236146ec1603f94c3f3c5c10f597065c44fa670655d7cd2e9d9bae1856cb8b2a24f56b9353c9ec9246e8de739f5c7a50bf6426a5c59ec93063ccb355ea8f79c4bdfc2e3ce664fe5bbb3119e0a8a2b0be3937b3ccb435ee8e8d6889e538e5c59119f24e31933e09f4c794e09bed53b53e2a9ee7876f61dde5ad43339c5b3bdef9b6719c50b1df05ce89773e982f24278dc5ad233b97bc65cf81c99e7ac90af92e0f235c00f016fbde8fcd00c57567ef2c98d497d72e7cac47c12ce95c1f9e40f97b6c0736a7665653ee9c2ad81f14cc2707724785205706b4c3c936d6e4d9167528c670c8dcfdd7169bfe7d4ebd6f67826a1b8b3a1a7d27263897c52766b42cf29a9e7297c6bcfd60c2f44c39585f0c91e9e33a7af6ae0f914df012ead89e7949b4b4be43915c6ad29794e21af2cce2781b82c8d2f24bb339ea7123e63b11fb27a2ef5ed726b679e49062e4d92e7541bcf56d10b8db934119e53135cd9d3272379c6c4f81c1b7726c553e97177187852d12eadf89cea3da7244f8be3d6087926b77896caf7884b979b175ae479f1b77a4e3d5e1675652d7c92894b2be139c5e5d6a8782649b8b535cf6404b760b61fdae1b29ce38582b7267b4eed7165853c55ebd62c7826899ec7f0ed79b6a4bc10f1d225c70ff93c2bc1f78ae7af5f8d4b83e33905c4650bf9425ddc5aec39a5c7b375e585d05c59964f96b9b5029e53923ccbf9b5376eed80e7d4d4a5453da7a6b83b4b9ec944aeac8d4f1672e962f3428adc58209ffc59255f33cfd6132f74c43396e59fac7067c4a7bae1ca14f8a496cbd67c210b6eccea934c9ea5232f94e5d612784e51ddd90a4f85c595493dd5ce738ef916067796c353997165757c92914b4bf39c72e0caccf8e41fb746e79944e3f275c30f9179b68678211e2e5db3175ae339949f8f5b4bf34c3a7067063c95974bbbe33975c4e50bcd0f8579f6e75be6d939e65f7c15b8b5359ec91d2e5b83bc101797f6c673ea873bf3e0a96878beb8fc5096e75a4a98d30f097265489f2ce11973e3734dcf18189f4be3caf2f8649dcb5e95d6c673aa872b6b7d72804b1a00574ed273e497824b333ea77cb7b67b26e7ad2df04cce2ecd88e794d213d6c40fc17169333ca738784ea1093be4871279c650f89c075786fb64eed9627a2114eeceee49356f8d80e7542497d6c073aa76652e7cb2893b3be0a9bedc5a19cf640d97167c4ec59e9de1abc865a9c30b05dd98249f04ba330a9e2acea5f5f19c92e2b9c73326c7e7a02e5fc21f82e01983e09fb4b9342acfa99e4b43e23905c2b32ce06d6d2ecdcb73eac933e6fb276aee6ce9a98c78963fbcd0d0b3077c979e93ca6c7df042235c19974fa679ce2b9d4df1547b3ccba7176ae0ca10f8a404cf92cb33997265597c52ce73d6f1b20eee2ce9a96cb8b31d9e0a8dcb57023fb4c09d85f0544bdc8281f04355dc199ca76ae2f235c80fbd7063b527eaa541f09cb25dbe68f8a1e33366f44f3cb8b52ecfa49367ac837f22c88d4df24925cf980d9f63f32c237826b3e76f7c7f57f6e5934bb756c53359c29575f9e49a2b43e393732ead8be7540bb7a6f44c42f08cb57e88ead9327ec29ef7f00de0b2f4f91d3f2e5b5abc1013cf991a5fb57bdef475e0eedc9ec939776782271593e7cb841f1a3e0fe2bbe45972f042ae5bd3f24c2e79cee2b7c63c63797cce8f4bd3e13945bc33364f75c48d657d52e8162ccd0f5171f95ae18788cf82f9e2f16c2dbdd009b7d6c33379bcb5289ec9385776c853c12ecd8fe7141597ad345e288a5beb794e0972778c9ec9ace71ce35f793ccb375ee8777766cf241f4fd70c2f04c99d15f0545daecc90a77a3d5b3d2f14e6ca609f2ce0caa8f8e41c97b0337e08ead2b4784ea9706b743c93443c6716ff2aba6cc55ec8cbad9df14cde7065833cd5bc7499f0428d5cc25cf8212f9e3bd29ddc93eacb8af00de4eef43c93825c599da752f29c405fb270697c3ca7a2b86c21f2425e3cfbc74f00ae8c844f0e7165519facbab43f9e53553ca76ec634f827739e4dcfd6082fc4c225ac3f74c3ad69f14caa7077809ec9422e0d8de7140e77c7ca93eae71923e273243c7fe02fe4f922e387e23c634cde891dcf97193f24c2f319be3ecfb9c4b71eb93b474f2aa0bb037c52c1ae4c8c4ff271e7edcb2acfd804ff84856719f542103c6793dc9b1477c7f7a4725dba6e2fd4c6ad019f49d895553d15d173eef02d45ae6c864f4a716bbd67b27567b7a762e0ce7c78aa35ae2c834f86f08c417d6e92cbd6182ff4c465ab8b176ae2d666782639789649bc50d1b3f3dbc19579f1c9a7bbe3f34c0e7267183cd50ab736c233b9e5d2cc784ed970e9e2e08504b932db27a55c76929f0a5c19199f8c7ace05be94e31286c40fb9f1ec183f5f57f6c327bdb833dd53717069639e5352eeec89a772bab3254f75f49c71bc6c833b73f2545b6ebdae7ec886e7497c852ecb1b5ea8c9b384fc5c72698e3ca7ceb8b4de73aaf53cccffc8b377fcbc3d637b7c6eeab9983f923b3b3e950ecf191b5fc57b966f5ea8e7ca763e09e5d906be233c7bc5cf9faff996972ea317cae3598279a1dedad53349c79d3c5f467065523e49c19559f924f1d235c90f19f09c517c6bea59eede96c433a6c3e7dc3c6fe3eb7b9ec637f79c67bc4c7777b03ca900b8342f9e532edc5a9c6752cb9d79792a139eb0457e6891670c837f62c573d67ef22e0dcc73aae8ce3e782a1f9e13fd783c5bfb263d6137fc901897ae342f84c8f385c50f315db69a5ee88a2b9b7aaa264f97d50f21f06cad7921132e6d8de7d40e9706e73995e5e9dae185a62e5bbf173a5e5a0ecfa9a45b6be099ac3dcb392f34e5d6f87826a3b8b5169ec93057f6e6933e3c4ba617badd8231f9211f6ebd22f9211aaeccc92723b8b2313ed9c79595f049222ecd90e7941797f6c573ea852b83e4a902b8b32a4fb5e6ee50f0a40a7abe967e48833bc3f2544cb760b41fd2e1ce9e3c1505cfe9c8d338b8b5139e490b9e338c7fa571f962faa10d2eed85e75406cfd9f43239eeccf554b94b1be139b5e539a79e26c71316c30f7d7169813ca7b0b83436cfa92acf86f1d375e9c2f2427d5cbafa42683ccb255e88804b5be13905e6caaaf8241d9796c273cacba52df19c62ba330e9e0a86a72b87179ae4ca783e19e5d92ae1855ab8843df24375eeac89a7cae3ca24f824995b73e099dcb93bae67d2e93963e8ccf6540bdc9dde93aa7569793ca794b8340a9e534197b6c1734a812bebe39354cfd6092fe4c23366c2e7c63c635a7c6e8ca7ebe98704b835db730a902b33fa2497e754a0ac5263857cb275d9e2e385b2b8b2de27bf5cda19cfa91b9e2d475e288c1ba3faa400cf32f836306eadca33e97365683e29c3dda9f2a4f2b9b4189e53626eed886772cdadc5f14c06f16c025f3657a6fba4054fd792178ae3d21e794ea97167c0a74a7acee09771dc99efa93c78ce395ec6c125ecea8726b935dd33d93b3bf3543fdcdaef997c3d19b934329e53345c19d32775b8351f9e4932b760587e48893b7bf3544c3ce70cdf2ae4f255e587aa3c6364fe0923cff28f178ae0d660cf29a84babe13935e6e93abe10f2ca7c3eb9bbb539cfe415cf19d4573d70638b7c927639fbe2aba23cfbfbc2b933089eea83cb3285175272f93afe10985bc3e29944e1d6829e538cdc9a9a67f2814b17d20b0d72eb65c70fa970e9cae28766b7d6c533d9c29531f254b5274d7681c4784ea2f205fba128b706c933b9c6ada179261b78965eca529217da72f93ae287d25c5a07cfa928b716c23389e5e96af242723c6179fc502057e6c1274db83b3fcf2421cf32cc0bcdcb2e7dffb8323f3e697567083c159867abc90b6df08c19f1b91d2e4dcd73ea8167f9c10bd16ecd83673277f9baf243569e0b32636c3ee7e5d215e685e65cba52782147aeacca27936e0d846772ca93b673e58cb9847df143783c4b372f84bbb53ea7e43c6122fc1016cfd28317825d9af039257b4e2b8d11f2c9f25996f142ba2b43e193475c19149f7ce3d29a9e534bdc99f1a972783691b275c50b2d7161757ea891274cea8718b935de33595eba5878213a57d6c897304b352fb473a7edcb29cfd923f716c4f3f215e5871878ce18f9aa2d77d6c153c570673f4f05c1a5a9f09cfa726b523c9322dc99134fd5746b609ec9a2e7342a5d14bc901fb7e6c23389c1f365c50fb1b9b39f4a812b9be0931f5c59984fb6b93b113ca96ecff9c47ce9dbba33219eea8d670bcd0b9170696e9e5357ee6c86a702e3cac67c9284e78c8aaf0aba341f9e53649ead1e5e2887274c8d1fd2e3ceba3c5509b7767b4ecd79968bbc1096674c8dcfc9797ec317e8d2f6784e41f12c1e3f7177678127d5ecce983cd595672b83176af3fc90ce4078aa222e8d85e7d405cf191d5f157cc67cf81c9c3b1bf354323c0779f6d2e9d235c20b493de72d58053fc4c49529f254b32bebe1935c3c67707c95efd95af242622e5b7ebc9016cff128610efcd0114fd8143f34c795013f19e6591ef03637cfd8d03f91dd9996a70ae1d6007926adb874d1f921026ec1743f44c4b34fad3df24caaf17cce84e3197bfd50d5a569f09c42e0d67878268d4f17213f44f47c15f043c1cb56d50b99f1dccdf775f942e18792ee0e02cf64f2ce1278aa0b6e8dea998ce3d28e9e53404fd7153f24bbb3d753e99e3331be4acaa595f19caae1cee65345b9b52b9ec913ae6c91a7a25d962cbc100057f6c853017067473c151d972ea91f2a7a4e00ca17ef871cb8b50d9e49059ebd4d180b3fd4c5254c8c1fcae3d952f342253ca7976ff13c6944578e189796c6732a87e7cc90afca7263559f5cf2a495f7678c6749f4360e9e31323ee7c6b315c50b21716bc16732f68c01ff89d2958df04921ae8ccd2773b83b539e54b8672b86179ae1ee64795209f03c8e2ff03943e4abb4dc9994a7d2e016cce78778b8b40a9e5343cf1800ef848e5b333e93bee755942dac173ae3d26e784e79f02c2578260cdc9a00cf29449e13ccb704b8b52fcfe40097b380394f9813cdb7d278b60a7821a4e76ce15b825c59d0271bb8b430cfa902ae4c804f06af4c864f46f16c6d7921a56799c60bf19e7bf0535d99964f9ab9b5d673aae9f995cae47cd2916779c60bed2e5f667ee8824b33f39c12de599ba74ae25942f24213dc9a1bcfa40f7756f454155c96afafc9710b36c10f2df16c1d2dd8971f6ae2ce04782a2b97303d7e68904be33da7ca67a3f85e3d5b09bcd0f0ee3cf0a4e2797e46693c3ca78c97d6c373ea7869603ca76078cedcf8aade8d35f2499e2bfbe09330dcd8d42701789641bc10d1659368cd89673284678c89cf55716b46cfa9ac2bc3e193573c63227c4ecc7366c757099fa5ec77b45cbac4f8a19d674ce9735c6eed8d67f287cb16d40b617167424f95e5d6a67896cf641e97f6e53935c0a5493da7cab83b023c93883cbfe3cbc0e52b881f3af38c11ff8922b7b6c533b9c2ad613d9375dc1a0acf64976753f8229f7f40ebfd11e3d22e784e11f02c85de86c1b37afcfc79b6a8bcd007cf12cd0bd59e5de02bc253ea49a35d0182cf19e65bc22b53f249df9dc1f0545d3c6355fe099c5b63e199bce0e9a2faa1039e31de3f49f32c736f23e2398768bdf2f8a1156e2dcc3359c07342f2b41d9e30383f74c5f3317ff21953e1734977a6c3539df1ace3ce909e6a865bfbe1992c7367404f15c1ad99f04c5670657a7c72925be3e29964e1ce5c78aa2d9e2f2f7e288467dbf8124a9b7a4ebd71691e3ca7729716c5732ace9d9df05454dc9d019ec947ae8ce89310dcdad333d9c4a595794e052f5d87fcd0933b1be0a9b85c1a0dcfa90e9e2d282f9474091bf343505c191e9fa473e9aae3877e9ee5182f94bbb2a44fa2f09c085476c027b15c599b4feef0fc886fd0ad95792683cf72e9856c7786c35395716b3b3c93c5674bc90b65f0845df14375dc99d153897996715ec8e7d915268c8e1ffae3d600784e1972672d3c9516cfd800ffa4e8d927be56b796c13379c0ad21f14c82f08cc1f95c0677b6e5a9e03c637d7c2ef99c893c4d824b3b3ea77ecfe7e84e9f4939cfd2ca33e179967fcd8de735cc3ea96c884f8a7167413c951b7706e6a95078ce0fbe85c6a599f09caae0ee507952f53cbb65768bca0879aaf2e9faa1b4079e533c77278067f29067d9c03379ddd9efa986b75e80fc900bcfd7ed87729756e73995c6b3e5e68552b8331a9e2a8c4b17173f44bbb1d90f5d5dda18cfa919ae0cf954aebb339f493c6ec17c3f54c465a97e42b934149e535d2e5b6fbcd014cf5a306315fc13189e311c3ec774f962e3874e7896b6dfe1e3e97af24275dc9d27cf649d4b83e23905e7d6247926db7896549e49edd2a8784e91f064e339a3f3555cae0c824f8eb96c0ddf452e4bacac894fb2f19c7166cc8fcf515d96492f14bbb2359fb4e1d66a7826c73ce9784e3c5e86746b539e49dca50df19c4273099bfa21489e30e40f21726bc767f277674c4f85c495f57c52f78495f1434f4f57d20b1172658e3c55cfdde13da9ca678c807f52c073327d2b8f3bcb3dd5067756c25349f18411f24387dc5a18cf640ccf99c6cb7acf394bd7971702e41296c20f6d7165407cf28b2b33e29365dc9a93e7149d5bebe39994e2f215c20f7570e9eae38798dc9ad43359c63306c4e7e2dc9ad333c9c4ad01f14c9a791ec617ca95e9f0c92c9eb1349fdbf22c9bbccdcb3386f44f06793e4267493c951db7e6e699bc7265537c528e6729f542123c5d452f64c71396c50fd9f19c49dfeae0d2b83ca7849e65222f74e5d6a43ca7b09ead1a5ea886e7907cc33c6180fc10f2cacc7cf2855b6be29974736b4bcf24953b43f35440dc82097fc888a71cb7f6e69994e0d95d673d3c951a4f581f3f44c8dda13d937d5cc248f8a12c2e5d4ffcd0ebca8e9f64e1ca3af8e4087707f74c06f26cbdf042323ce7a3b3009eaaca9dc9f0545f3c5b29bcd00b9756c8738a8bbbb3e549d5e4d210794e81f16c163ffb74b5f143b81b7be4933d9765a20533f343535c19224f15bb32de27bd3c5b40653c7c728b4ba3f39c42e3d60a7926b9b8b5d9738a8fe71997b00d7ee889e7aceae28c9ea5202f44e5d29e9e534ddc1a9967127865737c52915be3f24c0addd90d4f45c695c5f049289e8de05bc28df1bc93042e5f6ffc100a9716c473ea834bb37a4ecd71650f7cb283e7517c9fdc5a16cf640acf18099fe3e0d2c2784ec57065c14f62f09cc9f155bf2bc3f2c9e3a5bd794e49f09c7cbccc8f3b2b3e150e97c6c0738af634e439fff819efc6ae3ed9e4d692cf241c9776c273ca824bd79a174ae45916f1424fee6cca53a1b9b3099eeacd95d13e99c0654bce0b597165677c12905b0be03975c8add9f14c1af174155fa890272c911f52e4f9daf243123ccb275ec880e71cfc92dc9999a7eae1c6b03e197469383ca786b786e59904e019fbf24fa8784e31dfeaf29c4d5446c72717b9b23f397469553ca74ab832289f9ce0d2f0784e2571657c7c32796baee794d3b325f542605c9a0bcf290c6eec904fc2ae6cf8c913ee8cca53a5b935ab67728e674cf84fd63c5bf45d737708782623b9b23b3ed9c89d0294332ebe0acaf32bbe043c5d35bc50244fd8163f74c7731e51b6862f04278de7fca1322c3e79c7adddf14c1ef16c15f1423ddc98991f0081a72b801782e3d6187826697727ca337975e9d2f242517746c453c571e97ae085f4b8322d3e89c79ded9eaa832bcbe193585cdad2738acab324e485aa3cdbfa8eb9b3d653195dbe827ec877d9aae385aab8b4239e536b2e4b3b5e487865429f74e0d6bc3c934f9e738d9765f06c00736af9567967649e6a874bdacf9533bc3bad67b2e959e4ac50395b9579f9240877b6c05319efceeb997cbab42ecf2927b726c83399c5b3f5c30be970eb05f5432c5c593f49f47c8b2f02cfc6f04de4d99ae2859278c682fe49eb593ef04c6277d67b2aa45b4be199f472650d7c7283670bcc0bb1b935449e49309e31293eb7c59dd9f054635cda24cf29372e613efc501ab706c73309c42d58951f4ae2396ba84c8a4fc671e92ae085eeb82c4d7821a06759f43636b7b6f39cf2e3ca6e9f34ba330d9eaa855bcbe1994c7ace06f92a2ccfb28d17f23dfbea8e01cfe4245746f5544277c67baa3177e6f3540f3c67d19736dc1a94e794d5a5119f53bce76bcc0f75b96c99f142505cd9059f64bab52f9ec9172e4d82e754007746f454133ccfe27bc0a5613da7eab833119eea89cb17113f84e6b2557ca138cfd7013f24bc33069eeaf8ec95af15cfd6f989c0b3257c0579ce154a58eb8770b833284f85c19591f9640bcfd194f6c1736a81674b921722e3caae7cd2f82cf178a105ae0c8e4f1e7263c84fba9e37f125ba7ccd7e48ca3306c5e7b2b834209e53669e33886f49cd65b3e572bd5aae5787cddbd355b66ecbf59aaed70ce66a7973edb45c2f99ec962b2673b526cce59ae5abf3c0e6ab7cbddad6ab352b4fec75eb268bf5f25b9d00f0c8666cf684cd56ab31dbb2b65e65ac4967f91dd627ed393b97d5663ff6baaf12567bc564b198abbc1300db973bb4dbb6d9b342f317adb3e8d9a5102c00da54d2b66c6fc0adafdddaf9f5dc29e7ce38209edaad79ab8c7d2b5f414a5e3cf7f028d9c925bad57fee6ded9a560500d90db68bc9e504c462d37edd66c973edd6b97b004aa02cbbb25809746d5c00d37e80390141c78c76d1be577ee03e73b8e2b203e0f28e98714f3a00b7803ab9e79f5d2b31c005a0c7b811a0d43fb84d2ec70de53a6e0d3c96ffe71f9bccafbfffff4eb9f8ba9e47f1bf9311b9f5eca35978fe799482772ac320fce544bf66bbe5d7cf133ea087fc84a025e67f9e5a1545440bec1718e44be220b7a5805c4687ecd815b27248889ac810e44bba881ad68bea1c0490f50101b9ab0a422a881472a245a28e1582bc1c20ea268a406ef3450d830079501c519da30479f925ea28be4076ce0b398c1164e5bc80bcd4459d8bf2476d2920875989fa894290479105f2a026646d1644f5cc0ff91388208f05809c491dd9b04790bb8a40ee0202d93945c8615a909744e455424b8e9244be2480a8977c1175901ec8792438734eca9c9b0061fdc0915ed2903f6108f2d713f2a04490bb9c88fa8939c8ce99212f0b88bafc00b96b0de4371aa27e4121e77923ce2505513741761714c883e440564e0c51c3ea445dfaba6b07e46512222d43401e0409f2271a4156ce09515d0284ec5820c8637c205f6242d42f31c8a1d002f60b10e4305cd13c59ce748e1364f1a8821cab083911b29d03849c278e38334113f51239900300249b8915d9a551d43128c883ec886a0907399614e4af1fe4510e41ee422380e28a3c2644d44c1e91fd1a24ea12871c068cba49212d218c1cf28b0fe4310090f3c01167980451976690cbba202f8dc87340c40e2a04b9cb0ae431395195c302f2a03be2380a3490db5440ee5a22aae51be43127c8cb1bb24abc801d7b82bc0c206a2239c80ae080ec2687b47300401e1409f27281a84b17f2979727d71a800d3b426e0346dd8490fee222b48b89a86774c83a270064f1b0826c000bc03ac706e44bea40dec408c8cb600f92833ce607b23713642de3207bc687bce41275ac09d9393ec8f26045dd8491a88304418e45843c17446c011640d68702d9b13990334983bc54421e4b46fdc421c86341441d940772ac27c85f1b202fa5440dbb8a9a678233ed4944366c11e4a598a883d440d63641d4e59338de8943f6122ea27a889ca8ca990279933e90971c20521b0b516d0281ecd82051053a03765014b26314d15d3f202f2340eefaa2a781f090c79a206fad803ce80d6481cc90758e0b39ec81a88306415e6e80ec07747a0926aa7850415690469025649143266224ea7286dc164054cff490c7f6400e4594a85f872067b20679145a206ff214b5eb09e4650bd93937e4a5065125a411647d1a801da408721905b279e488d3393cc8a344823c8685bc49536fa247546f61c06eb1801c4625ead20af2a027e4651964e70c80ec9c16f2520db23d3ed93720ec256a441d9b425e0e1379091bc8ca39eaf1eb0bb23361779901c0512441fe52823c0a2f909740875c3689aa208b203bc700e42e1f90c31c410e6b0479c983ec214e51c54de4417490bba8f8e3a039c85f84202b870ae44fbc64bbbcc01d8b421e7384c93128e4390508b9dc414ec447cf25c0c74f3082bc4c20aa33086437f106f91230a25e4246d42f0ea2260a04f9eb82a883e848e4970ff25811c8cb2ec86384200f42225f4207f21700c861749003e007725816e44dd041b6e707bbc412752c0a7222457a0901f2202c6403d921e7f9c2cd5126419e8372c84bd040bec48ca84b0f1279c91cc8a3904456396bf4282257903f3108f29228eaa03590c7fa405e4a10751346202b0706e4416c208f89899a0908c8634420e7099239080a594118411efb01796c11e42f0b888e5921272aa49d53431e3302d95921c85d51441d3445c84bb240ce4409b9cf18646736e4313990133982ac6d0bf29720c883da40bec40df2b286bc0926e4650c79cc09b98b07e4ae23909707c4b1ec0bf2257144550e0a51bbb4d899e809799429e44db841ee0ae28f5d6300dd840fe4514c905dbb00ccaf3e9043f145d63941c8ce89218f314176a70839960151632910755914755023c8ce91218f2982dc8504f292177513222087e20cd92519e451ae90c786404ea340769021c86d02443500a1acb39da8229205f9120f649543a6956342d4415951973ec8da54883a2684bcc91e51f5610076ac00e4b01db27246887ad600acbd8a3aa60479ec8ea85d642839080ee4343a6447b145d4322c647708405e1e91bfd60c70c940d4e504c8975c81ec0790f4724c22379183bc89217d491bc8fa1c91c710893a281975d01ec89ed9218f19827cc908c89b0801794c92a84b2fc8ca51a3c74bbc883aa88ea7ced9415e0a450d5b00d9212ab2a3d4410e93425e8ebc4442649b0bc8da5640de041ce4511241cea407fba507b2362dc883f040568e0bc8a32091133512b54da847057840362c02e4510441ce440ad9a50d59394a7a1c250bd9d20d72ac01909759a22e09889a47cb99ce1942fe5204591e2990f521837c0900c84b2ac85f40c883d288ba740059dcc86359c89b5042fe0a40e8f282a80a5005f66b0eb2725a4016112bc8cb226f22487f2d213a0644d4b02b51c3aa206fe214752c08d9591039ec873ca641d4302cc8650dc08ed509ba4420ea181dc89ee1218f82853cf607b2737e90bf90a286e59097326479a6405e2a10f50b03e45102411e8b0379944690bb72405e4689ba4687ac3b0620e71192794908c87d3a4016c7931da510647dd0200f000a422e7f90f559421e0512e46550d4418e203ba7444e84472f99e871d9eb3103909d53e42e21a2266a426e3b2185cb5f8b3b43561c1bd8502810751445902f7903b96b0a647d9890c31a88ea214d51c720415ea641dee48fa86d22a4709441909dd383bc16668383184136101fb2738490132182ac1ca31e07f9811ca608f21855d4310490973dc861baa8992061c7f288fa26945d0e456d2321854b0b90134521bb5300b23f5760c5f5642f7983ac0d4bd42e36a2765d31eb9c913359421edb20aa87e011f5922d902f0923aa415460bb8640feea41ee72a3a71fd4e931a9a8a32c82dc1586cf4f3882dcd544d4a593387e19823cc80de4b531606319212f3b48649803c8fe8c411e450ad91f2ab25f37e4b63829ec83843c8647d44dfc88ba0920511349451d4b0059253aaf83aa909d21a37611819cd600ac87e411f512319003f0233bc64854e7d890ef3020bb8412f51389206bcb821c4a23c8ca59d2e327a0c86aab20aa730e40eeea21ea582351bb9488bac920ad120864f52983ec1c26c87346736ec211e46589ec4f1ab22272847ca701d900e021fb4541d05118411e2485bc0c13f58b91a8f26445cd240ad94fac216b9015d92e1ca20e420379ab0564837c901dc50a79d024841c7408b27370c85d5ddc8a8804c889f6e8651564e714803ca60772266a90c7e6208f3d216f9244fe1a83bc3c839c070c375d8245f62b0a79d01cc8daae44dd0409c8831e411e1b00391450a27a5b23bb4954d451e6208709a38ef208b2002820ab1c19a27681e1731466205fb246d4e5441eb323ea2886207f0582fc9501f2d79626c7004136901f725b1b519d33912f7103b98b0b5b05a902f96b1164e54881fc894590074972c8e5146403e9218f21a3667206d9db15596d12200f3a037969401cdb5a40568e08512f4903b96d2985fa98418e9540d44479745830ea72c92147a9428ee504b92b8bdab12ae44f1082accf07c86d23a4f06c0cd850e82067c206b94b0ae42f0d900bc040d451e8202f8f1c59e625ea204290bfc2445d0a1075998bfad5c5c9250c79133c90bbb0a05da241de5201790940d46511b96d05d94da690632110358c87ac9223af0a30477689017201847fec3202d94072c8122215553951206f220ef22563207b0343f6123890ef50203b1609f25705431341212b2785a84b25510705825c0a4664131d12751020c8ce69823c3684ec929eac724a882acf55d4301fb26774c889fa401e4b04799339c8b1a044f5903ba27ac853d4e51564e594e9361050b87c003951227dc91951ed4104561f36c84b608fe208f2720bb272ccb472d208b26b0b9e83fa400e404f764c01647dce200fe203791022c86563c0fac123ed991cf29800c8899c90970d44fd8414f2267720ebb306f9122c90b75c405e6670c83006a2be2d206b203a64670b44dd042a6a288e208b8b03d6a129b2a31082bc7c218f1d823c46843c8a3290bf70c86304206ba320ea28ae404ea447c73a20aa7368c89f1004796c12e4b147902fd10279144490cbc020e7594076d022c82ae942f66b0fe4af0998744e02c879c290bda40db28860418e4500f2a0aba89fa083ec1c22e4313a4d7e75807c091c647fd480fd1260e82790c86d4c2bbc4404e4b13a900739217789f1f31381200ffa0379501de45851a22a07043d864d415ea34076b98bfa094590b57189ba8936c85f8944ed4a4380061dc9c62a00b92b89a89b4082ec9c13b54b07e44477209f51203bc80a914b61d441547c1c850a79a90539cb7298acd5ba6ceb58ebd99ad35596afba62ad7296aeeedcde9a97afd9b0d8af56e9dab5cc157b5df6ca5a7bcdf9ea9cb5fb2a61af5fdf5eb15fafd695fdb4d1eeb72f7305f0ebcb69e39ebbbaec29afcb612bb9dc855b76f9edec00deb975f9edf57ace13ab3d6f496b2d9bf6acdb9eb76db300cad73fd7f699c99317f6c89ecb9eb776b97c25d0dde582833b3667fbbce5b7860dbbad0118379626033c5f6025e5f3f7221fdd33d0cefdcacf7ea1b5d2dfaa0fb3e85a71014b0926fc820c51c7b4c880c1310462908381bf45fc102e48c082044c4b9ba180ca0cec880820526344932372c009911a231adf0f0c2d072481642aacd03d1037d8f0612c80c085263f2e70f06a648ebf5265848f9271c7f869a1890a6fbc6b0197d01504b6607db8a649f12f267e56b0f2b382011397a6a00973dc272797dba030b8b829b7c984abc4c9ad137471656e53154e9edc1b029f85c2ed59ba4e6e5c9fa80bc5bb3d6edca726f747c9854a736d607c16ee39abe2ad9a3c6bb6b75ae3197be179445cca8ccf8be47276c15741727deab850045c1f3e2e94ee964a6fa4e4deb4b8b0289eb1369e97c56d91f0baa5fb53c28582ba38016e1306f73e3e088baa236e8fd47daa72950c6f1524f7f5e6778f3c6933bc150bcf09c117a9b92e177e67e596c4379a5ddc21d7e9776f3f5c980df71a3e88f73cf8a573b933c05f6970cb37de48e9f240f2581fdc1f182e9420b764e08bfeb8b7d9672545717b2eb84e515c1cd675fa727bc8b84f3d974a22b87522b8372f9f15c5250ce979be8b63e33ae1ee8f1c770e984b989ae7092f81cab8749e5c96fda22bae4ff24259708bf44438dc9edd7572e1964fbe888d6bfbe3b37e97b4dd5b8db93d2e5ca7a8db1a7aa3362e6e8adb14c925ccea79c527ade7adb8dc9f5ea80caead8ecf2ae0f664719f60f756c76da25d9b028f45c365cf782760ae0b91dfbd707d32b84f56dc9e45eed394672c86e715717dd8dca738ae8dcd6339dd5bd46d12e03efbb9b83248be4a86dbfae07548b72790fbf4bb3829b709cdbd0d3f0b8c272d87b77ae1ba62f81d96db0f9e68887b6bf3594db785c4eb80b83d51f7497779d678ac052e5f433ccf756f395c180cf747810b95c2a5cbc9ef9edc09f44ee05c253eb7ceed199be4796f5c4e39bea888e74bcaefccb8383aaed392672c91e7a9717f16b952b10b94e54acd706fc6cf22e3febc70a10279d69efe8a80cb5812cf73e2b6749f0b5ea0452e1d07aecf0af7a98f67ad8ebf72725fc6dfcdb93d62dca7dbc57d719d5ad80dd7078d0b15c03336e779665c7e559f35f7c98d612e9edf055ddb94c752e2e2dedca633eecf09176a8ffb6af33b479eafa2df85716d551e8b89fb83c895723d6d3e8f85c22dd3782333b795e67549b765c3eb56b8b8046e5399fbe2f91d15f796759b1ab840185ca9209e322fbeaa82fb63c59d13bc8de089906e477827b07b6bba4db88b43ba4d45dc95f8a02cd76789fb54757f8ab850935cc2b63c4f777b22b84e3c5c9cf1364531c7caf549739fd6b8b71e2e8c867b4bfaac30ae0f97fba4c4d3e6c463593d65aee7d9715fb2df3dc143ba3d7fdc27debd41dda69fcbd87cdef1966abcd10717f7c875aa72715e6ed30d5537dcdb1517e6c4fda1e0422d717bc65c272d6e19c91b0d716f325c180acf5a0b6f75757b8eae5310f7a78b3b07828bd3e236595dd6e99d6c707de0b85044d7a78a0be5bacbf920279e33e45b052fd007576a8b5b2e4f64c2edf9e03a997181c05c291fb6bae0fa48709f88b865086f24747d78b84f8b5c5b9cc78aba9c607cd10fd727ca7d4ae1fe34dd391ddc1f3717ca8e6bbbf2584f3c6bc6b7927abe82bf5be3f648719fbe3c673cd6effa08709fd45ccec67cd524cf99d45b35707d9cb84f5877193e28f79c7df1564e9eb0029e67801325973b1cfc159a5b66bd5113d7d6c667093d6773bc9502f727830b65c553c9ebd2f9e0b6dabcee83fbc374a1e4b83c553c16eefa9871a1945c02b971e91050180ef7e7893b47777b72b84e863c61903c6f786d8d7c1696eba3c07d3ae1493be1ad4cb836423eab812a022e79ba782c019e3443deea8a0ba4bb524a1717c77502e01236c0f30ab8dde08966b8dcc1fdd597eb83bc500edc1f29178a85dba3bb4e2ddcc9e49d8c707ffcb8738e17c8904b27787d62f7a983cb1d0bfeaaccfd29ba50223c5d69fc6ee9e278b70984cb39f545543c6b73fe2a81cbc3c66331f07c2df91d174f18d4f32eb84de29dfc6eeb84d7b5a98a737df6b850b95baef9bb25b74b9e08767d52b84f7bdcd7fc1d124f190f5fd54b25596e9d2a97078dc702de56f0442754bd79bac2f89d9a4b5af0ad3cb8b63c3e4b816b9bfa2c0b9a8ccf99edab98b8383fae93024fdacf5b557009d4c4a5b3e49684bc910c4fa0dc1695d7012f5d45bf1be0b68327aae1becafc6e90ebd3c17ddaa2ea850b24e64a2571b9a3e5af8eb735c2eb4078cec278ab271708e84a01efcf940bf5c3b353efe483fb63c79d93c1ed91e03a1151c5c7fd5173a1d8b83c5c3c560017e7c06d12614e95cb1d287fc5c1b591f05880dc1bedb388f7e6c385d570c9b3c15fa9c18b736f3a5c580cf72d3e6883cb9d37fe2a87db93bb4e2c5ccaca3c4f92db13c37502e4f2c8f15853ae4d85c72ae4be3cf85d1ff765c2efa86e0b88d7d57039d50fd55125c4bd8df9ac2e2e8b7c2749b744e08be6f80583e07952aa8cb84a18b87580d7467c2c362eee759baadc528637da5d1c0ab7298e5bba79a3a0fb93bb502eec723dfd6e84db23749dd83c67586f65e5599bfaabdf33567c1e0df787ce95dab9b7356e53ab9cdcb2ea8d9278d69cbc151d973c0efc1518cf5a157f85db313d6b55deea8ffba3c3855ae4b68a785d0ff786fb2c33cf5a107f05bbe499e1af92b75a54bf0be0f96af2bb2eeecf9a0be5c6f5a1e13e11722bc6c4f39e78d60678ab3aee6dce6d0aba47f0338bfb23c59dd3bbe5166fb4c1c555b94d285c1f2a2e54eb3963f25557dc93f820092e79c8fc951b556c2eae87db04c82df778a3139e35aabf025e96b02fcae2e2c8dca6296e4fec3a75706d478fe5c42dfb78a3149e32e1f30ab93d3ed7a9cc7d75f03b3dae6d90cf62e08efca0316e39f54646dc1e3eee93d1ed795da70d6e0f16f7e9752903e179c95b4af246443c6925bc55094f9a226f95c5fdc9e3cee1e07ec307f96e857827512ed0982be5c473b6c65b19704b21de88ca2df57823139e343ade4a89e72ce8abb078d6d6b3c275dae33eeced81cfeae1da58782c439e3227be0ae8f6a0719f945c1f25ee13d5f335c1efe6b865f18d68f7b6f459765c9f26f709847ba3f259415cdb1c9f557471716e531ab76788eb4487c78fcb1795dfc1717dbeb850b6db62e17571eeedf65965ae8fd38582727d08b84f71ee8de8b3dedc5b23b709cafd61e24261ddb290379ae1f61caf9318cf5a056f35c8edb1729d8078d278de6acb73e6f0452fdc9f072e140fcfbbd4678b0b457bc6f4789e18464e5489b9f502e3793bd726e5b16eb85472c1ad83858880dbf3c57ddab94a12b8750ab83f245ca8a78b0be13699717d58b84f51b72cbc93db254f047f15c6f591729f54e03171811cb974a65c9c98dbf4c3bd1df059275c9f30f7898a7babe1c256e0b9b92da2377283478b67ad84b74a12495025c865accdf376b838056e9399adc25c1b94c7aa61f7e5fa4471a1faa4c9792b262e6ee9367d717f04b8506bee6cf24e48b84058ae140c974a7ae970b915f344323c6b4cde2a8e6b13e1b1fc78d2d4bc959b5b5af92243ee4f7c500597b0ace7199fae287e87747bde5c273a2e90cf95f2dd7a25f2bc00ee8bccef04b994213def9167cf3cd113b7f57a232aae4d82c78ae2daeef8ac036e09fc223e9ec5e19d105dcab03c4f91dbe3c77ddaf1c4dc9b049f75c425d011974e001708924be7e856ebe977b6db83e63aa1716fbccf92e192e783bf72e4b6d8bcae4c910c97af1d9e57de9f30178a8afb1afe2eea2a71e0d611de56ed8db4b83e5a5ca8d925ed81b74a7a4e03fe89d1bd95f059825c5ced366579d28278ab199eb1169e37c4254f93bfaae2f63cdd2705ee4f0c176a907b131fb4e5599be1afbeae2c7e77bc3d4cd7098edb93c87d82e0691be0b16070327cc6d6781e16cf1a066f65c873b6c85b31707d86b84f8f3c6775bc1594fbf3c69dd3e5fad871a10ab8b6338f45c793b6c25ba1707d50b84f7a5c9f1eee13234f19f079845c1f412e94b06cdcf7f8202b9e3c588fe5e66988cb53c663f5ae0f10f7c991bb0f1fe4c0f5e97d0af30ae1fab8709ffeb84a84b78eefdeeeb84d3bb705e67559aa08799ee5e71e9730219e777429037aded37575f1bb0f2e6d463c56f272e7cc5f81707112dca6162ed0ec4a29707b1eb84e3adc1e18aed31fd776f55917dc1fa20b15c2bdc5f05952b7cc7d511e17c8e84aa5b92d105e77bc37153e0b79cb04be888efbdaf9dd14b745e6751c5c5c23d7e981fb99fa10dda736d72787fb84c8c5595d270b2e0f1c8f05c1650b8bdf95cfdad05bcd715b635ef7e5f2b8f1580e5c2003aed4f09671bc11089773d0e279e1afa6ae8feb3e89b9aeacdf15f13c809ec307012f816ab8747a2e5d1dfcee7729a33d0f8fdb1fde49d1c54d5da72dcf58d4f3c8b817f241625c9befb17cb82d0f5e77c1fd09e0422955a1b93d7ddca79c14666e8f9cfb54c02d7dbea88bdb03e63a41717b7ca21faa72b8e451e0afb4b89c137c11d3c5d96ed396aa0f2e8f208f85c1bdcdcf12737d94dca733cfda127f55bb3d255ca73c2e50ef4a2d5d5b0e8f05c92d795ff474818c57ca8afb3af33be4b376c65f2db9e5246f54c47d61f03b3c6e2b88d7e5707b64b84e73ae6bea773e3c6b7d2b322e7700f8ab0beecf16778e03b7c786eb44c80512ba52155c9c96dbf4c2f569e03ee1706f80dca626978791c74a7ad2cc78ab21ae2d90cf123e69596f35c64e84db2adec9d1b3f6c65f093d6769bc5501f736c385a57071775c27a1ebe3c68512baa5d41bf17009cbf2bcdcf559ba4f705cdc93dbe4c1b5f51eab87e7ac8cb72aba408c5c3a0f5c1f00ee139a5b2c4ff4e6d2b9b8f23645706f78dc26dba5922ab7ce946ba3fa2c2f976de39d84b9e401fe9517d726f55957aa80b837073e8b875b9e79a39e7b03e1b3eab83d41d769e94953f256163c6919bcd599fb83c69da3e5fa645da830cfd807cfbbe1def6b84d4a2ea7165fd4c3bdc93e6b787dbab8503b972f0a7e47c7b3b6c15b217271addb34e52a09ba7504b8b7003e6bcde54ce38b84b8adbed113b75e323caff7a78c3b07cbf5d9e13e29727ba05c27142e6b6bdeea91db83bb4ec75b72f046e5a5ebcdef20f8f5927a9e0017e82bd5e4f220f258632ecf1d8f25c16dd1f0ba142e8e87dbf4c7b366f557c1fb83c0853ae172b6c15749f2b4b51e0bceedd9e23ec9ee4fd69562f29419f155ae6b0be3b37a2e8e88db84bc3fc10b65c3f529de27312e6344cf5b73b963c35f91707dcedca734ae0b8cdfa579f2e4f1585a2e5d25fc6ecaed61e23a51dd9fda85225e5cec361ddd0af044afeb43c17d4ae2022972e934707f962e141cbc05ee567e76717f7017aacc9336e6add4549df0ac11f056765c5c14b7e9913b1f1f74c56d59799df05993fa2bddc5156f1314b7657c9d98db7af2467054215d5b97c7d2e27246e6aba82e6ec96dcae002f9ae14d3251014970e933b83de4909b7602a3cef817b0f1fd4c0f569dd270d2e0bc73bc1e0d2d5c0ef14b8ad37af4b734b39de68e992e782bf42e39ee6cbe465ab8ddfcd6e29c61b253d6753bc1593678d81b7e2e3491be4adaab8b70b3e8b8aeb23c37d12e4bed0fcce904b99d0f3f6b83d66ae531917f7c16dbae2fee070a112b93f298f218fc5c1ed51ba4e6b5c17d5ef80b8370a3e8b897b63e1b310b938186e131e4f5a156fd5c3fd79e44ad92e6e83db04c4bd9971615edc1e04ae530997878ac7badd5b9ddb6474712adca6399e32089e77c8a50d88c79ae47267f757636e8f98eb64c5f559e03ed97023b9b8a7eb54746f8edca628d78781fb74c325cfce5f41716d733e2b787b40b84e6d5c1f32f7a98c5b1edf68e7bae8fcee061e0997b42ede0a886b3b3ed61bb7bce0a1907059c6750df2bb14ee8dea3601ef4f03174a87a792d9a583e6debeb8302baa78b837252e2c88cb1d30fe4a86670debaf84f7478b3ba7812a1b6ecfd47da2e0fa405d2829973b75feea881d16b754f24560dc1b009fa5745b0dbc4e77499bf256c4674d8fbf2ae0dab4f82c5a1508f7b6c1676971818eae940bbb366ecbe78dc2b8823c63783cef8b5b16f146474f1e491e6bcd93167bab2ccfdaf0ad16b92f31bf73ba3d61dc27db555274eb10dd57f9bb246e8f21f7a9818b1b739b86b865932f32c30948ee2d8d0b0be396486ff47ad6746fe574ebc23be9b9adf2444cb7a7759d34b83e4ddca7ab8bcb729b5c78d65e782bac8bb3e2364ddd263dd10eb70ce08bc478d2e0782b246ee9c71badf0741df13b314fdb7cac37d7c78a0bf5ba3c623c96eebaeafc0e87db63c67dfab9e429fe551b97ae097e97bbe5116f84e539abe1ad6a9731299e17c56d65f03a0aeecff14291717f16b850385cd2ae782b1f6ecf0fd78991fbe3c69d63c12d054f54c2c51d709b8e4f5a98b7fae0bed8fc4eeaf20cf25819dc928c372a3e6784bc15f0f694d72983fb73c79da3c1254c80e70d706b96f0452adc1b019f45c2bd35f92ca6fba3e54221717dc6b8503e4fdaecadb4dc928f3742e1f650b94e3edc89f8a02af736c76d92ddd707bf2be49624bc51d105f272a578b83f3b17aaf88c4df0bc149eb535feaac99d7d276b9eb325de0a80a72c80e7413d6b3dfc95ebfa10ef5318cf89e58b962e2e779bd43c6743bc95cf7d89f03b49aecd85c742e4faccfb84c1fd69e242655dba7ebf43e0d265c0ef8aee8f1e77cef05ec7072d717f3ab8505bdcdbcf67a1b925e29de4ae4f9cfb24e7f6e4719f0eb84052ae149a8bb3e036d5706d193c5618773c3ee889eb53c8856ae0e28eb84d88dc62f14e24b805f3442c5cdc05b749875b3c2bfcd5244241dc1b98cf9ae2fecc71e75cf094193d6fceed31e23a415265c2f345f4bb2faecdcd63e9718126b852353c6b27bc15d5ad697b2721dc5b1eb7e9763973e0ab16b92d215ea7c3c535719b1ab9add91b61717f7e2ed4996bb3e2b360973b42fc150af7a7ca850ae216ecf73c28cfe9c017a5b93e775c2803aaaad8056bf33c06b2b8dc51f3574b9767ce635d707f7a2e949927cd8db73ae2de1eb94db9db73c3752ac4556bc16aafb684c1dad7f3e92a5b2e5b8fb5e67c8e6b5dd784b99e65ecf27f95b0d7ac35b3b55c6dcb36ebeaaed23a6b77c562a54cd67abada92c566c9e38af93c67f97a1536cbf2354d49ab371aedd63fe525cd45fbf5edf9b3d9df7a9fede05ecf723669ad363b7d6065135965d3359bed2a5b36da3c5f96df7a32733dabcdd76cdd1f5950cbf5c5cd9dda3200ca966d468483f1cc68ed6bf77cc25ab3b857eca755cec3533493a25a397bebc9b7ce5b321f5aac9c890f6cb6ecb6af125602edfa5956c6b6b5f6eb27f673ebe6aacf2572b5fe1680135c90c9b30004b8769be727c79e6798ec17930f609b8d5636067bb662bf5bfb02ae5dd92c95005dbe7a0a70d52682b98c8649d935eda0611ff07cdcabc9b592c0014fa0dc1a81930692bd6ac121db43025cb3a2645b5f9daf9fd7e56de7de5c2b317ac57aacbcc9b01fdaad097099acf673076eb5f69c31294047c0a5030fb0d036a20778905759fb23013f0fdb011a00c38629141df1cead8dde55f03c6984d96176b26d1a7888f31d5d1098f60d2d01760d0b6020ee13c3f096856eb0ed824179847976fdbb9ffba8955dc7de6819f717ec3366b86351fb25c1af01784b778359805f3b974f2da66f286d37ceea8d2f1fe3393fadfbf1e370ebcbc27f8dfbf06c35324fd1dcdeff800cb062b324850d9ad9c46f04036f849237c2f646b8be08ac2f22f91484f922c4782681c333099e2712aedf32f53ca28e2782cc6f61e4b7d4f1435cfd10114c21723f411d0f04d60391c603e1c40381c04fc0fb1f0479f2d0c5ff80c0ff409b3bf4f05ab278ee307b1fe6bc1637af45cd3387254f1c8ede8701be832cbe07353e0bf2494308cf83179f8587e74186a70c54bf03d0eb90fc1c46f81cf4f81ca03e87e0e3c0e4e98294c701f737d0f91b7678b2c0c893053c6a687ac6fe781a1c791ac6781ae478c65a4f138c9e86109e06263f031a3f8314cf119ef8192e78196238e2afb8f157ca78c2393edf54f13d31fe05aabfe2fb17fef817a09e6ec8fc0bc47fc1833f4afe0b7d1702f923a877a18577e1ccbb70400b82bc0b3cdfc20bdf0214df82996f818c057f74e6b9068fa712167f34fca30e9e4a509e85e2934d1ccf82925fe1915f81ce1f29f044e3f44c73e689e6f72a44bd0a73bc0a71bc0a5f5430e45520e35518e055a0e25520be0a41f34c039f02f25320e353d0e253c0e2bd68f12910f129c8f029e0f056cebc0d457c0a2dde104f9e0e4f325c3cc938f162b878141e782bb447a1fc13b2f82a4e4f1ed29fb0e6697ce24ff0e0691ce059e483ea4de0e1497ce04d88f34cdae3ab68f04cc2f24c3ae0abf4be84a32f613e096e7c953e09c427520b4fc23fc2203fc2214fe5881f018f2707273c15035e04385e84369e1b48f154e6c79112e3c45383113e4e051f47cb14a387a3c80cc3c6334c100f27cc334c011fc120ff668e375c9e60823e821e3e822b1f820c216819fa10849e5d78cf2e023c2da8f3b4e09108620f81d5d3022bcf0abe785680c4bbb93d9d1831b7e4f06d1e786ef97d9ba28780c933c5f14c2c3071f04c581ef8e2d930f10f4cf16c647836719e12fc3cb1f87e89875f3ae17925f64b162c1df0ac22c58330c4930af141387aba08f83554fc9a107e0d09bf46cb3bd0c3af61b246f84a6d3c21a8e109c1985752f36992cf07e4bc1a371ce0bd1a35afc6e8d3f49e0e087d1a163ecd9b4f63e6d34c49f3c0a751f268c83c1a3a1e8d19cf06c678345c9e0b503d8368cf0568f8336218f16796be012e7f06cc33e8c49f71f20d04f01ff4f1fc29f11f3cf1661279334abc192a9bf9f932435fa686672f4d192f4f86852743f50c6479f2d478325f9ecc9827e3a4ca1e7f02157f1ce22e3c7c971c7e01429e81180302fc31cb1fa7de38c833377b239a05d07c31842f12f1c512be68e61790f244289ec8c6179f3c15a0f344429ea8c213cb7c92d5131d782a507ba2059fd4f449587c52079fc4e4936e3f94e48f1f5af1c3257e98459c1f6e196ef9a104ef811bcf029a844d5eb8c07b80c223251f09ea91e878a4203e38c8239d79a4a4e7908fe7ee8b0fba81f4e453e81c40f763b09e4ae430a68b1fa3c58fb9e283233c9da8f0c1a41f63e6c738f0630ef80eae3e68f41d08f21d04f21d8cf01d9cf90ed43c8390df4195671021cf010dcfc1191e3c1085e7e0c9237d790e5ebf41d6934900bfc1231be8f11ba8f114e08d077e83d8ffacfe27f5628eaf811e2fc68017c3e43558e4a92491a792275e83a4d7e0c96bb0e435787d06937c06759e3f847c06537c06bacf60f718c8f019ec3c06903c06757c065261983e4c97c700000c94fc0569fc055afc0552fc0540acf01710ff822f7fc1edc148f260927830651e8c040f26f8608a7830afff42e7bf28f2a411ff0b20ff258e5fb3e6398362c27f21e1bfb0f92f62be64f9f2fa2faef742e5037a2f21bc97a5f772e5bd30f03d40de4bf95d2279e2004897299ecb1cdf6589efe2c3d335c177a1e1bb90f91e185d42f82ec5ef02e6bb50f07c2df0bd22de023b2c00e22d88f316ccaf408c0a3ce032e5b9049f8b03578e92921a35608401c695b304c21a2535195c39c62b07832b40ee0ae003e302597181beb83f645cf113c6fd01e3fa60e0f3c0f5c1b2bb38032e4ec78410f716c6bd01f12e33cc30038c77392582c821862009192490397f44f5c1c71e7a3c3935e581879c778df1c5bbeeb8638c31d240e35d88bccb8b77d579d716efdae38da8e18da8f22c218f2707773cbd64f908841f4100cf00114f9ed3f3002bcf03b408d1f303cd873ede87303d8cf039b8791c80f81b96de86a00c31c4c0c8c78015831c3198d1c2c330e55d80f32a34f22a787980840d7e0411b0f837737c08117c085ade0d24efa60f3743ef26e8db30f06d5ecf04c29215bfe4fb109c582324c7abe9e3d34c3903e7c98479324c9e0c00c6305ff4f2c5264f5ce3937a1ec47ec8e53dd0e391a87824333f668f1f83c76f70c08b497a0dc0bc06563e032d04f90b80f80b2ef042f55edcf82e277c97a3afe084ef52e6bb70f15c0af814027852917a0fdafc0f0cbc0f59dfc3203674f134c47e863c5e06e1cbd087a18787e1f62b6090029c4781913fc1f5262c7d0953be049908677c1c143e4e040fa7868743c3c3e9e0e1847938163c1c091e4e9687f3c0bfc1e1999efc92020f829a577af26a967c9a10be0c0b7fc4e18d82bcb1821fd6f9610d3f2cf31eecf01ca8790e8a9fc1139f41041fa6cc8779fd0544fc972eef8590f702c777a1e02d30e42ba8e27bf0e26ff8e389d8e28138e07fb0fa1f1af91baefe86e0c730f52df4bc0964fc0865bc0f611e8e0d0fc7f870c63c9c06de4d1ccf2681eff2c71f993e03317fc119df25821f93c7c320c3f740c1bfb0e56d60e08f5b7c1aa1df80851fe1e993f2f8314dbc17d87b59e055f83d97335e860c7e0d10bf74c68f90c38b40f471e478140ef934723c191fbe08237e080cbe07259e05aa67fae141b8e3c104bd9a30fe0b04df83208fc31cff4220ff821d6f029c6f23c833bd1e4d215fe68927c3e58f3ecf81f1c1d8de0b02df430b6500f8a1954792e16d48e0d324f21d08f01628f03dbcf92429df25cdff30e649b8fd9b33df46836792bd9a213ecd9427f3c89311e1bdc0f03d48f9e30b6f040d7fc308bf82d5bba1f220d46104e23980e037907a0bf8782e2dbc07817c0f5f3c0e5b3c9c2abe0219fe8700de0709be07493e87de9f70e54d08e299cc3c9b2cde8326df41186192cf859067d3e64778e0cf54f144111e29921f03c70b69fc9a371e0c19ef4589f702c0eba0e56f18e057907a1b0af813949e04481e4e1ccf04c38390e59506f862100f6ff8314c6f43d29f09e18f6dbc1721be883abe081f3e880f9e072a1e4e02af84f546367ecc22af019b0743e5bd44f238d8f131e0f12928fd08867c1914be0b1cdfc5cc73a9e2db189f78c4a750c827613d9a17de862bfe4c181f4314bf42960fa19fc198ffa2c693f0e48d6f1ecd1ccf65e791a0f80accf83755ff05806fb3e6d9b8f01ef4fc06863c17e1c7809564c7cb70c2f7d0e655a0f32494f1719a7c9739be4bd49f20c37bc1e37b98e04b003e0946af64fb347cfc073ecf41d267a0c7f730c9cf90c6bf89e39792fe84127e040f1ea9f51900f2313c7d1126bc0ead57018e27e1888763c2bf99e189a07a2194de87ddd3d0c8b7c0c1b7f0fa13fa6e0cf9a5db7f90c717d7782f7f7c172fbe8216fe863a7ec9ead37cf06400f83171fc0b438f821e9f04c7c3507c16e8782545be030bbe08a16f21ca2f31f933adffd2e6b9a4f040d0791c3ef8151c78367ffc9a3d3e0d93ff60fe0d36fc0b53ef4218df02046f020befc6cc0f25790d24f80b5c781ce4bc065d8c18e2bf14f25c76af46cecff0c6d710c71f21f91924b8aa43c791469ae8430fa7cf0581c7e782b0e38d36d640c30c32c400c30b2eb4c0c20a2aa420e28a086fda7c2e88a5cf05a154e6581c2275b08106185cf0a54b05147c0e88cf4d90801f9f937d2ec6c5165a6491030e248c2005144f24e1420b2aa420429c10dcb059323e293e7003143c19ee800447551a2060005aec498947d31d3be4f065f09ddcf00444e513cd7f0b28a080c20823e0383ada83722498608209264a36d040830d36d860030b0b0b08208088c55aaf213386cc1832e3cba3cb83175e78e185173f71d45b2f2a548a0516504001051c70c0e1830f3e78e18517473f3f474770c0c1061b6698f1170b28a080020e38e0f8924affa142850d36d860830d368c30c208238c30c20c33cc30c30c3380000208208000020c30c000030c2a547cf0c1071f7ca042c50b2fbc98071eb8e0820b1c70c0e1c7a73e3f58c0d1008e06707e8052d686499b0bda5c30400515944c983061528152054a152855a054814ca9023359cc6439321acb52261b6080d7ebf57abd5eafd7947280b294c97e4e91fd5386536ac297b3994ea71b608039616f3278f325ec72800160b1f6077013a6559651a2e4724545ff054c6098c030816102c3e60b9b2f6507180006d3e95aad010680c15ef365cbc6ca364a149d6e00186c800160b034147c19258a4ed76a6d41b3e5cc046726383381995c4e8a94586c800160b056eb78a5342097331e95adb21525ca6fa568a568a568a568c500dd4f25894a1295e1142a103cd0c002b81d9a0cf64c7ccfc4f537297f23e006299a4062881c40d0e26d27bc2d8bb7312dbd0d84b771f1b6083608d365cbdbbc781b95df01c48e387e678fdfc100cbef3cf03b57bee694c6531b5f73fa9a195f0bf3b52b4f8372e369653cad8da7413d2d87274f6be0694e9e86c103b4304fc3a240130094047fd6c0cf765624f1b2315e86c4cba0ca78991b460a3c71d204002540bcdccb1a78d90178a0e1a4e55f1748f02f30af2fff32600205b01850a535409501aa0c404114440e79402818402bd80a0008c04fc91ee50b2896bbfd94b4dab498aa041708f365cb982f18406b800096bc5a3e2da081f080830d33d800830d30bce0020b268000030a268c00c2071e7e2f70f8b233f0138cd267381ac06030585941cc0018ac562ba080020ac0b5b960c9cb9217a50a942a3093c54c16e391f168f894e153a6f440b651ce2683e50f660ef5e2800a942a383301192cc8368653a67cc1051794b15aad56abd5983061c2a40683b5bc8ccd7939cb030ea0d166b3d7abd52acbb25633a034e0b25633c080397b7959ab196040cb9634daebd56ad56a0618d0d66a68b6a0f9f2cc041f68c962268b992c66b298c95246023258c8602183850c16e391f1c878643c3a2a5ed66a30d89ced0107bc5ead169c364a6abe8ccd5ec666bf34e072162b67bf6c199bbd8c95b35f9697b12c5fc6662f0db89cc5cad9b2b22f3e097563867cf275f972e1878acf18ee9d0471e96abd501ab796c83319c6a549f19c12e11913e09dd4716b913c936c5cd9d0271f789653bc1002cf3280b755b96c3979a10e6e8d8c679286e72d7c799eb387d61c7926cfb833da53fd6e8dca33d9f38455f143745c99061f353fa1b19d7752c073aef9969ce765feac670c817f62e519b3e2735f3ca707dfe2e0ce4878aa282e8d8de7140fcf9ef1337665693e39c3ddb13d957826d95c19179f6cbab2e22755b82c4778a19fcb17f187be5c4ed84fdd95ed3ed9e5b9951f914b6be13915e6d9e2f2426b9e8d9af3cd2cc5bc50ebce829e4a8227cc8e1f02e41973f24f6acf79c7cbc6dc9a1fcf2415cf52cb3371e0d2a89e53715cba187821a82b43e293673c6353fec99ba7abcc0b1972e9f2bd90d39d85792a156ecdca33f9f37c41f1436bee0eec99847aba903fe4e4ca1cf8240797afdf0f3d7069913ca7d8783ec637caa589794e2570d91af3426f9e6599179a5dbe723fd4c0b3dcf99d2dcf96981772f37c882f934b737a4e31f12c5165bf4f5e7077849e49a94b1b3ea774cf2ef2b380a71f972e487ea880cb32eb852a789e3467587c550277e767f28e67c3942e0d5e28902b53e29369dc1af199e45d19984fb2b9b3324fc5c3f3375fd895bdf14943ee2c83a762e1cee23c9513cf19416b669e49e1b3acf3425a9e85f2657ac636f827815c59ed930adc5a1dcf6411cfd9c097733c6715ff7af29cedf155115c190b9f5ce23953285bae17ea726b433c93689e9d62f6852f22cfd83f3475694e3ca74278b68b5966f14250aecc8e4f4a5dd9244fc5e4ce624fc57bc2a2f82139ee0c8aa77a7ab68278a11deecc84a79ae2f2e5c10f79b93b073c93539786e639d5c095c5f149449e31193eb7e6d6387826a1dc19014f65c193f6e4ca19e3ee407926ad2e2d89e7d4d26569f5425c9e312cff048567ebf64217dc5a11cfa49a2bfbf924efd6c63c93529e31383ef7f48c21f1b9226eedc973aace730af2330d9e2f357e88844b979517e2e3a9c8737ef1af33ee2c85a7b2e2d272abf9cee72c335d4d3f14c0ad41f04cda9e651c2f047c36882f2497ae377ea8e739dd74d6c05391b93536cf649567abce0b8971e992e28760cf19a5b3e053112f0d83e7940197a6c6734a87e77a7cabdc1dd933b9c79d5d792a36cfd964c29ef8a1386e0d8d6717df049e3f7d1fb835359e491d9e13525ad673ca8e5b83e109c3734a83bb73e549a5e4d2e5f3426e3c5f0ffcd0945b33e03935c9ada9f04c7eb9b39da70a5ebafef8a126b75e88fc500c97b0273f04c4dda93d9351b726c63329c3b395c40bfd706b4b9e5389dc1ddd93aa9776c873ea8b270d7681c2b8840df1436b5c59944f6e79c61cf8274ccfadbe62ee0c89a7aae3ca22792a016e2c924ffe5c999a4fd2706bc8e7ef0fe4f2d5fa2128b7d6c13319e559c6f04202dcdacf738a904b53e43925c625cd802ba78c3b53e0a9c25cd80e3f54c67376757d26b8b2053ea9c1a53df19c7a7377869ec946ee2ccd5305f11ccc5fe7f9135f27b716e53975f59c45b426c73329c4738e67ebe78530b88405f243865cb620782133cf16f19dbab2269f64e0d26c784e215d1af039057bc2fcf8a1429e2d2b2f74e689c62dd8f087a2b8b3179e8a8b4babf29cf2b934a6e794952b5be393835c991b9f445e59059f54736b663c93365cbe2cf8212d9716c2730acb73523d6d8e2b73fa2424cfb2f736279e2f511a23cf29329eb0207e488da72b86177ae439b1be76c6ad55f04c0e3d63673e81a83b7d26ac861f0ae33993f3550bdc99d2530df1ec213f859e312f3e77c69541fdeb9304dc9a0ecf24f1d9d8d7835bb0363f64c5a54bce0f015d99109f0ce3d9aae28594b835a867d2895b23e2994cf37c71f1436eee0cf654bb4bd7103f349f33836f5970672c3c551677c78127d5ce8d7df00324706b0f3c933ccf96042f94e6ca8c9f5ce1f2f5e58726b8b4389e53413ce7213f1b7365007cf2f79cc89f6d706b709ec92c57b6c127e33c4fe45bc17316c9bd0d7165727c3291bb13f44c327269803ca7acb833e15315efcece33e9c7a569794e2d79ceb2aecf964bc3e23985c2ade5f14c2af174ddf042923ce7966fc16e0d81e754f2d6989e492bcf2ef99eb9b5179ec90c9e2ea1179ae3f285fc21189e73cecf7e77c7c93349e739cbe3ab18b8b3189eca8bcb97123fa4e6d9e27921305796c2279178c21cf921a9674c89cf4d7169649e53c05bc3e09934e0d21c784eeddc18249ff47996bfb74d7165147c12cd93e6ba3f653c5b01bc90069766c573ca84bb53f44c42726b113c93b767abf8665d59224f25bbb22d9f3c736b863c935e3c6139fcd018cf970e3f54e6ca40f8e40dcf98139fbbe2d6b63c934d2e5d5ffc50edd205e78518b9322b3e59c7b354f23b7f5cba14f9a101ae4c8d77f3b39fbb671fb760517e68885ba3e0990cba3bb167528f1ba3f3c9db256ce8877eb832363e49c8b3b5c30be1f06cd3cf9e67b9e599447069579e534aee2ccb53b9b9b2339f8ce1ca18f8a49867cc8ccfc1f18cb1f1b93c9e6d61c640f89c0557a6c22793b8b21d3ea9c533a6fb2749b75e8cfc900c5756c627fd785690ca8e3e59bcb53acf641a57967caaa02b23e09356eecc82a722e1d9ee34f0a4aa3d636d3e07e6ca0cf8e495e73f7c05b8b2283e09c773acef06b7d6f44c2ef19ce9ebba6cc9f142545cd9119f34e3592d731e2b7be2936e3c67817cd5952b33e193453c6be58bc4ade9f14c3e716b313c93622e4d8fe7d41397967c4ec1716b8d3c93663cf7f2d379dee4b7e3395f983de13bc81376c20f697165417c128c676b851782e1d290cfa92e9e30397ec88f4b9be039c5e4d68e9e49a0274cce0fcd79ceb4f82a052e5bb9172ade1d26cfa42257f6c727af9ee59567d2f36c1df0421edc9a02cfa9aa2bbbe19356dc58f29301dc8201f0433d3c3fa02c932f44c1ad95cfa93c9edde12b756b343c931d5cbe22f8212acfb2f5b5382e5d1fbcd02197f5e00b7565533ee9c1ddd1f2a45a726b493c934b972dda0b7d79bed0f8a1112e5f597ee8e8d238784e4179c2dcf8213e2ecd82e714d1ad213d9346cf57cf0fe92e6d87e754f1ee28792691972d365e488a67735f37b7c6c83349c6b37ccc59e7691d3c67c98b93f26c69792135cf79c5bf0678be48f8210fee4e9367729167ebcd0ba97069739e53575c9a1ccf29219eb38c972170652b7c52895b2b3e93bd2b7bf2c92997af303fb4e53979ad013da70ab9321b3e59c5b3ece185846e6d856712ccad41f14cc2b97cf587147856eaa7019736c7736a88676cf84f12b933159eea8a2b03fa64efce6a4f057cb63878a110aeac864f52f17cf1f043669e312a3ed7c53306c8e7b06e2d5799ef93609ead235ec8874b83e439b5c6d3b5c60fdd9ed7f15de07911df26cf19205f65e5b26dbe80dc8261f0434e5cba92f8a1d6ad69f04c22706b579e4925cf7a99ad255e0888e78b9456c4734acd9561f0493797a6f49c82e059e27e27eaf9d2e287da3c5b39bcd00dcff940696b9e5311dc99034f55e6d62e78260978463dfbc5cfd63366fc278b5c99089f0ce219a3e3737b5cb6842f44e6f215e7b74991eb8ae4773b3c5d77fc0ece7336f556532e61593c6f82276dbed595fbf3e442c1b96c13ef84818b63729b34b837486e93eefa4071a1beb7e067dd706f4a3e4bcd9dc1beaa88db5a7a1d99ebf3c885d272713db7a982a78de7b14a78c6f878de18972e097e67f4ac75792b426ecfbc4e185cdcf13649717d0cb84f235cf254f92b316e4f9aeb94c6e5ce187f35c3c505709bc2dc9e05ae930dcf1a046f15756fc8db34c0bd99f9ac352e8eea3a71b940205c2931eecd8fdbb4e4dab03c16141727749b3878d26e782b176ec1e23caf810b84c8a5b34015f1d95ae07359cfd9156f157471546ed30997404a5c3a02dc9fab2b25c0bd61f92c232e63bce7bdb93f005c2835d786c16381f1a43579ab2ff755fc1d20cf5ad35f153d5d80fcae84e7ac8bb722ba3e17dca7296e977827c1e752be6f5c1f2af7c987db5ae17570eecfd1851ae2be54f81dd65552c0adf3e49649bc519636a5b9addde7844fd822cfebe0f600afd30cf7e78c3b27cb7539f23b1bee8d880bdbe1960f7c5120b76787eb84c8f599e24295d766c163655185c13356c7f3bab836399f85c0fd81ba733c78c27171df2607ae8d82c7b2e2b6cb13a570d9577159d709ccb376c15b219f35376f15c95366c0f3fcb89c65f92a472e4e87db145585756f92dc26debd61f05956dc3de84f1f774ef139abf3560f3c6968bc1511973b61feea835b2f349e67bb3e695c2801aa5ab8b833aed3ecf638719dac9e405597ce0497f38d2f22e2e266b709cba52bf73b032e77d8f82b1b6e993c51ecf690709df078d66af8ab5e9fda7d1ade8a219f97c6f5b1e03e31710b16c6f328b84049576a8a0b14bc52215ccaac3c2f91db13c0754a737db2b850b27bc3ba4d0cdcdbefb36ab8b7063e6b87cb9da9bf4ae2e2a0ae13011727bc4d215c5b9dcfd2f26c20ef04e9fe7cb95051dc9e29ee536f4f94eb94c22dab78a30bae4f96fb54c46d956f14c5ed044f34c2c5395da701ae2de9b1d6b853f64e98ee0df65948973b72fe8a87fbd3e442b1b93839d769e8de8e3e8b88eb13c685c2dd1e2dee53ec72a7cc5fadb93e33dca741ae2deab37a97340ade8acc6dcdf03a142e2e799d28b8e4a9e0afccb82d0b5e77745f20fc6e91fb33bc505fdc5ff8202897402f5c3ab7ebb3e53e2171cb14de0881276d88b7a2e1fe4c72a57cee6d91db84c0b376c55ff55cce0ebe28cea54be9770ddc9e2ad7e987677b4ff4c0c50d6f5312cf9aecadd0b8dc99e1af4678da6a8f45c2eda1ba4f15dc9a357c910b1747c16d92e172c789bf62e1d2d6c36349726f3b5c980c9787ce631d6fcd14be6885cbd8cff3d0dc928e37627aba9ef8dd985f2f39cff3b93f712e541eb77cf3464317e8822bf5c393d6c25ba5f0bcf865d32dcf7823321788832bc5c4bd11729b9c5c968c77f2e54953e3ad8ab83831ae53ebf6a0709d9eee8fd39d33e6aec6077d70b9c3f4574c17c8832b05c5b3d5fb9c10b74cf3463fb714e18d9e5cb6c2f8ddebb6e61b41717f18b850395c1c20d729cafde1e142495d96ad2fc2e2590b7a2b399e53f0b38f8bf3b94d16dc1697d755b92f127e3775714dd7e9c97336c65b0d7071815c27a36bfbe0b1e678d672f8abf2de5c9fd5c15d880f9a727d9a2e94029740445c3a005cc270781e95db8ae075be3b0c1f14e5be987ed7c8b531f2594797878fc7e2726bbaf922146e8f17f7a976790a792c31bb600b3c2fcab3867b2b362e6e8feb64405512cf5702bf23e37ec70735f16cfd3e37c47535f2bb1a2e502497ce95672d8abfb2dd1ee47d62a02a8f5b12f146569eb31fde0a7781f6b87414f8f502e4794aee6d82cf52e2b67ede488c5b0af045635cbac4fcce77791e792c33f765fb5d15f7f6c167b1716d273c9620d787e93ec9716d907cd616de09973b3cfc95094eda5c168f7722e6b60c78a33a9e3304beca8fdb12e1756b6e8fed3a15ef557e7271e95ae17755aafab8b6473e6b828b0bba4d1b3c69c5b702e1b676781d0cb7e7e73a99a942e19635bc91ef9680bc510bcf5af95665dc9f142e541fd767920bc5e5fe1071a124b93e585ca8d8f521e13e355d1e421e4b830b34c8a5d3bb3e1edc272f9eb52efe0ae8b245c6ef60b7193c110cf736c6856d71cb3bde28847beb7dd60cd7d6e6b1a0ae0f1917eae7b6f8443d5cee44f1572d3c698cbc9516b7078efb24f4ac01f0566fdc1e36eed3928b43739bb2b82e417e87c22d1179a31b6e0f05d72989cb1806cf7be1e2a4b84d90dc35ee4dcb672571b9d3c25fc5b9c573c25f495295741fe38388f7a78a3b077839bb7c919b67ed88bf9add9e2ed7a989db0af3ba09ee0dcd67b97181a42e1d08ee6b7cd09beb3375a12ab840055c29a4a7cd80c792e1968677b264170c8fe781b93f53dc39be6ba3f2584bdcc3fc1ce4eec5078db93e805ca85f95154f9ea9c702e1e208b84dc4fb03e64249716bc43be1dd9e0cae1315d786c8674db94bf1415e9eb3a6b732bab6181e6b91cb57781b9c5b0b9e08857b73e336b56eb9c21b29708fb8404fae14069732129e777565617c5597fb63c18572e21216e579095cee68f057672ac7abcd2dd992e7e9718b078abfb2ba40015c292ad7a78d0b157439037e552255599775f34e5c973b4bfe2acc2d5b78a328f7c6f45979dc9b171756c5e51c7a27303c6b0abc151eb715e58d9a6ec176785e959d18f705e77790fc7a41f2bc25973b08fcd50617a876a5a25ca006aed408f705fb5d131787bc4ebd7b2be0b34ab88c01f0bc34b705e7756aae92076e9d056e4fd275f2e2ba26f95d0ff7a7800b45c2bd217d96175580dc72c917915115e672caf9a2236e09c61b79703fe383c83c654e9ec7c7c5b9b94d653c6b53deca8feb63bb4fc57babe0b39cb833255f25c5fd01e242d5b987f141c3cb599cb72a9f404b97cecf92f04e64cf1a217f05e5fe045d28a6cb9811cf6be20ec14f2c6e8f24f76982cb961dbfdbb93fba0bf5c2f549e4424db936413e6b815b2af1465a6e89c31b056f0f93ebb4e6ce02f82a2a6e0f18f789e7dabef8acdb53c6c457fd5c9f01eed39bfb5af33b452ed0cf95fadd9b22b7e9808b9b739da43c6b7cfc95011788e74a19dd9e2bee93eb960b7c911f973b497fa5e6593bf356746e0fd1756a739530b9750078d6e2f8aba14ba0a74b27815b2d4f24c2ed71e03ae5706f623e2b8bdbe27d6e81aa036e0f1df7e9c9fda172a180b87425f03b02ee4d84cf8aaa7ae2d225c2ef22681c1787c36de2e302295d29306e8f1df7a9e8e222b94e572eeeea3a79b92f33bf238428cb6df9f0ba19ee627c50d2c5eddc262db75f9e6885eb43e74249707f782e94f129d3e1abbe8c41f23c376e4faf5398278d8db732e2021172e9f8ae4f9bfb34c705eab952bdeb73bc4f645cf264f92b322e0ece6d42e3de26b94dbdcb5815cf93e2cedf89d22d1579a31c9eb3396fe5bb8401f23c0caeab90dfad5055fcf5dae37940f716c96ddadd9ee47de2727b945ca7334e40b836071ecb887b1c1f74c425d01d97ce01cfda1f7f85c0e54b82dfc971718c5ca706eecf11172af9a4f5f056313c638b3c6f8dfb23bb501edcd6ed8dbcb8e4d9f257655ca030570a88dbab7782e6493be2ad6c78be7e7e97c5f3f5fb9d1ad7e7e83e055145c47559fd4e886bb3e1b1e8dc9bcf679db93d5faed313f716c86d12ba8c293d2f875b2f3a9ed7736d323c1623bc31b795c2eb42b840ad2be5e47222f04f72d7278f0b95c065ab8adfcdcb961abf935dce45be088a4b9905cf93ba3dbcebf4c205e2e3d281f2a44df1563c5c025971e90455b9b93eb0fbc4c12d58eb7942771d3e28786f465c580ff7f5ef8cb83e3fdca7469e36041e6b864b1704bf83726f643e2b8ddbda79a32d2e790ef8ab2c2ed0bc5242f787850bf5c7e5ce037f95745b50de288f8b2be23619f2ac99792b476e79e58b10b9ad9e3702e302c9ae54021737c875d2dddb0a9f75c825accf0bba3d75dca701ee0ff24ab50a81fb03c59db3bb8c25f03ca68b5be33addee84f2451e5c1c98db94c3bd417161473c6357cf93e3f60c729f82b775f4ba052e65437c55ebde0ab94d4f6eabf83a0d2e77687fd5e5594be1adaaeecf07170a8debf3c27d02e4d225c3ef2cb8b7043e2b855b3abdd108cfd90d6fb573950c70eb0cdd1e9eeb44bc3f6f2e949ccb43c76355b9b6328f15c7f559e44255b93c583cd6cff5f9e03ea171e942e17754aeec8eaf22736d557cd6ebfa1872a11eb8ad00dec88ceb6375a1be5cc2889e47c05522c0ad03747bacee5397cb19096fd57ace66782bdabd79f0595f3c5fb9df9d71ab25c8ef7aaecd8dcf1abae5076f84bbad38af53ba3f40170acd05ea72a576b8b4e9f05891dc8df8a0a3a7ab88df69706d5e7c96edf6a4709da0aecf13f729ebf610709de2dc5ef14eb05c1f34f7498dfb979f739e34a8b77ae212a6e4794f2e63b4e799b96c9af268f1584a6e99f446b26b33f35872dc5b161706c5f5d9e03e65715b469ffbfe4c70a192b836a8cf32ba40875c3ac2eb63c37d423e676fbc1502cfa9e49dc479d628782b41ee4de8b3dc5c1c04b78984db63bc4e615cca1078de1fcf1aecadce78ca74cf0be4f9af6c024fd4bb949df03cac5b9af046055c9b078f95c6254c92e7255d9f2ef7e9897be3e0b3b6b83f855ca9ef8fd5950ae0fa10719f20b9addce77ef706f45969ee0f0d170a79ebf323e7ce117359a327025e250bdc3abf7b6be1b312b925952f2ae402d9ae54eef6d0ae9307b727bc13da25ec87e759b940115ca91476c16acf23ba9c7c7c911297319ee77df09c9df056aedbc3c3754ae4964c6fc4e4b252efe4787de8b85045b7ece18d1cb8ad2faf93e0b23abc1327d786f559616ecf00d7e9cdad992712e25983e4af7a170876a50cb807f14111dc9f3aee1c0c9eae337e07c2ed81e03aed707db4dc2723aad65c1cd06df27267942f1a5edc0bb749cec5e1719d88aa58b83d135ca7236eb9fb22a75b7af046b0fbd3c28502e4d72b89e7c1ee4de9b3e6b83e6eee131df74778a16eb83d71ae931dcf97d0efbc78d202792b2aae12086e1d062edbc53be972711ddc26216e8f02d7e9042792f7a7bc50629eb52f6f55c8eda9e13a0d724b336f74bb2d1c5ed7c2fdf1e142397227ef8bc83c6950de6a83cb189ae7e170c933fbab27ee4f990b65c6f539e13e41dd1f2717ea4dd51eb7639ee886fb211f54c6b5051f2b88fb7afd8e89ebc3c47db2aa32f37c59f0bb3a2e0e88db24c83336c2f37cb86c6df1bbd6e5c9e2b1809eb400deaa4b1f79c60479de19b795f43a0c2e5d667eb7c0e50ed65f2d71cba73722e1fe4072a56ef7078e3bc7cbbd357161445c4ee2178d707d20b95013dc570abfbbbab6308ff5c5b346e6ad1ad9052be1790e3c67516fc5bbf5f2442a3ccbf44ecafba374a1dab83eb2fb34e6e2a0b84d759e36268fc5c2fd99e14215e2c4231787c46d4ae4e230b84d3c3c6965de8acded29e33ef95cf2a4f92b3ad7d6f459506e0bf64655dc12cc4319e19675bc519bfb72fd6e89cb9d2f7f65e6492be4adacb81513f33c18ae0b8bdf19ef0f9b0b15c7bdc1f0598c3c1fe179a22e5f47bf8be3fee470a11479da6e8f65c22d677823debd817161575c9c92dbf4e5966ade08e8ba08f99d0ab751bc13076ec18e9e6774390be1ade633d6f43c30eead880be3e1bab6f85d997b3be2c27cb853f14160eecf960ba5c4258f97bf3ae356897702bcec9a77d2db73c87d72e0b273bc930cae0f04f769873b3be0aba29e40c94b47cb3d900ff2e256c178275eae8f09f7e9e972f6c157555d5b9ac7b2e3da748fa5c3f549e03e99706d1a3c961817a8572ae89683bc510cd746c567b92efbc73b19735b4edee88d6b7be1b112b92d9e37e2e23977f822186ebdc8781ecf7555f1bba46bebe3b378b7cce28d34b87475f9ddeebe967ec7c82d1979a31d2ecb9d2fdae2de14f82c156e157927c5678df7564fb728bc93da6db5de488afbc3c59df3c07de17e77c5b3f6c35fbd9e3541fe4a81672ce97933dc17d2eff8788ee5a71ef775c2efaaee8f21576a5e1ee4636df0a431bd159c302e67235f14c5bd6df9ac25eeadea36052f5dc4df05ef147a27265c5c1ed7c9c96d39f13a232e771af92b232e2e85db24c793e6e6ade2dc1e44eed303b7c787ebb448d5139e0a97678ec7a2f2742df13b0e6e0f11d7a9ceed09739da4b8b6373e8be849e3e0add254353d8bfb21acaa26aecf98fbc4c5f529739fccb83c873c56075786c34b81746f88dca602ae4c8caff2b20bc6c5f3b6fc82e59ea740559aebe3e53e41716d927c1697cb58ec7965eecfd39d8374fbc23bf1a91ae4b6bcbc0e4b951ed7c6e5b1aeb8a45979abe2edf1e03a71716f56b749787b64d769cc7571f13b33d7a6e6b1eeb8b8a4dbc4c4fd815da831770c7e12f254c273eb7cf9f2f23b3b9e716ef9c71bb1f0a4e5f1564d3c63393c0f89eb73c07d22e1dac63cd6194f25b75ba7b743bc13a35b1e7dd12177325f3e5dc68278de12b7acf346405c1f392ed493dbf3c475ba7ac6de3c8f877b5be0b372b8383bae5393e7ac8db73ae096ebf53b264fd71cbf0be1fa14719f22b93c8b3cd6f072b6c05729f2a43df2565d58715b4caf33738190aed413f7393e28895ba5f34ec8dc1f252e94d5f5e9dd27189e32069e87bc3e47dca7492e8fd463119faf087ef74621b836333e0b808beb729b6cf8059be2795a9eb320deaae759abf357bcdb7ae075bc2aa8dbb3c175bae2022970a5ca5c9b1e9f95bb9c6c7cd110f7f6749b7c7ec12a78deee9650bec88e6b83e3b39cecd8dc1b9ccfe2e38bfb13c59dc3bb3d5eae9313973b467fd5c1c595719d6217b7c46d62e4f658719f5ab7b5e48dd0b83e4eee939b672ceb79735cc28a78de955b76f1461d5ca0d89542e0faac71a1985c0ec90fa1719508dd3a4b2ed0962b65c3755dfd6e885b7af146636e8f0ad7498feb73c58582dddb9f95c1b315fc9c11b735c1eb2278d6846fb5c7c521729d80972d2f7ee7bab6358f85c7ed81e43e65b938116e931af746c26705727d84ee139b8bfbdd26a6bb211f44c633967c1e1cd755f5bb20ae6df8586a5c591a5fa5c1731e7d11085709945be7808babe036d15085c413a88f4b274a959aa21b6e49c31bf59eb427de4a877be3e2c2a6b83e57ee9310f775fc5d20f707ce85c2e3fe142f9418cf5ad45f1d705f49bff3e39618bc14232e67175fe4c3edd1729d8cb84a80b70eef9668dec8e739a77c91d2c545709b4ab83edfa70b2ecb2e9f809b5bc6f046ba2a039eb327de4a80db127a2336eecf2157aabc36a7cf8a724b1dde688127d008978eebe212b94ec16b43e3b304b86c3d316b92fc95effe6070a1aab8ad2baf63e0fa04dda7a50bc4e44a4d7067e28326b8b7309f55c505ba5d29dd6d21bd0ecce50e0c7f25c26d69791d0417e7bb4d6cae92e0add37bce0479abdffd81dec8b8302eee0f9a0ba5c62dd807cf0b5ea001ae9406972e2ebfd35d16ce3b79dd71f8a0dff519ba4f4cf796e5b390b8b6151e0b5935c0bdd9719b6ad736c16351c12be3e21cb94e115cceaa7c95d4ebcdb5597d16980b94e64a79f1ac3df1573cb70780eb84e6b688781d0f1788cea543e5b296e6adea5c9c99db64c56d497923a7db73bb4ec6e717f747840bd55435c32d1ea6bf7ae4fe8c71e71cdd9e32d7898c6b637aaca77bd30745715935dec9059740385c3a3ed7e7759f3678be02f8dd16cfe9fb22334f599f47c77dc5f95d24d747920b45c1b58df1593ff7c6f359c7cbf3c6633d7067ef8bca3c6b08bc959c5bb2f046509e40295c3ab1eba3bb4f2ddc1b049fe5c3d355c7efde5ceed4f1573b5cce22f82a469eb545fe2a775d5afc8ecc05c25da9ddbdbdf92ca8db93c0753281a7c1c57db94d38dc9b9bcf72ba3e11dc271eae0dcc6375f1a4c3b5d1f15904dcdbd06785704ba8372aa12a8aeb83bb4fc7fbcae077795c1ccf6d9ae0da36782c322e4f1c8f15c1b3ace01368734be68980b838a9ebe4c06dd013cd6e4f93eb04c2c5f9709be6dc9b9cdbc4739bc23bd9b904cae3d241e0e232b84d3d3c69c7b75ada0543e279586e09c21b05706f523eab85fb73c08532e156eb8fdfe1ae4ff03ed1707d22b9505b9c9cb9353ff8a212aecf1c176a800b44c195bae16ec6071dafcdca633571cb2fde08e9de9cb8b022ee6d7cd010bc126ecfd57df27219733d8fccae5721cf03e00291b952585cdb149fd57acef0782b29f767850be5c7bdd93e8bccbdb1719be6b336c75f113d5d6ffcaecd6d25f1ba209eb4376f25c2659f36001e4b855b3c6bfeaace258feeafb8b8b836b7898c7b8bf2592cf038b83f355c28432e679d2f92e2ba14f95d0c578907b7ea91cb9d25fe6a85cbd996afa273290be1795517f7c675fa09d2e22ae1e0d6e9727f7eb85074ee485fde71190b7a9ed2e54e0e7f55c2c529719b16b93c693c56f0dac4f82c9fdbeae0755eeecbcdefe85c1cec365979d25e782b15ee8fd1856ae1194be379575c2001ae1496db72e17523dc1e28ae13d6d3d5c4ef3ab83832ae136c170c86e745708bc113bd707126dca637eecf980bc5c5f5f9dd2719ae2d8ecf7a72bfe28330b83d6dae531cb7ece08d5a97b3e1574ddd66f14eb25c4e3fbe6889fb93bc5240b7a780eb24c2656b8edfd52ece86dba4c753767b5ed3e51ce48b9ab8e4b9f257635c1f21ee539ddba32772737f38b8505ab85cb85472e5d6a1726f675cd8179793cb17b5b9383dae53019713cc1785707b80aed307b7a4f3463fdca33e288b8b9be136395d20402e9ddc5389925bc7e7fe98b95067dc1e3dee53947b137e160ed7278e0be5e4568b8fdfddee3b7c90f0fe1072e7a4b93d155ca725ae0d8bcf925dee50f057642e2e86db94c79316c55bed70952870eb1870bbe58948b8a5156f1406a643d598fbe3e54241714b43dea886aa1e6e4d7827b32aa78b23dea6269eb1149e17c4b5293d969c6b033e1610d7478c0bd5735bc7d76d707d8aee139ce74c8fb7d23d67566f55e5ba92bffbe1de92b7e9776f1a7c1616f7233ee8cabd0df059225c2504dc3a4e2e4e86dbd47471bddbb4745fb3df4171e912fe2e813b2bbf2a885b6af046f3da5cee44f257485ca0e395bae2494be2ad6e78ca60cfbbe3faccb950c027accef33cb865d117b9f1a4d5de6a824bd7d1efa45471200507f7c7912b55bb4068ae5417570902b70e0117e8812b75c2e5ce097ff5e6026970a590b83e46f769859d1bcfda107f15bb949d79de24554f4f5af2adc0784ee0177d70e7e28338b8ae457e27c3bd6171614f5c1c15b749922ae42dd778a333d7f6f45952eecfef42d1f0e4717aac092ecf158fe5f3a439bd95134f9a076fa5f49429f1553ef7a6c66dfa2a5972eb28b93eb4fbe4c1c50ddda60eae8f08f7098ffb93c8957a5d5b0a8f4548d510972790c70a73cb32dec8f8042ae1d2793d6739bc154f950b4fda086f45c26d4d79ddeff6f4ae130cf766c58535715b03bc511cb704e28d22d805c33dcfc955b2c1ad63c1ad9624bf03e0594be3af98dc3288379a727b5ab84e7d5c2546b78e02b76cf3464d2e79c6fcd51ad716e5b16c78d29a78ab1c765d9eb52ffe4ac92d7f5fb4c7fdf9e2ce99f2a445f2565edc8235795ed1bd41f9ac158a6cd8b171cb02be088e5b1ef246365ca03a974e955b26dfe888fb93e642ad717b60d78983272d86b75ae1f6e756c58531715b14bc8eca5306c55729b9e5983772fd7201fd4ee8964b6f24c0b5a1f058835c1cd16d1a736baaf922136e83782750ee0f1e77ce06b734fa223c9e34346fd5e629e33d4f90aaa5db324f14c4bdd970612c5cdb0c8f2575393df82211ee8d91db94c06dddf03a166e697ca3daed39e33e01dd0e9f4887eb23c5859ad767779f5cb83d70ae531db72abc139ee715fc8cba404457cacbe51ce38b80b8d5c2fa9d00b7c427e2e192a7f7575d1ce341e2afaaae0ff03ecd707bd85ca737aeeb8bdfa179bacaf8dd9ae7ceebaf1cb8408f5c3a566e859e08777f20b8503d5c9f9efb44e6591be1ada6ae8f23170acbe5c4e08bde5ca0a22bb5c1a58ce97954cfd9d35be5ee5f7c10d2ed29e23a3d727b7ed74986cb1de35f29f15ab83c6a3c96f0da1a78ac22aeed8acf8a5da039978eeeca16f92a152e63333ccf88fb13c995c23d6b02bc151cb767cb7542e2b276f456805c2540b74ecf2df1782338f756c685757177e38388b83f642e54195736c33b31756d2d3cd621d7c6c16395716be589da5c1b209f05bc363a9f95e5dedeb84daeabe4805ba7e8fe0472e77cf08cadf03c21eeadf659c5db22de89eec963f5584c973b66fc150db7539e68cd6d85f03a34f7f6e5b3a4b8363e3e6b775b456f2447d5998b43e33aed5c1fe17daae19652bc91975b3af9a2356e4f23f7c9cab571f1593bb747789d6ab838236ed321f707ca8552e1f6b8b94e72dc1f0d2ed415b7c780eb34c22d83bee80cde0a973cc3bf62e3964dbc1105cf27f8c94793d2edd1e03a55718184570aceb5657d1606f7c6e5b39ab89cb577e2e6de8a3e6b840bb4c19552e2ca607827eadc9fdd858281b7c1c535b94d626e0ff13a7d717fd2b87326b83d58f7e9cb9307eab1b65c5beeb172b83e56ee13101727c975d2f2ac35f1573bf727880bf5c8b5f53cd609b71a3c510ccf5a127f457362cd05aae04ae570195b7a9e0ed767769f90ee597c900617e7c46d72e4b60a78233a2e6ede26086e8b87d7c570b943c55fb970d93ede490717c7c06d8273b943c25f85707da82e5497e7f479276f2e7790f82b156e8fef3ac5f094c99e27e73ec5077db9404dae1405d7e7900b05c1e508b485c1ebb6dc560baf13e129f3e1abe6e5ac82afaa735bc3d785b9057be3795d6e8fd1755ae1deaa7c9610d765c5ef88970790c702f3047273e9cccbd995af6ae4fec3073d705d81fcee84fb075fd6b93e18dca72a6ee9c41b71b93f155ca8266ecf08d749cec581709bbcb84a76b78e945b46f045833c65043c2feafa7cb94f51dc9e25d749e97ec2db6a1788812b25c225cdf75648cf9a237fb5bb3841ae53eebab07e47c4c55db94d2b5cdb028f35c46d6d79dd94fb9c0feae2e2a2dca633d7f6e5b1b8b83e30dca739f78776a1929eb6d8638970711cdca6202e77acfc55f1f6ccae13d27376c45b01dd32ce1b39b97481f91deff244f258676ecf01d78984cb43c663f1ae0f93fbb4e649cbbd5507f747860b45c8bdcc978e5c20de9502e17206c25b7dcb30de68f8dc997fc5c0e5f9e3b1bc5c2543b70e9327509c4ba77567e38384b805abe3795fae9227b78ed0c511729d769740685c3a035cee04ffca835bc2f046b95b2af045755cca80f8aaf22ae9dd3ab9db13c2759ae3966bde0880eb32e4772ddca9fcdce22a49ba5591dc57eb774adcf2843732e0963cbc510397b0e4f3884fdad25bbdb92e2a7e37bc47f1415dee747c9012f746c385a9707d9edca710ae0f08f7e98d4b181bcfb3a00a876b8be0b19278ce8a78ab9f4b1a96b7325e9b098f15c8b5a9f1594cee727c1012b7b5c4eb8678ca90f8aad72d074f44c3f551ba4f6d5cce28be4887676de7add4b8b7103eebe9e226b84d305cee40fd950ff715e677722e0e8ceb342f633e3c4f89272d85b73ae1e2bcb84edf1e13ae53d36d297923322e5bb6b0bcae81fb93c08542e1b60878a3392e50d095e2727da42ed4d1b391bc9332f7c775a138a8cae0395be1ad6055355c9e461eab787f46b8504ecf9792df69717b84b84e8e3c95d42e9d1bee4fd595020036c4c595709bdca8b2e0da0ef9ac089eb131cf8be1022570a5c85c5c1dd789c9b3b6c55ffd5cd2c6782b219eb6d9638d708b6784bf8ae4b67a789d0c973b417f85c1ed295e27306e4f13d7a96a888c67a33cd1ef0241b95266ee6dea36f99e343a6fc5c5ed29e43e2d70691be2b1a62ecb2d9f00d395b5f04d0cf1ac11df8a912bf3e3ab986e817827075c1f362e5493eb63bc4f633c677fbc55efe20ab84dc57b2b3f6b838bdbe136f9717b9cee5302b7a7ea3e59707bb85c27252e8f198fe5bbb62d8f55c52d1bf82240ee8fed421def501f44c5b5d9f15906dcb5f820314e96eeadcb6741715fb1df39716dbfc7fae159337aaba6a21a2e77627f65c1a5eccbf31ab93f465ca8a967acea79715cf2b4feaa89fb03c89d53e65246c1f318b93e08dca7126e4fcf7522737127dc26382e817cb874802e100157aa837b8b7d9607cf1ad05bb9717d62b84f815c5c18d7a9bc36363e2be8de889f25c6b525f25954ae92dcad03e5feccb973cc5c1f0deed315b767ca75eae1de22f8ac1f2e67d51755715b2fbc8e84eb3ae4772e3c5d43fc2e835b26de89f05236e579885c202e570a87aa36f78777a162b8ae177e77746d373c569d3b141f64c1fd41e242513d6d4c3c56d5b5f9f159beebf3739fccdc9bd167b9704b00be288ce7620a24c9a583e5da901e0b8dfb94f9dafd0e8ddb8abd9115b7acf245c88bfbe33a41b9b830b76987dbb3c4754a3e61733ccfcb2da778a32f4fa037974e5955e6defeb84d4ca4e8e096405ff4c5bd8b0feae0394be2ad945c5bf2b3ba5cc6963c4fcd3d3c36fc15d5f529ef5306d7d6c16399714b28dec882eb5375a1bc54897095106f9524d735c5ef3cb815abf23c13ae4f0bf7c98fdb52e27542dc9b1eb709e8de04b94d439740625c3a4e9e1d7a22009e402d5c3ab3dbfae175345c1f38f7e98eeb93749fc078ce76be6a896bf3f2585b5c1f3c2e1402d716c9675170b9d3c55fc5707f18b952b2dbe2e0755daa7eb83e66eed319b7628e3caf8de70c92b782e09662dea8973c3e7f25c5fdb95d2832f7c777a166b8a5166f24e63961ef84cdc5555da70a2ece8debe4f3a415f156355c9c1ad7c976b933c85f097181ac5ca916eeed890b33e2020daf9414cfda0d7f352f7718f8abe12d1f79a320ee4f1c77ce97fba3c2858aba045ae3d229ba9c577c110fd706e7b1fa78025d5d3a5b9eb343de4a78cb46dea8872688b83fbd0b25c3f5f1e342f52eae8bdb94757fa2ee1ce3ad16f2773e771e3e68814b17ef7707dc96ec8dae78d284de0accc5adb94d5ddc1f2b174a88ebf374a1a25cba967ee7c06dad799df1da0cf92c082ed0d095ea726751be6ace6d99f03aa6fbf3c79d43e67296c157457281ca5ca92c6e69f5464a5c5b098f35e7966cde68c905225e292a6ecf09d7c9e90215af5415f775c1efeeb88ce19e77e67efcd2e936cb13c5d961706f71dc26d8e54ed35ff570c923e5afb6b8554af009d4ae0b86df5db93c6d3c560377e6bea878b943f457193c6baeb732e3f6f4709d14b9a481f15641cca1726f1d7c1617973228cf03e472367d1112f7213e88ca2519d707e93e75717fb2b87318b8cd7a276a6ecda52f3ae1e2b8b84d5855055c2000ae1403b7c5c4eb88b82d33af1b7327e3838acf9dff6a81fb63c0852ae196be2fd2e3dee8b84db35b1af146579e34296fc5c1e52b8be7d12e81e8b8740cb89c667c5110f7e6749b7a6e0f9dfb74e5be42f85d9d27ade8ad3078bac6f89dd2f5a9e03e2d710bc013b52e6700ef44844b1907cfab736d6b7c56937b63f2596c2eeee836a9707fdab8732ab84053ae940ad72784fb54c7bd1d729b08b83f3d5ca8462e5d18fcae779534b97502b8b7259fb5747b80b84e52f7e6c26729f2dc91fe102f54181737c9759ae0e256b84d74dc3290377ae19665dec8766d353c9623f7478d3b67cb9387eab196ee6b84df4d727fe8b873c2dc1f2e178a89db23de49ef02bdae54d1c501709bc0dc1e16ae131fb78781eb74c33316e7793ddc1e32d7698c5b06bfa88f5b4af92239b7a5f4bae2bd65f05957dc9a71be288567ece979615c1c9bdb04c6fd695da80d9eb61f2b846b93e3b30620c2725b00bc5119f7678f3b27e90299b9525adc128d372a737f84b850905cdc0fb72990db53bb4ec367ad88bf925da02857ea83db13c77d1abab6101e6b8feb53e53efd7007e3833cb82d145ee7e6f6b4719f98dcb27927f3f6ec5ca7a4cb89c8173d714b47dec8870bd4c1956ae2e282b84d83dc12893792e0fadc709f0cb9b6111eeb8f8b53ba4d5c5ceeccf9ab20ae4f9d0b95e596037c511b5a54595d25636e159dcb89f54556dc579adf1d726f297c5621b735c4eb76b83ec3fbf445550acf5a9cb79ae4dad03c561d17d7c675eab97409fdcec9c541729dacdcd798dfed717f06b973d0dc56933752e3f658709d9878d23e782ba65bdaf046bf67ec84e701716f5d5c18151797e636697139e77c1113972e26bf23aaeae0fe74b9504f5c9f11ee531ed796e5b1a4782ed49e3bee1301cf191f6fb5ab0ae4f26cf15800dc5b9acf8ae3de78b8b0192eae8adb34c9b52df259562e656a9e377571855c27de2d0df8a2389eafdeefd2b8d54ae4773fcf581ccfdba26a8abb1e1f54c57366f92236972f239ef7bab6aacffaf2a42df156385cdc13b789ce13c88f4b47ca2d05792318aa8eb752bc93072e955470eb1c5dde6e8ceb92fa1d0d4f571cbf73735b1bbcce827b3bf3596ddc1f172ed49cdb8ae17526548df0a44df2565fdc9f3e688a678df65669dc1e35ee53004f9a1d6fb5c4f551e3422db925d51b21715bb637ea62172ce979bf8bab739da85cdc10b7a99027edf656145c5c0db709eaeec40751b0eb65c3f3e62d9778a309ae1229b74e02f7c7893b27777d02b950c1276d87b7826157cc8be755717b92b84e935ccab43c6f91aae1b545f159f34ea32f22de9f242e54d5252c8de755707f22b8503e5c9c19d749765b655ed7c1e5a4e28b76b8dc29e0afc4dc09f9a0307878b70790fbd4bbdc09e1afdadcd28c373ade1292371282a8816b03e1b1f2b837342e0c8cebf3c785f2dda9fb22e3ad96d4ef802e5d1efc0e78717d5c27049eb403de4a835b46f1465dee4d8c0bd3e2da0af92c076e3d78a21c6eb1de499a7ba3e2c29678029d70e9c0aa109923bc3ebefb14c3fdf1b9501f3c6771bc5502cf5a187f05c0ed41ba4e5b5c1f0eee93164f99ef79830c9d716b7c221feecfec420d9f3229be0a80fb83c285e2e3f644729fb43c5f6402655d3a14dcd605afd3f28c79f03c19ee6b83df3d5d5c0bb7c98eeb82e4773a5c9f412ed402f73c3e088a67accbf358b82ddc1b7d710924c3a583bb2d37af3b73ebc5c5f36a4f5a236fb5c525cf93bfbae2eec2dfac6e9d3c51d16d05bdd11a17c7c7753ae0e270b789cbbd45716148dc9befb368b8aa90fb93e5421d715b3abcee8567cdf75650f767880b15c9f559729f94ee0f01176a84db83c47592e4020572e9ec2e4f1d8f65e5fe0c70a1e2dc1b9ddb24e5de04f82c10ee687c5099a70b8fdfc5b93d6bae131bf7678d3b8782dbd3c075c2e1f670719f66b795e5750f5cc66c78de11f7b6f359c6fbd3e642d5717fccb87324b88c0df03c10ee8fd0856a737f24b850465ceef0fc9597db43c87d125e9c1cd729805bb6f146696e4fd67d027371735c27016e89e58b12a932e4e246b84d6cfc82edf1bc304d6bee0f1f770ef1deb6b83029aaae6e4f10d7a9912bb3fa2a1d9eb7b5e29d5cb93e3ef7a9cc93b6e6ad42b84a7eb7ceeec903c663e5aecf19170a80dbe3e43ab9b9382bb72985dbf3c87d92e0fa38709f72b840085ca9e2b388bc13e2c541b94d1f3c775a7fd540951317b7c56dbabaac1eef8483a7edf558712e6b6cde0a926bc3e1b11e79d690de4a91ebd3c885ba727f1ab952b45b36bd9108b7e7cc753ae3e268b84d4fb7678dfb24c0fd8d0f2ae2768a7702c16da179ddf072878fbffae10251b9522b5c1b99c782e3de50f82c426e4f487098cc2c0dd780d95254458a1426e2704d1a5dae8509c5519068d4e9927e43a3d0e72b027d66d4984142fa6d9942a5822d587ec7f9c4d1f108d4f57645dd2eb823e678b9a36f3aa12b0e7fc7638fa83bfa8c4d1cf17ebfdf5147cc158bc062afb71b32719424e4017dc06350771cf682bd9e6e89236312efd82bf68ec0e24fb7dbf58e65803a3468cc9c11f250984a1ce586c15ceec81bfe8841e12ee9a7dbc599491ce58e452350f8230e8fbe5f2f18ccb141e28818cc0187ba23914834260181c5e211473c61f0f74b12261d8f4561926f1734e26848d4098db9a22f17dc19733a1d9c59c4519270f70bea78c5a14fb7e3ed80c432401d4f8449c451f147fce578c09e30c8d30973bc37738823dfaf780cfa843a21ef5706a8d3ed94a6104749bb241f3129373c068b399d2eb80be2e8c8eb25f18c3c21af38e4e58845a16fc766027154d4f5927ac11eb1280c167f3b9e92d20f47c2dc8ff7f3118f3d5ef1d71b167965803ade0e84e9c351f13724fa843ae19108d405814134b38723ddae674cda1d75c71f0f481c0ad34c1e8e7a46a2b0573ce68c3be3af47cc19c9ec7094f44b0a1287c0e2ce374cf205733c36bf0fa60e4749395ef1c80b0293929276b9e210685c62a35406a83b337338fa019388c75d124f28d4e58cc79dae0c70d7d39d212aa149ea2d4d1c8e76c51dd0083cea7a3a1d4fc823faca0089c6a252156351898b30a76b60de7014d40d85baa36e38f4158d3d2151d7cb326d38fae982bc9fd107d4018dc420ef57ace128e9d8d3118947a250a733f682c1200d473ea24fa8db097dc0dd50981bfa8c40dd1d7386a3e0aed7dbe57c3a1e31373ce68c3e23d3b028458a0ea969ca70a4cbe58cc11e4f37cc019986c53517489192d3cd306338daed72ba1f9128e41d7b466331285c624a6ac326589c301ce588bca4dc3107cce974bfa3f0182cc3d3a96913d425cd178e8ec52271a7e3f174c59c6e9803f224f805b9884172335d3802fa7ebf5e52af28d4f188c6a12f8e19364b466351498d4e385b381a128949c59e4f07d409773ba290c8345c22b241c3b4a4c406090d9a611a363ade64e12898331e81493962522e09d833f28e65803a364841a62525363bdd5c2198ebf97e3e5e4ec8e3097b3a9eae07e4e97445e0709794e30979399d11785c42e2a9d1e99894dc9859e3db60aa70f40bfe8c475e30c9b8cbe97ec0a4229699c2516e984434f67ec09cef98dbe58440148e7c40dfef9734dcfd80436130b8fbcd138e7cc71f8f084c0a1e87c29f2e09c82b03d4f1b278c0e04e0714fe80bd5d52eff8d32d198b66dc282d59602c431c569122a5ca510ed86be550aca31f312908341e7bc02251e7f3ed7865803aa014295e8aaa1455a952f4a508cc96a2247a7544f41983c4e0af474cf2098bbfa1d0aaa71302733f234fc813ea8042a130a9d863a155bbdecf17cc0981be5c4ff8eb15893b1d91173cfa806580ba9f6f278114294560b6e8805447c36351b74bdafd8ec1e06e770ca2513a22c159620a1681c1529445ca95a22a455986144891b26698669783a1c9a3a1b078ec05893aa130c8cbe58452a404dd4891a2d321e9826e76c2a9a322f0a83b167dc6a45c6ec70b1681c12241193643098e4a4a4b16489122454a2fa8e3e9805cc42055aa931cf180bde390083c260977bb1cb177ac24473a616eb713ee7cbc635198148ce4c8c83bf69276c2232fc9d8eb018b49901cf574bc1def57ccf188c05d8f77d4f5911ff017d4f97440dd0e28e401733ce1eef733ee8849411d30f8f309854621b1758e74c0e150a81b26157fc6a42423d04886f7858ad1cc12182952a45c99a0a84a91044560b61451b1026749298d91022952928a48c29e16a57364240a8dc69c11c82bfa8a49c4dcd091a361aec70b167fc35e3008d41d83b932409d152952a448e12206494d1b3922f2883b602ea96704fe78c7df4f57a9239e91c7e3097fbede501714fe8c45468e80c35db027dcfd72461d4f674cd29501ea9498d464912265c9c864064989498d19304c59d2282d5d211ad77c912205c8d351d1458e80c65c2f670c0e9384bba051f82b0283458a14a2d18d0fc806cd9a34667c399d22473f1e3077fc0985c6a4e010d80b12bf5010dcf9d1448e7cbd9d0ee8fbf182c6df2ff7cb259501ead6c0619222458a14e31a38607a3a245d2245e44878040e89c71f709713f28ec2ddaf0c5087b4a4e3b1d0438e86bb5d7118d4f178c3a06f67e4f1ca0075c6e27089cc9a36c1146ac8d1ae4714f284bf609231e8cb0181c232401d8f84228f7e46a1b007ec119384c4249fd1082c03d42121097755a1851cf97ec7de30583c1275bc5cf097db1172a423127fc024a22fa9c81bf27243e220473c624f270c1a73b9e331a833ea74395d6e97c6c8c4060e1b1d4f9023dff1984b0aea883bddd1b83356692047459e30c947241a85bfe011c8fb0583693ae7c878d40975bedd4ef84b3aea8045e2990272d4ebf57cba5f2e98044c4adafd7e3c3443374845a39a1094908a4325343fdd1f47c5a4dc2fa9e70bee7abca24e7814fa7144e4118149c39dcf08cc057db9619271a90d1b253444a4e00ecd50cd92b10c71485cd306e98c92121ae0ae080c96a22e45558ab61481d95224d4fd928ac0a8239e90e7e31977c61f8f583cf28a8ac0364569cc946123c54d5112b04d9191a84609090d9a2131d73312d554a0e6ca4f4cfb38f2ed8a465d3027dcf57643e331082c03d4a9b9b20bb259a3a42b1f47c1e131c7eb198bb961af18fc018f7b1c0d893be051b8eb017bbc24a1f0a8c75170d8cb058d4062d2d097132625411d117b476392ef28041e7b43a1ef677c3af2ed8ac3245dcf58d4e986494947a7a35cf00724f28ac1e051683cea8a4d47c1e14e18240a77c49f8f281ce671d44beae988391f5127fcfd763d201e47ba24a090f83b1e7fbd5f5210a82bca39ca117b3f63d2ef2814127bc0dc2fe98ea3a49d71a8d30183c1df30f8230eed381afa72c32130980be67e435f52af8ea31e51d74b2aea8ebe5f50f71be684741ce5763e62b1d823128bbd24618f079ce38848f4198d3c5fd1083ce67a3ce14f8ea3a251f8db158139201018ecf19278711c25f58ac49e0f68e40979bf5f121c47c65c8ef7fbe974c4634f48dc15df384a2ae686c7235038cc0d87c41d6fe7c65170584c2aee7ec3e14f982b2615756d1c15853b1f300734fe86b9a4a4a0315706a82bc36426841e1ce304409d10cdd0c8d3b17124cce57249bca49e30283cf2726a8c6890ca3099090189687423d4f988c6a2121109090e9399a5e19aa06e8d239e3057040a8bb963d2af27041e87486ece047f7d548d23e0b1e7f3fd84c5e33078ece5784965803a3767908e43231aa49e6f4747d338daf58639de7148241e8db9a1d1e72b03d49561d3668db0080c96a50a8a463521541004ea7e95a4681cfd7a3c622f68cc0583bf1cafd7db9501ea90948ac13378c1638f5834ea78c0a1b00c50f733e3c86824f27a3b239127dc017d3a60ae0c5087666864628374064d9b249fae080c16305b8aaa90516346686c1947bce0af6814fe84bc233069184cf29171742c0e833d9eaf7814fa7cc1a463718c23203137dced74bc9d0e48ccf588c432405d9809d00cd5ec72a81847c75d90580c1a8549b9e06ff72bfeca007564d420e98c648a4743e3962a45618aaa144d5054a588a90d0552a42c1d8d5e8c45252e52a4188b4a6aa448912245829c6e672c2aa9e9198d4b4c493e9d6e0ed1308e7a493961716724fa72c0a4dece776c038671e7e309873dddae180c127dc0e01747bfa0b028e4fd7abc9d1038140a93cc7891d3f1823a5fb027d4e974bb1df0e70b1273bbddcef733fe82459eeed7eb75d02e8e803b5e4e973bee80bc9d3189084cda25958b23e03169270cfa84bfdeeec7231689be3569ccf086dde2a8c8331685c6a070670416793f1db00c50173c32b511b2092e31b1e1f1aac5d1d057e4f17cbbe1d0e71b1287405d19a00e898d999d2e8b20d09703ee7842a0b0c703fa84395d70f7ebf97a44234f27e40d873aa2cf88266928a4a0581cf57a3a9d6ff73bf272c7249ff1782c03d405bfa4515aba22450a1b2633c3252629529698d8fccaf48a23a38f38fc158b49bb1d2f9703ea92ca00753d9d19dd2e4d1b35b5e2c878e4250577bf602ea82bfa80456219a02eb74bd3464d1547c5e111380412753ce0aee8e3fd76bc1d1547475e501814068bb9a270270cfa8c45e31b33472425a6e01447c7249ed0a7fb0187bca16e28e41585521ce58e46a0f0c82be68cc61ed1772c2a31f9a238d21187451eb0986404ee7eb9e38fb8e68d118a23def1a83bf674c4a390684c12127740dd1347be9ecef80bf68cba1eb0e8fb018b68d820e974453546a6374624631a639935c325323edd90695844dae98016d489a362f1973b027949baddd0281412874c44e39a37c6268e7eb99eeed8db1187bb5eb0574c02ae51fa317194e41b068f459def37dc0d7d41e171d7258e72bc621290987414fa823a1e8f782c03d4f9744a1c25e57aba9e8fd72bfa8e4062afe82b03d4e574c25f9338f2f572bb1f1098ebed8a3c604f474412fa8ac4d130c74b2aee80bb220f580416753bdd12131bde1147c21daf284cf2f97ebc9df0274c4a12ea8c3802067b426230184cca2501d914d5b4514a2ae24808d4e58ac0e2f1e83b1e73c1e3b1a8c64c086ada28a9410aea16281147c0e24f18d4f172c62071f72bee923a4430f8ebf97cc05db0a7fbf17839a030f7031e7fc1241daf48d4e580c71fb0421c25f58abaa24fb723167dc39ff0582c03d4f9a03488a35ed2ef07ecf580c4e22f6957eced3c281047441d5198ebf580b9639118f4f98cbddf714c7f3812fa763b23d048ec1d938844df8f5806a80bc1a886b7642c435c1a1abf2c317dd1e9d42c199998866b804b4c6c7cf0f57a42a08ec70bfe74c09f6ff7f3ed8245a0ae583c1a75bcdc91f8dbe5b2b48723229097ebf188c5e0d0d81bea7e42354a6bde187fbcf27044f4f586ba245fafc7eb25198fc36319a06ec793a03b1ced84c0618f074c0a027b456091382c03d4a9514a93468988846698c60cd1584452624212ee98864a688ebeea70a4eb1581bae08f474c02e6843f1f131b335b84391c1d9386c763b1972b1681c65c6fb8cbe170d4e3ed78449d6ec713f67ab9a3cf6744b3a60d981c03bde168381c1e87c6a42351a7ebfd7ebadccf81da70c4f30973c0228f9823168149badeb00c50e76322b65962faa2d30599d21c6b38e2e576c21d2f1804261183c324e3d04c6938daf1883e214f07d40589bfa4de94e2d0022952d82c198b68ccb4490afeb8884122d3198e8c405d30d813e67a3ea2d0c8e309d70c974250d386a7fbed2ac35152d251971be67ac65c7097fb09896f8a59c8a8197a9122c54846cd70498a14366b9474402e62908a8d2189571c168bc16312d167d4e97abc223058a448515a32c651a3a4468a94346dd4f484c2b013fe78c21ff0a7cbe97a395fcf07ecf584c123b0784c020273c65cf0182cee7839377de1c8b7fb25e9863ee1ce373c0289bca21932668a4868daa4c9e91aa80b473d9e30e8e3ed8ac35fb09803ee826580ba5d084a6b90d0b44913ccf5deec7864cc5009fed2b451c36be168f8db157fbb23b048dc0577c263af0c50c70649a9d8d331a969a344f42d31b1e1fdcac291af181cfa928e3e9f7077ece58a39a5a39a2c44336a86164891a27454630609c8450cd2b12b1c0187bfa2ae18f42515773d239067449334646a9326c7ab0a47ba632fc917f4ed8ebedd7117cce9ca00754868d018893d6153380a0683b95f4fe7f3057fc29cae97f4e322068983a270744ce2f988bd2461ce9824450a1a3446e28f8b18240d7ac29130774c2a067f40628fb82316874724354634401d129c354a445f51d1d7a6084c5192af4d917067c25130482cea8449c79d4e181cee7e4965803a354a6698866894ccb8412a2e2921a951daed844c4b4a6c7a16947054d41d8b471f8fe8030e8741e0ef98c6b844c2d1f0f84bdaf97cc11d51c8eb057fbd32409dd292310e129c242437668a48bc1d131b354a44249d8e8c1a33c22d231c0189bba1eec7e31d8f44e35027f4ed2210e16838f4097b40e2ae9864f4057b46decf4a9ca363d20f98cbe98240a31138f4f18065803a354634453546a4dece67249a41c3c64705ce11af27dcf57e419d5167d4251d8bc232401d129c9e066f8e7841611118d40173401dd11814ee88c337c65f96108e7e441f31c8cb15938a493de0ce672c03d431ad5142626263645a522ac30649a86bc3c6cc12195f90682cee98d01c8169daa8d9e2e6282714f68cc1df6fd82bee72399faf97a5cdd10ea8cb1d733ca330c9a7db0d85c71d16a6a39f2fe9a823ee76439d4fe7eb0179608aae7829da6161730434f28c40623068fcf974ba2191c79360e9c8971bf68e461db017e4f5763b1f0847bc5e522fc82306773a637158fc2531b1395a73d4331287bb2423cf98644c021a8342344a4a4912281d1175432190c82bfe744261cf67d4f9d41ce574451eb14814f2928e49ba9defd84b73b43326ed8ebf9dcfa7db1189bf5e120fcd5170283c02794562f1084cd21979ba32401dd20ec988664d1b26a4a33347c7e24e0824ea8e3a5d2ef7fb1575badd940f8e7e419e4f97441c168739ddcfc8866969b806a96864422a0ed70875109839f2058b3d9e6fb83b02733ca3af385cc39352e648b7e3018b3d2030b7fbed7ec6a46019a06e7785cc518f27e4ed723b208fe8f31589466119a00ecd70898c91498d19a4e270cd4eb7a47445183c1e25f57abb9d2eb703fa823c9d50f8f37111839481f148084cca197d411def38cc117d446019a0ce5740f1e8e81b1e7749c2e06f67240e7bc6231ba08f8b18a430c4a3ddcfe8d3118d429f2ee8dbed82bf32401dd31b2312d26f695866c706b8342c43ec7d493a1af68c46a271c72b0a77c262d1987b639460c91882d29631c32360f1c823ee8444e19178e4e97e422a390e3c48121a8fc0de9147ece98cc75e2f5706a80bee746d9098d21c8358908e82c61d31294724127746e2cf97b40bee744863823b9f5097ebe584c1608f97d3f9743f9fce07e4ed7cc79d2f09e8e3f17abf364846364bc3353d1d970e8e74c45c30c998b4f3197fc2a4dc3077347a01fec8b4493216d77070f4cb11813b1d0f78e40173bf5f505806a8635a524a1a0eb041128fb84b12128f40e3afe703fa7459c4107fba6152cf08d4097dc41df097f4e3a2c16f27ccfd823ca26e07dce572c0e10419f492883be130670406773ce2f0679c008363b038d4fd7449b9a18f972b1293c21c058d3e210f7814ee7242ddb158245e7094e40bea74475e12efc8fb0d7f3aa23008e648183ce68cbedf3007241a814060eecb518eb7f3f57449bde170580c0e79c63245a505bc1c1d8f39634fd8131e7b46dfaf17dc158b4a5d8e7a3b616e08ec1581bdde51c7d31d733ba105473d9d30f8db25e57e44a06ef813eeca007568d6a43183c4d4260d921213523108ace08898a44bea197f40df5057d4e57c3b06b81c097f39e031182c0a8bc09f70e7dbed760c5070441c262505853c1f316908cced72ba326c80badf96a3e03068f41d937e40e270a8331a736a8c6e8c48699496d6e8760b4c90643ce672bedfaf573cf2927cc2a5a22e8b96df30a9b713fe78c31ff19833f6ca0075c636209851d306898d991f972c47493a9dd1f8db058fb95e11d8d3f9d2487014241a8bbade2fd733067bc76052521925269e0e8b8e982b260973c760d07724ee82423444a49d4ecb9523e010c8031e7f3e63d2ae282c168b6580ba20151f173148bba3242b3c2150b7cbfd82c05c4fb7db05753f212fd7f3197d3aa34e7804ea86c55ff15894dbb541b3268d999d2f4d1b353ca634c710aa1c058d47a04e28cc09854322f038249601ea9498d49841d2e97e411f9b242a47bbdd309823fa7a449f5028f4e5766580ba9f9169c8f4c5b79b725414e68843dd4e08fce58c3de2ce5706a85ba3a48406a9a75b525a13dce9b888417a2082a3dfee38040679ba22cf08ece978c432405dd0b8a45465691826894a4ff7e322060908c1d1700804f68443dd6ea84b3a16736dd6a831e32b0283e54817e4220669cd034749c79dd1f80326057f4160122f582c03d41991d2282d1d75ba223058cab0194a2045cacfb71b96612345ca19078e80c6612e97e3e9927640e0f168f49501ea823a6003b9200fb8130a75bd5eeef7db097b3c5d0f28dc25e98cbc5f90c8e31d85479d14294c6d94e00cd1489122fc71118324020347451ff097db018d49409eeed84b229601ea908a6a864a45dd6e0908664bd192518d9a2cb99d980582c09ed017fc117f419e30e938dc9501ea42505a228374d44d203c12fa74493c629038241a79416352b10c50b7e3058f8e40df8f5814fa783c2170d83b16cb007546354a4821282d91098630f422ac02ccf974416070d7cbed78c1dcefe7d301774163aee7d3118b3aa01098042c9601ea9088401dd1e8062984e112b0cbef4877fcf17ec0ded1b7f3f174c4a3ee785442623283660d1be116df51305814ea8041de5047ec0589c1a4a5de516ec813f28abb1d31580cf6743d5e19a00e89a7fb1581c15234a5a84a119822305b8a88c6303f1dd1e8260b0f69d7816e4beea8e7ebe5883a5eb157d40d85bf1ed1c794e69833fa158541602fa9a8cb0987399db10c50b7342c43cce9de48311e8143e3b1c84b020e8dc15c92af0c50b7c4c406c9c864662904a191c9cc120648411f1731486ea21c15813f5f70982bfa86be5cae07ec9501ea9076ba1f539a23cfc7450cd20f4a1a25252434c52524249902431dafa74b02167944a28ec72be6ca00754c698ebc3649462b6c8645b95d9ba225a5a5a523295298d21ca548312e29118bc06c2942e2f9b888413a934030b8fbed78c25e8ec7130a73bc1d50279492c60d1a34528e78c75daeb72326198bbb1eef37049601ea8ac06029fa22458a14294560b614198943346b90d498415aa3b454dcf59698d6f08c4b4ac41e173148460490d8b45942425a7240ef1764c01ba51098840af8f9764404ec744445486f86698606d02129a121a38446802769849c202d29310d9b1019302480d092a033c461121a344a093459c244688900023409c04c9a344a0700f04409132035c6356b864d7e887c7a744f70c123539ba09bce58060989c8c64c9a26b6a271c9585c524242329a59624a808787068d9933b91d3606d4764a4a4b07d07443e3d20133283226231903623a364c6cccbc312600dbbd3173342eadc9bd9686463444242426346d8647631101d76e80960e8980725734b26183645c421ab229128d48ba333fdf6e0dd1c80638e11ccd2c19dd2019919498d6c059222231bd310e501d921a25336c968c6e90de18792b00c801865c350d9b610852868836a619aa691d7088136d3dc4b862ca0f0a6ffe41618d7fab314618a101ab314610a101ab314688d3c09c363d26a62fd8bc2401082facb96211a506d414d3ccb0069acf48f0c10f8e98e99579c11132c1e39b39c658b1472c93b4c21dc31f0f469803298031c50e562084032b1b5820c6831f0d66c8e00d0cf4c0004a1834752e68c06a8c3feb07cc0872b49ca0418000005002f4e3d383bbd978765eae56396f16d695551555726a12492281e4913a741c291b29a51831e44fc091270e69c48ad40b8cbc71c8221628b243542256feac1b221efc59b74332f8b36e86acf9b36ec811feac5b210dfc59374296f8b36e83bcf167dd04b9e2cfba05f2c6ad8f03fe22d108a1ad8715734cf9d2a104800e7452825274518c71cc282d19e318e39861d38688cd90288329142cb080318e193666881c6880c818c74c90ca97461ec90723065efc700395f4650d181bc03043ee870c141c28f80bba68c37b323135273c98d8c789f37050f8a42f441897283768792e32e2059fc4c32bfd3c18e167e0c8cf00050954de4bd01baf409ae1bd50f046201e04277f247a2e4bc030c86bb0e4b9ccf0658edf00834f9a408b9c08bf162f56aa7cf9228195291878c901e57e16b30667300687f982c1fc652f77d9822b98cb14bce509d672962518cb573edaca55a672803008fcf97abc9d2e97d34141220c9f951f16a57f21a1269853a047650a6f676440135d5a48dfba00072d535a767ccb8a5606ad3dbe0918bec5a535c1b724685df9d6d1b7acb4a87c6b4a0b825603df62a0156cfdbee56bf1ca33daf8e2c97ca35ce34b35ce28e34b324a31be0ce38b2eb678022b9ff8d2892f9b58e24b259030e2cb22be24e2cb21be14e2cb207ee8e14b1ebedc6102bfba2a155039629942a580085d4066df34be68fc0f3f93f889c44f1b1e0a083f5ff8e9c44b41e66713f3849f25fc24e10212fb196786f0d34d0179fdace102e2faa9e69da8e102d27a4a3157f849e6e710538899f4b3f8138a9f637e66f04138fcc4602e21c5f1a7121388298700399e8023de890e4e7020603e11143f137f13444afc49e48278246765c8209f83820924aa3e57045a780458f84bf817c1830e3688e08106a020e0c48a962c1260b97264a50a95290b0883c09fafc7dbe9724652a240512001040e30e0827f19f072f22f2f5e7ea25704134d34d1041344e040030a3c809305a47470cef6399ecfed7cae96a37d6ef639dce76e9f03fadccf22203d91cf13fdfc5272007c4e0903b9f9b9fe50e6c03211948926f2f1b0082530fad7d101065831808a152d57b44081a285cad11194232d5ab268c992254b96a3232d50a064b142658a9605b21c09b5440166398a7204054a962329508e1298e05f0600b1e8743a5dafd7ebfd7e3e9f142950a04489d2ebf1780b2c20140281af085e11bc22d07264a5d7e3f114383a0283650d162950b060c17224250a142d5aae5cb972e5ca95a32c4756b25c39dae9ae1ced74578e76ba2b3b5d170b2ae042c1ab0b5116ddbfd6fc2bf72f2d5aa468d182050b162c57ae5cb972e54a162d598ea44481a225cb91957f55a952a54a152a54a850f997962c4752a64c596001a13008fcfdebc8f7af2329bc7f1d4581727414454b96230512f897962329ff3ae08003fea525cb5114287364b9e38d36dc90c0c9802c77c0c1861c6fb4e106157894e1244618586861051438fcf0420d33d0e0420b2aacd0c412704c8873420922bc407857d40a1cf22e3ffac8c325c8bbd294f0ae3346979b773131993133697829bc48017c270cf87ef91670c509a56f6df99616323c6110f8f30983c09fafc73316220c027fbe1e6fb7ee0950180cbeecc58235162899497a43060d1a260a263023019ca212992740452295344328fe33149c394d39869a3514840913260c9b720c35bb252c149cd93d01e2f1786976bb34c4d3a44183a61c030c160ace487086cc57aea0c142c104674e538ea1664d054b1ec986468c3ff26860c031ca1836ff05bc5d9a354ac32f78382cd3e3ed74c220f0e7ebf1d680b1068c3560ac01630d186bc05803c61a30d680f1e71e9963a588224028124820893c0288218f2862c71f4b30f287d5237dbc61a5c71a7ac841861e5620e2841a4a008188166f24b108106bd851471c8a7801c61b5e58716105175a2802061656562ca148238a044205228c58294245219fa3420e2aa478048844a450438a25e644f188951510563c01051a4b3cb28455128fe490f89c531256393bc0ccf05c08a1d3c8e718f9dc229f53e473897c0e91cf1df239e4e708f99c209f0be473733e07c8e7fef85c1f4e767cae8ecfd1f1b9393e27c7e7e2f8dc1b6b98f13932c0e0028bcf59f1392aa2f8dc139f6be2734b7c2e89df4a18324609c8c4c8c4c8c4c8c4c8c4c8c4c8c4c8c4c8c472c220f0e7eb9d1306813f0d9acce0869b4136f0e1bf30f05f1ef90e906788df05881f5c8fe690ffb2e6bb24f0379869037c387abc972d664002cc0e1999b1101ce4a0e9918971e9804bc9650735349c199c1732d7f4f5783b5d4e1804fe7c3dde4e041bc68cf01754f0080a8954808393e60b9819dca8a06e06d9e00866042e8378d9024e073320b10407cc0e9c07c8c8ca24602c0483211ce49039004d6fcd1932b12f53b874d0e50c97b24b1a2e3b84e9433603977ba4a8d16a3db89b8da74693c15eae728eebc1e170379c0dc783abe16838190e867be15c1f8041ee3540e0b9f4b908d066f75c68cf25ca73997d983e9e8becb9cc8043e271453c6e87c7e5f0381c1ef7c2e35878dc0a8fd3e071193c0e83c7d5791c9dc76d791c96c745f0b8dfe3768f337a9c94c745791c94c729f038041e67c0e30678dc93c7113d4ee871418f03e4717e3caec9e3f6781cd4e3f2785c1d8f9be3716f3cce8dc7013deee7711e3caecde3981ec7e6714b8f03e1716b1ea7f438358f4bf338348f3bf3b80f1e67e671651e47e671c7c7191f577c1cf171498f1b3eaee771b8c7dd1e677b1ccfe3761e577b1ced71b3c7c91ee7e471b1c7c11ef77adc92c771f1b82d1ea7c5e3b2781c168fbbe271aec7b51e573e8e8ac74df1b8f9b8281ed7736fc4f0b9173e17440e882f47ffc54aaec78823de88218cf0f24668217a237cde089e2fe2aa08395f041d5f841a17c144116d7e88425e08312f44032fc4ee85307a2108f82000f920f4f8209e7820a678208078207af81f00f91ffaf81f9ef81ffa3e3cf23e30f23ec8f13e98791f92de8731ef4397efe190ef018cefa18befa1c9f370c2f310c2e3200787361e872c7f030e6f031736085183144f83164fc39aa7a1f83310f133bc99e1cacf00fc187e18f080a1847f81f84204dfc2996f81824fe1cda7b0f429a8f914863e05269f42ed51b07a141e791412791406f91360f8134cf813787f42cf9f50fb136a420c6f429737e1f7234cfd086c3e4ef2e3c8f171981e4e190fe78b87b3c087f0c88720c887d0c7bb917a3766bc9b2ade0d09efc6cdb7c9e1dbc8f06d72dfe6806f33f46d027826e433453d1b189ecd0abf34c52f6df04b1afc12965f82e09718f8a5df2f25f06bce3c9adea3f97934b63fd3c79f69fa3372fc192dce24fd19a22773c09389fdd1913716f2c6396f04e38d4bbcd18737baf0c6de1b8d3e69824ffa7d52ec91d47824368f347c240b1ec9e791688f81e4c798f063e2fc98a5ef00eb3ba0f31d14f21df4f11c80f01ca8790e821cd87e83a9dfe084dfc0020d0c780d805e83d96b303f03451e83a10f03f55f06f92f6ffc972efe4b0affc5cc7fe1e0bf4cf92fc1ffb2e4bf00bd97e47b112292ef32e7bb48f15d7af82e297c9733dfc5f85d20782e613c97239ecb0ccf8585e7a2c17381e0b9fc9ecb014618f167e8f828c30f1688f39bddb00161a532c624311984f962654a1c386f4270d38689cd12086b94d4a44173e6033365c81c8d4562d2013b9d4ea7d3e9a4481106813f5f8fb7d3ed8441e0cfd7e3ed8441e0cfd743e0005d4e1804fef34979a240ae88c6cc1b3366dc98b1b2254b0659b284d1017d41dd4fd7e3f9743b222b3a21f009eecb23bed4e14b2da698c1e30e0a8eaa88a1600b98bf78e9c2054d961af0979180cc0d7f1b25e2157f95871bb1615a93e6ccd44069b84e8d03ffa427f8037b441038295d3fd14e7c44bb9fe8924774fb89fd50e913cd32fee1cc61de3067086a3261f84af15385f9e6679b9f4c3fd9cc35d3880f62e1679a9f447c90083f3f98c689f41f77e4e7053fb1e5001a66b6f8528b2002a6d20705cd1404c00729f909a6139cf9c9fce4e0e7063f35b8f8277dd0fcd9e5a7051878f92da880820924680d6fe5366e5120d09e0709209e478ae7c9e279e8789eddf350e0c6bf98985c29bccbf8a5123f7c99c697687c19c69767c498f8a26c79347998cd247e492b0f98c15e70260a3f45f809e70fca6c450d970ffe604b712b62d8cc31d07cb0967b13ad23222a5b43a29e23ae5324f7a6fb2c182e4e83dbe4c32de7782336557f3c5d3bfc0ecc9386c85b61717b5cd749cc3376c7f3bcb83e3cf789f88c95799e0d17c7c46d92ba3241be0acef3f5e477605c1723bf9be152a6c1f3e83c674dbc550097c791c732de9e3af709cbdd8a0f0af3a4bdde4a822a12ee807c1017d72788fb44e796586fc4c49356c35bb5705b2abceecdf521e44231708bc43bf1dd5bebb338b8ad1c5ee7c22d6f7823e0b336c55fdd9eb1379ea7c533767c5e0db75c7dfc8e84cb27c135709be25c9e3e1eab82eba3c78532ba1de49d7870a9c4cbad73e5fa5c5d283017a7e6366d717be4b84f44cf59e58bd65cdb058fe5052c8bcbd8ef7970ee0ff042d5705dc8dfb1707bae5c2721ee0f1b770e97cb9d1ffeea845b254f54de72ca1711f22b36c6f3acb82fdaefa2b8af127e97bc3f3b5c2846ae12dead6374810ab9747e1797c36deae3fa14709f44b8dc91e3af74b8405aae140d9727eab12cb837396e53ecf235c5f364b767ce7df2dd1e11aed31d97403b5c3a3fb7660b5fc4c26d55795df03ec307e92ecf188fb5bb38d76da2f28c39f0bc116ecf18f709778176576acded71e43e1d5dc676785e12d747910b45e5fe44b9502bdcf2e78bbcb83e50ee130acfa17cddb836a3c7c2e10295576ae8f6e8709d0e79d6caf82b019e343fde4a8aeb33e53ef570399df8a21cee8f2457aae7de92b830209e31289e07c5b541f058485cdb249f55c1c521709bc85cdc03b76984db12f3ba0aae0d8fcf4ae0da1e78ac232e10f2d2015e2ad972eb58b93d59ae5311170878a5dcdc9ea1ebc4745fc4dffd716f573eab885b42f045825ca00cae94101717759d12b8b62d3eabf6940df0bc3eeeadcc67a971c9b3c05f7df18c31f03c119eb344de6a81ab04e956d5b94a886e9d26d787910b65e5dac8f82ca0fb8374a1bab83d4fae53084f47dc12ce1b115ddccf6dea725b4dbcae88db16de09ee397be1ad64774af9a2a47b73f25970aeedcd63f1716f419fd5e6494be0adc43c6729bcd5ebdea4b8b0246e39c61b11ab76b83d185ca729ae4f0df7a990a7eb86df79b94a3ab8558e54d1702953e17959f767830b95c573d6c25bc5aecb8bdf9db99c4b7c110eb7d47d51d325edcb5b99b904e2e2d219bae5066f34ab94b8afdaefa4b825176fc4c1c561719ba86e09c71badb93d5ddc27da25d017970e1118f727840b75c7c56db94d315c2025574a787b04b84e6a9e359fb76ae392e7f657515cdc0db7698fcb9d2bfeea85ab4477eb44b92f0d7ed7f484b9f03c08eecfd495fab93f582e5411b70787eb847cba92f8dd069740415c3a4aaa88eecdca670d714b1fdee8815bad3abf537239915fe4c425ac86e74db9e4e95f31f1a4c579ab11ee2dce67f571c903fb2b276ebda89ec7e4de96b83021ee697c9099cb53e7b1cadc05f9a02fee407c1004cfda9bb792e4ba1ef95d0ed726c567954f1b018f15c36d69f03a2eb71ce18d0678d6eef8ab274fda1e6f05c5c5f5363d70ffe383b6b83fc60b35c6f541e44245706d507c562f777efe0acc6d29f04678dc8295f13c2e578901b7ce00cfd9196f45c00582e04aa1706575be0a860b34c9a523c1edd9e33e49b9ad1a5ea7c2a5920c6e1d092e8e84dbd4c6b396c55ff954295da0462e9d086e99c31b092f67245f34c5ed51e43e45706f6ddca6f299c7654d82b79a737d6ef7c9786bc6f0452d5ca0442e1d069eb1039ec7e6f6a8b94e6adc32ea8d54b87c613dafc9ed0def24e89664de88e79247c95f4d717b66b84e81dc9e34ee1300b7dac0136170817e57aacd2de7bc910bb77ce28d2ab8b6dd63ed705f28fcceeab275c6ef6217c8822ba5c395d5f155c6aa159e37133e6b90db224eda0f6f25c36dd1de288beb53c27d72baacec8718298ae139bbe3ada25c9bf1b1dcb83c563c56cf5349ebd2a9e0b680de688c5b32f9a23260393c81982e9d5e1c0bb7a98efba3c895825dca7a9ee7747bdeb84f41f706c76d7add928d3742736d4b8fd5745b47bcee875d2f1f9ed7ba3d8cdc272ab7ec7d11d4ed0cef44800bb4e44a65b99c31bd556f0f96eb34c42dc37c14a54b9a96b73a5ed2b478ab1f9e3440de6a8aeb53c68502ba85e19d005dee2cf25745dc5bf1b3c6b8b834ae13cf2d87be288de7147ed1997b43e2c27eb865226f84c37d71f03ba8cb1d2dfe0a865b2f389e87bb4067ae1417f776fcac322ed0972bd5c3a58bcaefa2dc52f14e22b83d2f5c273f2e10ed4a417162bcdbf041bd8b33e43af9ae0f12f769ea598be1adb2ae8f9c0b75c0c565719baaae8d86c76ae45216e7795617c7749bc4b8a5f244205ca09d2b25e5cae0f82a0f6e4f07d7298bdb1ade0993274d8eb74ae2dad2f8ac25973b20fc159bdba3c4759aba3f622e1416cf1794df95714b3bdec8cdb3d6c15b25726d153c16161748822b25c3258f007f45c5bda9f92c392ece85db74c76539fb222d2e8ecb6d9ae1b6cebcce035e08b74d9e48f6ec014fc47bd2aede4a8cdb33c97dda726dc5c76ae3faf8709fa4ae8f0ef72991fb201f04c6fda1e2cef9dd5605afb3720914c7a553c02f9806cfeb5d1b0c8fa5c8edc1e33e19707b82d78986cbdaf14e3478d60ef92b29f736e5b380b8b833b7098b4b5998e739727f985ca8a50be4ba524f9e36011e6b852b2be3ab2eb83f265c283d6e29fca2a8db49de89998b1be33ab99eb4d65b61b936473e4b8227edb73aba3f75ae14cfe5cb8ae7cdee8f17774e04b75a78fc8ee776857762bb36061e8b8827d00a978eecb25abc130baead8ccf5272b953c45fa570d992e277bd3838ae9392db3ae08decb82d235ee743d597674cea796cdc56026f24e70255b9522cdc928a3702736d677c5600d787779f5eb8380f6e9311cf9a036fd5c72daf78230c6e81da52f33ae22d9978a32d97e5ed8bb8b857f14117ec7ab550eea8f05770ae2b91dfc1706f167cd613b767789dbab82d01dee88c7bc3e1c25e78ce6278abd97326c95b45707d70b84f873c6d418fd5c2bdadf92c3a9e2ffdcbcd3376c1f35cb8b7dd67c5f09cedf056b65bb00b9ec7bb2e497ec7c3059aba74b25cc6b078de14b7d5e575572ed001572aa96a83674d83b73ae4fa04709fd25c9c93db845405c52d5813cf93e0fe605da925973bbebf42ba3f4b5ca8ab4b1a036f35bc4a7cb78eeef6145d273877eebee8786f3d9ff5c1b386fcab28172877a5d4dcb2843722e0bec40769b9afdbefaca82abaa50b6f24e5e9eae17717dc52ce1bbdb99c79f9aa47ae929e5b67de96eb8da678d2c4bc159a272de9add65c203557ea8b5b3af045736e29f44568dc9f2b178a887bcb7dd60bf7c7860b75c82d14efa4814b59d2f320b92d266f94c6e50ef2af86b83f672e541ab7e5c0eb76d707cc7d92e2c923e7b1b25cdc22d78981cbb3c76351707145b729e92a31deaaa97b33e436155dce3abec888cb1da4bf4a737bc113b570cb45de4887cb93c86321dd328397f2c8b386c75f0d706f57b7698127ad8fb78ae2d6802732baa51b6fa4e65933e0adee78c64a78de0fb725c1eb1cb83f52576a766f237cd69c676d85b7b29262cc2da37cd11df7223ec8cae54ed55f29716d597cd6ece216b84d6f6e4f15f7a97cd20a78ab0caeeb8adf156f8f20f7097879ec782c2cf747903be7cc055ae04ac579be56f85dd625d014974e93fb73c1859ae27207cb5f192f77fcf82b209e73882fa2e11246e679c0aa12aead8bcfe2b9406bae5418b73ce08be4b8bdf244215cee20f257443c6759bc95d0bd8c0f325e1f302ed4ed594be4af8cae4df85842dc9e28ae53d62db178a30c6e6d78274d9e32079e67c873a2b2454f54c02d89be488dfb43c69d73e52a8972eb20706d5a1e6b8a7bbbe1c25cb8383ad769caadd713cf8bdd1604afeb5d1fac0b75c17316c55b2d79ce7a78abdbbdf1719b00b83e5e5c289eebb3739f92ae0f1717aa760b167bded0b5f11e8b87dbc3c175c2e2b660785d09d747cc7dc2e2dac43cd61877a70f92e2f67c9d2eb82fa5df25727103dca6e1a52d89c7a2aa0ae1a92476e99cb94a7e6e1ddcfde8a71797b12d9e47c5fd5972a140b8dc99f257c4fbeaef8eb840825c3abc7b33e0b34cb8b73e6e5300771a3e6877c993c15fa5f13c5625c75b95bc3d52ae930ab755c2ebd8dc1bf0b36cb895e089e03c5f50cffbb937063e4b874b5794df15707ba0ee13947b7be1b316b93e2adc273e2e7986feca8a5beef0460c5c250ddc3ac14ba02c2e1da1db009ec875e93afe4e78950470ebfcdc1e1aae9320bc2c1747bb4d125cb6d672cd7ed7e4495bf2565e2eee769b28b82f35bf43e4025db9522f5c1f35f7898da70de8b152b8e50f6f04c17346f55654ee487c1096fbf3ba501ddc86792217ae4fee3eb170e942f33b062e67c5af4ade16026f74c7d336f4582e3c6b63fc5500cf99236fe5c0bd0d729b88ae4d91cfaa727f40b8506f3c6d4e1eeb85fbe3c085dae1928780bfc2e27216fd93281727c46d22a40accf5e9e342ed9eb509de2a904b5802cf43e09266c15b95b983f919c82d5578a3049e30419e97c1bdb1f92c3cee4fd28502e3199be3795c5c1f23ee9324d7e7cd7db2e3defa591a5c2027570acced69ba4f08dcdb93cf8ab30b737fa8ae94923b1c1f64c4fd19ba506eae0df9590fdc9ac72f22e139dbe2ad869eb536fe2ae89643bc51958bbbe236252f4e91eb246c9dfb13bb5048f7f6faac313c14ee0f1677ce02b71cbe51ecde12b94d06dc960caf3be18ec807997179fc78ac2e1707bc4d6dee4dea3629707d92b84fc95be6f146719e31429e87c6c5056f939b8bc3729b58b825015ff4c6e514f345709eb1029eb774cb17dec8a82a86fbe3c185f2e27214de16c253563eaf8eeb03749f3eb8f562e379b78b93dda62bcf5a94b7cae35903be951eb7bc7aa3252e5b70fc8e76b993c65fd51094c1e551e4b13cb83d54dca7f9841df0bc032e77e2fc959bfb73c38542e43919f8223497ae36bf7be059dbe1af5ad7b6c767e92e900357aa84aba478ab26b925f28d68b8b7292e4c895b3c6ffe0a92a78ce77979dcedf820268a66b8b3bfca877b0c1f24e549ab7aab30eecfbc501a5c4ea82f4ae2ce7c5f75c82d5178a303aecf1b176ae8e29208993fa8f42a98e9219683108662008661281453ca20536a0500f314608038201a0fc8246a1c2469d70314000d4d96da96309bd2520c858c3106104280310000000040404020006b8681a21b248473a4a0b7e247171ad57212a864049ef5783bb11980f8930fd81ba3e0aa1ff694b5c2bf8647f7696bc1602013df2d8798a0a57179be6fe0f1dee152da91fe8208fb0aadac8a09e453d315d03f147350c9d78942f5b90cf5e0217d3251a278b28da7a654740602a2bb04ee8df8db0db95414bf69dab2f56b6cf85c8a6d51e6954b2cda8fb6be2c62f5cb59f514d8ad4674f0388b2181ca81adc88cf834d1912fb11e4f2b12ec0897176121fb6a797e69b399131122e07f4bcb5b3676a60422628a698cc09129b0510b6049ecdf75019a4c6d81b02970b92b41b59d727364dc58c1910ce8574768d692a0a15eb60bcbe43c24566ab111ec96c165f6e5fad4bfd086e94d1b9258afb4efd3cb1a083edbb30240890df117f50ada2759d95011f58996343aee005dc82549650ea6ff67c005d31f99d0d854c3f85c3a620e3f04a9b32aa425a675893d0b042521615f10192dda53425b430af643dd6b4763bc28a15aaa11ee64b7ee762467c4a2e77b8639a32db9153d8aa276eecf911e6c9ca0407c00c93f1fae55d8ff306f0fe31b8d2959519e928333adb761e27dca664a81d122322141633c4bad8bf0606e68881cf6402fcb922ef658d32bbc981a9b05fd296cf55beceb078ab23ca855f046305f5ddb7eeadee0ea516b9e3829ace5b8338ca01f4e49b72e40ed23cb459330fe5222edb3357f3b806fd205fd8271f2e622697ea5f6505bff050475e2fffbc47eb65e6407f32bf9d02434f7eaa8af126039570dace33f2c63b295c075abe9cd43a260c49fc10f08b731d04fb36aaef7b14c11f4fa584d2c5d4f4d689745922503480c1dc93a9a85c26b158c125e4e8df20c024af22613ebe72b2192e92fc4df8940cc81e619b16f9d26d35d11901d41b9e1ebf21809e82241a2efba08aa34b95ce274c93e73f297f9cc636875b2724e0c805b0b2f52b4676e5e46ed62197476442f0459f038818de303d873715fc5a74449cba58249078698b3f04a197dd30172939f0ef40f8e9e220a5d4c7748eee0f8f9066fa175ba2a49889dc56ca00e421b691d9837993c85623fb3195cec6511f125e8472b99b57c55eb43e3e6887601e8f481eaaa5d9c9e951cfcf5c03ba465a6317ac1a89b60eb4c65a1c9c5828e5b19d27e041395730832e82e891c89dde6d0e435d5e37cc2e6f354e9d7fdbd577d68b2ef79f3c8f4221522c07060850ad26008811683886a0ca0158d4424bba3a98ed60e45b5a72bd6b18d1785901c9eca73bb57f5dc36147efee2ae2e987a02c999a8b7cabe16baa8a3fe651c2ae025407839b74c504284771ad9c1b01a71e7426fdbc40544f1df13971e45941b517454be0260f0dbe860c436568da41b01d713c56125210ee0a14e0a7ec2a8bb5fbd660d3ccfc685e77bff843864481be06108b68ae0710ffc60f7f605143b3466c85a5df62dd1a8a5c59203063c7481d19b1dbfcb10583056f4790c7ecc533582764481d9951c1a4633ccca8dcf57a10470703d981ab9854f7535200d295f347cfc0e00c22787cd982f4c8c8c9e50fc08d717fc32a9cf1d99da14f3f207c58b8d9bfcd24917dbeadce49f4e76b1c9913ce9bb1ba3dbbb58efeff61c1de66205dead32fa8c8b1d8ae54fe7ce39d0d5dac138aecfc01d0d2c3eb25d97b9d827cb8e301ae11d7f291e7e61d065660d39c6924a3e5015b8242882e4272fdd3426e0d59d5975e4f751a322f5e85061643fadcd7c5cb6dfdb473c2e584360db02afc9c01c3373931d7981b6a8bdbb98f6f40cf5f87ae717a565509341b69a30208aa68b0d2df08c91df12500fbe88002beb678dcc2e69a7194b293a3c7cd86d0eea912cee5038b28c3d194eb9ef04bcfbdf851cdc430efcf6959335758259728c34da24de073a028cadce2204e29dd95cddb18a88256a68caacdbcc2b32a40bd17b845e2a3a60b69b1d139e4a7339438f0dabba87113058967a21527713d5c30579d19b0010f582846bf1e81a57a5122475e23237e841bfa688bf2b714ef9f7818958bfa708b89f8742506d846638c37c8cf140d250f802322a6431a6a03b5e350e3569a8dd10d755f4b7e25cdda07419f3f4c7ee494d513e4f6b7e47ee4692ddf4f29b03f2bd3afaa59b59d0fe6885db7e0d5dff7f796012758e518c6cf92281c0c8db4ff84026aef5e704719f89dadc7f9a3c8e694ecb1d6f714d139c771e4ea3eda75e80d3a4b328d22aec077372070299fc0f07327bd0320959701e64f20bded634a504da8438403cac3b1c478447563701d9da670b3f0304991f3a97d02c7fa94238643af8913d6050c9ca3219241d371bbeefaaba1ecee00094614ca82f0026a13d63527647b8e92f70c4ed927fd8211e80baf241c93afc00d445a0f795a3bbd2529b265711c0d774c31481396132879c231a19c3d53bb94ca0113926b5c895c04428b50d8ad6ec4d0f79c427d8a5ad9a052164f2be5a001f3655a116ac738c60d1825da6e172d128438c3a7dc2b57d3e77b456392411f68ffbfca457127051a0b85b039c790e80baa165c0c94b3cc3aea0a7ecab5dca90b6689d2c96d6e8aa4163d6fe0d9fb833ef782601982dd47678943e11268e93ae3dce26d819994220c4168c99904c879cf24035daa7be4cc971fa3c4889c2067af4a5b46696028502013b8def26ebc0f2086d8e67209083f9b77a51143bf895e45a652552613660428897f351a08e59530227dc88570d3a5e9ead0f65e1ed13dc41b19b7617568455144c5833673c90038a2df9c83c044b09086cceb916b23656f6445d25c07679a6dcac3338428357ec929264cba0bce50a202a27f90e2453911650e0895dd8acf5351d9a02ee9ae588dd3a80e2da26e625663cc302e46a291896d45efc2f91f38d19b61175e0fbfe5891221dcbe06ea3d1c65a8ad7c3e9e24cc90bf8df91eff8cf7ea4ca18a65f9db490ae69d3895e65b5cdd5c1f8880bb63f629a223bb7365ea01f3580dc7d3406ea8f1646fac5831823b1b252f40a25fc71320f834fe0c3f03183fb28e242c35ca611863895c280568ebeb2a849905a764e32b33cab8c23b8ee974c424756b43ecd1db587e8d40b71f25f925bd87f292e16dedbcdf7e2efa68e28eff54dade456897fe420eba706e45166845d0cb6a5316459954a08efaf5ca246bde144aac41be222b0bd843881569a3033a2d9989c356e6ebb70a91e3855aacb42f66b4759fafbda97a0a5c4aec8697bf4ea17d2ba1cb5abb69378c14a4c2a8dfbde1f777e2763c15fb0d4b09d9e11f29d63062cbd1565e1e25416a0900d8e8469e089b2ee6cc21fc8d11ba3ee068a2b520c841a4ef967920b6c3d6044fcc7c17cee4288bb15e33dcb520a77d8bd894b42a5e665fcd3fe7f9b2e7382be70811ad960acf1c77e8b8d9c65ebdc93608643776f65c4bc02fc594c070d3a6e642bd068b87b973e9ae434fbdf85b7f6835d744e98532625ea5f84e5446213e3f6692afc80af4cd5dbe5148da0bcd65ec599670b1aac0cce394932e93109a9ea3eec9ab1bbc4c89cb12e2c2739b387d707810e481d8b60e2efafe609bad13b9ca3d67b72617bb4bfebf43879059e34fcef460e8b6b0b16f5a07676e0ffa13e47404cd414dfb5c77bf953eddb5aac62760174671af9da180ad684631652a86ef23a8eb642a8a1b1ae948d6a393e0d4b6ca7c8590ee5de5a2c9502a54fb1a8ccb1a7647cb579da9dc61ef04f37932cfe4b16ea6279a287a94840feb3e5be15257c3e48973e0c6c110f0b5373699270441259418cb10ec5df47e7f5da0da43f3dd3fd9c64cb504788e9d1c762b7b84ac7765a803d6b411cb89210695adb6dea1f2ecdbf1459be3ab35fd89f3ce0e3bb644d1b1c44065e4c5366b08c6da540caabb8e37ef268f966f624c3fdc43d0501756cdaf52c9eb84fbfe231d24361b2068bdbd354943226be9298f5dc08fce3505bf0f165ef653b90543e54a1eaa4054ea41aac629a844d22ebc6f1950567eb21e9cc30e1ae927bf93fedffe3a1c3c397b695387318321d80c8cedbe198ae8ca3e13e5b47b9d9a47161b792e15a60c0b3f03aa59c6ed2357bb9e7298bd0f19681716652df950beb945c2abc218356b77f1787197971a1fbc7af2d3a73d70d7a8f21184a8878b6e6f1c83b80f308a3e0b4bf0d0c317a675aba1683f4e4189b2079674c18820c4e2ac084b67ab8fe1884dfb5595ff454d0d96dbc458b0338d53e2194d5fd5ce5586051c8b6c58cc061640953ebc594ff8bc7e97f911939f26b2ff71cff52af3b6ecff7f7f4fe5f35fc59f796083582572a53157ef4237a20696f52fc3610f1e8c9909deb798c0a01a09a62707b1ad522f1ed5518507c33d8f27d1d0fd3dec563757de6f92c4ae67dc5fdd0b29ec929cfda2dc34886282dd1f6a9649aa690ad9c9f1d146e41d5a61504ea3c9379e4ba897eb6e248a3b6ccc82f697f5f99e357544869d408eb0a7d883098e98fc638ff3b33faad88c9122f1c9c3f346f347e1a4f588c811d9f127a61e36b3d53575272461252b9becbe04b1f7fa6e319d14dea55d1613c8b68caf8eb35ee9663ad28bbf628623d14bbf6289edc5c0032ff5293db401b915a656c61474fab61bdab4c44241d082ac054c8deeb863b0e6e6a8823a4e8d24d849a7b4ba9e38db9deeab6907aab183564daeffef0beb5e9cb4e90f908726620c9c35320978d02f922534b1e6535c9744eecee94eda269ddf656e9d963423b0150ee756050362044f6e324b10299c9179c4f4aba7a7476ec0c1b11a8f960d8a1a8c1c39764cd916b137cb4a7ae699a6560c4db855537b145a6063db3808a33dacaacc6db403e7031a7e6e6742634fb0bc3dcb1b8f98af36ff82ce36c5d4367b8eeac07dad7c3bfb5d1777dddd84a9730a4e740f6618ddef3585ad99f4570f2f8f6f6fe07af261229868703dbc94b223ad6c7fd36bccc315745706fdb85d815ce5774bedb5657e721a4fdf7af9dac39cf60f3bd38fbcfe06f6d79bff50e33799f04830bd8d0c493d2cc99d48f60761683490ef82026771379c34714b6c3d3c47ebd800313f3719bb8ded5cf04f4cc4ff04b5b13d0e4aa9eef7d7e684a9e95efbd1700a73794d4f9bcfebd7bfc318027fcc6dff861dcffe228bec4c4ca6adf0932aa4066b53fea81c97fab843ca4772e6d2875e08111ff5ef2a8d3463a8f77dabee519edf4f3d8d77cea537314db579db8de9726b8c3ffa4af3f909ee8c7c8fc3b533ae3c6ef8f4368b6f6d6d19e1ffc0ebdbf8390f7b060e9a377f2fd06f2ad7455e8d743d635a8f3cf206d51c666da915fd87b093cb9f7f6f12af5d971969abce786dfe0f7e7f0eb4590b8d7d5f8be9158f2356c43f42b3e66e86e996bd61f08c9a90377edad71a97df8cea2a7069ece5c2391ff8c29758dfba23dc4bdf6969925ded1b5c5f9ecbd4c3f0636d22bdbbf9fc1207bed8f2037304c9cd64df206eee7d9d38fa113777e4d1cf2df834af92818d7e2c0ba20fd5f8cee3f07c8b54e8217168986e625a11b4239f56159ce9142db12e3903ef01de99708af789a555e215c4fcc814e17a7fb9863e37ab64d5e9f73a4b526583722162ed9c29d71d73cddc001df2f240ebc0656ddcd2ea53c465167c365e9c7b0ed3cb84dd7521fa1e061c5b3c9687cee2d829c75c517eb76c6137f7cfa113f680d89f9bf3ceb956cfaa435a7f464491c7f12c45b18cf3eee65e4022e64ba58c562bcad3fa1d923ede95d22a0cf98c6df9773cce5e3c878ecec7e50cab35c741fff6ce0efec09e25fe7c9e60cd9416a4af6e7fa0b763b7b41e6c92a3a5eb1948fedf087bdcc7d18caf177ca9712a7436fd2510a3e1ce1903cb2f1716a415fd687ad2fa2b35527507a2c28fef996d67a9e900fb847b9e127cc7734d6e7e923a39c1a3efa5eb9be2d7af33c762efe17ff4406313ed8e194d6b3037117b6d6bb725d898f6858a7064702afd56ad31e36cfd974bb9fad5190b83443adf5851d6ff7fe4cfc63c8072adfb83f56b1264addc340e4743c330189b598222c37d8c7f2192d982ad247f9d23958ebe867753363fdcceaf3522efe6105dddcdc531b0e12e5223c095c1e8e3e17e4901cf8b81cc16f163127c29d2fee3cdf877757c046a6c4e2cfcfb2baaae3906b159408f366b95f8913f35bb8fc9c3b958955ad1ef97ad5dba6288e1295a754db26de6ffe76ebf22d0edc5fb123c74bb8bd64b54e7beb2eb51a50eb9d58ccc7bd7a0ff998d8027e355f24cdf86514ce49abfe6deb35a37539cf078e9ba91372a872bacc3622925d18fa0af36164f3038fb9ccbda3f581435f74175496e5e9a4b2aa1144e3dcc639a3e07c956949a36bbeb7ffc609b7f013bf3c679560b5cd111c20106e78d39c01f49eb0f4f0c6a07f0759e91f64df47a846a0b1bd84ec7f0aa1ff0b7535bd714dc7de333d9f6b3a2fd3eee126e49e46bf7f42cf9982c6ec56bb973fccb3bdb17fba978fdd9ed42875bafa86f1e31eb481ed8c0263448454f91e91c858e4c6d63ead295a39a9eecb91a5cb56f0af6794a7374febbabb92cff2bffa4c7af2dcc7ecbfe5f993f22d1b91b6017efeeb549093836b53f68826efc57c27c57fc963c60a705f06af4dc91bdc015b13b227975315afdaa603bedab28ce533711df071b18d97d92c82f4ca4c7bf26e9a999f86e7a970706cd29b6783f1b055f83f66f610dbc58648c2f7d4be3b65ff5ecb9930360383c773fbe0ee4f98ceaa357ae1c62d55f6df0a56cccaad24d6fb0ea3856ed142441f93b4dad7661467f0b8a337e8291ce050ef01ed1423bd9aee281dfd08bddbb1143b9a5e4f3922758786975a3c37ceb172bcf87c62e45f1993e10d20d15a91f1a207af95e22bf79d41fe5958533d21c3310959743463e1b33bc62827bed5fb5ea75f70bd08a48cb2e6c4a9bd64989ae0033b3e8b03fa7cd3ff3be7275975c9cdb621339c596eef6f02c0feec1a6b1ea3bce5118708a7f6662d5eb8f71d3f08f468b30d6ed9fab9fa930eac1f24b80480afbd6f4dcafc838ce79f44cb4b83abdbb5e37b275716dcf656a53ee2da9e766dce8cfbe9a96e46927be4e6da82b51e779eb7a9cac121a4f21887be70b8fc45cbbca27ae567be9058cffdecf7847f697c743c8b2fe3b62ef7171fdf9879a7644d001b1978501d342b60ff7510ba85702423991d8c05e4f94205e0c4dcdeecd11dfbceb64fde5c94f3e50ed6cca5b4b9a388641ef638b7cb367878a71eef9bdc421b0e68ec6c127b5ffdc4bf35e895df193549d62f09e5e6e852a58c2e746cc707f17056ef12ef96efb108139db2c7a836ed1b98f3f0f10f7fc7a63feab71a9cd5fd7dc701c30de78d75380e8bd07fe39aa97f43df66ef461b93df368ac573980d7320393392bca16df6de5ade7b3ec2601b6c591c2bb3ab3675d3196f338e231d4f717d439f2d191c1f716772f3f8e419feae8bc1bbed84373af2fbfe01de59ce60bba1ef917a8e5e5aaa3b7f374f2cf435374e5cf8b1b1f048f39928b7faddddf902a6bc4d121b9fc5cc05e25fcd5bef776afc62eee1394ffe69c12122931f620e46707b723d3cc0dae0f710be2c33ecbd2effecf2376471296b361ecd6efa11dd9771e2f81dc2ae1911c38971fb598e99cff377dcc3c9e9a7c1618dd9cd4f9e0c291d3bb51a024799191e1f11af0cef78aeccb3ffbdbdcbbc71c7f7b1dbe3b33f41e2439b33bb05a3e3342233bbfd090b3bf8cbc0c5de0d924dc7c06f2cdcf22878ef98580ae2cc9c0a6e3bc17845b31554692ce8f516e4ef8261599340f18fc114f732382d69432c3d233250d47b1beab9678f1bbb6b650f6aea7d38bef5feead1385cc856f8b63da17a2fa8e9b4625a2f1b37ea9a2f407a931afcd960e9338ee5c130b79f2d7cd1efcd84ffb9621ec5e978307a49b9ed0306e7da70427d0677ddf047dcb0e3d67ce856c330b1da6f92fe6478d4f4f4d955e8aff96777de4ebfcbf7d772f8f56390cb493f2f94c1b8398c6732eed9d81ec04d9adec61d79248a453c78ffa36e9ceaccf3a3e03455cfeeec73977295114be307cd689a91611e2ca8c6dc663233e0c5b22a4fd75096a11e59ac82895ab235cc53f5f38dd3e1b7978ff8409bf6bd0bf9b90472d78617698da6d2c9fc4aaa9145992d97c975791d50b0a6dccd302be08bb2291ff5ea84c8e35fb99dc76c7455bce860620e894d43793ab4771c0937717b700efe486b7cc4671a7c898f13d3f17e9836a59fda02b1c199439e6a24c0c02d4ab966ead5ac2c12955799d1926dc836da5a7d458d7b4f953e2baaac2a23333bd37487072866fc5915e30d1f30ebb281e5bec4e05ba5cfe0daf6b7d4903e17c4df1b01efa70dbdb19c19414fcf913e31fdc4ee2ad82aa567da8c326e4b4cc62fd29e5b6fdd82e9f644ed3899edaba3b434573b60c9c3548e7bc9ce5cf7cace42c7b96bbbcfcf1b7e31ad6c9e3163e7bbaf79990d071a77e7296426beadc48f53cae82103e56ea6af52e5d8a0373078bcb1a95e76cca55796788ae9d26e0d20f93ffb60ddf4cbe5113e6e91ac5dee7cc3407fad67c8e76e8f41a977f027bcaefe239ea7f1edd68a7c75c5f1975bef8a4ef079e2a5b37c12e0ffc8dbd71bdc3b5d31f18887e126b30319c8bc07daf8e40725ba0df8194d0a7268e097a13744a71f09bb50e46d3c68785e4cbf1b13e7553ce0bc2f0ef1feeb36ff7704b0e6820337fec0e9ddb789a7bbefb73dcfeab8e35eb34b0c3640e11fb6f827c47581a110665be8385479e9fe47fc6318ae61f312f617f8e64d071b687f8f4277e276cedc9d73cd0c5a46c9310d54afa6dce769c08e02b5f59d20a7aece23033a230558497a0f74436ea6c176ad3fa7b82fad78afc5b9e6eca6938e3d7cae141ffdab8764a2fe77d10dbbbd3c4f28ee4656d246d1d898ab12c047a642dd099d853d565b22f9595bc08db62d72d7f116388fbf19f5cb7ee3dc3a534e8bf7543bdafe7f5fe439bcdb6cf8e6953e7a7cb8d33e7f76fc861672d168c5fec56dacdea7a107c04c8f442eb5c6571c34c2cc58a5c62e72f65fb24c921b406fb90022f188bf903699f86c30707f1aab7fc5fef26fc924f26ff5e78d312c0de5535acf11c3515eb5dec584eeb7ffa8f59383c1ccaef2ccedbdc7a1ccfc4b6ec02619849fab56fbfa3bb08cf04ccfae47fed5de6f5cd09aaeca8ee4f77c34b18361a1f8bf6ef3126fb65d658ac26de465eaa0b0f01dd7c15b2d7fd0f367a28a935a3ec870ad0d0bd5900f0f7174a9ab8af02d58899a5e7b2080809c15a54bac9cab0eebab6fcd20a6f9aca756e6b6cc47f6a8d111d863146e9406d2692fc7f0663f7661db6ea3ee10155fba192c191986c474362d662f9f1d0e2bd52697a1de1939b7d61d7922f20996fa1973a24881f2c83a3a516c435f7acd223259ed69af49791deb8e58cd81e62e2f1399d8ca18af93ae5bc25c170c77eda8b4db5ea2d97240502c589b589b33c74d82ae1fc5161caddb7bdda07b5ba7d376a8943577c59a2bbcac1f9f617d66748b5d9f75ce7da830f31dfa3ae30a02795be99cacc458a04ede62254d32ab5dbf6a8bd43ffb22a9668b66a2ec4074441cca56a0b33cdfb9d6a1d42bc3bd1cd297b20ef13e9a04aab88a8cf6b487eab841737497d99451d12d6b3774cd89a35a32e8ed6961b09a35e29ad46629f7763b3df3096058bfe1c9b55dd77d3f4f695fbca52b5ac4d9b53ef69bbeba0b0b666a5ed4ed657c9a08d9dccbae57d22876ec8725592a4b25d75f56662c71429beac2a6ccb5d20e8ef22d49630339c26caddcd9214e478b14de906192490843cda1b16d0aea0a7a55ecbd7dd9a6a39e18d5ecc03cda984df1cd8cc80fb79e2d7a926fd655ffcd814b2ead1193d216bd2191af69f6584d2e43751f4e83a99b3b2eaeb093ccbe3b3af1323fe0216b61a519f641695db3f5d22dcadceb4bfe18b23866e31f52570dd4a2ab3254eab58889c2bac4311e0393ed27ebb528d09798fd84d66a59ad9824dae8328bdc691119cafba66738ee646bc9ac334acb7a490c17bd5e5d1ff156877e614659e06c90ba87da45d35c2685fed645d6d56f1b18ba6eb68ce30e7ba5682073861ae2aa35eae2be25b4b4fb1f9bae9ddf82d3cf1f22d79a66d4429fcddce0632265e42ec50cbab4d8182dd15a2d4a8b47225dd78f7922549b7e188a71fbe1ab4bcdc0f9f0d8c711f4dfd52d5ec5fb24a75e9eca5cd67ef510ec9d0237172e35ac7337df4d9b468596b0b430fc5675beff10ab0b19b545876ea9e2e74ae339efa33d9c23eb1b2fb2365781617d46ec038f1c16ff35c6a86e16f8de484cc91b35fe2dd30c8aee5ddbf9675a6ec4fe815d44a2480e12ad0e6cb7626630bb09b2ccddfecbc17b3def9aa89bfe80620eb261c31e92d11b7647231c9bd666524363ef2f014239c3287565b111e56a6487c0d53ff7dad7f8feeb9541fd81bac0a001d5054f767193146d68a3548dcb1beb98d00824af5503210b6ddf546cfa014e0838e7372367d8caace92d7c724136a96eb793aec8280cdca7516b88ae6fb6403c98bd33bad7e7a8698c4bcbccd949c4630c1a0b239a64528d7b3cb1ba7a209c2c9543b5462909575b2ca3762d1a48e8e9333d8d5707bde3158f141b73a6a2d30a2786737f500389c7fdf9cb2f8973d03cbea6c0d2f38cd89e1b3d1c85998a51e3ddebf8d6ccc2c11127b7096782159deb3d13b6d86b3f4d714e00dc20d92dfb81290a5bcef154ec0f77af40b1c246120dfe5aecc46ac5fa9dd1770cbe2e225373e86f6bd6b5a92564c1bf4667739f2bce7aab003872896b7f33111f8db1a03a71e4c2f0dac48ae9b2d88f25af344e9c3facd437fde79a77390d456ffc4c52288a20e02e2271595f2daf6d07469dc297a89fad063621c5a7395c0ed551273acb91efa7569c1950414e496b061feb50b57c81c3ceb6c87dcb9bc7cd7c960220a619e6241c8aa9d8fade929dafb5bb4b7de66b0e03b75b098b3779d6c243b92b94e1b60fc60fe9b3208b1280ab6601bfe88cf5bab1fd050190141702e1a07730726b291bbea55a22f1a6be54c670102ee968349694af1ac67359f96c0ecd63d6e451cd328e3cee2885db44d93f8ab8907800b7f5ca61ac04cc5488d2b54d94bd14a36bb871653a88d145f3ccd78cbee9bc03dfd8729b757227d9cfd7ad764010437b5cacc65b84a0ce818ed056fc40dddec1ebb156fc5af1d83d56ddb6b1b5b3d92ff1d20e670fea78588ced11cb9dc0f924d1ed3f1613bb7772be2cccbe3ab5edf4ffa16d3e33953a5ce703444c8eecb676cbb1deb84c6537e5036c0128af366eb6760967c3ae2323bab05589b50bccad46d6268b2b684ff8a3fdf2b06a8252f5020cd349140f13d667687384af1864ff3c725a301fe01f814dc64916f6c779be9fcdd74d3035e2aaae9752d426bfca89fd458c6d374e26aa946ff4320088edca68f76184e4d88e9052161c451dab42aa5f323188abf09beaa8218d42ca4552b13055ebee4248e286176b24b35b12b6f448cd433daa922c08bc89b1a5bc41d04ae9c007f775eaaa1e9dbb336c781797fcde05d859fc70cb7acdad3eeda8c6fca2f679fcfdaf11b399c42f95e51073ab683de634c552f1043dca8d6e1d90ef12f7e0e05354092b6698ef64cfcbf7f4e455bbe6599c6b3b64b82a93ec1d9a780522928bbc2392159da116e0e545d961fd5ec9eaa4240e1e83dc45aa14222d5332640572c981e1fa9046b4b2c7a7c1d3ad0c205f8acaaf2c4f1f04dbf99a62931575ee2e23db2b5d5be1dda39d2f21e98792158b63feb28c8792f752557a44cecb013d0c36b955e199b8080b59963df0c39eed71f09669620c8fdfb0c206ad549e787614197eaf70255f1ea2b0867fd5ab87a1e0b5e2f375bf61bf0b61bb0b6122c83843f27a327396c84d8360a466414f2c90a501fab8766250c09fa284d7f61e2e8eba3e0d3b56c4ad5b54b983c65e45f183f871915851c623bc45d33019d3de91b014d89945b580cc94231c9e70387cbc85823aafdf8294d8a54fb95dc2976b746fdebb84909b17a77d36a685a027735524aa38161fddc428c85629faf6f91f84a948052f88b9988a263a4d8d9bd513db7d045d401895fcfac62fbc391fe699688983631dc8a2bb4a0f7d912b92bfc52981c4a4202f0a314105fd841e12e9b080e155a5e58ac27871fa0899248ff6f7c3d076bb7fb0501fc639b1afabf0a8205ec9d7ebe5ecda36a0534c7e6bc62ec839722199a5723b70dd6da447c89f94e1f40beb9a96cfc26ec2b0e18c468dde7f2c64443c5e11a40da55865c2a1178530f03950ca02562525fe659b56970c6eebea8774086b3b218e80f87b9e18ac7d4778fd598e77a5980e2ca706165eef7a839c4b4a3d9372bb0be75cca351cf2c1cecd7c9437974a5858ca9502c49ee9bc18fd18b4b6d67882c2b7aacaaaab0c08bf8f109d4bd7fdfcaafc3e681ae632dfcf3ec1ca03a21555391b9f30e8ae31542e0d175e98bc21626e118a89d9bad87b38bcc5bdd75cc7a0b42fea714460f599e28aca5eebeb523b48c2d98ab28cfb6f6593767779c6a289fe4f56a3519bfc52d782ea6d42c40bd6f2c69831fb4dee793395bbfa243f1afeb1ab3696e016e9c86392ea0bd08d347ca77975930652642b502ce46e8a8c8824b02f53ea064a80fca2922043d1eca42466ff878178143f96a67d0217d746a4830979ceeb1282f72fa8020d88dffa0acedcfbc4d7413fe0223f1fca7b11e9d307ef7106a212c14eac575b03e6894a3721ec49d462fcd200d09185a20970047f8fd70b2981a4fd57caa3ff4f9f1a80af91442143e33211eb195072273055a1aa868078cef0af1e40f3217caad2ada40a44b5f0c0be0251787ec26b484b7a3061747a808f40ffd2bdd8df78c2526ec1b90b5f5251c7f21be7f9cdf960444ceebd11601d477af56fba1c18191cc557155e0708cadf3a13b73898b5ee7d5345a141b307415cddc8ce00b05f2c2584986af597f59c2d762782ceca8c7a81702e4ff29f89afe5c458c80dcbdba6f6630f9a7889e0535a45f9a308aff5dfbc27a2fc624cd7737e2861cd7147a7be96bf19e233d3af14545c275e9fb2ccd95f2fa313d5f68466fb0abf0e03b0da62696e505f2391603b36c49960f9bea73b01ee234c1c80b0af510682ebb9171290159fa57be8cbe0060d0f9e00d4ad21bc56703f14200ebf1bdb529acc5ec4364f94b3822a76fed97ffaf93bb4d187161d507d7126c115f65ca93c4693a0ecfb70754683beef2d550f37c71caee1f8dfb315aadec6fe3da30d350b6a09113a10b55c32f84bd0ca221070580a69c70f79eb0c06263feb854a5f347408f3bf50a10f7c2ffda86b13f6c250dc02ad69f1c84bb331fc510835a4a75f2334be114e2e31ed3b9e4fa13a8e85bc1700b3fb4fd3fbffbfd1084ff18da03381845a0a9e2b3cbfef499069f4b3a5e7160fa8a654c304d8ac5a15241486a837a5e639c19fe5f9a2c2ff2c47f47917faac0e8ee30ebea7da3386bbfd0501e6f0407a5af4fda01ac386fa74701cfec42d6ddf6cc1d5690f9931411e80b507e8b5aef3cf09fb37bcc4e7b7a71ed82732d0cf77def3376e05b48e5ac150e8732ea09027a37a562ba2f41802ed19fcc789035b1efee228d7c5f1d5aef31faa31643988ee64a8a3a040dfd671c6bca00b9947c84f559e6dfd1ab81b91e52f541839664cc098ebcc08ec8a56437a020274309d3b10d9a7e43a07567af7ea4017576d00bef44b63da10708710530bbd9b3dd7df1ca8e3dbfba266c0bc26d32244a9532ae7c2631dbcb62efde9e634c262ce3c253d2d1b775b75bae9570fda664bd9e33ac107b29309c1c394dff649d2396658dcb4f672b5d5eb030fa14e8fbd827c102c40b2d1e9b94f630f69519ca6d93d8756243d4b79c6694607739ee4f7129475e422b0eb836141fd61101b8a3bae51c8d0f23388bf3b68e96c98fba343bdd6f9322a1b725ed673d34ef3f9ca79682620e30cf4e5f2aca4cd99d35fe7da3d814bf059e715d7b121cc8c09c37ea1c21fd23c55dbfbe579f7ee6fde2f9bb5241ac51f7e9bee41337bceccdf4ad8ebfaa52353698bcf2db3ef097f6c4d687f0fa9006aeb0183e637fe89c788b5e6e6869237ad51feb99fcfc73b4e7a89f69937a4c1cc59fe0873796c0d4b1362b85ef47a69d397449bb39f2aaabb3e1edcf571eb164b3ff770f5056e1ff3ae89975b6c7afe16ebd11d5dd2406e7c1ea0b4c563ab05a3ecbfb076bfb0540e4ec4be96778674adb1585f26de53f8f92e6fb87fba75c3255f04f6e3069ff2e9bfc07ca725a119f6b87eb0f5f624fb824eb3c8303b8013e39717a505866387571dd71808fec545713f24fe5b0fe5ebebd367bc309fa36f568c7b783978f0a479557f54beb4381ccc1eb7d374e3e544391eccb0711b1adc91fe7693bb2d7cb8369831a58e8874f5aafd7c55beaff8c2866feb0078969a98a302cd18d86a9af1c9a4d711cd67704fb381f5817f742c7728e95e2bf6eabad2721ef70f5f36ac5fa2104a36e4d0ab34f27aaf1ba88b0f9e5d7befb03b01db2e48c6c46f67c1a7dacbd9c6c227f180e9d2e6ee7d671bbe11e14b1d641d59750ffab238242d28bc1a9b50cc1decf88857cf16375a3c5b6f5176dc0e5b1c6b3e9983c7987cbae9f1b624b28bc63580cdc46deaf99c79f54d999b7308d4f6033eefed2cf3126f07f02a9154e98ae290a103f5dc2b1af31b2d6b77ab579b507e05e818e04c38750bc06a598726356b2a928e700bc1bc6bcc919ba709bbbc0ab8f67717d95967745d8667b48f1b5ac6eb780fd198cadf2ea3a36765706e6cf668aef18cd9dc836e3f0c1c7c182c782838f890b37f1c1af31c59ec644ca479a498877ad90079a073c0f2c1b28103509949ccf849f140b2637ee8ceb279b5a33dd2cf259cddd6d83482d8ba8783f12a1f2b1797b047d8669c5ff7cc9a10785890d60e88c2e233331872cba5953b1d833ae1eb5e401758568edce9984837708b42e4f32fe323e4bda1a8941f748358a2ddb2abb96bb354aeb9d4f4bfed9fadbd433b7e1e5ad0d6075cb7adc5b177a5607c7c6f6e0a68f72ee6d9d2f5846a17896867fdfb86b6c3ebb99c85533c8c8f2aaca194216f3e7635852adf46710de8565b6fc86246c1e52df62eaedc3be7bbe4988d4e8c62fca35c911576366176c2b1b8610aa076c88dff5a2b65bf6f7c802aac80dc4723ee6f28a86e24cbb2fc37e47eb0b8b7921f90d748c8f54ec05e45500326a77bf530555aefbb40b648b15e319805c4bec368bc5adb0b8617558caf52dfcbe6e632703198b2236308991ded72111dca76bcdac1be872be603c09287ad9edfb7ad82f4dbda91586f5e607670b6fec90ef1ecb7343d6bf58dcbd8f9978d4dc81b8c250bef6eb30799eb113fd5a6bd0a3317f9a3cd7b9670bd87bd0a5adffa2164b5832f363af320db6d9898d8c3f93ebfd8e800ccfdf520751c952176eb76fc2398c659cc665d33c62ac6d1b2ac09dcbc13a70bff4eadebb3668f64f9dc665ef00a744e0b8b4412b8b328a3ba9d8bf6e067f31fff883c618fb32e8dbaf49ea1997f62d999710f0d6785e34e7950bc7ba266dcddca45fedabdd9b5e43c256b93a58d6309cbf09f4d4d0c3b4de65bfbd25678393abde7ba6cc58e0d0f7c06eb73fa819c7f7b980e757bb07fc63ffd77b982bed3c2f296c471ade6b1538bf7091a308c3f489c83e97656b6faa90c13f37e3c61b89ce5de7dc6338181be6769cb76c2ddb8dc1b9eb1afaf315165da23bde36088fdbacc3dcfa0c763ee6e3fb77eea3bdd7f8ba5108723c97b98a62eadab249d5bfe3e4ddc385861c10dbf0f451f7ac8309a0ce7339557d78417060f592ac6dcc59e18cd3ea05d51399428be71ba0749ac15dc98caedd79a6d3f5727b25cbe177e6a315a8c3178cbe1351c9ed6afb0075a2d85a66f844b7ab1263a773f7d36ce7c33af767f3f17fcad72c088a316de72abfb3a6a4c2bf0d997d2cd81db73c31bf1e89bef66961f366f70b3b088b85d67b7a676dc832bbf3a712b41dfa65be4d92f15cbbc4e3761d1cefe522cd375dda48b72964b6999affbe6fa7ac5b2e5f87945bcde8ccbec7009bf4df97020b450b08808f19bff39fadd7c35f54f68a540328bc7e8a2b1c6608e36b669c127e4cd112d58778f56c839405efd1779207dc8bc890eb1131cc7994773c1f34e9ddd53c65e9cd5fdce468f567a3b0cb8f26d3f8c770262e126b2e91738343e601e9ef8fc7c03a5d111faacdecb1be86da3bad4601da70705965edec371f4796add53f83b166a26ef3f230f9fda90d185bcaecab33442769de7d0005c2a6ece6cea53d29eb39f139b902bf3c16cc80a0167c82737e87dbf1bb03157032d6bc1369e45f65e16d8e87430f1c5ea192d0c07b93f752b67bfca151860bfe037635c51e5108d59ab09636456ab46dba5835701ad41e9dfa8f88353c142496c57e1aa714a7889fba3f3b41561135470d9fdb7254536deeef7153eb9ba36acce69cafdfa146091fde5647399c4be5bd50dfbba943f2ddddc61653ffc6d319d8a1ceed7fd043da94581fb71c76bedb18a7340dec0da4a7ab5eabb99ae1f0deb934d8e9acbfcb645eccec8c022d95f335f9c66b3db327ba01c9a663360e2f15417fc1b494ce3273796a3dfbe5b2d41845cdd6dcc72df864fe665735ccd553a09877a34c25fd0cb87fec77245bd1303e3ba4d62fae9f21ef080daa8a9c4b3b049aad45770fbbe3de371f8b359190d1b47fb237042698e3c6cc49a41f8fdf45e0c017a2e8618dbaa69836e6e3fe1f7f0d9dcd29d0fb2e7bfc51fd3d71de96fa03ee6e4a38939ba85aeeca8819bb6d7582eb7fbbc86d7fb9510c1f8b59ae71d1dff547ccc303aba6ec80305a740e85693f87a99f617317951572c1d8f069dfb49301ce7f98cbf19af2f446b3d3a53fdfbf913cadcaf9a6ef9ef8de7ad3ff90ac9a41fd810be8c49a2ecf16bf629a2e56e9052757cf1b94bd1ef6e3f617fcf3796fbdac4877515888738dff4785b4d3011eccf6010f1c01df0b6fb74806cd5043e8a67d76e1dc1cbff64533e630c83aabf5dbe73179b1b4dc46be7cdb8faf14c90548cc3da5393cbbf73dcf583573aee2f73e1e684c8d4e08e5ff6bccf0c67d3077dc5b4b42ae7fbff378dc344fdc8c61e74f213a33d275f2fa39a90fb32909e4753ed07c4ad33675bd0f22c272e56333731ad3b366f11f4866c6cfd67cbab4ec7ad95ebe75c5d819a9e8574e3f0de3e4dab70224a3b61298e18a615c64db9396e5ad9aae71f445de1fa346f9ff46572fdcd074660d13428fb68f7e2f9b3b66e7fa8b9e5f88b49c8fa9a241173d66ea99d9d17d7e78577121acbd8c904b2301c4743607ea223a17b1fc62436cebd6d597716e47e7a31e5ce558f9ce851a17f5a5c9f65086c9f960b7961e97b6eeb382bc8fcb8a97ac75d7caba0dcc516f095beeb547bdc4371584b9a3687d3a7d06d6bc98a722f51717178ac78190e9e39773a6733bfdd16b202f7076d96b90e9f94e808c7e03a1d82363f594779eb0c2f75b87baa7ebd555e6dc625b25980b24418fe917a4126bfbb8523be0692bcd4f6807fc301ff87b72e131919c3704fe934c32e2fc6b771df7e6d0c588eb77ac9857befe3bca4d1a6d2304d809be317df13b4b04e00f1f813b322a936e4c1431fce5197ac0eb6ecc8d9b79e37eafab7a9d6c7f5a2ba61b60e6b5f8dc680524102db5ae772afb134bf2108d753ed556ca41980669bec7caf45191e536088edfadfd5f67682bb5dfdf58e583407b6cf1e8f4ebef8de1e84f7c0b94a73ff5877431443b0da029aca6f6a2ebecd64dc137369ee937bcaef5acaf352ed2db102ffee81e63f414381cb794fb90e2d88d7f3278252ac7d606a968b6aedf49466c4671975b769592ebdcc8783825df5ae41ce3cf61c2851edaebd83732520550e35ef73633e8317a3b000b389893c01d646bd42af514d1f1ad013b7085c035783e30c4b52377e3395e47cdbe730e352f154cebebda3a955fcc5ef46c71a2370cec182b655de5e7acec85ef3f2c6a4bc21658ed42e4072afa4cc95aaf7fafcf5bab186ca851eca66538d4efbd0f708b89507df078017e64fac8edd443c3925b3d4bb890dfcc8d956be2d2396891984be09fb282961a8a6f4b3655ad16246c981ad313d9379fc39cd40c6f5ae2bc5ebf14f3e2b61bf52a7b5bc583ba4459b247171957e3bf56325f71bb35cfde32eebdd9aecc1f3678d1abed35f4ad0d2f37b8a8b3caf908c0df4667d3201b01c7c3eb59b12af4447cf2a946ae2cac92c232390b27766aa8bab7fcd76bfb43eae0eded311f6d914dc39a05a9632b38ffdaf5309c76946e674c6a786038473a992c39153f7a7baea2ecaf3dfab93b2cad20c9848eac31c458e01806c9300a7e65b94fd5624cfef25bb0611753b61cb9caaf9b59fda6b89f53dc2ecc7ecb3fabed06c0b0ec2d82ded997a7ad40ed61fe35503fd4b5b2aaa9421e288795cd779db7851f0c80fe28827eba6128163943aabeca22f2976f8a368ff88f4e0ebe5d57838da1066a0bad7d28893756b7bd52891bcf0dc50546a7510efada9d92a1ae32e32f5a6bf77c70cf26c0dea25b37cd2248b54df8606494962c6bd92f3285b8b3a27b9fed24bdc77fccb27218a0026666418754f32a8c60475b0822fe9b5dc6216d1c0b9919fc4bb5d1f2585dfebf702a6a28556e5d4734e67f5feb334ec411d35dff481fd2c681cff61335d31cf42e52126cfc2f1220994f88009446118a1a28884f6e78465cd084c625f01d79e80e7fd77846b08e1ade8c7497c37cac0bbca0d0a70a749a8058777d0c03c490cd3714462246c83f2a37cce0ce84c5e1ed6efec0d3f496369d71e16ad32ac8fb64da1629a4bba9975131cd65072a38b69c5f0459a6c9b76089ef0faac8adcb8f7e14e006e485f6be87984654bfafde16a2a5cd163711cdba4aa1616a12db8ff226fe5f4f7eed2c6300cf323607c642203886ae42e82644cfa795c0d8b6e18e3a0762ded23ea9cdb0a3e7f5f1aa720cbde48c49fdfa2250c0fdea78285aaabf1f84a3f0377eb313856ac4e40e34cc9b42f48f37659fc38030e9b82d66b30514557e063d0f0a7f14fdd3007e5bf0849827449b44d6721d04610aacacd5be917ee879067bf6482a45bf20a8c3dd6a5bc82c70b32b2c0e1815a01c49f26add5636fcff2a2296f1db4fdca213eeea539c4ad9fd094facdbcf15a83f12ec6d6ba0f619f9a71f78278d194d375ae3232d42491ffcd7f500cf46e01429f54dcb67ab9e275550f3077bd7ecbf7d383faff3d3f017f0d7895d28c46eacd4f2615c8d07ec992d5f3588714220dce7b17401c6c45a3bf9fb298f4bbfd1a6ed5b9dc3c2fb05b349341c4f1564b4e4b6d47efeca562d832fc9c13450e26817e1ca4ec105894ec388843ad3a0802bb28d6e7e305f85cbff422443445b5210133a4cf3d5c026af413f7dd40b4626a7fc61428a29e533867ea785292badab6cca8a9a71e0a9b1ee6688bd7b8c28f82eb1d9ba874d1e0766f3ecd8e078d208983aba0234fcae64213b1806b74cdc0dc7172f2f36b7c3768c42dc0186a943f6802365426ecf55effd1b6f617e21e4f2ddc74cddd928df3a94b039005ec9df0a2f675d89ad9bd076ea9c37c8eb38fd4abf3e2df7711b369257456ed987c30fb9de2ee07121320f8d5ac016b89dde34926d2947a9f0a1d63c59426a86dac6b48ff94f943c93bba47368fda7818bba2798dce256bd65e83ff2ab8d1e7c66294b422c1fad5458f1af3361eaa6aea6ac9ec7c17bf7b5fe8b465fd91f80a36a869d397624baf85559e3d1a1c2b04e47185b2f0d578f110be73a1f97fb16c73c636d28d4e3b2bb5124cac717a8949fad7c785b03117bddf4cc28884eb53c095b7073aef2bc109e3bef552781e045c39412ec60295391fb1dc2c278a1ac719df98e8cff75e6b71246e0b20e144fea1b7075971340336e252b315ddf1f501fb9e67334dfd3fa2656e748ee73d78429a3aeca37d645d33590ae5f1f8bb75eb110f09d0dc1d8c4e461cd16fcf1a3f9595acffbb1dc73247296d853e5c1d58710dd7eb8f878c049c7c3ba72b65939499e0d3b28b40ae8bd5d5752fe094f210a7c1ba205ba9c8c73720a43cdfd35df021f0e4b85df854f2184d58b0f99d4012d080ef9ff90ef15cc0e30b8a666d281b32b9d8bcda206153e89c14d2a919935fa1fe23eea07e6676e9edcfb94d25600b7c7f4b83f358e715cfac2bb37cbc3ebc5f12876ceb90c35c919ed2e6b17ed128c51cf026f84fc5dd8a9a13352078b9b8ef3f1556d7e163d8d573e4f1413d97c2713d443f426d19bb97ac48ca1f40ba53ef9c9ef8c3dff03fb3017a71a33d6af79011c4fc025ebe45cd0e3c60ae26e900c3300cc3300cc3300cc330bb91b1f6eded2bd436249394d30c64e4d85822726a4a29259952129c99f882d399894f6726cebbb791bc3f171f0f220ec70e5c7c244086153a4bd7952bb6422ec869f9b57cca56a9323fc81afa4037d86edcb091ca76e4c8a20b1c17f840387cc7052211195530bca9b20e796e27da944105d39d47b32cd1923105d3b9c98c4ab9726f2a52b0e282e54aeaa695b25ee5b9a13f668afa2f011951305ecc0b5a9573a8d82114cc61a34e52b164b93f51c6134c258d10ed1c4a9adc777c05229128c87082c1fdf5c4cfa3d47897c86882d1fe4d8f559dbc493a06c86082699414d936f1bae0f5e240c6120c6217eee67b4127e90e71900a44221ff6850c25982ec752793b87eb4992fc614930e51016a7242589a1afcbeb810c24986475127ac6cce43456828c239852e953fdd04b212bcb1f07041946307a484fa54aae4aa2a8777c059c20a308c6b00e7a2a49ab25c95c035a70f101228308c68baf13a5c49d92178e4422910f19433055ae5e12dea5df4207b2803e2118f7c7529f34bf3daa02b2c62167213c6c7861e3869e8c201854b4aeac5036104caa25a9a43ec55e77f307664f661f94b07213321b820c1f18ebcc6247fea3dcc9cae88141ef7aeda5cbf249e86c1103193c307c7992443e86695968063276601225fee2a72dbb1565c9d04151db42cb552cb8589866f6dd7eae20d44fab20dbe3866b20128944585d202307c6f0346a2b5decbc1c1c98e434d27277d02a662537306528a16289223e4f87326c609cfbd3f1439728251f3c7e471e1e17326a60faf7a046aba46c937290b51d393e787c17c5d8013268804e4a4c494196709e44c60cea3851b5ae78870c1918b3e6ff762e8a92a35e901103a3bfc7c8db7dfd5e2f12e90f2b26051930d0cd62d959998c978ac86e0537b5d1626f661264bcc0684a2aafd8be27d38427c8914524f221c305a6f750d94a273925bb6e85493d54e4e39a50f12d3158613839f75afa68b2ecd3315661b40f5667effbd9c74210f83055186caeedf394cee14a30c46f64418418a930ac2751cbb5c3fd49a22fbc02914824f2810aa376a536ddfb8a6232b4c37b3860c77fe11270418c53984f12ef5a25f79be183ac7d9c1b7ed872241c10e01192a3026a9c8118a6e84d2c5598318b96c2a5d092c249928e59e570aa0d442267828f482444b5e0e2e38b18a530ddc74b75d3f2f1eac72085b1c225eb60f2885117c7188529feb74aa9ace5b72986284ca6fde3cf35eb649f239150986cf553ac0e6ae34e3ea4070fe711899c101b5e44221f76426c785142703c0972f0500485418df0594f2eb2f42878906b8bc4f8842989aa51313244b63f9e30c71f258fd8be2456c7b44016c4e88441a67830bb4eeb75baa3c663470e1d3a7a84a071c2a8ee226ed28ace5b0c64ed8be4a3049fccbae379d82831366192a1377bc22be76c829a309eea9cb542fe993027115f26cae9dfec8d096387e5acf229dcb3242f81d7768d8c2515fb34f390ff114aeafc49cd124b18ccf2ae465ca83595af84c12e7b68515209036250c220c4824ae14992b6528c3109b3f8767b88f2b3be3c8624ccd94178b725931aa6132312c6cad1a34f783df94b180312a674f274f866cb28e989f10873e9b51242b8398148843fac2f86234c1fa65ff4c54f4a2c1ba31126a1e2692ba894b449d3c56084b124376db2f47de86c5984e9f52a760a192d56528a309a60fab642f782344f8c449852bbc29c85dc8eaa3110613025e992e4c54477862f887108d39b2779e54d46a6e90d6134313dab14c3c491b51086dfbe2455d9c8cfd26210c2a44b876bc5dc2d79840661989199622a95483d590b420c419873dacb3c8f779de44f204c524e427a788ccbd97640183d8a129772bc2df4fd07836c65f3934f9eb369ab0731fc60fa144a9ba8bdf7c1a0dcca3d6fdaff5a920f26619460f249a33bcf647b3048abf35492576af9510fe6cd90573b2bba56bf1879307ab5971cd4c959c9444b0c3c1864bb948bd795ec2b66dec164b631ca747c84f82aed608abb96f10aaf9637ae8349f8f0c1a356ac645a9499743065f1b6d2a6fee754b8ac10630ec613f14f3bd294604a50297230c96759bbc74afa1d2d250e863535b2441b5531662ca5c0c130e75143544b56fa74bec1943e4b0942c6a65aded20de64eff4949da3ce81343a50de67435a5ac434e3fc995c206f3e7bc56875aeb7f5bca1a0c4a09aeb27da35b7f296a309bfc297b38313d8d25d3609411bf1dccbb4c3498839e38a3f2f2372615e30cb8a5ec615ed1ba4e2ca7e68d5a52aac44f26df31cc6038d1828d76fcd821eb48a4ece30b1e5706d5f3e68556eb9c3abf43c733a0dc10830c26314c7b4e6396d3bd925b883106734e415e2a39cec7d329868518623068e792ab3b1e532146180c63f2a854efa4a4a4c46030efe55fcfb984da5bb19e10e30b0639b5fef7417c9435e9185e308cb0f5f1a4d473107eb1630731ba60ac92db83bff567e5919a06388b185c3057dffdc9f30c59bf5fc7175b20058821c6168cad61494e31fda3b5a35a70f1816268c1a0ba3da8242af64b45510e101e3f011b3a14c05e88910583ac67c7349bcb8a9947088e1c5928176260c19421abea930ebb9c5fcd046a26c02b1884e8122b7eff58de9b035630bd5a28b9e35920fb710b885185f73a57d8ec24c7983815b8b470aa96ed65b94eddac82ffbcdfe5243a8c31057366c9c12f27b9b2a58e2fb650420c29982ffd9e94b2bbaafa17a250881105f3c7c9c14f64c7978f2bf0058f0ffb82c7252106144cd182a5a8277c95fdf90493feaed4495059fc24158ce10483a86c22423b4bddc26103e4e3536023a43f8410a309065f4ff9a0b2a4bca004644d111083092655398e1c93c52bed1463098635fb924da758ea672598d25c9e94844a12cc6772a58b6ed9fe4d1a0906d56252f3748e4ab1c63882413bbea73eb92e097741d6d801318c606c4be1924ec252be528b6074b7f19c625ec72f8f08a624478b9fe36d67052dc6100ca7eec144ab9c361e435f818815bb420c21984e4eea77f35baab2280806f5b27d9f049d4f7f120806fd0f2f9635a4c9df3388f1035352f99d45b95c8790fac024d8485f93b561a6537a60924b8cea58955b922008947d6821060f8ca516dbd54dadfa2841f68b1d1588442291ce1d3c74c4d88139880ccd4abac7410c1d989230bf9582b5fdd92907e6b032e3514649f9390e4c59e747c7ca5d2242bf8179e374d014211fd4b581b9925c31abd3995cd2ad8141d7491d6ec467b7aad0c0f89b95b3081362329a81b1d54e8d8fce122586323049dfbf25e7e4cbc3873162604abad449b6a72559ea6160b8f015e7cced64a972e0f888f102f38add6c7d102572a2315c60181d4fa274b050d28d305a6112fdf9136592fd56b4470ea46f021b3cce8f20c78e0a640860b0c224d63ec996f28ece9041d67074612324c43f0e1b165b38e08b1b373c8b48240a3056613a1da12ea782e649eb7402305461d2c973a5a03de89c044bb11d9d0ad3c7e5d0f18392a29a2490b52e1ec76b910318a83065f71416c6f3b8c753d20303a730a5af583079b7a49a38c81a09ee043974a429ccfb29264ab4e24dad377a4c800901a314ca9778769c67bcd66dad25f12153a4c7297f87f72841c819294c5b26e50dd3c6c7078f1d2508b9488447611226defa43ba9b546388739e9e51519863ff5edc31754aec423cc1620b07fc8dc4b7f8105f40f9004628ccc994149dd749da8e90a389f0c061234705426ebc0d2d1e878d9414108920a480480484878d1d1e8984ac85dc7894c38b8fb353c00085f1452e973e25669fca85b8d9274a6e972e98665c685c2c1337cd5a2e08b5ea066078c2246bd5852929f5ff321b27f84810c0e884794466b95bccd8ec09b2c601189c30c8ee5c8c585393837a78f1f1c58ef72247173c70e4f0a2d807606cc214ecfff2936072a5f5206b498f10e4c31ea85b01189a30fbd88cce3987d5af5d471f06229148e4b0472472c36decf890dde137fc84e8875a268c36aa2441981c41d6423e5e8f8d47480e908fab010c4c18633b55921fee6a37be8451457b45bc8ad03aaa25cc1d2689a958a75ffaac84e9c4aee41c96eea53a25cc25daab2bc555d26e7e3c0fff62078f341893308d50e1f3d76225db7d3024617c4b9f54d755b0f92d12e6d7af1da15485d1ce4717386c84f4405348a4d57725b6c91727c47d80f188532c7b79d75d9be6664926557bbee3586c21012cf200c31126afafd80f75a59292fa681ca61166f30ba3cb4b859bec20596c990106238c7b5d4a523f19d2428d44cc3e6c510d301661d2aa94847a9247e73169715c80a1086307291e462eea8d25112625e7cf122d2caccd8b8854adecccbad66cb6e6b304f9fb59b5d3a73541028c4318a458e9e0f73b2608dd10e6913725e8a0af45695b08635a6e05cb516ad98795c3020c4298c4b9bdc5cce5adee0761ae7e93e3cf2caff42708538916fb9c4c287927e602188130ec49fb611efb54aadb5c04188030dae7b95f5075fab488c346173676502012e90fc373028c3f985364c5ade75a76be3f42fc60f84c592db1c43a4945b980d10793290fdb29ea2274ca07acc5e652d4b20a76f3d9a32add89a1ca72ae700fe6180fa2a2d9c90e27d783a9e7e26b8d92f53f878b6700230fe6f2bb3ce982dcffbcf1600a975f9424989c30a5045933c16e21012c4278e0701b3b5c036be8868d1e090360dcc124888d505667f75d4a7630570a9595242975285987518752fa0dfb50c93a118041078352b2bf5527a8f4299dc35eb315eccbd4a2b85867e88d39e9925c5268e5601274d4b59bca57be1b8c38982b4777e8c796a04789f37006602f01061c0c2656692849bc244bd437187e4d75bfe7d4e5a92c7383f1a48f7dba6b3ccf2b3c301089f487e569c1c507009200a30dc6fdad24fdc972e1c2dc03061b9267ecebb369e513ff02b0c8020b05605101096051940730d6d056bd5d6d451195b35953f6268cfcdb5e78aa06d3b59509af60492cd1d360fe4b4a8af19d92272da2c1781ff54ff65b3541c9e9c8b1830191482444478eee3314ceb2655d8a8baf57cdce496e6df8775fee3f0e5ae2c871238b48a4b5e0e2030055806106a3c812fd54eabc72a52d83f1e207b94ab96efdcc0a5ca00212c0028b2d24a0a8051864305d5eb8d7fdf9b97ce2280dc0228b0401141823c0188349a7a0e4fc925b1ecb9800430c66f5d6137e43bf938941d61ee5c081f6288716856184c15c577f427c4e9ece8372f0482b53000c30183f94362d5127ae98db3b14a076707c1152be50bc602ad9f9673516b4ff0764d512ec814524823605185d305f9dd66d4b9d56d302596336c0e082c12d9850bda735b74f0f5800034042fc0120210e927906185b308953b1ae947097441386168ca394abe82fdd9c9381ace1b0e15ef0483676a06207809105e3fe6f75b7e5a0049341d61a06168c273e09a1f3de9a782701e8d94e26cc29e7e748abd395dac18429644b2dbd3a97309738fb0b159fe43359c2304286cc31c943d75f09d35c90ab3627b898204a9867ac9258428b7cfe4cc27c792f66482d69c44712065372cfebac97ca7b240c9ab71e5dd6c4dd1b12c6ea4a6e55767a657e84e1bd724af73fee39eb08e358bc1a7df2567633698461dedae27d323d6a491861ac91af94adb4b28fc9220c96844a27a39412ea4b146110ff7b3a964b1261ea9c1ba7ef940ca58408e3b869cfbb24c54dff1046d335317555d97e6408b3bec9697a52eab250210c3a75672f25e484307f895db2760ae216f741184b12eb5354fd8a9d5d106657b1ac7aa29478b107c220f645875bb81b793a204c268fecaea0746596fe076389e97e7a5292924e713f18fd64dbae9ef176cffb602cfdb5d516733e982df9ad8e79bde8a43d187dc46951ad1f942ae9c17c9ed286c88a5d9ecf83e94a124ab54b3e49fdc683f1ee4b9616696572df7730e80e3fba2aade2446d07f38898a43a8eab099fae8331ff72aaa0ab4bfe93a683f9b264e5ace1ff3949cfc1248fd412223f769293b41ccc3d4a9f5221ba64973b0e0695a525e699ce59b40d07635ff2e8c12d8cd06ebfc16852b2bfca0a2a9fb61b4c95738afe97aa7694dd06c32739ca284f361b4c8225dfbf1ce40525d96b307ff8ca1f439ca5b1b41a0cfa8414e5165d948e9d0683d46b517d25f9bed768307a2925c99ea9bdbef519ccf239b467e724e54f3283b1e47d8e7faadf4a5f06b3e5fcd20c7d3aee93c1e81fda7b545610c21f83b97c2bbe28ffba14c46230ecb77cee51ead3e870180c32f2c97efe538687c160ea2d0b6da5cc92dce12f184d596cc66aec65097bc1143dc78f16cc6d33e72e984de76a11fabe5e3773c1741d26fe7249b97298b7600ad1eefb5a590b069343c88e39aef12a67c198a54f0c2d23848b92b160b2bcf4e4d1c584a9f0150c16768468974fed0b5bc19c2ae511f28452751e57c1ecad712d1fd7332ba682f1a44a9278b27fd4f53b0563c9597e45850d9573560ac6ce9f4d3cc97737cf46c19c2d7dea90256f4f928582499b8eab4fc9e4937c9f60529674b2b4db09064f2a69934c12ecb26e824992b9b21fff7d316682d12e9808759e25982441a9ebf8ed499da4124cd72e3a85d0fd279c49308f65f75be5143dcd4582314474cc513796abdc239882eafab45bb7a6746b0493ca7ed05bd626686f8b604eaa4a4c8a886072f9e8968329139e21985d4e10cf7f72dc122118c63e78a834ea84d982604ae2a50d5d5143476b8160ccf68ba6fe6eda493f30f898a0ecc2095d4a1f98e4ce499f60954f6e490f0ce3a792f60d65261e982c76cabcc87760924b92f4bfebc0244939caa8784265e9393066c97d49723cd929c78141ada49473aed45ef50dccc14288f818fa8312b681b92d8b4ed27c3cc1dd1a98f366842af7a89a2e0d8c15cc563ceb540aeb0ccca604594aca0e2596cac0b8f6fd96b4190373b6c921bd5f44c91718988349bea7bb5301bcc02494bc2394202b690d55002e30d8b597b857a9509ab6c26cf57db9d2efd35cca0aa35a5e972ead3cfbafc23817eda3ea49fb5f1526aba44599a05498e499101394945a57840ae39e38a32dec53baa05318bd43946ceaf226874c618a771a3a4aa7140669696c3fbd786e13529892603a875d1276497c1426750ba2d4299599bb284c32a27fa2dfb54aa1308768b6bd8505956e5018c7772cfd443fb1f4278c97a6f3c7a531796b4f18f32bc72cb1d776e74e18ac5b749a8e9d7c644e9884765f397dfbe3f1268c9676e45bb485725513a6caa104592f1354273361ca49ceaebc333161aa70b397eae9d5ccbc84495a4a6daa4efe4d9896308d9e0ae13b66254ceaa6d2a3aaf9df989430fd2549b2d05651f1e5244ce23bc9b564399dda5212461fa144c78f09775a46c270652589d793acdb4a4898c4156d4abd3ddb941e610eee6bead34a2b4f8e30a7124cf6984b9a6a6a8441eda73ce204d71e3d238c225a62728a4e117f11e6bcfb79f2f57fc9bd224c9278f97554be924b5022cc7f7955591ffe418408a38b8879b4136f54e810e6aad87039cb10060f6a7237d2bb4c924218648917b2fe3bc49e10c2a4e2b42949d2b9f24b0661927474d648b3a8ba0bc2a0a604cd912144aa1e0873e752d669fd04fb1c10e6b86aa9f3df4f12ef3f184d52e2414962c67cec07c347d176727a5d15ed83794e4cb6a4bb24c9493e182b558a6d41ab5c9a7b3048135e456a59f460909afa6effa54a8c250f26655792946ff184f90a1e0ca2b4749235bb47c5ca1d4c15cdbc044b955450153b18672f894b62af9760953a98947862e7a0273a984c7536b1552be3259c83c1825acad35b95043dcac1d4aba29dda5bf33dc6c19cd54e5b3f289f17211c0cbaa372b646a8a708df605032469b777ea677d00de6d7b1ea9383ae511d6c8351adca56ab529a2941361845e91ce425e9f3a104d7603093a4116a95aac704d560ea3d11e725edcfb49806f39b923dba49e96265110dc66e5bebdc3d29c5c53318ac52fa773f3f9d269ac1fcb7e69e716e7299580653ca4949a7ed178430910ce67415b52e8961b254700c066549ce509ec39f4941319845094ac57db0d41fc43098b4c96f8259147b11110cc6ccd310bf9ed6f6e1174c62de6ec3522a9d2cf482393d53c44413cd4aa90be67839be9a18af9a262e185ff6ec82b89ad6d2168cf1b9ef521269f7792d182b76f67f12d2bdfecb8251434d27513c4919a2c3824950f7f4ebd015cceba6f77efe46a89015cc974c4e3a4ecaa9ed5305c389142543eb93247ca8604ae1a345f9dcd53d9982499b78ca4cd44ee24ca46012fd4acdc9680fd3a36096b3d40f63fa25e55030ff9baaedeff0eff3130cea2e8b25f92cc3b34e30dcfebe456fcff36e13ccf2c14c5c13258d891e134c66df3143855c8feb2dc1a8d6574149a5c410ca53826147a9f43b295698ca25c154b1fe64eb4ba3267748305a6a93d3254165bbef8e604a7641bc7f581bf3ce088613ac4b7e72d519d515c1a44cd055827e5f78eb88600c2fb56c72ac1d791a82d16d546ce71196624908e67825da757f104cf2faf695bc4e933d100caa3a843cb94488e9fcc0144a4cef8e5d3af7f181d154766eb196f1ece98139d44e3c7a555532e181a944e372124ebe30fa0ecc9e83fa9cd35ab07cebc0acee27ef514be3ec00e4c0189674693dcf9fad0e000e8ceea57450232b8fce01b8816184c9516485505e73006c60fc60d96ff9b6d5b205a00626a5bae2df6fd69aac058006a60b7fe93c2b4bc5d702300393dc9d54d494588ed7022003b39e206fa163652fa9052006e69196c4c7b1a067570b000c4ca14ab345adfa62b500bcc02c9faddcc7a4b9162d002e30e90a712db9b379a1b5c2e497fe4e7492fcdd33569832ec3f889a55f4cb5661d09304cfa75f840a97a9c214d4e2e598969489a654183fcdea8230e129965061cea5a298db0825687f0a83cea74dfe1c599b23539857849e078b9f7246a530c8aed0d62a4b771f5218bd56a489f7a12e7a466154d327c998ab38da118549fc90b158e9e1a724148693843ba9cc0414e6d05f9793a5de31f5270cb6a12495a42c62b2f6844184ce17b5c2592a71274c17beaa62bb75729913069324b16c82c9e183bb09c37c4a4f7b2a437daa0953b9a82fcf177b2fcd84f94fd8df9cca9a254c98b3b7ed43b5764c2e6112bc043b1d6982492d610a66a529a3c4bb302b618c9363e6f6a484394dd8315dc242fb6512a6944ff623444918536d43a5ed64c9140973fe50525fb0fd2f3948188429b72c71d2499f4718e63b3ca51031ef3ac2dcb1947cf33c2267234c49c9592f96dcb28511c612849ed1257df6982dc2ec26caa72ca9528431de44356f556f174f4622cc2294929418a37310910c4498f44a12dbe328c91dc838843959e5d25b2a95126b640853c971d3928e5942b4955108d3c929c99e3b54b6d54408ece41c9d3fef9d1a8441c7688de8a45b53158461c4bfe9ac7549ef2b10a6ecdc93c4299d2d660c886d3dc6bb2cda6abc567cc99f7425e1f3ff97b44dc61f4c4ad52ceefd8b4a75d285f3c0407b715020c30f4693f2ff5bb68f8ba1c2620b07f008791e2e8195d107733255a32bc71ff1a606598b442291d6828b0f16c8e083494db074c289daadf2eec17492f0e4299e976441a607e3a8e7ce6f29d424b9e7c1602a551293d4fdb43f3c18c382fa850eb5965606594369cc1f27e30e2653e29892920ea5731f1212d253906107738cbcf7f9653b93269975309f18791f9477be924e24d891e3043c5e8b4c3a9883975ecea63a5665e1b1c32bd032e66052d29f3a4949f2cdd28c442211344124d21f236034c1591364c8c114d23c4cb6e742ce250e2631ac4efdd4cf699cc8808329d64ef7fb689e8afd87f89f8c3798aca2e5ad985ba754e406d377b949af2e5ad72c6d30c7a5def4ef94a48d4e24128968d1810c3698c4942497fc57423e08adc1240932d34e8d0aaf73cb5083a924b13ad6773fde0865a4c120f4a6aafd27b14a6d28781e3dbcf860fb1edfa304755a70f141011968308cf6fc2de3f12c372f8d0419673075c67687a94ea2e9bb0bbfd180fc810c33986266494948ef0eea4e70e408f1bf402412896448f2a123cb60782f314c5c2739f8bf64305f4c4f59c6e33b451c03b6952bc62ccdae5a2ccbf6989b98bbfb55ab188c2649727be479ccd1fe8b27c1ef28d7058e0b5c18cc2b57d29b0e26b99ae8bbc0f1376e38c849038329880a359363e77cdd01592bd600195f30e9d0a92b8ece6999d816653c74d8d871ca0a20c30ba6cd75d6a86775aac8052da382ec52d53f70d8e8e213e6330cf4273976f00851d5828b0f0bc8e882515f4d9fa9932184be29830ba6cb2666553ce1c42949646cc114e263ff28d1444c96bbc87183510b2e3e5086162e29a3041179137b6fa43c32b28074bfd8be666d72bac871035d06164c8f55b1145ad75637f2496ebdf42539449b43025d749143023a726811897491e3868c2b5869495c3cc4e4c25b8a3d536a1572b2d6d3206b3a3e98047ece9340b508ada531cf6d7d2755045375ca5013edbb0312e220667f209086011a443049ba43e58aea9c04250fc1a8aa55a5dccbbcd204595b21984e959b92c7e358183d24c446a2e72d6804c1d429a8f18ebe72222e3c70d8f00208264194eec5b9764f3941d670ece891b40668fcc06ce2892e392721f45ff44662638740c307e6fcbf646bd2fc746d206b1f38fc1c8ff33a427040a060f880460f4c97aa53fc78d1b3d32985e0f01d3cf879388f1e13d00cd0e08169d654326131bcd5723be04a1c932eb7f1e3321a165b3820128944eee3860e2f6ca0c1d8020d1d98574e4e1276a22d8e36075512b4ed874c8bab211c1928dbe1377a74f13bf66f2456010d1c1874f4147e7d96a3e5506781c60d4c9ebd445323f74f2a3130d0b08129d785d12e61974d379035ff30c1a38f37818d1d8fd89a03346a603c5ff94c9393ba94340dcc7d95fef336f354bb39508f10cb817a845c81c60c8cbb151eff47c7923f6c041a32581a313079e527ad1f22cf3b06b216c20387df0668c0c0346a9e83ae2da57342206b6aa9058d17984c6bdfc677ca2f21a6e102c39afd7d09fab7c1c3c65db6c2bc57a29d68971db9d500335861ea28faa4bf99f06422c81ac2612307088f1e0a40386c342012e9c28c55984d77123d7dab9b575615a61444051325d949e924322315e86823553eb8b74551e1a7f4c15b2c2fcc3885169e5454cc67e5a4067c64618629ec8e71b752f5b65ab5122bf19d37b43a099d97c21c7a6e623dae206b5e7cdcb8e11f49df0d05fc8e1ce9cd4861d26da6c4bc94fad2c94761923d744951fe2317735118fbb45d3ef59ad313b3c18c50183be712bc63c7e78f6fe16006280cb24428e94cf684d7ab0a333e61922f5d9e553f2170e3860b618627cc9e53cde53863f3fb75c2f83fe1e1a2aa050b333861d0a14bc92ad2c4c346880d1334165b3820070f1b213634f0f1118944222812f968cbc48c4d98e746df75102377b4af098368ee28151744c9c52b13a6b82294b0fbfc364b61c21c66bd4dca3627eb75f409332e614a59430869b27979de40d67e878e332cb67000166f09a399aafad1973ab71f78218a021389306146254cc153301da96bb29b30165b3820120921418e1c204609e3f9b989a36343295d4fc274b127679bd3d9b6ad240caa63c2c573b664ad72146644c2204e5525a1c5540e7a156106240ce2e3589af07ce18fe4e30e3d8e0c4c61c6238c6a26fd79f8d527153c24cc70842965f3ce57e5a4b49501614623cc39d4ac5a3e4bd2e9068a198c4058cb95e958a95a6288198b3076e8daf9b6a07ba305592b27f00bdc69c1c5070c17cc5084b962bfe7303154bdf638bab011a23998910883fc75db97502aa5f4951bcc4084495062c65aa4e8102625de5cabe3de095541d676fc8d1b7e3e4078d838810ddfb145243284198630f6259da54b1e7562e80b613a758b93bbb6adc604593325cc2084d92449fc8bcf36cb8d3b09330661d2bf5675aa61b18503426ee8f002021f3a42f4c8304310860df1c9745899a4c3fde0f15dbc0322911fcc0884299e1c437457ce31610159b3330d446ce8f0d4c20c4018ccec844fa596456715f82e763848167f70e4c031814824128984e0c861232412c9228b2cb0380af80247173630108960b18503b0d0c004221193814824b2e3913f4824726ca80676e4481f37cea3c8878e903ab5101b3abc10e00933fe60722bd59e4df6d4990e64cd2e0633fcf0c83039bd9c24447f206b3b6c7c986d32a30f6693622549593ee1f2fe203b830fc6feb2134a4f7ef4acf760764fb962566eeaa61e4c6269c993feba97a87930658f4ac2aac7b77d050f06b5579252f2e42c5abc8339d9c5ad91b5f5243b3b184c9dc92f27b4bf620359cb0de0e89143871739b298510773c9b2d8d6e7274b5db0a880040e0796bf98410783a90ca13c87ca2bcf41d642787c4888025090630191087a1494bd31630ef696aca52cfe206bba83870e14cc908326899d96e797e3aac32780814864c7876c8f1971284942289372c3c377120ec6ca1b61499267e2579004229148314124a2c9c58c3794d3bf43ad53504998c70c37fc7174c939b6e7d16302381a901798d106e38709a53dfc09f9a8b3c17015ee2bd726aa84c91a0c42eb04254c899d9c257a13893c8a441eedf890196ac0b2b668dca54adabea96fd2c712f3b70ecc488341f565afe479df9b0f1a4ca2e4c9ce7326c8757985196730ec456bb51cbd198c57d1dd2cc89b1c2c5706a3899e3d39d5f9f4c9608cf10d532d1d547efbc60dcf820a33b0d38b962cb784c460daebd8dd26e55ded78188ca52b27b94bb46030a62569f4577d3eecf205d3e69da4539277d6c2d2d5828b8f1d33bc6050ead77f65a2f8096aef076674c1ac7275764a5062d7aa8f195c30cda518edd1a1d4e9bc05c3af85c7fca084afa06ac1546926e8a0d232dbc41959308c9ae7b1f4dcce0a8f2f121e3d74e080402a6006164c16b76dc783e960e2e70a4651d7cb3997a9d7bb5630cf9f384a97a073d929ab603c93c684978965951c154cdb9e936c0ba7640faa19533088c929c6f4da981c2f29987594ac52334a5130058d3ff9454e758e13148c1dfb63bdce8f7a2c3dc16c2a8512cf9592af959c60baf4f9a0595513cca264ad5b959fca9e678251b343466a55f09cfc2598e2880893a49d9d6c7925186b47964515f9f9e327c1bcde26fd5e5ff0ac232498b3251d425ef797b8d1114c95e452f2749468bbc808e670315dd9df945f1615c15c2a493ad4e657720b2282e1cc4a3259a2996882ce104c6a7fb25b4afbad258910ccdfc173b69f83607a5172fecf259e7a4a020483eb869025ba7e899f1f18b3f3cc4baca865f281b94caa7d92391f75d203734ebfcd5262cad6e681b1243935a366926bbb03d3099df13a4154bc3a30df49de25c9d0a6a439309c641ec7ea54682f716032a1c53ac9b689aeddc0643ad77b423ccaa9dc0626b9733bb76a5f92700dcc1e4e454f42769a924203b3a553b5395b1f4cd733306dc50a5ec2c408ddcbc07c79e2e5b99a753906068b2579891fa2927860600a7e1e3c7f9424a8fc052649d0f28b6282255dcf708149466913d372e1b6c26495ecf2789c8faaac30882f354a1c934bcc5598a43273f7fc68fa52f6da326d23eb712a8c652a47d4bf56c76951611265c4bd9a243b8bc9294c4a9d070f42e7e8c93485b1933cd9a7925a0ad396f4f855f92485f1b4ea2f96c7bae7e4284c42b87ad0f1ef49a78b28ccd1f3dcccb2563d5c42612c556b49b494ba232da030a74a7b921e9de449c2f209935c96922c515c3b7cc51346917fa11fb54fc95ee984e1242b25cf2525446a8513a6646e62ac25996359d984b9f55487bd34ea721e3561fe8fa7da470966c2e0fda361a1443969829830fc6891d79973673b5ec21cb7c33a57958996444b18d634e5f474b0a0f3570983b68ab7f76f2be93e4a98a4fbcbe79d249970df244c5dd9a293f0e93cd49384d9f4f388086524ccf7299849f22861b51d240c3ae9ff27130fdfce230c3aadfb8892fa724c1c617efbd81dc3c3336d84d194143fe7fb52395c46982fc99ab1f254954d5b8449ceab272ab496be244598e4bd8d8a6ba3d2f289d893f0ce7f524e5d810873d4eaa8a25feaa43d1dc2249650c94c76106ff30d61303163f551941f66afe38b2d8a0160105714c2e4f2973c7b870a573b21cc1584964a2dcae24a4c1371c520ccc93cfc863899d61e0bc27c29ad83facaa74f12af088469457a1a55324cdc7c00612cc9d4292f49be49aae40fe6eaed2ce2ac74588e1f8c96c42c25acee7ac9bd0fa61f0b359f9fe6c493f96050499027c57d15937bf760be9cc5d2992c392a8c7a30075992c786eaf19c7479307fae52573d65e22c75051e8c722667cfbbfa1d4c5a4dac98ef4988fb0b08aeb08341a8f94b428c492728a983314bfd34fd83a7b9a9e90a3a1854f758d928b519e2640e663f9ddbd2d43d545b57c8c19ce65143776757ad7c1c0c37a2d3a7fed15272e0601cb592a627bbdf93fc06c3edac8eeefa6e309658d5ef9e1f7d63b7c194b2d54982acb0c1b426899dc22b286f4fafc16c2fb2a6543ea52587d46032bd8ebdb41a7249950693a44f8d7f978eddd74183292c7458f82cdabb04cf60127b5fafe63a873dcd60188bab5322adc485b70c26b96c77d6c449a2b42683793cc79c09e1b3ffd6184c8292f949bc7c9285c56230093ae7a4f4a3dcb7a361308adb688f6242bf0c067327b538b1d664bd8dbe603c95d6b62f84f6d0bd6012ed6269c99e704f72174c49122ba91b9d5fd45e2e185cd43b9727959474a32d98a475e91195236c4f540b067182569fbb8dcdc9b260f6d2d43f69e564c48905f357f6ca12bfaa42fc2bae60d8918b27b6886edbcb155630d668d5e6fece983e5d5105a3ddc750292f76c4285d41059324ee525227e9906da72ba660be5f915963ab2ee2748514cc15aec3c357e8ee9cae8882b18277c7d7473d49345d010593da1961a5827cb1325df104c39e8a5ede79841a957485130ca6b26ca57c41a568495734c1384a4ee79fd40963957405134cf2569a9650f91ebf74c5128c2a3a42a7281e75bc7485124c2a4bca2e79423cbc7445124c566264a4c51212cc29eba5e43693c37bfe0806dded6e82922b4cc7df08a6e09ec6929c3bb6c75f04c3488fb9f2f213b67d22984e52e22eaf2749d0d11f822589a526682a0473c593f583ca93e3413056556fa9307362974030fa5de519257498fe035352f23b74764e26161f18b6dec77ecd3234ec81d9db3c6b09aa4d2aef7960f0faf02d6f255b921d182e49514ab7b2cd9674608a9d264d29395fbc7360d0fe5993d7459ef871601072595249daf235ba81f1e4765f2831714a3630bcd7a59c743cf1646b608e2bba42dd07212a0d4c9e24252d444364766660122c3d259997e5a4b80cccd1754f67fb60fa1303c3be29d34963f7761898ae2eab9a2484ae788129456bf9bfd2ef29055de10283559e515393aa4d0eb5c224afe81cf79465ee87586138d35a1db95c95155a8531847853ba4d5a104aaa3049258fbcaf3b75a14f85412d65d126c7eb1c7d54185467087d39c9274ee714c679379b4b95f3e48e294ce3a342083129852985f14e91ef255d7e4861aa1d6d5ab29bb04fcf284c63b196843961649e4714a6927c6de5839cc679426134492c8f212f0579c9030aa3079573f410a2a197f309b3996ca73fa7389684c713e6d97e4fe1ba923cdde9846984a8d7bbd026d97738611e25e7c39589255cee6cc29c53c7bc374b166a3b9a30fa2571ec3c8e0178309e7b0a5fd96d722abf83e9ce749baea974a3543b98c4f7fd11a2b43a182d8fc9d7e1dea44e2a90357482d7f1c5163b5e870edfb18148e4e0f8220603a083a9e2b59d9b7ef45cd25b0c600ea6fda4a31c3cca06062007a349254f5ecac1b294201c363a0b121ce781811d0cd0fbc000e2605aff7b932daecae80315b3b7b1838701060007939cd25f32a9b5dfe4bdaa05171f2218c01b4cb253e4ee8d921b8c27b796a0f4e5596ba90dc6f6f4e94989d69794870de657b79416c4e2ee9eacc1e4a972ed2971abb5133598c32531a4cc577f7a93349873cea19ee97134184fd2b57b498ae71eef3398ea57d3bec48608bbcdd0dcb7ee65efcb50e5a6aa7dbcc992c1a4af779df3eae2e4760ca6d31f94bc68919b6b8ac19c4fce29b1a2439d5bc260fa601b4a3eb728295bc060361547ff5b89aed0f10b06cba646749a98242e7ac1fc16e42b8feccf7d5e170cb2a4a792c7afd4f45c30fb9e7482f0532a9df4160c27d4c5e4badcc9b25a308bcc654f79cde43c2d0ba69c42c5fd75d85cd3b060529f7dfda9a3c89eae602a39cc2595b38249bc247d0921f4eb8eaa6030c9e4123a9745ec1b00159242c996c38dccc8b1073005931c3b8a92933aade86c0052308b79e8cb4853314107d98f1d3c7494690e200ac693df72a69c129f4f080a862d9d53bc9221a48a4f30a7a024a9cdc7b35d2e7182c9f3fdabc91e3627f526182bbd2761214a9560612618e743783af9e49952b204837cae12549e2c9682aa04e3cfbaa69b7ffccb4930bb082d494a8d135e2b4830981c9683d24e825986473085395997c353fe5a33823929c9c40fa6670706500493ae55dfcaf324f9b84430d92779d9c372522649def0df6103d9487a02031882d15fde844a794cafc785600a52f4a7cadabb2d77104cddf72f100c1f5bfab3c9f10fccb615cd2d9514fbc0207b4aec2c7bd318931e98acd4d996380b964f9c07a69c5ae63e940525976469c00076600a953f7546f76e7b5a07e6e426e7f34787b6d202069003f3725c478fee1384120e922fca2cf6ffc916f71b68f97d4d2cbfcea5ab0d9695ad70295a83d3fcb49b7cbdf0a7a441fe29e5fc493350ccc45b3d399544adc8a00e7a2f4cde5ad4c518e429e6ece80b16d57330409c20bec7541e1db61730fac492f32b1b800bce6beabf1dcdaf82aa462b4ca1948d10a6bb7f920a2bcc266aa989ff255e52626829851aab3089a795adee6f257b09b28a871aaa3065ed9476fa63e3662f5da8910a835959e714de1f4eb041b6062a0ca3931464efb2b97dfe14a62eab9c2d9e09b71c99c2fcb7a162cc8d55e89352184f64b88e506369c38414a692ad135354c9cb568fc2dc27a5966acca230ffd95dd231bcf35a361426d99dec4f8cd9fa4a4161720b5a9e825754cb3f61b460821efbd913a670cae7dfeeff82969d30253dfa541279e184e932ecb54ac74d182cd79d3822ba82de4e1386536692f21b95de7d264c3a2b85d365ff9ee29830a8b7d793d3eaff49a91a9730b949ba97f3fe896cfd3b12115d50c31226e1972d962fa876fed40b352a61fe345274ea5f0b9e354a18e59356f667953a49576312c630fd58d2943cc89a22a08624ccd14ed2f1fe2f94e53b12267d61413ec70f97821212e68ff6497a4c5dd3336b3cc2a484ab74c184cad511a6e8b717f6fc4ad2ab7decf1e841810758266a34c2b02644fb8593e4beb618618eea399eea8fddb8d1232d6025506311a65d53134384f9052538fe83870d2f6cdcc853e38182474598527747ed7abb2d8f206b21396e1cbdbc15d44884e13d9e0e5d364aea199506b0d8420258e091a006224c829db4b2fd2fbeb6cda1c621cc31bf6b3ccfc5b41619c2dcf9e929cfbb9df0fa414e40012eeb3500c0a14621cc96437dc910a17da7a42750831026fb93a48a56eda7ad83ac7dc846a0c6200c4a093b6529bae8801a8230b89bf0df66daf37e88193453231026937b625216f1964e123bd4008441e445932b895126878e8e1e24c891e3465d8d3f184ecc180bbb59d1e1b5206af8c1b4257a15fe621d4f18e4781616881a7d30dedac829f95879bc54830fe65072b52b879a2433d6d883294d6de9243cc9fdf1c3c3bdb0c123e4edb0d8c20129b081812f6ee0a0c0a7c00606229188bda1861e0c7e4af6606ef2a78a150b35f2606a95efac7a2394e8c5ef156ae0c154b69e74d07bb1b27730bde853424def206b07a3e775ea9a3d7d17377c87c129d4a803d66319aa61419c20c7cfefc04b420d3ae0a1d74cdd9dc8b9581f6accc1601f4609a204255f12a72c6ac8c1e09ea428a56bbd03438d38984ad44f6a7cdb4f925370309cace141a469937e4d653c6abcc15cb226a9ffd0d1c412e6420d3718f49ee893748969fa758d3618c5242d6247cd897fef701dbf43c79ec02fc0f735d860b8513a855c25a9b1066309b2d4e7eaa5517602b27602dfc18d756a6a30e78cb338965f55eb83ac7df124c0a15aa89106d37f7a6eef701f94a03cb3420d3498db838c2f7d4b4a89a63398e2838a317a623f9b6e06e3f675f41d2db71cc232982e5405f529cf097fdd106a90c11cbea24e65fb3198cc726d9bded291fdd61083e994966e9fa4af1106d39732fda9ca573c4c3e0c7960c07ce80859000f14984884070a3e0a35c060929fbdbdf4f45f30a724b7d7dee9d710a7a2831a5e3055f0517b3b2509222219d4e88271f4a5f09f44f6a81971c120fab9c4dcdc4d7cb660d23d717d964abeac1ad4d082f1d74b5272aea4673fb360925f279d3cb1647e8405e38f74f35072a87555ae90a0996fa2a6e570ca628542d52ba96da95a2cfd2eea74ecff9c474915ccb194a9eaec9ebb2152c19c82f8afb8b5eff9bbbb418d299837bc4f750a7532239e410d2998db4d6fb7762e1289446250230a261d534328d9c5ac24512898c4b59dd97aca134c25f32b3e3b6343764e30e8582cd124534af8186a82e1945cea574fd892756182b1cf2c87c5d6e718d9124ca6f24c9452fa3fd2aaa104a3799eb892d2458f9b83ac9de0717ce0c85114900516f53774f4d8028b0a48008b16d44882499e0f6a3d5244c81382ac31124cd795eac4aaa56708877fd8f01da828e00bdfb143016be74dc0e74df0050e1b19a87104f38e9f20fa6faae55f24f21189740d2318ccc6e22e986f984741d67ad428827157548e3162fd24410e0edf91f0c891638717fe3b7860c0c60e1e65b5e0e2a304358860dc3293967fc264af538d21dcc155ab3cfc9f77821a42308d9fa51925e542502308a60bdaa45152accef7180435807056fde8ea61bf42fa03e3e91c6f2e9b5c25c831b7860fccfde757972a1e4b097781e36f7ce0b051b4460f923c8998360159f322078f901e47796090697b4a9c738bd1d3861759630726a8a10314d4c841e2257172a92555921489708624a905171f386ae0c0f06271728c35b1e54b3730deafcc7ea8127434d9c0641e773be324217daf81399630fe5942a99196a78141c687fc34dea924399a81e173ca6fdff1a28b922303b35c10a1aa46f64a6260ba3f494f4c47eb9361608af196725b496abcc098ad7aa28610f91f26355c60923fa9d6959b534bd2ad305dd75bf2dd1ab561b3c22047bda5945c4494205e85299a944ab8eb93e4dcab0a3c884e1ae2f5a6c2a0e3e85cdaa4b0258a1415e693ef84a7d4a1b39ca730c9d6b1d69ac294fb63a477054b61d03967c73ed391c220b4efeaca8be89f8cc628163d716ba22ffc9c70a028ec9c6dd4ccd3683d29a3110a838f36a1049344d597e80bdf408e136c516880c29c723ee1273efca76e41d62291cc0ed0f8c441ade492d25d6878e20a5e29fae7126e1ea5d109937cfae4e4943aa8ee39618a1d4d48fbdca94a841ad0c30b2c1a70012c22914824a46f40631305f15d2e7efe7b02011a9a30690d35e35da983484ba1910983b90925dada02593333770fa0810993b07a2f1e4bb0ddde8cc6250cffe7be629f2c942c59c220aa2b8e6f27952ef44a18e54d7dacf867a2589412061fb37092759de8dd933097748d592d4998285149984c924c50d70e2361504a3a29623e56d2ca6840c21426fab9ee1574f546e31106d525e85d0c5d72b5cf7fa0e108e3d567e7dc5797f4ed206b39d0122f7a6801011c14e037d06884f1549c149ef56584514db76c9a2433f662376e2cc2a4db94649a7bab97ba8ec339d0508441789630fac4da53070190061a893005a54d7c470e47c1231c10f022c78e06b4266820c294a2c8c5d67795d57f085349a652bd5d5798b91040c3108b8aa5738d95345a3ebad4828b8fa4510883a932514f7cac888a0961f0123d8e8ebc3ee19f92041a8330e99b8ef9a9a6210883cab1db4c3b3310e6681aea213c9cac5303c270497dfd49ebfc496e56a0f10783b8ca75ca47c70fe67295d9de0fd73957fb608a5e23f2eb7a2b8fa57c30daedec5d5e48b711efc168ef5e1dbfce29d0d083e1643561b2685a9bac3f0e138d3c98d32b439b7884f4401f5de0b0f19cd0c083f9734ff95c8ed9cf251f34ee60120b4f7d4189a1f4d5206b20213d743403f0fac34e0b2e3e3c40c30ea6a04ced57b8b351e2ebc2b738366e243d2a808148e4038b2d2480450e1e3abed891452412899cedefc871b640a30ec613ae72906172efc303058fa3580b2e3e7ad0a08349659c2407fda2d7953307930ca55faba411c85a8f8681041a7230c9148ba36bba8318330e26b15116e43bf6ed595c2012f91b899b60c787dc1707c7efd8d1e3c030020d3898ae2c54ac6879b577de1868bcc11c2eea97927962a852ea020d3718547949954af03bb194da60dcaf58a6be67835184f8b07adee1e4d01a8cfa26ac82923f772e490da6a4e2ff4972be37aa9406b3e6bfe5a4e64dba281a8c599fb39f4a2ea9df194c7732fc733829f97d6f0673502a76ceeb3d95d497c1a0cfcfedb285ccad10194c1da69f93cd08f79c3306737b9d758e7372257ec4600e3a292f415fc58ba23098db64cec4798a6d2660308bf8a092983af982d96eb7d3a991d52a265e30a8dd8a13cceb82b924adeca445875356c205934af2759c3429a272df8231d66f5e3de88cf95a30c93a27665aba743dea2c9844634b9acf3da524c182c1ee5f2cdc4cfe0aaf60929454a7af276a96c556308b89a7ddd3f572f65b059360a5bc3d27712e4b940a06e5a18450c976773f5330da6b87edfcea55594ac15c523a799475902de228183b5f52ae1d7fc9c2020583fc10fd2827a7cdf40453d01ef504e92658387182493ef1b3e3e7adb866134c2ab5859b240775bb21134cf254f69639a55ccf5b82392529d5eec7fe0f91124c6aa4ea9664e925894930895592872b4bbdcb0c09348e40c30846938d75a834ada543a240240c0603a15018100a276ebe02a31408002034208c06c32145d1b3a103140004404634502c2016241812101618120943a14018180a87c1804018100886c280c04070092b4c1d000a836cc8960acd7846621c8f5480dfb095a6f26690104c1ee29e83cd9a24d0cfc0e854421cb20099290935dc4093ae3c04fb733bd1a9f52e01cbb5b692235619f2e5e58748f5b0d7361725b7bc0e4690269ce133d882f2437c5844b82768038a6f0392dc7a43ae7d63babe5887953f5c3a30e2a0b4ca5d9a328b0f4a55a3e3bd5a81cb38d3011b0deb40d0fb5d227a39914406a211832cce7c29ca88f6526446891e29d53d095b892aa96c6898884e43cde53a2ee6d0bb2949ecfbffd65ce95be4fad9078fe4eabb513dbba111df7d700467d799c8fbbe37cfd43e3b01e0685814b46996a47cc849d8c9ce1f4a9470642ef49bf8fefcb53032a22a30e67a2369f2a6f1b6fbb3af8ae88e8c7a32a5ebef498a309027e3ad9fb17fa4ba2d890f3f8a325971fdb0ba5e357a8f6aa9eba383d917f78d5846c9b8f5c1370a0c4d0f1d053258aefbf951ba08b41fb3915d0c1d29c3fe986d2b40dc1ad561595ec00d8c89fa2b0a34ea7ca4a980fec60d6ec7d16e878ff968b8442ee4c0c4fa2f9f012723c7c21c7eb83af8d440a804bd8dc93ad963451a88251fc224ab74bf216020766440969b7990bdba9c8c059ef9c0211ad6b78654cd74e580079e2e14a56b9b0efb027ddf401f57d466fc8acf21ff75e5c52c9d59c9ef79a7e1a664c2f46a3a0e27a729a0fc1d37ec4dc679758ba506d84aa2639c5231b48f01b0d9d9f012230b67acfe6a54083ee0db64639849861587ba50f35cde5b25ab0ddb71a3dc0c314315f27779207c7952e44a32398a90cd1e6a6f1f45aa24ad3946702d7b55a3186d113a6c3c74539071d91039935bb268fef13df678fa49de0e11abd1040cb72f429de2d4ff5d486590d5189d73f4367d581280050af78f7841d4940aa30aed713e272a380a20cc2e2eab49857f50fdd6ad3ec84d3ffdc31ce2a7a579c4b93b19366478b48c7e438818e174e446fc622b269cd2fc36e6be3847dfd83e997bb57404a8847cb98056ecd457fe4d1c7bc9e9a9b4035a0e62c937987ce228cb0b6326b8c2d2a6dc0f1ff90cd02f1e805a9b22a36a61b5daf77ab96ffe55cf41e4d4df533d360da214c1ae4c6e6f04cd7a6ccf989b16e4aa7ffa2c37f1f9bddce0ad08b5f8118d92aaca10cd760e52c47fa4f27fdc915b9205f301e6a842ac96190486ebe5dc48b325edb3482e66b6a75a10ad2b2cd88f75644610b88d8781f73be0166209dd541e331a436a2c1b8d0969ff9d6c08b0230b9b78c427026669c653577317386fd90a342f17df9af04a40f38ee63cba60f1f84ff0880fc09aeb0a0bfa755d2d49d7b308ccec083563c6f2a758c0f8b5dca9c0388b4ab7783d50aae60bfa505c1caf11922817de06850d0c2cf068f98f88fc273dc51b75ac9e04c92c2cb2ed9b7a2519f42a5e0713fa262872811d9f27d9c927146d4cc0794d618780199598bf1a099c4e72ef6d94fa4fe1ff6fa889fd254f7b70ffea6d2ea9c77ed871276f45f11a07ef2d3a2a131432df97fd1c0c61d5055cc2f6408c1a4e7d9b781f206e40700714394e3e109064042e3540c5c2d22c45ed27017bd30b7947afeddf0435d0158c0264cb5a712e7fa6f0abf36d6eeb8a8c13c7e702b7bd023fab363e0c807e0f672037acd32db627b8c029df055ff232612089561553316053789195232c58b9aef83bb0478921c2a208c11d816397cd313d5096ba3968afe53ad2d8d968c108fa90c2178fe9edc12222708c07c2b08c657ee5ff7767eb7ef4a230ae4d5e5c884808d0071c3dc511f95197312c35ced5a3dea4622687acf36257f0c427124a495131cd424535ccfed0fef24596e2ccb56086c651e6b4e5f175d04942a7640525eb6323bf685c82874ee2a997213d180ed5c646cab45822a681afb5644fc56feed30f79e43703f6c9f24c9db391fc5ad059188209fa74a6b45e07a9f2f4ff279658941eb3205cc4c25b991a2421c35b32a61610ea5ad48c18e5c966b5d6f9e57cd1a2b096ccf5a7e2a7e623ce1d910102a25a572d88da9816a1ecb28b3146e4cb266421fdf7af734d01ebaae04432098fcaebb2e93ba746a5763af69e52c8c93a68f511c907d00b594da25154cce90d53440d2354bd613067da34201578b3a8d4fbb9f0b33ff2c5b48a41fd2d4905f884ee40b71f41c82aa34366f496e88d441eb0807fce725d1e9d9ddb007028d3f78bb30644325c14cf93cb0f49cc36eb223d281f8fca447e2501d3308f5c46cd9eb0a10bcb786d5e3ecd9fef7dee9f93a66d072f2b3164e1da1f82d11e2d639c7152c7647d64e2a8d1bf2e32794d9c49ed89d65233d91afd7e112a1ad184c3437c0a508b199da77675291ddf897b8991e589545b573b34e50388be0eeb067329d1887fa92c1bcd15d3099a617ed25a27486d308b3e7cdfcc8fc05eee44833c86a63a61dfcb4216c7a10e3077f88fb253153d94a012f46a940992baa800d68fe60c34600276423a717cc0aca0333a61901f34c7acaf42843c493d8781d49ed37a1940ced7b251fb490eab5559d160ebf277ea69305cc055f7245a3a06e17b57904469c4209296d6cbd75002fea671cd21c78724f15d75003e4f8f009f156c056d526b9d7f3c059920f3455f201be8056480139364640708e00d5958e39b26d8e0a50d6c0ec02a9beaed972117d807e6329fd0f1223b1e22b2b189f537c30ac4031e4129c8c25772dbf9a072fd15dceb4ff0f00ea2214585ad9f050012e0729a8d13598645ed4dd5add958d25fb609d262d68b32c0baed5e6e92892c9136ea5ab1a0d0d2c6541be1fbfb7fbe262a5dbebce2d13a006d427f99dd368bf33de53f1668078840aaebb5f982e616666be3c8ea6ea67b285ff3ad31e1f18325499d5e737021963016d018fae4526817f6786bbd10bfc331bc3a679948010bac8c0c12dc36ba471459c2ba6a90a475d73864bfe5b9af8391d75653d06a061b412389d34eb817f5a4e5999fe6e53f6e849bb8a15dc8490b7ebd08fd0284c5d6619ac57de2603eeea46bfc0dd3a6dccc9769db1ec593bd324e16f3b1c350e3f8e07c4e2bf0068f60d3a8badb66c7dc966cc84e289026ab7352f60d72c2dadb447271211a3b74781dbdc65bd6071305991b3c7b01a59d00e330081660d4958e35d03f0cf73ae967f93fe41c1ec3cec345506d421433aa8a82fa95f13825228bf0738ff10a3f15e4def37a0ebd6b1b6e5dfba8889d3c468998f51530d898a3becb0612f19e8fce398bdd5613409621ba43b2deb14f3bf6d077b6eb898f6121028410c2a8da412371840a43295c4c2bd7db3a7f2b9680d9639cfb2b5d685cc9f5c30d80e03a8b17726a17f366552e4296aeea1c57ab2a8e8219834583cf58d52cee4906f84d5e279f8cbdf0ed7302575789829ac262afe824dcf6ba5a59af71cda436bd548b369d36f2b2fc224e79f5c2f4b9938c2dedf2bdd0ecd625458ff3550ac4307ad445c60abad6083a96f679b7a5e21b6fad06aa2479824360cd2ca388ee7fe91595174e8c4adf41a1c7b23ddd9d640630dc96bfad6dd49eed06014355804bac532ace277d6b80fd565a3d56104fe94f2831fcf3c3289d0a631ede4b701faf601001e6661cec3c803ade8f8c427d21ee43a4cd5a25c76507245337227a7e0d79de0751dfbfce739a0102faf1951e8f6abdabfe27309ff98da3da08ebd0a0105acbb9c6da063556aeaf7d818748777179a627aacd53e02380ebb6eca8fc379edd2e7b6ec1beb5e400fc9285742e89f5d659114b4c85ecb588d8e08c22fe2e6e4132f9c8fb38492a6c054b4ae778808661fe840c6fbe24863427a0b0a694333318ce311da65665c06d7d0bb17519242d75a85a33436aacadff27dee9ea024b9511e4fb6b4a915b89606b99079a567a20b3a20169e10ce716378c5a3a03762b2d90adc8c069712f9881b2180906e2eb64c74718f6bc19ad717d63b9d591c257d32a6b73c3cbce5b6b18f70031fcdbeecc3db6abb9a3a11e2da4089c2ba39a966b53cf683c30639f48515b587aed13c971b36ae737cfc1f9e6b4266229a285f21b20805af85ab72fb0e983b8fa11fde3892dfa51c6abeb9c6d3076e073faa1f8c5ce00d6880227da91eb3765bc66745b6ca88562a7ab7568234b873deab6afb3607aa2f7bc82e22107b438234e00adbba1ad8172678719c50962059d68ab69d4a9dce88a024d2ffd9daa42cd6875ace29b681421f4b4fb4574fd4bb8d18b0f3500dc0b4b4a2f50313f4fe8058379acfa5cbb2f03313d51950d627d0eb97a02f95a8afbce6108d5ed99f13e67707511c2e55ccbddd9126a4c770cca1c7a024de3c984eab5c2243e2dbe83efd298af83ed723816d58f019e2a49e930ec84add2452f5b7e4bec0c0b9b07ec8a4a05f066eefcdb17d049dc8c0f5751142f9cc2df93942aa86482462b60cc9c82676347d6892c6c446802d79ccfe4d52d316f987dd1ef01f4da5ae600e9967962c70f8f579c3ed503a13e01edfbc632b18e04312b42eaa2937625867fd5b543129ca00efb9aec2de3e4668a92020990e601091701a4e05b3b356d5e4de572950ca7ee7cd878035c1d72a7bca9d4f1119deedabe2cf22a566473ac093f518765bce535eb1bf997f865a243fad86a02d81e2dbac14f04b0571fd0daceceaad00f54f4c233a200f692cf75297e429b7bec0e05af05133eabc96163c5715a63eaa365339531e7d0397950785d6b594e8ce612f47fd792a26fd406f16d2f05c0a31acaa96e087198aea8f3eee308c9ef27ab60bd45ad1f96314a8f6c2ba2148c14960c041bda1e898fc959bc48c0013d12a7c384dd87dab14803ec97bbe01b7819bc9de30809aca207e521c34e1f97fbf3d44abcb1b1bae72a17368df3a66b3b88a18e9170f6362ccb0bbe475e74aa2e3562f6a752f9b0734a45ede2e1e4d439eb321fb1f5ca697102775e39f647570a0b764394a465cd01362d08b416656c74cb89baab8a12f109d6e609b8a63f596a24d4039556fedde5638f97835831d4659915e243c6bdcdc9c89a2466bc38350aac54bd66a096faf002422b83145ddee3337edd406037ae9631a53217ae68f146db5f6c5ed6f1535ef7ce59b243dc9dec7e314e0739acbcf7890e208c520e6a66773504695b6018f596681b2abffaef5506f027e8aead7f3700a03edc443a7faf957e9438d5088b69594b6fdfaa26b543b9b973abcd8eb4f202fb644105810aa355b0694d1b761e435f8e283df854de68a5306c0d4d51566092e4ccdbad5c60f0a7f9b7614fdceacfaf63389ecb7c081fa1ed354b448218dbf266a5080d39e589ace79e998cfe32de121e4efa3c87b62c27957fb6e1e7c2ea4979c6c722a624a16d3c84b15f312e341c1869ee6d6c15947ffaf84b0329ddcd8397cfc47e9072d76a6993cdcb936e5cdb0b0138f648eb200cf39cae1a383f8e9bee5844f0d114901973d968ccece2330a3903839495ad29a73ad679953848ce2b5e343bc7792482d0989920702eaef6e061897fcdacc38bdf19ee3dc84ceb454a3134e3418cbaba5e924469984ec87b1c6df829eb8a28da9e91cb12d1810f5d113915b27e527f1989a92900746d9ea2eeb0e8722ef4f64c0ae9ff94d6fee2c6c31e8538d9b7ecf10d459a9886cb28924bb7db92227869afce4052bf604ade7d0e8dc763e4bf83050f89752245aac9c0c05d630bc21c1e8d3630c4c78b7c070f1d28a8d76affd728840e57cbbde078d3231c3d7af55535f09aa8292d29a386ff125546075892d3f3becc77a2238f0d69a705141bdfbe47dbc68553a9419d0a4f9b73d8657bf48f47e30c83a7c09347be996c9ccd2de3af712f1800caea5d5cd757304e04f2acca073c7ea0cdb7d28e9ad7841dc6e0dd75249c4beeca4d15786b6b4f432c3b0ff6e59a03f0168c4fec315f1d4852818ea4b3b4427db9ce795c1cfdd3e6f722920b3b456f33bbe04f59f7e973d065da6d1d6a9892adebca9fc8ec778b19c9d385112138c5368b8d20e5c15949e52a1fe99891eb1a64e76e0dfb66a0340c13f986ac43c9e6796e80af2d1561959b0d1158c3602ad8b30074b6fe13a9c37f6e6c0141397f3ef42f1c30dd601e1707779e606411bd4c11ba5711e5922619b6e584424e33a8882313cb7a3b4e6dbc344a1ffd29a264613b8c6e71ddecfdc4f13a63e575f211b9ed2850ab83c191208c44d821b0f918113d543ce6b72edaa1f8dbd08bb7c1bc757b916d749af2ce1f52a299f6bcc835804f87475864d609f12b3858d38bc36733a8b87e07b67249139b74aee3657fde874f781ea21a913d730d425182a4c6ba68f603ae7a66f5e9687f9971ef1cad825749c8294504999b00bd059d0f5ec3ddef09bd90561c8ba2506a13d227bd8810758b35048dc54191ada2b9f1a2c1ca435c09741dfc280bbeb410ae296011a3e58595c1ba74ed79256a39ab04a3215c126c3f208e59bdba89f6fe7fac36637789ab31429338a6c1c5085fd820d08014567b31a53459a83d5d82862b0080538654297864049669bc2929d1278580d18f604dc6c5ffdf6fdcc7efa06d4c93f3b4f5ecefdd890143aeeb631368ad3ea22cdfd0718516d1ad9fa5dacab86669f9db2755bfa3e0c98ed7da99f53853d6ba181a0dafc5408eb6281cd1f9869a57f50d020228e80bda43f5b2da09104700e7da623cdfe4529b752bed2f7d7213742b016001e9a5393f642a4a862b80b06328be9e88ea28ce5de4f7a686a10d390c2ed5e95f52ab83d712c19ca1444b54810cf710c0c5024dd14955ebb971c4102f31c0e7db5b5ea43cc6b88315fc518322b863043528c6610e6f63bc5aa64ec5f4acfa3db0291ba4ea2cd2bb1b558d14d99d06cda28ab4f28edf0285bc920eefdc41795fe082faf4bf466899c71b02d88e262b8996f0863e04e20a27d4c413f6b0442154732e21f45285051eb08b6b0ca08ac238424889d140598a5e27afedeb40ab745c26ee2065a8db64d3fdfd752a0bd2d6b18ff85f27722f4c8732ea8519c2cfe17c4ef7c9d4b659138c025d0a362ed5afb1465c4172a4a5784d5cde2889510c562bfdf6b178e95de2a1c2db3bce3bf42bc7ed3217e6bf95cda4fc8af2f2caca82721f7f41163227b4a210a56ac7d3a8824eb328b0629bd7811e8c1cf00962564da34cc74e73c0bd61c85b1d9083e4622d422c2cbd185085fa7707f46148af807bb7d03d01f558b0e703bc8f617d02f66cc15b02d46fe15e09e8b6867a0eb0370cde10b05e0b7b16e00d0bea15303d5bc8c18d00a3b742f1883c18e38ef430661df158cc38eb118c75c69be88c2929645194bc7447c98414f6c75993fed6bf37169cfd679877dace38d3a4e05bb780d8a0e0d4bf01aba002914a4bc74967da21d027ed2ad0f54ee069eec05d7997b72d640d9b6ce4250405492711da504c1a12a19d02a9f2271bec88b7b2dfe5fa5efbc49de6c65efbc44da771cad08093992b5f657916fe3bdccb2989db11d064a10d95d4412589494323942e340780ce2477557abf2e6f21294890768a9086c4b4a110ea2442da480131d6a5dd4e66ea209dc0a95902a773a3ae3721296890728a9086c47466b1d0215f4cade8401d521308351220150da92531d2910670c0fd2b3c7e60f4ab121cbcc77196f9d34e6152864850e056dc75dc214fee6c40255a24753585ac0ac85dd879e90485dbe84ac8dce1dcf17dbfc48b9cf229de22a4d1839bed8a25533e6772d7f14c40166bded2103f2ae9003ff205dcc8458979be284ada7c59cf75e34d9057aee8c6cf7266effae64e950c8b81518306892876170b13c36b57a00db2244c02ba52d3993dbb3b78951b3efb33b84bbcab9e90c7ee8d9ca59b9fc9d9dee9abbbc9d99ee9bb6ead3b18e4799726aa201311696a9303382f0a7906a89a4c74a0998cc8a0632ad1406632a283c66422039da988061993890e6b7ce6cf704756a789ac0e21588869f9361df7c5dde42cdff915bce50c9fdd0e349309597440251ac94a66ea72993d411ffc9ddcfa30eee7a24efe6ceef64adf265332d0b9e6311963cea632c3d8c6640e9a91850cd7e9cadeee0c9ee50edffe0cce24de55c9aa082d871ce5a33f829bdca133b713acc5e9f46e8b68dcfc341fa1d90e693c699dcb26a96bd6680e2f389c2a37a5b3e307b348a631380c42a4357f1ee4837b9a35ca09212656b000fceceb4492739f20545d8e8507dc18d79a9818906c2137c520cc15e7742434ba02a19076e4f58019192c7d399251ae233019be9b3aa2e5914e1c1db2664f550517414f57b6762737ab92d0688b44023640b06aebbb4b2062996472c14ca42d8d2e2955cb8ce7451b4a3d9368293ee228ac695f9d86cc10c5973b8ce30fa969c3c0b57e9ef440cae9aff9fc1d15146da359aa233b8fb82337f354585cb41a214181a62d5082cea06260cbb348433c2d532ad1a752df81304d2184dc26c9039be32df9a642a220198d6d2241c1cee79ec670553e9757702fd3ea1c454819a9b36a78aac3a6ade4461ea3ad85075d2ebcf6746b2afd09cc20b881d13d50cbb35236ed637f5ead7b2b4905549b620afc87c2068c675ffab073cb9b34e4b737df865612414988039398a2aa182f8525c6bc47474299adc6995009fabbc050e75db178377a3ca9f76280e80002a447342a777e065b5586951628d468efd61a68dcf67dd7247cc3b22788789ac412cb1bced283592609dba8593d41a9a724e0c134905125f11be279f04423bb94fd2b5c490d7dc29ef0ad1d70980d8818f13f8e40d3985d161f88da7572117da82febd79fb944a778142f28d8e24d3aec7356610d1b2753a42d20c26e72d51565cb8b8271d18ab8763e46f8114e155a45dc6cdb91cb5bf1f5e1f279b25e6fd6bede8a40f445e10f643ac60d1b3469e8d1cfac21119d9da8a13c3223a19a92bc2107a49c0edd4315c9c42c943dbfe69ee2d5f03f8f46dec179436ede637de7535c81ca4f90892c674a790687ada949e030c0491fbf0c27a3d6ae4518cf1e584e3eb97332eef4861251194c0b86e9ab49fc04d52e4d28ab79d24034fc50489592804238a5a96e8a3faac3cb4a8b22417c79b433593186eed6c69590835959157eea68360205854de82de7177273fc04475d7eebf11f4dd3c49626c5a700e890374abf6ce629b58f2841d748a829ce42a09220680887a3e640ca27a4edc866b1130f0377b6aadc3c007f89000cbb262d8d56ab0aeafdf4a64e3eca5aa0d99e37a2cb96b7ef26aaeb68f9f5f94803470eda6bb76455b0db72e4e5489240a32c784af46e7fa57d2534b3353465daef752d2a2b0b8272389b0b4710755b4256687ae1f1273b03af25838159a7ef18f5d5284058df41a6ffce688c73944b73a05befee820c414f3f958aa8c4cde481db1a58dc219af53d15734c910b66e1116b8d867bfd05e2b9af19f574efab944eacc0a171a93758597bc893402f26be309a7141ef342b274f4e48589a6ac5dee6af041a4bbebf87ee96833c59ea7408a0790000a18e16a13762e7781496184353e05624e798dbf0e4282b2f368431bbb1f1a597307358a7a22678ce64e5d5e2954be725e0c541f23c24c404b3e71938f61f48e0d033d480fecb12a4fc14270da21cd3531212df447344fd393517736bc53ab784b2ab622f21f732a66f6dab323f6509135bc72ca7c1af2474082ae68708974196722c719216cd700c54d559fc169f28befad0024edc43912f17794f549c95816946631a2d1825ce7c33f6b90ff2dceb3d1aced71c937385ee068c1f5653982ffb91bade57ff08702c72216628d2468d953e5f557a8d34619be9266d71fb8572b5f31f833dc6b118de4218d2c12f71d913da2e7f2c37176d2c1bcb1cb09ab3253ce30da3b0ac8d792bc30c309e40cf3cc58d9176720d8ebc2ba5454c1569953dec95cb4fdc86c38e820a056089374181379662906b06ecee0de81a32dc1df6ee173616008b60c8223024138c8078f029b0e584823aa184adf17000df0fc4695071c9866c33358574cb1052cf075094ed3f21f0bcae7c457a4984eff73677457e8eaa8a10bab2bc5c95c4dea434c1fa1ad8c9fa4bc9b28f5173d13b926b3ecdb8802785de77721b74d5ae9c79db32eba8c76b3e9c9b33ca4240d0f3a7f68e4240eb54261fbc7e7a020c3d2ec6fc3872112464fe0da1e85809a039c026ea9b67d89a88e19fbb3e3854a1e44e1c62a31c6c66e052a321e13781e6f2c128890a4d82d8443c8763cf3f2a36c777e27d376f31c7c3fc746f193d8c6a117df0012792eba2e0f0c3b1a935d0522bfa15b010103b8d3225b6a6eaf9dc079826e5184cd638c85a07213b3e4ae3e438d603e9527d2d028af2e6655f59c08195aeeb2dcdeee6c324203150cb61d36a3fbeabcc60b1ac0fbb789d605928b512a1af720448466910cac456edc90074ca31e01d727133d4182c4a09459339c4dadd52744059d431ef0a041444ced98b4e6a437f03287a255cbde5749be3b2d85ba3f0a52916d8127e0a067fa85f40b3638adaf30ad897d69b68df425bf46a1818e5f869e13ab743cf01b0c88b273ab0066270032eb467b1b636e1501e756375dc4e4224decf40374152d007d59ac7ecaa2b443a0e1150e060499a4508282d6a0bcdd74681451ab984fe4a72ef312181a68d5f448ad0244f69c7484714c4c34adbac2c0010a95aba58fa25c1e18675b0d694f1a83feb12136fd4b8505c6782c6a9905dbed6ac1ed0613920e2cb797e2d079d094eb3ad255752081096c8b7c9916879a3bf65e50e87384a011b6a71c81db95c760ea90a9e9467fedcfaab00ff00e5b1367635798daf6932aa77b4dc8f85c39b1a91bf1a468e8880d05ab2ba7351f2bb640d976cf79499cde39626beb8010cba4471b93aefb3098561723d9724ae8fc2243b54e15db737b92ba222a2ae1270ef31b500c80daa9d544f2543b6bb1922046ff8003f5f5cb64e2bfa2e36b98abd1b0f24bad71f8639162b9111a45a3f23fc2b8f0faaa11079f323af7e6fb85cb0a430151e65c707bd29234af3fc6566ed9f836368ddf77344c7cfa85eb1711e59356a4d662272d0f3a1793c0a69081cdde43930f420e86b5ebc3d1f60ca29705410cf21ed91abc7bfb2c664e9ab3b855f8d4a125faf40cb4325e0ab8c9d48cfed39c4519e65abb73073e5c9457419867a9594a103eca03242919fa12eae42bfa8111b66e5cd0cff222872038f8c458dd8fa093d82d6153e9151cf5ab5cd3e069700dd7c5851ba5a8d8c111cd24eba91fb9156163aaecef783eb07c45d460586050151f4c8d2acd3ac78d8275af7659ba2f65b9dc8aa97daa06141989bf2b363558669ab28e652232955ccd3ca4846e615632bede605814ef05f8ca1fde4fe7d93f7b44caf62fb215d64ee75e50440bdd97e103061f2d47d7ae84c56a885726dcb15a0f203df836d4153ca71a42d53cca444525fa67fb53e53c92c0781051d132d6835cb82f4a4e500c63d35aed22e37e06717974e6e09d1aeee9641440a29384770a8390dcc94d6563453b0994ec5bd15852f300b719ee46bbc332aec9c83ce8e6273b07a7916610cee880ce4ab38ea6e0e948f6b460a76d7a82c911db290d165da360b27b612f9a9a1b6e9177474f2395f19c2b75f5f26854d9ca318b18607b5ba23bbea21dd36b8c291bc8c458d397a72a5681501ce712bbd0a377e4f38fc7d3f2d8b7759fd9e1544a5eb2f312080706718a2b5bf77ca5fa9b7bce7ace0a2c199f4709f60965796bdc93f3dee55d998b62f781819a44c4ab800b6b401871f85d6e6a4e94a9c13aee331b2c03b56d826b27abef5effabb48038cd687e2e503b2f6c81dcd4e49373f5a4cb6685fe6fb5a16dda6770d03f0fee4abc61eba65cf7bfe54125a22f432b05dacfe6d6a4ba146a0d4d34c2c8f93cee87822f6c8957397a07ecf5ad0984f628c542730aa9f8561775218177c22b3e0bbea30d8c9eaa90c31aaaa3c05b0d7d41a6757519d35a2f3fdc9fa9ecbbf55d00c527989fee6f261a6f9e8e445dde20f92bb62ed25313c9b07b11eb44a3be9a4b890ab6a8b299576699eee3be54a73a7625ceb8e07da99092bbd04299d26786e77e25f389bf0545351327acceee54cc2d565dbe1452d66c89f830378d0bf50261c48e3d017ac712bb624aad415037f4016aed7a2bb90214e58b96b561c722349d2409192d95b4e05f5127b893317084dd508b6d792503a52e6d61182558140ddf7cbfd1f03d727d1e7bad52f0e2d7f8d333cc4cd128bca90e62863a85ac1993fcd406f9f2f1734eb877373020e647e9d268ff17b876f38c258f219221a27f55045df39ee55b93c91680fde0a6b0e445ecf7e57a3516c1fc4296def6e6727290ecc83cb26801a28b4336f7450436bc8e5b4c185a2ae5b9ff4db68147f101dc20b586b7855efadfddda7ad2cf2a378ee87526cd4ca4b224dae1863194a9237b490000b9cec6ffdbce29c2a0fd9094785d6f73f6cab85ae0f49d7f01dca96fbfb8d689a4ed7c0ff5bdd7cfc42e6352472ffe4ead6ebb8e584ac3a12604099602182f7a0d149cbb54af5c2929439a2da292900d801d09b82b144e7638898790d19a65f64413ddf0f4c44f7bf585dd297cc67a307ca4a42fa4aea4119a43159b7734166778b40e468d35c20904341bfb7793b9a1707080a2022cbc12c1272bea3c159ba0c6bd7f79a4b6e62da30f8f9583c5fec7e0748aef28f32e8670b3b096956be29851482970c0bddc4ce4e657dda992b4cfad70e1b885860a6a0ecb2021fb2e3a42c370ef36dc5e7578934413cf954195350549d7e3e30ce29e5ec18c764d7bc6377634bbc6e3e8b90d89cf867163efd7c3691ad0734fd0e15a65e47c10bf1098950f0f9bbcbe0bdc68f28f06d28c0f6d03f5fa605ea8a8b87034af17bd871631079364efe14c7bb2ea12c5b2a66685e2cc3735db02d9627db276c13bdd98ae8039be426dc76648e89772c5d10bbea03843c814fc8cdbc084edb240376f947c2c20b52a99df7919f95a7bd9e8fdd0a599dc11e098f4d6f755d6f127dae2293bdfe1fa4212f3bc26bec70b0ff3c5196ddf4c0d8ec706f01f41f02caf05fa03770f054723ccff33ccff33ccff33ccff37c8479ef8f65a31511c9eb113aafe33d6866ca9d9b442ac911d4488ee44866f55bb7f9e488e625e109420a160a66b5f9dd8dc92a4f7a144c172216ae7c53752328985e542e4a2f84d4e2138ce297ee225c886c95728251342b98fcc71563a9269843b75f9139896bdac10473a57b9c0b1133ef7396609a0ec9f9df03edf04c2518d24dc7a7aab861974c82b9dbc53a4caeeb9620124c9ea3e95eed3904cb1fc16c373965c4478d609090d3a3f26a76a45111cc26d3eaffe7b57e792298c523c793e821535f0fc1387bf1d244368560d20f75d9a2c58b4d3f08a6b2153df7e8b153e80082218b97655d13c9f1e7f88129b23c3ec7e71241253e3069aef999c5f868983d30c8df47e1912d0f4cd13d48138f33bb92b30363d9d74e5aa644f2301d984d2f050f42227a249e03d34f87ef1af93a9c7ce380120fd2d53b8cb3b88139e28bceb407cf7f4b163630aa85f0204290199b9890450d0ce241c418d7da724f6960b614c2f37cf43103f3a7fce9e413d5d3586460b208a72a51ef5e9f8d81794ea2c7922f9d050c4c22e369f139d6e32867f10243ac881f428acac1d49e850bccf18b887454eeb148a415e6ead4becb519ccadac10a73c78a3e69a973a54badc2fc196137162f7e6e5285b9a39c913df73879f8a6c290df53fc547d3ba5122a8c5e1d24455e8edffd9dc2d89bd7991212a53ec814c6e97c39d1ab97c23c1fce3adf4bbf7a278531626bb23b5946cc4761ac9f8b5ef51f5b6f89c260a3fb51fa38efa70787c2e4a19ec2c7e4c259060af3859ab4f393fc51487dc27c35f3eb16af27cc12522b9569db09f3e7b093ab12fa398ee484a12d8807ffb1dbc7dd4d982cb5e3c9b9947ee44313068b91be82f5ae7dd8910973b8c48e44a5720af3c084f12e4ab744b0f2387a2e610877ae21d93523e5b18471e3e3f83e35cc5afb4a98278f48c751e99430d59f840f753af609c94998a572f09b6fb7934224610e35d9ca21d4a7673d12e620eadfadcf871e390f0993440f4e44264887f41e61bc1cc4b22e91e838a48e306acda95e741ce7fc63234c3e15c9dbb5e27c0861846935528e2cb24598a3be9c430f6f73ab5684e12347a2589ee0c94312618c554bf520b8570ef28830f8cff6b45f586ecd0e61f458d6673b292adf6b08535d4a32294dec6eb910664952bbd517210c1d94b4d69ff6ac6410e614d73e2e2427a27a08c22817132d5db3c53e3210a6e491575ed2def01c018439374248083978cb1fc71f8c39a923f585bbe78e7e304ea4ce9ec53be5eafb604e1d25f3a032f3c110d299e7b0c6ff724aeec17c7d61f35e759fdcd6833165c53bbda7f360ccfa2877a4fdeb1dff78309be7be96f71c24e67607935cc833cb71303a5bdac11ce13bdef79cff091f75307ba7754709251d0cafb9f6e3fec1a6c539185fb3366a3b0c9df4cbc11c6e4739bfb3079d9d8b83e9e42d8d9a95af660f07835c96fac80a0b9f7e8339248beb131eabc7466e30c57bac4daf0e262d6d83493d72f638e5d0c147c40643e4ace5415b8ae8145a83a95e36423e259590623598fa222b27f4950673dd6ae4498bd0153b1a0cf39e537210d235619fc170d531c4424e9f3a4ecd60ce09da3bf739b649c132982d3ad7cec30e25e48b0c86f0c169c590d8d2af2613b01883e95af33b8e2689dd478bc15ce271a5ea1ce659c70983295b08d9c5838590ec0106938c5e6987967a68c7170c926a925fcecb8e72a4170cd1e55278c9d93bbf74c198e281b8e6ca5c30ea071db4e3e9f8f603b760e816b50e692d2d98a73f4ab17f46a2cf96058356eefabfacf2f8180bc6d1b9530fa26d2449af60a8b5afafbd76c9b16205c3575f841cb2a70aa6103572aeeca8e2c7492a182ea429cfd0ae09396a0ae61c29ddbcc3d50b714bc12cbebd67a59eece48b822152ef764facc7991c21600105c3f74c48f1e07ac62c4f30c75972b411392de5cee104f3668e67bbeeb485b909a6948d9ef34f71ad4626186b65fff4d3c7124c163cec3814177fb9cb19b05082397cf6524268a790104b02164930b4ea448796f6c17fae0b5820c13877eb39bfedc19b7c04534ec1242f4a8e85c508c676f1f0b142ac9426aa5ac0a20886289236f573902729342c604104636ba4fcdaa155ef42c810cc4118e9bc74a9100ce12cb77e78e1bc2c244130e5ddc8896fc94155428060d69193b8bd1cbd76ee07e6afbdce321db2bc7f8841c67831c4d82ec62058f8c09cf5e387b96e89fdb0a2aa0d60d10393548e53ee3855b8fdca860d1b368cb0e08139e5f3c383aa10967360b103a3955ce8785afe531e0b1d609103f358d08df4ab8fb4cc1b484751010b1c1c163730e4f824870ff452d84ee0c51721680216363024d1faf7403e6ea0186378310238605103b3cc7f7894fb30babc7741027402163430458ed84987207172dc0c8ce1956445f26cf7c7c909c2b00011b09081e1bfb6a673d4edc82558c4c01c26a7b9cbb77ad13a6e88b10af80216303064ad44d7fea9669667072c5e60ee94b2f55dfad8eee15c107103162e30987410c96346b8a0e4c315ad30871d84b98b1131c9498c830e57b0c2ac7329c7931e4b8ee8051820e8420c2e4ef01fe0c20f70d079f11f08238c107c71830157acc2142a694b3c8b20167e071c50b84215b66459597de49c194985b93e5ebef59c6b6c51e34910c68b41862b50619c4d4b1f8ee5befa6a6c51638b2d6a1400ad0c579ce28e5244891d87d241ca0e3ba8ba1ce58b96d6b080036ad8b06124302c5c610a43acc7dfd96a32c444245c510a93558e52ac89f01f2a4f0ad38d7dbc17631f84ca7370c5284cedeeb1f383290ac379bc1eeccaf275ec0985f17ddf239b74946a3b288c3a41fa438757e8fb9570c5270c9e72a656e5b497b055608c17c313e68da01133bc3e0eea25c153c0860d127c18d90943c48795332fe43fe570c2509e537aa2e5641dc89b304cce8ed2ef36d371900d1b10d800172bb8421306edf82ab775beac453750055764c2541b71dc527503e952700526ccf176cb3cca63c13630ba28819de08a4b18224e723b320b37122cc17ff14486708525ccaf76eeada2671b9204c2159530b707d18e42ee387b9c3e1f5c4109b368870d49d61eb9a39330e708965e23a4e794d237902461a8d4e1e5c548555bf806d28ff1c57aa0540fae8884f96e42b6d18b1f7d4e720109e37dca362529a683fc7570c5234c7dea7bafe31da7101be3c57084b1ff4222a794da0e3a47e1e08a461822d9c73be3f1a49c446f700523cc2f2178a4528f95155a84a795fac1aa3e4598cd4572c8962de590ff4418eab503e9dc915c7e50dae00a4498c35cd4efc0f643b50e61b6f011112c758a109234b8c2108689b2949c7ee79e6d21cc6d629667fca5edd326832b0861c8bd59c1ef5379580f3106614a23d1fe63d949f9713790046114cb2fa993e5f6f055175efc185ddc28011763bc070261fcca988a0895c2ae4f0810e6087ae6d942f66597fcc1a83b9a173e8c0e3bf57e304dba2cf6e14f7aee8baee883a9d347ca390a7b15ecbf8174900baee08339db47ee623adef7efc114b2d6a38adc0fe9e3e8c1a87b9d1fd654ff270f46ed2c39c871b77690e2030406931c65ea44f5f98bdd40f2c28bc50241170e00e3dd04325661f24e0fb276b7f77854615cffcb519ad6531d252315a6a4f6913f4a74b3d9322003156423659c826c7c21c31464c34a6188d6f2d2b14cf99ba430b4ef496ebd0a23df16440832466148d91df4659d7fc71635d2860d1b368880204314150ab2210314878c4f900d4f98c3e3402b4ad81620a3138674fdd0728a90ee3c9e13e634563ac9bd3bbbe89b304545c85126dc5422d7842164b4684487cedf3b138659b5f3d0e37414b3c684e92355434acae4277d09435754756fb598a35bc214fae921ca786c8f5c09e37bcef3fa78611f634a98ef4387d71ffa434a7812a68efe2e3c5efd258425615897c87e7ef1c15e1c0973be7b14dd23a92e624898438eee5b2bc8e494b38f30d7684a8a2fad234c97c2fbeaa7f81fd6d908b3dbbc87729dca5d4d4618b73fcaa1865afcecdf224c5f593dedc4a81cc5a708731c3f773afe4ffe798930f7a656b24e164498f73ee528e2f4740e2c8730e41c7988bcd6519a698630ac89eb471d3b3fec14c2b0ff71e5dde3a8e3342104e2dff6c147eb200caddb932cc27faa1484299fc713ad25dd6a8504c270dbaab37d9e254408200c97e5f93dd2d90895fa83f13a48955b55f9c1503d3f93f693791cda07e3e478653f8a79e58a64f0c114553da48bce7e313f64ecc13cb5923c947f946f3c64e8c1ec1326e490baed3c76c8c883e923c3a27b0e6be6918107534efe8bdbe1fd69f21b4885dcc11cddddea99c9b5e7cf0d242e46f02310c1174f481564d8c1709692aea6a76f2085f1639ce5a20ec60a0f268f854dd55c70f17c820581d2c1d0a659366fbed9fb71514a903107d34739f96b67ab4ea99220430ee6143d9ebd89de4ae83a071971308699bab8f9e5b85396830c38fc518cc7f5e1be6f305e9ce8b1c7fb606f4b37985646be5a6bd36c926d30590e7274ba90b342bf33830c369842fe78903fd696a9720d86ad0929c471ef0332d460f6f8d43a54f2ee30242c230da69af8ddc1752d8a9e9890810693779acb33d1f6fc2f19673047d1538ae997e3dfeb32cc6088dd0b9f83914a33393790f40832ca602813fdc8426224194c335d31a95722c5720f8cf109c8838c31182458fda78df197a81e04021be0020083902106534a513cef4f0729da85c1f471103d2a72bc83b26f201102be8880fe4106184c9363345ec2b9e720626990f10553f607cf392b8d4be60563d57fe49dd31d1132bd32c8e882213aa79c8f2cccc372704106174c2147313d4f587b8a9e23630ba67ca9ec43a647b9daa205b3f6f57f78163f8ea7bb81843b909105237c8e3817ff878b2e5390810593f4cf7858fb676df209c2f81188800632ae608ef1aaa5e76ef95bb981d405177f0214ac17571c906105838e8855647d105a1d30c8a882394894947bce6a850c2a9873c877eae421895a7e1532a6d0c64f082ed91553195230777ace1a1ea48bb66183a84821230ae6ac3ef72bd19d63f95030e48dc81f79db4f309ae5a062a4b34e30aae738f987af4716df26183a8ca5e0d629130c1f7e6c39858ea582049760de920f26a5f75d0b4125983f2a6ff8689d458f4b8241db2c87eeb821c190c348688434a9d21ec19483dea7dd930f6b2d23984d2fff7a4e043fab08664fdeb577edf91611110c5e51eedde3ca47e6100c2adbb1510d0b24400c13ec036a6c51e30463800102e35f74d1801a5bd438c137a0c61635c2f81b62ac026a6c51836408c11423071345e6263cf841307eea2064dbbd81609c0f725866ffcbf881a97294becee4a84a525c102141e91e64f8c0742527c983949f3fe981e1e24d79ab57b84847060fcaf1ef71a02b5e295c193b30cb4bad84378917242b327460f459091d786cd7b13222091939908103b3e57eb4c93367db08f8a01a1648401816f8220235b6a851630b5f408d2d6ad4b080036a887101cc47c8b881f94224427d509233721b98e3d749eae1d49faefa06193530254f1e454f2d12a45619343056597638f329ac72bc8174d41564ccc09cfa3cb8dcf0b9ae1429c890c1d6e569ddf3f2c2ef304610820a38002f212306faf8fbc54ca94423b844c880813987a129f5b177b11205192ff062ac5a8ae43977baf0020c30960b74830c1798a3a01eb332596ed112e30a91452b0c67fae5751d57ce7537908a14b2608549bf2bee74d53d7753c862155a5ccec92ae22bfb0da40f84200437b8782fbc0b2ebe084165a10af3e5a057f7e13064910a7377e78e438efe93df55811a5bd4b0809619b2408539bdd37a6c9992e5db82b238c52187f56e51c283843186185f74411e50638b1a5b1839c54116a630e4948bcb8d945a2f2e8521da476ce477becb9414c698ffd0952eef55f24761aa74cb1b15496d2e2f0ab3445f55d297cb71bfa130a7e0eda926697fb82e280c934ebe423cdc5b3b3f619c8923df6d9b27cc16da5196142365b1ab1366ef0b21eb6b0469f9e084e973768e4aef5352993751aaf873cf8ed2fb2097822c3461968b1feba17e0ab36f26cc1fcbbb637864d67d61c2d039ee28564fa4bc951642169730dd5fa7240f422764610953d24a11da546298442b610ec3fc7aefaf3ec50a75210b4a183afd8b618c7124008f90c524f4e852470739631e491c78c7e4c073f8ae23617c0c8f663a550c09b289da7e0ef982fa88536fae7b627927dd1168cb6cdae7e87536e238bcb156d1eae8b0c288b2e5bbaf9c1f7eb65a041d071d7cdc7badab2a22558f3e1f85ceebe5910872a53d48b29d3e7201c682a0c0d883c0581090304230c6ea09b2408421488c497c2cf65ed60d0c01a1304620c617a60e61f4fc97feb072eab8d42c0c6108c9bd2e913c07d31dad218b4218fb4ea62eba4f48168430448f2db23a780761b8f00e2a8764210853ded689142cfeadea241086b9e49583b433112a6401883f985bdc7290f02eb943dc0f86e8c9a6f2bc781cc7de0522b0c58d31bac880185e7851801a5bd4a8b1458d2d6a6c51a30224e8c20e2a50c8a20fc62ee9f22854cd69843e04e62a0b3e18a3b6ac3d18db529cd052a9c9fdc8420fa6d2cd8ccfee4a9e3e4a0959e4c13c973ebacbbbab49331e4c1df9e4b0b63e45ffe81d0cf1e2a72812fa3e4f720759d8c1e0514b9ef3d4f92aa47d90451d8cd6952b78c82bd1d7d2c1f4d9ce4672bfb4411673304978f7af0fbb1c0c963e8a1daeb974ac131e64110773449f78c9c625c4b8c0c110d2245c87b46215dc371827fc435535ff30567783f1fe2ae6c456ff8ecba20de6a0dfd7717fec51904b0eb26083c9437c46cce5b66cf50d242b618c0146166b307cec8a3cfe93d553450d465d5599d3cfb0ea2b0de61c2397dbe6a7ec154383f94bdb3d83d94f74c2757b18b29b19ccd117fe72eea7d8692983493edf7c1c6225ee6c32183e9e47a7472939b78dc1d02174cd87ebf87a2e6230cf99a70d0f56f2d11206d3c56b9605dbb78921180c75e6810793fa3eabfb0543f8e8c3c8e147ae7c1e5e30897e7d0ab13be5a8f25d30079d69e2e69fe3242e98e31c47ad221eebe3ba2d1892e9b64418cdd68e69c110cce3768e4424cbb62c98834f1e7c78ddf183f858306977f8c9abe3dc9a932b98e392a4cd07efb1d359c114214faec741ec3e4f553084f048d43f0e1d4b7450c15cef5b29448ec4cbe6291835b2879012cd33dfa41046c87b21dfb9341661ecb39d8a12f258ccaf08737ee8074b791333112fbac880076824c290239bbf4eef292cf68830c6793c1f0797dacbd38730e55f4b219697b6576c087307d21929c48747152d04f1c26e55a72c0961b4fa9e7ff397ee980dc2142c3ca7b987696bd30d3c41182d4bfd6e8e5fbfe76904020fe645cc3ae7a00188e3f27899109a1fb32d6cd8a0f107a3daccea76189ff871fc60ce27361e7c74f7c1b85f39f8c9ab7a9c663e1862bc8333533ff57cf7600e3bd8b6f5aceac1f05194f92c89b21cd33c9834a6d2257c100f869493a454faa1471729773085b8dc27ad6b372a7580861d0cb3a1a31626a6b4ee3a1842058b1c1eb359f1d2a083a9ff2d94a4c8e1f93f7330e767cf2152ba5a89090d39184e733cbfa974b07cd18883215aacfcf842cfbb5e5aa0010773764f977ed63372badc7044008d37982b3ef54ac67eb268042038880034dc600e2159db3b9d6d308590ae63cd5778888d0da6e8f92e64e450973ab20673677a645df7951021a32a3016048469a8a133c9714e1accd2518c4be1e1683049ce51a5b80e21fcd934ce8077a78bf4c0ce000d331842b078611117f6b7530673857c21f2ee64309b4afe927d9bc6184cebb16e5d5291e85fd11083d1276e072523a9f4ea3098e37ff865218f587a1c0cc68ea3ffc95b4a72e07d21fd0927f62929a2af6c010d2ff0a1911e773ad6f1edba5034b860be9c91e33857fc061610d0d842d9302d182c687c1caae38f46164a40030b4697b413ed627ebc3740e30ae6305a62a75b974916066858c1a86997626c5648b788512e40a30ac6bb4e8b6a392e34a84036684cc1102f44a28570412d461b36ca185f74a1802229d09082395cf52a7dce294b4e2a126844c1e4397a1cf8ee0405432aeb60d371789074a5f104ad67fde32e498b26818613cca95542b35752d424e908349a60dc3e999cf3b11b48c78e1cd06042d15882612556ba7924ad1eab7980aa03d05082d1b4fc32deb22ffc9f04537e6cb9e3b63c120c66d7922d44e8f6ef4730b484fb4072945348791bc154db29d5a3cf6ae1d245304998ed8ac729444b61221882b65bfb68bf9db84330975e7b66c867ebd80ac19c1d59a4f847b75e5f100cdd3329dcdd6472f001c15027e6f35174779eee07466b8b290fd337ce2c3e308c694cabb444fb20a50726f3a9aedfb2ef8a1b0fccf9ed29bae6faef5c3b30ed584a218711bda0950e8cdf925a72f4224948e5c0d4712a8bd1390ecc91a5bcb9e814bedb1b98830af9b1ce5c667b363074796a8ae9678f2b3530e4f02ffbe7f0175fa28131e53cb5cba9799c836660baeb4ac1e37842ca7164600a713d08b29155c53c68c4c01cef7c87912aa57e4f6160d0fecdbb8e6bcea3ed05a6378fda236277a45bd17081c9c3d653081f9f6e465574822f1ecc6885a9fd5362a36b3ebc42000617632c17fe6050ed0c56983ef98d4dc831b792640766acc2e416b4ee7390722cf22955187db5e31349a23bf901a38b0f88910a730edbe1ab5bba8e5ebc81f4817f300ec2c2c00c54982ee7afd2f372a730c9e58ddf3c914c61e8cafd61b66a844f9695c2e0111f4c924d5acb9f1a1670400d1b362a0a3348714dce7b48c7963c0a18fb0aa8b1458d4741171558099c61c6280cf239a59af3f1c456c6180118638c20020698210a73b8d7daebb03b5fbc4361fe3689d853ddf1d84bc00c509822e535543c48bacb0498f109b36a840e3c44ac572c9e3064a7dc7d9dd7c2544e270ce9cb54364b2478983961cef7f954ceb7d3c6b70943ad9a7c1cb4abc3a368c290f2a4d3babff49c639930b869ace4788f565c4c983cf22385766a39b30e0ad4d8a2c631811a1270400d2fc000411761fc175f7471543209332e614edd1e79e430d1c14b2c6196c97176d82557c2a46221968654a5850e250cd9425ce728052761b0eaf8230f4a26490ede40d201cc9084399aebfd8e933b87ff185dd07bb10025c38c48984ba693e4ae45f6f220618e9158bd1ea13f48fe11c6ce4df7d03ef071df1d61920a39fabb7ca61e0737c2e441cb6bbb64f67fc808e3e9eb071e85787cb9b3c28c4590443becc8425877686086220cf571855a0bddf14c1fd8312c11c69ebd60dbf157036a6c51831051cc7e5d310f3f8419c2b00f3bf8c8e1e328070bc1bd5d16eda8a42a8438caf51f5e9e1cf43d88737eb8756709628b36ebd032c7e32804c682e0a019813004f30f22a5741018fb802307cc00842157ee84ec39fe07837d4e89aa64d5b1e60763e4eff9c0b4d205c9cee883395b7e10f29ccb07b4fd721cc495d841760f86b49d3faad0e3b1f77a302749394dfcdc758c8bff22045479c0c286741cf5c58f276178002921b0012e2e30030f465389a615276fe87c3790fc0b10fc180b28807be1c582a002549871079357f768e5cb6e2011a51dcc15eb42b01c9f62de7fc28c3a18af42b80b1fa4b8161e3a98a3911413dc542ffe3207434c468a511d2b7230ad9ca7c75192e360bc0a13729ee7f83f7de060fc5c3fd12fe7cae7fa0d86fcc8573b6e428630c30d86383977c763151366b4c17cdd9223b31cf7925536186524bb4fe8e4eef1c3f82385196b30557dfa4fb58f472ba806a347aab38f9adb1129a52461461acc51a6d4dd65dea7f2d1608a965b0f165a6eaa9dc134b7163a4c4ffe51906cd82033cc608ef4b224e7d8a88b758131d60b04d8b0f1c58f31c67a718c6694c150f3eb1a95174b82b72e4010822f4ee0450824f08f802c04cc208321cbe3eec45fa63f06737eac9ce3245529f188c158aa26f791ec479ffe3018dbd67772f23418ccd6d1f653effd0543ea4bf1d2a7ff5039da0b064dcf3eb327a127ca5d3067fee7641d9a9d43980b865c39eaaecae6e191dd82417afeb3c6a35a305ceca81c771492efd62c1874f226e49c735830e7db7c8f2cc46ecfa15730a4ee5c0e5d54653dd40a86c873ba16caac429e5530458eb8fd4147a5f83815cc390e93dc762da246390543e5ccbcb60b8937a5608c903cab758982a9262287faa79c530605938b7bdc9de3c7bf049f609a8e573376a1134cf62ab3ff715744844d30c67aee9665cb91ef6382495e2676e7724b30e514aa563eb0b5cb5182f93b2de77039a4833109863a2fed50e9273e0a124c1269ce734276047320de2147bb2b131e2398535abc0e6ee616d5f605d4b080036a901a6614c19c9176a7a9b3155f11c11c3cced478b41f5c4a433065cb21e6a352857a2d0453b879fbed8cfdd0632e98110473fead6be40ab1b1901940c854c3a2a85448e5fe9c3ebdbd9a6504337e60ae73bd8e1f39a5fb1670800d1b337c60f61419fdf1c78c1ec898c103b3e565e458965a4c120231be0841135d290436c0050366ecc058f16bee36661d18472cf7e538b2dcc9590e0cd2718894f1ea916c8718360307e6baf9b7cea2f563aadec01ca57c858f3f56ae739860860d4cb94ebef6f2c757770dcc91bc7e3097c811622ec10c1a98afceb2e3a367600efe9e67c9b7e36371860c0c6ba713ab53fc5f5466c4c08d971fcb2a39c87b931a164800024ef00d98010393cfa7bd27950ab7b9175d64e08b192f304d9a3c5b9df258749be102534456742cd120b0012e5e462b8e1501753024cfb1c4879063217d7430b56fe57c1cb710ffccc17413c42207b3658a79103f8e3898375e27d8671f0e26151bf148ec7394b96f30c72f9bd1d21f4cd5ea06830519cbd408661faa3618772af56cccc50653e674d4921b9375c73598e5be26bff5538351f3a452eaed25d9320da69cd0c14f3cb173ffd060cad2f3d71bef35899cc1241f22a7f452663046278bd0089e1e3f2d833998cf16eb269364b2643045bcebb7b4a9165d1d83c13bfa94f09fe3bc290643fc8f50163fecc7bf309843b4742da7ae7335c160fad8642c725c295cc55f307eec9f1376ffdb342f186f2eb2eefb7a77f876c12cf2c93482b4fb7f447bb0a0d739fd6dc19c93e3a8c3a3a905530723f1c542c741763d0ba64e7121a84c1e0bc6aa2ab9a097bd8239fcb06392ec5630e7a87e5bfa91881f5f0543968e64b55be83c512a98034f1e67c7106f4bed140cbe9a1e8570f5cee8a560ce69d52c5eceed241f51307e79d4081a1f9f561f002898224bcf77a41d75d4ff04738ed292643f79492f4e30f84ffcdd7a7fb0916d826924bbc7a6b66b1979261824c5cd95ec5cb9944b30b77d7b8a1182fd875409c69a2c1245eda3a81693603a9b0f29497f3be810128c1223848931fd361a1fc16c152ddc4aca52026004937c787bd1938de420a7940014c1f4e755a175df4b265f841000229852b09cee6ec2c57a6508e6b80f3ffeac0ac11c77fc122126787a1c04534af3955fd53dd33e8060881fe2dcc7f9c93a487e60f4382ba7ddb35bf02825003e305d689f9891e308400fcc3ea14666a4c20343ee75103facff0901d881c1d6c3eb7dfae03c787560fab0233ad7f9633c9703b3e58fa17639c38121d64c749cf1f3207b035392df9e90c37dee686d600e69b23ada8646bc930901a88139f2e58f2d8807ddea03400353ccd4deb6a967608a8d946dad8fc5eb9581c957caffa388ded15125042006e69cd284761c84597d350a018081d1b6d73dc4f092e8fc05e618fbec732697722803e002a397ac758e1b65179113b46885f92c7bfef19c32397b56985c442784c0a0c52abea49792538731e1a30a3fce8a30b1efe6c3938a267e1cc748a697914705efd7f1a51099b4e99e020f92a6b073daaa1ce937b1ab14e710995deff1b091828f627cb64a4a368da20e3ef06822a78f28b8b1bd4bdbea930b0f7cd1c509fca052a1307a24b12335afa97c162b5a80c2b0366fe3db63c1430f085a7cc218f629dfca56c57ada80307e8c05100fb4f084715eb2e7529b8a9e3b61c871162b446c4d4b1d4e183466525dcc7b13e648277adb2d6bc22c96dc728a4755073513e6a0a24f9224398f33c58439c78fd3716b3dd9a59730cca77ca21f3e5e5fb4847127c865ffb29cb388953048ae746856fcfffb2861d4caf629aa9c84213aaaad07e98354d249c2349d1e7bdf63e7da23610e911c84d4f513333648987d7c46dc27a510fd23cca9d2d2e4fc1a51db11861c8711f9faab11a648de9e57aa6284a9bf3c5d45891ca4a74598537d7bf864531f5b11e61016b6dfb1a7dcedc844987fefc24ee4c882e6af05220ea7fe5397a2450e6197a99468e408969644d5a394424cac5c410b439873e94ee8a7458f258a000a1410685108d365cfeec1ff47ff7c3126684108936c7cdec91e663a920761d88df68d0ef6a25bec811682305f94f0f1915e9a873610e614ff8a97750784d9528e381da49e96f4f107c37d8af46fb93e8cddfd60a8f3e09278641deb651fcce6d9653e8a361f0cb9cb737967fbb2adecc1acff39769d547a3007794524f68510829f07b3c57ffa055ae0c16ca1b2654f9b96c643b4a0c51dcc3924e75817a3d70349075ad8c11c7df6b02664bdfa2d0c8216753095abd907f9b773b0590b3a18ba353bb8f43a767f72f109b061c3860d31ba085accc1e8dae975d66ee2455b4a0b391825e7085fa1a2e8557c030f52086c800b016811873cfaeef02b74e060ba50fde1fa6287f9df607a8f25da9e2f97c5e306a3e428224af4b4972ca70da6f538ff61a54abb1e870da6b42216b4625205f5d760fa1c4b16491f79fc385783495de643bf4acf4c9c067344558fa31c3fe5602f1a8c17fcd3728765e97f3d83492b5cbfd8cae59c543398eac3f29d859c36222c8359e7fb830fceca2e3c321872defd9b74bd464e1983d1cc23f1d891bea4b988214d51f574e795309872b47a3b42e4981f309852b382873b395f785f3047b2f7b1a945bc60b0249d3beebaba60c822293237d2852016174c9fa2e71ce94a5b30871d3dc78ddf4facb560ee9afd881fdc8b85b3608e3f3a8757791d72120bc6cfa1732348520fa32367a0c5154c15d2acbae50ff99f6305f355db87560749525a55305ac87af309be971ec70d24d5820a26c91e675e398eb52f9f8271d2c34fed714cca5b33400b2918db2ce7b230dbfd9c3e8116513046deb849c89fecc8a105144c59cc76e23d22b5659f60d0ad149276e8b2b838c1ac1ef5a96adddc363286164d305cc5bdb1d81d26986c65fae52453655f82e1e338f6fb599f8b1f7de4f51d55882d27c1a8a3a963c972a81e8804635bde4d0fb79489e9110ce1dc83f1c0f5fe7423183f165f2fb3e93884b208a68b27f2977d74ac430473e4b67276e7d146bc2198f5672bcdec84735d08a5c966294130a4fc502c471f08e6d5fc543662fdc0f4b322c952e6e44fe503934a7e4ba53d305ff20af9e5912b3c3c3045b8524fe9b37628a11d18bfb46226ab5bae551d983cac4811d39e723673606c13f5a0f56a9fc283055ae0c0943de4f85285d75b8db4b881d16522c807e115fdc70dc3d8b0b161bc185ad8c0fce15a23be45c929f562c3c611022d6a60e83055728494834dd0550b1a9872c797fa3fc79981e12ffd8594153bfcea65600e5fe2b785a7b5888139f0aaf6936c95dd560b1898aeafe338e6a7ecb7568b1718a2551eb1c9709d1cd5c205e6e84bae83f1bdedb4b6c2a43df18285ef67f5485698a36b0bbff27015e62e49d69fbe83aa045561b0ef97f91c4972cb49853947162a748c75906e5498b2ca07fbdbdd298c5216e2dcef875bc899c2503593dff196ff54570a7398aae768c4420ad3a507163f0ef633bb320af3587c5aca9ea25d554461bcad89a4b15296650b8539dacd55470f1feb1250183b2ad2b772a2590af904ea71ebe50953caa5881aefa86077c2a4e7d107f325151173c2386f951e153e5de5260c17ff41365c4aca221a9a30bd698ca554d2e651bc0b1a99d03de63ac5b2d0bb9fc2021a9830457b07fe51dc9bf8d60361ac05467009536e93fcd9372a479258c2bcf7a9fef7038f16f94a183dacfa751479e539a7c41de7d3db6de64918a48324661eb9f7579584b9836439f2f220e59f8b84b1e3d4269235ca7c8784a1b3cd7bbeeb38c8323dc214619d2c27f5bf8f2247184a3f9ed2f228e79bd908430e3c4bf228ce6449ac6930c21c87b2e90289c2a8e40de622c2481c0e0483016120140692f21e00631408001028248a8502b1501eecfb0e1480024d3420382a2a1e201c1410121612201204036130281c068401615020100a8301e240213c24a61f00a0a802051478ed45701f900e6441017b2721d4691095267b774b032fe43e099f3581622ea3fa1edce1650045ae503aa6872b940e0583a20205145e4671623a18c85b282a940b2ad7c19554030a1a0ad12894d40045a1a2c2f217d1d04482ea3be6843c54281a8c027a5241a30a3f0a7869e4e80b3c146df537625d925aa06450b7507941519e59427efccd70ace011cf1a868242d5433da0a450a55030541feade50c059b0f5211d6110933c6cc20bf79a14af66752adba084a3ee9da60197c52925a923d4234601ff6b48724374a166c99cc158ca226ebfdd906e6a7a1e91d4878a49fa852d29cb85a7741eb31b082fca776e87bc7aafc4cf37dcf86edee969904cc96e75d3b38d21c2d542d8252f5e9dc3ee1a25e111b9fcd386bce6f465a30f29a90e2f812da05b8cdc4292630a19eacba3d3e8b85a528930ed4746000dcbe1d42b0af23c2c749c0412aabb1116bad4c80c8d6e81ec563e0760c2dcad3f7d05a2c983efa11c8479bbde18280a3fbfaab38124e74a8743a8c25dd9866c0d2ad143df808e930641a6591c1e57587d0e8824a40f2867c3009a3c393ef1bc243cb4ef5021ad86b4fccc2d36274cf3ce3490703290eaf51f4d230d7b4680974f75eaca175f42a9f16931514c5cc63c255bca928cd97f608f81871149c25e9a4ed75faafec70ffd97ae087003614c0cf7265eae903a5ca36f39c2b9300d0a82a01b780427dd129c9da0de0529431046d92b4e850f6a421f8928144a8c2ea1ed28250a10a7390708ca42aa8a33c557ff94167d653154c647c6d55207f50490e34651e7a6cdaa0cea537eb7fc814c276bd3a5659fec951605f2a7e6aa8a9ff2573e6cf9f6ea74f30b6ef880d451cc2644c3f28a0877b4ce997a28893172e5b0e00ed088dba1f90ddc1ba5f614484451a64a9b78a497d39a453f90f5c65bdafebcf5e91c9f8f794b1b14514095056b83d0b4a64fc26de4e660c46699b8f18850f59ead36fd76da40e422103dc16eb03c8e8c15ad83f4c155b8462ea5d50c358c896a299baa8d13e6ca173370db5a2c905e194442543b8da4cca98d84f8a54090e7e432a509ceec02b927052c9ea09c3c6ec70bcddea9b93f4621b5e51c1995a4effcf451a74f584b1f8f96c205d973c2b2b9daa0b43e4c14d3bfb37ae623516c5e695709a9aefe7b1ecbfbe4aa533547cdd0c62882e647cfd03294210a4571a133941c3d53d4d320b61ab553d857134365e8ee9608d2442b6af86e4918eae64b4f002f085c3453c1ac835badab0ca05f2b0a582aaf8dde3dd8cfb2316874a40b66908063d6335a073cd91e363864133870f564bdbddd1adb6804142026559867b11839960ce79503a437b24620c68ef52fbf862501ca93aae7bc98248e75c44394d3249855beffc0f1228d86ee6b419c7e2505cc2ca904aa4eec9348cbd8311168ec3e93216a366b457c1a9e9dc96a3a67bd340267081a3b59aa1a0140eecf166a4130d13182e60493bd9e5630d46a400fc6c732446faf62edde9daaf61e439e9da311f4025709304d1c553cdc8f5d6f1095f39255a881df416de4c1084f157630b8b37a274c034a147cfa4238202a8277c103a7b89f56187c211567af8dd1f00c8cd595607d0d427da8c56702f242c9d86196d183d53d4c1b2a8dfa322fe57db9d3de0a9839818f71f95ff88ad537affa7e6bb455b2bca357e13e584301a74afab96938661ae3e05af0569c3ff918285d0705c46b564db3e5ef1dd876d174d0afaf67180ffef5acd5b024f4313d23bb82205246a6d69c13c37ab3c65feb82443bc42d2f02e12dd30a8e2f88d0f26cedc9b9ee9c7ba4f351bff47397ccb08d168dee41cd1ae35e105a8e2895f2c9afac4c58a435f18f7210133d9f0c319918a210e9177c16da1a4686d28732a05a513caf564ea64a29d60ce129290dc042cb60560439d276fc6ca8543c6e54a7c0285813bc2234ff2ea50cf0ed01e8fec5e52e886122edd67bdb2a29a8055111251332d3cf94cdc95fe65dee4e8d2fe27a759f6da8fffc46eac22bfb2e4c7139fda9c3241713b209bde01df2e3cfb154828b1e29e9fa001349e1e2184bf91d4cdb3119d9d87131ce34928902e5a24cc230ec449deec854b9d2660653a3ad213d187db68f9e50867c815bb0eda6aec3822e5a84cb0b2ba09a98cdc379cb7827a3dc03804c60440075e5d11af56b4f893a313262a99c101d813df199b4881ce3c5896a262f51db9a1641afffc22f0708926437fb72a20d98546e29094a89ebbc4b92e9dfab39902efbc502a54c2692e1f0adfed492a08cb65e7c37d1c44db04acc85a81b99c09ad1b4c571f14a7c873c7b754e5da9b5031cc8cbddd7c76959adeb8edc6dcdfc1914807ec68d59d301eb7678b6d5283bfda099de3be2198eba376dc4913700404a0de23b8993b7b2622038c2e26a1a9131397aed2afd900a45a7d49c4883c545ef5e8de9f50719f3fedbe85e85bd7f5b5510828faa65eb0452187bc85aa6d3fd958162521dd0c6af23b467aa82812f65d12dfb8295c4f7cc71605d5fc81025eb80581f61bd65453137820ba960c50d22cbc677e888ea1202305e737440af8c292fdc2a96e234ceba4c267a35dc73374e8d34d22240df4bd24b6e58e2101b987f7aa5b72cb282e4c74ebf2ae11d71ba900c3bd5fcd0f2537682f7860ab848f84986703b012f0dac92166d2c52e53ea54f71706f53f0e504664835739fe814103b8a786f83d7545017d749ca438ff495d6a81c959442d37605aa0b34a232ff3681021277b9d9de507b509fa8a330162d04b939b1dc7824fa747d9bf22bea8390f8534dc4ef1940fc76f4f1aaffbecfb507c894b9bdb82793bc3f8ec7b3a9a809097e61d37d7d5e198ff66ee0e4e5ac311bb920a3b49d4637c350f4d65a9136f33c6e289812189841463f1784bf4bb193c943c675b39a25fa9b5ca1831e4370b66e03c3f91614619a17c2b0e5f572e2870384050053ee5dd0e81e45940519c87215e395d7dd202655c11f1470425fd459ecf153dfa5e9baee2e1bbd92636f12d8f39365166c0e264972835001246e910da2f5a31d51aec9815b0ddec8a8a0a6c046f8dbf64fb970f120043f19ec4f9b71b42a7c968d75757bbd49641f3f4036dae2705bf47cb507c4504c286a14ac14b3579812444b24548af7fc5c815466bb4b269ac7aefe674207b1e3f22ec76bc29c8c1426f8d6bbd1a3e4a2b70fa53614f4d05cc3a9e3921e0d27dcee8a2ec0b2bf342711ae602a49a15ad51bf3e484b0cd010ad781fe5028bebf36392ab6394c5d862e5f17bb5d5ed085bdb329427fb5ca53d34ca4db46d82d594557e47dabb47e912499c90f5d0d41e6b37e25e57d90d7ec6782bb9acbc53e70a98d20a50fe155ff69188c62a48164551565fc5db219bfd035dc2c0e8cafc1f834e3a0ea430e39d47375608432ed263652a0cc512ad5b8b1537950de920487ca86550205490ff35c627229ce265ef02f28c1fad424cc542bd8a521decc502b536dc5164d2ea0fe3c66f4d7806fab86a0c31a2c3139bd3a34f0dc24186b47d165f38137ab2d84cb5f5ef9c222d53a072a0140b620c9993219b4e11e28408ceac594694e2067b0294f62d05e4b340b64300e659cf7e4d7d2f74d1004625744caae2b3891b39db0d366fc42bfc0d836c8dbb187f019ab01c6a48881df0c2ec780e08a3a5ceabbaffec53dd7460ea67fd44a1963022412dca7dcb9a4065e6d94203312f1ebd9966e729d974b366aa47893dce0827711ce18e1552070680a88a51829f56c0a731731d2b070d087beb0d6d61b575d822890b4a1a8a552618304dcfe32f42b04d6a24e1d1c27e9662056883c045693feb417eafdc1f3fe8340f17ce1b19d8f9c2824cd09eca08855352fedd97439af9f8be19c5d70b9b901626712bddf585e4ee8ee13e45e8b8248061810613de25d1d92aa3105ae8689fd286b7c89c67e89ae856106ec202af66cf53bcc469aa9fa7d97229a5f78c7a3f3dcbd52ef64fc2d78c4b36d92a7ccf1b60b72d4fdf02ecf8a37e06564b57fd33f553a7c94754a24a9422690a2e23d36171eac9207f598bfbf09ca3f9f12fe6b22bc46685bf00080b40ca9a7df012778b4da6bbf4059cdf55692159340b9ec800b6d41cfd80929ac576fb0eb65d2f827b9da83e45ffd08372dba850a288cb02c720593134f637a6b586e54750127315011fa00cffe0990b3623510c3bdf1efe8c6adf0c75481beda062ea817108835491dd39500a311b371aa97d833a928188ada652c2e59f0fa422d08e31e23e448a3c39af58e10a4c84da044164869b74314198df8cda0969b7ecc8a0f978add217b49126fe471bc0d1962ed314f4712b0451e8af4444531c2ebd07001c87305bd2319433089884a1ca399f44c7e1d9bb8b7f4ec2ebf0cbe8cb2941486100608afefad074db99a0ee19aeeb14fbdd030e94ada5d6ebcb3779144549526df204e68591bef793e34808aad896451f0d2ba36564bbb03d6be918147be1251e2f9a825b0d8d0eed27a19a56e6897ba1ddf46919e2df119189ea85479b25221f1018a5e0aab722281c06b734d785c2275b161bff33a6c80f48f3e377343287be0285e0515eda64926624a9585a158ce376ca751c211f0f3add859aa45503daaac675094b8c0dc8debda7599f1aca173059003bc27c3f19577a3b80da7a90aeeaa88d70983c5ef726085da908ac899a8f384d85b5f2679c529828aff2022d472aa625a7459ca1dd6ccad1dd8d1d0af783582e0faefaa45c89ab65ac43393757b453f72ce8c4a2dc622e518bb74d11854191e87167dd8fcdf517ae0390bdfd3fe69f8bc0aba0981caef535b317b182a1e4aa0974aab7ef6963114c55a81b4b042d2fd9aa3d05fac3ae9a2957e56724dabd8f4406e9d4529b2d8a87ae821d68a6ffbd6d53348d27d0d85b750a09e80f5225e0e9680b606e266714298f8920066b5e074d844cbaf9346944b3bc55f5106443ba20652b7260b4626f839554d90d4fc8dc320f4cb30d493aa2d69a9485afdf61518615fb67c7005a9426066a411a98a54198d18617a1c5844be272a26683b5486437803d0773ddbbe6966428701d30a665aa8c812fdf3512f4878bc0f1cca2c72f58e79d05893fd3930a4f6e4c9341f3207227e4261a237d7aaf63574b2442353715174257e3a3b17111debf576ad2a1f57a20290e6fe565626bbd66547b088e6f0062cf0aec293837f14e93885ab0708cccfc6c3047d2fdc82b3f8469350b8b515be93538a2b99df6bf40837366ca315e88815a34a8c3188072238bee5b9a99c26fd868c5cf4c56f3e2cc834f34aca7e6bab8ed7b42037fc3810a98fa2758ba8efd0805aebcd2461ccd186c3bdd4098a2b6e8b81b32725dadd5b431f03bb46755637d6b924ae1a8e03a223bbce04daaa0a1a554382da48f5306ffad94381294ea617b1f631c4752f14de0e511a410c846c821d63333fc59c74f778e1e45f779d81efa4168aae93720c71bac0ea8acc4db5a7731632c3cbb0613be44732d50d46caa4b64b3b8f85c3c35c886d53d74c03d385938fa27e3bb5784a446cae7ce602e19d0c81a7bbec4ea69b3b85ca20406861d244626d25b45d5a263244031628b15f9c45c9b1818403ed1d286da8fe1c476628bdbb1cd5dd439e7445b52353013f29d006a162b9ca453101752701fe8631e4957ffa48fdcbe82627d19adb7735dab0d139149ac6c8b1debdf2439d89d2fedb9139e8f9e23c4ef72b61ee64146833a494821e0bee27971fce313919629fd3b6b39a71a04a598503a1212afca6499d410b57a9b276b093c1efdbf32d9f807d2cb504e0d4abc63c4d93ecfadac7d205041d38a47c2200a46351b0774fae9ad4e04a64c029e2e8740e2d2d87b0c79b7e44fea5b567ba5576ff1b3dcea6e6524055bb4224397297fcc944f857cf24c0fd8bd1e0e100be3c96262d1387a23e55817eddad5f361e2a50b07b0eb5981d39baccb0bb9c8aed01c8751dba31ba4caefb9a240a3ccd6e17c24b673795f7f86e4278ebfd215b67a4138b828d23baf0659ceb62937d138901a8806c4e7865bc9e6c00f2902772628a92c1233d66a086609619791fd9ec78bca4539e0d8705e2eb3bc9a12afa75d4542a888a9588aec511753dd81140fa4a286383a06bfec22572ae0593292b42595f75f0c187c4e760dda8ea01b3f9c77c9da87383997cce57ea9cda6076499b5c0d53a4101843589f4df36e0b4ddc9ba3ad7f61ce4f4385a6c9dcadef1341804a0d45688d3eab6f0684dc405ef95fa6032d0ec521037ef818a97feb939f0fb120ce8128031c0bd7be0598767da5084e2849bf7a89ab6b470c9454df8cba8c03290a0bb7d50e0c49133edf25d3285f409bc949f5ac10d0629bc4f289fb2a7cba783fa754a2e937e643497782493ba046c2a4d8e58628bd44f61a94b5b1597fef8f4939c82d22161efbbeef2bf55991717b28d47a7902a12f46a082c690fced71a3eba5e619cce2f33860ccbb99669c01e5c8e924bac92837b7863c26a1fa911b34f2434c57f9d3364a4a6f8d838d92e2882cd2a61aec45bd25ef35c7d3921e036aa3d5570bf6fb0967500630837933e2abba54aec0c7c2485d76da4c2dd56ac8cc4fd2058db7f04971dec421eb5f421634cd830b422f81c90485144970e10cb7f0acfd9b976b0b21dcda246f5e08ac04df4adaf1aa38706a23e51e27392f1a68cd1763a3a5e2bca6971c2f8c192fb2a92969e8b900afeaf72681bf2d8bac41564b5d27b0c43bcf1cdeae6ceb340d88d67547ead9a5f9b74e5c1b7bf4e4e97ee2e1e884c1a30166b06c70b40c669c87a1c58f818a069b2bb7b59edec4f92083f5566102d894f9b566a99b61423e81615f7992322545b39cea67b0f15224174b6fd8c33113cc5d228b963e696fb62f5f0328f0e866f5e0331d88a9e4a72edbc867b46d7204bafd1641c2cada79be8c010ace0f44025c88def895581b052a7541002bb59bd4fc236c43f1c44f2d81fdc2ca1f2551330d8bb8f1c18d550c85582f7b687786ae6e2c9db93dd4040d0367f49a2ef016a381277af59b16483bc66d5f5393ba77b7a421d5ce10e1de008d44f6db81d2f42f8db2246d8c95451f73fc06b7fb6b8a4b92e4d4a21bda5b1195c7456000c9b0a9e2b1d3a048a8e1560a6dab091f99b521a2069023f0e241e4682064bda991bb0f77ed5f99d319504848d77ba2310aa691861ec106f11c858827639581f410475351e04f7081b800610aa29286b5a1b8506a2a5def0c776af28303c3b580af4b41d846bac9a2d3c540af9be660d208f9834ff4b1ac595f1097fb41e01f939fb7360e962da041330c92b8c32b2eae280784dd6af3f1bcc0693bc8192f15f7fe6ca05ec8973a4f6965ef9fb34b5db85c142c54e409bff0875ae03e7086ea8415753d1229d4cbbf716c40121bb033467df40a8b9e6aa1df784429164e485570241725bd8f85a74ea8af9304ac66cfa0a21749b1a2c3e0c458f54d7323ab6583743e8c62653172296cea19b751a9433ec87c1bd2fe51f2446831aaadc018b78b488d185bd8f4c9a57ff18cfb8a129573384b137f004e7945210d5e620b63fb453493913f597bb3df135287e9914fc287acecfd1f32bd62dcf701d0d4ef52714690680601d6c70232ffe623b4541aed4e8ff2d0b8314f4510bc932c975283c41f55f2d3828797dccf46c4cd85f4549f96c431baac3cbbc3a14efff159f6f703fe2c0e0e1eb918dc60ace3d52147f2b0c181e3d799b2b7bdb0a84c1a1669e5b7ef5b19a898d60302b50225e2a0849068d881bd785263a82b143bd40d85823a860a406187e241e1a09647414adda15a50d050042870a80f8a07b511aa0b8505058de262e28ca24bb540cda1cc50a1501e540fd406547e10752f06fe3c018a1f8a87aa4d40c571bebff180ca87b2404540e9507508ea9e89a570f5425d43bda09e43015f85fa1289c1dbbe0995935f7876273e762e4a47162fa6e75012a86d0805fcfafcd9fc14fd647972818a420950c150e741e9f8406d85ea2b2a21ae4de805288fa2f0525918941d39140d2a6651c052e3e3f71fa3144d4f8d0c09285ba8c728cace06ea01158342855a41996850a80ae700ab0f14695130a90ed41ea82c14050a1a0a5da06893f31a52195350297ca8099429a0fad8889ac529d94a3d2daed9a2e6521d2838c51d2aaf1a51c47214094de9686c795537d4114a200aa5230f699f8162871201d57700156f44f51fbef0fa0ef583c281ca855a150591da878a43b162104546a875216a2cd3ec21f48552825a439da00ca788222e94b5eb855c45fffe3982a67b6d13d6b60c63fcaac30c850a35427181da42e54a517d20ff4f61046a3aa168cf91b74f3c94078a06ea0b956628607bf7d7e00475cf032a07750df51beaf126eefe71b68444861f3a1f2a5dc7ef09ea01f586b28c5140487d37395040844683ba9622318010b4d79266e1475d9c48c825f8778940778aff5ab05fda1f6f9ac49961586cffe91d9697750941d1a9976d649e472f678f4b84957a9b82896d57e108f05343d0aa93072e0238fd264f65e46ae9418a6208af86cb2a2fd91d6454595e46b79505628b2899a36d2921a95eff60d85bbf102842fe34b34b1ce0928929b4ad7693299452f96537e327ae99ced74d378c09409acd35dc8e40f4bf04ba0aeea0ef707de8696be9a1b2747723f68c4e2fa95562ab932a0af82abf9ada5acd14508b52586524820fd858a9d58e77e2ceaa66bc02d7855f975ea138f33a50b59a7d9a0086502a589e6ce9313d98186c91ba4c013e0e9743de1278e9af606193ddc304b249769e81a4edca0668c939ee174e408c46e01f7b97f7f3861eb9b7ef96fdb332d7ac571adedf6569877a0b3feaab99ee6159d0d7bf205010ff8f601c0f4bbc2bf4c9d33941e15b9018b87f2aa897e633fe9a213e64a5672b3c96897f77fd7502113b27bc5e99633096c3b3bfc99faf7f026cfb96db0b70f91d62fe143d07d91fc552fa8365f301ff457af10c97ee7bd82ac23a17dacfb82ecc890ae0d3c78de83242e1c8ca5e53d69ef5427f8730acf22884d89fcfc150eb222c91d57bf934f279a765982ae158383aaf6aefcc3f9f1ce317747d881dc0336d9933ce6b987c0ab038a1895a5cc17d1930d47bf33ee9f2596c90f6c1bfdeaca7382cd93408bfe59436bb43fe2954b6004e255869b6e816edf594a94418ba2012b9425f60e8de90de2ff85c8bb3c7a05403f38b7e13d33649b0583a600818a822959c03232e4b5294c7cb76d4af4757b2814260cf5428f2a02b69dbeb02c7612dc175de7e193e761392bad70640d7263081c0efb9690de0cddcfdb678ac3cbd3f1eb59aaa29f1f14bf7c6ecf72ca749b57710aab8a2cb018f938d42811a5b632d7ef2ec59a5ed1617ec10754d0e75137694a7257717225ba586172c3e095e16e8779f01b6185de9efa075c54e390a0f62960882d1c317ad79a417172e2ba4123624e8a01c123aa9a1017c512509ccaad07031e3a9ed30e613ae36b836e4ada1f02d20d660796b365765b2e88c54d71c0b5a4e1372ad8723bd0a01053fe08e0f15fa6eb1b5c4cdd3018b196f8343e0d0eefe83e69f9b5b7af3b0db79cf4c39c545e2993b09ad506b2ff017e479a4b0b800780b38eb29147c65415caafd551509ad9cba0b8b8dfbe993baec586e8fb88c675e7ef8ec3bd0c4846a12887ef514734e29ba4a447cc4222567405c11908c2debc2bc2fb2a7ca6e33afe27111b3f31533d2a4d22a44e341edadc2073e1aa8ca1393da21127e803c04ba6e8339d6790ad1f857c8d0e9f8853f0e07c5ced64a2ce24082fd590475ec5fe1113f50286effd2da87f8454221e0f5a48d108a3861011e1155662ab3a172db82b7508958e7f2637d585028122cc590805074983b3221b8f6d4faf0bff275bbd7ae69f10cc615a382ce4b26bdc971a8c1ecd3e1335466022e24c4930a3760b26639ff000000000000000000d06c9488b54853324929e74650a18cfddc94924c29a5249c99f8e8e9cc046edb76c3ccc4a7339b51021e0a9c0adb0abc491273a5c4599a8782ec7a0b25e4538d2ef1a02955a5ba436133c4b25fcf9133b743b9423ef2fbadda895787a25ba607cf155284d6e8504a8f49ced65ba803c61ccad9f39384fc18b4f32f87525d6bc8d4d1c313e8408d13c08843f9740cb1c447bc7028b6e8da1233b53ffe9100c61b8ae739ff66caf451a27c6e301a5dc06883d1604341e9a8d0b96f65747c1bfb30d6500c21f8b58defd884b30d0c35145544a791596334f59886428a332dc9a36faa1d0c3494f2b344584999b97e232a80718642dee426f3f5c6b47dc2304331db8eba3491733c19170a3886518672273d39fba48e5c298e1ca9c68e2e6e7491fc23b0021678041a990cb62489c1226f0cc6180ae7e29666621743b174b6e887904fe792c350129a49f689f8a6f980a1ece9e6cd3f09612afe2f9425ccdbaf0619da23c80ba5fcd84d42881c74ca9c2e14247fbe2a353a17cadd1a9e435abb85f2c76d2ded202e7ea1164abf77afbee1e7ed3f0dc0c842314b58b9744f62a1a8293d29bff598d3d95728e6f8d1ad348f39e76e021da84101185628bc84d3389f92644e3a1a34180530aa50021854401853c01b30a45038f1faa5b3986044a10330a0501a9120c3336693a37e85f1847382d180d104a40102184c288c6bf8b8bdcf373d2da1a823f2b2d36492b59312ca49eaa60d9753128a29b5aef3269935730909259f5cb2fe51fbc4f54728260d5a6df544c81e232314726dd58fb236b31815a1383332b94bee640941442868bc9ae43bf135956808a5d4c97145844c61ea238462a56789be9a0f42f9365789f8246c42ea00a19cecfa77d7c5cd42e607255fcf0d370f31ab323e288c14df9c6127a4f7de8342f020c2b7ffe46cd779609dd62c42fedf41a9c524c7ff12b353eba0b879fa3b2e9b54b39d83b2dce74dd73e91356c1c1464aaf5dc5523a24e7c83424eda4e7a8dac9e866d500839fee910bd6a936e0d0a5a795da27ccdd75a1a943d7cc757c924c7a404c60c8aa7348e97dc198bbcc290417947fe4c883cbfe1652c8a22eb33ea8d6d27392c8a41abf72919a1e3e12b8a193cc7f1cdb9a268a9a1275bdf732d6c4559edd647a499f469b62c58513cdf78a52da2f6732a8b5594c3ca685a87bc2a0a62477c44648d888f5251bed6b66c3979d24a0715e51d21ee3a975e86ff9ca2d4d61a5314934e1d8d8ff3d1952945c9e3d5d8b9c60dfa71525c25223984cff5288a41e60ffbd9179a272c8a92d8bcb9769b5a4c23a1287c9e95565d89c1741414a5cc109e630cdfabf7270a5184cc264b989e28f65ca7d9a4c24e946b3ebb42e7f6905e3340169c28bfa8750e49e80c42fc4d14d3eb9ec97a79122fd244e9bfccfe6a53f5842613a512d371125cdde36931519e30fa93b80c71dec34b94737a9c488ca5254a9a23da7ac694da3366518962087a99bcde4409a3a193301a92b8cc2212472321514eaa376386679efb100b593ca298b6db3ee5d3e578fc2c0b4764d1887248fa2298ced942bd04af64c188e2bc68dbb4ab7532f22c165110f115329c0ef197794594738238b9699963049d4494ec3b843a1b53350b441444547864b7534f7a14421687287d6449273d87a4b199e6200b439435688ac86b6a7d924e21cab18377fed54f759005214aea5936aa758cabf70da21c25688fc7f72046ed82288f0c9e25c22410650d1a83682611219a0244b963d0b0758f5a5dea3f144e49191d459766bfcf0f4591a2b5456f63ceee9390451f0a427d967caade93930fe52c1384d89b4827f3288b3d943dc63eaa8d8e2bd7b3d043a98307fd2efaaf93b6180859e4a1986c24e64ea9de9e4d286481878248faab45043d9f9fdca110447ca38b90ed6034f40259d4a1b0317d5cd2e64a99946a167428e9cc93f3742a29f7df350cb298431672289e9f6e24a5ff42458d4341b4f58a8eaaf41a1b0ec5151946e30635318bec0de548117cf2e79f112b7143594cc635486a8de5216d28c920444b9ceaf0e1366c287889df660917df215d43292408992e9243d298aba1647245c4ca8fa7bd4a692826fd9b4ca5cbb798090d052577cf74f966c99c9f6111db9567aa4e6628c8e9904abb04891a94ca50ce93433ecfa5a6e57c32943654ef45cc6b2bd98fa1a4f3a68d31490cd378c550eecc49734eb2c2507e332bf1a9bdcc2c038692aa2c15753257a808fa4241097d4fa64afea9ec78a1987126ecbf886ab4ad0b258fd5892145c60f12e442612e3342f2286a79ed16ca153ad9de7c63f24cb5500e2743e690fa4f7c8c67a190f425a9512e39d6565828c88f5a428b9079e34d5728f9c71c926edf0a85319d519f3b56a1987a4fc6f2f5a850de1ccd36a64f5dcb3e85e28eb8d221b7494d6d49a198394c6a7fb8d4955c140a2ab943de9b8dfcd843a1d41d42769131aafced4f288a8ed2784f7273388d138a3e41db738636cb7c35a1fc22eb3fc9d0082e6226149450f7e76e72732991251443c7d072dab2676b29a1e8263248ccd7501d2649284bd07b2b3d17124a6a456c9fbed09e343a4239e4e8cc976f9935248d50cc744ded4c42c79a5884f255c69cb729e1d1448850d8b8fdd17a3b6ae8d8108a163361b55b4fe46c8450b2f0d3d9eefe84cc6a10caf1c35344497f9ff603a1b0f157d63b3f4eecfca0a4e4697ad81c7b9ba00fca1d35b96ecc7927badc8362ae493a44a4c49884cc83527796d24f2e1e3bce3b2869d2d4a17e5a62d76b63ad0959e8a05c9e2b7b649c503a623928556b4869ddb1daa68483d25d767e2a1d33ce3c3728e44e13ebcf446c50daab2ed5a0aca936fd6ae66dd5840685e0263d5c89998bfc3328b5fd9c6c0b6916322868a7c9254f9f1aeb3a1685bcf623940c2153d6091625c9a2ce474e664892bca224629ed730954152085d51ce5ef3281bfa37bd6e45c1d77dde5d74d0764256944cee4747521df57d15a5082262c99890cc25a58ac2b5c58ef6f0c9e429a5a23c216f509935ab8eca5051da9c43aeff4504dbcc298a29a9f632f727333d99a2fc12a2f87c90b949464b51106152e7954613f519294a573b2354cd9724111b4541ffe81227be24865914059d4f3a97fcc99fa60a4531ac761c892a395ee74051cce6b249f5e9d131689f286ca90c6ba3264f943f8912d2931a5d0b55270a5f56da971193e614e244794fbc73799ef81b929b289f9a50ff97254d1484b838f119b2c9ce7726ca32d741c6d8204c94b347f334959db4a6ed12059db5a4c7109b51b4b244216d7c99a86d53328695286e575a097925343d468962ba99301117a947ef93286d673ee5a13f9228291ff5d7a6ba3d794c248af1736a92ce6422368144e1346e5d98adaf9dfe11e511ba234a6a4a475bc94d23ca3bf955ff5b26e6931125a999e1b47e92a03db988629e7f1e15673288c915512c8dd5eaeb994daf29114509936f4e794c6f428b8842d0f812454e483ad37988b2b798c831e4a4b78a0d51127adb41e4d47da14b8528a7eb2cbe21fbdfb64688622e996e4e8812ea550ec290c3db1444495ca76b14f9a763300351d6b20fc936bec4681240147bc64f45b3d55b847f2868592ddbfffd5092a1c38f6bd57e76ba0fc5d8d1d7a35ac98752c9c875dccd6e2794f6508ea664e9646fa3a48a7a28b66dc91c54ee3902080b657b2f7d27f347a9a4af50d41b9df2ee4d55e268856204dd914a628e0732aa50ea68a5f93a04abcfee4006154a9731f6bcda484d1e7e3185724af3e07fa2661f495228e5c920665a5227cd4f144a923c888db5ad226203855279d5683c9321f5df36d64ef09a03194f38299d4445ef48eb7c1739b890e1848294bb4877ca356453ca6842d9e45e84f249a335694c28e48c915397a95fc4cf128af5d962af9fe2fa2e7270913b6428a1e0b6dbd7b175722f9384e2c8b1f60ba12e194828f8dfc4e4a7beeaba3d4231be22cc8aa88dcbdac69a110a616dbc5d4687a4b57e19452806d531a34a636ff42c110a3159e64b36e14908e5100a5afa7b261e620e0b6d044e08e53c9da29fe4534117a96504a114337fbf7b23201463149dd9fbd54ad62d64fc409b545a721c1d12761f94c4071755ef213abfef4171d6e366e76f25c051e38f97c08bcfb11590c1034308bbd33daae31d02193b2888f0702192449a48173528204307c41f7927d47f0c9d1cb83122f924a149c7d6c61a928183c258aa47cc29e36cc8868c1b9ce52149e8a727bd8f0d3a696ee9399e26b623a306056f3be951627e9798d0a018cc8485071152869c0864cca09ca3ad6ddef674b5be0c19946c73f2c9b7417752320862c4a25465f93bf294e7a4731bc74fc1a210d26812f2672c644caf28d649ec49df917e23c415253fb972ea1de2a64cb6a270c23efb236867693bbe3041b3a258d5326372e3ab285f4a38dd904ed64db4b1a6aa288d382ba5ef95ab2d4945e96436e547e43a881054143db3a751a2428431f9298a9333df670eda6935c914e593e9ff4f6af26ca32f45219ec753373a133e438a52c6a4f2a6b346c958e6c051231b106314a5fa17d9df41f3c4fecf700131449184798dbf9babdcc3afa78218a12824d90f134546e98018a0288611bf11649bae9604ff3a6adc781b3b6a5c8c4fa0262933410962780293325a5fa3a413450d9ae6262608ffcfa6e06f9c71a228e29e93e9d96cacd5c881a3460a3c87da26ca124d4a12125d3dc792043134516c1b21dff374f64ccf8dcff1e973383720ef0231325110d2d44ae874c244295d4daf5ef27dca2ac6250a961569e484740c4b947312eaa3cbd343bb3c41298177b1c30b139c4a14467b6fde87ff8ea31894288668e848e2f37a13639b4449575dff657a0f9b5312e5b534fd37969f35c8cce08201df450e2e341209b5937396dad4a5f718902867c94dbaafc37da7cf178f280975726b4db36dcbc811e594b65154dc89fe3160021c3b6eb88d0a34a2381e93ce8872d810232d3db5b1b688c286fd15cb24c75f551bbb2988a18892e5e66f889f1691451b6b2b78129ca17ff4c2253083188928e669e7188b74de4944442185fe9019646ac82e1e9a20c6210a3acde3f4fbea94766218a2b061155eaabd45e754888255cda98d19ee6e4b8428651031774cf5bc63fd204afe29a27a865c97a9114439c634914c67261005a55cad74abba66df8028ccdcb75e955758a7ff50d8b4d5fa4d6a1b72ed87827deefe303ee23768fb50b0d38ea2c583bc28113e94e7438e7b25267b284eccf6b0fe39e5f5aa07256d67d04927365675e8a88163871eab0e0c34f91c380e8a9187a208b1c137c4c4434925983c99ae73b0fe0ea54f325f8789663fb91d8a3539cb4a3e7d7ac2578772498fd3324a59f6c9e8b07ffa701b4fd99c72bc0eb4418c39944bf39b8c1b3b1a75399433d5f53f3d071349d9585b418e1d37fe0e10230ec5eb0922e8a0737ccc291c8af79ac5477be70dc5d9cb9fb4a7e3b33a3794553c7bcab61bef94b7a154424d4dd21ae6f3cd6c2877ad6fa6db19f5f81a4a3a5ae99470a64b925c0d253995bca756beeb256928ae4849a3f5263bc6d060effd0611a243bad5c65a0d1d6e8318fad75183068d4731ce509c1c9eb47a4b1b6b7fa643c79f8380133c06da0c05913b06cfce13fa4b6a630b10a30cc5dc13ae31cbdc5f572e2a108118644086ed4c11abc6b21863288fa46c913db235be46930231c450fca03cc9e43669b3c5f8851861301a376280a19875538b980ce79a598c2fe8fd39f7b61a236288e18542ce0d4a5eb44f7d73664388d1858208b25a973241a65e1a2813420c2e1426db8690848c636ca128c9f58450597923ae168a16314b2699fa6ee567a13c2288fad0113f9c90898185f2bfbc4f2edd1515150a625ca1b09f648a10913631c90ae54dea195572e7a4d7562106158a3f328acc632d7aa26e63f102b0831853284e2cf92047968bbcce31a45008563a9a8c613a8c56634461f920da39b27162f250c83ab87798f3f0fb13d07533bf9a4fb79a6a410c2714b28676fe992815e1d851c6f608c78d54408c26e03349e25e44b349dbd808b035006810830925d365bebe7fe2f1c55842396b9039da4448096553b15ba7caafe3ec2494df6373482dede82e120ac9f7e4863ccf755ec5384241a39b0e31fb4bbf270688618472262931d8b7c4f6d317a11cbaee733645d2483511ca9b95f619f37bfe1d630ca12841a6bb93e7997fea1a3abaa04183060dc2355875e878410c211464e7b1f68fa33bd544043182502a15d316b64167510db61840287a92c133a99097f5241b6b0681183f2896480d191bd3858ebfb143c7ef50d3b1e3757c0e2f6a7c20860fcaa5673f86ad6763adacc6dd0362f4a0583149bd395e076a0c1e14733e97a4252488bda8c60e37410e1c892dc7ebc001c4d841414f07d1efcb8fe6095e870e8ab7bba5d32a939f5ef8961839286690c9a34d37708cc0e0c0416163ec66ec8736d6748b1837b076fb74c861b3ae172bd8b15dc4b041319fd2522addf64444d4408c1a94d3876a95b8b341445f27108306456ffb9421878da9c8e5c07143045da40462cca0a4ce6b52efeda5e65d04377094802d104306c5511ff1a4f7e7b4e1894571fd33e7d3cb771980018bf2ad77850891bca2607ac7ac5435c8f52b877b9124a52b0a4adf6284e98e1ed367822ecea35694d364370d59ca6f4ec4c6da4100062b0a22d9e7f839264b3ae1f81a3970aca220fd3abe77fcd858c308c050455164aed8f89d23896ed4b8e147472a0c6e2efe5993f451176617b07b74305051fa91be159fc56b94b8c58c2d7805304e51b88ea16cf4887fce39a6280425731619bd96a290b77bfca4eaa4e06394361123c247cc618ca2e8a1333ea4cc31fee86088a2a03dc8f0ab1fe4861b8a620e412e736e444cf76172304081bb85d7665c9b5d842caa53a4494abd82874002140005189f2827ada39b753788d11c1b6b3780e189f28eb7c6b21746270a979bf944ecb01c1327d4fa1c61c2f9a69a0930365110df72da9b5f534ca489a2ade90be19bf1347c32519c24d6264ad660a258ffa52de3682e51ac7cf38eebce6e26b744e146a6bd9aaf1371e64a14d29989d226294c234c89f2c70cf1a9db2628a1348952e70857124513f1f6716277ac452251ce7bd993cf714d6220515cbd121f84e4cf74fa230aa3c53f269145e9fdd6c6c6008623b24f6bf12e21dd884ea49698194adeca086c3473f6349d2406631125191e3f6c5032c697204594c378ca20457f12510c4a83bc4a3d99736c44944fdcd8d698c89fb23d44b1e553d45f49b29c104394633a253f43ee879ab51005dff09adee266377884288415b1eb0927de4236886212d7f6b031e6fa93208a5723628eebe549ef42018c4014c4efb95b8f79a9520244612524159f793e7493fe50f24ca691f2ab2be6f74321473f91f373a89534ea43b97d7377b687f850fe9591f7e1a9b346cf1e4a11f4f6b2d3aef886f5509205ec87a067c1cde082016a042d965038d5baaad9f44f3e460b25a83741b79dfaa43a42c027b44802ca5ef34811b540c21de1adacd33e45455d36e951aa36beded512c42d687184c2891c5edaa565c3de21686184e25984a4f7361b6b29042d8a505897d4a6164428899c84579c690805997e12dddf94bbf942289b92d7a99e339de83e08e5eb5a370993eea4e900a1ec76124c65373f286f0cb934f1a635373e28c87cda6433c6f49c7b0fca1df7646afede9ce3e6813166fd13db58b5d841317ae8504daf6f1f550b1d14b3e93af3be8f98bcd32207c5eafcbb12454c8835c9a1050e4e8b1b944496e68c2ffa3636d3c206e59f139b1a1442ccdd13f2f593ea9d068510c457c8968c90443328ab8b7b8957a5869ab5904151f27bc6d071b102cf91c3d52316c5d6ffa02d5ef2b70550001648e315eae18a72794c3aba9e791e214a0778b4a25c9a62be37590991382b8ae9838dbe8f5651da7025b27b7f90a6af2a4afea75409a575b3d8968a82e9ec6f93e4fccce651519ea47744b8d96a49e25394752dd3e67df227774d51d0197fb54c644b518e297376cce1ae3179a428a9a912bb498daece3d46519acd6532fa9c9031aa1c3c44515ccd13f2a5a594b4cc161980227884a2bcd1f3d47d366da74636d64051d0b32fb279da2b3c3e5190232e25ebe8fe681a17681e9e28468d0f8dc95bf3fda613e58e1f324dc8acf3316d630de917330ef98b2d66cca8c00568d0a84004666c51810828c18313e7b18992ece93d7d0d414bdea01b2528018e1c3b6ee03880f0d044494e6e504da6bcaa461b5bc3231305ed31d96fd4b909cdd9583b868982521f264aec97288be7a89d37abbe5ea7ce12e5d276fb1d73dc7ecd4ae05189c255bd7a9c2c429feb9428468d159f597fafdb9e44f1c4cd9326cfa35466ec2189a2bee6897332ae492b12a5aa8f1eff93a7c63941a298912e4e8f8620db64f288b2698c66b5d5cecfb6230a22875cd5be1a9dcdf13b6e7c238a1db4268dd5bfa6abe4c18872081dd2444444519af65844f9b266b7d364918722caa7933788dce3790df4c123118538b2bfc93c6b723521a2e4aea7eb671a3d43f8100539d31f6915e9a4444be026f01c0ba041c33c0c51dca0b49d8c9a63bd29134043e7e0518852ca8810429e9c10051dc2455c714dcab4e83188d2cabc65c4706dd5bc0d1d5f7851a6a30551daac49134f468c7b3a1005c9a6af96c96ee35b53f0004421acc4e0264c646b2dfd81a433f56fa39d7e28072ddd11f6f37734a1471f4ab551e37aac63e88d657af0a1fc96ed3ea9bb4c8f3d981ecab249e6f9fe858ed1da584b54822f70d8c0000d1a51f0c883071e0a413f83a73253a2b3b32d78dca1d4a34798e89f18e48c76286649901233bca9ac93091e7528fdc40f26dfb36665448762eede71ab6c553de65052fa744edd105f82871c0adb22d2d274849c59138772fe84a441079d5623c3a1dc7299c464c43f177ddfa06e2875fab788695ad63e52f56883d1f06083aea178562e2aee7ef55eaf1aca41882ba17a7624dd260d85492be757276d2478a0a1f4df26449c1a91e52567288cb6199f6c72d649cc3ff030435184070f326fafbaac3294b48e121b6533965e0ac2830c85d3f17666e7226308a9c025d005d6c1630c25ffd898ec43cb4e88184af2eea5d4739ab4b2bbe01186f28695295991a39f3b184a223bd8969cca6c33d282c7178aa39d94b838950a1e5e288ff4db1ccee42e9447ca955e9e12170a9a5bcfedd23d56ad12f0d84249f7876852734e6212c35a28e609b24b4cfa10bef32911061e5928a709134cb743ace7cd081e58287836cf18827fd02b1e0a3cae50ccd8a983498cefb1fb17b9c3c30aa57c6bddf69c1f730e478d4e8547158a19325f37e9b2bad2d9584313c18d2e4870dec61633b6987176b804666c3163061711a0e10a0f2a94accf43b6beec24ae8effe2049fe32e87c7140a3133d6b5e677d5287b48a1d81e5ead2449da1c825128cdd658e97dcca489db58eb3d8107140a419f470c5a211b6b5f5e783ca118da84999cd1ae1d293c1d1e4e28bea88d2422487de0d18452aaa957e9f3df504a2614337a0ea2344b3a093922f058422167eaedb85022b8f736d6140c1e4a28a6e9ba3215b1a247bc4347e2173c9250526a4f5be78917a9791374e12538e7050f2490239426082d993f7e9e8d948711cea308c599347a5f92967e663c88801e43301aee2184244160208cc0e307e7e18382c8f13583b2eb2a6f5080068d1b387a503a21ebd48fd0216cbcc09143013468e8e082070f3c7690998abbd5a5676abaf6040f1d1474d94413795cec22bc1e392846d2259b748c26793a7ae020975be07183bce16103fc80470dce830609028f19947bedd497486ab664ef21839232a58334a9f1496f4e2c0af15469759e20af46038b82ba3211d66495f18a72d0d592faf92a167a571437c4df344eece821a815c56067a52fd4dad6ad793258518c9bb1df7f341d26381c58cb246315a5f1243336236ccba78ad2879c7e2382685ab570c84845d97645df7512a922fb892d200315a54d1b43d638aa84aed9c61a2209649ca2f0a7f936bad9bd7e96618a72965eab9ac9a5da2e4549fcee7c2c999e6c72a428668d2fd95fbd8db55114b34ec9929d4c9b5c43c78ed7a1c345a1872fd9214e0c45797545c5b2d53f54088a9267bb6b52bd938c4f944e4daa66c9caa4b4ee09a321a313c5ce26c4e9532fe7a3c38972eeeef89922ebfbe54d9464ae2ba5a125cedea78962b8c8d52e49467a0c2199284634f5516b3785f21c4c14e35be70d2345e289fe12a54f3a9834114a6bd5b484d1a84a9c0c4a94b755e36e273da22aeb4809c89844327acbbc35364914b3894e939d2a47c5b7912866bec7d4dff8749186c4c9784439baaf9c4c6a1c5ee8f81c8e288df875f11843cc71c24694ca94c584e841c817971145094a8448ea20c52a6c818c45180d13c85044e157eb7f84fe8f24fc2e769c2f3a1105eb7c9afff1076420a274a73e4a0e259aeff5808c43142657ea84cd31d8c6c91045b1eed0fde13986ae10c5091292ec943d218a699faab1d9454b35569063c76940c6208a2554bb36946ad5cbd858134459cc7a52bec9c6fb5c7121231025093a69aac7dc29f4cde1c50e1c3816f05ffc17165042c80084d190f187f26a8b694bef891a8240861fca21f663ada7c9c65a1a0764f4a1dcb71aea45547d436f636d6770c100bd3a3e94abcd3a7c3c899d473fd5309b848c3d94fbc647e418947a282439362a5329cfcd6f1e4a1e326a50fa4c7bcc1b1e0ad7b1219b38896145798752246942abd775104a6587828c58c27f44cc9219ae4339ac871af3accfe02202333a21830ee5e821d14499fa68d2cfa1ec1236bfe3477228891033ee4f5933b888c00c1971287dc7759a54f10abc04df9a900187429029d2fc4c5da3ee0d85d5f7f36042c2a43f2990e886a2e949d9c1c32aa30d2551624e248d314e6c52b798b185090e078e0a882164b0a11469628af3ecd958238f821b38bad0719632d650b6b8523236496b90a1063b8f4cd038a163b332d2503a9df89e99e2428f8865a0a1bce7d565e51f549f0ec080175fa057000d1ae8bdf8023dd2828c33a80c337c69ca940c165a837a5121a30c458fa69fefb236131c0e7c19198a41bc7cc39f79051963286a88fcd990c93677490cc5b08af15b93384979c2508ea7fe4244b88edc5a524106188adaab1512549e8cf47ee18a64e9692f17214950cf5c20c30be5f098180a7098e02fc0c5116474a13c3fea593d7f309d7c1b6b2c830be51824e8b8f9cfd25282822e4a70e331d0851738b8f82f4ed0c58d0cd8d8d1c50668d018828c2d943565e89dc811fbd6d742c17784d8c82a67a1bced2379342665f8804521c64a0dfa77938ac4a41b5de89f83001ce986037418e1e315259b2c26d63aa4f90ddec0b166666656d6bc448de0043a50430041f87045499efed2703a93898f5614945e9b709e4fbcc4a44a4b7cb0a23cab759621fb9d3c11243e5651f220b6d4c87eb24e6a121ccfc1050668d060c4872a2cf1f023547c37c7e7fb48c522f4c3072a8a31d29fe4ef13edf99cb1c51e3e4e51107983be975a26b50c3145d9278f18796bf24968d3f0518ad2f779ce1cc374ac7da428adcca9fc581a84241d4751ecb87e8b24e32db4268a52aa85e9ea1087a2bcd6260745416710719e5f9b4f5c9f28a713329b364fab54b9a30b1d1f9e28c4fdbe2a25b2a5e85127cae915bffbefab1ec25cf8e0443979383bd72bd5f0b109e684d8e40c1f9a287abab5a47ad1514e9289c25dbccecde8757fd70b1f982865bcedb80e0f3a87fd1f97280635df7ef9b9d0ad2d514e1efe22e75d4e5a6963cd8b1a3aba68f43abef00a182a3e2a513aad9d612abfcea48812e5c9dab21d71d45a4d466ef0318982124924d579bdccdc1b388839608b1b14d8517c48a2b061b486a0c3ccb751978bf8884451e62e7ed378fd6f0ac71d0ed0a0f1018962f87e76d5341e3c2c157c8d0e7c3ca210f38fd22de2c40419ae617b870f4794a38692a0da51d279da88b20961591a4d878f59c3000d1a3468106b46944c36e424f304cdee693c7c2ca298eeba337d045d4ac48a2887a44b076f092e32b28928efc8d8aafd183e9308220aaa6f3221ff5a664d8346e2243e0e5194286bd94147ee20794394a4e41043675613423f852066bde94d237cc70f421463470d91ae3e23c71b44b173dc50f5a59f93975bcca80accd862465160c616336a0233b698511298b1c58c8ac08c2d661404666c31a31e30a302119841870f41143ed427b1ec3e0251b68ebd1b47ab1ff80044c96f33c9bf139e35f23f9442cd579c8ddc973ed54037bcc68ef33972e03878372890010accd862060d1a1f7e288f9c70cf08610c7cf4a164d66726e5754e8ece87b279523e21886d112adad8b32f1af750fa4f4a378978be9b255eb80430d0f5a187825232adb3279ef79ef250d29d59c33bad3728f05e5060c61609a04183b7f08187e2ddc7907b21b6dd2259868f3b947428ffb0beff6116da5833a8860ed78180307cd8a1f4125285a8ee9ef05187a248d8bc1009a24331cdf77f64d9cca16032f1afaac23497520e050db24ddfddc3696de35092b1d4ac64cc44f5a48543e1b484b09622c435de50f06acfef644a6370d50d65f3ce3a1139c9a42d8ec2471b8a21ff87eb64b98fa61c6e82cf4114f0c18662f4705f93cbaff1b186d258eee9891bb136dc6a28092fd94fe99943888a031f6928780a4b8d19cf071a0a36ea375537547f9250e0e30ca58d7d8d13845fc6a0f4618662f8a07f23fcc4c61a8be0a30c2549a2f326b9c1b6737005381061c107194adda7c34aacc9d1da1c43c1d389e70b959a3bd41c5f811d1f62c08f3094b366747d7a3f19bb43c10718569d18e487904d6d44051f5f28fbc9ad4f6aca2697ea85d28953dbebd4a4692d4fc886fb39f2c607170a1e23b6c7ae1a4f63de78147c8d1dafe3736ca118d32799f05469fa8ed751820f2d1473734c63cee8230b05299ed9b428759b291bc107160a394993cfe923e85ee80a65f91cf44a18137aedb442b993ffa43e6121844e158aeb26ac740ab11e3752a1601b82688e58af0d6f0ae53cfa547c0e2a843e078e1d3af20220860f2914d3e8124f3bc283a63a078e1a7604f888423144d0b399f49efe708242c9b553ed22249d61351f7c3ca1a0f3348f0af121bfec74c3098514b2b341a7adbdce96195c4460c6058e091f4d2826137152ad7f8ef0c1844c7e0ce2b46b7cf9b184c29bbcd852d5fcb52325a88e8f24942edd3373428ae8a5b961761f482868f568391f1b1bbfd5b88f2394468706e1398c08a5d33770f061e1c308e51caf67a724092d6919e1a308255df2751a3e640e213d840f2294368abcb97f499a111e4239575494a75d0805e9b6baab5d06a1e07b2762789997bc4920944b46e3831a3b9ddbf483e28dd249ac97ec8382e7e01d3eed43fce84141d4da24d9ecc124695a081f3c28ab576a48a183c410bd1d943c66c73c956c78c950071f3a2868b2ce9fbad37ecfcf41615f630691cd4ab65ec40f1c94939daa12a5676a5343287cdca0d8a64d454e58c49f930d8ae136833eb12f9e2658838267fbd125c935f989113f685092a0749c41593be7bfc3ea7777f44306a5d15ee3c9e41e8b72a6534913cc65458605366f4ac8873e5f51b08f49e4f1d23a7ddb15e5b4a5744bae4cab39a71565eb33213b234b92e7ac2897ace6ff6bfeea6b5751acb26a097a661347a48ad27a944f239f6b438ba9287f48c87d276a34b88d8a62b69efb784f9da2fc4944cd1bb4653faba628445711ea5d6d434856298a3978ee9c2cc38faa9614653149666a6eaa1dff5114ebe49909e1c9dcda1345392965d23e84a4a3e52414c510474b5fab4af291014521e98e3a159e7d4ebe4f94aa37753cfff6f8163d513ebffd081e92fecd5f274ade2363f4fbd012838c13e5f694bf494db6f5ae9b28a40c5aef6e4687ec5213c5704244edc964a210264712f142041385bd4822c5cbcac6342f51d08acdb9ba334b14442ab91b46c754b9ac12e59c2eb463788f12857ca9d13d630841077b12c56c262b59ad9244d97f45e3c4903dbe6f244abb9ec1646c2051923199bde43812b7e34794b346335169ab238adea9d7b722d288c25e7ecc1d94850893644449889c203a434971ff1651d02a93abbf321f09514471b45e557bb529fb3b11e5984b5e8828b8cd9daceda7ac390f51ecfb98237e43befd18a2189f21448a4dae2a6121caf5227447d65d4fba2444c14f659ee6607d42bc4194b3d7451c139b31e51144e92c4ef828fddd285a20caa239c7d841ada7d90151ec0d3139bb6e4cbfed0fe5483aae4498f397acfba158ba3fb249c91145a9fa50f698a326e496f950dcdf7872abe3897b6a0f658fb8493c24481222d4434168eab0a7339f87d27dc69f796caf391d1e0ae27952a7d6a8a5ddb943594d5c4834d94cdab21d4adb1a3373c7881f295387928e41d37327e1bbf6a143495d93e6751ed9d8f91c8a177eaef56f1b5fa91c0a39c418c3774772962e0ea5307152d4247caa7f7028c58b48b32927d4b9f7866277958ec8759383ae6e28fce60f622d746c91671b4a651bec7d45d77785d850ceda21869329efa388d75018d16b9d9057437134644c4c235e94b6d250d219de3a57c4b7b10d1aca497ece20e44e3324a6cf501ed1417798cec1ef4e3394ae22c7647a75452775198a1ff393a91a9fdbd4c8505042f674c8eea6be640ce5a0428bf8f36b2d1bc550d8b862399b21f27285a17832b6a74d92038662aa0c6db3611ef5fc4221a7f8eb9cfd59829f5e2826d5fb1add35dd56ec42297f4c9d7a9a885a70a1709d940975de366262885a6ca11ca65eb649432d1484083295fc582a4245b2503a7dadd4dc2b416c140be57c96b6e919dffd3d57289e9a50abcb5135eab542b183cc9f317645d4a20a255ff5ced5daa7662e442da850d2eaea9b4ccd26b75d63c78d47c1db175a4ca1f04979b4f4de5d043f011a344cd0050d1a440b2914f26967ef912703b4884239cdc8a8595433e8b043a1386a999b4f3709711a2568f184c24bca10ab3d7a2a649c50dcb85113639e4836ea26146e9458c9bc2f6a25dc5a30a192418434310f8bb9a8040f46336124108642e16030100ac3a2bc47008313000000081c91c562b160349ce852f70114800359301e3e2e261e241a141418188885a25038180c05034140200c0c05828180403428c69358fe0a0e6bd954a7ce5417bfbeca42f5fb3d84469d6cea1e703eb4583edd96d4822b65dfaec839f06d360f09b8260b195605e452000f051bd3087f926965a015541550049e16b893a1634676c651372f086558d0d117c945671016e971bde5eb5c5c24f3353782fec51dd472a08013bdca0c8447d6c5639300343af29870a32c510338108aba5c0469f78b3da8b5c83bfaa27b083953b2c968be58d50c16563ed0268ac9f3aa85acbf0b5e1212b577914800e97b7f102a6a489b7e894d784d5b33b35de7f78c9c7e0415e65cd67895b28806d3d2e6f3c1c450da97a0b3123f30854ed67d94b06feaad0564413228b6eca0557ebc0022493c1ec110a381bcc833e1317cd74c51433a9917071fa0852643755218c21f7d513524e52736ed026b54e5058ded8481da8adcf8268a5b11942d605e71e591cb3fa071d0feacdd1b206bce45ead52b6ce35e9f24d0bbb59c42c9c24b12be5efd84742f98b2b882d1818d5d6de0f0be78f709553e9bdc8f7c575e48f63492a37e9febbf74a9965e06f052b1a33cbb5d167a4c1e9307043b46953ea5f8d126cc2717e529f40f096b0262f8f6736471ad1e8b702465510cfdd154656912216b473ad63c272bba29065a09607395b7b181a04001b8233a55dd8e88d3ea21241c83619bbb3eab939b5355519f2eb0d95254a34306d3f243fdd091f28b26f69c1a2dc9e626709712aea8ac129008c971888898f1ead2b7e1175013c41936045c331fe8688bd34508e5ac6f213f774cd9a5fb1111d4533fef6746060ca78df488970a81402915cc682b0033de8e8ee1e8f62e588156f124403894995c835e0829214f688e3c6865329cc591f58c9acbb9cfb97fa088ea428cd72b101797a2c19d709d69a3dceb447bb63c0061e6b46c48bf54bc7e47503858a27cf3188889d7ab06195d4f6d90ae82111ad6828efbd1a14971822fb57a67739c673fed00521a6f7748802cf6f8801b98835dc084401125d1eb28a382f47f08cf8f8536d1e3a8f4fbb2c04b712eadc492fe1e7aa34027ecdec9e7dbbc78e09c88f81897c72cb44d43fdf2da5b9103de1d5ef81f47c66995c92bb8045232b23a140f034650df1463d79db59d716423377a8e51535041cf4cf69444ff196015c773422d9177a72494c51ece7fba79e2371a37706e4e9bfe2acaf31339bf90eb41acc9e184767a24db627a7001a56124043c6151888f645b67ac3526288581e8fba8036a975ebf9bc2a39d6446ee5cf5610e23434e9545cf0e001cb747deb2f2eda805de58a088b98a4c63f1778b46cf27a88e91152eba1cb55914fb9ce5cf5325aba2bffca98259ac282870b7d47ba6820f37b15c9c15edc7b6b634a477108e5c405e2d2464773f42d3590fb09765f9deebdaaa7504c232c3db9a3ed62961d3d9f23d24dcf02f26630c8c471e55e59d63a37d63319e45ba1a43bd2a37a453f8f73d13bb58003563199afe85d3b77d8c7635b27d3a726e685c2a18d661d3fc288323a28a77551a72d50a315c03dc400082956fdf3ec4e0600b7ab75f26676fa4e3c809381abf09fd8a8888bd1321088cd24741228452b17016ee654f1276d0bc48137f6b06fa9bc0dc6931d0a0252617d3a6f3d9bbb0d60eca31602beb8de58ea330924339411b3be0844b84846b8469486b258b04267443ada8f67124511d5cd74d0057bae70780cb64135e6b8ca599984823807694ec804881ec41455b5d2f8e29e2669a9802370748b5883d65ca9d6850348b64346ce5c442cd5bdf7b553c94c2075a1b07786263a40d2213bdcd4523fa0982de86aaee6ccb65cd7fa742ed69ddf7ecb338cb18e2645d28c0e4d951d5dbffd134ae221600637aaaeeb94e54121cf067ac0262c51268b7129e8a1be3fa60847eb56667029a77672b738bd123a8f33c9cecaaef56b4cd82fcbb735cce28c3faa5ef4c7c20d25baa674139831323edf8acecabe5098f68ceba864f089b419dea5d0f3857f6782e71e299d0059cde6321cd91cefea50f7ad11ff722107bcdc7ef65fab871c1689bf1a11f94fbbaa6a9818b37342ec94833816e9f6e45e38185652b19ce031d4512337ef20fb19f9728db2ceaae3d681b7dc2d75e01617d76079a53c4a36747ce552bce6aee65e2306801da9286afa7ca665de69c2113378cd294cc3e74a2e5b3b2b726b5e5af7c676f405d6885572073f3f3aa06bcc97f0372ca02e015bbe2a0fcef98e0ef02b0bbe7f7390f1c127772e9001d836349146c5c484e183039515d200a6a0af9256b77ab4b8b58e94c2946dbad850b1d3b3d1ee33d947d15ae5baa57bd07dfc3c49c8f50a9520218c39ba96180db53f85f118bee1a29b055af205e94043bedde055baaf1edc4326cb806d8e9f459d8bfd30786a4091026972036e75222ea31c3f6c7c357c28c8a55c4d670e7e36de18bc990f0e6ec6bc594324581da7beedcdb30a79ceea15b25101fea5b589eeb95dd15af1d0fc85748ddf907b7e55329a7aaff840343c5f6e343a59ec55e71818b28e9d9e7144ea95c12449ce2bc7a5dfa46d1be4920691c6e1e0a8b894558b5cbafee23421e854c3d2ce32dd226be7fe73ac791cd356ea2189fabe9b798a8326825924aa5a74e4b06e2daeb400dd3124a1f1a161efc0d2a3d3d0159b6330f60514e7b910d52fa725c41494001411d838288fa41a1425d437951a062349a0c2d79a8165060a018a1ce00d0b8ae50d850eba0ec507ea04e82c24321813aaf2860a77c845c9692261995a99da0087e071aa77b05c81385f24aa3fa90a9ec5c02aa9b460103d8f78b405040f52beacb27a7031ab2c8863a43012d1c52232743595e600ab30b50ada520a230500f50d626ea16b8d4bed1ee03eb04c5d6a8a0525250fe50660240447aa8b68eda97ba0e4503c52fa2743039891d6f505ea1e077d4b4ace42ac301651cd4dc0008d42c283f941aa874a8a450c65010510328c8507b500a50ce1a940e8cdfd64441ca0c94ab5006011a436a1674cc19662a80ac0b4d2c4449e08a6fb1547b29a87d5011a034504aa18c21d4bd87e2056cf951a5523650891114f0d7681e017c790333710b95b946c2f1bfbf98451b0895875a02a50595b140015f81ed96202361b6f32d7f620b32e64778a4923aa9773ec7625a17bc23ae7c625b6cd1613939fd7aec29387afd9af88c88c6e5eb7683e0eb5c44885f45a753061803beaa2d451e96d00160963a344e0558afff29886b6566680cc6275cb59dfdece2dc65181a5e92c1ff4c2cc604c8ea100f842f103805ce400924bbe411a371292bf55ded7431e3241099151ef9153a9dab0bbc934109a80f8b0d6d0afbcfa39ffde84a01e71c0f398e4b15100d2c857b66a4d852faf24178a3fb82af6131e0507d9e06fd2cf676874924757560faccf5d124aca95534992f4d7ff1269d3d9ee1b8c5b7521baa557093217d23b384a811bb2eb1346fbc93338f8288450e7d8ff5a78a4632d769043b8b554c3ca172b413183d2c76854bd855d6178efce48f2446ff028dd1b0589cdb1216d9383fd07adc23cf723e4140328009709206d740ede8e23e05ce0bd7808304f84d95155ce853e2bfcca39442c281a461e686e85563561be79ea76bb0cfba3478d8899d62e7960580f1eb67e4e5ffdb50e98e863f7aea6c10e86ebff79acf54848f15d24f4d7b94e8cdbc75254d73b38a737eec348ff21498f09eb29aa7bc9e81ed15c9f791375e0f150330aa721393a17f440695605a03cd940c8c123a1f0e1b7af4aada06605551927a92b0e3c71bef85160520728f3b469b3b2823503ff683970b567857ad8a172c394dc645965ca1a50295317c661895917a9cbba47106a05326e8025450995f4e1dcac31774704a8f1fb29b7f0dbd0c4d0660df1b4624595fe888dbe495ef25726c83575dc5647019aec869b8e88e54c90e71cb89eb51536bf64c903e72fb341be2c419961d92a4af9a2ded8263a078263861009091e92e4536323ef669a4c1d2ff7e1a5f9a3ad37dd847e4242a6cb78139cc79bef8ceba461a78cbcf1205e45e7591809bf7c8df24de71c2c3e8bfaf26edd3d987e530070288a07ca432a9a3661908defba10a361c9191c87733fd28020615ba606fdf030da20dfa8e132eb13c6bbac7a5088ab66091f28bc7a1f509cdeec5f1930fd65283e09fd3497acb1011d3e76b2a5757f13e07445555c5f84a88e2ee3bf8a7ca2675313b76b5eef099d90a86e51c5e80e2d76eed4c7b9a09623c201437ea3fe9c06590e07ff5d4d31d133dc23ae75e5bb9353c57042da7b24b7f2ab172df8c3225218522f368a9a01203c3264cd0819cdcd1ee3e52fb78ea1d38e4e4c6ee5337ec8ecfb8d16ec670659c4928bfd77a5512a6ff826dfb9e2a0931e2ee71e110962ae7a7dfdf3bc514c99be1e199baa72455ce54422f4217b09c365060fb686501027cb6a7393322985059c5530d95675f637c75cf57ff8a542eaeb7250980ff60a9bf9e9ec99ee1ba175ad3a54a06753deebc9f5c90312cce96c11058f73e103eebc2ae9fed12199a3d8c837b0af8f09f52a7448441ecd0d6045af618d0afe28118ab11d913753c31ae2de644495c7a344adce28bdd844669896bf42763e9362989a0e435c99074a0acaaba3635afe0a0ab5b578d38d1727e4a84fb485d6f1a71dad4426ce2ad794b1135e5bc77dfaa10792006378af9d2702fa0453c2648849ad014605ccea5ec88644cf600b8ac869736c14bad69c92b6e52f50f02f4d015c54078c779e33ca92fb2ea01396255f1247c6d67b05efa64a65b6d1c75b1afdff02a95552612cdfa0f676ad2938a2e44a630b426916057d068ad012b5d2b0be4eeaeb51366f616414bb5629a7a7cb0a1061a0c937b88b137fc460aa4bcb901d0eead06d5153a678b1c7f7f1f48464c99410ed1ceae1fdc5e89c2c0e08ebae014afbbeea85e5c130df292597b97f32fb36b330150bdaeb7bff4d6c5bca42aa50bb2f7e41d6bb4474c5c602f9799c3662c5f08537b80622129e6b0c945d26c72522c0c75038ec359efaf705e994306d3d4024a2250ebf3470e64c5eabc134265c7253c44075c1bec4a4ba6c1a3334324655016efd55fd183a8c327139affc5e6bd8e8058c3d8fceaf62c10df9cb304e4ce68a91349da47e289c362ba3da24a44c8d4b90f7dcc757c3c62440ae80f3e42069148b48159421c6ff50c7346578e461e3ecd5e6f7952f58f0180ee010f066316dc089ad498c3fb3319744ad3f65d35dc1cff53bde42b338de8a2c97b778fc9341332b18d180df6b85bece3477ab33ad4760bc10f492aa13e690e96447327e9040f32f43a80880d6893ab5a809cb78750094b76f121d7cc796c80c04bc228543650c95d4b602779e73c495b7e7e1ca536d03a3f5c2b61502b0d68ce235ac095045f355027b9999e207e488410c9bc27c6cb4d969ab8758f82b777a07ef3cea46d7f3f74619c90eec8e5bb6138e04cfc60db301fa1e19d8d38ce9c71281621dafbacae048328bfe3b42fd929609d010886ca8e44448348a869921816d6c327902fe9ee47b77522e6d61055d68e47debaf8c49276ee7969b51657642c09ad2028437167bd12a7812cff9e84d4af42acf100269a9197f46876e2b60270eb08ac2cd2d4c9b5832b36bde7c8fdb84cbce153dcd8ccaa639cc1b827935110d8eeabb560e292f5f3fddd3a922262e036ee807c2a0ed551379be4572bbf2e1c366327c6f2a4bb1a718f093d1fe68a38199d80c5d86708167e744ddad475b4dcf8bc1abfa6b38732410413b33b1a127ca88443a2093651ede51877e5b1036d754389dd636138870837415f9e3144aa4a41673d10eb395a8c5a3dd4e5593e88552192737bf1431d9408b3eaafc24562481df46f3e28fdbcdbb260c447cd29cb41a11464b6cabd46c79a4af856311cb42c6579091744db858eed6f3dd92bf80ca91c89823bb6c9e0a69ccfbe05c1ce2abf3a7a20d9af28939c84da4717f267d44630315006a90df3eaab466d3ea3fc6af2aa3557990156851e27a84b81f5492d1b8c9473725ddc279389e4b3f3544af07f292b15a21848ecf071032caf0fda980d4c7452957be1b5ad1eead2accbf7af58fe78e8da4eec48d53443afa743a1a4e41931c83a8e943a358025445e7715358bfb1492d6126c699727abed14c1da2ffa2cb0be510aa749f3ffce16b987d3106e725a8985d1bd8117d42d462ee86bcc99f1f73221159027952c4ece39f16b20eb096a3ea63e9618a02ed4286f7648f70eb5d90dc3b1de37916d2eb1a9d37be25423d2bf7309a8486acff4cab00f8b8857935be19d50ad1ca6a45183a421a480322e75f9444ec1f91e8393fa414751c54a3ce317c6f6b35b7432889336f0c8eabe8429c0b710eaa81aa8a65378401ffa56223293212c6c92d14c4db184793b88f4d7aba1697446b812ddb363f1f2e6250c92026dd0413edfa6270e4af83b71ac130c0439139399f61c6deb279e03e5455ad5393b4b547a4ca17943e986da2ff6b9c48f25404596f8504dbb017cdd31a2e5b87119dd56bcc43576bf32c6cc146fb1bc167174bc9c8ba856e4aa34153148e6bc6ac81828899a0dc91144fe22003c5902dba024ae7d7c1604f42af4ea0c1e0eb7269cea720d9dccb4f5fa826a1d2d5e3b672540067db5d7ee85564cae115d5dc77755804e133a9debb60f04a5355594ec2987283f9689be5db77014c58b6192069faf1196240833d8724735d15752b84ff9e2e3781bf927670836f6c260c20f84dd13ce933585d15f38b884150030c453cb156b983123fd6119a510ac5f3dc7086313cee771e1bcfa66354277db48e7b79d06b160c8e367eb8c25a79d45b4e23ba2d702af64dce54a96da03f0df0d694cfb7983312746480ac2885dfbb418367620553b83b1a548edf72a3c4cc2165a7c5e42448fd8e8ad3823fa110f16eef554e2ad67bf34035c14b98697180eecb0509525c397cd943a9301925c30e01e312cd06b79ddbabf14f19212325e40359172e94a7dd4f741e848d4b51d7034dfab5c7afa5e5ea89e78a614fa49d6ea3c0eb765c8d0a4196fa4d0260dea12305ae88818664dfc664616b70d4fe4470fb75a1b6ed053ad6c812cea2849271fea2868f41bd8ab6bde0762a88ccd1995ba133a910c1a7265cec81fb5e1a470b86a2d4edf06a036f7ff7c033da7f5867042bedd6ab7287b12abcd45b2f365fc929579a857ccb063a813ebb848885d352a169ba1bd037d712c6cfd681d04d27e4c3bc772fab7cb163c627dbf4c5bb1f110334ed474e5c87530033ae6aa8403af5aa75969e17b0041d9b9499ef227380be2aca8787e9554af0febf0ad643f908fd937c89c67583972c7e4a6604c3df4cfd4ec70e59d6c40e4f0c462c4ab159771151cf9e7d4922f650d9f6e69ff5f3620f063de89fa3a8cfa8ba312d1a20ed89484303f42ae14281130d2b7e0b0dabd285d0cef4705e5d000d6d308cd7449aead3da19656444cfcc88a1f492a228310497d989aa8077155fc85254cb2eb5ef475991e8c9db0a1f17fe334143b6c3948a0ffbb22c0b5cab329e08dcd0e4e73929ef310eb3594222b812b32e68ed65d256453073391278df03e092c3dd7d8482ba109cc9828774ec42ce8e959cbf0d5d2b1a5c043d8a6181fe9feb454b37d75914d287549b610cc3b442f699f9b23fe0885e94db9152da204df2ccb95fffd39422aa2e0b371e2e5032becbaad22d464a7c6851749dd9a3c0afac02e61bdfb5b87984adda1f5e4b365c9596926e8c9843438b782792bc34840604c0d0e1bb4708d6280b4769b3b1bdcf1242829d2127a4f0f0663294f56a5fc17ca8b8dc9c2bd41983efbc8ebe7c384651a534689c0eae4462ff6a7c5cec033b8bb0c759d5aa36b7cd17f1aa80255832ff2a210b687ae35e56a5c5aea2e3ef7b438869b9b2f96183e1028541f84ee99891b1bb6f30623e0c27b71b54b06e2daa9d09996bd580b159200dfe1ba0ea76f8d529f9479c0a40babdb63c73a2bd93f57b1e871ba3d628fc6585340269b35741f5e453f3499fcd9eb3ed2da6ef5d8b8a527a2f915b5d93b4a3d8ab861c98482d30d2968066ff5f02045efef8fe493572c1305ec5032fb5d7ab516ef4e98b4bcafb7bda66afa812fd7f37dd82484b022dbdab027163dc896be1e4d5bba5b4685d6d45a1b9e826e06f9c0e68c9e3392c9835c84d95f747a060969c5c8e3fe1977e433be22d888f3c3e3f84c041db2062719cb88f28aeaca38f7eec24a0e6832c99d6293698f3909694d062771d4ad9696ed9bd7bff19f87e5ec27a8964334dba4147f861832dc4f163399797bece6657bf5cff648cc89c66549d9655c901d424d4732a646b9ec1f34c8fc09198c9e0b7798038fa53624e791476f1e04f697ec0b5369f9502030d6ac4e808b7a270840e5ed1dbe8126b3794dd0d011332ab2917ee0da7651001c8f349201e350921317b16a997afa2b20159be1351f6a871a06c70e03dd8a3e3552f030cea7d109f64147d540196fdca24923eac1097b1be5ea5320866f5c1d6af7b88736c5b2ef79b47634b0a3d8dd0c7a66e91648f27a9ea52ba3d1df118c8b91784aa439baf6b04e992ee9c53b694ecb98c59895344e92153453df42366dd06bf1dc4a81fcaa5970a9952b8007d828b3eb9d4f5c4a290922913077892a58eda569b817bc3083e20be56eea391311cb63786cd8e60ed35620ddae74a1f9d3898499b721256fbdc1c911716dbf8e8894024ca4acbf0bdd53a7100851b367176d9134212572f2b730808795f85dfff81edc43eedf73488eab888aa69b2c80fe09233ae611e8c98da9f4e5da05149f4235b1f0b9760a874dfa1c4dc845cafd58a124fed3ba6ee2056cd1e63e3bf1652da892f90c13cf6884b28824ed7c50993c7012a680c84f1678ca60207d266ce72e46d5777f6a3cbeea8e5929707cc9b374fa67763bea8cd5e2ea158db986f9b733abd0e0279d8d64a3e41ae6debc8276009e3d25451da7469838697610860d467de616f503eab8d1339cde5e9df1253ad9b39aedce5eacdd0c3f3748253f8fee99cf5cb8cbccabd2e4164287831acb53f47ca9fdce09d6f1132b661600d6ff664acc3059ff53dd7b108d3d35aa3dd12edb840b146b9fb3826957da4ea62f4a356a25b8a00b03bb300e4b9b3c240ce849a38484d59318f7fefa081e7cab8a7d49030bb9199d0be0a9689ca8dca67eb3acf5c78a29f4a89f41bb804b1ae6431fac5c38914242e27e2d1928c16a166771f702333626f586cd5c28dd586fe2893ac13a5dd3b39130f503f8b42e2f1b8f687a5203d529463a6ab24c11653b3758efcc1ca6ff9ec93298ac243e4c772e99e9a2ae9670d3eef1dd0508c2f7a57158da9cd2cd765882603aba304a56a897ecd3413f27651a6d6f031775f781b4e6b8a58443671455ae933ca6d366905a4132b74fd7281dece40a4f29ba023c425f63c66f1a9524ddf2a8d24c70000ae8046ebe14e8249781e09133459ff8d313de50f8c9bbe9d9461c6edc359b3ba5fca22311fca4f7b07e63cad75849b5d6f35441d87f65494ccb12b547d80eaa3d95a12c391103ab21878d4d3fb524d7c8b8319a04aa6a71083096aa28db68c389440c2446c79fef2574abdddf09fda5fb695aa089fa54e9fe543ae9205952235a8f43b943a9eb22ea5222fd412019e89dbe6f341b021f27b915b4c434097c2ad48e5800553df409fa70db6d68d7bdedb97f978181bde0f7eee4ff873f9d57b66366a35aabb866b0771142d45fa0b3d1a2084afd1cfd3e41407aa0b847a00357c8feb7753b18ccde19639815557fd855ba4e2f200c40029890e7c3bd4f583e1531d4b87ff1cf64d9dcbf95ecf4861cdf1f543e5dd332d7ecb571bc169a87f94ed5a2f2e6e64a7b3f0adfddbf4622c8552c1d064c2f8680839acb3c1dc14eec63ae274372f10833d012d0ecf3904695cc27a846360445e306f41efa13d54c97d643e58988b9afbfb473b37a34133109a5751aff0e61a6406bacce5948e14c939345fd73792305d10472f2f94c7500242183db8d351e883517febb3f87d1fdb62125b53ae78411da60d674a84eff693fb26da8a49343ca4e8430ee3f9735d960fd2024c316a8f8a0178c309b7ad2c46e1201522b80f755cff8990f7909e7686299bda0c0b9631fdc828c588e413228a6838a1b06af9d0e2ea8f3f0c1c41062c6150fc483c26503e4c9e37a85f2ef46c736b3e109b59e07819b4ecc2e04e98cdabb2e39c80743a23c9bc1a4725015538c3e4dc6c320d96731f260cac6ab7845793eeea877ceb25f6f048b81b07f72347e9ab4aab7f3b94ea9726206a116040ab589aea2e1004e6bb8924fcf0a23088441b36688e8e43532043192a808726a4ddd514b409f80a86486999d04c70497ca8cfaa240860d2268c57fcb4e1d4460252044708268916c4a2b5cda6940e46508b7a308dd9a611423d856dd358df5bc495d5c659f8d231359a162401f5ba821d73d2f3eca93f7925d5809204996276581d944b8227423049187885688612669a8f0645791bd579b58b82c0826a425214acb8744aaa9102be455484230edb00d8487211d86713b30548ea02330d690730514d929840ec846fc00d14a6a6b2f17b8e8d3471a4a46dbafb0747ef444fc38b29f06b8de2b5d6b5bcaa2f660d5d3c1bbadc760170570ee716a1b3d1aefe3e7ceab27d89c59b4a6879a062e75950cc32a040b2120b22d4a002ba240fe460fa9f893581077e4dd9a0e857f2c3aee4f758c6ce95f2a01e50740fcc210bac6bd2707beb5bc7ce992ea997b6102a0e6bca6090f45e64e8d1d0e94a8e68d144fd207a5c1121c89eabcf96e71d6d68b156b27c649c039390c64b54898cd9edb46723a9a99586bce57130ad7ef761da60a031d3c4712e54510a93a636b4d5763024bd7b9eb41da8ded64023211d0278c86286a6b3e7537a41ce2cc808d25ebec358e1a4a12720b995913a765803ab78c6a903e230416c919716977ed7c052be77943e036cb5a0ce87610510c30963c5cb03d1fcb967d671bd9e8de716c1aad22819d8846d909173177f489d220471e1f9651d0798c32e89a9e8254bc72c66280d2f06e7c950d34a25cc0ffe269f6da8c5676fa669c039349a303b1d7267bdc6d0c9a925e07ed36e7062922fdc6d766783649d023fa11b253d2c367365303d7b3d45d6fae0029193d0bd45f38d1f771ea5a3753c1fa1c85553b952f6a0061b7dd7873154c93d5d6aa510554b3327b669e159c6d39ec0b87e03bbd73c9d0c6356f8c4479a0e86e855805a5dbe4aa959497c9b2da443e5793e4fa216a82c94b5287c933bd2d71ba5fc12c6c1873d439ad388f93e32b548172907f5d9567faa074e87d691333a7aac150ecdec966861735ce3495a35295de2a1f0cc10fd0c2f21ba23e916ca574ef03d6750f481759fd8635229abc78a53e00512d6f8b19b4c14d52ff8a635771fefc9b1a5b4324a0197eea364c84ce80ee677d29b33c0b29c051a69a64c0159f4f6504e83642a944ca7cdf8b59b286d1b455216608e377001826b28809604c778ae67861c029b9ba29e3220b6fc933f8b61f2b42e609378be7c8881c634da6f0a94e4934e4f07c29103f210fbbfb0bf421bdef23aea2063bcac2130bb79aea770883ab59a31f5dc3853c46932e0a995008df33e442d412890bd7bb9f325e804bfee3f895316219b068bd2b9a98a48870571e8b280d559b98f65aa19dd3a420166da41dfa0919153b8083a1391a8420ecbc050e05be252d7969e234be3ef3b3d8bc656c9a491ea635ef145a3998bec370c6348a3557a5e77c90b158659f45e629eebb3c37cc04d53d9ba1b883ca432981d28232864a03150c250be507ca0c51b46f7eabc7045436940aa814a87c04aa6cc2ee286fa836503fa8aba170a048a16ea144403942a50d057caba0bea8030a502a7c1149c374433419477d234248bc6950e443f5a05440d941294285862a849208a505a50c95fc4089e0e31c39a04399827a830201c500b50be5024a071505a3eaa5cc0fa5230a1416d4978dca96a90231d40594c380020aaeb724d18ad281d5c23f016be3f8a1b0a138c628a007111df9131dd41128860418e1379494a284a4c287ea835285b28652840a0955084a9a516622d4025f00d597878291464d818ebc1929541dd4512818a7229260a29a9e00d53da8384e2f131631142f54e85039508a50d628d43d247d7917a09883aa4319a628604773f8a7d9035c010ad5e94363762baa27b51e2a1e5429943594289443a86441f5b1434d3f6a0a97180a83850d72b5a02650fea1ecc48a0aa30900090750e282d22121b8ad1005751e8a4ba174105cc63578bc8535fdacc5025eab84140c3540b0a6d0013c0c3c0c3c0c3c0cbcc6f05b5f6f81b59392dc721a74b7ed8a94924c292561435fe05d23ead62463f73bdf71c68110201e0cb80bfa0bc97fa79be1a42f8dc860b2d1ed2b5a86b3264fcd3e8b974d3e19ce369782eceacba7bf8fe16825e98d50fa6e449e2162485fa5bac6dd155b102161285abeddbfb9ad30184c269f5232af5f4857e5f6939b4d2c2f94c2dac4a86cf90d9d694248174ea28c1263922c29e9b3ee21840b0711bff2d2b6a5ba30846ce1a4ca72a689ae7922cf30d00d432b8468e1982989622af46757eb2c9c622c9d2566e577cd2a160ea2d4851c1367cd464342c81592a4512b292579ffd4e3878f045840040908e3478e629408b1c2419bb4194265fbabe6881052053042a87012b7d6d03e313aebc7a195f8248002092041c814701022853bf3a6eb9578400537524814ac98e5e11aab5b6367acaa58bd65a324f1fde4c7831028f8f019b48e1b31429e808010278084348101214c28214bf8e28ba680129210820405841ce1460e1e12100931828c9022d00821c248c8107ab80c7aecb0c1488810181012041f21401009f9418c101fdce8e121317ab18018bcf001126317213174418018b938400c5cc820d9f1052a408c5b0c20862d72f0904009ba07181250408c5a1820062d6ee4e02181ee0186040e10631647bbad5cb2ecd9fadeb238651a7162d63cc7e2a4d3c258c91963c0e26ce2a85dd4184e9e28478c579c644d759acee4d20a1d63b8e2787542dd89ca1373df569c362669c2ccce8a83ab858aab4c5ac531492ffdb9b157c53156bbc5743da7e22043f869bd1c15a7578d13b77c3fc5e954ac28fd2e99e26c2a66d5cde9371697e238278ec6f1b60b594a48716ead54423729e94aec519cf26aed9d8512511cd3e9cd1675d22aa81f8af3584a3e9e73725f30018541479a74820cb24f9c5d43a89a0df54c33f2c4e94c4c66269309a71a76e2284af40619cf2ac5b93971343516944c335dbbd9264ea997745965f7f14c6be2f8dfd597764f993856d6b5cc06cb73318c899345dd36179d26f478095b7dd3e86b7c2d718a2b61dab792124ee89538be89bdfb26b4a97f4b89633e5142c512f39b4ae7244ef96b848c3e394a968c248e966553d4204fda562812c7d3786d92ca42e2243e4e6fb691298ea53ce2204beeb5263994362d1d717eed50c285b71149e184d214e38411c79497517732b58893a4cedd546f58499122ce76f1aeab635252d29888630561ef279fb6681b1171d07dd2cd4f450f71b2cefd929f218e3164b0dc621b94743ec728c431c5ecaab132f680188438899c4b7e5d159a20c6208e594ae50ce5215fa617c4612f25bd52ea4b52720ac479fe0495c46c26409cbb7298505171d6c4f01fceae5942bacc96522aeb8793eed64c96d46aa850fb700c7629860fe750275b8a26e5d9d67b386e589c93517484c9a41e4e2a9c60a7c433d3da25461e0ee3ffa6577b6522d7dd430c3c1c4676952499b60b5dd522c61dce273f2ca9fba853326787834c52b42fc4a8c3319b6815aee45da9aabd10830ea7386aec92bc20da439ec3d1467583560995fa03a00d31e470de94ea2ee50bca9225d910230e470f93a127bb87c3c1a415a5b29a94ad4fe80da795bb64622ead777956371c4be3b987758f146dbf20461b4e3e2a53b37a5e75e513c460c3f92ae5acf39c57edae87d760c78d1d492d0931d6a08652afeff960359c8434fbfe531bb72b6ff0e805428c341c46259dddf9278ee3068f198081f40731d070fad4bb3452630c9bec1d5f84d13cce4a11629ce158f366c23365bc97fe7610c30c27db9069aa7b8e448c321cb3e799585f794cb8261331c8e0af066d0de78d1d694d8c319c046da2857a876edf3b0124b84002ce06001331c470b874b14b3ec19287186138552593a647e479bd976687186038c8d025fe626234a14e627ce128268516392969ceb9d010c30b87d33841975e4d196274e1a4498d88f4326f0b31b870d030cbce71530b31b67036f1f99aa6a74d430c2d9cd77c349f676d5a871e7018b48e8a91856312f57a7f2fc1c231a8a66416bee9fe5fe124948c68856ddbeb5638ca6617a159d7345d5c8573e5bf91bf6432c9cb5622061596cf12723f362b448c299c84675a9835bf4dfbc690c249849d9b1816339f92640d31a280d614ec4b5e06f1e9210614ce59ca4f58e62cd1fa7fc2498a124f480dd5a2bd13ceaa5d6b92b7dc750835e1a06dedb741c684e37d779fd85c9770aa24631096a4aa84532a1de369eac46f3c09a74db94db0cb7a75a341c229cca26d769897994738d655fef99fcd10151ae198d2a4cfb4d9d1722ac2d984d69215a32849c4478493a0ed94145eb5a4686c0827e95f2dc6f7c60c324238c85ef79d2649064d55108e1936be090b7217e3403826f1bd27c9f60f0e3265e46eeede9c148fe183ca5e3c77f9aab5799402082f4e729acc9736c9164ae9777152496ccdbfce33b3a78b5358d5b12433a836f15c1cd37b8392b44dd096797403082e8ebeb5e6961f2aa993bfc5f1f40926be456f8b539c3eb9c45a7e68cf6b71bc78d7bfdbfda3448816c71ca334bf8c7c9d209ac5512c9724bd085516272967d9f588b324f4589c32883349e7469fda0d8b63cdb5aae889d93df12b4e95f184678d1613d3bae2cef8d872d5d85a59aeebdbcfb7e76266405a710ad6fe75d29fb251a2ac48f6f3f452aeaee27cad954a529e497c9351c571dfa22649cc184f381527a1d552c508b159e3898ae3a7c656d2379792e814c73d395bcf32a3af5d60f030c5d9b64d10b17052c69e4a71de1df3d16eba72fa09290e2747baab998cc8dda338b8f56ce511252dc65f14c751e12767eaa138898cb14409c2773f934071526205b9a27c840e25c9270e5baeaf27d29497497be2604267d466131b4ddc4e1c542cc1cc349a8e4b27278ea3826a96d3d1e6336ee29c3199aa647a4426dd69e2681657b4786fbc90c9c461635cedef6224d02b8060e268635d7a4c1263b3e41b7a00b9c4f14b9c929672c5e8bdc401c41265032b71ae5831eebddbec2a6b6f00a1c4f1bff4d9aa6e8c26791287d98ebd91797d4b84247150666661b32363852f12270da122e52449302959402071be2f495e374994411e71d4f233a5e56a471cbe4756b0942985adb411892c0061c449459c57e650979466f0700a208b3865f0181d1126e8eeaf885338ad758d9a2d8971420790441c4d70f14b3f79a71d4a72f8d091a30706920d20883808bd5df3cb3fc8218e23e3c79a0ab3a7b3151e400c71f2db92e493d4840029c4d164fd7e67bc8a6b4a429c3745c989b831102083389790d77139d478be6b750710419c84be4aa6bd248daa012410a7d6d85751c28710d98100e2245f294d0d5d725394fc87a3b7a9abf7d869fcfc70f6df13ccf4d945bdf8dbbfe03e9c44598bfa7697f47c38add5c667d5c76b88f6700c6f7f299c708db1b21e0eea728c30f5b2b1b498879377f6cba6a9af4a1a1ece7beb279f92e3d3b45f209443c70d3602c81d8e16c25212f4891d0edb25a6bd82894100a9c3f976a3cd5e4c62c4bf7438892993924d9d26d994650ec7d4b5f946bc3a0091c3c9fe540a96a4f649d6e700240ec7932a645fc5b23fb9843f0081c3515bcb92e8f9fa746b3da0821b3b0079c3d94a3a719f11bae1381e2a6a87de32937d1b80b4e158e9424e1811b92909b2e114e37b9a6c25a625295c0390359cc4c57b11a7b34e124f7e80d10135eca6f2e4cb5269f20490341c4c8f9ed7bc98f66ddf00040d273942d8898ed228270d72066de3db9dc5cf2dd9042a903c691e2308c337a00410331c84c7bc8a9ecf3a35ef0029c349d29ab22973a9eb527fc1c3072064386e4c3d791ab3e5d77623b5f718c349dc52122b9e944426b5180eefa6ed301cedc4932d19e3fb26088663c9ebbba2fa4c73a69419902f7816fed6359cee85830927a5531f2ac48c8c43eb46fff8c25316902e5402e182816cc1d11b64cb584ab551440783065e81c44d50e660d0c0d38dc46bc03940b4808fda92b3842a1906c9c2a9e46bfca7664a25c6b1809fcc71a69604728593e0a519b4f2424eb641ac70709533cdbe79f4d703a9c2396d742931fa52695e3300a1c2397ee46e7f6f502a420399020552007b0091c2514de5a690a7329c64392880440141a060409e709c1f7dde279338e1e0a7cee6525ab7a46fc2b954fcf74dd9d43261c241b96b7d084f79d5d012cefb6f32bb353d474a3899b423df5a324cb2937012fdb891800e256e7884c349298949539794a5ad11ce76654289396611ce166efc4db60e8408e70d9592bbe8af30b54086704c5121b5dcd2a6280b88100e6f266727678bb4b08004e1e8699a4c5d5b5e250b0408e7329584d79eb3206f3b3380fce0a04d4fd8207bda47fa2b06101fd00001bd385c9cb8972c3de547f6e6b812451c5db64e5bf6e433f1449c479a8615257f051911228e3a5a53f3cc87f833ffbf8e3a0d71ec4bb12431d5f75bc58538989dce11258d96fb09713295cb729294549ecc200edf6ef194d8db4de30ae2941aff43a8a7e6d10371aa98de4369d025ff0c88739d74b751724913da3f68629d3a49bdaa7e2886d5a657cbf7e1342fdacbcce46eb10d1f8e2925e1f3196aa5fe3d1c4ea6c61e3131edaf87e3688ba25483998763cab76ab78887932475785aa6508289e21d4e62ee9e564ac45e06ed7012372aa8da8a52725f8753b95ad269321d0e9b64d51ce62735c8cce12493a4319f0e392da21c0ef795fd041f5d1c4e3197b525fe068753d41935694e2cf4b6371c2fb8c9b34135371cee82dbbc08f9734a6d386d0c1d42c492a706b1e1649ae7325ab3069364a574e58c51c349dc4ed1cda116734cc3418d0932a90d7ab91f1ace35b22f09d1a5ffac820118c875c6198ebba9f5ccb337c329df7f4b884a97e118c4f6f649db910dd7fc98418693fcc8df8653d2c8e833c6707093c41479f512934c22017f31430c872dd12fa47d29f35112868392849083e1706572c633e8d433f1174ef396c2d3d694a8fc7ae1bca2365b8c5d0b16db2e9cf2a9ab4b422c55902b170e6e972eff686c9b50b7704c8269ee93168e16fee40cbae6224a260bc7cb2dd6214c927a418985c3e593335e32c12b1c55533766fed878a1cdb0c2f14ec574976a6e4f4a8141034f4f727c318224c7173e24806346154e31fc44554aa3066650e1664c6186148e29cc25f78d8ac0868da4079a1185b20185b231e309c7a4abc12a2939e93489138e552233eda698269cc475be754be35e306fcc60c2d1334cf019bdafde2ce124376fc96a9e2be124eead28392b9b84d389595d7a47c324bd41c2d16445171944a7db664738da95cd6f9413e17de50c239ce4ff2e0dd7746bb22fc269fe74f8879c6710e1e4a7f263394ef8693386700adbd02a53ed3591cd10c2d12e2f6566bbc8309719cc08c229fb09af3cb9b30b6a201ced649254d0e6aba1a91b61f4f851b53ae3076dc6b4ada6cb4478337c702ea1deb4c9cef4b1931c327a71346da2867eff9c20c33090c18b4dc69e981e9f1dcf711785bf5cb770b151e2d01dc8d0c531a9660c2256ca44462e7420031746c62d8c0c5b9c8c5a60d2e250c62c5226e625597119b238858eee924d10df202316078bb2110519af281b26c31529a3152a831547d1cc71528f7e152725937057796230495a1507fdeda644349b12a9a7e27c52c51e2b99d4cf4942c5316d125de2c4985d3e39c5f1c24a4e97d027e90e99e2fc35325b55caa538dc76e90be51d26e94b8a9324f5c5dc33a32f532563146793929c3c5f2af5e4541447399dad8b86e2248c49298ee93f1d9501c5494f121372dffcc469c48d98913fca2fc913c7f0980b4254ca2515ecc4e9af644b5757d97a3a4e9cbe9454116d2a93691327155df45d4eae924913c7507af32f9864e2ac95ed7275895999990c4c1c6f446c3cc4c4a185a5f8031997389ed2ff291b543a51464947dff01e8dd22a09322c71d618476dc8d69b49171c5a3f7a64fde8b183c70d9c03322aa1051994388e4962853f2b41935c9ac4e13ff325f9e2a5d03a91c4a90495c932e990d192a0489ca410a1f1bf67489c9452578dbf5fbadf234ea2b22993a41819c7a28e38b59c1c952ac34daa1b71cc67a91b97648b6d9011e7101944a9ec4a614f16714a6542362e284910428a38bbfb693e593242454bc449989b5dea4d515d4abc06250719883806693adef24544e8ff10474db9e37653dc1087edaad07241fea6bf1027357fabe1cc4d893213e260a14b87c512467a9b83382541772788d3c66cd27f572aa36210901188a39ae41a535e5866d2017198f54cbf1a4b7f3805d9272a68f358bba81f4e524b6e58fff5ba12fb7050b294108bc9b23e3b3e1c4c12425cee893723af0bc8d8c3694399bc2a9333a3f87a38a696924fce8b537f277938a9db0a8def0c0fa75c67b6e57adfe1f8f67e9a5b254469db0ec7a89dfa9be2f11bd37538a79e5ce267291d4eb1194f12abbf94ace41c4e31eab59b698cf2262787a3ba995cb59652ba6d47461c50061c4e824ce71a9774df4b7ec331c9bea1728492a4d8991b8ed14c0a4a5e5fdb4b52340b32da8036d20532d870d25e524adab2bed69decf86204366cf8f8b1e30b1f3778a840c61a8eb92a251544e5f42c150e2d1d3b6ec860c70e1c377c80e14387fbd0b12399840c359cc258d9e6fd592979e330e8fa808c341cf44e973c272668a6ebd070ee102a46334b5972fc673848b14b16c2c424c9d99be164f28be9df6c327aef5886d36af2906b3227c359d6d45d478d9ed2f8184e6b1532ca26795f3a17c3e1f47fc99ff7cbc5a4301c4cbeec92d461d27d4e301ce47e59da52b96a495f38265db282ddafe8da0b276119e4a209b961f6eac241954aae29ed840b47b731e517cedec4bc6fe1985d56e4259d7a61624e0bc7d8f1dda64a948593943e7454a6b85cab61e17462f293929daf2961c62b9c7554efaebd6b676885f308cfd85eda648d96aec251535299d46bc68894a9709aeb6d0dba4e924ecf9bc231ae86d3545b0a27194fbf043db992dc71144e77e2d8bb26bde94350389a92b25a255fc2fbf484b359c8aea5efe7bc4e385aca373ac2849b707c53e97f847956d2960907a1922083bc25652ce1284226c164f4d2719570b2d4a7c418f1b414a449385ec7c9a1ff19241c63e6534a5ad125fc954738ee29691aee5b1d328c70eefd33496fbc5885b008a7169da765d46e8944388949afa4a45e1cc2e1e45d11b27df46a988470ac7539557f15a4ed1784b3bdfd2949e597328070ca3c61c359bff89bfce0985dfce4132a26c307a734aaa46f10ba92201bf6e27cb1f259acb14c6ae6c5c14cae6930fdaab6dd8d905d9c4cdc13970bca4bdcd2c5e1d4adeb069d35e9e72259d1543c0d42c4c541b6e4ac84b2d87ddfe2544adff908712d25a6cf16a754f2eacfb82585905a9ce40d268f494963c8b3d0c27fb714b6724284100ead1da97410328b624c28492a953be38d1da954b11c84c8e26c72536b8cdfb26bca589cc24bc95fe1f3f6bf344584c0e2244b4b98ed0a72ba24f942c82b4e552709524bace8ff12571cc65448d3d2f217c3a815c7cb52f2b76fcd0c61c549ccaa262adcc824a39219b28a739ec67f93bbcc4e5b9921aa38a9a0bee4528e35cd300e2d1dee63352415c7d438b732afd15031838a932555392ff3a8644a1e0b21a7b010539cd3b26bd29953d1245548294e5a5349766d416819178756a14059084248512a339527854771badabd51496b4f0811c5317ea549f1c2fbf7b9a1b044d5baecd5630801c5b93ceb6bf5d49229dd270edf77961574e589536c137599c5d489538956fc53279a6442ca89a3b6d8a7a816b5b0ea268e6a66caada47665dcef423471d0e7175a63a811777309219938fcc5322506952f5bd26500130725e88ba2366e54125726845ce2e4bb659ac184b3f091250e3289997c949efa7e4d48250edaaa4f977c499438569910359b439b0cf9240eb23646adcd9026b64512c79899652ec5ef955145e25871bd5a6b21deda42e2a84955cb44dd421e710ca7929f12375f100d0a71c4b124c9ad47a9346faf6821a411674b932e8e1e95c41425440823421671122a1a4b5b4af5214411e7adbc55d2b88969e14fc44169af495d51d25cf21171589d5359a93728fd0f714c3eeea5fcadb75437c4f9d72fe8bb90a352c60b7112e51973fc5eab4c27c4595d5390fdd1204ec2289d494f4a75b926419cc74d98d07da7c5bd241027252f3bf52f0810a79196ad77d2fd87530575b5184ed80fe7f76fb90f47113fa74bd2a499277c38c929b197f12fcfc5ba879358527cdd6e3e1199eae1142a2649de93bdd2a7260f271753a92441dbc53a251e8e9a19e3d5fdfb2ebb3b9c72494bc147ff0429dae1a44f87e9b2a4245183753886d99467635aef53293a9c32689d92db672b49a9399cfa4d89b09cdf9b22391cfbd2ef266d1ccead9a5469ca2428d7e070cedfd7b5b0142784bce1f45eba9b544c97e243881b4e82d62ec1d2a6d686639b924d5852ed26ad091b0e525499182fe9a438416b38e6d64d6ee2494a4cbeaae1dc2595c98c27e88cc6a4e1e0597ae9ef2fc96329888653aa39f155dbb476f567386d6712b62e0b6f05914e1ccd7c2e5c2c498416dd8df2c1893ac36c55860d63a94fb693566311d9c4b1d65489dcd17a38da0102535527a2895338b9cf8b31eef59c5420928993ca1c716d62161367d319d467cacb23c3e5126c65c8e68a19162aa7556dd2a6d9c9124b1cec4fce64492cc38445011b3652258e490ca7f72e99b0b8900825ce77b2fb42a725a5fb9fc431096a7179fdbf748924715216b56263fcd6201289a3cd997adb4a0b4a5e20711c79aa95d1ca45c99b720491471c6b2b5b9d6ec54ba3b76103dd487484e1a30f0f228e38c9ab5f3ae496cca87a3b0e09ecb840a98248238e61525ffeb9328f13144109b606960511469c2449d4bb933fa5164cb420b28873ec95d0d64c1763fc611051c4b1ba553657dcba1126151049c45934fbe64a7ea54e6d2c20828853e6492b49677583c8214e3b5ae285acf01c211331c429ddc9209377dc8de614d83d8814e2ec7be286d037a6760c941221c44950d56e620eed7731228338ba6f7f49aafb640c2311411c932513436a59d81f51200ed23de544c5cc934407045b61a52d17e3729689e3bdeba34933227f28beba6c6ce74609227e385da637adda76d5ab44fa70fa1e51e93474113e1cc6362bb28783e6d5a062f82da2877389de25624f588d9f2092877328b1fb6ab4365db33d7a8041011ffe238c0988e0e1a01f3bdfae5da20681c1e307181f10b983a3779390268678276207e35296c668bc752671574609e1e9e996481d2c5f20428783ae590927f3d75e12cde1f0a72797ef5ec92eaf1c4ee9cd3eb63e2e25492c0ea7144aca63a5750944e07078d7d217cbed1e3dfa46183c76f4f8612220f286b3ac25ed6f69f9d62ca9c70e1b140788b8e15c9782dedc7ba5b2323a7270253974ec9881ebe8c0f2f1c881acda70740b534acca14a7b8838b44c8e40840d27b1a0b2d724656b26470191351c4ee48fb89d520d65c3072269386c4a828db69ff9fb2893208286636c5812f742346f7f86a36c4c19d24d2c647d331c94fc6399f57b198e7a965f4e4e86835d9a25a9f263a804fdde8be1342336afcb9b84e118362c659aa4d45d9380e198ed929825e78299fe0b471116f3a88b5b5298c80b2739b3ef56564cf242d485834aaa7d440815e35c10170e72426feb890d426cbd8553ee8b15ed9fb5708ecfbea0794de63ecec2d9aa66849e60318ebd583846edbdd826c65ce1609b4f37c64726edad70d20e533209919ea7548593a024373bc9eead4ca870fa0ad2ef24dd14cef3169392243d37574ae19479a34bc5142d13330a0811c264b6781a14ce579ba54ef31282c8138efb654297249fcc31613078b4e330c3e1030c1ea82307094c9940c409e7abb85ad3133a4396dc40a40965224cc0945ce9c4af33e1b75b104496000511258824010e224838fe9fd4924da92247388cee0a7e3165a5988d88114e25ac6b30b12f7fa62852848368da28b123b3f97c224438e705a971d4ca6d6e26328493b97768e6b4cefb45847092826f0af55d99428804e15057494f4efd0008420408c778e9deae528ed0634283c80f4e7d79624c983b51fa7407111f9c2fa539d77eadec73eac579e3d2f6976cfe579817a77c9b2b31a8d40f25ba8b838a5bbf76caa28b735b66abf8a726f58cb93889fbee33b619cf81062eb8b1ed0d6255738b63d46b51aa81862d0e7b29f32fc5d5d6383b8d5a1c4c499746e74b7068dd585a1c3ca46d4cf174f6aa2da0318bea2efba6218ba357d4dca7a6624b5e38b46271382162297be9607110aa275d997768fe8d1568bce294d557d46778880d255a051aae385edfea6dedcce8f85a71d06f9a7e32bfc6c5c23458711619724f6d2fda896cd6061aab388bc56f984a17a67e0160113454714e3b29a7c40fcd82462a4ec25ecab198beed290a12408104742001141881bb0592177b050d541cfc2f883db595439da4536c592263929220ed030d539cddcdb2ff746fe8f94a021aa5389f9c10a1ae46a87b6b1240820b981d3448913446714cf37679936c553f12c5497e2d2fedf586109a509c36599bb809e5795296a7400314a79823456d18a9993727051a9f38988ccb6d6936186878e2d83f9e498456acd3249d38a9682253d85bbb40831327cd944569eeaf8fcb8b011a9b38888b266a1976f4d4a46968e22045f3b2ab48bbd584804626ce16ec357ebe9c65c5e0d0bac2b32a5ca08189537b49216b62c25bf6df40e312a796d5caa412c6173c78488002c8061a9638b6c91e27a54a57e224e8931694e53e49bb4f89938cde922e9dc885e627716ebf95134ca95152ee25718a17d7942c3312e790532657c6c40e1d1247dd5259a2660559a3479c5f56534cfe3b49aeee8836f4ac8d3849b99ac94b50aade74461c6553a9249c588289992fe278faaa64f4bbba542be23896ab25369a88c3d68ee90a27c7a69884889367300de2ea748893123b756fccf42d9718e2ec7f52bac8545288832cbdde259445d59c10671117b48d88d1208e29e98d26fbdb823849c2d41f88f3ceb82929693625981810c73f532658b75cdc10ffe19c7da546a858daf4cc7e38e6926485d50c2a73e63e1c4b7ddea859c698cc7c3889b9ca7f438c864e790fa7b393176652e4a48ef570122be97ca5c67938566fbe1326b53f2f8c87934cd9c43431ad294169ef70d81846ce6f543135ad1d8e9fc96383c595caded6e120e6fbdf3aefe29dd0e1a0324fb693678495c91c8ea74f2bb7e75653ad72389f2432c6cdbcff4d8dc3c94db69cbf673a9b53389c9409327359960a27fe86c3a95c255a7ed12dbb1b0eb24f86539994b03a9b361c2d9fec972c0d1bce27d67729d62788cbace1d89616a4c8d9aedba9869314c2ca7cdc4cc33157e85baabef954130d87cb7c0bd3d326b79867389768a5bc3a13d379698693a437c725e526a36f2cc339445a69855e0fad41329cb562700cc7f4dba1455cc9df11c5708ca94ea6129a477ec3309cd7acc25bdc92e4c9c170ca28aaa35d7fb6e9fbc261348fbe88fab9fbce0b4753539ea55a4b8eebba704c4b4a2b639c0ba7d85af146658c4187b670da12be722af246d5c229bdd7c9d4380b886860e12496b0f738d1a490cfae704c1f91f77bad70b014c49c9242e3e4b40ae7f4d1f535278fd09ba2c2490ca6d24f89214bdea7703051e28dcc5993cd2485479cb2a3700aa24d5226097a414942e16892dafab2f86592ece1d0da018d27200d279c4275c9d41099a5d484d39e74528ad6a299a92ffa3e408309878b9ee167f4a464a65fc239479dc6fd0be58d8086124e5a930aa116f65d2b1a8d241cd42951bb447b536a5fe3020d241c2c5c904189e9eb04a1be8e1c73a071847389d9d86cb5b3146ed6020d2324996e50f24b568453ae7759a04184f38fa818f51a76bff5211c4c4c9ac95e935a4cad10d0068d209c3fae2e05792a69c56c8170fe50fa951b542bd0f881d2f0c149da8d712566b393cbeec5b94c0c9769d3eb4c569b308317e7502264aab173d1a164176793bc33d98f9952717a60862e8efda5c47e66352317877d93999db79f3aef1a66e0e2f49bda5ee55b42cdab72c48c5b9cc346cd4e922ec9f861b80c6c711254903aa7c4511466d462062d8e63e9265bcc75799235631647ad9437c96ebf0e9d093364e15c8c6cd6120eadb2b21ecc88c541663e4197781345e76d8098018bb3c95ca7fd9cd8622f1e66bce2787d4a8e5e2ef7d363192566b8e214fd845dca26038719ad38e9d08b393356e9fb920c248002174800051260810450a0021478c20c569cff2bede688a8b8cbafe268977574989456c5b96413a5c22525726c4ec529c489913174892a4a507194135a6562b412ad36a738dca91242e7c446d7678af3baa612f35233e92dc549b2b02f49fc2e5e8c016106294ed2badfdf4be53f3ae5483a0831631495567c7a590575f50c519c4fd4ec19b494b878e342714cc29b985c33994a82491a6106284e1a4df6a4b45b25a22f333e714c27c3e74f9e24cf9e78624627ea8a99522ad36ce10c4e1c2d891964e9fd450e1c36b8f1c3878e1c37ca6c942dccd8c47184499eb39a63b356ca83199a385aba4c7237ce9fc8993896854a55c943835233073330712a154c87b849f266b57018332e713a61749ca0f5364949de12a7be38595182be12a7f9f250416cb08aef53e2705dea435bac5ca1fc499ce46613f67a2ce55b5e1227a5ff4f6b5bc921bf47e254635a6f846512cd3b24ce7d62ae53f1f48883561096b1b5e684d611c7943b679474a1bebed4889358512b31883e49c932e25832a69d1e8b27bfb988c3c60ce2a42447013aa8110903891a8fa8e188c25eab94891e9b84387402351ab1e6388b33370deba9d964c431541239eb954aec8b2fe2a8e1c5746525257fd28a38a5a4eee524f9c37abe2f78cc2003614cc0878f06810d2ed448c429255b8bb75063f3066a20e2f09a84598c252fd4fb30d091030630d8f1c5214e6b9e41cf48374bcfc018e2a0f4e57f5b8ec829698f472ec431c3e3445b4a4a053311e298417598ac27e4d4c63e06713c5139abfd7d622c95200e7add9a25ee2910e7ac122f4c8d0a204e23d45f57102daafcfcc329832e25dab3b6aec353c30fc753fa9af22e093a2add0794529b6b6b773e9cd4550af625842895d31e4e9f5682cc392a7a38961494247352b01274491e4ef79924d9f4d5783868bddc3a2a9ad224b61a77389efeb9f5971aed33d5b0c3e9448eb693bd7352ccd5e1bcf62ad294ae32d5930ea7249ca45345ba7bc8880835e6700c2d793cf3043b50430e0779c1355a8baa18f7c58ac3b954c6ec19aa44cbade4076ac0e19cfa1de24de57ee8d0408d371c84d05dd1dd844d36273e72cc0077e4b8c1030335dc7038d5b96f8d23ede42c478f1fd886f36d9a9cffd00fb31236e0277885ffafe7630de7927f67d46531498a26351c359f567d5e821a693845bf245c4c5b25a678a7a0061a8e194be56dc8523f6126418d331ccce392b658cba562d69ca086198ee75a294bc96a198e711ac4c9df6b5b4a8f43ab47fb17499699a006194e2966d324d6af75eb35c6703e7d73217bbaf25b16c331c6bfb56ee438b44c89a046184e15564a122e78a90618ce779abdf4b823c70d1e3ed2032ab801821a5f38a628623bb737c96abaf5c2a94d43af94d4e4f8c70c58c00233f0d136b06123e9ef6155a8d18544488d21d4a553971a5c782e54d43426a94a7276a8b1053559b07497d9ca9221ff4343877ea5530d2d1c43c52e196cc4accde80b307cb8087c18a146160e66da322c9c921884ae70cc642ba74fbacd096a2b1c7458dccec85d88ef6b54e11432bf84a967266da94185e39cf725b9f3d891f838b7408d29b0b9daa4134d504a56a570523297b8fe8e9d5c6314d4ae2cd364ea6261779498a5aa5ff4613250030ae74a917bc2ecfbfa48478d279c2c86975cb06c27aeafe184b3977052be3b599f6bd284b369686bb56e9b4929359870ccf4ffa6840b6b2ce16a28e120b7e54f9bdc24e1a4d64f161bd991df29120e62a6bf76d2f78db0d438c24196b4a6994dca1a646c831a463865c63a1993248643eb4672f7018218d428c2b13263be9ad0307aca1a4438e93a7994e8cd689f748d211cffcdbdc469b84abdd510c249d8c9d52f26dfc9bfd408c2c1fa4dad2ee636f92c37700cd8b0916ee038921a403809fb7fbdbf6992528fc47ddcc8a123c70c6edc483d1a470d6afce006357c70502d7ac562c6d0482fac8c2de39acd5466478dfa6db40d4ae4115e74994f124a54a423bb389b725162bd7d26d1c446747190b9bfbaa48faad3542e4eb2829f496b827071aa6849c96db5984349e98dbac539de2a67909a4749927810466c716eb9b4162c5932b14e72f428c1d5e2789a84ccacab7fa2295a9c2fc66432ba9f0a9e269b3e7cec8e1f3cc2e89198068ccce2b45956c5644daac0882cd6182dc7c6aa378391589c334e7c050dd9082c4e316e099a4eb538b432478f1294cad1038caa579cac34d9eeeae5bcdbb8e2a0aebd2faa7b53beba152729ec53b7b76585e29ab265cdaa99524ecb94e9346cd9ffebb58a9310ff71b97eaf52d8570923aa38e778e80c5b49c52e2537cac78f1d5ff8d84ac5794ebcc537e9c295d451c1c9dd33257fe736728aa39ad68abbdc7a82a6ba0718ad35628ae366d8c8f2ed36b1547230528a8352369b4de80b323525c569436a0893d447b855a3d862c5cc62148d37cb606521da5e3305b15814471531192cb67b7e9884e2f8a124415d2c061447dd3436f27e64d86a90235d0578ad183f711ab526260fb3dc0c9d27d26f72eeae67d490ed4827d4ba3cd912e5c499dadeb131a69cf15d83164d264ed8c84736714ce209b749d4ac49959a38e6b216e1d926ef043b13a78d35b599ef1dc1c44929cbe43dfa040b5f73a01e0e021b239738a65d32555e9a844d415718b1c4f975f358f0ebd3397b04366c8c54e2a464e89c49a6b561e30625ce26caa619319777b1f43b7ca055360e1fc61a870ff4800a6ed4c8244c121689b201896392fa43b79494c9c4fe11a7f7f11675c977c4c9b4dbc458b269f89f6f06a711672b49852e8d1bad4ab911461ce48b8aa24fccaf8a741147713f49ca206b192c56c4f9567448032389388eaedf37d9acec328f20c24af9ca6ef1221b634cedd0adb57164a608953074b4c131728893051d61a352d6cb340f43478f18e22cd723bc62ca264bda238538b768cda254ccbc1b5b11e29437459b2abf283b4aeee37464107c86d1bd0daffafadfc07108e2248b92f292db6fec132a550271b22db1b96d2ce6d2520c1027932fb4040d5979f7f8e14304366ca4f61e3946fe700a5a4d99c9bde8a54dd80fc9e8af9a2d89436bc70f5cc1481f8aa96aa16a1556bb1b2a5bc9ff3ffbefb821024f727c3102e6c36953baea06dbd125c5ab3d9cdaa424fe9a98a9e6be8e1d3e3430a2875392cdfdc48cb9551ac9c3c144c5a89ecccba067502af1605a4c51cdad552d7b575bf725717346eaf5c806237738889324597d64ae92e477c40ea7b0b14946ea706c9539b96f2a339a1aa143cda1e45036e2208211389cf2faee47936a1a69f2c81b0e6233c5d4e66e734ac9881b4e42a689325e623defde91c305236d38c9117132265fa8dced081b0e731a2633d69da9f846d66089c7a88a5bd81c27987e689e236a38a5d025dc995c295ede341c46be26d952759f5cd6172368388bde247b09736530728653cc5eb32284f64cf2d9c37d781a31c3c9ae6289936ee22921438691329c37998556c88993517becb0800c76ece080d508198e269b84c824063fe03a3e408291319c84af18bb4f3eb1af76311c4e49dd9ac4552b80e3478e138c84e1182764f6ba7c3bb629aea304291801c3a9e470d3263469991c8f7ce118b3f4578a51f6c2713479a8d19c49d5851918e9c2c92b99302ae54e3931c785c3ee2949d29a9298749243c70e1d9df4e8088c6ce158d285dd68add778a7fe1dc98d30d08d1b9e72d42047aaf3d1a33930a285938a3aa22fffa249311ac9c229c9af214b581b0ba7d24b1d939ff73d71327285837789a1ae376a4a36e6681e61f8066cd8f01186cbc0868d1eb1c2f9a45891d9a78ee67103373974e4e8c0e10346aa700c9f9a7e272f53ad04092354389924643441ac4952863f8563e91242090dd62b2a4ae17827f6eff72b460d8f44414bf175c4d658aa387e34086cd8c0f1a379d8b011c60f1c8c40e1a04f08b5b65fc92d4f607ce13d78e88e3ce16c41e84da2e491de297b8f1b36701da62630e28483a8a0dd4bdcedd3a282e347830071fc681e18c60fc391261c53f40ca5fddd8d1e3b6ee8e8e119d0eae1eb81914326ff8d7631b31d8c2ce12426493c49be8d49cfc71125246a262e1635662b7c653c39257f89b5ff175f309284b3851a71a54a5ff492e4c60c72f4f8b1653d7ef8b80d8c20e194a2ac4fa86cc24e8c39c2f94ff0ccfca67baf400d468c701ebdb5f2a5d265924dae44b0234538c9944ece247a34b72911e1d475992b5bd648bdecc8100e634a9652fd18bdee47847050f2b2a5f30c6f7e4123414063581655d1f6acdcf0da3713fa74be19f4d8618119f4d8f12340387a29d1cc92a969515312467e70b63c7ec9f29c2a9f99c7880f4ee326bc44f7b1d27f2f4e420525e58d954fca29e2c52934c5246227d6786fbb38e687aada12b6b1f53505862e0e234c5ed5cbba6d3bba1888e4e224e61273c927c5b3caf88b1d3b507e21828bb3c9957aae2bdfc4bb7c7cc16306396420728b73b9c5e88769bd92d2b638965231cba9b42eb9c95a2c321a6b31ba67ae4e1753154af01c4df79e312dce9bc4880b6a8e1b3f7c80d1e3868f1c5b3ebec8f1038c599cb28636a5629541e8b2389990dd68578ac5b9bcede4cf9ec0e274b289e59254c5a0ab7cc549255569d62c64bdd2ae3857b02053bd4b122686455a715a2d35355d41d85c4e841507213c4e1ad5da2a4e629960f199cec2e546441507d3dcd224369c8aa3659017d542c5296e8fb6cf5ed327faa7389bf5a87dcf9452c952c41407932b46b7694a2a6949a414274d1fba5a92201c5a689e0122a438c970f52ada2cc6ced53e7ce4f8a1a367b061fcf8e13d781830c2e871a338669149bcbd3349da538ae2944c5b8993d4289129138a32672e8b29dddb3b332e7a97d62f417112df6431b9c4a4cd3f0d887ce2e0dbb9d94b54ba49a727d47879934bda2216b534abbb942429098d93a8940f6552692c120ac3e1803810c5202173013313000000101a114662b150401ea8d2be03140003542c1e3e2c2e2a261e16181a1a89c6a17030140885036140280c0c03038160402c345192787e1fb88258bdb9d9d51e0788e5ac16b7da2acc537bd79ffbb4d115c78615e8ab53a37097904e53990a77a5f551d02cd219f5c7c397ee42c80c71a5b4e9f4b81acbe3d205306016d55ff3af84c6ac6894ac997b1b186cd0ab1600ef39a3a9301b3b422a33a72d2c20aa1790aea4671ec5d0fa9319e3738152888b4b8dbd01513c059d207a940ab256918e73644241f8e6d6e8d700e8860b718f9b7986b832b12d8308d72053846801a107a529cdf9190f2156595ba605532e75853742acbf9284c2c7a516ea1060225c16966a219d004be7c275229040125a332fbec6b1a9b2a1541d4327e165ef948d13d0b9162be87405be10d489a5e7efdb02b5afb1da35a68e731e86de11cad0721225e4e506e36661deb43c98966b2180ad47715db4d457364dd7f914f1b33ec53e70703afec8a628014555ea00f70607c727900cadb18639ea50554989097b0a463d01c2ea646e1650ed15dc969123d2810054f44838a58a6d85a8b57550acbe9b7c82ae5a819e4c90c6001e879bf5cfa874d163c5d32093c87bb17234ebe5eda2e9793732b51c5d8ca2d62aebc8231fe76ca8488368e537733be7d275cc429345674819a50a5ca082a970c17d85837ad2dec9dcefc218dea9c078eaf4ed3832903d2e2f9d0b499d9d0efbe44dc25cb2cdb517b68507fa2c0a9eca8e3b3310869df3eb0115a245c86285bb12f0fd48fc44d9532080d4e6557a2ac5c0f23e40cef93da0ea68b71cc1f27adfa3a059bd365f77c96dae245119d36987a1cde5a4c986ed8160280378536fe124a1b4b5894503d955885a4986835bd028cffae19646e6d72af0c04a4f4ebb6a0a532a5ba4881dcf40c2e6a6d58cc1bc8f27ebc32573e284c77f8231d91d2c8ca91b06e102f4b615b97460717a463cfa0da946a2015423bc263d8df7153808d2b535e2081502c3d9d0a87f150dabf5bd7903d524d26de03dda00797df10af4dd8ae761a377656b00ac9bc22f2ac1a467a47d03191f2476c5209980d23485b4b74d3967204ae469a55cbfb0e42ded4ea83c0fd18cc1d78d7c3ca63eab13c20afee096a4a0a80b71bc291b61192c4d6dcd3a63f758bef4c28eabce4e43bb3834e7d7cd07d148858739baeaebffa2a6dafc6c3e387d6a831c18416eae3e296034173441718a29808416bcd170bc2c267473c46177db2f205a99085e239666b8335553c1385bd67399515a30c527271b5b874f9e3b2b9e0d2050118545dd7a508dab10883d70216080717c6c141379cdf351e09a8cd5ac46c3295eec302cf2f1fe81c3ec1ec351eb754642e3de6bbfc8c9e92fbeb13a4c7d7919534c3fca013bf1177241f6b0c41680322b146481ec21b7063b25c1829bf906d67851bd3a9d70e835133dadd4fd4e62c1dcc0f20b3faff2d6e8c0e74e4259870f3af15d5ca21d7bc583acd37503e3efe1d2c688f5352a8c7330375279978372c611d076810e3f602405ba244a8153866d0236097c2f591dd325a30a8834a98328f01717c57af23284cfb0d0d7d86e524c0f93abb0e254ebfc78a95bbe16c38e597be489378ddb98467c24ab37b5fbac5ba5f779521755f10df615987643e9a204a7d4495cc471941d01615e81b93094b845f144965f55184a302f941c1cb57656920a33147ac9037b75ff53e2eb73e1fe2d1d68c1a661bbd8e81ed0e26f3ec07aee8bab02c54148c422f0528ac4e410affcae616052f918378ae424e1f5ee8c93ad12883a774179472a12cd11c5071cc44bc32053e5dbd5bc6d5b5613997b78a4e23d879a1a1e616768e197b705ed623ca6181ba98769d6627ed0f5e3e745147c0304bcf06e96098709c0cb05cba1656618f139308e48c21ac3c8565b2ff0517e9b104d4a10ff6452966d81b85e14e4996025489561a3498c3d8233d0f4a913b738321e48593857072d4f41775c0ab01be9dc2d1c5ad2a3b14cbb9b83fbffd51718d0ce419dab4d718b96a9c917d825199ce5dc29bbafb2251498182a287e45b2ee61aa2488f7bb97297beed00e091c6bcfa1d3fcf927f3085c13e06c4371db9b5e39a49c36dd92a23b502a5e6c291ff700d36ddaf1f1245a824307654817d15b3c7e8435bffc8386ba95099b8802c73622f0664b6cf946a56bc436d1115cab536e05d681e1f06c5d898f915dbdb4246e76df085bb7341907123df55fda13d1612343285ff48bd946acf458b2799225470d856dc63a2b1ee921cf273d5cd1a1702895e4dca292bd87071f0e2459892b59893392e4e325309b242a74f8e7fcb501f7dee3405a1b987dcc7101bb9eb0de138106f9bb35724ca56918b69f082de6dec9bf16b69b0cb8c6eb5e996824f251a4607771788ea2e60409dc8d0b29321f6f2e6a1597f776c3c981c6ac3fbfd9a20a94fd705c53f5109c1000b75b71ababfe400188d756b14aca320b5911492135419bd2dbef365e331047d20d64c1609f4e7a9f27fc388b69839a2881a73035d351f72ac70d7741f7c92a13297034beb044ab56180c9248deee58029995d428b5bbbe8d279bafcd331abb5c63c2076831836cdc310f059abc0f3c4bce1f85323f3da00b7dabcd2012307d71fdb40b97a996b867faef1ff375344b2d2db996468086b77d42122153e30a3576eb0de4af2c674aafab70b19c80aeb0cff6fec0e15d21cb2a8ff1b9737d3c9f098b78a0ff817e323531797e20370e629c370764dd10bd29a8fb3324872641170050270bbc00c29b9e94e2df334d20f0b5c31e342130d56c4a05f22868d41f54d0feff5a3b714f381578e3e02b60d48addc8306a83cd6ec0256e006d0812ab80e15c7179ae43a520e862c9acdf02829b68519c3a34d0c7a50b0a907d66e03ad5fa909611239b2711b5e76d24a1deff491a61c5ebfb209fb5cbf5f76730d6b4c423561e21c820477c78736687ad7c357f42eb5e5ebd52192e4e62f9d322cca060dc3cef84779a9d53d1f42631b45b83860cccc91f2f69c81d38a45f45182826fb80e00e17fdce3c4d4e79574bc7b3f25d9c4301a4e3ad208381126182bf568f06ad48fce90eb81790e0c07e2f5cb69c9b1980396f8774ad007bdb812434b880dea675b611344e1f67e3058364c98701d496c7b3dc8a267685e96dc1754c4597f3eaf91198b6fef5f404fc329468222d368b46a10b5110c0edf5b8cda082b93475c41eb14a416b060c199a592baffabed64697a84f2f70921284525a8f29582f175fad85878439e798fab6c621874c74de2965cb4b4e46077c7ed1957952eb7e6004e79cf011ee70bb4fb208f76bbd222cc44c0f8c1a9526766246403013a093589b321c36d436f4c3b92c524be9cf312d8d45313250130314b0c05299b0a69dc5c44cad3a19e8b50ae4d51a69f62a69e99f7fd2bf82d233a41427dd261722f8f049b1e9e6be2e9c246149202612ab31105a7183939f9de8bff4405173c8f507227af3454a8429333d4968a6093e51e62c83d8fb2db80160bef88db651f5e2b678dbd70b13c3cacde4851dfcef50c2ce4a617b1a3dafa949a650848c46d0d101aff21ba775eb51bbf7482ab0c3e9558a8dac958bfe8af96883cc3258160b30a7a29a6cfcd6797a6b1d86a7e4ae78561134042e314a9a1866ef91e0b80f0da8ea02a01be7ef68e005612c0397a09796f51795705e579bf5aee64e700da93125e1b92a23dd899476481981044116fda30c57a2fe2da9004a6c7f2f853e8ac688869104c295131cce11889dff4f6e1419acc41431cf8f2f3667a4ac8737407ac1428e7a39007ac10a9292f28e1d54d75adb6f46e934ade47f4f054e8fe48c2e2b2a01e90dcac7c18e158ba99b68f8c3c65b3ce544380e2a1a87b3473e4808da7d4249f53514b28e132a02d612f258f618144e22b74217c75bc05cb7980676d00e8b034dc21fcf102b3c6ef4f81afa023f0c29afadffc511f3fd4a0b186dd8cdf92fd6f323a7b26e4199f0b9c4e8bc71e91a62ec199d26f6fa1b26f3cc76fd373b4d60c20998a649b724b9bd4d23bf779455c86b8d085938de0af0a768879113ed7ce6039d2788c473b553f60fe6b125416196249666a946ac465ac779c15e0f8eaa2387c66a4f57ea8a1fed6a98c9b59f2b72f8716e88bde3671f86e2d5b18cc54ab66498b6db860f0c03adff7182ccfcb23b171ae94f9ff4def57bd3d8ad66c88f14078f4b9a6e6b1e4cd9c1e93ef644bad9a23dcd0389af7e52948f11f809000768a1aae3fce8274ea12bf0a99e93408918aa7d8847c8733e7d2e34f0a1151e434edb4662b37d86169b0f28d63a0367cff8e786c9562983afb726975ea176c6060979d3364ac2b68736cce99c600d637241cb3e31ef6766f3f718c3fd7998e16b946d5e885587d5992ec3198a209644f5133ec6e33353636e3b941ef99b62a49ade662dcd7eb67c478b3e39a2e0ee4a986fc208434eb0e208bb012e6b108df7a6191dee5a9a2c33b475bb3cb0a47c8e8c53e3bb00c74b4e2d433c7040bbb42fa687a35be4b2a6143819206597f3f35b2df7a7134c4abd50cea5908398b8136e80355ec804f3f301865375ec58eb32f5472e9ecdcc9854916396d324cbe73d18c96dc2b780c482fd861635006ada2907540d62634c954b5c8839e690a2a490359736c50adac4cad684e6c58b8b3d05a25ed85d2611edd4a8164aba8e6686291606dccc7c7b9c6100799ef6debd0e0dafb2828c75c1bbaca836404956c33c93b5378dc1192ad4da086d7ac0a04c4af2e3799dc08210ee508a8c9a36208fdcce3ed6d92ea0c715fc659197a88cd42019e37d249b19b8bf22c673fd53e316b62fd26cf0d33027220e100919ae32d4120888fde150183c7a580c88d701b790aa38a20277a0cf3807c24b5ed49bd5d01fdc9d18fb0adc291a759d8b5a1215166d2ed62b885113d645fc7ba15e0b74e1d0e3f200305055eecedd5d3eb2c96b86c5a90785cba4663a34e1cadc7cee76bafa9b0ecdbfe21cf1e0178a787072366d698ab34037815c474b9ab2422f371784e79755653817ba4be5b7e7d079952630f4eef1a19eb7ba446690cace5ae77515017d14b9997f8b233d748ba3232e6e19f116a72f03f288d80ab6315e40451a7831ce437cd3cb70d8dca3e8f00dce0f62e3685455c59404c757d2fb1b1ad79954601808a008d56ad252be78c8d49c00a48978e417a1310a36ce32d97d84619dcba3f4b8d20cbba9782ae9638415783c64b5540ab5cae068325726a86c5d2ec407852c6d5164e69893ea14ef0a10c4ba2a2f2112386dabada51b721ff360c128182f14e4ed670d6610ae1c309256166c978d80a155e0b1ec96a2ca7b2e251fa8c2e4922bfb7e6dacee54d2bc5ccc5bc9c005e31e1cc604abb0df40142509a96ce6114aa10eee9c7be54b781da8aab18ba35d248585b001f3416f21f1fc2ec5c76c74476f9171b476542292e26c1968af7bd1cdf5c7fb0c3cba9b6228304badf6b35e5ec2d78a0dfe10ec8320c67de160b98200e05e4e8c910acc82f48c1375195924181d955351323a4a6bd50c7dd3852d1a6191e8c0ee44ba24a8aadabb5edfdb9eb9f065b8c37b6d0c28a2f81f81177797caf3461682ff1148a51f4551de63b84aa264aa7c89292bee32f5a73a8341af9f10d58396b24c5da9a3372a9b976dfb01407d22bec6a5400a131562faf59079a5a72805c343a7e7c9e17c22b8fa5bdb1176c4ca4680445fce3b680e7540257d9dc4b46b5c3a6a53355a2721ea23608248914507f12fc3e51d3c1267d8425a630b59f1617202f759084d2abd94d04e58db5324b66166d6d48dd2201faca3dc32d940b4f822dcd8ae3571647b44d501e12da2c60b21569e4f76193d3a6b788032288635f5fd169a2823c6206325827b95eebec298ac95015a98c3a6bc4002770ebd5a080da986222d89995d87c0e9c2e2c714574913c9c53a20e298a3f494236ad47e1086085334a70809bb8c2dff9253703c832d193ae3a798ca219e09b81a36957fc27a2bbf5552c014c19a65736919de300d55a0ab580ed161e2befcd4223914bf0c99031842512f0fef4b8602c37f6095ead567ec763eff3f93460ce13978b17205464ef2ab58da49ead1f1bc1fbc3e32fd0737e8bdef60f93485f667d4a1653b98db5e11f970756788ab7889c948c55c2280995d01be04e504ba0bad7dcebd41526b8b4a5da013ec7a5a2442be1cf16d3d1db9cc466aab80e4b8c4dc677cbeb91492060e98444b697b4949187287d94ad95bc90674e6c100d3f696345bd55ea17575e95df110a06d16dd3c8ecc2e495c1a76dac732bf9877ad5d5abc549ff80836372a8f70f504050f1aa86a70afa7424c2491190bffcb556fa59f66f76f2501a8fdb25a2769b3dcf33941623c2a269419754a31a1cca8530ae7d8167eb7939b3a9d9d62a35be9ec5c6cecad78768aa56ecbce8ec68edf92e69b977e04ace529cfa1ef0e1681b72614940aad4aa7a05440ab4192002cfd020f64b0aa92aec64e8951d3157555d1bcfa3c155ebc2dcba3505f75ef28db93758d1f53c78d9281f8198d20d51623cbc09b7f4f137749bcf0d8b493e071691e6973855b6a59baeb9a2bfe0bdbd5f97730ff5b5795592ff119ea4e270122ad6307794b7389276334d9c2fd2931dfec7a59429c4858e0e1483428b9e8cff7fa1b79d5fc5e710b769d00812f1f906789c2f27c7022cbf71208947bac1b66e3bf8ece7adc9a4db7b13873970283204b38068a3328f97634a0985f262ca6c14ed54df2d62ba638a5322a39361493497f70f5649129b3534f637faff2e17326a81f54f4f0eaa8af2878b3db06c491eb289753a917ed840a184c72b7055271642c2b305212a931874fba7810b052769d214678033d66d0adb6259224d7b87db920a3ac658ec9caf6a99d6f310a187d86a29f21034e65381eb99b45f8b644d9104340e57087ca8d4791ff806558608ac44f7fac7dfbd2aee6b177bb0a7d2e15232ff015a30857d26368bcce4419edb66792fb7096788a7f7153ef81597add54a49a92a17c933be00ba64f485454bd00fe6afda9eb3db1baac71555bcc896a264c451d775f219c8b61eac757d1b85fdaa1d5f2530c6a9dbaf573726289b302b69bef240783c75035c086292674f4f888c3b1082f792c0807de4d56a0a83455259517bab2badfc816c10e774a78ef7657675d8957b4ba6ddcfe2cf665eb486fe0c6069a348cfdeb521bd28960f5c80d50925dfc3615d457766405268c41881291c7c21da0a28c7200e33dfd22310642c8de0064c941480bf2f46fd06ccfbb5ad0566aa062516cf1b9a9116326214bd6c8a25149165a89696de975aa9246eb9d760080dd394f9bdb4d4338485768c01def970671b68b2343489d547e56253505453b6b712389bf4c907d5caa0e0d9aef2e155eb1b6444ed90c88e179d06fc59f386f2ef229f5414ece899ccaf1ce87122b9e14e86329788a6918c990fd12f73dbe8b4c743dd99234c123288fe849905b0ad820041023275aa8d946afecb5fc35868f8000b6c175d00c40263b1fc6010d7bb238735112c1e107c0033684022c6e0a41c4d4ac3157a7e23e520cc9a2403e70bf3c681168b6913da63d7efd28a532a260769c8caf22f6b935238eda918b86305ef022ff6bf82e041d24e631494be65c21f65733467dada055e92daa5becc0f1769f3113f0181bc34f67830bc2d01f87f9e8abe2420d9c04601e9cfca3b217f57069e44d4ffff0906a1f719d7ed12cde40ea567f2418561f9c008fc0c59340473815203e8532dc5301197f80e7c9eed6892fb7700c828bda681b4c946fccea9a2d80e24051a200a5f0a0988e97e90f068d94da0d1c0c9e172b359830ac5a4c311067e9fb7211c938aa4c7fb6ac2c823398b020a911c3e0a985d68d3d1a48337df7f49bc554657d3aa7b0cbc66875591b46e8757a2d52e1354d9475d7050b064f654e05efcbd7307171028e066b53a166706afaaea686738ccbdde125274950eee34a1cc22a86792f60d69c77a67fb5cb3e696ae2f6a17f88a137e66f0682e9fb96abe4166252e2f55a63616420918cc93c7ddb9d9a4ed133143a069a29a82574aa41622e56ee0bba3a8377e5186937d4b376408d021704b61c809fe0707181aed36f63df5ac0ad052d3de44de8e83973b925c62620d887859b16eee6b74018801e002e801a609381586648cb89cf880de09400f7a5ddf7e509e0e5f39f311b39e58ae8bd8fdab3eb8b7b41e8fdc5924d1fc6fa43b57bad13f755047a01c9b45cdba15f85cb742d7afbad755ef9c9748c9118e8bcf95f68815be5529322f61058496090e07a42e4c55f93bbb97452f7b2cbed9cd5d433365781c3697d7e4fa34e16e48a10111f669a00a6d850b55879b229765af261973dc33454797449fd1463ee4dd2624124dba6a3a2da5a982bcf3d0857668dcdb63b6eaebaae534857413b3b5248f7346967ee4e559d6228b32704e7b7e7b5bef388b8387e073f05b64509b88e879d1ac85e3182b55ef980ef1c0ab8cc5af9b49d847d0bd2980446545ed6b369356a8c349c1dbbe819e88c009b01ba6b400f6af17ff19608d5b30216c50a5298fb737981232e98b1001b2173b34da66304a7546beb32faf0842ef01d3e8d0bcd1aa98fce695bd63b8254cf52159f56600d692282f081f97d676f542d361e62aa28b513266c6c126212b789eb37b79ca72d05301cf4dfb53c275fc31a35a89fc76c0f9f2f8050c9c369c4964696920ebe0f3ef7b32fabd1f8868a3ef341b41b401d7c13401bb65982e451588277f005ffcdc171edc027b5aafa6ad3f84b6f97a39dcc061427ca5e2d729b3f377e8f4c1b7a505b2570be194d9c67c58947bc4ed7d5bc5efca6f0f4875a36e9afc19e7b23cf32c4f929c3b4317efde2460fd097466e62096fe7b7076c3379749b038692c409042ffe857f00d50c524265eacb1a3f932a7abe3da99906879b041b126a204093432cc0e776279e7f0fcaf3d895ef3d5f26d367ab22275f2306db709b990db95fd9b62c50aafd5e95c72a246ab3871e3746030e27b7f327991f70ed12c21dcdd28d9a35c26e8e8603fe79814275743b92311c498f048b474494240d129838da49dc60f96cca0db72377cbfc975e044c7657ecc90892a14d0d7e96f77b09650b71ee0cbab49fe4b893c25015bab032fd222d02392a9eab5c918b6bb1e90a8e9091eca700f46e850b6d8a5caeab33846fdbcfdcd276c50be86f4bed6a4e9bd9cc70826d9f37ba1ce566d0b6af2d1de33373b68a0d41132ca79306f8649e60ccbfeced41d11e0ad1c2e62686ffe07dac37cca173284b617974f3d633eef760877d35650cd39431aca4b02abd3d3fb685bcb07fd0cb237d979f3198fe240517ee0515697931c75d4d32bddb19d3eb0efebf29ee4737462a194dd2025f4e23988cc55d984af13a2e044d661f3bcb924e4d861bb13b97055596aee2e2f32167df7968a6c2f94e92e1e93581024a8b48a7ccc73b87cc051e46bdc6e431ea008d1a98930787878c663f2b33d8c4795833cc7bb3abaff0b05f6d0d36870f7fbf7ce67707bd708c2426f0b471fba2c3fd00b84355768ce41e88076fe8e60691a38bb701ccceb8f7bc5388dfe69749f40992ddedecc0370da6d8d17372214b825b3b91253bae83fda9ccb8ae942b460ac9684feae16377061d029b7f91237d53e75d8b618bea8effb180656a9d3fbb8b83d18ac3e4c24e27ac705c5ae99250ceed90f8cd855ada03ad072cdcfdda3c5dcf8d2efae72d11393a809be035f2379bf53ce72e4132f89a972b066ce58188df87213e44b924a58fca0742b6543fcd760164ecaf7a3071cde6d64f8e7f8033c65aa03fd64859f2f7014d8fea11575189169a36a5b02345130d96c659eb1436b580ab9cf82c60481d831a766aa344bd8ddb90f8654e54f93a6f9de2d4696de815484984e954fdd7b1fd03204426a416d08cd34f540e9d7f32ace50580647f3500990d94ae590c2176a66e8014614589ae4061477e9446734f494a5b779881c588be52927715c034a47cd0624c6c23d89a4182e600543844faf83e81766b804271c51a1f2cd10710251362759c41c333fd01d70e38296a788fdbd94dfa71f1d42de145e2f4ae0f14848b5924beb88e8a9b88f65eb5a40b121645ac2e94c25bdb10c5173313216e415c8903eeca6ff31994bc6ebc00fee0f01085c47e489b6c1bec621d8a27a5ca61c22d340cd3fec85e101b6f72cd3601f767e5991819d74b0b42f7ae9d7f0335de0bc8064c5bddc9172b172aa0ec997e1fb4cb16fbfd19675189629cb62c0d4d9e381a25542fbe386712afbb24053c6501bf1661020a7c582106782eb0b29c21e7d4ed1bec170f00449fac6fe8ff3797a644801280bc3eb2f32f943b9a6fa2fc0b89a2fc37baf9177ae24c68f4ffbcc6374fb9c35b4932ebb700208a8f964fcf97e863c48f8c013601e0e6e3ecb71a012b413e9f0f020d081fc0a588ebdb56f020b432117c785878b4dea8e3d5292a8b077b35929de496476c02605c08bd358f0e39e27298c4106bcb4b4f975c3e004425f807272aa50c93c1fd98551823c305c9951ce3b78f10a62bdc1bdc261c5d1812cdce5031560864fa3be012b47e9a53cf565206316355c40839170efbc82f931d99558fc349b23f630de01bbbc689a769bd2fe36bb789cb9ce8dfc9ad3044131e9c334d0eae1483b5d5a495103414aafb0baf896517884063fd0c1568dea294ebc164601673ec462f34b6426953334e3a2ba0f929d156df86d916f8a61ea9dab7569999fd16ce51c63ec793f773f45a8c00c3c7a3bd50a6c68c25076f430afc0a4b27867ee4f89723753455963534b02fd9220ffb1a52c746b037a405aa17b527db39edd920aa088b7a7cac30f041f4bd4ece54b49fbc2af6b8302e7130577c15f4fb4f8c884a8755c33eeb64552cf1f069a1ca2dae4380d09c1cb2d7ed2baf751894b5c42d16f1ac8983ae9d4041bdff0f40ea2aada71f710b9305bb2e9252fcede8818930c731fe29c6802fb0cd208ba4f614bb6665daead705e5e0bb84944f8a9bf256b30908fc9f1edb42647142551c4c4f5eabd4d7403abffd046c8e6d803ed0b5726e46f699421cf10947bc3fb941ee4df9fca5903edddb7f7cc8a67b63153ad2b146eb15a83035224d1e97dd5548cf501fd12e429a4a2da7d2d40456ede5e260c5442779871affd6f116cfa029a8aa5dbb648c46baf8fd907e4bc9c6acb90452c7a46d5c75c8d6569ced0065ec97e7a0d7357acfd6946166e3468ed0ddc5c2bc6c14620a5cf02e9cc14c69451a5a5cbb943e5109df1d2d4ee6aa4dcfd5043a6201a0c111355495bb0e616dea16a20b79ad1da1d6f72cd49f65bb93507bd08a9deb4a579bf4a6408947bf89573bbc518faa3f02f8544fcf2b088658a26d5fcb509d214a5fe8be0ae3602857e85f2e3714d602e34ef35b08849dddd0559f102e4bd381ad46f994161500161f0850234ea9b98c003a23cf58eafa0015e181977f06a0632cc0e791061c38423aebb4dc8f213715e0799f0b1ac8d51c212c7e0e18a6a3f165f478350b4279c3a297ee2e1d8c430782363930acd2ddcbc4a3bc679ea9dc90692ee2363da52052dd18965386e26dfb7e33458286966c330002a0466fa7d546e8656a9f85781bea7ff952435a6d8d68b9c46100e0c090c7f300186c4cceaa04c049c9e434b482d047d679d9c9e464083fac846b111ab43a53e47fb3ed41cfdb85285d59f98f001de1bae20721992653bc2a74b5b01ae6dde94893d24306b593f35eb451a6bc35431431ee8baec4452875f6713c53f29f91b250db7078aa11ea352a2f1486585222116529e42e5579e177f3b9d17080cc1d40ffb0b411f560f2cf04ecb34499b4dbd768289faa66b15b160f2cf4654335f26b491290c56bc01a0dfa2b32e24183d3ddc28d7a795e7236ba7cdfd018be285c49c46d36bdbea79384c420a96d4212704385f875e1db7723e4af4a1c77070e7386256d6469948b46c6ae89940ed9d6253f5d78f30547da1dc5b2b729be3b322d1691ccde34d97496955dc1da0b98a78a7891199dd8ede30cfc63b0c3513bbf95f23e719d4c8542151c794d3500346131caadb323395582c40e616514ee97bc1cb2974468351d849c2254b314969c1c433055a25967d309341da899e0b85122d6e636d0a317b16cdda9fc57fb5d15977922f7680ce3b6e85f5ae5ce88b5d5c276ab0ec73400b2bf7663e905d979830ef67f426406798bfa348fbd1b3027ad1616f8ece455c53600f06b7a4310d9c5a1f0549a2df0a4bb79d2fa9efcc03d92cea4c7787b53986d03aea120cb43511ea5e836f1b573fff96afab0c61110fa54500fd7d6a48c8227a1e06e75faf982d2b9b92c3fcd4da8b6d6f44050470dee3103d04f4515de50d119b4a4c0add89f0256e65c4d63678244030e447493f17bff6e47c0900dff4b0d45874de15fa3ab3908912f4b27dab43809c0c8cc54220c23c22e4bd200c78a938d4fcd8aacda0b15aaeddabcce4071ac137e0b592482b01e6e93f384b7c98e6e2fbe029f8fc407ea83589fc029a04689f277b248daf3dcddc42e92b2c6e87fd4e008318c5ea18dd057c256487ebbec6f1e68a7e82b2cef181fe96b7bd581311bbc00e36f4f31bb0d785e94113300cadff0d4a08e83400d285f441ba6f50a010e96a1f701c7eb4f9ab5ff284fdde1a00dec5504a2e1c01ef42ba9f019a6686a5ce57cb7805032c4123c7886cb110b2875f4affa032111607a071bf1c22160e860c39cc5dd03e6c1a2943d779a330eb82310c241f911be787000c2780c387d7008c2b83ac0d384cd63a9f8669377f8e3e9cd3416e847ff6c008feb16907622d7aff9212336c53527008641e9d3965463c2860093b32f4c999eb5546cda654abd7df7102fea07e3b457442a9e40430c702568802e070d800de0480048e5802bf54313731f400e812e0018048021be80f98e556fb8d14e58e752e0f4a2576157a3568d0ca0638041103843801e0140054cda48002805c0c8bf38cee6d0b087ae320231ae501b49661040403c033117041010cf40cc050184113fc104a8769d3729dce48e5178c4676850bc2e799afc3c1223c8b121ce60f65b780886973ff22c9a00039f3d496d00864afb65b428c8587af6a037efc66be89573d46fb752d8cf36bb83d91c8317d12a4d75d35073df4a0607311a63a0f81ef4e2780e6b036b5d8882464f91670ad12928f03b52613da812bd7a202da5202201bd98f579182c4fef2ecd989cb8e560df0200a3ada656bd74e28dc021b408fb59e3051f445d934da36beb09eaf3141aa579efaf7b8f09e9c1086046a957330012c561451bcad7557ca635d799a0868e404fbd4ad724d2c0f5474653f3c9f86206bc6dd29e9fd4a07a4c5d801fc77ec8e23aeb551a3e850c6627251cf9445f9e3342b86afe3aa0b5a00c6b2288940878e7229da3a72f7945ad3d307035191282898035c973b337606e8cc81ce53b0560473452e6f0654a0e7a3d610208257873f8dcedf9fc1d4a9208d8265c7a3ebef3a96d4db2210e62dafda5b32f02e11a0b79f96c4419dfd2983d04c61a57858fee28b63733218937e909866657a95e0d42ea06b3869e8da44fc019e26822c196ef466041a18c438f740597967738a72ea1416cb7bb01171212bffd957f9a022d95b9fca2d6047f6cd03c91226cb94cf293bc1441e7b1aba171b9d65c0c5dd8fe3e2c8f88b40d32a4f47785bde47969f9928a2b51b962c861085af07b19ae65efc0529d04c9881ad2d3e0363a4b78ebf705177a61261b0770d305e369d1c3194be425debd92321373c3cebb9ef483507724404e9db0fe27b9c35ff71ff2fbb5aa837c354891d9a6b45782ea4d285abd89b7012d905881cc878d83b2fc798abb1acacf92c90a38b72183454262fa6c341992ffe55c12a687c9dfd6031116cb927c3fb8ac42bc9582eba699db631745ff99f52b81f192d0b0cf7f79ac9abca5c0aeaf4331c9e8b46fe4c3acaf6660a493f095e1731239dce510e197003fd96b8a171d02d9f06e16899f10044ec740c09511f82c092c09516c9744afb13627a146a7aceb8f309b97c836aacb830101b8654a24107486e7fd755b76161f023664ce359613bb25d4726310c39320b206b04c0a0e6e05ddd8b7a67d9d93b5cfc22ce93c25ee8f94762caa9369c0743983d564638b4ccdba2664d4ff3bebc63302d4ae7aa8f452d71307b13ce1365fea11717555593fc18ac8dbad8d7e0b8d7bd695406b4a14082b4fa85ef11e6a09b649b211cf873813d5135c7a46b61b7b2c05dc5ba7469e3a11446c82adac12bc6ebafed4adf3a35fd488cb954f74f1d107f8065c87f8fc12b43f65ec55e2bd9defe61f35a1f3e135e41abdf46a6040ce819d72fab6685308905527b4518e4d4a2ec94573bf7c981b3de215f8f0cd206aebe8a75bd2f32dead52a696d8945e8a8fee49b98eb0a5756a1eb02dbc18c64f00b775a35bcc001d94a9f44cc31a27cfb472fa943659502cec4042b0c3440b2a4d001ffffffffffffffff7fc136fb6d6b18d3be945b4a07a078418494524a29a5a43597904608620ccc39a37dce2bd00b25a50bfa0b040cae7ece890b9d9e22145faea4ea68f0ee3f885030957964ed663431c32897284109723d7e364f1825259dde991ea5e3c782710a2d61323b858051f0f4516e94857e517c35f154efc939b9c917c5ffdeb53c41bd28f8c669cdeaec3145bc2858c67913cfdecda15d14631237cc9a4717c55b3be1a1a6e4fc7f2e8aaf99d1344b65d2e2a25cbaed939ae616c5d8a5d24e90dba2247a9099c4b5a712f75a945fd469154d9aab755a1483c96baaa60fd1ed2c12c3f3c6666c135914630e75824ec295a4d52416a553ba7fceb246f699c0a274aede7dc2e7fd1126af28891621cd04197dfa4b5c51ea4fe26caaa91525e967639797bf65102b0a2a949c4cd62626f55945494cdbb7a1fb44f5af8ab2ae9fe6abb193f9a7a2b431658d6d8be6a44145e1344dd224f25314945f7f0cc22431bf3645d1639320e224753a5b8a4388870e3d3229ac30552709a35114b67edf3c9388131745f1f3861c9333acd31a8ab27679125e4b5014f379075b0d3f5192c49343680a3d51d4e89f4a9392fafd9d4e943daf3d7f3671a2249b3c97cda24d14e38a58b95875728f260af71eb29ae724f1f399287587babcfb13cb3798285d4972d2a1a3669ccd25caa2a964939e9127ba254a9d269e45875c8de14a943d35afc919bb049152a2183233573cac649f93288cb0d63d3125512c61f54dc8a0e368311225319e24fd707fa731489454d9a6939f3fcab47f444926e136861274d0d2de11e5749b324b8c8c275fdf8882fb7a69b5134614bbb3643b0dda4de61751d891a97afee43919a388c28b4c6a3637261105b57411ee49fd7d37114084ffa9551fbf3687288927d6b4b63686289649facda48f299b4d21ca273b6d0957b51b664388d2858816b9a127a46606515282dcbed09b7bf44910a51fd97b274281286f4ea5849970314f028892c7b70c42980e1b3c7f28683449bc137eaadaf74379eb3d79ba6789aaf7a1e8b3d72bae2e5e371f4a8252f7265a82c97e0f455122b45bc9f3a3b11e0a72fe6389f217d2cc43b94fc934f93141453c144c84501adb3c5fb67728687c870c919b134f3b9494f04d573a8b765f87c2e6f712741aa95d231d8a769fa9a7c4aa9d43a9646bfcb35db5d0c9a1b0af1b43d976f27c791c0a1f93ce256fe070d612aca49ede509453b6b5f1e386c28578edf4255b497f1b0abe6ef2a48d52253e1b8ae5a7d2d55e3f089935946ce3e8a4ee42fbc8a8a1749dedf6f4dd692897703ac9a96434e1ef4643692fc5d3fd27a1f7ee33147e4dbbca750e796f9ba1f45f8292132c4349ca52f2c894a66b3c3294e449a27e5cf7d9573d86e28ccff77c693a493194f4069d427a5da90e85a198af8312db6477dc040c25d39c935c66d278ecbf50cca632d4eae793a1f142d1c4b38ecb78174a25e59eefe75c2855a999cf65a7a4e75b28a997f85ef29cd2495a2875fcaf52326a5f67a16426c349912d3ee2c642d96554ef7ae3b6ea2b945389795636b6426935969e3631b44c5a8572f01c32079352a19c84c8a7faf6faa09c4239c618a355a3144abe397726d14e3a8c5128a7d3e549796fd20fa150ca4c25869e506e91711e5a5a4df69c50eacd1f563f74597b4d285d9f2e4dd741556e4c28f7c7134598c6727d0985d379e6fa4deed28b9550eef2bc1f6771124a6abf3f339ada60929050104a5072974c3a4249902faaccc7344b8c50d2d143e383677b0e15a1b0a20810a1946532dbee0fa3dc1a5b3f48f1dcef85511274e36f4e3d27c61e8c6274d538de2f27a40e8ca28aaa794cedb399ffa2a0ea992a4eed8be2e6b6dc0fdb309fee45e132aee5e72861c5e6454189f9440d254d1a39efa2985da47de9d3d9dfeaa254611fe46f43985e7351d48d26a74f2b3a4c5d5c9494d2af4f6ddea26cf2f4f368d319176d5112ea1d9fff32ccabad4539f409ab10329e7a132dcafe7e4a87886651127d593149125914a39eb81f64c9a2dd2416e5cfd5ab217aa3c4038bf2c9bbca68e71545d3d0a7d1d4aca8de1525e1644e25e3f38713d38a62a87d0d6e3d7a1f6745414ee74d7bfa2a4a52d4f3f4c9de24d9aa288f0c5f824cbafd94a4a29825d7e8383917f2a2a2ecfdc9ae2e3d453963eaff244b3545e93609a522a3b587504b518ea66faae3488a72aac6a07e4786dda8a3287d9b32df6ce663622a8a9256ff1b2557de6ba6a128089d3e568dc91f4e12280a5a1f3afe04317a4d9f28663cd9b44bf4de9678a2d83b4a3cfbfdd5753a51f20f3bfe6fa543f49c286efa586299b6109a6fe2b3d1cddaa6d644d9730ae1577225e69d89727aaacd9f6d333b268a7362960fb3e6254ab22f5ea277ddb99a96287749a5ca635889a2a6ca18d486f89b478972ef7a2c392725846812c58fd1941366fe799344414e29494cfb3673969128785413a693884962969028a75e68a7debcb22a1f51b61c1913d76df592234a2d1efb45c74f944e238a9bb9353bc49ff4184614f693a6986711c5ce49da5d2993f7ba224a8295ee2cff41a9998872942f15ab1411253109bb26fc7c88728c394e9a9976aa6c88c25bdf7ac8140b51cc2973ccdb14c2dd4442944ccc20e2f1348872feac5ea354c5354610c9e63cffaf4d20ca49b6d2bfbb79f4ef802806e5c9e433a56d72f80f0511bf0f4dddf420f543ba6b4ecd87f2fa5036c98450ffbc557a1e1f8a37d72a42e86e0fe58ea993e49a8493b4757a2866678a12e35cca5597876275c992d42455134d78286eed6b853e11254fee503ae1d3b3d6968c498e1d4a629edb0e2a6c4dfaeb707fa9eef4f8e950923fff556992aeaa9f4339ceb74b2a99fbbf1c4a4ace9d43c8c4a124c4866cf4f86f311cca15a2847ef78692ea29dd50bc92b1faa5b7a1f839e9934e926aa5936c28658cd66cea494ee2b786d2b9adfb67cdd4501c9d1f9ae4e0b39fb23494f4a8e930af0c0d85138498c8d9ce244cce503ae12d4268ff89ea98a1284ad0ce2e2a43f9cf3a95c7f394fbc950723b99c4cc0d293a632829ddb2af2363d2460ce554193f837ade98260cc51354cd5dedbed5602849299ab4449177925f2898075f7feb984ae55e286f9a6ad7b0bb509253ac6676b8508c91415b4c7ed1f12d944c3b68f9dc4937b95a288c92bfd7d4f4654916ea244f7a3c7162a16066fedd257685b2ed8799bdad508c7eef59568d518562bda5685262c9f9e88d418552d8894ff2c96fd62535865f1f43df791ac790c2b1bba57ae2791fcadb4796ccbb9549668c28146e7f3f8fdc33716d45c418502809aa9a1bd6a431e94df60031c6130a42c347c870a27410e7ae8e34da0f6338a16072f40f6d3244d8af6334a1b8ea25460d2a94204b6b3b8cc184627ca6cd261fd94fc7584223e366edd0e669f2a384dcec6e4e46e5c234dbd34fab6b93bca3df3192502cd9ca7664d049d0f9a0e00367a4b1038d0ee81cc6404239c9fea9923b7f8492ec268f764d9b318c50f6f598315bb224f104c728829b31c898e4c62042418cd09f32937cd3981f06a6577732af6fe661ecb3b3431788218c5228593e4af8241f3e16231885d1b97927da6456b5c40046312913fb4fdf6cb57bbf28b86be9bed8cd142bfaa2204ece1ff3a48df9a213a317a5ea146d3f31e6a0648d17799a90f93b9724bb2809ab29478aee4e79a318ba28bc881a9125753b44cf4531cb8ccc385d1a846c62e0a21c63ccace8e8d227aa18b728e7ce1a3657e9c5b0456973bed0fcd9df492b316a5196efa064537642c964a262d0a2945aa5a2b326691ec49845415353ca8791b5ee6b1e420c59147b4f4fd041a73263514c77f27bcf9534398d6a3ac034316051ac13a7348d5c17f7d22b4a928e313c9995c828b9a2783a26537247492bca269520de847d58511c93d2c7546a2ed3fe2aca1f2b963b26096b1b574539af7ae809b2a3f9c5a928852831f3ea2bf7a41715a56bfd8fa9169ea2b439ee9de6e839495213c314d6dd878c6d5857c88c67704d998493e2e00f94a26cf2ffa46ff949c2c3a428bd77c6d88e7514e5249fac760d1e3a410c51144cd8f5a7727fef1d3114e5dc415dd3a7f2cd61048a625f9998b37eb63e2914e313654fa3ddd47493b0fd8be189f269c7d57c27e62a3a6274a2f0267cd860b29a9a6b9813653fa1a9d3b8fc7b6f70b0f5264a6279697292732af9d5d344599464e6315f868387c1c1994874e4d8818e34182006260249f50c7a66285dc8365d27fd7ffc4d2c80942141c8504ed133a6a1b40f808ca19c43c98e1e93a869626700440cc5eed1edfb3d42689c71206128aadec71019f11f1a308080a124d77db0ebfd3c9d23902f14f4cc3f2f4449dd7ef242e1d204f139afe942a9636ede87d878e9692e9484da2a992506f3faec1612881692dd138f7bbd2b9b8dcf705392921de727a814240b6da33d670082859258af3b373ae68d1f02b942f9e418df26d6e3849e8058a198e4b8997766b426ad57a19cd6ff848f13fb72c36200a14241c8493131aecee8d354a7606ae93ea525b852285c988c1bc44d9dddc95007071285f2c99fe3714f780c966e1a205028776ae6787a5563c63ca1f0794449a59e64d43539a194d146bf9b74dba04b4d2828199f846d8f09456fcd6bdaea635e5b42293e64c932e19f9f4a4a28e9a4a64dbc125b9292500edf0cb2335575bca589312666fa47287d8ff44f5f1188118af14453ef29eb242544204528ca5668fb9fd19f33204428d9e6debe49f54df7304a26fd5c8b0c4aec9b85514c278fcc7d9e74cf9b04a360d5a3ed4c0a8cd249fef9f179923ab95f94357af96fceba92b4c41765d1b1d932e768f1a75e18d24d2b3ec92183170793417f654cb28b62664f277caa7e131f5d1433f67990497e729198249f18a4491f5c94f332e774ff27d9cae71625316e446eb4a4ae7b6c5114314a4eb1f89ceda416a5525b7d92d5afde4f8b72af9dcea437b328c8dc24fac6bd6fb52f8bc24921da4abad96dea63513e539954d6038b92be99d624293149dfbca2fc19d76ebd7145494cc949529ae4e691b6a224843c75a545c38a827ef5f8e6ab286d6c2fbd7b5d15a5729374c9723d15c513fe3a9dfe9fd039a828cdf9a78fc94665734e51ccce7d6adefd453ea6286996b5938da752f4a5289ebca7fe496dac639a14454b933b6f977632b91e45d9ced2e39eec64996a5194d43446e3a7181527a12899e6f40d5672507209280a26ee06a5315ffaeb9f2878b66ceb4bf9dcb4278a9ea304a53b63b293b9132553d116d3e09f4a8e39514e428cb4b6bcbfee781325b9c1c4a8d1f3e7c9d14431fc5e89a6f166a22407934b94c971fadfc544f1d3279d937eb89c732f5112563687a8712d51ead9f72c6eca3e2855a2a0840c5ab745747a13254ada5ff3e327e59cd0240abe49e9ad92244aa1f97a7c4c10a67d248a9b6bd2cda91512a5aa0fc2847bfa88f2c731bd4eb551944c1d51aed2d6ea4c52ff438d286e29951bbdc38892e9863a8b3ff7ec2ca26c5a4ebc29318a28099ee4eef0264dce49447946a991a33be293b97a88c256eff7f88d3279334431dfa82b9d7aa7c74214d35d6665d01b8f5512a2a47553bee56910a553512288927c4289794d8e3aa22410a5ac7b3d3973f58d0f88721acb0e4f6a2762ff434993e61c4366d10f2531cf3fcf98247ab6d88772926c63c9d43a2555e443494378debcfc74620af7500ca6e46ca684f450504a0999673d2e5f948772e6bccce6b95fdac143c9bbccf3ef42668fb903b27d9a311a3b94c53e3526c18338b1d7a13cebc14287f9c8a0431acac49025e86e0ec50f93d95a53aaf9490e25312ed3769049123a148792dc0e2b327dc8ce39702877e8c78d90d3a1f937144df6f0721f32a7d6b8a1a0a2ae31696a2d9db7a1f461f2eb24f127830da8d66a6d0d05ed64b11f4a534349bbbd29395c06b5494b4341e907e159c43df8070d050b252b4ddb4e09fe194ab15de2ae3d35fe3643e14ec4839e5d8682878c9b7744987b960c454d4da1a504ef5b750c85eff54dba166e9b1443d14f4c86a1a06c8492847752cae4c050923943e62c49ca185591f185821284be328f49bc5036cdb193d185d2c7ab78d498b90bf96f18195c284972c7e8ec2022630b25fff4252759e369734d8616ca49865b7daa491b75346464a1a0047d7234494ebe9e9a0c2c2494ec9dc488b014afa07e8e6c595beb9b143258e9dc1b4c4d86158a9e36759aad50158af5f183e82042849b1c2a94739cac9c75ed08644ca1644a50c2e9cc0ca5834a86140a3afadba3ea9d9ea024230a052926a849e2e2738c13144a99c1ccf49a99dc1922e309c5739153558209194e28cba8dc972083e93d6d1cc8684249838c98f69c3cfa6ac86042d9af34a4db9920648c93b18492b827b48971b7c4b44edab1038d33ae4086124a97d94b756f484612cad13289f6f3319824e814a273d8c83842ba5e72a76e2a73adeee5aeefa76272328c509c132bed6d32a80c3b838c222cdee9b5ba27e37a979b6df286fcf92c3149723c904184722cd3bdd32f0ea3d4a37e1fe3c99cec01ba51b723e9f84052460e1c1a70615c99fd4d495286f3abc74730d8d957ebb435d970153729738c3f4a50c2e3fe00463983be2fe1f3493b42f51fbf28c64fd6a2d7729531e7c317059dd7a6c4f5091d4ffde845c164f3574f62762979c2400acee0c18b921695f9109193e50477518e3d326cef248d1a7e5d14b3e4c40e4aed4e3aa98f5ce4339f235af77de0a2fc9b39cae9b79606257df8b845b1eb5d23b22e22d79bde4e5c8a0f5b1477844e72a1b31d1fb528cd9a7887f5feb8255ef7403cfc8316a5d2cbcb13a164165a8e6e6678559ee94e193dbf2b8b52db06d7bcd9feb2a1589473e8ab88091dbc44ce6b589446ab6aae6acfec662506f0e31545954f229ef33754e6c315e5ad1c7dab315bbf7a1fad28cca7cddee61de388fdc18a4ae45ab5424fb71d7cac223f54514eed7e7fa7df5494369924e389493c3953f8818a82979c04b99d1b36d09143870e73068f1b3c900d12742319541801157420cd151fa728b86c47afcf41679c9186294a42edfc2e6448dbdce060bb8106dac18e32eee0f0518a5255c9ddc9dc2608bd7f90a2a43575ffa8ce12e4d41fa328650c939adbbf4df03f4451fe92b78cc44728cad95cbeb39b32b7f6031425a5bb4bd01ead3196f0c7278ad984a713ec9150198a3e3c51daa4399efece9d28e96da74e652ef2943c278aafc9649b2869d33bd7a49310afb2264a375f32e6f7889ef59928fc7b8c8f11fb0726ca41942cb539a78a68f57189922466ff520bf51d77fcb04431a7f1f936ddb427c6dc4725caf55d82aa3b498925561f9428c5ec67ce1fa41f93b8eae3c60df7999a217c48a224c6c9f5e4159e8f486059eef5b266195af2e713cd7468201bd86047195c840f48a4fa447ab56f1e51141d7b83a9f8ac56c21f8ec8462423ccc6c7224ab25bac8493ddc418a1224ab2d3c7f3427b97bef79188d2cc79f4f01c5447e379f8404431e6567e77cca0192d1d3bd8a103073a56708882494a7cfc7bedc7fe6dd898c38721ca997c2e547709e9c8f1fb828f42143d4e4e8252e2ebbe5542145327a974e69609dd500b1f8328c92083eafc6964b2fccca491835282280715d9f9c14774f91f81289650fb1e7b3e65f88b02074439cb7bcd6ff43d031f7f28eef9c99b7495ecba267e30962c6a19ecfef3d18782d8347962494a8ac7071f8aa9943249a72d9de2cd1128e1630fa57e97d5b79acd97ae0e84831d2a401f7ce8a1249ade0d5be2a69a6641f8c843393e3bc9259ca7a8d195613ef050329d3c4db9dac9f369fee0e30ee51d759dfcc458081f76289e7ef713b404f3d8e2471dca25a819311de3e61e253a94849a94f1f53b3409f61cca9ac3576f8c9394fc971c14114bab73d3adbb0c4a36b96333a38f38e0071c0aaa4d79070fd2c0c71bf0c30d450ffbf91dcbd48d9216c1471bca191f93321db593fcfb830da5504a1237678a596ae8630dc53d25a23649825a9139143ed450f09394f42788d09ef6ff4843d935b39f32b571a3063fd050cadcdfa345d4f79916878f331443e57592a6e5ce4e6f8692cae7d6d3795286723655352d3a5a9f9c11e1830ce592d16cf5640ce5abd3196da5ec36490cc51069a2e75517f5416128b7271d4f3ef7943909180a635a3e94dce35f265f28891996413c49aa5fe385829877e7895d28f7596f36e13b97e65c287e1afb70a541b3df5b28d6c88ff6709e54af8572d691d9b09f313267a19894f0a60f2c947410fb5972093a969a3eae5012db842b7f3b1539d38715cadaeac9c393fad6317d54a170b2a9ede727ebf5d207150abad4cfe7d7b3da2d7d4ca164b2475e99dbaf6ee9430ae5dcf9bfbb26dc6d4b1f51287b3e39ecdf047957421f5028dfade692639227a47aa3f264d27102177ff22614fca487b0d94d32e34c28e7905d131b5a75d24b286b101ea4d94a28480b5de2a893e4ac3609a537134ec9248984b74f7d98343a4269ee5366759e5c198d50387a8f2828a9c3c42819838c498e3ba27025857727dbd49d34e8841a8d28e7b89fd15cbb7eb92f234c21dad396bc1697506311a5dbb041c8909b19548a351451eecdd0f922b38d6589351251f6d0b5cd498d106b20a2989a3de57d4eaa7108b351c3105ca31066a30621acc620ca310923d2fd4e83da591065d9924a560db24909268128b8968b0cb39edd7903a29c63efe74c42476ef487b29c70fba1f4d984eef43b69592509500835fa50cea0a183f0b039c886a883e34339e6533a62a34966f67b28e9ae67926a3d2625560d3d94cd3c6e77905e8d3c144778efc96db5dc20ab818792767756a59f35ee509261cdb4689126437fec504e27ffe6dea4a9434988870c3d275e830ec5fc7d6a32ebefcb8b35e650d29dd36ace58425f63460d39144bc70bcf3bcd554dc6a1dc9bb2833cf9aecbe4e050f04b0d9e74d8eb7cdd1bca2687d3f9e4706e329fdc503aa5e2a204e9b5a19c4f3ab32bb5c7a1061b8a49674972f00c4aeefa3594c4ea4ac65fac86e2a7bee71c4ead8c90a6a168fad2363da968286a79e6e47666ca3c67286e8a9f685956db2f9aa15852779e3939ba4bfe6a94a1e8415e3574fb35c8501a3542870ce2d47f4ca234a831867277f2164f1932e9f3f18c1a62285aa7122d733265525d612877b5c893a48a56d16e0d3094cb377d3c196c4f0a558d2f14c3a9941f7d6e59bba9e18592eaa0f4c4f0eee8a1e3035aa30b4535e9297e644ea6fb54830b051df4c88d1343851a5b2849632adbd3de28f15123d4d08266812de926a74b2c7c62ccfbf822f36848a8718592bcbb9b6512258dcce2e2a86185ab5185e27747cdf94c2dacc358830a3a853c5e37f4bb4d56c347864d72d6749ba5ac2185e209e28465b6129e7aac11856249aa3eda7c49f63d824249efc6b3b8ad8e2e264f28f75e95b0393e6f9de3848292fab2e474b23e86bf09c5f693a243bf6342d1c43e9dfe84934e69be8462c8c770a7d4cb4dac95502cd598e489e3778270935090614e6ee98d22a198ee35d4730ccbaaf50865cbcd7999e3462848b1ca8c1d7af35516a158e5354aef89f888b106110a6bf28cca4952cb4b378c72ea67a61399308abfe1e33d57158cf267ec20222ea4e650024631c824e6b0dd9b5f14ee4c78f649132332be28e7733feff092e4988efe4ce91f5e94a385f8afa88e490aeda2205bf2e5f249ba28bf956e894d7d2e0a7afc93ad6e705110a2c2eb469ca051bf452964a75ef524898f2fdba2981dcd2441f9f898a716c5d64d92ac21e26c54498bd2bce8ae0da349e809675138d1f4a7229f2c0a224eae93465ab1485814764f6aecb4d61d337e4549f254f2648618e28a92d4213cf4a986395385b4a25315cd9453b3bbf80e7547082b4c4356514cb3dcdecd1023ec244415c558f2ee8c8891d5212415a5dca0eddf4c0ccf6ab2a8280959924e9de3c163d939869053944bb987dc933acf3d892932b12f2d17424a6136485116f5bc16ea543a8aa27af0247cca754d9d2d4414e5d0adb19d69a497248784a2e4679275a715415128f965e1a6ff274afa293e947637c413e53631cdd3599e30f9a44748270aef27b3a9936328a54e219c287bf0b7536e7533af1bf208d944b9c7c3d7546a8e339b264ad2dd68b090692f8464a2b057a346650a3151d8e849c7a03636dbc9d920e4122549ace7c54a9628678e569e72bf368957a218dc44bce2f2debc4389d25dd6a6122b2fd96a12a58a79d394c10e9144496d656f67849062d2cc48944c73d467700f12c5cca3de3de85897cc8f28c84fe2d4ad04d111c8683039faed8a18d288d2a55ee972dfa4154218b1218b28ca86cdeb70a15644d1bce64fec51b5a24d9a89289b9b36318b344949821a11054d65a2fe77f5781c851ca27063d2677b99584ddf1005d9491263bcaccd9de790429464d0a67266fd1042147e940c2db23f832895507d8257ca853aa920caa1c4a44e5062ae6c3d0351ecd0fa2729199f3e8d802896aeee95946fa26285fc816de4fa61fb504683103e94dae4b0fee1bdd4da16b287528af26ce29a8e1e4a234d66caad38c9644e1e0a36ee79d448f95492f050f224269ad81c439eaa7728659de5a612b63a5b1b628792949b6d83c99689e3c93584d4a160d29cf49577aaf1e3cc103a94941cd578faabeac42c43e650d8a4a24ec8963243e45050f397f93732ba520d8983d9c810386035429aa4d4eacc9037146d830cf3582d0f296786b8a11c64a711fdd92afde2cc1047534508657227840d05116f5592673443d6503c39d693d020dd639542d4500e27e678a1944933240d85f7f5d7cc9c0c414349279d42bd833059107286522735fbacd03ca3b919cad9ed643439cff726bb0ce559f11ca6654b8ace642809a5cd2c444943c65036a9637692dca94bfa622889f22ee59a2a4d360f4331e6e7564f42d5e93ab3100286827dee244f5fb427cd7fa1789dd3c7122a1b84d678a1dc4156c8fc734ad021ec42f184fb9cde27174ab24919c254764908d94279e34369906d9eb14cf98490e43db5e98e3b2799215928c95e920c796257bab89921582857868f57a2c94e9af40cb942d93c6bce8a36618658a11843c3a7759a215528f8ae49b667d221542809a594b6cebeaada7ee61142a6503ccf3f2abb3dd609719221440a65d90c32677ad1cc49d45128898da546d7bcb4a7180ac51cba5517c254656ef60905b5551eeae97f9375ea84629244ffac6cd0a626994d2887f1d07042db661a13540d614249960a1d4cb4a41ab204b311a204b38137084942d962dd4fa7b1f7ac59f3400812428e50cace24eb949ce34e187f471936b8a123078e1e3976106204d7d246e64fef3baf0e8483471a67308e902294d7a4e9d123f385868729e3468f1c659cc1a33a104284f229f96ecbca3af38f86e97123073a084086c16e6a9b7d9b9efcb769b1dd1c932818250f264fccc1461e6b000146c98395da983b9e5d00f945e924695e4e0e1ea4efbe2895f8a69424de9ebd28e92e359749a90c0a20bc2888ce291df4677661360e48a7fddcde7a6cce454183de9d983be8a09964ab00828b8252f2b595529eb4457f05905b143f5eed654ec71645ef2d25378d12e3fcaf45c142c7f6e6cbdec974fb008416a5109a193687da244f5092a01e68ece8e3d103f1e081814501c82cca1ba2e35ab2094adc4c6119406451def23937a9c1ff7e332b80c4a2f4f5e1fa53355b3ba602082cca1d5efa233fc5e4d3500004905794a4fffead57ee9df538d8ce30e3a02b76d97ab3567577fb9231693c9eccdb9a896b2b4a1e636b9a4c726501082b0a3a326f0ef97d7269150535426852fafdb54f03a28ac2482f3117da54946414a579d2e3358b1215c513a949a509c23dc6e9144591d9a4c4f84d51b25102294531bf34e8553f35136b1052944ca7933b8b163d016414a5cf4d1bdff649b4b34144510ca5fc53e5abbec92f48288a26df2459d149f83c230828145126081566ab1dc8278ad9e12419cbe4c77916c413e50b79a639967990fd01e98496a37667329f7b279ae32555a8d1d124f76100c289d2c919f73c8b12e2497213aea94ce2a4e505a289528e9fd0ce9b72d97e104032514ed26389794f967525278060a2b449b69bafead1926c2d02c825caafa13505b14449109ea38e4942c7aa91412a51fc1b5d829d9e2fa11b1a4028a19328fdd9971432a6b5fe9f09209228f7ddea8bd4d0d1b3a40c241285d9a46d48944ccc9af13d06794479eb84921ae3db957c411c6136401ae18c0c257f3a99b971861a060c08238a3ffa37c9f6773a84691105af16f5b994a4a3788e224aa3bc4bb8ee74228a37efa34d12aaebf221a2781e27dbe9d7400ed15e8b5789567c696ba98e14298821b668005208274451fd4f923908b1415a9ba051823e01c8204ae959f3578569fd5e10853fd135f86810e5b1148882aac9536f4f1d5207447192bdfc98e80fc54d5a25aa88133f947f9464aaf59324c8fce943b9a349ea2ec52c4dea7c286f8556f150a2eda3bc87f2e9755dc6984d31d143e1646d4f33133e1a8379285fa8a613335484db878782ae2915a77430596cbb4371cde49c724d84a78aed50ce2ab249e609992a3cd5c1d91140ea5010ea318c4e2f49afa74a876212ed65cf4f060f640e2549a39ed0c1d472285db646ed1fbfb3ef701c4a155a258a3a3163e7d8c2a1ec1a273627ffa6bc92bea1a09e4cfc94f9fd91c9744341a8137574de8f206d28e778aa9a7cc2c3868d04614349f0f0994b08e51aca41f99bd226094f01440dc5a4a5ee6bd25db89e2c481acae7b5bda28411de49078286a27d9a28176935f624602681bc3a08e0ad51fcf21008940d6c1bf680d383471a681420003d780924480101e08146022ac023c719460101c8030002100009e0d0c1025c00001e3cde060104607a98c4460102607a9864071a360e0080013820013bceb88183637af0b8716301000840030e5010fb71e468d025868d71709fa571660642e3860e7224079dc1c3ad878e1c2718114571938c34993d2614e5183c4da88f260e3606457147c8ed2af133e9c9e0605b3390199f403ad8618619c88c038c78a224cda4ce0e1fc3c1e6da09ccd1a30c1c3ccc8d1b0918e1443187fa7c504a143fe9c2c1d665a461066ee20c338e267a201e99e8c119c70c648601463071898212aea32a33b544f94b9324af4b1669e5c071634719653d747c600395c01c3dd0c0c1a38c1b3712304209bc710301239328d6db49b5f00d6bdd273bcc904469fd84ee8f3efbb5eb20479246f6d0910379e8c8d1030d54468e48608e1e3ac891a471e34602462051aecedf24a4a813bfae2e63e411454f26d88afa1ceea2493970f0701e67ecb851238e28c8981426d96eb9efc776a41167d96e57b765ce88628bb8f895eed930b288f2c9f17272ffa699ca30370e8930c2c6a8edc14c27350e361d2389288931cbeaf7f008228aba272825ab453c4c1976839143942f46339eb03639d18c18a2183abed77f0ee741c773c348211e6d2f9f47ac84288e9c93841bef28a7321c6c653b460651780d3a4e08593f3dead86186193b0ea231228872f78919469894f518094441b6881256aab4c3cc8c1140944cdede8f2bd3ad494c051da8d48009441081835840021b3638808208a81da403df005862e40fa5d75442647f8b438729c30428d9a12371c40f3f18e9c3081f7aff986e996397f2d8d2601c18d4020ec2c81e0a232657f26192a8f78fe84175935d63ca70ba478941c3063a76b003072379d0abc1081e0a7fee59745231fac5be4369c47f8fb77eec50fe37e9c4658aeb9009be598dd0c1edb6da37af14f576bbad92af93321b994371b48961acecdb4b3047e450faf6be8e99b3f6a6b68b3012879256cd2bb7331ddaeac1c31c1d3bd8919c8560040e25efff7b3dc15d475638d86ef4008d1efe86a29ce4369f4978a0113794a4acd635755fd26a236d282729b3d527a17e8309d950aa974992e0a54d72f000e51646d660adae9e9da0c35e1851834169ce6c820c9e35c363073bca286387a7c193194d86678f2f49ba3082064bfb4a5977e7de868d3360b2768aab16997bd46766c0e41cc3e8a8a72e3b66a40ce718c4a90c259b74983378dc28325ce22721df942a0d2ea6913124eed774b4db6c9a0d46c47075c976eca58e5b7acc25ffded0b1a32e056568a0cf81c6e1f169f0283363240c25d3703dba46f8083fcf08184ada21d63bcdda7336c1c1da4307d2019ac0c8170adbe731d87b4c47bc50caf2f8d1357e8af0bad230d205576b55c462455e5e5e63833451539bdae6aa83112e944a109a45cbba5437bb71032f30b285622613733327fd068f1c376e9ced40e318336edc50632d980dcb4231889b206292a8694f4e8e112c94a53172858272cbced8a51c3218b1423159c9593bec7be760ca0f8c54a1286299afda2b73cb498562f6db4dbf2537328582897954de9cd81ca31f9142d15df4a4d52c7b3aae34a2501ceb53db490eb1f51e075b9fe580424949d245d9c8d1a296b163c79b05469e50b2cd2599aaad6938a160bf1dd36e3549db708e2614f65465e6183379d8130e361ba4f128b161c3066994615860c3c61a46985092c14efa24579e6e2468ec38088db21e3978e460812665a01c492b30b284b2898da89d514de7221c6c3cd8f13770704c19efa88c1e9f068f25010c6e848c28a13442e794b24ff2f97f70b0f5e08c1d68f460fb3478e848124a554295baf50d062348b8ca5dad43e4e2ceb6ecf73e892e8d1f43e88c1ca120d5fdad44ab5e3344c98d1ec80666c79881234900831b35468c50ceec2a294f8dfc541fc43152041f21425963d0f12445c9254e24328c729624e894cf27d95d2b228c9232a133948c76e25c2918c56ff32fa96411304a52d8f57d8af317256576a3f42631ed6cec8b62675f6a099aede43d7be1bce85da4882e188b919f482e58db38bdabab531797b53a59c4661ce1a26c5bda2b4b8c254c9cdca2741beaad1dba3227b14549e709bbf5934d68bb16c5e0a142890f3e2d4af7b5256f9a45665192c4f3c679ddc8a2fc9f6b357b1e759358943b281342f409aa9a6c5894ab4d3ce95f377642af2898542beff4415714a4f5061932bf3df6d88a6207ed6d1171a27b85ac28c996356adcf7b5c4d82a8abf1a553f345529495a44158513dfd87cbdeed17f9154149449fd2993a41d4f28828acc3336ddedec4d435c454d3e936f5553ee9bc829ca27d2f64b5a6dcd3b454c511243cf8849977aeea25294323c7e125f92dcd425a4289efcde229a2419c7ff5194ecc3a912449aa2289c4ccf183ec9dc9e178a92a91395f1ca0345c994d595d076c24de813659d0dd1dbdf16aa9527ae13c57cdf996962383371e684d90081c8264a9dbc836c921b370ff340e35108114da048264c04130575aa2d3be8cf254ab2471335d89aa80fb725ca39bd492683c922952849a6af666298641e9328204209b34104914994fb3dcb9957665125f58088240a278cb9659294474df2229128970a258fb4ca104a374288402269c226dfcba0a4ee118e4093d827a79caca912690423daaf3abd50b98f1751d04e57ebbb1eb69ed70810e280d161ccb881503a45944b5363ba27f17b53e260f5814822caae5f71b2f9838a7177947103a1614480831d8820a21ce3b74915993d44e12eb324fdddf100e95034508f0f201ba0814680876c800632a32c0622861029c49f738c5b9dc498ce149571461a3d140822841844dee13996795e9e25494f4d266464908ef333cc38d801114194f732c939e873d9201288c248fd9cad5774ccdf8b00e20fc97c8d1f3a496a3f942b93fe099be4932ec3227d28f5e433abaa7367d3443e94d3dbf5eceed3d89deca16082ed969c632ba28772b8af1efd26b56644f2606677acaaacbbab689e660e16231f37e549a9081eca66724f4cbeb7c81d4afa6134f48bc624f78ad8e110baefafb24dea603644e850ca7df37d134b9139d80444e450fa2c233fb24a72cb9238144ccef22c3f3a2f1081c31b6a4ff1b415b3b4ead2f604226e288e9055c25e286943316b90e5214c99989ef32288b0a1d09d6464da60d75983f14b52e23cce1251434912763477ec70a14f923414e363fca55cd506b9a2a1a8ff9b6433cd7b2e7486b2eee6aace9ff95436331474a4d9283fbb0ca5123b8f22642876101fdc2e4538d87a7018888006f4ce3066a0c81854d999fdb20ab3dc705d440ca54df5edff1232abe9110e2261289bf4da724df149980c86829ecf49693b25e6f4a8c81744bc50cc273f846cc99b84f8bb50de764d9a3c6b112e14e442f42b3b47640b9bee46db2b4992223b828816ca5d26c35cdc4f52b246240ba59419ff9c9a2ed491c30cfc8008164af1e193204b8ea140e40ac550755d95dd59e17826bbb1d39ec79c192255289db6cdb240840ae5bcf8baebdc9842d1a40df3ea61ace493d3d456202285627bd64ec29398bf0455d241240a05ffda98746e9127da9a2329638707747c80471744a050fe244788766f68a890b9c8134ec40907ed5311b18d211c6c0807460525d284c2697cbcd31cba27ed4c58af2a4c3cbcd43344968012e2d6aa3a09459450d2afa54ce5c47a934749a86b732dcecad54dce2b6f394d2bee8b20a15c9f993789072013224728aa9f0e971e967962c80825cd3e3d233cbf9f10294249dcdc29cbf3b87ba74588507cd33b3aaaac1ac32867bde718bdeb33412a8c52cf9c503ae63218c52a397f89e93260143779189da2d7f84579677b3fc6d5a4776a0d5f94e4dbb33f9ad45a329c418d5e94d37ace22aaa2a72cc48b921a69d29475f0f0cce1603436d5d845f94abedd73d0d864b32e4a4243a78ca14388c8b1462e8aa7757263d0f518fad7c045499079e71dd6c492ddad718bc2d949425ac986af996bd8a2209719c457eb667cab462d8abbe13fee9d125a9cd6984549f3fc56a7cfccb0230b6ac8826381068b621e398fed1cf48a729d76905182c815a5132d83b213cd248fa8150529e2cc359edc2debb0a2dc5184fcbced68bbfe2a0a72aa444f8cbd2a8a56163ad741c95bb5494541e6c409d6399b3841838a62be92459ef6f8298adf9ba6fd53b69dd9a6289a184fbbe39bd4746d290a4a8e32c9a429a9d75352944c924f99959cd913e5284a1b6b425c7fdc3da11345b9642e797e7a25de6ba12897924f942f751a5fb3366c20336cd87055d40045f15ad5a4103a7facd6f889f644f183ae3741e7db9863a946278ae139683b31a5833c8b13bd89d344494e7bea2c2d62b30665a258b29454ee254d34e660a218b2996925d6e494cd254a279494931b994f8a8d25ca594d38e15c359528f895dabcdb2f41c79812a519e9a3dddddb494c2751f83f59f489b14de9124914df327ed2b85b24cab1648c6cc786f8ca20513ef14566fa1a3d5a8bd0a834ace64282a250241689442271301450e83ca000331408001838240b0522c1601c89a2f2031480025724182e2c1a1e22160e0e181c14181286c3815020140885c16020281008048221b1863445f91eda66b3f484de0098263e7c8bf09a7afeccfe86a1b7716fa9ce8a9a86bfbf4ff54d8a3b1e0a9b441b0af32fa278a5fdf08dca78057dbb766ee425767565aeaf4417dbd3fac0217868de16bf20e7730a76c7512b7bc84e868d712509176113bc70a2d0ae4d4f162fd7d254e0ebbc9cf23dbe9c4bc58e63b1ed520529413f82a3602d656a2ecffacec3b23e2b3dc6c0f0e9487dfbeb67b97168336dedd99c2f7bbeddf429ce2efed2bed07dc486ff10cf9e364bb3837656b7b631b58f6c0aebd0aa9699ca2cb5fe9a79c6692c11c6ad82eb19f10db074594d5cbe354fe006c064eeb83a451a5c344f7e3f6934684daf72a71ea303e60242819f118c50c732b4f9277fce5bcc8e207a951eb07d72a0dc1c3d7132986b3e04f6dc8aec699ee861d0e23bdcf2be40a118ea180b61b55fc10deb063d611b8d38506958a89bf651440d206e1c8b08256201a922bf304c78a828c14dab4e6f5117167de8b351aee8ecd523b715d38438b7b26144d7299c73eb7445b73f238f030d837afd8036d4c1cc0945a5f9f41184b0ad71370e2556cceaeb6d68f4f9a1f27dbc9e4aeb2f88c00fdede338e3454ab01e9b6f2ac7b179ea3d2d30a08147c7e79c624eee4fd3dab184a77c635e99bd42aac4ccacd499f1047fd6c2b88630e62120398f8cbc3b9d54678f70b522279c19ea62549335a5c298cd533c799b6d192ce3b6195fb4c549a583789d43a3a722a1b4089eb72e87eb8043a51b18d6348602fe105ff0bbb889f5a4a31d199eb27ed2541be9530d1c2e241b38dd0c74c21831e10aef73cd8016ef429e6401ee0084a7c95e74d9ef662e38d98853f29c437384d7cf10069b7413f527f2876f165a5bac0e6c2a0d1dfc5828bd2396ac18cac794e7c52fe099d14609f127714368acdb9a157da2036ad397a3a930a3f9612f2611e8854f29788a376268168751349fe0c046b524e3abcac2df1a21ab2fb5a821e721382302b687a1d2c06e009cb306c49831e0dd8a13ba2631edf4d7c3db68ace502ae1562136d0b10396b2ccc3c27b4b89e14412fde4245c11c136b49fb40db0d5297b1a4b521fc710d29a57050b3dbcc2e0af1579ef0e6a3e40573b4260191af67d4d4353f5513bdb2beaee9ff5b91f5bfb7545f94af2e02f0bd47e966a62e063c141f80d427bf1277eb4b37b6bba495ff5f4cf01db34505faf33d63fa6b362d20aaa05269c87b54a33abf1b5a5c50f1db290bb8b2f6b49aa7b2a67b3366fd93a9d51d0475a977bff5bd397874fb79bff3f31a5781c165af27465ae44cd5f725f02f53559365b21e30413c64ab17b2374e81c527f9da31c4b3713fa1041e8f4ba3585092133a77ac7e9f6d29c8a46ffeef37c868428d7c1a5972c29d59670950a0bf2e9dc4cfe1b066f47620ecb8ac9de44dfd264f4c7f24bb160bc734008c45d080878c0312bc7486617e312cfdb371bf01216dcec16689947d5ee21bc2a04979623cb0c44ab4d04e3650c9ca9c900af2a2965e68ff216f75123b29655b59790edd341ba1ba26220a5ee3ab8c54f87424f4cb07b346ba520c4835cde49f3bd1b296addd25ec61a5ff350bf20ec277b2d00fed16eae39d7cded921ed22689cbfc75b88ade809d82b0f5957a0fcc907092bfcdc5df983d247c22b38b829f62ad087a03e6d6cd7753c28035c4783f2fb29c44e15e93745c29eff53e562c5328cb52d805202a9776763afb4abcbae38715d9496ebd9b9d9fa1b54bae8544fe1e25b9adb7800a4cc218ef5d642d9dd5f903c395975a0012aa4963f096afff98703df964dd562f363715c6be1049dd64a40470b932b7de6239577caf0e5dda32d64d9fb3269ed5304a794a44b5d0e83160f2cc086e939c008cde5d3453a622a29762510914adfddc0bed03ddf635c10d8e1b15a23ef0a6af1a2b0fbaffb84d3f54bdf44d8f9b7b67dc823e9215a4a17b9fe10e78d7eaf87afafa2405c540e1b816ba132ad04e5126dee44e7b6d1cfc2ef1043af4fc3a87b77122c03d518ed50e62072deb1af4a8c65c436222df12121d7f0dd661e7907dd9b94197b6d4756fc56e4793f83c47c2bbaf6a61817932b803a84aceac8ce8dd482de3498b74f00d95c50560980f975bd725f6203d4d280d2bbdcb7a3089f64d73e7c5b7266ee067247743ed5919d0b3120c8fff9a141b64a4a9e887defb30af78cc461c94aba44c4f8c25ed42ceb2634143a46b48de5a0355b49e372e0a6f17b49027792e845a98e9f931095cb4119171039ca1ee0a5744ac2ae74e9d9f4a1cdd4aa941955016e4a7c7fd78ed7b02d0639cbf4a5381ad3e1e0f6e391a9f366dda958958ed55b96991188756be2f39839741087f7c1007a49ea0f468447715399bfd12fdec82d9cfc448e86a48c9b7bccf832757b2c2ea5cf101bc10a4554c6b43d2e8015148fbe7c90bae2b46ab28e3bee1e6a170baba508101afd29f98a7ceb3b4ae02e9dc5e1db9491a6c700432dec427ff6051b350e676fccd965423e4b4b5eee1222a1e853fc4fb7ebecfe271a9ce85d501fd6b9f4433594a091f02a848869a19c0347c900ab2d4854c50b6218848c50cd255ac36798bb7e08987ba76576948e2b36f9e719992c3cd239dc3f3ac266dffbd661b9e11f7195076bda071e7643aaee41377e6e3e3289af78160c0cd6eead21db83a4641bd00f0c838ee92722ade10d948f798746155a133751aad3bf71660d04b34596739e604e1369ff29974348bfe398186dd0ec0b49bd436c01592d35fdf3dbdf896df9f90033527bc0899db68bcbb8060c12060c996b4b78b1d9d853bcd25b9d8e036a4b6b0df7b391f16635b49c298b0b5e0542914d75e3e5c44d13eebb2680af20d0ca47aab83624d151a30d68d56b4b3f922c4770ecb81c9c2c8fed0f0ac6f6276292fcfbb0ddac97bf351b0ee23a34370ee2bf41e8c84be324ebcf63d051f06c26f2d4659400aaec6f57582f569b4f99aac3dc69a5e456d827a6925843641bbb89c414f7d27769c60676e3726d51a0b6b30c5e46231abae90bb3ae07fdcec30ae460aa9300375dcef227682a9cd577de368d6f69fd65fa528ea86f347ea54e698b5b04f2cc254680d6d282560d434f1c0511bfae01a6c24363c809ff47f942b2ab20a962188accf87f09878c1b42df286642fa19678153c0b0fb2a9fdb9e46d4910662508f997a7e52d2130a59d5314af49410ba3e145454a627178a03b467193c607807c3e9be2f90bc7e81c0acd76a8ea29258a19e9ce971a6eb1dcc717c2b6a457eeeff6c93f9ce9e5fe7b19da705c16b3329edd0bdc5ce9c611ebaabb0dc2439c3b19b3362f5e3b403754b0e700a6d7281895f724b1771a9c845740853fac0f5f576927937825e6a4d3a375dedbd99efc2a7f36b86068bcc1e224065dc1ba713a15ea54aaca6bc3ae337514a4f5fa590df3b38caf469bca5557785aa921154c9b7880d06908b9426d77e33b2088405f176794c77afd49603c027be8c563d1dfa5db2dc9a5a4d023b1433fd2c5c16523d4e5864e45cc44622063657ea669a1a36582932a4e305d8cf564962c52485ed019f86add313a5b1fc0f6645dc14bf1d491ce941877a52039bf356a5249b62ab8f173a31d459baa35d60c1bc0154da33b9b0cb30b949f33f41a54488b3a66232949cf7d61545830af12e7208464ccd9a2e6b43972523214b1a5d0cc52673b07451f1d6d68af45b9e9e4930ca58a537512d930ff096164b6c2ca4cf3335c785395bef783222aa08c70a92484d1daa965ca0113aca0c45f1167cf04269fe3e2ebe839d732e88d3d2bdbf91a011b6b21bbbebd3c768cc0fd1084bb88a89fcfb43387608b771cceab9879cc49dea1b32720aa294bc80e4dd0d244fc0b877c016b27ee95c23d90c02ba70f4370c1ce5d2cde2a717606cdb86e9f570d69bf58926bfafa7446a9d207100bc8a19d61b28259e4d066728c4123558057cc91acde4275775c597b19f67be4cce00479ff20032ab77730ce3954941308414240a6c84f65ae6918fae8b159f6f10ff4103b94cd8d671f33b4850512c7565eb263319d30d6c1c02c952f60dbeb9baeec240f002fe6b636e993c96fe6b1188a1b8461d25682aacd8e32e2b476223f83926e3ac45a094e377c610968a66cc9b6c83b15649a0ed45ad428ecb1432efb4ef08002e8a97a8ed7745b82d4af3f473cb5168fb25d6f9c2c9ec70dd1f0eb599805e2763fb0f64352b7157b6a544f58a9cd6442af6624873ebcc165f30a210bb56be53621d543ddd091b1d096cf86230661d03c34e1cc8cc6ff8d84168207d301ee93ea7bae340913e82320749420438e1220dc53d24c6da52bf0e65d15035a97d0dd1e5ab6203f5d1aaed9fa50ced5153e60d8597a51bd76512fb3d4b3c29dc650c3901d1f3f7358c16c2c6d8ab2eadeabb419d512ec3e6aa9a94ac3868c7ac3a2614e2f2266d40ec7059a5048476cc2089d8880b0c4f8a920c259eb59a20843cecf6f45f99109f1992153a273a04e0a22bc4a9b39583d444c119411cb9e7a1884aa398700d589dea239fdf9b775000bee8e2702e9f0a1a99923b387cbb60bf16c8ba754aa6d34326bf081bae65aec155db417c3d83e30a0023436af4f51377aae46ceba71192f4dc9db89d626815ecf72592103045f2ccb2e487fd225a82e1b9443e8089d436822887e9a059b163324dd948d27fdfb28cb35fed1f8179e13e4c67f96b65999472e0ca902d0573a9b44624d7b0c094d6b66c942a058075a9d0ccda3d8a02e1199f4ca8d8c08d4453898e6ba988acf7294ca6c654bc26098aca10287983dcb7b6d35bac70fcae6bbe27e8fb32f562d0b4adad3a613217228e73b17459db7f8a781d43da8adbb408aa43179f2f8fc5e80a5853bae8a4cab3b68618428a2d309a26f169f7ba339e4280f3ea589582edad4a0c2893df47568ea5a1a0f3b53bb43da074753c79be0e8975917a3528372a1b72bab46a81086126d0f8e08ad7cf7f014500050260e37f6144d89373225f11c00f3e38970b1dda4369425e4a402b6e63284b3be6952819ffc249de3c383218de9f63447d0269c1682ed45b019a1a07395b363ec9a4a21bf4935c6bd6c199f53399f027c439e599cd4c6262a59c9d110542ed0426c980273994d9c0fbec9739ef4628cadb9e0191e9fc10b9f10175d2a40a0815bc20cc450e5bfc395a8f5fa2fc1b620d68945678c86cbb20a7c70d3b3a7fdc30d87e07cd9d71aa784176068a12128b0a751e7f0128c09eca83c564821906bb4a0bcaac36e29d7f590b74f9721e719acb997b9cb629cbfe2f1befa98d95958bb58636ee7bb92be5b915692c5f3de1125711347234867625c36235950ee95f630feec6eee04356cb8592e5e0933cc7aabc16b448d47236acdb33016aa403ba4366e5459c85dfa22722d98d45a2355dea45efb149084212f950740cf8faaf8c64c6add4d40feeaa5b8ddc0528ab37ba855b6422f5111ce218ec73b6d229d94479312b6875ad9520452f66194c2031753fad17f7ed4ff5dab061843d33331901cbe60e1cdb2f6924175be3c8d1fbf19f265a3e6814341ed5ce964cc676ca903cc70740fe2272fe4bf8e6715674036ae56d1334dd12cd1bd6b3eb5a6f5f57a553abf8dc14715a64890660642d0207034fa48e59b849fec3818b0ae900484581b951345ae28a338bf78a4b82ae33a7fb52965a0133d3432ced9147fd093839ed2cb134eb7a8667a6bddc680573775cb7f536ce8423d6ebb760a4f4d1e83d136520f2090e113b86f7b5c00040f43404ccf9e90fe7ae0ca830a9123903790f29903e3a527ab8dc52fe002b474ae207a0b5680fe1653f0f3205098211e8b862e1be2b93d0b4a780f15aa402acac992d97ebc1ce2924f59419ac5f23d714b3e4c90c05e2242a001fd781c6822998e5ca8daf02c56bfe3845555e1111fd7030d7a140b60998f468154cdd0049ae78ee1ad7d199b6dc6819aa58030e41bd72080ac4daae921595808f7410e1609cf06bafa2fd13a61f9267db54e35bab8c4cd10cadce8da75ae1558c1d7d470862b8700ecf8bb509badba8b027e3fe8555fa6da55f32d787d4b8dbc9f6f4af7e5cb2004e9ea3377cd847fc8d2147eeb1c6c01bbbaafbce946d00ad8689c8005a9ffdd98c9f722b9c92c9a149471efc2efe3b8ec07aecebe8a1e8fc0872da1fb9e672fca4cf44cc2361457cd364930bac98b35cc1f03f536a94b379af487df30b0450c3c47934deacaec37328ba62c2e1ba9da27111010bd77e82e2933356073727624e4b507462c12c1316690a4ef5a801fb6e135e1f3b6f03f8c11791ca405c71f90296c2429cce8793990b9ab30bbe1f01587a7b47ec2219196ebe4026e705589b10b8fe3689d04f6c17eb4123b1d5980eeba5c8d28d7484cfa3bbf90f435aa877995c824b05d33459a4b6300166bab88e53e9c32eaa6afdc7348de196cd6d06625d98d07e27c0bc5944b1b16bc7bb9ff3e65eaedde0541f947c10ce600d6c37455d09b2b17fc830193eeeabb3ae16483842de9b0495bae402c2d0611b10c92a8a06582a98635e7278ae22921fab13561bcb99bb2868f9f0d55a047815134da75592b78a045a39d63693790d394818a8a8ae645160b802f621726c473e8c1b57b733ed9a48420d877ebf1cd839965e2c70c8f02ad31ab3326b08614c8a619791f2e33fee51b32b4649383c3961658b264fb6b7290fd5976afa93d944bbaa77f674478a843a2dd414e1ba07c105bb2e99ea216990bc2300af638a6bbde1900b8271b629cd7ae33686fde7dcdb26c7dfd7b9b4801005ad6e6370e6a16fc37bb1d0da19dcbf4eba81377f7173b404181e42e40271d6e0e34df0cdb1265f2421235669b02a278fdd224d6a76a892b4e216390de8c3f738bc3d0dc84355d29d86f3dfbb049aa466e23908967d1c845e9972ed70978a299602bb5e99ea991105b63836fbdea156d883ef0432c28b97300d392abca8ae91de9154d3e779eb3fd78707122839a1b28df33df3b8a05dc61c5da3bd666879b206645db775efa1fb2e005e7bad26030c04c1d2a46ca81c41f15c1bba857581a819cd6bc23e6c4cbeffc022ccdd4b055581b92ada311b381e5e2bf7f401a28c734e5b737cdc69db59ba5794bb8119a000664f719d4abb8866d342bd4186d8eaf6f8b95a2d1480fd527461ce8efd1069404eef40bb4f89eedccdf8f845136ca3092889a67cbe4a49c175a20319632a413cc5aa9f333c2a2f18e2b0f1d49425a153bc32e7f2a202e972858e24515f8224205c5354b2acc20cae966b93e6791a24f68d1601afe969e10d4818a7ebd891151360a02d4b09ea995c6fa53bf9b8a87439d520bd640ec5fe6327bf540718d97b4a6812ffda5df99c0ee503bade46ac01a6184109c52e9b0dd5bdc463a09760d489ff15b6eb78eac3bf3e17e224af4870b3ace2228553910473ef381fe426bb44df863bc07fc33f7543fd7340610cc3cc5ef5ed398e4c580c405d295ae02826988235d7f8405e537362e14aad1a1d778d3035c905eafbf5ac72d4787bc7ffdf4e3f6b31a1ed2747fe07df8fee8b2628c2ed3474616eb34eca14c3a260201640f6f2fa8c7e53cbd1559554bf9da0b49803bcf76b5816a2685b3a8259f20af2830def0072c56c09b0ecace363532e380b8ee1820ffc5bb071d85917aef1a2ed0ebbf17febf7f95130235d09c690b44e6a07cda984ea3b4ca34070703f881f3415479c40ac6c89be52e3637104aaf9aa818e420e7912d37181e8adc520a2823e9ec4fe3458a48a842ec436b908e4b093afb85debec0af20e65b56d61991c4bacce23b01a4e0f6d6412e7890b548711abf29b85e9200cd1313214d3d9889591f31300c4df06daca5949b220cfc15562ea387fdb53d1099323b19137d92998761fa4e20256195f36cceb0539b75d66a509a264570571f60ffa66a11518ee2f1057d0a1bf27a906694a26e6c10ce4225ea34131c3bcde13d06c483823bc8933cb13d08437b1578b9333a0d9b1089144b150d6b5f8ca567d289edf4e156202e45b579cd9b398b200a1f35e4a498e2f10c158d853d7d9a2b70a45808b8485d881f23bd765c841e949eb168774e05f7666db5fb308ee4dd9fea2fdee11908cb550af9ab2260dd3e9e5052404e911dfbc779b67bfbfbc08ac60a61d21191eaa23efcabeb97e0fa4e74df5d8493e86d02bf709eb29475b532db2e2eea5c873b1dab1338d3bddb292f5f865491fb487e9d7390456466485d7a5ac85a6ca77186bb8fef25849d8fe4904f7c8bd813eb275a098d9a0ea629013b0fc121b47b36c3c0aacfbc1b982f2fa26a5b2485cca02c935e561118667d79e880908cbf230533c1becce6479090fc38894ddccb7468c374121f18e89833fbc20da847c38f9c01ff7a3e36c2475205baabd01ad4a8d97e3518629967ba054f5e5fc47c61e31ae5f4cb40545c692d2f54d0e5898fd59f0dd2493ecbd93e9c3d17903ed65b602b80aefc8d18dd4b2fc326534fb54c26aa53b6425c847545bb58ba6ccc82d102c9c092547c4ace0bbed51906b72ba636f2c254114681cc09ea6826b572a08d79e7efb21be7aef4d95c92ab2bbc99113cdd4a167e2996fa2d9cdf2ad2d15bf1ff7ffa3cb2b2131dbfc53612594813791144d82e37bef0abda99049aca086d874d0766554cf400491a16335e8afa085d720a3b8d94ee877667d6570374464d5fe5f025f6565e0beb888e38ca0af16e984b471534cbd9e6cfc20b3ecb63502a088162fe4f0b519175a140a4a3a32bd1deacab650e0099430d380f54f4e92e408a23224aa7816bb3e1b1e50f527b6abddb898bf441ceefa7bee9c14d260bce6eee5ab0b890f67a4472527a0b7202f9a058ee0e308288dca01d7121a479158c3a650acd60a09870561744900f3a9a97920572b85805de06f64573d9b31ae557b5cd32d89315175e8932b4ad1e16543ca3773fa6882514a940de24c3d01adfd8c43704a29642e7651dc605e79ad625910aa87282a155fb6e9af46a5376a1bf304ed53b4c25115039686c20460bbbcb65bb2359b802b61b84edc90cf76a342a2795103496cf035640742c2926a02f97bdb2be77fcbcb9b7950c47e6ae49289e5da3125bff54cf9604515b032457fd4e8f927b9d0ea2760bc8f7d2b6624615fc0a24cf83cb9ad85bae654e0b4799d3e60cdc7ae11d0a075be573e86201353438323f1c941b8d84e3c10881876c664e29628c631960583f3b84366d19c8820f3315a435fa105cce489962d52cb224babdba4dae7c3b9797de9d3569ad8071cc87a13434f4aae4cf36b736d0d5f8255355ef78c9c5f55aed25d72235d878d384125fa5af3b2c7d7e2438175a4768c3d066d742180be8bdb5f046c99eea9b9938ae0d01dc6a817b6b408e517819784905f41c606eac8007f61e8d1d9679893a358e55d10d77e0e580853571428aa3648204b03faa9c449879dc731a2e24aca0d19f9fab89d0a23e62cd5eb362434ce75eea5f0838a6cf8f37392f1901731a0f9d37d6e40116b40378e4a22a5afa17781d85b912256699c9a30b26c7acc98da480e38b7a4d1fbfad57adc907ae667dab1626e5e5bda5a95098b3526bc9c7cf6d0425613012ad17933cf176174474c9374a7de40de970b9883b0a73ca125d431deef291d8bc088e00512beb1fdb3620278da890eaa2d50bf3824690d95a1d90bc905e7038784e6d519f2a023c7b025e93f96e345d3e41887ae6b59680d377893d5c22d4aefed437129b03ca444380453ea82787f2809e14c94b9caba665cf2bc59015f15069026086b6f0370b783cef0d79b3092e27610d0cbfe3557afd690636de999b2934b2f5a10b1a9296d2c553bb844e202cc7ddf05b7b9a738e7c9372f58a1c011934ad13b7cd4c3a1350de7b1de1fa67c64a166652c8416eb939f4bbb246188ba13ef9f1bbebe42118a6734064746a48d215c068d8731bd8edc1c1d3f97b1d032be7f1391402c41321253d9d83da81bf89901e350239cc928eff04d1ec78517c87b68c20d34f63c646789c860c6cd332b907c38c948280abd5153535e10f51662a3c7f6c55142b436d2df54dc7bf42b424c924e952f2e615c91f70bb431724d89334992c1b2ac1d866e4091bf05702f01ec732027db2c5e7f15f1d040e4d2c8b3e85be21cadd6d42a08ab53680866c60377eb9e1ef4ad0941191e31d54189f1bc83b740dca4f55f4c77ba28ad0932f128a149cb7bbe6dbfc3bbefcf3b8a963cc993196e97296bc476e2e5321532436d83187649af339d2b1cd73a84636c21929ccd23658a740afe13ed2c31292f8c4667bc770ef66c7e345261d39a63cad3a05bbd1c9437c1f88a32334391106c268a791ba7bd394b702601990229f07e98f5c733dac2ca4e765f2221ca3c3220814e6f14dacc0a89c013097fb761fb9ab209c73c013bfc7cc0c329230549285f86421b547ad41432f13afe5d1cefc24deb70fcb63eb82e6d7674ca81415da996887a59786da9be03f19614a6bed8204a929f7b46e5dfe45c8772f25161bad145eda121a6b4e90bd87c85a3eae9b3f9a1b5ffdd538d399cd5aff699815fa35ddc068c8441a12d63aaab0991ffc7868913173103ea42a126032a74d66f63ab31c215782a95895dd7499e4998318d77457c770d3b5b5f0b434252e4fcef399f71ce4f8b7b35696521eca92014be54af0606d1b669641d25bf3911cf2f5af39da873fcf09c5c995e0e4b3da6136185453e41a8644b9743a8777398c9d828c151012aeb5e679c5735e8d5543c37c1d6f2e820df44f9a8fdd17a17b787d58bc3b1eb6605d2d0527ed28bcd63233f80f7aa96efd516cc4ae556414cef1f532abc3da6054f6d1289345532a90837beca7a3a89cd23aae8e182eea0e8e75a2c5e803e97d17577551e7704e7733bee88325c852a46fb3cba275537cf88b959a871d6fa2e1ff6a6e65f7e11990c5f59bb9b41be27d487399d07f862c3d8df994db431a7aba8b905f349902211b25cba7e7391b7388890acaf38cf7fc20cf76aa0f6b85d9db60ceb9612923b5a3d04a25b529d9e8d38c45f1d0ed32212da53235cbf6c9dda30d4bb8811cf3d2cde8302adee3262417c1a62307f1972717317455d044404111c41abce8dd4ded238cb04b175774c6ebb2c8cc0ea2e14cf1287a19bdca8b94a068a648f7ba0a576858c10bfbd1fbb58c2f8c6072d9d74c986a5464b8f746b35334ce41f6a7d095df610f4a39b7fb319de21771b53797a8e45685e5cb46b068353ee6df8ee937aa9026b87d225b9a9b23de92474e69c2992c31db074f04950718e712642d50e9591680c07bca6502a0bb3f6588cb25fa1095da5bf34e50465980c4e82c017e478cc98b2f57a5dd947b693ec4b43db9bce361a14958d2a1393b938eb06ed37dfba8573337bd2439a90bdbe86e9d0721eca1bed3dc454cf8458294da137dfbc0902709825aa11064255d594689046da9e73e822d0e2103b5a2fefb74010a2565a9a4990f6009d77c6e49fbb196753b7bed757a9380e34b4a77774db3a9067d938efa07dba3fd4975e53619cbb67630354f975817261c2b00826760094b9ee6a8637e9c6522c8bbe980be19ed91d32ea7d258bf212284740facc727657a83c36936cc418e00ff27f6c11cc97bc0d71b87f0a2f95786cfedf867e0ead226d4e3051bb7a40647f596b55d664d4dc19bc4db2b77b549c09b4b65a3fdce5596fb726b7db511c16df48b85c75e9e6c8ca5032227e1cbb4a887fbdd62d595058532e8edc4b5efcd21e388a2f6b6f792a30149bf6cbd562da195d037ed2433d29513e41cdeedf06d045a0b6f7300d6bde786ce9bf8eeec87effb6ce3658b00317528d9050a932dc3f0a9c61fd6fd09703e5c60561bf620af84af3777494ab1843c96890fc3cfa6a23f7e0fcabb46ec30f40757b0c5ddf3775ac0c9d483546d093e7dc19e9b9dada60ae7ad8bdc3b749162ab53b78af96d30e3eafba00db3f323d3b495b92b480ab041fb63559731bc208d25f0f5f2ea6155a054fdbeffc429ca7472e402854c811639320a7afd46ba8fdd7f63d57d0d143b593dc7285ff29440ac391e8a0590030153ee3f66b292bac72a00b755d06e0fd58600017856df7d1d4a6c3c4e86c19f1ffdaa3053638fabc2dca97661eb481f28a5039c30d0e07e957f67d103a40094c5f3b7c82a388c4be410bfac48c23909", "patch": { "balances": { "balances": [